From c8c8f69a7c89f4e5996b4aeabeea0a6380f65169 Mon Sep 17 00:00:00 2001 From: Maik Klein Date: Sat, 9 Mar 2019 18:52:03 +0100 Subject: [PATCH] `next` can contain a pointer chain and we need to correct insert it. --- ash/src/vk.rs | 4155 ++++++++++++++++++++++-------------------- generator/src/lib.rs | 64 +- 2 files changed, 2186 insertions(+), 2033 deletions(-) diff --git a/ash/src/vk.rs b/ash/src/vk.rs index 1bb8c7e..fd3d81d 100644 --- a/ash/src/vk.rs +++ b/ash/src/vk.rs @@ -1,5 +1,18 @@ use std::fmt; use std::os::raw::*; +pub(crate) unsafe fn ptr_chain_iter(ptr: &mut T) -> impl Iterator { + use std::ptr::null_mut; + let ptr: *mut BaseOutStructure = ptr as *mut T as _; + (0..).scan(ptr, |p_ptr, _| { + if *p_ptr == null_mut() { + return None; + } + let n_ptr = (**p_ptr).p_next as *mut BaseOutStructure; + let old = *p_ptr; + *p_ptr = n_ptr; + Some(old) + }) +} pub trait Handle { const TYPE: ObjectType; fn as_raw(self) -> u64; @@ -8334,7 +8347,7 @@ impl<'a> ApplicationInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -8344,7 +8357,8 @@ impl<'a> ApplicationInfoBuilder<'a> { ) -> ApplicationInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -8532,7 +8546,7 @@ impl<'a> DeviceQueueCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -8542,7 +8556,8 @@ impl<'a> DeviceQueueCreateInfoBuilder<'a> { ) -> DeviceQueueCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -8643,7 +8658,7 @@ impl<'a> DeviceCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -8653,7 +8668,8 @@ impl<'a> DeviceCreateInfoBuilder<'a> { ) -> DeviceCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -8742,7 +8758,7 @@ impl<'a> InstanceCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -8752,7 +8768,8 @@ impl<'a> InstanceCreateInfoBuilder<'a> { ) -> InstanceCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -8948,7 +8965,7 @@ impl<'a> MemoryAllocateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -8958,7 +8975,8 @@ impl<'a> MemoryAllocateInfoBuilder<'a> { ) -> MemoryAllocateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -9290,7 +9308,7 @@ impl<'a> MappedMemoryRangeBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -9300,7 +9318,8 @@ impl<'a> MappedMemoryRangeBuilder<'a> { ) -> MappedMemoryRangeBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -9626,7 +9645,7 @@ impl<'a> WriteDescriptorSetBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -9636,7 +9655,8 @@ impl<'a> WriteDescriptorSetBuilder<'a> { ) -> WriteDescriptorSetBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -9728,7 +9748,7 @@ impl<'a> CopyDescriptorSetBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -9738,7 +9758,8 @@ impl<'a> CopyDescriptorSetBuilder<'a> { ) -> CopyDescriptorSetBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -9824,7 +9845,7 @@ impl<'a> BufferCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -9834,7 +9855,8 @@ impl<'a> BufferCreateInfoBuilder<'a> { ) -> BufferCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -9914,7 +9936,7 @@ impl<'a> BufferViewCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -9924,7 +9946,8 @@ impl<'a> BufferViewCreateInfoBuilder<'a> { ) -> BufferViewCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -10151,7 +10174,7 @@ impl<'a> MemoryBarrierBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -10161,7 +10184,8 @@ impl<'a> MemoryBarrierBuilder<'a> { ) -> MemoryBarrierBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -10265,7 +10289,7 @@ impl<'a> BufferMemoryBarrierBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -10275,7 +10299,8 @@ impl<'a> BufferMemoryBarrierBuilder<'a> { ) -> BufferMemoryBarrierBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -10388,7 +10413,7 @@ impl<'a> ImageMemoryBarrierBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -10398,7 +10423,8 @@ impl<'a> ImageMemoryBarrierBuilder<'a> { ) -> ImageMemoryBarrierBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -10526,7 +10552,7 @@ impl<'a> ImageCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -10536,7 +10562,8 @@ impl<'a> ImageCreateInfoBuilder<'a> { ) -> ImageCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -10683,7 +10710,7 @@ impl<'a> ImageViewCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -10693,7 +10720,8 @@ impl<'a> ImageViewCreateInfoBuilder<'a> { ) -> ImageViewCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -11143,7 +11171,7 @@ impl<'a> BindSparseInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -11153,7 +11181,8 @@ impl<'a> BindSparseInfoBuilder<'a> { ) -> BindSparseInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -11481,7 +11510,7 @@ impl<'a> ShaderModuleCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -11491,7 +11520,8 @@ impl<'a> ShaderModuleCreateInfoBuilder<'a> { ) -> ShaderModuleCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -11644,7 +11674,7 @@ impl<'a> DescriptorSetLayoutCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -11654,7 +11684,8 @@ impl<'a> DescriptorSetLayoutCreateInfoBuilder<'a> { ) -> DescriptorSetLayoutCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -11774,7 +11805,7 @@ impl<'a> DescriptorPoolCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -11784,7 +11815,8 @@ impl<'a> DescriptorPoolCreateInfoBuilder<'a> { ) -> DescriptorPoolCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -11855,7 +11887,7 @@ impl<'a> DescriptorSetAllocateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -11865,7 +11897,8 @@ impl<'a> DescriptorSetAllocateInfoBuilder<'a> { ) -> DescriptorSetAllocateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -12059,7 +12092,7 @@ impl<'a> PipelineShaderStageCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -12069,7 +12102,8 @@ impl<'a> PipelineShaderStageCreateInfoBuilder<'a> { ) -> PipelineShaderStageCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -12158,7 +12192,7 @@ impl<'a> ComputePipelineCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -12168,7 +12202,8 @@ impl<'a> ComputePipelineCreateInfoBuilder<'a> { ) -> ComputePipelineCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -12355,7 +12390,7 @@ impl<'a> PipelineVertexInputStateCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -12365,7 +12400,8 @@ impl<'a> PipelineVertexInputStateCreateInfoBuilder<'a> { ) -> PipelineVertexInputStateCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -12442,7 +12478,7 @@ impl<'a> PipelineInputAssemblyStateCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -12452,7 +12488,8 @@ impl<'a> PipelineInputAssemblyStateCreateInfoBuilder<'a> { ) -> PipelineInputAssemblyStateCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -12520,7 +12557,7 @@ impl<'a> PipelineTessellationStateCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -12530,7 +12567,8 @@ impl<'a> PipelineTessellationStateCreateInfoBuilder<'a> { ) -> PipelineTessellationStateCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -12627,7 +12665,7 @@ impl<'a> PipelineViewportStateCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -12637,7 +12675,8 @@ impl<'a> PipelineViewportStateCreateInfoBuilder<'a> { ) -> PipelineViewportStateCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -12786,7 +12825,7 @@ impl<'a> PipelineRasterizationStateCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -12796,7 +12835,8 @@ impl<'a> PipelineRasterizationStateCreateInfoBuilder<'a> { ) -> PipelineRasterizationStateCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -12909,7 +12949,7 @@ impl<'a> PipelineMultisampleStateCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -12919,7 +12959,8 @@ impl<'a> PipelineMultisampleStateCreateInfoBuilder<'a> { ) -> PipelineMultisampleStateCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -13111,7 +13152,7 @@ impl<'a> PipelineColorBlendStateCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -13121,7 +13162,8 @@ impl<'a> PipelineColorBlendStateCreateInfoBuilder<'a> { ) -> PipelineColorBlendStateCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -13192,7 +13234,7 @@ impl<'a> PipelineDynamicStateCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -13202,7 +13244,8 @@ impl<'a> PipelineDynamicStateCreateInfoBuilder<'a> { ) -> PipelineDynamicStateCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -13407,7 +13450,7 @@ impl<'a> PipelineDepthStencilStateCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -13417,7 +13460,8 @@ impl<'a> PipelineDepthStencilStateCreateInfoBuilder<'a> { ) -> PipelineDepthStencilStateCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -13602,7 +13646,7 @@ impl<'a> GraphicsPipelineCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -13612,7 +13656,8 @@ impl<'a> GraphicsPipelineCreateInfoBuilder<'a> { ) -> GraphicsPipelineCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -13677,7 +13722,7 @@ impl<'a> PipelineCacheCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -13687,7 +13732,8 @@ impl<'a> PipelineCacheCreateInfoBuilder<'a> { ) -> PipelineCacheCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -13818,7 +13864,7 @@ impl<'a> PipelineLayoutCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -13828,7 +13874,8 @@ impl<'a> PipelineLayoutCreateInfoBuilder<'a> { ) -> PipelineLayoutCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -13986,7 +14033,7 @@ impl<'a> SamplerCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -13996,7 +14043,8 @@ impl<'a> SamplerCreateInfoBuilder<'a> { ) -> SamplerCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -14061,7 +14109,7 @@ impl<'a> CommandPoolCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -14071,7 +14119,8 @@ impl<'a> CommandPoolCreateInfoBuilder<'a> { ) -> CommandPoolCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -14145,7 +14194,7 @@ impl<'a> CommandBufferAllocateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -14155,7 +14204,8 @@ impl<'a> CommandBufferAllocateInfoBuilder<'a> { ) -> CommandBufferAllocateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -14256,7 +14306,7 @@ impl<'a> CommandBufferInheritanceInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -14266,7 +14316,8 @@ impl<'a> CommandBufferInheritanceInfoBuilder<'a> { ) -> CommandBufferInheritanceInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -14331,7 +14382,7 @@ impl<'a> CommandBufferBeginInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -14341,7 +14392,8 @@ impl<'a> CommandBufferBeginInfoBuilder<'a> { ) -> CommandBufferBeginInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -14434,7 +14486,7 @@ impl<'a> RenderPassBeginInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -14444,7 +14496,8 @@ impl<'a> RenderPassBeginInfoBuilder<'a> { ) -> RenderPassBeginInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -14975,7 +15028,7 @@ impl<'a> RenderPassCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -14985,7 +15038,8 @@ impl<'a> RenderPassCreateInfoBuilder<'a> { ) -> RenderPassCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -15041,7 +15095,7 @@ impl<'a> EventCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -15051,7 +15105,8 @@ impl<'a> EventCreateInfoBuilder<'a> { ) -> EventCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -15107,7 +15162,7 @@ impl<'a> FenceCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -15117,7 +15172,8 @@ impl<'a> FenceCreateInfoBuilder<'a> { ) -> FenceCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -16679,7 +16735,7 @@ impl<'a> SemaphoreCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -16689,7 +16745,8 @@ impl<'a> SemaphoreCreateInfoBuilder<'a> { ) -> SemaphoreCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -16766,7 +16823,7 @@ impl<'a> QueryPoolCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -16776,7 +16833,8 @@ impl<'a> QueryPoolCreateInfoBuilder<'a> { ) -> QueryPoolCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -16865,7 +16923,7 @@ impl<'a> FramebufferCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -16875,7 +16933,8 @@ impl<'a> FramebufferCreateInfoBuilder<'a> { ) -> FramebufferCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -17127,14 +17186,15 @@ impl<'a> SubmitInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] pub fn push_next(mut self, next: &'a mut T) -> SubmitInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -17442,7 +17502,7 @@ impl<'a> DisplayModeCreateInfoKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -17452,7 +17512,8 @@ impl<'a> DisplayModeCreateInfoKHRBuilder<'a> { ) -> DisplayModeCreateInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -17673,7 +17734,7 @@ impl<'a> DisplaySurfaceCreateInfoKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -17683,7 +17744,8 @@ impl<'a> DisplaySurfaceCreateInfoKHRBuilder<'a> { ) -> DisplaySurfaceCreateInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -17915,7 +17977,7 @@ impl<'a> AndroidSurfaceCreateInfoKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -17925,7 +17987,8 @@ impl<'a> AndroidSurfaceCreateInfoKHRBuilder<'a> { ) -> AndroidSurfaceCreateInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -17987,7 +18050,7 @@ impl<'a> ViSurfaceCreateInfoNNBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -17997,7 +18060,8 @@ impl<'a> ViSurfaceCreateInfoNNBuilder<'a> { ) -> ViSurfaceCreateInfoNNBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -18068,7 +18132,7 @@ impl<'a> WaylandSurfaceCreateInfoKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -18078,7 +18142,8 @@ impl<'a> WaylandSurfaceCreateInfoKHRBuilder<'a> { ) -> WaylandSurfaceCreateInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -18149,7 +18214,7 @@ impl<'a> Win32SurfaceCreateInfoKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -18159,7 +18224,8 @@ impl<'a> Win32SurfaceCreateInfoKHRBuilder<'a> { ) -> Win32SurfaceCreateInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -18230,7 +18296,7 @@ impl<'a> XlibSurfaceCreateInfoKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -18240,7 +18306,8 @@ impl<'a> XlibSurfaceCreateInfoKHRBuilder<'a> { ) -> XlibSurfaceCreateInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -18311,7 +18378,7 @@ impl<'a> XcbSurfaceCreateInfoKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -18321,7 +18388,8 @@ impl<'a> XcbSurfaceCreateInfoKHRBuilder<'a> { ) -> XcbSurfaceCreateInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -18389,7 +18457,7 @@ impl<'a> ImagePipeSurfaceCreateInfoFUCHSIABuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -18399,7 +18467,8 @@ impl<'a> ImagePipeSurfaceCreateInfoFUCHSIABuilder<'a> { ) -> ImagePipeSurfaceCreateInfoFUCHSIABuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -18612,7 +18681,7 @@ impl<'a> SwapchainCreateInfoKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -18622,7 +18691,8 @@ impl<'a> SwapchainCreateInfoKHRBuilder<'a> { ) -> SwapchainCreateInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -18707,7 +18777,7 @@ impl<'a> PresentInfoKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -18717,7 +18787,8 @@ impl<'a> PresentInfoKHRBuilder<'a> { ) -> PresentInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -19060,7 +19131,7 @@ impl<'a> DebugMarkerObjectNameInfoEXTBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -19070,7 +19141,8 @@ impl<'a> DebugMarkerObjectNameInfoEXTBuilder<'a> { ) -> DebugMarkerObjectNameInfoEXTBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -19150,7 +19222,7 @@ impl<'a> DebugMarkerObjectTagInfoEXTBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -19160,7 +19232,8 @@ impl<'a> DebugMarkerObjectTagInfoEXTBuilder<'a> { ) -> DebugMarkerObjectTagInfoEXTBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -19225,7 +19298,7 @@ impl<'a> DebugMarkerMarkerInfoEXTBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -19235,7 +19308,8 @@ impl<'a> DebugMarkerMarkerInfoEXTBuilder<'a> { ) -> DebugMarkerMarkerInfoEXTBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -19851,7 +19925,7 @@ impl<'a> DeviceGeneratedCommandsFeaturesNVXBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -19861,7 +19935,8 @@ impl<'a> DeviceGeneratedCommandsFeaturesNVXBuilder<'a> { ) -> DeviceGeneratedCommandsFeaturesNVXBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -19960,7 +20035,7 @@ impl<'a> DeviceGeneratedCommandsLimitsNVXBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -19970,7 +20045,8 @@ impl<'a> DeviceGeneratedCommandsLimitsNVXBuilder<'a> { ) -> DeviceGeneratedCommandsLimitsNVXBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -20160,7 +20236,7 @@ impl<'a> IndirectCommandsLayoutCreateInfoNVXBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -20170,7 +20246,8 @@ impl<'a> IndirectCommandsLayoutCreateInfoNVXBuilder<'a> { ) -> IndirectCommandsLayoutCreateInfoNVXBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -20304,7 +20381,7 @@ impl<'a> CmdProcessCommandsInfoNVXBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -20314,7 +20391,8 @@ impl<'a> CmdProcessCommandsInfoNVXBuilder<'a> { ) -> CmdProcessCommandsInfoNVXBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -20391,7 +20469,7 @@ impl<'a> CmdReserveSpaceForCommandsInfoNVXBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -20401,7 +20479,8 @@ impl<'a> CmdReserveSpaceForCommandsInfoNVXBuilder<'a> { ) -> CmdReserveSpaceForCommandsInfoNVXBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -20528,7 +20607,7 @@ impl<'a> ObjectTableCreateInfoNVXBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -20538,7 +20617,8 @@ impl<'a> ObjectTableCreateInfoNVXBuilder<'a> { ) -> ObjectTableCreateInfoNVXBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -20979,7 +21059,7 @@ impl<'a> PhysicalDeviceProperties2Builder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -20989,7 +21069,8 @@ impl<'a> PhysicalDeviceProperties2Builder<'a> { ) -> PhysicalDeviceProperties2Builder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -21048,7 +21129,7 @@ impl<'a> FormatProperties2Builder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -21058,7 +21139,8 @@ impl<'a> FormatProperties2Builder<'a> { ) -> FormatProperties2Builder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -21117,7 +21199,7 @@ impl<'a> ImageFormatProperties2Builder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -21127,7 +21209,8 @@ impl<'a> ImageFormatProperties2Builder<'a> { ) -> ImageFormatProperties2Builder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -21207,7 +21290,7 @@ impl<'a> PhysicalDeviceImageFormatInfo2Builder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -21217,7 +21300,8 @@ impl<'a> PhysicalDeviceImageFormatInfo2Builder<'a> { ) -> PhysicalDeviceImageFormatInfo2Builder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -21276,7 +21360,7 @@ impl<'a> QueueFamilyProperties2Builder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -21286,7 +21370,8 @@ impl<'a> QueueFamilyProperties2Builder<'a> { ) -> QueueFamilyProperties2Builder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -21345,7 +21430,7 @@ impl<'a> PhysicalDeviceMemoryProperties2Builder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -21355,7 +21440,8 @@ impl<'a> PhysicalDeviceMemoryProperties2Builder<'a> { ) -> PhysicalDeviceMemoryProperties2Builder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -21414,7 +21500,7 @@ impl<'a> SparseImageFormatProperties2Builder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -21424,7 +21510,8 @@ impl<'a> SparseImageFormatProperties2Builder<'a> { ) -> SparseImageFormatProperties2Builder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -21513,7 +21600,7 @@ impl<'a> PhysicalDeviceSparseImageFormatInfo2Builder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -21523,7 +21610,8 @@ impl<'a> PhysicalDeviceSparseImageFormatInfo2Builder<'a> { ) -> PhysicalDeviceSparseImageFormatInfo2Builder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -22185,7 +22273,7 @@ impl<'a> PhysicalDeviceExternalBufferInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -22195,7 +22283,8 @@ impl<'a> PhysicalDeviceExternalBufferInfoBuilder<'a> { ) -> PhysicalDeviceExternalBufferInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -22254,7 +22343,7 @@ impl<'a> ExternalBufferPropertiesBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -22264,7 +22353,8 @@ impl<'a> ExternalBufferPropertiesBuilder<'a> { ) -> ExternalBufferPropertiesBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -22707,7 +22797,7 @@ impl<'a> MemoryWin32HandlePropertiesKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -22717,7 +22807,8 @@ impl<'a> MemoryWin32HandlePropertiesKHRBuilder<'a> { ) -> MemoryWin32HandlePropertiesKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -22782,7 +22873,7 @@ impl<'a> MemoryGetWin32HandleInfoKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -22792,7 +22883,8 @@ impl<'a> MemoryGetWin32HandleInfoKHRBuilder<'a> { ) -> MemoryGetWin32HandleInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -22908,7 +23000,7 @@ impl<'a> MemoryFdPropertiesKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -22918,7 +23010,8 @@ impl<'a> MemoryFdPropertiesKHRBuilder<'a> { ) -> MemoryFdPropertiesKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -22983,7 +23076,7 @@ impl<'a> MemoryGetFdInfoKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -22993,7 +23086,8 @@ impl<'a> MemoryGetFdInfoKHRBuilder<'a> { ) -> MemoryGetFdInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -23151,7 +23245,7 @@ impl<'a> PhysicalDeviceExternalSemaphoreInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -23161,7 +23255,8 @@ impl<'a> PhysicalDeviceExternalSemaphoreInfoBuilder<'a> { ) -> PhysicalDeviceExternalSemaphoreInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -23238,7 +23333,7 @@ impl<'a> ExternalSemaphorePropertiesBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -23248,7 +23343,8 @@ impl<'a> ExternalSemaphorePropertiesBuilder<'a> { ) -> ExternalSemaphorePropertiesBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -23391,7 +23487,7 @@ impl<'a> ImportSemaphoreWin32HandleInfoKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -23401,7 +23497,8 @@ impl<'a> ImportSemaphoreWin32HandleInfoKHRBuilder<'a> { ) -> ImportSemaphoreWin32HandleInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -23601,7 +23698,7 @@ impl<'a> SemaphoreGetWin32HandleInfoKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -23611,7 +23708,8 @@ impl<'a> SemaphoreGetWin32HandleInfoKHRBuilder<'a> { ) -> SemaphoreGetWin32HandleInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -23688,7 +23786,7 @@ impl<'a> ImportSemaphoreFdInfoKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -23698,7 +23796,8 @@ impl<'a> ImportSemaphoreFdInfoKHRBuilder<'a> { ) -> ImportSemaphoreFdInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -23763,7 +23862,7 @@ impl<'a> SemaphoreGetFdInfoKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -23773,7 +23872,8 @@ impl<'a> SemaphoreGetFdInfoKHRBuilder<'a> { ) -> SemaphoreGetFdInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -23832,7 +23932,7 @@ impl<'a> PhysicalDeviceExternalFenceInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -23842,7 +23942,8 @@ impl<'a> PhysicalDeviceExternalFenceInfoBuilder<'a> { ) -> PhysicalDeviceExternalFenceInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -23919,7 +24020,7 @@ impl<'a> ExternalFencePropertiesBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -23929,7 +24030,8 @@ impl<'a> ExternalFencePropertiesBuilder<'a> { ) -> ExternalFencePropertiesBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -24066,7 +24168,7 @@ impl<'a> ImportFenceWin32HandleInfoKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -24076,7 +24178,8 @@ impl<'a> ImportFenceWin32HandleInfoKHRBuilder<'a> { ) -> ImportFenceWin32HandleInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -24207,7 +24310,7 @@ impl<'a> FenceGetWin32HandleInfoKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -24217,7 +24320,8 @@ impl<'a> FenceGetWin32HandleInfoKHRBuilder<'a> { ) -> FenceGetWin32HandleInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -24294,7 +24398,7 @@ impl<'a> ImportFenceFdInfoKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -24304,7 +24408,8 @@ impl<'a> ImportFenceFdInfoKHRBuilder<'a> { ) -> ImportFenceFdInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -24369,7 +24474,7 @@ impl<'a> FenceGetFdInfoKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -24379,7 +24484,8 @@ impl<'a> FenceGetFdInfoKHRBuilder<'a> { ) -> FenceGetFdInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -24732,7 +24838,7 @@ impl<'a> SurfaceCapabilities2EXTBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -24742,7 +24848,8 @@ impl<'a> SurfaceCapabilities2EXTBuilder<'a> { ) -> SurfaceCapabilities2EXTBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -24801,7 +24908,7 @@ impl<'a> DisplayPowerInfoEXTBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -24811,7 +24918,8 @@ impl<'a> DisplayPowerInfoEXTBuilder<'a> { ) -> DisplayPowerInfoEXTBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -24870,7 +24978,7 @@ impl<'a> DeviceEventInfoEXTBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -24880,7 +24988,8 @@ impl<'a> DeviceEventInfoEXTBuilder<'a> { ) -> DeviceEventInfoEXTBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -24939,7 +25048,7 @@ impl<'a> DisplayEventInfoEXTBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -24949,7 +25058,8 @@ impl<'a> DisplayEventInfoEXTBuilder<'a> { ) -> DisplayEventInfoEXTBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -25080,7 +25190,7 @@ impl<'a> PhysicalDeviceGroupPropertiesBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -25090,7 +25200,8 @@ impl<'a> PhysicalDeviceGroupPropertiesBuilder<'a> { ) -> PhysicalDeviceGroupPropertiesBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -25215,7 +25326,7 @@ impl<'a> BindBufferMemoryInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -25225,7 +25336,8 @@ impl<'a> BindBufferMemoryInfoBuilder<'a> { ) -> BindBufferMemoryInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -25350,7 +25462,7 @@ impl<'a> BindImageMemoryInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -25360,7 +25472,8 @@ impl<'a> BindImageMemoryInfoBuilder<'a> { ) -> BindImageMemoryInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -25755,7 +25868,7 @@ impl<'a> DeviceGroupPresentCapabilitiesKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -25765,7 +25878,8 @@ impl<'a> DeviceGroupPresentCapabilitiesKHRBuilder<'a> { ) -> DeviceGroupPresentCapabilitiesKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -25956,7 +26070,7 @@ impl<'a> AcquireNextImageInfoKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -25966,7 +26080,8 @@ impl<'a> AcquireNextImageInfoKHRBuilder<'a> { ) -> AcquireNextImageInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -26325,7 +26440,7 @@ impl<'a> DescriptorUpdateTemplateCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -26335,7 +26450,8 @@ impl<'a> DescriptorUpdateTemplateCreateInfoBuilder<'a> { ) -> DescriptorUpdateTemplateCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -26491,7 +26607,7 @@ impl<'a> HdrMetadataEXTBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -26501,7 +26617,8 @@ impl<'a> HdrMetadataEXTBuilder<'a> { ) -> HdrMetadataEXTBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -26774,7 +26891,7 @@ impl<'a> IOSSurfaceCreateInfoMVKBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -26784,7 +26901,8 @@ impl<'a> IOSSurfaceCreateInfoMVKBuilder<'a> { ) -> IOSSurfaceCreateInfoMVKBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -26849,7 +26967,7 @@ impl<'a> MacOSSurfaceCreateInfoMVKBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -26859,7 +26977,8 @@ impl<'a> MacOSSurfaceCreateInfoMVKBuilder<'a> { ) -> MacOSSurfaceCreateInfoMVKBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -27455,7 +27574,7 @@ impl<'a> PhysicalDeviceSurfaceInfo2KHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -27465,7 +27584,8 @@ impl<'a> PhysicalDeviceSurfaceInfo2KHRBuilder<'a> { ) -> PhysicalDeviceSurfaceInfo2KHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -27524,7 +27644,7 @@ impl<'a> SurfaceCapabilities2KHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -27534,7 +27654,8 @@ impl<'a> SurfaceCapabilities2KHRBuilder<'a> { ) -> SurfaceCapabilities2KHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -27593,7 +27714,7 @@ impl<'a> SurfaceFormat2KHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -27603,7 +27724,8 @@ impl<'a> SurfaceFormat2KHRBuilder<'a> { ) -> SurfaceFormat2KHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -27662,7 +27784,7 @@ impl<'a> DisplayProperties2KHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -27672,7 +27794,8 @@ impl<'a> DisplayProperties2KHRBuilder<'a> { ) -> DisplayProperties2KHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -27731,7 +27854,7 @@ impl<'a> DisplayPlaneProperties2KHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -27741,7 +27864,8 @@ impl<'a> DisplayPlaneProperties2KHRBuilder<'a> { ) -> DisplayPlaneProperties2KHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -27800,7 +27924,7 @@ impl<'a> DisplayModeProperties2KHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -27810,7 +27934,8 @@ impl<'a> DisplayModeProperties2KHRBuilder<'a> { ) -> DisplayModeProperties2KHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -27872,7 +27997,7 @@ impl<'a> DisplayPlaneInfo2KHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -27882,7 +28007,8 @@ impl<'a> DisplayPlaneInfo2KHRBuilder<'a> { ) -> DisplayPlaneInfo2KHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -27941,7 +28067,7 @@ impl<'a> DisplayPlaneCapabilities2KHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -27951,7 +28077,8 @@ impl<'a> DisplayPlaneCapabilities2KHRBuilder<'a> { ) -> DisplayPlaneCapabilities2KHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -28224,7 +28351,7 @@ impl<'a> BufferMemoryRequirementsInfo2Builder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -28234,7 +28361,8 @@ impl<'a> BufferMemoryRequirementsInfo2Builder<'a> { ) -> BufferMemoryRequirementsInfo2Builder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -28290,7 +28418,7 @@ impl<'a> ImageMemoryRequirementsInfo2Builder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -28300,7 +28428,8 @@ impl<'a> ImageMemoryRequirementsInfo2Builder<'a> { ) -> ImageMemoryRequirementsInfo2Builder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -28356,7 +28485,7 @@ impl<'a> ImageSparseMemoryRequirementsInfo2Builder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -28366,7 +28495,8 @@ impl<'a> ImageSparseMemoryRequirementsInfo2Builder<'a> { ) -> ImageSparseMemoryRequirementsInfo2Builder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -28425,7 +28555,7 @@ impl<'a> MemoryRequirements2Builder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -28435,7 +28565,8 @@ impl<'a> MemoryRequirements2Builder<'a> { ) -> MemoryRequirements2Builder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -28494,7 +28625,7 @@ impl<'a> SparseImageMemoryRequirements2Builder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -28504,7 +28635,8 @@ impl<'a> SparseImageMemoryRequirements2Builder<'a> { ) -> SparseImageMemoryRequirements2Builder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -28964,7 +29096,7 @@ impl<'a> SamplerYcbcrConversionCreateInfoBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -28974,7 +29106,8 @@ impl<'a> SamplerYcbcrConversionCreateInfoBuilder<'a> { ) -> SamplerYcbcrConversionCreateInfoBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -29320,7 +29453,7 @@ impl<'a> ConditionalRenderingBeginInfoEXTBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -29330,7 +29463,8 @@ impl<'a> ConditionalRenderingBeginInfoEXTBuilder<'a> { ) -> ConditionalRenderingBeginInfoEXTBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -29560,7 +29694,7 @@ impl<'a> DeviceQueueInfo2Builder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -29570,7 +29704,8 @@ impl<'a> DeviceQueueInfo2Builder<'a> { ) -> DeviceQueueInfo2Builder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -30218,7 +30353,7 @@ impl<'a> MultisamplePropertiesEXTBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -30228,7 +30363,8 @@ impl<'a> MultisamplePropertiesEXTBuilder<'a> { ) -> MultisamplePropertiesEXTBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -31015,7 +31151,7 @@ impl<'a> ValidationCacheCreateInfoEXTBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -31025,7 +31161,8 @@ impl<'a> ValidationCacheCreateInfoEXTBuilder<'a> { ) -> ValidationCacheCreateInfoEXTBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -31198,7 +31335,7 @@ impl<'a> DescriptorSetLayoutSupportBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -31208,7 +31345,8 @@ impl<'a> DescriptorSetLayoutSupportBuilder<'a> { ) -> DescriptorSetLayoutSupportBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -31603,7 +31741,7 @@ impl<'a> NativeBufferANDROIDBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -31613,7 +31751,8 @@ impl<'a> NativeBufferANDROIDBuilder<'a> { ) -> NativeBufferANDROIDBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -31910,7 +32049,7 @@ impl<'a> DebugUtilsObjectNameInfoEXTBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -31920,7 +32059,8 @@ impl<'a> DebugUtilsObjectNameInfoEXTBuilder<'a> { ) -> DebugUtilsObjectNameInfoEXTBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -31997,7 +32137,7 @@ impl<'a> DebugUtilsObjectTagInfoEXTBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -32007,7 +32147,8 @@ impl<'a> DebugUtilsObjectTagInfoEXTBuilder<'a> { ) -> DebugUtilsObjectTagInfoEXTBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -32069,7 +32210,7 @@ impl<'a> DebugUtilsLabelEXTBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -32079,7 +32220,8 @@ impl<'a> DebugUtilsLabelEXTBuilder<'a> { ) -> DebugUtilsLabelEXTBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -32307,7 +32449,7 @@ impl<'a> DebugUtilsMessengerCallbackDataEXTBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -32317,7 +32459,8 @@ impl<'a> DebugUtilsMessengerCallbackDataEXTBuilder<'a> { ) -> DebugUtilsMessengerCallbackDataEXTBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -32439,7 +32582,7 @@ impl<'a> MemoryHostPointerPropertiesEXTBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -32449,7 +32592,8 @@ impl<'a> MemoryHostPointerPropertiesEXTBuilder<'a> { ) -> MemoryHostPointerPropertiesEXTBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -32702,7 +32846,7 @@ impl<'a> CalibratedTimestampInfoEXTBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -32712,7 +32856,8 @@ impl<'a> CalibratedTimestampInfoEXTBuilder<'a> { ) -> CalibratedTimestampInfoEXTBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -33812,7 +33957,7 @@ impl<'a> AttachmentDescription2KHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -33822,7 +33967,8 @@ impl<'a> AttachmentDescription2KHRBuilder<'a> { ) -> AttachmentDescription2KHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -33893,7 +34039,7 @@ impl<'a> AttachmentReference2KHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -33903,7 +34049,8 @@ impl<'a> AttachmentReference2KHRBuilder<'a> { ) -> AttachmentReference2KHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -34029,7 +34176,7 @@ impl<'a> SubpassDescription2KHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -34039,7 +34186,8 @@ impl<'a> SubpassDescription2KHRBuilder<'a> { ) -> SubpassDescription2KHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -34152,7 +34300,7 @@ impl<'a> SubpassDependency2KHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -34162,7 +34310,8 @@ impl<'a> SubpassDependency2KHRBuilder<'a> { ) -> SubpassDependency2KHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -34266,7 +34415,7 @@ impl<'a> RenderPassCreateInfo2KHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -34276,7 +34425,8 @@ impl<'a> RenderPassCreateInfo2KHRBuilder<'a> { ) -> RenderPassCreateInfo2KHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -34332,7 +34482,7 @@ impl<'a> SubpassBeginInfoKHRBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -34342,7 +34492,8 @@ impl<'a> SubpassBeginInfoKHRBuilder<'a> { ) -> SubpassBeginInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -34392,7 +34543,7 @@ impl<'a> ::std::ops::DerefMut for SubpassEndInfoKHRBuilder<'a> { } impl<'a> SubpassEndInfoKHRBuilder<'a> { #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -34402,7 +34553,8 @@ impl<'a> SubpassEndInfoKHRBuilder<'a> { ) -> SubpassEndInfoKHRBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -34819,7 +34971,7 @@ impl<'a> AndroidHardwareBufferPropertiesANDROIDBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -34829,7 +34981,8 @@ impl<'a> AndroidHardwareBufferPropertiesANDROIDBuilder<'a> { ) -> AndroidHardwareBufferPropertiesANDROIDBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -34888,7 +35041,7 @@ impl<'a> MemoryGetAndroidHardwareBufferInfoANDROIDBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -34898,7 +35051,8 @@ impl<'a> MemoryGetAndroidHardwareBufferInfoANDROIDBuilder<'a> { ) -> MemoryGetAndroidHardwareBufferInfoANDROIDBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -35580,7 +35734,7 @@ impl<'a> CheckpointDataNVBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -35590,7 +35744,8 @@ impl<'a> CheckpointDataNVBuilder<'a> { ) -> CheckpointDataNVBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -37401,7 +37556,7 @@ impl<'a> RayTracingShaderGroupCreateInfoNVBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -37411,7 +37566,8 @@ impl<'a> RayTracingShaderGroupCreateInfoNVBuilder<'a> { ) -> RayTracingShaderGroupCreateInfoNVBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -37527,7 +37683,7 @@ impl<'a> RayTracingPipelineCreateInfoNVBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -37537,7 +37693,8 @@ impl<'a> RayTracingPipelineCreateInfoNVBuilder<'a> { ) -> RayTracingPipelineCreateInfoNVBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -37656,7 +37813,7 @@ impl<'a> GeometryTrianglesNVBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -37666,7 +37823,8 @@ impl<'a> GeometryTrianglesNVBuilder<'a> { ) -> GeometryTrianglesNVBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -37740,7 +37898,7 @@ impl<'a> GeometryAABBNVBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -37750,7 +37908,8 @@ impl<'a> GeometryAABBNVBuilder<'a> { ) -> GeometryAABBNVBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -37861,14 +38020,15 @@ impl<'a> GeometryNVBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] pub fn push_next(mut self, next: &'a mut T) -> GeometryNVBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -37951,7 +38111,7 @@ impl<'a> AccelerationStructureInfoNVBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -37961,7 +38121,8 @@ impl<'a> AccelerationStructureInfoNVBuilder<'a> { ) -> AccelerationStructureInfoNVBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -38029,7 +38190,7 @@ impl<'a> AccelerationStructureCreateInfoNVBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -38039,7 +38200,8 @@ impl<'a> AccelerationStructureCreateInfoNVBuilder<'a> { ) -> AccelerationStructureCreateInfoNVBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -38128,7 +38290,7 @@ impl<'a> BindAccelerationStructureMemoryInfoNVBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -38138,7 +38300,8 @@ impl<'a> BindAccelerationStructureMemoryInfoNVBuilder<'a> { ) -> BindAccelerationStructureMemoryInfoNVBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -38263,7 +38426,7 @@ impl<'a> AccelerationStructureMemoryRequirementsInfoNVBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -38273,7 +38436,8 @@ impl<'a> AccelerationStructureMemoryRequirementsInfoNVBuilder<'a> { ) -> AccelerationStructureMemoryRequirementsInfoNVBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -38765,7 +38929,7 @@ impl<'a> ImageDrmFormatModifierPropertiesEXTBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -38775,7 +38939,8 @@ impl<'a> ImageDrmFormatModifierPropertiesEXTBuilder<'a> { ) -> ImageDrmFormatModifierPropertiesEXTBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -39441,7 +39606,7 @@ impl<'a> BufferDeviceAddressInfoEXTBuilder<'a> { self } #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] - #[doc = r" method only exists on create infos that can be passed to a function directly. Only"] + #[doc = r" method only exists on structs that can be passed to a function directly. Only"] #[doc = r" valid extension structs can be pushed into the chain."] #[doc = r" If the chain looks like `A -> B -> C`, and you call `builder.push_next(&mut D)`, then the"] #[doc = r" chain will look like `A -> D -> B -> C`."] @@ -39451,7 +39616,8 @@ impl<'a> BufferDeviceAddressInfoEXTBuilder<'a> { ) -> BufferDeviceAddressInfoEXTBuilder<'a> { unsafe { let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -56992,71 +57158,13 @@ fn display_flags( } Ok(()) } -impl fmt::Display for SparseImageFormatFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (SparseImageFormatFlags::SINGLE_MIPTAIL.0, "SINGLE_MIPTAIL"), - ( - SparseImageFormatFlags::ALIGNED_MIP_SIZE.0, - "ALIGNED_MIP_SIZE", - ), - ( - SparseImageFormatFlags::NONSTANDARD_BLOCK_SIZE.0, - "NONSTANDARD_BLOCK_SIZE", - ), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for ExternalSemaphoreHandleTypeFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - ( - ExternalSemaphoreHandleTypeFlags::EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD.0, - "EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD", - ), - ( - ExternalSemaphoreHandleTypeFlags::EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32.0, - "EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32", - ), - ( - ExternalSemaphoreHandleTypeFlags::EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT.0, - "EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT", - ), - ( - ExternalSemaphoreHandleTypeFlags::EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE.0, - "EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE", - ), - ( - ExternalSemaphoreHandleTypeFlags::EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD.0, - "EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD", - ), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for FormatFeatureFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN : & [ ( Flags , & str ) ] = & [ ( FormatFeatureFlags :: SAMPLED_IMAGE . 0 , "SAMPLED_IMAGE" ) , ( FormatFeatureFlags :: STORAGE_IMAGE . 0 , "STORAGE_IMAGE" ) , ( FormatFeatureFlags :: STORAGE_IMAGE_ATOMIC . 0 , "STORAGE_IMAGE_ATOMIC" ) , ( FormatFeatureFlags :: UNIFORM_TEXEL_BUFFER . 0 , "UNIFORM_TEXEL_BUFFER" ) , ( FormatFeatureFlags :: STORAGE_TEXEL_BUFFER . 0 , "STORAGE_TEXEL_BUFFER" ) , ( FormatFeatureFlags :: STORAGE_TEXEL_BUFFER_ATOMIC . 0 , "STORAGE_TEXEL_BUFFER_ATOMIC" ) , ( FormatFeatureFlags :: VERTEX_BUFFER . 0 , "VERTEX_BUFFER" ) , ( FormatFeatureFlags :: COLOR_ATTACHMENT . 0 , "COLOR_ATTACHMENT" ) , ( FormatFeatureFlags :: COLOR_ATTACHMENT_BLEND . 0 , "COLOR_ATTACHMENT_BLEND" ) , ( FormatFeatureFlags :: DEPTH_STENCIL_ATTACHMENT . 0 , "DEPTH_STENCIL_ATTACHMENT" ) , ( FormatFeatureFlags :: BLIT_SRC . 0 , "BLIT_SRC" ) , ( FormatFeatureFlags :: BLIT_DST . 0 , "BLIT_DST" ) , ( FormatFeatureFlags :: SAMPLED_IMAGE_FILTER_LINEAR . 0 , "SAMPLED_IMAGE_FILTER_LINEAR" ) , ( FormatFeatureFlags :: SAMPLED_IMAGE_FILTER_CUBIC_IMG . 0 , "SAMPLED_IMAGE_FILTER_CUBIC_IMG" ) , ( FormatFeatureFlags :: RESERVED_27_KHR . 0 , "RESERVED_27_KHR" ) , ( FormatFeatureFlags :: RESERVED_28_KHR . 0 , "RESERVED_28_KHR" ) , ( FormatFeatureFlags :: RESERVED_25_KHR . 0 , "RESERVED_25_KHR" ) , ( FormatFeatureFlags :: RESERVED_26_KHR . 0 , "RESERVED_26_KHR" ) , ( FormatFeatureFlags :: SAMPLED_IMAGE_FILTER_MINMAX_EXT . 0 , "SAMPLED_IMAGE_FILTER_MINMAX_EXT" ) , ( FormatFeatureFlags :: FRAGMENT_DENSITY_MAP_EXT . 0 , "FRAGMENT_DENSITY_MAP_EXT" ) , ( FormatFeatureFlags :: TRANSFER_SRC . 0 , "TRANSFER_SRC" ) , ( FormatFeatureFlags :: TRANSFER_DST . 0 , "TRANSFER_DST" ) , ( FormatFeatureFlags :: MIDPOINT_CHROMA_SAMPLES . 0 , "MIDPOINT_CHROMA_SAMPLES" ) , ( FormatFeatureFlags :: SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER . 0 , "SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER" ) , ( FormatFeatureFlags :: SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER . 0 , "SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER" ) , ( FormatFeatureFlags :: SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT . 0 , "SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT" ) , ( FormatFeatureFlags :: SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE . 0 , "SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE" ) , ( FormatFeatureFlags :: DISJOINT . 0 , "DISJOINT" ) , ( FormatFeatureFlags :: COSITED_CHROMA_SAMPLES . 0 , "COSITED_CHROMA_SAMPLES" ) ] ; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for DebugUtilsMessageSeverityFlagsEXT { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (DebugUtilsMessageSeverityFlagsEXT::VERBOSE.0, "VERBOSE"), - (DebugUtilsMessageSeverityFlagsEXT::INFO.0, "INFO"), - (DebugUtilsMessageSeverityFlagsEXT::WARNING.0, "WARNING"), - (DebugUtilsMessageSeverityFlagsEXT::ERROR.0, "ERROR"), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for PointClippingBehavior { +impl fmt::Display for SamplerAddressMode { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { - Self::ALL_CLIP_PLANES => Some("ALL_CLIP_PLANES"), - Self::USER_CLIP_PLANES_ONLY => Some("USER_CLIP_PLANES_ONLY"), + Self::REPEAT => Some("REPEAT"), + Self::MIRRORED_REPEAT => Some("MIRRORED_REPEAT"), + Self::CLAMP_TO_EDGE => Some("CLAMP_TO_EDGE"), + Self::CLAMP_TO_BORDER => Some("CLAMP_TO_BORDER"), _ => None, }; if let Some(x) = name { @@ -57066,15 +57174,108 @@ impl fmt::Display for PointClippingBehavior { } } } -impl fmt::Display for CommandPoolResetFlags { +impl fmt::Display for PeerMemoryFeatureFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + (PeerMemoryFeatureFlags::COPY_SRC.0, "COPY_SRC"), + (PeerMemoryFeatureFlags::COPY_DST.0, "COPY_DST"), + (PeerMemoryFeatureFlags::GENERIC_SRC.0, "GENERIC_SRC"), + (PeerMemoryFeatureFlags::GENERIC_DST.0, "GENERIC_DST"), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for PolygonMode { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::FILL => Some("FILL"), + Self::LINE => Some("LINE"), + Self::POINT => Some("POINT"), + Self::FILL_RECTANGLE_NV => Some("FILL_RECTANGLE_NV"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for AccelerationStructureTypeNV { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::TOP_LEVEL => Some("TOP_LEVEL"), + Self::BOTTOM_LEVEL => Some("BOTTOM_LEVEL"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for SwapchainCreateFlagsKHR { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + ( + SwapchainCreateFlagsKHR::SPLIT_INSTANCE_BIND_REGIONS.0, + "SPLIT_INSTANCE_BIND_REGIONS", + ), + (SwapchainCreateFlagsKHR::PROTECTED.0, "PROTECTED"), + (SwapchainCreateFlagsKHR::MUTABLE_FORMAT.0, "MUTABLE_FORMAT"), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for FenceCreateFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[(FenceCreateFlags::SIGNALED.0, "SIGNALED")]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for ValidationCacheHeaderVersionEXT { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::ONE => Some("ONE"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for ImageViewCreateFlags { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { const KNOWN: &[(Flags, &str)] = &[( - CommandPoolResetFlags::RELEASE_RESOURCES.0, - "RELEASE_RESOURCES", + ImageViewCreateFlags::FRAGMENT_DENSITY_MAP_DYNAMIC_EXT.0, + "FRAGMENT_DENSITY_MAP_DYNAMIC_EXT", )]; display_flags(f, KNOWN, self.0) } } +impl fmt::Display for RasterizationOrderAMD { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::STRICT => Some("STRICT"), + Self::RELAXED => Some("RELAXED"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for MemoryAllocateFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[(MemoryAllocateFlags::DEVICE_MASK.0, "DEVICE_MASK")]; + display_flags(f, KNOWN, self.0) + } +} impl fmt::Display for LogicOp { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { @@ -57103,26 +57304,22 @@ impl fmt::Display for LogicOp { } } } -impl fmt::Display for DeviceGroupPresentModeFlagsKHR { +impl fmt::Display for ColorComponentFlags { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { const KNOWN: &[(Flags, &str)] = &[ - (DeviceGroupPresentModeFlagsKHR::LOCAL.0, "LOCAL"), - (DeviceGroupPresentModeFlagsKHR::REMOTE.0, "REMOTE"), - (DeviceGroupPresentModeFlagsKHR::SUM.0, "SUM"), - ( - DeviceGroupPresentModeFlagsKHR::LOCAL_MULTI_DEVICE.0, - "LOCAL_MULTI_DEVICE", - ), + (ColorComponentFlags::R.0, "R"), + (ColorComponentFlags::G.0, "G"), + (ColorComponentFlags::B.0, "B"), + (ColorComponentFlags::A.0, "A"), ]; display_flags(f, KNOWN, self.0) } } -impl fmt::Display for IndexType { +impl fmt::Display for AttachmentStoreOp { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { - Self::UINT16 => Some("UINT16"), - Self::UINT32 => Some("UINT32"), - Self::NONE_NV => Some("NONE_NV"), + Self::STORE => Some("STORE"), + Self::DONT_CARE => Some("DONT_CARE"), _ => None, }; if let Some(x) = name { @@ -57132,28 +57329,17 @@ impl fmt::Display for IndexType { } } } -impl fmt::Display for BlendFactor { +impl fmt::Display for StencilOp { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { + Self::KEEP => Some("KEEP"), Self::ZERO => Some("ZERO"), - Self::ONE => Some("ONE"), - Self::SRC_COLOR => Some("SRC_COLOR"), - Self::ONE_MINUS_SRC_COLOR => Some("ONE_MINUS_SRC_COLOR"), - Self::DST_COLOR => Some("DST_COLOR"), - Self::ONE_MINUS_DST_COLOR => Some("ONE_MINUS_DST_COLOR"), - Self::SRC_ALPHA => Some("SRC_ALPHA"), - Self::ONE_MINUS_SRC_ALPHA => Some("ONE_MINUS_SRC_ALPHA"), - Self::DST_ALPHA => Some("DST_ALPHA"), - Self::ONE_MINUS_DST_ALPHA => Some("ONE_MINUS_DST_ALPHA"), - Self::CONSTANT_COLOR => Some("CONSTANT_COLOR"), - Self::ONE_MINUS_CONSTANT_COLOR => Some("ONE_MINUS_CONSTANT_COLOR"), - Self::CONSTANT_ALPHA => Some("CONSTANT_ALPHA"), - Self::ONE_MINUS_CONSTANT_ALPHA => Some("ONE_MINUS_CONSTANT_ALPHA"), - Self::SRC_ALPHA_SATURATE => Some("SRC_ALPHA_SATURATE"), - Self::SRC1_COLOR => Some("SRC1_COLOR"), - Self::ONE_MINUS_SRC1_COLOR => Some("ONE_MINUS_SRC1_COLOR"), - Self::SRC1_ALPHA => Some("SRC1_ALPHA"), - Self::ONE_MINUS_SRC1_ALPHA => Some("ONE_MINUS_SRC1_ALPHA"), + Self::REPLACE => Some("REPLACE"), + Self::INCREMENT_AND_CLAMP => Some("INCREMENT_AND_CLAMP"), + Self::DECREMENT_AND_CLAMP => Some("DECREMENT_AND_CLAMP"), + Self::INVERT => Some("INVERT"), + Self::INCREMENT_AND_WRAP => Some("INCREMENT_AND_WRAP"), + Self::DECREMENT_AND_WRAP => Some("DECREMENT_AND_WRAP"), _ => None, }; if let Some(x) = name { @@ -57163,188 +57349,13 @@ impl fmt::Display for BlendFactor { } } } -impl fmt::Display for StencilFaceFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (StencilFaceFlags::FRONT.0, "FRONT"), - (StencilFaceFlags::BACK.0, "BACK"), - ( - StencilFaceFlags::STENCIL_FRONT_AND_BACK.0, - "STENCIL_FRONT_AND_BACK", - ), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for ExternalMemoryFeatureFlagsNV { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - ( - ExternalMemoryFeatureFlagsNV::EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_NV.0, - "EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_NV", - ), - ( - ExternalMemoryFeatureFlagsNV::EXTERNAL_MEMORY_FEATURE_EXPORTABLE_NV.0, - "EXTERNAL_MEMORY_FEATURE_EXPORTABLE_NV", - ), - ( - ExternalMemoryFeatureFlagsNV::EXTERNAL_MEMORY_FEATURE_IMPORTABLE_NV.0, - "EXTERNAL_MEMORY_FEATURE_IMPORTABLE_NV", - ), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for BlendOverlapEXT { +impl fmt::Display for QueueGlobalPriorityEXT { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { - Self::UNCORRELATED => Some("UNCORRELATED"), - Self::DISJOINT => Some("DISJOINT"), - Self::CONJOINT => Some("CONJOINT"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for SurfaceCounterFlagsEXT { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[(SurfaceCounterFlagsEXT::VBLANK.0, "VBLANK")]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for CullModeFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (CullModeFlags::NONE.0, "NONE"), - (CullModeFlags::FRONT.0, "FRONT"), - (CullModeFlags::BACK.0, "BACK"), - (CullModeFlags::FRONT_AND_BACK.0, "FRONT_AND_BACK"), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for DeviceQueueCreateFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[(DeviceQueueCreateFlags::PROTECTED.0, "PROTECTED")]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for ResolveModeFlagsKHR { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (ResolveModeFlagsKHR::NONE.0, "NONE"), - (ResolveModeFlagsKHR::SAMPLE_ZERO.0, "SAMPLE_ZERO"), - (ResolveModeFlagsKHR::AVERAGE.0, "AVERAGE"), - (ResolveModeFlagsKHR::MIN.0, "MIN"), - (ResolveModeFlagsKHR::MAX.0, "MAX"), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for DescriptorUpdateTemplateType { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::DESCRIPTOR_SET => Some("DESCRIPTOR_SET"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for MemoryAllocateFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[(MemoryAllocateFlags::DEVICE_MASK.0, "DEVICE_MASK")]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for MemoryHeapFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (MemoryHeapFlags::DEVICE_LOCAL.0, "DEVICE_LOCAL"), - (MemoryHeapFlags::MULTI_INSTANCE.0, "MULTI_INSTANCE"), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for ExternalSemaphoreFeatureFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - ( - ExternalSemaphoreFeatureFlags::EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE.0, - "EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE", - ), - ( - ExternalSemaphoreFeatureFlags::EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE.0, - "EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE", - ), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for DependencyFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (DependencyFlags::BY_REGION.0, "BY_REGION"), - (DependencyFlags::DEVICE_GROUP.0, "DEVICE_GROUP"), - (DependencyFlags::VIEW_LOCAL.0, "VIEW_LOCAL"), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for PeerMemoryFeatureFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (PeerMemoryFeatureFlags::COPY_SRC.0, "COPY_SRC"), - (PeerMemoryFeatureFlags::COPY_DST.0, "COPY_DST"), - (PeerMemoryFeatureFlags::GENERIC_SRC.0, "GENERIC_SRC"), - (PeerMemoryFeatureFlags::GENERIC_DST.0, "GENERIC_DST"), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for DescriptorPoolCreateFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - ( - DescriptorPoolCreateFlags::FREE_DESCRIPTOR_SET.0, - "FREE_DESCRIPTOR_SET", - ), - ( - DescriptorPoolCreateFlags::UPDATE_AFTER_BIND_EXT.0, - "UPDATE_AFTER_BIND_EXT", - ), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for SamplerMipmapMode { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::NEAREST => Some("NEAREST"), - Self::LINEAR => Some("LINEAR"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for PolygonMode { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::FILL => Some("FILL"), - Self::LINE => Some("LINE"), - Self::POINT => Some("POINT"), - Self::FILL_RECTANGLE_NV => Some("FILL_RECTANGLE_NV"), + Self::LOW => Some("LOW"), + Self::MEDIUM => Some("MEDIUM"), + Self::HIGH => Some("HIGH"), + Self::REALTIME => Some("REALTIME"), _ => None, }; if let Some(x) = name { @@ -57382,31 +57393,11 @@ impl fmt::Display for SurfaceTransformFlagsKHR { display_flags(f, KNOWN, self.0) } } -impl fmt::Display for ComponentSwizzle { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::IDENTITY => Some("IDENTITY"), - Self::ZERO => Some("ZERO"), - Self::ONE => Some("ONE"), - Self::R => Some("R"), - Self::G => Some("G"), - Self::B => Some("B"), - Self::A => Some("A"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for Filter { +impl fmt::Display for SamplerMipmapMode { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { Self::NEAREST => Some("NEAREST"), Self::LINEAR => Some("LINEAR"), - Self::CUBIC_IMG => Some("CUBIC_IMG"), _ => None, }; if let Some(x) = name { @@ -57416,50 +57407,36 @@ impl fmt::Display for Filter { } } } -impl fmt::Display for CommandBufferUsageFlags { +impl fmt::Display for ResolveModeFlagsKHR { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { const KNOWN: &[(Flags, &str)] = &[ - ( - CommandBufferUsageFlags::ONE_TIME_SUBMIT.0, - "ONE_TIME_SUBMIT", - ), - ( - CommandBufferUsageFlags::RENDER_PASS_CONTINUE.0, - "RENDER_PASS_CONTINUE", - ), - ( - CommandBufferUsageFlags::SIMULTANEOUS_USE.0, - "SIMULTANEOUS_USE", - ), + (ResolveModeFlagsKHR::NONE.0, "NONE"), + (ResolveModeFlagsKHR::SAMPLE_ZERO.0, "SAMPLE_ZERO"), + (ResolveModeFlagsKHR::AVERAGE.0, "AVERAGE"), + (ResolveModeFlagsKHR::MIN.0, "MIN"), + (ResolveModeFlagsKHR::MAX.0, "MAX"), ]; display_flags(f, KNOWN, self.0) } } -impl fmt::Display for MemoryPropertyFlags { +impl fmt::Display for QueueFlags { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { const KNOWN: &[(Flags, &str)] = &[ - (MemoryPropertyFlags::DEVICE_LOCAL.0, "DEVICE_LOCAL"), - (MemoryPropertyFlags::HOST_VISIBLE.0, "HOST_VISIBLE"), - (MemoryPropertyFlags::HOST_COHERENT.0, "HOST_COHERENT"), - (MemoryPropertyFlags::HOST_CACHED.0, "HOST_CACHED"), - (MemoryPropertyFlags::LAZILY_ALLOCATED.0, "LAZILY_ALLOCATED"), - (MemoryPropertyFlags::PROTECTED.0, "PROTECTED"), + (QueueFlags::GRAPHICS.0, "GRAPHICS"), + (QueueFlags::COMPUTE.0, "COMPUTE"), + (QueueFlags::TRANSFER.0, "TRANSFER"), + (QueueFlags::SPARSE_BINDING.0, "SPARSE_BINDING"), + (QueueFlags::RESERVED_6_KHR.0, "RESERVED_6_KHR"), + (QueueFlags::RESERVED_5_KHR.0, "RESERVED_5_KHR"), + (QueueFlags::PROTECTED.0, "PROTECTED"), ]; display_flags(f, KNOWN, self.0) } } -impl fmt::Display for SamplerYcbcrRange { +impl fmt::Display for SparseMemoryBindFlags { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::ITU_FULL => Some("ITU_FULL"), - Self::ITU_NARROW => Some("ITU_NARROW"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } + const KNOWN: &[(Flags, &str)] = &[(SparseMemoryBindFlags::METADATA.0, "METADATA")]; + display_flags(f, KNOWN, self.0) } } impl fmt::Display for DebugReportObjectTypeEXT { @@ -57511,6 +57488,34 @@ impl fmt::Display for DebugReportObjectTypeEXT { } } } +impl fmt::Display for CoarseSampleOrderTypeNV { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::DEFAULT => Some("DEFAULT"), + Self::CUSTOM => Some("CUSTOM"), + Self::PIXEL_MAJOR => Some("PIXEL_MAJOR"), + Self::SAMPLE_MAJOR => Some("SAMPLE_MAJOR"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for GeometryFlagsNV { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + (GeometryFlagsNV::OPAQUE.0, "OPAQUE"), + ( + GeometryFlagsNV::NO_DUPLICATE_ANY_HIT_INVOCATION.0, + "NO_DUPLICATE_ANY_HIT_INVOCATION", + ), + ]; + display_flags(f, KNOWN, self.0) + } +} impl fmt::Display for AccelerationStructureMemoryRequirementsTypeNV { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { @@ -57526,12 +57531,28 @@ impl fmt::Display for AccelerationStructureMemoryRequirementsTypeNV { } } } -impl fmt::Display for ImageTiling { +impl fmt::Display for BlendFactor { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { - Self::OPTIMAL => Some("OPTIMAL"), - Self::LINEAR => Some("LINEAR"), - Self::DRM_FORMAT_MODIFIER_EXT => Some("DRM_FORMAT_MODIFIER_EXT"), + Self::ZERO => Some("ZERO"), + Self::ONE => Some("ONE"), + Self::SRC_COLOR => Some("SRC_COLOR"), + Self::ONE_MINUS_SRC_COLOR => Some("ONE_MINUS_SRC_COLOR"), + Self::DST_COLOR => Some("DST_COLOR"), + Self::ONE_MINUS_DST_COLOR => Some("ONE_MINUS_DST_COLOR"), + Self::SRC_ALPHA => Some("SRC_ALPHA"), + Self::ONE_MINUS_SRC_ALPHA => Some("ONE_MINUS_SRC_ALPHA"), + Self::DST_ALPHA => Some("DST_ALPHA"), + Self::ONE_MINUS_DST_ALPHA => Some("ONE_MINUS_DST_ALPHA"), + Self::CONSTANT_COLOR => Some("CONSTANT_COLOR"), + Self::ONE_MINUS_CONSTANT_COLOR => Some("ONE_MINUS_CONSTANT_COLOR"), + Self::CONSTANT_ALPHA => Some("CONSTANT_ALPHA"), + Self::ONE_MINUS_CONSTANT_ALPHA => Some("ONE_MINUS_CONSTANT_ALPHA"), + Self::SRC_ALPHA_SATURATE => Some("SRC_ALPHA_SATURATE"), + Self::SRC1_COLOR => Some("SRC1_COLOR"), + Self::ONE_MINUS_SRC1_COLOR => Some("ONE_MINUS_SRC1_COLOR"), + Self::SRC1_ALPHA => Some("SRC1_ALPHA"), + Self::ONE_MINUS_SRC1_ALPHA => Some("ONE_MINUS_SRC1_ALPHA"), _ => None, }; if let Some(x) = name { @@ -57541,14 +57562,27 @@ impl fmt::Display for ImageTiling { } } } -impl fmt::Display for SamplerYcbcrModelConversion { +impl fmt::Display for SparseImageFormatFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + (SparseImageFormatFlags::SINGLE_MIPTAIL.0, "SINGLE_MIPTAIL"), + ( + SparseImageFormatFlags::ALIGNED_MIP_SIZE.0, + "ALIGNED_MIP_SIZE", + ), + ( + SparseImageFormatFlags::NONSTANDARD_BLOCK_SIZE.0, + "NONSTANDARD_BLOCK_SIZE", + ), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for DiscardRectangleModeEXT { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { - Self::RGB_IDENTITY => Some("RGB_IDENTITY"), - Self::YCBCR_IDENTITY => Some("YCBCR_IDENTITY"), - Self::YCBCR_709 => Some("YCBCR_709"), - Self::YCBCR_601 => Some("YCBCR_601"), - Self::YCBCR_2020 => Some("YCBCR_2020"), + Self::INCLUSIVE => Some("INCLUSIVE"), + Self::EXCLUSIVE => Some("EXCLUSIVE"), _ => None, }; if let Some(x) = name { @@ -57558,6 +57592,231 @@ impl fmt::Display for SamplerYcbcrModelConversion { } } } +impl fmt::Display for RenderPassCreateFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = + &[(RenderPassCreateFlags::RESERVED_0_KHR.0, "RESERVED_0_KHR")]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for SemaphoreImportFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[(SemaphoreImportFlags::TEMPORARY.0, "TEMPORARY")]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for QueryResultFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + (QueryResultFlags::TYPE_64.0, "TYPE_64"), + (QueryResultFlags::WAIT.0, "WAIT"), + (QueryResultFlags::WITH_AVAILABILITY.0, "WITH_AVAILABILITY"), + (QueryResultFlags::PARTIAL.0, "PARTIAL"), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for ExternalFenceFeatureFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + ( + ExternalFenceFeatureFlags::EXTERNAL_FENCE_FEATURE_EXPORTABLE.0, + "EXTERNAL_FENCE_FEATURE_EXPORTABLE", + ), + ( + ExternalFenceFeatureFlags::EXTERNAL_FENCE_FEATURE_IMPORTABLE.0, + "EXTERNAL_FENCE_FEATURE_IMPORTABLE", + ), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for ColorSpaceKHR { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::SRGB_NONLINEAR => Some("SRGB_NONLINEAR"), + Self::DISPLAY_P3_NONLINEAR_EXT => Some("DISPLAY_P3_NONLINEAR_EXT"), + Self::EXTENDED_SRGB_LINEAR_EXT => Some("EXTENDED_SRGB_LINEAR_EXT"), + Self::DCI_P3_LINEAR_EXT => Some("DCI_P3_LINEAR_EXT"), + Self::DCI_P3_NONLINEAR_EXT => Some("DCI_P3_NONLINEAR_EXT"), + Self::BT709_LINEAR_EXT => Some("BT709_LINEAR_EXT"), + Self::BT709_NONLINEAR_EXT => Some("BT709_NONLINEAR_EXT"), + Self::BT2020_LINEAR_EXT => Some("BT2020_LINEAR_EXT"), + Self::HDR10_ST2084_EXT => Some("HDR10_ST2084_EXT"), + Self::DOLBYVISION_EXT => Some("DOLBYVISION_EXT"), + Self::HDR10_HLG_EXT => Some("HDR10_HLG_EXT"), + Self::ADOBERGB_LINEAR_EXT => Some("ADOBERGB_LINEAR_EXT"), + Self::ADOBERGB_NONLINEAR_EXT => Some("ADOBERGB_NONLINEAR_EXT"), + Self::PASS_THROUGH_EXT => Some("PASS_THROUGH_EXT"), + Self::EXTENDED_SRGB_NONLINEAR_EXT => Some("EXTENDED_SRGB_NONLINEAR_EXT"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for IndexType { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::UINT16 => Some("UINT16"), + Self::UINT32 => Some("UINT32"), + Self::NONE_NV => Some("NONE_NV"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for BlendOp { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::ADD => Some("ADD"), + Self::SUBTRACT => Some("SUBTRACT"), + Self::REVERSE_SUBTRACT => Some("REVERSE_SUBTRACT"), + Self::MIN => Some("MIN"), + Self::MAX => Some("MAX"), + Self::ZERO_EXT => Some("ZERO_EXT"), + Self::SRC_EXT => Some("SRC_EXT"), + Self::DST_EXT => Some("DST_EXT"), + Self::SRC_OVER_EXT => Some("SRC_OVER_EXT"), + Self::DST_OVER_EXT => Some("DST_OVER_EXT"), + Self::SRC_IN_EXT => Some("SRC_IN_EXT"), + Self::DST_IN_EXT => Some("DST_IN_EXT"), + Self::SRC_OUT_EXT => Some("SRC_OUT_EXT"), + Self::DST_OUT_EXT => Some("DST_OUT_EXT"), + Self::SRC_ATOP_EXT => Some("SRC_ATOP_EXT"), + Self::DST_ATOP_EXT => Some("DST_ATOP_EXT"), + Self::XOR_EXT => Some("XOR_EXT"), + Self::MULTIPLY_EXT => Some("MULTIPLY_EXT"), + Self::SCREEN_EXT => Some("SCREEN_EXT"), + Self::OVERLAY_EXT => Some("OVERLAY_EXT"), + Self::DARKEN_EXT => Some("DARKEN_EXT"), + Self::LIGHTEN_EXT => Some("LIGHTEN_EXT"), + Self::COLORDODGE_EXT => Some("COLORDODGE_EXT"), + Self::COLORBURN_EXT => Some("COLORBURN_EXT"), + Self::HARDLIGHT_EXT => Some("HARDLIGHT_EXT"), + Self::SOFTLIGHT_EXT => Some("SOFTLIGHT_EXT"), + Self::DIFFERENCE_EXT => Some("DIFFERENCE_EXT"), + Self::EXCLUSION_EXT => Some("EXCLUSION_EXT"), + Self::INVERT_EXT => Some("INVERT_EXT"), + Self::INVERT_RGB_EXT => Some("INVERT_RGB_EXT"), + Self::LINEARDODGE_EXT => Some("LINEARDODGE_EXT"), + Self::LINEARBURN_EXT => Some("LINEARBURN_EXT"), + Self::VIVIDLIGHT_EXT => Some("VIVIDLIGHT_EXT"), + Self::LINEARLIGHT_EXT => Some("LINEARLIGHT_EXT"), + Self::PINLIGHT_EXT => Some("PINLIGHT_EXT"), + Self::HARDMIX_EXT => Some("HARDMIX_EXT"), + Self::HSL_HUE_EXT => Some("HSL_HUE_EXT"), + Self::HSL_SATURATION_EXT => Some("HSL_SATURATION_EXT"), + Self::HSL_COLOR_EXT => Some("HSL_COLOR_EXT"), + Self::HSL_LUMINOSITY_EXT => Some("HSL_LUMINOSITY_EXT"), + Self::PLUS_EXT => Some("PLUS_EXT"), + Self::PLUS_CLAMPED_EXT => Some("PLUS_CLAMPED_EXT"), + Self::PLUS_CLAMPED_ALPHA_EXT => Some("PLUS_CLAMPED_ALPHA_EXT"), + Self::PLUS_DARKER_EXT => Some("PLUS_DARKER_EXT"), + Self::MINUS_EXT => Some("MINUS_EXT"), + Self::MINUS_CLAMPED_EXT => Some("MINUS_CLAMPED_EXT"), + Self::CONTRAST_EXT => Some("CONTRAST_EXT"), + Self::INVERT_OVG_EXT => Some("INVERT_OVG_EXT"), + Self::RED_EXT => Some("RED_EXT"), + Self::GREEN_EXT => Some("GREEN_EXT"), + Self::BLUE_EXT => Some("BLUE_EXT"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for ShaderInfoTypeAMD { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::STATISTICS => Some("STATISTICS"), + Self::BINARY => Some("BINARY"), + Self::DISASSEMBLY => Some("DISASSEMBLY"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for ImageType { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::TYPE_1D => Some("TYPE_1D"), + Self::TYPE_2D => Some("TYPE_2D"), + Self::TYPE_3D => Some("TYPE_3D"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for VertexInputRate { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::VERTEX => Some("VERTEX"), + Self::INSTANCE => Some("INSTANCE"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for SampleCountFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + (SampleCountFlags::TYPE_1.0, "TYPE_1"), + (SampleCountFlags::TYPE_2.0, "TYPE_2"), + (SampleCountFlags::TYPE_4.0, "TYPE_4"), + (SampleCountFlags::TYPE_8.0, "TYPE_8"), + (SampleCountFlags::TYPE_16.0, "TYPE_16"), + (SampleCountFlags::TYPE_32.0, "TYPE_32"), + (SampleCountFlags::TYPE_64.0, "TYPE_64"), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for PhysicalDeviceType { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::OTHER => Some("OTHER"), + Self::INTEGRATED_GPU => Some("INTEGRATED_GPU"), + Self::DISCRETE_GPU => Some("DISCRETE_GPU"), + Self::VIRTUAL_GPU => Some("VIRTUAL_GPU"), + Self::CPU => Some("CPU"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for ConditionalRenderingFlagsEXT { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[(ConditionalRenderingFlagsEXT::INVERTED.0, "INVERTED")]; + display_flags(f, KNOWN, self.0) + } +} impl fmt::Display for ObjectEntryUsageFlagsNVX { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { const KNOWN: &[(Flags, &str)] = &[ @@ -57567,224 +57826,65 @@ impl fmt::Display for ObjectEntryUsageFlagsNVX { display_flags(f, KNOWN, self.0) } } -impl fmt::Display for DebugReportFlagsEXT { +impl fmt::Display for AttachmentLoadOp { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (DebugReportFlagsEXT::INFORMATION.0, "INFORMATION"), - (DebugReportFlagsEXT::WARNING.0, "WARNING"), - ( - DebugReportFlagsEXT::PERFORMANCE_WARNING.0, - "PERFORMANCE_WARNING", - ), - (DebugReportFlagsEXT::ERROR.0, "ERROR"), - (DebugReportFlagsEXT::DEBUG.0, "DEBUG"), - ]; + let name = match *self { + Self::LOAD => Some("LOAD"), + Self::CLEAR => Some("CLEAR"), + Self::DONT_CARE => Some("DONT_CARE"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for DeviceQueueCreateFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[(DeviceQueueCreateFlags::PROTECTED.0, "PROTECTED")]; display_flags(f, KNOWN, self.0) } } -impl fmt::Display for ChromaLocation { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::COSITED_EVEN => Some("COSITED_EVEN"), - Self::MIDPOINT => Some("MIDPOINT"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for ObjectEntryTypeNVX { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::DESCRIPTOR_SET => Some("DESCRIPTOR_SET"), - Self::PIPELINE => Some("PIPELINE"), - Self::INDEX_BUFFER => Some("INDEX_BUFFER"), - Self::VERTEX_BUFFER => Some("VERTEX_BUFFER"), - Self::PUSH_CONSTANT => Some("PUSH_CONSTANT"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for SubpassDescriptionFlags { +impl fmt::Display for ExternalMemoryFeatureFlagsNV { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { const KNOWN: &[(Flags, &str)] = &[ ( - SubpassDescriptionFlags::PER_VIEW_ATTRIBUTES_NVX.0, - "PER_VIEW_ATTRIBUTES_NVX", + ExternalMemoryFeatureFlagsNV::EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_NV.0, + "EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_NV", ), ( - SubpassDescriptionFlags::PER_VIEW_POSITION_X_ONLY_NVX.0, - "PER_VIEW_POSITION_X_ONLY_NVX", + ExternalMemoryFeatureFlagsNV::EXTERNAL_MEMORY_FEATURE_EXPORTABLE_NV.0, + "EXTERNAL_MEMORY_FEATURE_EXPORTABLE_NV", + ), + ( + ExternalMemoryFeatureFlagsNV::EXTERNAL_MEMORY_FEATURE_IMPORTABLE_NV.0, + "EXTERNAL_MEMORY_FEATURE_IMPORTABLE_NV", ), ]; display_flags(f, KNOWN, self.0) } } -impl fmt::Display for IndirectCommandsTokenTypeNVX { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::PIPELINE => Some("PIPELINE"), - Self::DESCRIPTOR_SET => Some("DESCRIPTOR_SET"), - Self::INDEX_BUFFER => Some("INDEX_BUFFER"), - Self::VERTEX_BUFFER => Some("VERTEX_BUFFER"), - Self::PUSH_CONSTANT => Some("PUSH_CONSTANT"), - Self::DRAW_INDEXED => Some("DRAW_INDEXED"), - Self::DRAW => Some("DRAW"), - Self::DISPATCH => Some("DISPATCH"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for GeometryTypeNV { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::TRIANGLES => Some("TRIANGLES"), - Self::AABBS => Some("AABBS"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for DynamicState { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::VIEWPORT => Some("VIEWPORT"), - Self::SCISSOR => Some("SCISSOR"), - Self::LINE_WIDTH => Some("LINE_WIDTH"), - Self::DEPTH_BIAS => Some("DEPTH_BIAS"), - Self::BLEND_CONSTANTS => Some("BLEND_CONSTANTS"), - Self::DEPTH_BOUNDS => Some("DEPTH_BOUNDS"), - Self::STENCIL_COMPARE_MASK => Some("STENCIL_COMPARE_MASK"), - Self::STENCIL_WRITE_MASK => Some("STENCIL_WRITE_MASK"), - Self::STENCIL_REFERENCE => Some("STENCIL_REFERENCE"), - Self::VIEWPORT_W_SCALING_NV => Some("VIEWPORT_W_SCALING_NV"), - Self::DISCARD_RECTANGLE_EXT => Some("DISCARD_RECTANGLE_EXT"), - Self::SAMPLE_LOCATIONS_EXT => Some("SAMPLE_LOCATIONS_EXT"), - Self::VIEWPORT_SHADING_RATE_PALETTE_NV => Some("VIEWPORT_SHADING_RATE_PALETTE_NV"), - Self::VIEWPORT_COARSE_SAMPLE_ORDER_NV => Some("VIEWPORT_COARSE_SAMPLE_ORDER_NV"), - Self::EXCLUSIVE_SCISSOR_NV => Some("EXCLUSIVE_SCISSOR_NV"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for PipelineCacheHeaderVersion { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::ONE => Some("ONE"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for QueueGlobalPriorityEXT { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::LOW => Some("LOW"), - Self::MEDIUM => Some("MEDIUM"), - Self::HIGH => Some("HIGH"), - Self::REALTIME => Some("REALTIME"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for SparseMemoryBindFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[(SparseMemoryBindFlags::METADATA.0, "METADATA")]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for CopyAccelerationStructureModeNV { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::CLONE => Some("CLONE"), - Self::COMPACT => Some("COMPACT"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for DescriptorBindingFlagsEXT { +impl fmt::Display for MemoryPropertyFlags { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { const KNOWN: &[(Flags, &str)] = &[ - ( - DescriptorBindingFlagsEXT::UPDATE_AFTER_BIND.0, - "UPDATE_AFTER_BIND", - ), - ( - DescriptorBindingFlagsEXT::UPDATE_UNUSED_WHILE_PENDING.0, - "UPDATE_UNUSED_WHILE_PENDING", - ), - ( - DescriptorBindingFlagsEXT::PARTIALLY_BOUND.0, - "PARTIALLY_BOUND", - ), - ( - DescriptorBindingFlagsEXT::VARIABLE_DESCRIPTOR_COUNT.0, - "VARIABLE_DESCRIPTOR_COUNT", - ), + (MemoryPropertyFlags::DEVICE_LOCAL.0, "DEVICE_LOCAL"), + (MemoryPropertyFlags::HOST_VISIBLE.0, "HOST_VISIBLE"), + (MemoryPropertyFlags::HOST_COHERENT.0, "HOST_COHERENT"), + (MemoryPropertyFlags::HOST_CACHED.0, "HOST_CACHED"), + (MemoryPropertyFlags::LAZILY_ALLOCATED.0, "LAZILY_ALLOCATED"), + (MemoryPropertyFlags::PROTECTED.0, "PROTECTED"), ]; display_flags(f, KNOWN, self.0) } } -impl fmt::Display for GeometryInstanceFlagsNV { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - ( - GeometryInstanceFlagsNV::TRIANGLE_CULL_DISABLE.0, - "TRIANGLE_CULL_DISABLE", - ), - ( - GeometryInstanceFlagsNV::TRIANGLE_FRONT_COUNTERCLOCKWISE.0, - "TRIANGLE_FRONT_COUNTERCLOCKWISE", - ), - (GeometryInstanceFlagsNV::FORCE_OPAQUE.0, "FORCE_OPAQUE"), - ( - GeometryInstanceFlagsNV::FORCE_NO_OPAQUE.0, - "FORCE_NO_OPAQUE", - ), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for ValidationCacheHeaderVersionEXT { +impl fmt::Display for ConservativeRasterizationModeEXT { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { - Self::ONE => Some("ONE"), + Self::DISABLED => Some("DISABLED"), + Self::OVERESTIMATE => Some("OVERESTIMATE"), + Self::UNDERESTIMATE => Some("UNDERESTIMATE"), _ => None, }; if let Some(x) = name { @@ -57794,49 +57894,12 @@ impl fmt::Display for ValidationCacheHeaderVersionEXT { } } } -impl fmt::Display for CommandBufferResetFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[( - CommandBufferResetFlags::RELEASE_RESOURCES.0, - "RELEASE_RESOURCES", - )]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for IndirectCommandsLayoutUsageFlagsNVX { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - ( - IndirectCommandsLayoutUsageFlagsNVX::UNORDERED_SEQUENCES.0, - "UNORDERED_SEQUENCES", - ), - ( - IndirectCommandsLayoutUsageFlagsNVX::SPARSE_SEQUENCES.0, - "SPARSE_SEQUENCES", - ), - ( - IndirectCommandsLayoutUsageFlagsNVX::EMPTY_EXECUTIONS.0, - "EMPTY_EXECUTIONS", - ), - ( - IndirectCommandsLayoutUsageFlagsNVX::INDEXED_SEQUENCES.0, - "INDEXED_SEQUENCES", - ), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for CompareOp { +impl fmt::Display for BlendOverlapEXT { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { - Self::NEVER => Some("NEVER"), - Self::LESS => Some("LESS"), - Self::EQUAL => Some("EQUAL"), - Self::LESS_OR_EQUAL => Some("LESS_OR_EQUAL"), - Self::GREATER => Some("GREATER"), - Self::NOT_EQUAL => Some("NOT_EQUAL"), - Self::GREATER_OR_EQUAL => Some("GREATER_OR_EQUAL"), - Self::ALWAYS => Some("ALWAYS"), + Self::UNCORRELATED => Some("UNCORRELATED"), + Self::DISJOINT => Some("DISJOINT"), + Self::CONJOINT => Some("CONJOINT"), _ => None, }; if let Some(x) = name { @@ -57846,24 +57909,26 @@ impl fmt::Display for CompareOp { } } } -impl fmt::Display for SemaphoreImportFlags { +impl fmt::Display for FenceImportFlags { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[(SemaphoreImportFlags::TEMPORARY.0, "TEMPORARY")]; + const KNOWN: &[(Flags, &str)] = &[(FenceImportFlags::TEMPORARY.0, "TEMPORARY")]; display_flags(f, KNOWN, self.0) } } -impl fmt::Display for QueryType { +impl fmt::Display for PrimitiveTopology { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { - Self::OCCLUSION => Some("OCCLUSION"), - Self::PIPELINE_STATISTICS => Some("PIPELINE_STATISTICS"), - Self::TIMESTAMP => Some("TIMESTAMP"), - Self::RESERVED_8 => Some("RESERVED_8"), - Self::RESERVED_4 => Some("RESERVED_4"), - Self::TRANSFORM_FEEDBACK_STREAM_EXT => Some("TRANSFORM_FEEDBACK_STREAM_EXT"), - Self::ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV => { - Some("ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV") - } + Self::POINT_LIST => Some("POINT_LIST"), + Self::LINE_LIST => Some("LINE_LIST"), + Self::LINE_STRIP => Some("LINE_STRIP"), + Self::TRIANGLE_LIST => Some("TRIANGLE_LIST"), + Self::TRIANGLE_STRIP => Some("TRIANGLE_STRIP"), + Self::TRIANGLE_FAN => Some("TRIANGLE_FAN"), + Self::LINE_LIST_WITH_ADJACENCY => Some("LINE_LIST_WITH_ADJACENCY"), + Self::LINE_STRIP_WITH_ADJACENCY => Some("LINE_STRIP_WITH_ADJACENCY"), + Self::TRIANGLE_LIST_WITH_ADJACENCY => Some("TRIANGLE_LIST_WITH_ADJACENCY"), + Self::TRIANGLE_STRIP_WITH_ADJACENCY => Some("TRIANGLE_STRIP_WITH_ADJACENCY"), + Self::PATCH_LIST => Some("PATCH_LIST"), _ => None, }; if let Some(x) = name { @@ -57873,54 +57938,11 @@ impl fmt::Display for QueryType { } } } -impl fmt::Display for BufferUsageFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (BufferUsageFlags::TRANSFER_SRC.0, "TRANSFER_SRC"), - (BufferUsageFlags::TRANSFER_DST.0, "TRANSFER_DST"), - ( - BufferUsageFlags::UNIFORM_TEXEL_BUFFER.0, - "UNIFORM_TEXEL_BUFFER", - ), - ( - BufferUsageFlags::STORAGE_TEXEL_BUFFER.0, - "STORAGE_TEXEL_BUFFER", - ), - (BufferUsageFlags::UNIFORM_BUFFER.0, "UNIFORM_BUFFER"), - (BufferUsageFlags::STORAGE_BUFFER.0, "STORAGE_BUFFER"), - (BufferUsageFlags::INDEX_BUFFER.0, "INDEX_BUFFER"), - (BufferUsageFlags::VERTEX_BUFFER.0, "VERTEX_BUFFER"), - (BufferUsageFlags::INDIRECT_BUFFER.0, "INDIRECT_BUFFER"), - (BufferUsageFlags::RESERVED_15_KHR.0, "RESERVED_15_KHR"), - (BufferUsageFlags::RESERVED_16_KHR.0, "RESERVED_16_KHR"), - (BufferUsageFlags::RESERVED_13_KHR.0, "RESERVED_13_KHR"), - (BufferUsageFlags::RESERVED_14_KHR.0, "RESERVED_14_KHR"), - ( - BufferUsageFlags::TRANSFORM_FEEDBACK_BUFFER_EXT.0, - "TRANSFORM_FEEDBACK_BUFFER_EXT", - ), - ( - BufferUsageFlags::TRANSFORM_FEEDBACK_COUNTER_BUFFER_EXT.0, - "TRANSFORM_FEEDBACK_COUNTER_BUFFER_EXT", - ), - ( - BufferUsageFlags::CONDITIONAL_RENDERING_EXT.0, - "CONDITIONAL_RENDERING_EXT", - ), - (BufferUsageFlags::RAY_TRACING_NV.0, "RAY_TRACING_NV"), - ( - BufferUsageFlags::SHADER_DEVICE_ADDRESS_EXT.0, - "SHADER_DEVICE_ADDRESS_EXT", - ), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for CommandBufferLevel { +impl fmt::Display for TessellationDomainOrigin { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { - Self::PRIMARY => Some("PRIMARY"), - Self::SECONDARY => Some("SECONDARY"), + Self::UPPER_LEFT => Some("UPPER_LEFT"), + Self::LOWER_LEFT => Some("LOWER_LEFT"), _ => None, }; if let Some(x) = name { @@ -58023,6 +58045,76 @@ impl fmt::Display for AccessFlags { display_flags(f, KNOWN, self.0) } } +impl fmt::Display for CompareOp { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::NEVER => Some("NEVER"), + Self::LESS => Some("LESS"), + Self::EQUAL => Some("EQUAL"), + Self::LESS_OR_EQUAL => Some("LESS_OR_EQUAL"), + Self::GREATER => Some("GREATER"), + Self::NOT_EQUAL => Some("NOT_EQUAL"), + Self::GREATER_OR_EQUAL => Some("GREATER_OR_EQUAL"), + Self::ALWAYS => Some("ALWAYS"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for DebugUtilsMessageTypeFlagsEXT { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + (DebugUtilsMessageTypeFlagsEXT::GENERAL.0, "GENERAL"), + (DebugUtilsMessageTypeFlagsEXT::VALIDATION.0, "VALIDATION"), + (DebugUtilsMessageTypeFlagsEXT::PERFORMANCE.0, "PERFORMANCE"), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for DescriptorUpdateTemplateType { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::DESCRIPTOR_SET => Some("DESCRIPTOR_SET"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for FrontFace { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::COUNTER_CLOCKWISE => Some("COUNTER_CLOCKWISE"), + Self::CLOCKWISE => Some("CLOCKWISE"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for DisplayEventTypeEXT { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::FIRST_PIXEL_OUT => Some("FIRST_PIXEL_OUT"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} impl fmt::Display for ImageLayout { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { @@ -58054,12 +58146,24 @@ impl fmt::Display for ImageLayout { } } } -impl fmt::Display for ImageType { +impl fmt::Display for DynamicState { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { - Self::TYPE_1D => Some("TYPE_1D"), - Self::TYPE_2D => Some("TYPE_2D"), - Self::TYPE_3D => Some("TYPE_3D"), + Self::VIEWPORT => Some("VIEWPORT"), + Self::SCISSOR => Some("SCISSOR"), + Self::LINE_WIDTH => Some("LINE_WIDTH"), + Self::DEPTH_BIAS => Some("DEPTH_BIAS"), + Self::BLEND_CONSTANTS => Some("BLEND_CONSTANTS"), + Self::DEPTH_BOUNDS => Some("DEPTH_BOUNDS"), + Self::STENCIL_COMPARE_MASK => Some("STENCIL_COMPARE_MASK"), + Self::STENCIL_WRITE_MASK => Some("STENCIL_WRITE_MASK"), + Self::STENCIL_REFERENCE => Some("STENCIL_REFERENCE"), + Self::VIEWPORT_W_SCALING_NV => Some("VIEWPORT_W_SCALING_NV"), + Self::DISCARD_RECTANGLE_EXT => Some("DISCARD_RECTANGLE_EXT"), + Self::SAMPLE_LOCATIONS_EXT => Some("SAMPLE_LOCATIONS_EXT"), + Self::VIEWPORT_SHADING_RATE_PALETTE_NV => Some("VIEWPORT_SHADING_RATE_PALETTE_NV"), + Self::VIEWPORT_COARSE_SAMPLE_ORDER_NV => Some("VIEWPORT_COARSE_SAMPLE_ORDER_NV"), + Self::EXCLUSIVE_SCISSOR_NV => Some("EXCLUSIVE_SCISSOR_NV"), _ => None, }; if let Some(x) = name { @@ -58069,89 +58173,217 @@ impl fmt::Display for ImageType { } } } -impl fmt::Display for ShaderStageFlags { +impl fmt::Display for DescriptorType { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::SAMPLER => Some("SAMPLER"), + Self::COMBINED_IMAGE_SAMPLER => Some("COMBINED_IMAGE_SAMPLER"), + Self::SAMPLED_IMAGE => Some("SAMPLED_IMAGE"), + Self::STORAGE_IMAGE => Some("STORAGE_IMAGE"), + Self::UNIFORM_TEXEL_BUFFER => Some("UNIFORM_TEXEL_BUFFER"), + Self::STORAGE_TEXEL_BUFFER => Some("STORAGE_TEXEL_BUFFER"), + Self::UNIFORM_BUFFER => Some("UNIFORM_BUFFER"), + Self::STORAGE_BUFFER => Some("STORAGE_BUFFER"), + Self::UNIFORM_BUFFER_DYNAMIC => Some("UNIFORM_BUFFER_DYNAMIC"), + Self::STORAGE_BUFFER_DYNAMIC => Some("STORAGE_BUFFER_DYNAMIC"), + Self::INPUT_ATTACHMENT => Some("INPUT_ATTACHMENT"), + Self::INLINE_UNIFORM_BLOCK_EXT => Some("INLINE_UNIFORM_BLOCK_EXT"), + Self::ACCELERATION_STRUCTURE_NV => Some("ACCELERATION_STRUCTURE_NV"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for DriverIdKHR { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::AMD_PROPRIETARY => Some("AMD_PROPRIETARY"), + Self::AMD_OPEN_SOURCE => Some("AMD_OPEN_SOURCE"), + Self::MESA_RADV => Some("MESA_RADV"), + Self::NVIDIA_PROPRIETARY => Some("NVIDIA_PROPRIETARY"), + Self::INTEL_PROPRIETARY_WINDOWS => Some("INTEL_PROPRIETARY_WINDOWS"), + Self::INTEL_OPEN_SOURCE_MESA => Some("INTEL_OPEN_SOURCE_MESA"), + Self::IMAGINATION_PROPRIETARY => Some("IMAGINATION_PROPRIETARY"), + Self::QUALCOMM_PROPRIETARY => Some("QUALCOMM_PROPRIETARY"), + Self::ARM_PROPRIETARY => Some("ARM_PROPRIETARY"), + Self::GOOGLE_PASTEL => Some("GOOGLE_PASTEL"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for CommandBufferLevel { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::PRIMARY => Some("PRIMARY"), + Self::SECONDARY => Some("SECONDARY"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for PresentModeKHR { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::IMMEDIATE => Some("IMMEDIATE"), + Self::MAILBOX => Some("MAILBOX"), + Self::FIFO => Some("FIFO"), + Self::FIFO_RELAXED => Some("FIFO_RELAXED"), + Self::SHARED_DEMAND_REFRESH => Some("SHARED_DEMAND_REFRESH"), + Self::SHARED_CONTINUOUS_REFRESH => Some("SHARED_CONTINUOUS_REFRESH"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for ObjectType { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::UNKNOWN => Some("UNKNOWN"), + Self::INSTANCE => Some("INSTANCE"), + Self::PHYSICAL_DEVICE => Some("PHYSICAL_DEVICE"), + Self::DEVICE => Some("DEVICE"), + Self::QUEUE => Some("QUEUE"), + Self::SEMAPHORE => Some("SEMAPHORE"), + Self::COMMAND_BUFFER => Some("COMMAND_BUFFER"), + Self::FENCE => Some("FENCE"), + Self::DEVICE_MEMORY => Some("DEVICE_MEMORY"), + Self::BUFFER => Some("BUFFER"), + Self::IMAGE => Some("IMAGE"), + Self::EVENT => Some("EVENT"), + Self::QUERY_POOL => Some("QUERY_POOL"), + Self::BUFFER_VIEW => Some("BUFFER_VIEW"), + Self::IMAGE_VIEW => Some("IMAGE_VIEW"), + Self::SHADER_MODULE => Some("SHADER_MODULE"), + Self::PIPELINE_CACHE => Some("PIPELINE_CACHE"), + Self::PIPELINE_LAYOUT => Some("PIPELINE_LAYOUT"), + Self::RENDER_PASS => Some("RENDER_PASS"), + Self::PIPELINE => Some("PIPELINE"), + Self::DESCRIPTOR_SET_LAYOUT => Some("DESCRIPTOR_SET_LAYOUT"), + Self::SAMPLER => Some("SAMPLER"), + Self::DESCRIPTOR_POOL => Some("DESCRIPTOR_POOL"), + Self::DESCRIPTOR_SET => Some("DESCRIPTOR_SET"), + Self::FRAMEBUFFER => Some("FRAMEBUFFER"), + Self::COMMAND_POOL => Some("COMMAND_POOL"), + Self::SURFACE_KHR => Some("SURFACE_KHR"), + Self::SWAPCHAIN_KHR => Some("SWAPCHAIN_KHR"), + Self::DISPLAY_KHR => Some("DISPLAY_KHR"), + Self::DISPLAY_MODE_KHR => Some("DISPLAY_MODE_KHR"), + Self::DEBUG_REPORT_CALLBACK_EXT => Some("DEBUG_REPORT_CALLBACK_EXT"), + Self::OBJECT_TABLE_NVX => Some("OBJECT_TABLE_NVX"), + Self::INDIRECT_COMMANDS_LAYOUT_NVX => Some("INDIRECT_COMMANDS_LAYOUT_NVX"), + Self::DEBUG_UTILS_MESSENGER_EXT => Some("DEBUG_UTILS_MESSENGER_EXT"), + Self::VALIDATION_CACHE_EXT => Some("VALIDATION_CACHE_EXT"), + Self::ACCELERATION_STRUCTURE_NV => Some("ACCELERATION_STRUCTURE_NV"), + Self::SAMPLER_YCBCR_CONVERSION => Some("SAMPLER_YCBCR_CONVERSION"), + Self::DESCRIPTOR_UPDATE_TEMPLATE => Some("DESCRIPTOR_UPDATE_TEMPLATE"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for IndirectCommandsTokenTypeNVX { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::PIPELINE => Some("PIPELINE"), + Self::DESCRIPTOR_SET => Some("DESCRIPTOR_SET"), + Self::INDEX_BUFFER => Some("INDEX_BUFFER"), + Self::VERTEX_BUFFER => Some("VERTEX_BUFFER"), + Self::PUSH_CONSTANT => Some("PUSH_CONSTANT"), + Self::DRAW_INDEXED => Some("DRAW_INDEXED"), + Self::DRAW => Some("DRAW"), + Self::DISPATCH => Some("DISPATCH"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for SubgroupFeatureFlags { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { const KNOWN: &[(Flags, &str)] = &[ - (ShaderStageFlags::VERTEX.0, "VERTEX"), - ( - ShaderStageFlags::TESSELLATION_CONTROL.0, - "TESSELLATION_CONTROL", - ), - ( - ShaderStageFlags::TESSELLATION_EVALUATION.0, - "TESSELLATION_EVALUATION", - ), - (ShaderStageFlags::GEOMETRY.0, "GEOMETRY"), - (ShaderStageFlags::FRAGMENT.0, "FRAGMENT"), - (ShaderStageFlags::COMPUTE.0, "COMPUTE"), - (ShaderStageFlags::ALL_GRAPHICS.0, "ALL_GRAPHICS"), - (ShaderStageFlags::ALL.0, "ALL"), - (ShaderStageFlags::RAYGEN_NV.0, "RAYGEN_NV"), - (ShaderStageFlags::ANY_HIT_NV.0, "ANY_HIT_NV"), - (ShaderStageFlags::CLOSEST_HIT_NV.0, "CLOSEST_HIT_NV"), - (ShaderStageFlags::MISS_NV.0, "MISS_NV"), - (ShaderStageFlags::INTERSECTION_NV.0, "INTERSECTION_NV"), - (ShaderStageFlags::CALLABLE_NV.0, "CALLABLE_NV"), - (ShaderStageFlags::TASK_NV.0, "TASK_NV"), - (ShaderStageFlags::MESH_NV.0, "MESH_NV"), + (SubgroupFeatureFlags::BASIC.0, "BASIC"), + (SubgroupFeatureFlags::VOTE.0, "VOTE"), + (SubgroupFeatureFlags::ARITHMETIC.0, "ARITHMETIC"), + (SubgroupFeatureFlags::BALLOT.0, "BALLOT"), + (SubgroupFeatureFlags::SHUFFLE.0, "SHUFFLE"), + (SubgroupFeatureFlags::SHUFFLE_RELATIVE.0, "SHUFFLE_RELATIVE"), + (SubgroupFeatureFlags::CLUSTERED.0, "CLUSTERED"), + (SubgroupFeatureFlags::QUAD.0, "QUAD"), + (SubgroupFeatureFlags::PARTITIONED_NV.0, "PARTITIONED_NV"), ]; display_flags(f, KNOWN, self.0) } } -impl fmt::Display for BlendOp { +impl fmt::Display for ExternalMemoryHandleTypeFlagsNV { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + ( + ExternalMemoryHandleTypeFlagsNV::EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_NV.0, + "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_NV", + ), + ( + ExternalMemoryHandleTypeFlagsNV::EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_NV.0, + "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_NV", + ), + ( + ExternalMemoryHandleTypeFlagsNV::EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_NV.0, + "EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_NV", + ), + ( + ExternalMemoryHandleTypeFlagsNV::EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_NV.0, + "EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_NV", + ), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for ExternalMemoryFeatureFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + ( + ExternalMemoryFeatureFlags::EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY.0, + "EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY", + ), + ( + ExternalMemoryFeatureFlags::EXTERNAL_MEMORY_FEATURE_EXPORTABLE.0, + "EXTERNAL_MEMORY_FEATURE_EXPORTABLE", + ), + ( + ExternalMemoryFeatureFlags::EXTERNAL_MEMORY_FEATURE_IMPORTABLE.0, + "EXTERNAL_MEMORY_FEATURE_IMPORTABLE", + ), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for InternalAllocationType { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { - Self::ADD => Some("ADD"), - Self::SUBTRACT => Some("SUBTRACT"), - Self::REVERSE_SUBTRACT => Some("REVERSE_SUBTRACT"), - Self::MIN => Some("MIN"), - Self::MAX => Some("MAX"), - Self::ZERO_EXT => Some("ZERO_EXT"), - Self::SRC_EXT => Some("SRC_EXT"), - Self::DST_EXT => Some("DST_EXT"), - Self::SRC_OVER_EXT => Some("SRC_OVER_EXT"), - Self::DST_OVER_EXT => Some("DST_OVER_EXT"), - Self::SRC_IN_EXT => Some("SRC_IN_EXT"), - Self::DST_IN_EXT => Some("DST_IN_EXT"), - Self::SRC_OUT_EXT => Some("SRC_OUT_EXT"), - Self::DST_OUT_EXT => Some("DST_OUT_EXT"), - Self::SRC_ATOP_EXT => Some("SRC_ATOP_EXT"), - Self::DST_ATOP_EXT => Some("DST_ATOP_EXT"), - Self::XOR_EXT => Some("XOR_EXT"), - Self::MULTIPLY_EXT => Some("MULTIPLY_EXT"), - Self::SCREEN_EXT => Some("SCREEN_EXT"), - Self::OVERLAY_EXT => Some("OVERLAY_EXT"), - Self::DARKEN_EXT => Some("DARKEN_EXT"), - Self::LIGHTEN_EXT => Some("LIGHTEN_EXT"), - Self::COLORDODGE_EXT => Some("COLORDODGE_EXT"), - Self::COLORBURN_EXT => Some("COLORBURN_EXT"), - Self::HARDLIGHT_EXT => Some("HARDLIGHT_EXT"), - Self::SOFTLIGHT_EXT => Some("SOFTLIGHT_EXT"), - Self::DIFFERENCE_EXT => Some("DIFFERENCE_EXT"), - Self::EXCLUSION_EXT => Some("EXCLUSION_EXT"), - Self::INVERT_EXT => Some("INVERT_EXT"), - Self::INVERT_RGB_EXT => Some("INVERT_RGB_EXT"), - Self::LINEARDODGE_EXT => Some("LINEARDODGE_EXT"), - Self::LINEARBURN_EXT => Some("LINEARBURN_EXT"), - Self::VIVIDLIGHT_EXT => Some("VIVIDLIGHT_EXT"), - Self::LINEARLIGHT_EXT => Some("LINEARLIGHT_EXT"), - Self::PINLIGHT_EXT => Some("PINLIGHT_EXT"), - Self::HARDMIX_EXT => Some("HARDMIX_EXT"), - Self::HSL_HUE_EXT => Some("HSL_HUE_EXT"), - Self::HSL_SATURATION_EXT => Some("HSL_SATURATION_EXT"), - Self::HSL_COLOR_EXT => Some("HSL_COLOR_EXT"), - Self::HSL_LUMINOSITY_EXT => Some("HSL_LUMINOSITY_EXT"), - Self::PLUS_EXT => Some("PLUS_EXT"), - Self::PLUS_CLAMPED_EXT => Some("PLUS_CLAMPED_EXT"), - Self::PLUS_CLAMPED_ALPHA_EXT => Some("PLUS_CLAMPED_ALPHA_EXT"), - Self::PLUS_DARKER_EXT => Some("PLUS_DARKER_EXT"), - Self::MINUS_EXT => Some("MINUS_EXT"), - Self::MINUS_CLAMPED_EXT => Some("MINUS_CLAMPED_EXT"), - Self::CONTRAST_EXT => Some("CONTRAST_EXT"), - Self::INVERT_OVG_EXT => Some("INVERT_OVG_EXT"), - Self::RED_EXT => Some("RED_EXT"), - Self::GREEN_EXT => Some("GREEN_EXT"), - Self::BLUE_EXT => Some("BLUE_EXT"), + Self::EXECUTABLE => Some("EXECUTABLE"), _ => None, }; if let Some(x) = name { @@ -58161,12 +58393,12 @@ impl fmt::Display for BlendOp { } } } -impl fmt::Display for MemoryOverallocationBehaviorAMD { +impl fmt::Display for PipelineBindPoint { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { - Self::DEFAULT => Some("DEFAULT"), - Self::ALLOWED => Some("ALLOWED"), - Self::DISALLOWED => Some("DISALLOWED"), + Self::GRAPHICS => Some("GRAPHICS"), + Self::COMPUTE => Some("COMPUTE"), + Self::RAY_TRACING_NV => Some("RAY_TRACING_NV"), _ => None, }; if let Some(x) = name { @@ -58176,11 +58408,16 @@ impl fmt::Display for MemoryOverallocationBehaviorAMD { } } } -impl fmt::Display for ValidationCheckEXT { +impl fmt::Display for ComponentSwizzle { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { - Self::ALL => Some("ALL"), - Self::SHADERS => Some("SHADERS"), + Self::IDENTITY => Some("IDENTITY"), + Self::ZERO => Some("ZERO"), + Self::ONE => Some("ONE"), + Self::R => Some("R"), + Self::G => Some("G"), + Self::B => Some("B"), + Self::A => Some("A"), _ => None, }; if let Some(x) = name { @@ -58190,12 +58427,37 @@ impl fmt::Display for ValidationCheckEXT { } } } -impl fmt::Display for VendorId { +impl fmt::Display for DescriptorBindingFlagsEXT { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + ( + DescriptorBindingFlagsEXT::UPDATE_AFTER_BIND.0, + "UPDATE_AFTER_BIND", + ), + ( + DescriptorBindingFlagsEXT::UPDATE_UNUSED_WHILE_PENDING.0, + "UPDATE_UNUSED_WHILE_PENDING", + ), + ( + DescriptorBindingFlagsEXT::PARTIALLY_BOUND.0, + "PARTIALLY_BOUND", + ), + ( + DescriptorBindingFlagsEXT::VARIABLE_DESCRIPTOR_COUNT.0, + "VARIABLE_DESCRIPTOR_COUNT", + ), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for ObjectEntryTypeNVX { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { - Self::VIV => Some("VIV"), - Self::VSI => Some("VSI"), - Self::KAZAN => Some("KAZAN"), + Self::DESCRIPTOR_SET => Some("DESCRIPTOR_SET"), + Self::PIPELINE => Some("PIPELINE"), + Self::INDEX_BUFFER => Some("INDEX_BUFFER"), + Self::VERTEX_BUFFER => Some("VERTEX_BUFFER"), + Self::PUSH_CONSTANT => Some("PUSH_CONSTANT"), _ => None, }; if let Some(x) = name { @@ -58205,12 +58467,37 @@ impl fmt::Display for VendorId { } } } -impl fmt::Display for AttachmentLoadOp { +impl fmt::Display for CoverageModulationModeNV { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { - Self::LOAD => Some("LOAD"), - Self::CLEAR => Some("CLEAR"), - Self::DONT_CARE => Some("DONT_CARE"), + Self::NONE => Some("NONE"), + Self::RGB => Some("RGB"), + Self::ALPHA => Some("ALPHA"), + Self::RGBA => Some("RGBA"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for CommandBufferResetFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[( + CommandBufferResetFlags::RELEASE_RESOURCES.0, + "RELEASE_RESOURCES", + )]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for RayTracingShaderGroupTypeNV { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::GENERAL => Some("GENERAL"), + Self::TRIANGLES_HIT_GROUP => Some("TRIANGLES_HIT_GROUP"), + Self::PROCEDURAL_HIT_GROUP => Some("PROCEDURAL_HIT_GROUP"), _ => None, }; if let Some(x) = name { @@ -58234,6 +58521,71 @@ impl fmt::Display for DisplayPlaneAlphaFlagsKHR { display_flags(f, KNOWN, self.0) } } +impl fmt::Display for ValidationFeatureEnableEXT { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::GPU_ASSISTED => Some("GPU_ASSISTED"), + Self::GPU_ASSISTED_RESERVE_BINDING_SLOT => Some("GPU_ASSISTED_RESERVE_BINDING_SLOT"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for ImageAspectFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + (ImageAspectFlags::COLOR.0, "COLOR"), + (ImageAspectFlags::DEPTH.0, "DEPTH"), + (ImageAspectFlags::STENCIL.0, "STENCIL"), + (ImageAspectFlags::METADATA.0, "METADATA"), + (ImageAspectFlags::MEMORY_PLANE_0_EXT.0, "MEMORY_PLANE_0_EXT"), + (ImageAspectFlags::MEMORY_PLANE_1_EXT.0, "MEMORY_PLANE_1_EXT"), + (ImageAspectFlags::MEMORY_PLANE_2_EXT.0, "MEMORY_PLANE_2_EXT"), + (ImageAspectFlags::MEMORY_PLANE_3_EXT.0, "MEMORY_PLANE_3_EXT"), + (ImageAspectFlags::PLANE_0.0, "PLANE_0"), + (ImageAspectFlags::PLANE_1.0, "PLANE_1"), + (ImageAspectFlags::PLANE_2.0, "PLANE_2"), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for QueryControlFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[(QueryControlFlags::PRECISE.0, "PRECISE")]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for ExternalSemaphoreHandleTypeFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + ( + ExternalSemaphoreHandleTypeFlags::EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD.0, + "EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD", + ), + ( + ExternalSemaphoreHandleTypeFlags::EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32.0, + "EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32", + ), + ( + ExternalSemaphoreHandleTypeFlags::EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT.0, + "EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT", + ), + ( + ExternalSemaphoreHandleTypeFlags::EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE.0, + "EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE", + ), + ( + ExternalSemaphoreHandleTypeFlags::EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD.0, + "EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD", + ), + ]; + display_flags(f, KNOWN, self.0) + } +} impl fmt::Display for TimeDomainEXT { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { @@ -58250,51 +58602,12 @@ impl fmt::Display for TimeDomainEXT { } } } -impl fmt::Display for FenceImportFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[(FenceImportFlags::TEMPORARY.0, "TEMPORARY")]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for SwapchainCreateFlagsKHR { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - ( - SwapchainCreateFlagsKHR::SPLIT_INSTANCE_BIND_REGIONS.0, - "SPLIT_INSTANCE_BIND_REGIONS", - ), - (SwapchainCreateFlagsKHR::PROTECTED.0, "PROTECTED"), - (SwapchainCreateFlagsKHR::MUTABLE_FORMAT.0, "MUTABLE_FORMAT"), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for CompositeAlphaFlagsKHR { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (CompositeAlphaFlagsKHR::OPAQUE.0, "OPAQUE"), - (CompositeAlphaFlagsKHR::PRE_MULTIPLIED.0, "PRE_MULTIPLIED"), - (CompositeAlphaFlagsKHR::POST_MULTIPLIED.0, "POST_MULTIPLIED"), - (CompositeAlphaFlagsKHR::INHERIT.0, "INHERIT"), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for ImageViewCreateFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[( - ImageViewCreateFlags::FRAGMENT_DENSITY_MAP_DYNAMIC_EXT.0, - "FRAGMENT_DENSITY_MAP_DYNAMIC_EXT", - )]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for PipelineBindPoint { +impl fmt::Display for ImageTiling { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { - Self::GRAPHICS => Some("GRAPHICS"), - Self::COMPUTE => Some("COMPUTE"), - Self::RAY_TRACING_NV => Some("RAY_TRACING_NV"), + Self::OPTIMAL => Some("OPTIMAL"), + Self::LINEAR => Some("LINEAR"), + Self::DRM_FORMAT_MODIFIER_EXT => Some("DRM_FORMAT_MODIFIER_EXT"), _ => None, }; if let Some(x) = name { @@ -58304,21 +58617,12 @@ impl fmt::Display for PipelineBindPoint { } } } -impl fmt::Display for SamplerCreateFlags { +impl fmt::Display for CommandPoolResetFlags { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (SamplerCreateFlags::SUBSAMPLED_EXT.0, "SUBSAMPLED_EXT"), - ( - SamplerCreateFlags::SUBSAMPLED_COARSE_RECONSTRUCTION_EXT.0, - "SUBSAMPLED_COARSE_RECONSTRUCTION_EXT", - ), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for FenceCreateFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[(FenceCreateFlags::SIGNALED.0, "SIGNALED")]; + const KNOWN: &[(Flags, &str)] = &[( + CommandPoolResetFlags::RELEASE_RESOURCES.0, + "RELEASE_RESOURCES", + )]; display_flags(f, KNOWN, self.0) } } @@ -58589,241 +58893,40 @@ impl fmt::Display for Format { } } } -impl fmt::Display for ValidationFeatureDisableEXT { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::ALL => Some("ALL"), - Self::SHADERS => Some("SHADERS"), - Self::THREAD_SAFETY => Some("THREAD_SAFETY"), - Self::API_PARAMETERS => Some("API_PARAMETERS"), - Self::OBJECT_LIFETIMES => Some("OBJECT_LIFETIMES"), - Self::CORE_CHECKS => Some("CORE_CHECKS"), - Self::UNIQUE_HANDLES => Some("UNIQUE_HANDLES"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for QueryControlFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[(QueryControlFlags::PRECISE.0, "PRECISE")]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for ShaderInfoTypeAMD { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::STATISTICS => Some("STATISTICS"), - Self::BINARY => Some("BINARY"), - Self::DISASSEMBLY => Some("DISASSEMBLY"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for ImageAspectFlags { +impl fmt::Display for ImageCreateFlags { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { const KNOWN: &[(Flags, &str)] = &[ - (ImageAspectFlags::COLOR.0, "COLOR"), - (ImageAspectFlags::DEPTH.0, "DEPTH"), - (ImageAspectFlags::STENCIL.0, "STENCIL"), - (ImageAspectFlags::METADATA.0, "METADATA"), - (ImageAspectFlags::MEMORY_PLANE_0_EXT.0, "MEMORY_PLANE_0_EXT"), - (ImageAspectFlags::MEMORY_PLANE_1_EXT.0, "MEMORY_PLANE_1_EXT"), - (ImageAspectFlags::MEMORY_PLANE_2_EXT.0, "MEMORY_PLANE_2_EXT"), - (ImageAspectFlags::MEMORY_PLANE_3_EXT.0, "MEMORY_PLANE_3_EXT"), - (ImageAspectFlags::PLANE_0.0, "PLANE_0"), - (ImageAspectFlags::PLANE_1.0, "PLANE_1"), - (ImageAspectFlags::PLANE_2.0, "PLANE_2"), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for GeometryFlagsNV { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (GeometryFlagsNV::OPAQUE.0, "OPAQUE"), + (ImageCreateFlags::SPARSE_BINDING.0, "SPARSE_BINDING"), + (ImageCreateFlags::SPARSE_RESIDENCY.0, "SPARSE_RESIDENCY"), + (ImageCreateFlags::SPARSE_ALIASED.0, "SPARSE_ALIASED"), + (ImageCreateFlags::MUTABLE_FORMAT.0, "MUTABLE_FORMAT"), + (ImageCreateFlags::CUBE_COMPATIBLE.0, "CUBE_COMPATIBLE"), + (ImageCreateFlags::CORNER_SAMPLED_NV.0, "CORNER_SAMPLED_NV"), ( - GeometryFlagsNV::NO_DUPLICATE_ANY_HIT_INVOCATION.0, - "NO_DUPLICATE_ANY_HIT_INVOCATION", + ImageCreateFlags::SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_EXT.0, + "SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_EXT", ), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for CoarseSampleOrderTypeNV { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::DEFAULT => Some("DEFAULT"), - Self::CUSTOM => Some("CUSTOM"), - Self::PIXEL_MAJOR => Some("PIXEL_MAJOR"), - Self::SAMPLE_MAJOR => Some("SAMPLE_MAJOR"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for SubgroupFeatureFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (SubgroupFeatureFlags::BASIC.0, "BASIC"), - (SubgroupFeatureFlags::VOTE.0, "VOTE"), - (SubgroupFeatureFlags::ARITHMETIC.0, "ARITHMETIC"), - (SubgroupFeatureFlags::BALLOT.0, "BALLOT"), - (SubgroupFeatureFlags::SHUFFLE.0, "SHUFFLE"), - (SubgroupFeatureFlags::SHUFFLE_RELATIVE.0, "SHUFFLE_RELATIVE"), - (SubgroupFeatureFlags::CLUSTERED.0, "CLUSTERED"), - (SubgroupFeatureFlags::QUAD.0, "QUAD"), - (SubgroupFeatureFlags::PARTITIONED_NV.0, "PARTITIONED_NV"), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for ConditionalRenderingFlagsEXT { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[(ConditionalRenderingFlagsEXT::INVERTED.0, "INVERTED")]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for DescriptorType { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::SAMPLER => Some("SAMPLER"), - Self::COMBINED_IMAGE_SAMPLER => Some("COMBINED_IMAGE_SAMPLER"), - Self::SAMPLED_IMAGE => Some("SAMPLED_IMAGE"), - Self::STORAGE_IMAGE => Some("STORAGE_IMAGE"), - Self::UNIFORM_TEXEL_BUFFER => Some("UNIFORM_TEXEL_BUFFER"), - Self::STORAGE_TEXEL_BUFFER => Some("STORAGE_TEXEL_BUFFER"), - Self::UNIFORM_BUFFER => Some("UNIFORM_BUFFER"), - Self::STORAGE_BUFFER => Some("STORAGE_BUFFER"), - Self::UNIFORM_BUFFER_DYNAMIC => Some("UNIFORM_BUFFER_DYNAMIC"), - Self::STORAGE_BUFFER_DYNAMIC => Some("STORAGE_BUFFER_DYNAMIC"), - Self::INPUT_ATTACHMENT => Some("INPUT_ATTACHMENT"), - Self::INLINE_UNIFORM_BLOCK_EXT => Some("INLINE_UNIFORM_BLOCK_EXT"), - Self::ACCELERATION_STRUCTURE_NV => Some("ACCELERATION_STRUCTURE_NV"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for FrontFace { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::COUNTER_CLOCKWISE => Some("COUNTER_CLOCKWISE"), - Self::CLOCKWISE => Some("CLOCKWISE"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for PipelineCreateFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ + (ImageCreateFlags::SUBSAMPLED_EXT.0, "SUBSAMPLED_EXT"), + (ImageCreateFlags::ALIAS.0, "ALIAS"), ( - PipelineCreateFlags::DISABLE_OPTIMIZATION.0, - "DISABLE_OPTIMIZATION", + ImageCreateFlags::SPLIT_INSTANCE_BIND_REGIONS.0, + "SPLIT_INSTANCE_BIND_REGIONS", ), ( - PipelineCreateFlags::ALLOW_DERIVATIVES.0, - "ALLOW_DERIVATIVES", + ImageCreateFlags::TYPE_2D_ARRAY_COMPATIBLE.0, + "TYPE_2D_ARRAY_COMPATIBLE", ), - (PipelineCreateFlags::DERIVATIVE.0, "DERIVATIVE"), - (PipelineCreateFlags::DEFER_COMPILE_NV.0, "DEFER_COMPILE_NV"), ( - PipelineCreateFlags::VIEW_INDEX_FROM_DEVICE_INDEX.0, - "VIEW_INDEX_FROM_DEVICE_INDEX", + ImageCreateFlags::BLOCK_TEXEL_VIEW_COMPATIBLE.0, + "BLOCK_TEXEL_VIEW_COMPATIBLE", ), - (PipelineCreateFlags::DISPATCH_BASE.0, "DISPATCH_BASE"), + (ImageCreateFlags::EXTENDED_USAGE.0, "EXTENDED_USAGE"), + (ImageCreateFlags::PROTECTED.0, "PROTECTED"), + (ImageCreateFlags::DISJOINT.0, "DISJOINT"), ]; display_flags(f, KNOWN, self.0) } } -impl fmt::Display for BufferCreateFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (BufferCreateFlags::SPARSE_BINDING.0, "SPARSE_BINDING"), - (BufferCreateFlags::SPARSE_RESIDENCY.0, "SPARSE_RESIDENCY"), - (BufferCreateFlags::SPARSE_ALIASED.0, "SPARSE_ALIASED"), - ( - BufferCreateFlags::DEVICE_ADDRESS_CAPTURE_REPLAY_EXT.0, - "DEVICE_ADDRESS_CAPTURE_REPLAY_EXT", - ), - (BufferCreateFlags::PROTECTED.0, "PROTECTED"), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for SubpassContents { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::INLINE => Some("INLINE"), - Self::SECONDARY_COMMAND_BUFFERS => Some("SECONDARY_COMMAND_BUFFERS"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for DisplayPowerStateEXT { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::OFF => Some("OFF"), - Self::SUSPEND => Some("SUSPEND"), - Self::ON => Some("ON"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for DriverIdKHR { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::AMD_PROPRIETARY => Some("AMD_PROPRIETARY"), - Self::AMD_OPEN_SOURCE => Some("AMD_OPEN_SOURCE"), - Self::MESA_RADV => Some("MESA_RADV"), - Self::NVIDIA_PROPRIETARY => Some("NVIDIA_PROPRIETARY"), - Self::INTEL_PROPRIETARY_WINDOWS => Some("INTEL_PROPRIETARY_WINDOWS"), - Self::INTEL_OPEN_SOURCE_MESA => Some("INTEL_OPEN_SOURCE_MESA"), - Self::IMAGINATION_PROPRIETARY => Some("IMAGINATION_PROPRIETARY"), - Self::QUALCOMM_PROPRIETARY => Some("QUALCOMM_PROPRIETARY"), - Self::ARM_PROPRIETARY => Some("ARM_PROPRIETARY"), - Self::GOOGLE_PASTEL => Some("GOOGLE_PASTEL"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} impl fmt::Display for ViewportCoordinateSwizzleNV { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { @@ -58844,15 +58947,11 @@ impl fmt::Display for ViewportCoordinateSwizzleNV { } } } -impl fmt::Display for BorderColor { +impl fmt::Display for PointClippingBehavior { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { - Self::FLOAT_TRANSPARENT_BLACK => Some("FLOAT_TRANSPARENT_BLACK"), - Self::INT_TRANSPARENT_BLACK => Some("INT_TRANSPARENT_BLACK"), - Self::FLOAT_OPAQUE_BLACK => Some("FLOAT_OPAQUE_BLACK"), - Self::INT_OPAQUE_BLACK => Some("INT_OPAQUE_BLACK"), - Self::FLOAT_OPAQUE_WHITE => Some("FLOAT_OPAQUE_WHITE"), - Self::INT_OPAQUE_WHITE => Some("INT_OPAQUE_WHITE"), + Self::ALL_CLIP_PLANES => Some("ALL_CLIP_PLANES"), + Self::USER_CLIP_PLANES_ONLY => Some("USER_CLIP_PLANES_ONLY"), _ => None, }; if let Some(x) = name { @@ -58862,13 +58961,18 @@ impl fmt::Display for BorderColor { } } } -impl fmt::Display for CoverageModulationModeNV { +impl fmt::Display for QueryType { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { - Self::NONE => Some("NONE"), - Self::RGB => Some("RGB"), - Self::ALPHA => Some("ALPHA"), - Self::RGBA => Some("RGBA"), + Self::OCCLUSION => Some("OCCLUSION"), + Self::PIPELINE_STATISTICS => Some("PIPELINE_STATISTICS"), + Self::TIMESTAMP => Some("TIMESTAMP"), + Self::RESERVED_8 => Some("RESERVED_8"), + Self::RESERVED_4 => Some("RESERVED_4"), + Self::TRANSFORM_FEEDBACK_STREAM_EXT => Some("TRANSFORM_FEEDBACK_STREAM_EXT"), + Self::ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV => { + Some("ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV") + } _ => None, }; if let Some(x) = name { @@ -58878,153 +58982,11 @@ impl fmt::Display for CoverageModulationModeNV { } } } -impl fmt::Display for InternalAllocationType { +impl fmt::Display for SamplerYcbcrRange { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { - Self::EXECUTABLE => Some("EXECUTABLE"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for QueryPipelineStatisticFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - ( - QueryPipelineStatisticFlags::INPUT_ASSEMBLY_VERTICES.0, - "INPUT_ASSEMBLY_VERTICES", - ), - ( - QueryPipelineStatisticFlags::INPUT_ASSEMBLY_PRIMITIVES.0, - "INPUT_ASSEMBLY_PRIMITIVES", - ), - ( - QueryPipelineStatisticFlags::VERTEX_SHADER_INVOCATIONS.0, - "VERTEX_SHADER_INVOCATIONS", - ), - ( - QueryPipelineStatisticFlags::GEOMETRY_SHADER_INVOCATIONS.0, - "GEOMETRY_SHADER_INVOCATIONS", - ), - ( - QueryPipelineStatisticFlags::GEOMETRY_SHADER_PRIMITIVES.0, - "GEOMETRY_SHADER_PRIMITIVES", - ), - ( - QueryPipelineStatisticFlags::CLIPPING_INVOCATIONS.0, - "CLIPPING_INVOCATIONS", - ), - ( - QueryPipelineStatisticFlags::CLIPPING_PRIMITIVES.0, - "CLIPPING_PRIMITIVES", - ), - ( - QueryPipelineStatisticFlags::FRAGMENT_SHADER_INVOCATIONS.0, - "FRAGMENT_SHADER_INVOCATIONS", - ), - ( - QueryPipelineStatisticFlags::TESSELLATION_CONTROL_SHADER_PATCHES.0, - "TESSELLATION_CONTROL_SHADER_PATCHES", - ), - ( - QueryPipelineStatisticFlags::TESSELLATION_EVALUATION_SHADER_INVOCATIONS.0, - "TESSELLATION_EVALUATION_SHADER_INVOCATIONS", - ), - ( - QueryPipelineStatisticFlags::COMPUTE_SHADER_INVOCATIONS.0, - "COMPUTE_SHADER_INVOCATIONS", - ), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for ColorComponentFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (ColorComponentFlags::R.0, "R"), - (ColorComponentFlags::G.0, "G"), - (ColorComponentFlags::B.0, "B"), - (ColorComponentFlags::A.0, "A"), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for RayTracingShaderGroupTypeNV { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::GENERAL => Some("GENERAL"), - Self::TRIANGLES_HIT_GROUP => Some("TRIANGLES_HIT_GROUP"), - Self::PROCEDURAL_HIT_GROUP => Some("PROCEDURAL_HIT_GROUP"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for ConservativeRasterizationModeEXT { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::DISABLED => Some("DISABLED"), - Self::OVERESTIMATE => Some("OVERESTIMATE"), - Self::UNDERESTIMATE => Some("UNDERESTIMATE"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for ExternalMemoryHandleTypeFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN : & [ ( Flags , & str ) ] = & [ ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD" ) , ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32 . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32" ) , ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT" ) , ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE" ) , ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT" ) , ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP" ) , ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE" ) , ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF" ) , ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_ANDROID . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_ANDROID" ) , ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION" ) , ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY" ) ] ; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for AttachmentStoreOp { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::STORE => Some("STORE"), - Self::DONT_CARE => Some("DONT_CARE"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for PresentModeKHR { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::IMMEDIATE => Some("IMMEDIATE"), - Self::MAILBOX => Some("MAILBOX"), - Self::FIFO => Some("FIFO"), - Self::FIFO_RELAXED => Some("FIFO_RELAXED"), - Self::SHARED_DEMAND_REFRESH => Some("SHARED_DEMAND_REFRESH"), - Self::SHARED_CONTINUOUS_REFRESH => Some("SHARED_CONTINUOUS_REFRESH"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for DisplayEventTypeEXT { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::FIRST_PIXEL_OUT => Some("FIRST_PIXEL_OUT"), + Self::ITU_FULL => Some("ITU_FULL"), + Self::ITU_NARROW => Some("ITU_NARROW"), _ => None, }; if let Some(x) = name { @@ -59668,93 +59630,49 @@ impl fmt::Display for StructureType { } } } -impl fmt::Display for RasterizationOrderAMD { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::STRICT => Some("STRICT"), - Self::RELAXED => Some("RELAXED"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for StencilOp { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::KEEP => Some("KEEP"), - Self::ZERO => Some("ZERO"), - Self::REPLACE => Some("REPLACE"), - Self::INCREMENT_AND_CLAMP => Some("INCREMENT_AND_CLAMP"), - Self::DECREMENT_AND_CLAMP => Some("DECREMENT_AND_CLAMP"), - Self::INVERT => Some("INVERT"), - Self::INCREMENT_AND_WRAP => Some("INCREMENT_AND_WRAP"), - Self::DECREMENT_AND_WRAP => Some("DECREMENT_AND_WRAP"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for QueryResultFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (QueryResultFlags::TYPE_64.0, "TYPE_64"), - (QueryResultFlags::WAIT.0, "WAIT"), - (QueryResultFlags::WITH_AVAILABILITY.0, "WITH_AVAILABILITY"), - (QueryResultFlags::PARTIAL.0, "PARTIAL"), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for ExternalFenceFeatureFlags { +impl fmt::Display for BufferUsageFlags { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { const KNOWN: &[(Flags, &str)] = &[ + (BufferUsageFlags::TRANSFER_SRC.0, "TRANSFER_SRC"), + (BufferUsageFlags::TRANSFER_DST.0, "TRANSFER_DST"), ( - ExternalFenceFeatureFlags::EXTERNAL_FENCE_FEATURE_EXPORTABLE.0, - "EXTERNAL_FENCE_FEATURE_EXPORTABLE", + BufferUsageFlags::UNIFORM_TEXEL_BUFFER.0, + "UNIFORM_TEXEL_BUFFER", ), ( - ExternalFenceFeatureFlags::EXTERNAL_FENCE_FEATURE_IMPORTABLE.0, - "EXTERNAL_FENCE_FEATURE_IMPORTABLE", + BufferUsageFlags::STORAGE_TEXEL_BUFFER.0, + "STORAGE_TEXEL_BUFFER", + ), + (BufferUsageFlags::UNIFORM_BUFFER.0, "UNIFORM_BUFFER"), + (BufferUsageFlags::STORAGE_BUFFER.0, "STORAGE_BUFFER"), + (BufferUsageFlags::INDEX_BUFFER.0, "INDEX_BUFFER"), + (BufferUsageFlags::VERTEX_BUFFER.0, "VERTEX_BUFFER"), + (BufferUsageFlags::INDIRECT_BUFFER.0, "INDIRECT_BUFFER"), + (BufferUsageFlags::RESERVED_15_KHR.0, "RESERVED_15_KHR"), + (BufferUsageFlags::RESERVED_16_KHR.0, "RESERVED_16_KHR"), + (BufferUsageFlags::RESERVED_13_KHR.0, "RESERVED_13_KHR"), + (BufferUsageFlags::RESERVED_14_KHR.0, "RESERVED_14_KHR"), + ( + BufferUsageFlags::TRANSFORM_FEEDBACK_BUFFER_EXT.0, + "TRANSFORM_FEEDBACK_BUFFER_EXT", + ), + ( + BufferUsageFlags::TRANSFORM_FEEDBACK_COUNTER_BUFFER_EXT.0, + "TRANSFORM_FEEDBACK_COUNTER_BUFFER_EXT", + ), + ( + BufferUsageFlags::CONDITIONAL_RENDERING_EXT.0, + "CONDITIONAL_RENDERING_EXT", + ), + (BufferUsageFlags::RAY_TRACING_NV.0, "RAY_TRACING_NV"), + ( + BufferUsageFlags::SHADER_DEVICE_ADDRESS_EXT.0, + "SHADER_DEVICE_ADDRESS_EXT", ), ]; display_flags(f, KNOWN, self.0) } } -impl fmt::Display for ColorSpaceKHR { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::SRGB_NONLINEAR => Some("SRGB_NONLINEAR"), - Self::DISPLAY_P3_NONLINEAR_EXT => Some("DISPLAY_P3_NONLINEAR_EXT"), - Self::EXTENDED_SRGB_LINEAR_EXT => Some("EXTENDED_SRGB_LINEAR_EXT"), - Self::DCI_P3_LINEAR_EXT => Some("DCI_P3_LINEAR_EXT"), - Self::DCI_P3_NONLINEAR_EXT => Some("DCI_P3_NONLINEAR_EXT"), - Self::BT709_LINEAR_EXT => Some("BT709_LINEAR_EXT"), - Self::BT709_NONLINEAR_EXT => Some("BT709_NONLINEAR_EXT"), - Self::BT2020_LINEAR_EXT => Some("BT2020_LINEAR_EXT"), - Self::HDR10_ST2084_EXT => Some("HDR10_ST2084_EXT"), - Self::DOLBYVISION_EXT => Some("DOLBYVISION_EXT"), - Self::HDR10_HLG_EXT => Some("HDR10_HLG_EXT"), - Self::ADOBERGB_LINEAR_EXT => Some("ADOBERGB_LINEAR_EXT"), - Self::ADOBERGB_NONLINEAR_EXT => Some("ADOBERGB_NONLINEAR_EXT"), - Self::PASS_THROUGH_EXT => Some("PASS_THROUGH_EXT"), - Self::EXTENDED_SRGB_NONLINEAR_EXT => Some("EXTENDED_SRGB_NONLINEAR_EXT"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} impl fmt::Display for ExternalFenceHandleTypeFlags { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { const KNOWN: &[(Flags, &str)] = &[ @@ -59778,11 +59696,16 @@ impl fmt::Display for ExternalFenceHandleTypeFlags { display_flags(f, KNOWN, self.0) } } -impl fmt::Display for ValidationFeatureEnableEXT { +impl fmt::Display for ImageViewType { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { - Self::GPU_ASSISTED => Some("GPU_ASSISTED"), - Self::GPU_ASSISTED_RESERVE_BINDING_SLOT => Some("GPU_ASSISTED_RESERVE_BINDING_SLOT"), + Self::TYPE_1D => Some("TYPE_1D"), + Self::TYPE_2D => Some("TYPE_2D"), + Self::TYPE_3D => Some("TYPE_3D"), + Self::CUBE => Some("CUBE"), + Self::TYPE_1D_ARRAY => Some("TYPE_1D_ARRAY"), + Self::TYPE_2D_ARRAY => Some("TYPE_2D_ARRAY"), + Self::CUBE_ARRAY => Some("CUBE_ARRAY"), _ => None, }; if let Some(x) = name { @@ -59792,13 +59715,74 @@ impl fmt::Display for ValidationFeatureEnableEXT { } } } -impl fmt::Display for RenderPassCreateFlags { +impl fmt::Display for DependencyFlags { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = - &[(RenderPassCreateFlags::RESERVED_0_KHR.0, "RESERVED_0_KHR")]; + const KNOWN: &[(Flags, &str)] = &[ + (DependencyFlags::BY_REGION.0, "BY_REGION"), + (DependencyFlags::DEVICE_GROUP.0, "DEVICE_GROUP"), + (DependencyFlags::VIEW_LOCAL.0, "VIEW_LOCAL"), + ]; display_flags(f, KNOWN, self.0) } } +impl fmt::Display for DebugReportFlagsEXT { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + (DebugReportFlagsEXT::INFORMATION.0, "INFORMATION"), + (DebugReportFlagsEXT::WARNING.0, "WARNING"), + ( + DebugReportFlagsEXT::PERFORMANCE_WARNING.0, + "PERFORMANCE_WARNING", + ), + (DebugReportFlagsEXT::ERROR.0, "ERROR"), + (DebugReportFlagsEXT::DEBUG.0, "DEBUG"), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for ValidationFeatureDisableEXT { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::ALL => Some("ALL"), + Self::SHADERS => Some("SHADERS"), + Self::THREAD_SAFETY => Some("THREAD_SAFETY"), + Self::API_PARAMETERS => Some("API_PARAMETERS"), + Self::OBJECT_LIFETIMES => Some("OBJECT_LIFETIMES"), + Self::CORE_CHECKS => Some("CORE_CHECKS"), + Self::UNIQUE_HANDLES => Some("UNIQUE_HANDLES"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for DebugUtilsMessageSeverityFlagsEXT { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + (DebugUtilsMessageSeverityFlagsEXT::VERBOSE.0, "VERBOSE"), + (DebugUtilsMessageSeverityFlagsEXT::INFO.0, "INFO"), + (DebugUtilsMessageSeverityFlagsEXT::WARNING.0, "WARNING"), + (DebugUtilsMessageSeverityFlagsEXT::ERROR.0, "ERROR"), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for PipelineCacheHeaderVersion { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::ONE => Some("ONE"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} impl fmt::Display for ShadingRatePaletteEntryNV { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { @@ -59823,391 +59807,6 @@ impl fmt::Display for ShadingRatePaletteEntryNV { } } } -impl fmt::Display for AccelerationStructureTypeNV { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::TOP_LEVEL => Some("TOP_LEVEL"), - Self::BOTTOM_LEVEL => Some("BOTTOM_LEVEL"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for SamplerReductionModeEXT { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::WEIGHTED_AVERAGE => Some("WEIGHTED_AVERAGE"), - Self::MIN => Some("MIN"), - Self::MAX => Some("MAX"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for DeviceEventTypeEXT { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::DISPLAY_HOTPLUG => Some("DISPLAY_HOTPLUG"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for SystemAllocationScope { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::COMMAND => Some("COMMAND"), - Self::OBJECT => Some("OBJECT"), - Self::CACHE => Some("CACHE"), - Self::DEVICE => Some("DEVICE"), - Self::INSTANCE => Some("INSTANCE"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for ImageUsageFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (ImageUsageFlags::TRANSFER_SRC.0, "TRANSFER_SRC"), - (ImageUsageFlags::TRANSFER_DST.0, "TRANSFER_DST"), - (ImageUsageFlags::SAMPLED.0, "SAMPLED"), - (ImageUsageFlags::STORAGE.0, "STORAGE"), - (ImageUsageFlags::COLOR_ATTACHMENT.0, "COLOR_ATTACHMENT"), - ( - ImageUsageFlags::DEPTH_STENCIL_ATTACHMENT.0, - "DEPTH_STENCIL_ATTACHMENT", - ), - ( - ImageUsageFlags::TRANSIENT_ATTACHMENT.0, - "TRANSIENT_ATTACHMENT", - ), - (ImageUsageFlags::INPUT_ATTACHMENT.0, "INPUT_ATTACHMENT"), - (ImageUsageFlags::RESERVED_13_KHR.0, "RESERVED_13_KHR"), - (ImageUsageFlags::RESERVED_14_KHR.0, "RESERVED_14_KHR"), - (ImageUsageFlags::RESERVED_15_KHR.0, "RESERVED_15_KHR"), - (ImageUsageFlags::RESERVED_10_KHR.0, "RESERVED_10_KHR"), - (ImageUsageFlags::RESERVED_11_KHR.0, "RESERVED_11_KHR"), - (ImageUsageFlags::RESERVED_12_KHR.0, "RESERVED_12_KHR"), - ( - ImageUsageFlags::SHADING_RATE_IMAGE_NV.0, - "SHADING_RATE_IMAGE_NV", - ), - ( - ImageUsageFlags::FRAGMENT_DENSITY_MAP_EXT.0, - "FRAGMENT_DENSITY_MAP_EXT", - ), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for DiscardRectangleModeEXT { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::INCLUSIVE => Some("INCLUSIVE"), - Self::EXCLUSIVE => Some("EXCLUSIVE"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for VertexInputRate { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::VERTEX => Some("VERTEX"), - Self::INSTANCE => Some("INSTANCE"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for BuildAccelerationStructureFlagsNV { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - ( - BuildAccelerationStructureFlagsNV::ALLOW_UPDATE.0, - "ALLOW_UPDATE", - ), - ( - BuildAccelerationStructureFlagsNV::ALLOW_COMPACTION.0, - "ALLOW_COMPACTION", - ), - ( - BuildAccelerationStructureFlagsNV::PREFER_FAST_TRACE.0, - "PREFER_FAST_TRACE", - ), - ( - BuildAccelerationStructureFlagsNV::PREFER_FAST_BUILD.0, - "PREFER_FAST_BUILD", - ), - ( - BuildAccelerationStructureFlagsNV::LOW_MEMORY.0, - "LOW_MEMORY", - ), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for DescriptorSetLayoutCreateFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - ( - DescriptorSetLayoutCreateFlags::PUSH_DESCRIPTOR_KHR.0, - "PUSH_DESCRIPTOR_KHR", - ), - ( - DescriptorSetLayoutCreateFlags::UPDATE_AFTER_BIND_POOL_EXT.0, - "UPDATE_AFTER_BIND_POOL_EXT", - ), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for ObjectType { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::UNKNOWN => Some("UNKNOWN"), - Self::INSTANCE => Some("INSTANCE"), - Self::PHYSICAL_DEVICE => Some("PHYSICAL_DEVICE"), - Self::DEVICE => Some("DEVICE"), - Self::QUEUE => Some("QUEUE"), - Self::SEMAPHORE => Some("SEMAPHORE"), - Self::COMMAND_BUFFER => Some("COMMAND_BUFFER"), - Self::FENCE => Some("FENCE"), - Self::DEVICE_MEMORY => Some("DEVICE_MEMORY"), - Self::BUFFER => Some("BUFFER"), - Self::IMAGE => Some("IMAGE"), - Self::EVENT => Some("EVENT"), - Self::QUERY_POOL => Some("QUERY_POOL"), - Self::BUFFER_VIEW => Some("BUFFER_VIEW"), - Self::IMAGE_VIEW => Some("IMAGE_VIEW"), - Self::SHADER_MODULE => Some("SHADER_MODULE"), - Self::PIPELINE_CACHE => Some("PIPELINE_CACHE"), - Self::PIPELINE_LAYOUT => Some("PIPELINE_LAYOUT"), - Self::RENDER_PASS => Some("RENDER_PASS"), - Self::PIPELINE => Some("PIPELINE"), - Self::DESCRIPTOR_SET_LAYOUT => Some("DESCRIPTOR_SET_LAYOUT"), - Self::SAMPLER => Some("SAMPLER"), - Self::DESCRIPTOR_POOL => Some("DESCRIPTOR_POOL"), - Self::DESCRIPTOR_SET => Some("DESCRIPTOR_SET"), - Self::FRAMEBUFFER => Some("FRAMEBUFFER"), - Self::COMMAND_POOL => Some("COMMAND_POOL"), - Self::SURFACE_KHR => Some("SURFACE_KHR"), - Self::SWAPCHAIN_KHR => Some("SWAPCHAIN_KHR"), - Self::DISPLAY_KHR => Some("DISPLAY_KHR"), - Self::DISPLAY_MODE_KHR => Some("DISPLAY_MODE_KHR"), - Self::DEBUG_REPORT_CALLBACK_EXT => Some("DEBUG_REPORT_CALLBACK_EXT"), - Self::OBJECT_TABLE_NVX => Some("OBJECT_TABLE_NVX"), - Self::INDIRECT_COMMANDS_LAYOUT_NVX => Some("INDIRECT_COMMANDS_LAYOUT_NVX"), - Self::DEBUG_UTILS_MESSENGER_EXT => Some("DEBUG_UTILS_MESSENGER_EXT"), - Self::VALIDATION_CACHE_EXT => Some("VALIDATION_CACHE_EXT"), - Self::ACCELERATION_STRUCTURE_NV => Some("ACCELERATION_STRUCTURE_NV"), - Self::SAMPLER_YCBCR_CONVERSION => Some("SAMPLER_YCBCR_CONVERSION"), - Self::DESCRIPTOR_UPDATE_TEMPLATE => Some("DESCRIPTOR_UPDATE_TEMPLATE"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for ImageViewType { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::TYPE_1D => Some("TYPE_1D"), - Self::TYPE_2D => Some("TYPE_2D"), - Self::TYPE_3D => Some("TYPE_3D"), - Self::CUBE => Some("CUBE"), - Self::TYPE_1D_ARRAY => Some("TYPE_1D_ARRAY"), - Self::TYPE_2D_ARRAY => Some("TYPE_2D_ARRAY"), - Self::CUBE_ARRAY => Some("CUBE_ARRAY"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for SharingMode { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::EXCLUSIVE => Some("EXCLUSIVE"), - Self::CONCURRENT => Some("CONCURRENT"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for CommandPoolCreateFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (CommandPoolCreateFlags::TRANSIENT.0, "TRANSIENT"), - ( - CommandPoolCreateFlags::RESET_COMMAND_BUFFER.0, - "RESET_COMMAND_BUFFER", - ), - (CommandPoolCreateFlags::PROTECTED.0, "PROTECTED"), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for PrimitiveTopology { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::POINT_LIST => Some("POINT_LIST"), - Self::LINE_LIST => Some("LINE_LIST"), - Self::LINE_STRIP => Some("LINE_STRIP"), - Self::TRIANGLE_LIST => Some("TRIANGLE_LIST"), - Self::TRIANGLE_STRIP => Some("TRIANGLE_STRIP"), - Self::TRIANGLE_FAN => Some("TRIANGLE_FAN"), - Self::LINE_LIST_WITH_ADJACENCY => Some("LINE_LIST_WITH_ADJACENCY"), - Self::LINE_STRIP_WITH_ADJACENCY => Some("LINE_STRIP_WITH_ADJACENCY"), - Self::TRIANGLE_LIST_WITH_ADJACENCY => Some("TRIANGLE_LIST_WITH_ADJACENCY"), - Self::TRIANGLE_STRIP_WITH_ADJACENCY => Some("TRIANGLE_STRIP_WITH_ADJACENCY"), - Self::PATCH_LIST => Some("PATCH_LIST"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for SampleCountFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (SampleCountFlags::TYPE_1.0, "TYPE_1"), - (SampleCountFlags::TYPE_2.0, "TYPE_2"), - (SampleCountFlags::TYPE_4.0, "TYPE_4"), - (SampleCountFlags::TYPE_8.0, "TYPE_8"), - (SampleCountFlags::TYPE_16.0, "TYPE_16"), - (SampleCountFlags::TYPE_32.0, "TYPE_32"), - (SampleCountFlags::TYPE_64.0, "TYPE_64"), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for SamplerAddressMode { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::REPEAT => Some("REPEAT"), - Self::MIRRORED_REPEAT => Some("MIRRORED_REPEAT"), - Self::CLAMP_TO_EDGE => Some("CLAMP_TO_EDGE"), - Self::CLAMP_TO_BORDER => Some("CLAMP_TO_BORDER"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for TessellationDomainOrigin { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let name = match *self { - Self::UPPER_LEFT => Some("UPPER_LEFT"), - Self::LOWER_LEFT => Some("LOWER_LEFT"), - _ => None, - }; - if let Some(x) = name { - f.write_str(x) - } else { - write!(f, "{}", self.0) - } - } -} -impl fmt::Display for AttachmentDescriptionFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[(AttachmentDescriptionFlags::MAY_ALIAS.0, "MAY_ALIAS")]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for ExternalMemoryHandleTypeFlagsNV { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - ( - ExternalMemoryHandleTypeFlagsNV::EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_NV.0, - "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_NV", - ), - ( - ExternalMemoryHandleTypeFlagsNV::EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_NV.0, - "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_NV", - ), - ( - ExternalMemoryHandleTypeFlagsNV::EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_NV.0, - "EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_NV", - ), - ( - ExternalMemoryHandleTypeFlagsNV::EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_NV.0, - "EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_NV", - ), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for DebugUtilsMessageTypeFlagsEXT { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (DebugUtilsMessageTypeFlagsEXT::GENERAL.0, "GENERAL"), - (DebugUtilsMessageTypeFlagsEXT::VALIDATION.0, "VALIDATION"), - (DebugUtilsMessageTypeFlagsEXT::PERFORMANCE.0, "PERFORMANCE"), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for ExternalMemoryFeatureFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - ( - ExternalMemoryFeatureFlags::EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY.0, - "EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY", - ), - ( - ExternalMemoryFeatureFlags::EXTERNAL_MEMORY_FEATURE_EXPORTABLE.0, - "EXTERNAL_MEMORY_FEATURE_EXPORTABLE", - ), - ( - ExternalMemoryFeatureFlags::EXTERNAL_MEMORY_FEATURE_IMPORTABLE.0, - "EXTERNAL_MEMORY_FEATURE_IMPORTABLE", - ), - ]; - display_flags(f, KNOWN, self.0) - } -} impl fmt::Display for PipelineStageFlags { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { const KNOWN: &[(Flags, &str)] = &[ @@ -60279,48 +59878,11 @@ impl fmt::Display for PipelineStageFlags { display_flags(f, KNOWN, self.0) } } -impl fmt::Display for ImageCreateFlags { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const KNOWN: &[(Flags, &str)] = &[ - (ImageCreateFlags::SPARSE_BINDING.0, "SPARSE_BINDING"), - (ImageCreateFlags::SPARSE_RESIDENCY.0, "SPARSE_RESIDENCY"), - (ImageCreateFlags::SPARSE_ALIASED.0, "SPARSE_ALIASED"), - (ImageCreateFlags::MUTABLE_FORMAT.0, "MUTABLE_FORMAT"), - (ImageCreateFlags::CUBE_COMPATIBLE.0, "CUBE_COMPATIBLE"), - (ImageCreateFlags::CORNER_SAMPLED_NV.0, "CORNER_SAMPLED_NV"), - ( - ImageCreateFlags::SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_EXT.0, - "SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_EXT", - ), - (ImageCreateFlags::SUBSAMPLED_EXT.0, "SUBSAMPLED_EXT"), - (ImageCreateFlags::ALIAS.0, "ALIAS"), - ( - ImageCreateFlags::SPLIT_INSTANCE_BIND_REGIONS.0, - "SPLIT_INSTANCE_BIND_REGIONS", - ), - ( - ImageCreateFlags::TYPE_2D_ARRAY_COMPATIBLE.0, - "TYPE_2D_ARRAY_COMPATIBLE", - ), - ( - ImageCreateFlags::BLOCK_TEXEL_VIEW_COMPATIBLE.0, - "BLOCK_TEXEL_VIEW_COMPATIBLE", - ), - (ImageCreateFlags::EXTENDED_USAGE.0, "EXTENDED_USAGE"), - (ImageCreateFlags::PROTECTED.0, "PROTECTED"), - (ImageCreateFlags::DISJOINT.0, "DISJOINT"), - ]; - display_flags(f, KNOWN, self.0) - } -} -impl fmt::Display for PhysicalDeviceType { +impl fmt::Display for CopyAccelerationStructureModeNV { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let name = match *self { - Self::OTHER => Some("OTHER"), - Self::INTEGRATED_GPU => Some("INTEGRATED_GPU"), - Self::DISCRETE_GPU => Some("DISCRETE_GPU"), - Self::VIRTUAL_GPU => Some("VIRTUAL_GPU"), - Self::CPU => Some("CPU"), + Self::CLONE => Some("CLONE"), + Self::COMPACT => Some("COMPACT"), _ => None, }; if let Some(x) = name { @@ -60330,20 +59892,624 @@ impl fmt::Display for PhysicalDeviceType { } } } -impl fmt::Display for QueueFlags { +impl fmt::Display for SurfaceCounterFlagsEXT { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[(SurfaceCounterFlagsEXT::VBLANK.0, "VBLANK")]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for AttachmentDescriptionFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[(AttachmentDescriptionFlags::MAY_ALIAS.0, "MAY_ALIAS")]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for BuildAccelerationStructureFlagsNV { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { const KNOWN: &[(Flags, &str)] = &[ - (QueueFlags::GRAPHICS.0, "GRAPHICS"), - (QueueFlags::COMPUTE.0, "COMPUTE"), - (QueueFlags::TRANSFER.0, "TRANSFER"), - (QueueFlags::SPARSE_BINDING.0, "SPARSE_BINDING"), - (QueueFlags::RESERVED_6_KHR.0, "RESERVED_6_KHR"), - (QueueFlags::RESERVED_5_KHR.0, "RESERVED_5_KHR"), - (QueueFlags::PROTECTED.0, "PROTECTED"), + ( + BuildAccelerationStructureFlagsNV::ALLOW_UPDATE.0, + "ALLOW_UPDATE", + ), + ( + BuildAccelerationStructureFlagsNV::ALLOW_COMPACTION.0, + "ALLOW_COMPACTION", + ), + ( + BuildAccelerationStructureFlagsNV::PREFER_FAST_TRACE.0, + "PREFER_FAST_TRACE", + ), + ( + BuildAccelerationStructureFlagsNV::PREFER_FAST_BUILD.0, + "PREFER_FAST_BUILD", + ), + ( + BuildAccelerationStructureFlagsNV::LOW_MEMORY.0, + "LOW_MEMORY", + ), ]; display_flags(f, KNOWN, self.0) } } +impl fmt::Display for ExternalSemaphoreFeatureFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + ( + ExternalSemaphoreFeatureFlags::EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE.0, + "EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE", + ), + ( + ExternalSemaphoreFeatureFlags::EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE.0, + "EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE", + ), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for BufferCreateFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + (BufferCreateFlags::SPARSE_BINDING.0, "SPARSE_BINDING"), + (BufferCreateFlags::SPARSE_RESIDENCY.0, "SPARSE_RESIDENCY"), + (BufferCreateFlags::SPARSE_ALIASED.0, "SPARSE_ALIASED"), + ( + BufferCreateFlags::DEVICE_ADDRESS_CAPTURE_REPLAY_EXT.0, + "DEVICE_ADDRESS_CAPTURE_REPLAY_EXT", + ), + (BufferCreateFlags::PROTECTED.0, "PROTECTED"), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for ValidationCheckEXT { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::ALL => Some("ALL"), + Self::SHADERS => Some("SHADERS"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for CullModeFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + (CullModeFlags::NONE.0, "NONE"), + (CullModeFlags::FRONT.0, "FRONT"), + (CullModeFlags::BACK.0, "BACK"), + (CullModeFlags::FRONT_AND_BACK.0, "FRONT_AND_BACK"), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for IndirectCommandsLayoutUsageFlagsNVX { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + ( + IndirectCommandsLayoutUsageFlagsNVX::UNORDERED_SEQUENCES.0, + "UNORDERED_SEQUENCES", + ), + ( + IndirectCommandsLayoutUsageFlagsNVX::SPARSE_SEQUENCES.0, + "SPARSE_SEQUENCES", + ), + ( + IndirectCommandsLayoutUsageFlagsNVX::EMPTY_EXECUTIONS.0, + "EMPTY_EXECUTIONS", + ), + ( + IndirectCommandsLayoutUsageFlagsNVX::INDEXED_SEQUENCES.0, + "INDEXED_SEQUENCES", + ), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for QueryPipelineStatisticFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + ( + QueryPipelineStatisticFlags::INPUT_ASSEMBLY_VERTICES.0, + "INPUT_ASSEMBLY_VERTICES", + ), + ( + QueryPipelineStatisticFlags::INPUT_ASSEMBLY_PRIMITIVES.0, + "INPUT_ASSEMBLY_PRIMITIVES", + ), + ( + QueryPipelineStatisticFlags::VERTEX_SHADER_INVOCATIONS.0, + "VERTEX_SHADER_INVOCATIONS", + ), + ( + QueryPipelineStatisticFlags::GEOMETRY_SHADER_INVOCATIONS.0, + "GEOMETRY_SHADER_INVOCATIONS", + ), + ( + QueryPipelineStatisticFlags::GEOMETRY_SHADER_PRIMITIVES.0, + "GEOMETRY_SHADER_PRIMITIVES", + ), + ( + QueryPipelineStatisticFlags::CLIPPING_INVOCATIONS.0, + "CLIPPING_INVOCATIONS", + ), + ( + QueryPipelineStatisticFlags::CLIPPING_PRIMITIVES.0, + "CLIPPING_PRIMITIVES", + ), + ( + QueryPipelineStatisticFlags::FRAGMENT_SHADER_INVOCATIONS.0, + "FRAGMENT_SHADER_INVOCATIONS", + ), + ( + QueryPipelineStatisticFlags::TESSELLATION_CONTROL_SHADER_PATCHES.0, + "TESSELLATION_CONTROL_SHADER_PATCHES", + ), + ( + QueryPipelineStatisticFlags::TESSELLATION_EVALUATION_SHADER_INVOCATIONS.0, + "TESSELLATION_EVALUATION_SHADER_INVOCATIONS", + ), + ( + QueryPipelineStatisticFlags::COMPUTE_SHADER_INVOCATIONS.0, + "COMPUTE_SHADER_INVOCATIONS", + ), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for SubpassDescriptionFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + ( + SubpassDescriptionFlags::PER_VIEW_ATTRIBUTES_NVX.0, + "PER_VIEW_ATTRIBUTES_NVX", + ), + ( + SubpassDescriptionFlags::PER_VIEW_POSITION_X_ONLY_NVX.0, + "PER_VIEW_POSITION_X_ONLY_NVX", + ), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for VendorId { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::VIV => Some("VIV"), + Self::VSI => Some("VSI"), + Self::KAZAN => Some("KAZAN"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for DisplayPowerStateEXT { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::OFF => Some("OFF"), + Self::SUSPEND => Some("SUSPEND"), + Self::ON => Some("ON"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for MemoryOverallocationBehaviorAMD { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::DEFAULT => Some("DEFAULT"), + Self::ALLOWED => Some("ALLOWED"), + Self::DISALLOWED => Some("DISALLOWED"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for PipelineCreateFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + ( + PipelineCreateFlags::DISABLE_OPTIMIZATION.0, + "DISABLE_OPTIMIZATION", + ), + ( + PipelineCreateFlags::ALLOW_DERIVATIVES.0, + "ALLOW_DERIVATIVES", + ), + (PipelineCreateFlags::DERIVATIVE.0, "DERIVATIVE"), + (PipelineCreateFlags::DEFER_COMPILE_NV.0, "DEFER_COMPILE_NV"), + ( + PipelineCreateFlags::VIEW_INDEX_FROM_DEVICE_INDEX.0, + "VIEW_INDEX_FROM_DEVICE_INDEX", + ), + (PipelineCreateFlags::DISPATCH_BASE.0, "DISPATCH_BASE"), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for CompositeAlphaFlagsKHR { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + (CompositeAlphaFlagsKHR::OPAQUE.0, "OPAQUE"), + (CompositeAlphaFlagsKHR::PRE_MULTIPLIED.0, "PRE_MULTIPLIED"), + (CompositeAlphaFlagsKHR::POST_MULTIPLIED.0, "POST_MULTIPLIED"), + (CompositeAlphaFlagsKHR::INHERIT.0, "INHERIT"), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for SubpassContents { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::INLINE => Some("INLINE"), + Self::SECONDARY_COMMAND_BUFFERS => Some("SECONDARY_COMMAND_BUFFERS"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for Filter { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::NEAREST => Some("NEAREST"), + Self::LINEAR => Some("LINEAR"), + Self::CUBIC_IMG => Some("CUBIC_IMG"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for DeviceEventTypeEXT { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::DISPLAY_HOTPLUG => Some("DISPLAY_HOTPLUG"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for SystemAllocationScope { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::COMMAND => Some("COMMAND"), + Self::OBJECT => Some("OBJECT"), + Self::CACHE => Some("CACHE"), + Self::DEVICE => Some("DEVICE"), + Self::INSTANCE => Some("INSTANCE"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for ExternalMemoryHandleTypeFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN : & [ ( Flags , & str ) ] = & [ ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD" ) , ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32 . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32" ) , ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT" ) , ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE" ) , ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT" ) , ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP" ) , ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE" ) , ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF" ) , ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_ANDROID . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_ANDROID" ) , ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION" ) , ( ExternalMemoryHandleTypeFlags :: EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY . 0 , "EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY" ) ] ; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for DeviceGroupPresentModeFlagsKHR { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + (DeviceGroupPresentModeFlagsKHR::LOCAL.0, "LOCAL"), + (DeviceGroupPresentModeFlagsKHR::REMOTE.0, "REMOTE"), + (DeviceGroupPresentModeFlagsKHR::SUM.0, "SUM"), + ( + DeviceGroupPresentModeFlagsKHR::LOCAL_MULTI_DEVICE.0, + "LOCAL_MULTI_DEVICE", + ), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for SamplerYcbcrModelConversion { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::RGB_IDENTITY => Some("RGB_IDENTITY"), + Self::YCBCR_IDENTITY => Some("YCBCR_IDENTITY"), + Self::YCBCR_709 => Some("YCBCR_709"), + Self::YCBCR_601 => Some("YCBCR_601"), + Self::YCBCR_2020 => Some("YCBCR_2020"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for StencilFaceFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + (StencilFaceFlags::FRONT.0, "FRONT"), + (StencilFaceFlags::BACK.0, "BACK"), + ( + StencilFaceFlags::STENCIL_FRONT_AND_BACK.0, + "STENCIL_FRONT_AND_BACK", + ), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for GeometryTypeNV { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::TRIANGLES => Some("TRIANGLES"), + Self::AABBS => Some("AABBS"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for SamplerReductionModeEXT { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::WEIGHTED_AVERAGE => Some("WEIGHTED_AVERAGE"), + Self::MIN => Some("MIN"), + Self::MAX => Some("MAX"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for DescriptorSetLayoutCreateFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + ( + DescriptorSetLayoutCreateFlags::PUSH_DESCRIPTOR_KHR.0, + "PUSH_DESCRIPTOR_KHR", + ), + ( + DescriptorSetLayoutCreateFlags::UPDATE_AFTER_BIND_POOL_EXT.0, + "UPDATE_AFTER_BIND_POOL_EXT", + ), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for CommandBufferUsageFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + ( + CommandBufferUsageFlags::ONE_TIME_SUBMIT.0, + "ONE_TIME_SUBMIT", + ), + ( + CommandBufferUsageFlags::RENDER_PASS_CONTINUE.0, + "RENDER_PASS_CONTINUE", + ), + ( + CommandBufferUsageFlags::SIMULTANEOUS_USE.0, + "SIMULTANEOUS_USE", + ), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for ShaderStageFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + (ShaderStageFlags::VERTEX.0, "VERTEX"), + ( + ShaderStageFlags::TESSELLATION_CONTROL.0, + "TESSELLATION_CONTROL", + ), + ( + ShaderStageFlags::TESSELLATION_EVALUATION.0, + "TESSELLATION_EVALUATION", + ), + (ShaderStageFlags::GEOMETRY.0, "GEOMETRY"), + (ShaderStageFlags::FRAGMENT.0, "FRAGMENT"), + (ShaderStageFlags::COMPUTE.0, "COMPUTE"), + (ShaderStageFlags::ALL_GRAPHICS.0, "ALL_GRAPHICS"), + (ShaderStageFlags::ALL.0, "ALL"), + (ShaderStageFlags::RAYGEN_NV.0, "RAYGEN_NV"), + (ShaderStageFlags::ANY_HIT_NV.0, "ANY_HIT_NV"), + (ShaderStageFlags::CLOSEST_HIT_NV.0, "CLOSEST_HIT_NV"), + (ShaderStageFlags::MISS_NV.0, "MISS_NV"), + (ShaderStageFlags::INTERSECTION_NV.0, "INTERSECTION_NV"), + (ShaderStageFlags::CALLABLE_NV.0, "CALLABLE_NV"), + (ShaderStageFlags::TASK_NV.0, "TASK_NV"), + (ShaderStageFlags::MESH_NV.0, "MESH_NV"), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for FormatFeatureFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN : & [ ( Flags , & str ) ] = & [ ( FormatFeatureFlags :: SAMPLED_IMAGE . 0 , "SAMPLED_IMAGE" ) , ( FormatFeatureFlags :: STORAGE_IMAGE . 0 , "STORAGE_IMAGE" ) , ( FormatFeatureFlags :: STORAGE_IMAGE_ATOMIC . 0 , "STORAGE_IMAGE_ATOMIC" ) , ( FormatFeatureFlags :: UNIFORM_TEXEL_BUFFER . 0 , "UNIFORM_TEXEL_BUFFER" ) , ( FormatFeatureFlags :: STORAGE_TEXEL_BUFFER . 0 , "STORAGE_TEXEL_BUFFER" ) , ( FormatFeatureFlags :: STORAGE_TEXEL_BUFFER_ATOMIC . 0 , "STORAGE_TEXEL_BUFFER_ATOMIC" ) , ( FormatFeatureFlags :: VERTEX_BUFFER . 0 , "VERTEX_BUFFER" ) , ( FormatFeatureFlags :: COLOR_ATTACHMENT . 0 , "COLOR_ATTACHMENT" ) , ( FormatFeatureFlags :: COLOR_ATTACHMENT_BLEND . 0 , "COLOR_ATTACHMENT_BLEND" ) , ( FormatFeatureFlags :: DEPTH_STENCIL_ATTACHMENT . 0 , "DEPTH_STENCIL_ATTACHMENT" ) , ( FormatFeatureFlags :: BLIT_SRC . 0 , "BLIT_SRC" ) , ( FormatFeatureFlags :: BLIT_DST . 0 , "BLIT_DST" ) , ( FormatFeatureFlags :: SAMPLED_IMAGE_FILTER_LINEAR . 0 , "SAMPLED_IMAGE_FILTER_LINEAR" ) , ( FormatFeatureFlags :: SAMPLED_IMAGE_FILTER_CUBIC_IMG . 0 , "SAMPLED_IMAGE_FILTER_CUBIC_IMG" ) , ( FormatFeatureFlags :: RESERVED_27_KHR . 0 , "RESERVED_27_KHR" ) , ( FormatFeatureFlags :: RESERVED_28_KHR . 0 , "RESERVED_28_KHR" ) , ( FormatFeatureFlags :: RESERVED_25_KHR . 0 , "RESERVED_25_KHR" ) , ( FormatFeatureFlags :: RESERVED_26_KHR . 0 , "RESERVED_26_KHR" ) , ( FormatFeatureFlags :: SAMPLED_IMAGE_FILTER_MINMAX_EXT . 0 , "SAMPLED_IMAGE_FILTER_MINMAX_EXT" ) , ( FormatFeatureFlags :: FRAGMENT_DENSITY_MAP_EXT . 0 , "FRAGMENT_DENSITY_MAP_EXT" ) , ( FormatFeatureFlags :: TRANSFER_SRC . 0 , "TRANSFER_SRC" ) , ( FormatFeatureFlags :: TRANSFER_DST . 0 , "TRANSFER_DST" ) , ( FormatFeatureFlags :: MIDPOINT_CHROMA_SAMPLES . 0 , "MIDPOINT_CHROMA_SAMPLES" ) , ( FormatFeatureFlags :: SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER . 0 , "SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER" ) , ( FormatFeatureFlags :: SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER . 0 , "SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER" ) , ( FormatFeatureFlags :: SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT . 0 , "SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT" ) , ( FormatFeatureFlags :: SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE . 0 , "SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE" ) , ( FormatFeatureFlags :: DISJOINT . 0 , "DISJOINT" ) , ( FormatFeatureFlags :: COSITED_CHROMA_SAMPLES . 0 , "COSITED_CHROMA_SAMPLES" ) ] ; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for ImageUsageFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + (ImageUsageFlags::TRANSFER_SRC.0, "TRANSFER_SRC"), + (ImageUsageFlags::TRANSFER_DST.0, "TRANSFER_DST"), + (ImageUsageFlags::SAMPLED.0, "SAMPLED"), + (ImageUsageFlags::STORAGE.0, "STORAGE"), + (ImageUsageFlags::COLOR_ATTACHMENT.0, "COLOR_ATTACHMENT"), + ( + ImageUsageFlags::DEPTH_STENCIL_ATTACHMENT.0, + "DEPTH_STENCIL_ATTACHMENT", + ), + ( + ImageUsageFlags::TRANSIENT_ATTACHMENT.0, + "TRANSIENT_ATTACHMENT", + ), + (ImageUsageFlags::INPUT_ATTACHMENT.0, "INPUT_ATTACHMENT"), + (ImageUsageFlags::RESERVED_13_KHR.0, "RESERVED_13_KHR"), + (ImageUsageFlags::RESERVED_14_KHR.0, "RESERVED_14_KHR"), + (ImageUsageFlags::RESERVED_15_KHR.0, "RESERVED_15_KHR"), + (ImageUsageFlags::RESERVED_10_KHR.0, "RESERVED_10_KHR"), + (ImageUsageFlags::RESERVED_11_KHR.0, "RESERVED_11_KHR"), + (ImageUsageFlags::RESERVED_12_KHR.0, "RESERVED_12_KHR"), + ( + ImageUsageFlags::SHADING_RATE_IMAGE_NV.0, + "SHADING_RATE_IMAGE_NV", + ), + ( + ImageUsageFlags::FRAGMENT_DENSITY_MAP_EXT.0, + "FRAGMENT_DENSITY_MAP_EXT", + ), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for MemoryHeapFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + (MemoryHeapFlags::DEVICE_LOCAL.0, "DEVICE_LOCAL"), + (MemoryHeapFlags::MULTI_INSTANCE.0, "MULTI_INSTANCE"), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for BorderColor { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::FLOAT_TRANSPARENT_BLACK => Some("FLOAT_TRANSPARENT_BLACK"), + Self::INT_TRANSPARENT_BLACK => Some("INT_TRANSPARENT_BLACK"), + Self::FLOAT_OPAQUE_BLACK => Some("FLOAT_OPAQUE_BLACK"), + Self::INT_OPAQUE_BLACK => Some("INT_OPAQUE_BLACK"), + Self::FLOAT_OPAQUE_WHITE => Some("FLOAT_OPAQUE_WHITE"), + Self::INT_OPAQUE_WHITE => Some("INT_OPAQUE_WHITE"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for CommandPoolCreateFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + (CommandPoolCreateFlags::TRANSIENT.0, "TRANSIENT"), + ( + CommandPoolCreateFlags::RESET_COMMAND_BUFFER.0, + "RESET_COMMAND_BUFFER", + ), + (CommandPoolCreateFlags::PROTECTED.0, "PROTECTED"), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for SharingMode { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::EXCLUSIVE => Some("EXCLUSIVE"), + Self::CONCURRENT => Some("CONCURRENT"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} +impl fmt::Display for DescriptorPoolCreateFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + ( + DescriptorPoolCreateFlags::FREE_DESCRIPTOR_SET.0, + "FREE_DESCRIPTOR_SET", + ), + ( + DescriptorPoolCreateFlags::UPDATE_AFTER_BIND_EXT.0, + "UPDATE_AFTER_BIND_EXT", + ), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for GeometryInstanceFlagsNV { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + ( + GeometryInstanceFlagsNV::TRIANGLE_CULL_DISABLE.0, + "TRIANGLE_CULL_DISABLE", + ), + ( + GeometryInstanceFlagsNV::TRIANGLE_FRONT_COUNTERCLOCKWISE.0, + "TRIANGLE_FRONT_COUNTERCLOCKWISE", + ), + (GeometryInstanceFlagsNV::FORCE_OPAQUE.0, "FORCE_OPAQUE"), + ( + GeometryInstanceFlagsNV::FORCE_NO_OPAQUE.0, + "FORCE_NO_OPAQUE", + ), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for SamplerCreateFlags { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + const KNOWN: &[(Flags, &str)] = &[ + (SamplerCreateFlags::SUBSAMPLED_EXT.0, "SUBSAMPLED_EXT"), + ( + SamplerCreateFlags::SUBSAMPLED_COARSE_RECONSTRUCTION_EXT.0, + "SUBSAMPLED_COARSE_RECONSTRUCTION_EXT", + ), + ]; + display_flags(f, KNOWN, self.0) + } +} +impl fmt::Display for ChromaLocation { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let name = match *self { + Self::COSITED_EVEN => Some("COSITED_EVEN"), + Self::MIDPOINT => Some("MIDPOINT"), + _ => None, + }; + if let Some(x) = name { + f.write_str(x) + } else { + write!(f, "{}", self.0) + } + } +} pub type DescriptorUpdateTemplateCreateFlagsKHR = DescriptorUpdateTemplateCreateFlags; pub type PeerMemoryFeatureFlagsKHR = PeerMemoryFeatureFlags; pub type MemoryAllocateFlagsKHR = MemoryAllocateFlags; @@ -60434,22 +60600,6 @@ mod tests { use vk; #[test] fn test_ptr_chains() { - unsafe fn ptr_chain_iter( - ptr: &mut T, - ) -> impl Iterator { - use std::ptr::null_mut; - let ptr: *mut vk::BaseOutStructure = ptr as *mut T as _; - let ptr: *mut vk::BaseOutStructure = (*ptr).p_next; - (0..).scan(ptr, |p_ptr, _| { - if *p_ptr == null_mut() { - return None; - } - let n_ptr = (**p_ptr).p_next as *mut vk::BaseOutStructure; - let old = *p_ptr; - *p_ptr = n_ptr; - Some(old) - }) - } let mut variable_pointers = vk::PhysicalDeviceVariablePointerFeatures::builder(); let mut corner = vk::PhysicalDeviceCornerSampledImageFeaturesNV::builder(); let chain = vec![ @@ -60460,7 +60610,8 @@ mod tests { .push_next(&mut corner) .push_next(&mut variable_pointers); let chain2: Vec = unsafe { - ptr_chain_iter(&mut device_create_info) + vk::ptr_chain_iter(&mut device_create_info) + .skip(1) .map(|ptr| ptr as usize) .collect() }; diff --git a/generator/src/lib.rs b/generator/src/lib.rs index a4aa7c2..4078516 100644 --- a/generator/src/lib.rs +++ b/generator/src/lib.rs @@ -92,22 +92,6 @@ pub fn define_test() -> Tokens { use vk; #[test] fn test_ptr_chains() { - unsafe fn ptr_chain_iter( - ptr: &mut T, - ) -> impl Iterator { - use std::ptr::null_mut; - let ptr: *mut vk::BaseOutStructure = ptr as *mut T as _; - let ptr: *mut vk::BaseOutStructure = (*ptr).p_next; - (0..).scan(ptr, |p_ptr, _| { - if *p_ptr == null_mut() { - return None; - } - let n_ptr = (**p_ptr).p_next as *mut vk::BaseOutStructure; - let old = *p_ptr; - *p_ptr = n_ptr; - Some(old) - }) - } let mut variable_pointers = vk::PhysicalDeviceVariablePointerFeatures::builder(); let mut corner = vk::PhysicalDeviceCornerSampledImageFeaturesNV::builder(); @@ -119,7 +103,7 @@ pub fn define_test() -> Tokens { .push_next(&mut corner) .push_next(&mut variable_pointers); let chain2: Vec = unsafe { - ptr_chain_iter(&mut device_create_info) + vk::ptr_chain_iter(&mut device_create_info).skip(1) .map(|ptr| ptr as usize) .collect() }; @@ -1649,7 +1633,17 @@ pub fn derive_setters( pub fn push_next(mut self, next: &'a mut T) -> #name_builder<'a> { unsafe{ let next_ptr = next as *mut T as *mut BaseOutStructure; - (*next_ptr).p_next = self.inner.p_next as _; + // `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: + // + // next = A -> B + // Before: `Root -> C -> D -> E` + // After: `Root -> A -> B -> C -> D -> E` + // ^^^^^^ + // next chain + let last_next = ptr_chain_iter(next).last().unwrap(); + (*last_next).p_next = self.inner.p_next as _; self.inner.p_next = next_ptr as _; } self @@ -1867,11 +1861,9 @@ pub fn generate_definition( ) -> Option { match *definition { vkxml::DefinitionsElement::Typedef(ref typedef) => Some(generate_typedef(typedef)), - vkxml::DefinitionsElement::Struct(ref _struct) => Some(generate_struct( - _struct, - root_structs, - union_types, - )), + vkxml::DefinitionsElement::Struct(ref _struct) => { + Some(generate_struct(_struct, root_structs, union_types)) + } vkxml::DefinitionsElement::Bitmask(ref mask) => generate_bitmask(mask, bitflags_cache), vkxml::DefinitionsElement::Handle(ref handle) => generate_handle(handle), vkxml::DefinitionsElement::FuncPtr(ref fp) => Some(generate_funcptr(fp)), @@ -2212,14 +2204,7 @@ pub fn write_source_code(path: &Path) { let root_names = root_struct_names(&definitions); let definition_code: Vec<_> = definitions .into_iter() - .filter_map(|def| { - generate_definition( - def, - &union_types, - &root_names, - &mut bitflags_cache, - ) - }) + .filter_map(|def| generate_definition(def, &union_types, &root_names, &mut bitflags_cache)) .collect(); let feature_code: Vec<_> = features @@ -2241,6 +2226,23 @@ pub fn write_source_code(path: &Path) { let source_code = quote! { use std::fmt; use std::os::raw::*; + // Iterates through the pointer chain. Includes the item that is passed into the function. + // Stops at the last `BaseOutStructure` that has a null `p_next` field. + pub(crate) unsafe fn ptr_chain_iter( + ptr: &mut T, + ) -> impl Iterator { + use std::ptr::null_mut; + let ptr: *mut BaseOutStructure = ptr as *mut T as _; + (0..).scan(ptr, |p_ptr, _| { + if *p_ptr == null_mut() { + return None; + } + let n_ptr = (**p_ptr).p_next as *mut BaseOutStructure; + let old = *p_ptr; + *p_ptr = n_ptr; + Some(old) + }) + } pub trait Handle { const TYPE: ObjectType;