From dced8855931c4ba1ac7a894b6bfcf06cf0edbcd9 Mon Sep 17 00:00:00 2001 From: Marijn Suijten Date: Fri, 3 May 2024 00:36:48 +0200 Subject: [PATCH] Use Rust-1.78 `#[diagnostic::on_unimplemented]` to clarify `push_next` trait When a user passes an invalid type into `push_next()`, [since Rust 1.78] we can now customize the diagnostics error to more clearly decsribe what and why they are not allowed to pass a certain type into this structure instead of having to refer to the trait definition (which contains no docs either). [since Rust 1.78]: https://blog.rust-lang.org/2024/05/02/Rust-1.78.0.html#diagnostic-attributes --- ash/src/vk/definitions.rs | 540 ++++++++++++++++++++++++++++++++++++++ generator/src/lib.rs | 12 +- 2 files changed, 551 insertions(+), 1 deletion(-) diff --git a/ash/src/vk/definitions.rs b/ash/src/vk/definitions.rs index 451f6b06e..82a2abf0e 100644 --- a/ash/src/vk/definitions.rs +++ b/ash/src/vk/definitions.rs @@ -1263,6 +1263,11 @@ impl ::core::default::Default for DeviceQueueCreateInfo<'_> { unsafe impl<'a> TaggedStructure for DeviceQueueCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEVICE_QUEUE_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::DeviceQueueCreateInfo`", + label = "`{Self}` does not extend `vk::DeviceQueueCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsDeviceQueueCreateInfo {} impl<'a> DeviceQueueCreateInfo<'a> { #[inline] @@ -1340,6 +1345,11 @@ impl ::core::default::Default for DeviceCreateInfo<'_> { unsafe impl<'a> TaggedStructure for DeviceCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEVICE_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::DeviceCreateInfo`", + label = "`{Self}` does not extend `vk::DeviceCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsDeviceCreateInfo {} impl<'a> DeviceCreateInfo<'a> { #[inline] @@ -1427,6 +1437,11 @@ impl ::core::default::Default for InstanceCreateInfo<'_> { unsafe impl<'a> TaggedStructure for InstanceCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::INSTANCE_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::InstanceCreateInfo`", + label = "`{Self}` does not extend `vk::InstanceCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsInstanceCreateInfo {} impl<'a> InstanceCreateInfo<'a> { #[inline] @@ -1585,6 +1600,11 @@ impl ::core::default::Default for MemoryAllocateInfo<'_> { unsafe impl<'a> TaggedStructure for MemoryAllocateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::MEMORY_ALLOCATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::MemoryAllocateInfo`", + label = "`{Self}` does not extend `vk::MemoryAllocateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsMemoryAllocateInfo {} impl<'a> MemoryAllocateInfo<'a> { #[inline] @@ -1956,6 +1976,11 @@ impl ::core::default::Default for WriteDescriptorSet<'_> { unsafe impl<'a> TaggedStructure for WriteDescriptorSet<'a> { const STRUCTURE_TYPE: StructureType = StructureType::WRITE_DESCRIPTOR_SET; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::WriteDescriptorSet`", + label = "`{Self}` does not extend `vk::WriteDescriptorSet`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsWriteDescriptorSet {} impl<'a> WriteDescriptorSet<'a> { #[inline] @@ -2167,6 +2192,11 @@ impl ::core::default::Default for BufferCreateInfo<'_> { unsafe impl<'a> TaggedStructure for BufferCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BUFFER_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::BufferCreateInfo`", + label = "`{Self}` does not extend `vk::BufferCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsBufferCreateInfo {} impl<'a> BufferCreateInfo<'a> { #[inline] @@ -2245,6 +2275,11 @@ impl ::core::default::Default for BufferViewCreateInfo<'_> { unsafe impl<'a> TaggedStructure for BufferViewCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BUFFER_VIEW_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::BufferViewCreateInfo`", + label = "`{Self}` does not extend `vk::BufferViewCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsBufferViewCreateInfo {} impl<'a> BufferViewCreateInfo<'a> { #[inline] @@ -2466,6 +2501,11 @@ impl ::core::default::Default for BufferMemoryBarrier<'_> { unsafe impl<'a> TaggedStructure for BufferMemoryBarrier<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BUFFER_MEMORY_BARRIER; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::BufferMemoryBarrier`", + label = "`{Self}` does not extend `vk::BufferMemoryBarrier`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsBufferMemoryBarrier {} impl<'a> BufferMemoryBarrier<'a> { #[inline] @@ -2559,6 +2599,11 @@ impl ::core::default::Default for ImageMemoryBarrier<'_> { unsafe impl<'a> TaggedStructure for ImageMemoryBarrier<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_MEMORY_BARRIER; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::ImageMemoryBarrier`", + label = "`{Self}` does not extend `vk::ImageMemoryBarrier`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsImageMemoryBarrier {} impl<'a> ImageMemoryBarrier<'a> { #[inline] @@ -2667,6 +2712,11 @@ impl ::core::default::Default for ImageCreateInfo<'_> { unsafe impl<'a> TaggedStructure for ImageCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::ImageCreateInfo`", + label = "`{Self}` does not extend `vk::ImageCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsImageCreateInfo {} impl<'a> ImageCreateInfo<'a> { #[inline] @@ -2821,6 +2871,11 @@ impl ::core::default::Default for ImageViewCreateInfo<'_> { unsafe impl<'a> TaggedStructure for ImageViewCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_VIEW_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::ImageViewCreateInfo`", + label = "`{Self}` does not extend `vk::ImageViewCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsImageViewCreateInfo {} impl<'a> ImageViewCreateInfo<'a> { #[inline] @@ -3135,6 +3190,11 @@ impl ::core::default::Default for BindSparseInfo<'_> { unsafe impl<'a> TaggedStructure for BindSparseInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BIND_SPARSE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::BindSparseInfo`", + label = "`{Self}` does not extend `vk::BindSparseInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsBindSparseInfo {} impl<'a> BindSparseInfo<'a> { #[inline] @@ -3456,6 +3516,11 @@ unsafe impl<'a> TaggedStructure for ShaderModuleCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SHADER_MODULE_CREATE_INFO; } unsafe impl ExtendsPipelineShaderStageCreateInfo for ShaderModuleCreateInfo<'_> {} +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::ShaderModuleCreateInfo`", + label = "`{Self}` does not extend `vk::ShaderModuleCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsShaderModuleCreateInfo {} impl<'a> ShaderModuleCreateInfo<'a> { #[inline] @@ -3571,6 +3636,11 @@ impl ::core::default::Default for DescriptorSetLayoutCreateInfo<'_> { unsafe impl<'a> TaggedStructure for DescriptorSetLayoutCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DESCRIPTOR_SET_LAYOUT_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::DescriptorSetLayoutCreateInfo`", + label = "`{Self}` does not extend `vk::DescriptorSetLayoutCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsDescriptorSetLayoutCreateInfo {} impl<'a> DescriptorSetLayoutCreateInfo<'a> { #[inline] @@ -3656,6 +3726,11 @@ impl ::core::default::Default for DescriptorPoolCreateInfo<'_> { unsafe impl<'a> TaggedStructure for DescriptorPoolCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DESCRIPTOR_POOL_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::DescriptorPoolCreateInfo`", + label = "`{Self}` does not extend `vk::DescriptorPoolCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsDescriptorPoolCreateInfo {} impl<'a> DescriptorPoolCreateInfo<'a> { #[inline] @@ -3723,6 +3798,11 @@ impl ::core::default::Default for DescriptorSetAllocateInfo<'_> { unsafe impl<'a> TaggedStructure for DescriptorSetAllocateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DESCRIPTOR_SET_ALLOCATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::DescriptorSetAllocateInfo`", + label = "`{Self}` does not extend `vk::DescriptorSetAllocateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsDescriptorSetAllocateInfo {} impl<'a> DescriptorSetAllocateInfo<'a> { #[inline] @@ -3856,6 +3936,11 @@ impl ::core::default::Default for PipelineShaderStageCreateInfo<'_> { unsafe impl<'a> TaggedStructure for PipelineShaderStageCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_SHADER_STAGE_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::PipelineShaderStageCreateInfo`", + label = "`{Self}` does not extend `vk::PipelineShaderStageCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsPipelineShaderStageCreateInfo {} impl<'a> PipelineShaderStageCreateInfo<'a> { #[inline] @@ -3944,6 +4029,11 @@ impl ::core::default::Default for ComputePipelineCreateInfo<'_> { unsafe impl<'a> TaggedStructure for ComputePipelineCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::COMPUTE_PIPELINE_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::ComputePipelineCreateInfo`", + label = "`{Self}` does not extend `vk::ComputePipelineCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsComputePipelineCreateInfo {} impl<'a> ComputePipelineCreateInfo<'a> { #[inline] @@ -4174,6 +4264,11 @@ impl ::core::default::Default for PipelineVertexInputStateCreateInfo<'_> { unsafe impl<'a> TaggedStructure for PipelineVertexInputStateCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::PipelineVertexInputStateCreateInfo`", + label = "`{Self}` does not extend `vk::PipelineVertexInputStateCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsPipelineVertexInputStateCreateInfo {} impl<'a> PipelineVertexInputStateCreateInfo<'a> { #[inline] @@ -4294,6 +4389,11 @@ impl ::core::default::Default for PipelineTessellationStateCreateInfo<'_> { unsafe impl<'a> TaggedStructure for PipelineTessellationStateCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_TESSELLATION_STATE_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::PipelineTessellationStateCreateInfo`", + label = "`{Self}` does not extend `vk::PipelineTessellationStateCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsPipelineTessellationStateCreateInfo {} impl<'a> PipelineTessellationStateCreateInfo<'a> { #[inline] @@ -4359,6 +4459,11 @@ impl ::core::default::Default for PipelineViewportStateCreateInfo<'_> { unsafe impl<'a> TaggedStructure for PipelineViewportStateCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_VIEWPORT_STATE_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::PipelineViewportStateCreateInfo`", + label = "`{Self}` does not extend `vk::PipelineViewportStateCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsPipelineViewportStateCreateInfo {} impl<'a> PipelineViewportStateCreateInfo<'a> { #[inline] @@ -4453,6 +4558,11 @@ impl ::core::default::Default for PipelineRasterizationStateCreateInfo<'_> { unsafe impl<'a> TaggedStructure for PipelineRasterizationStateCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_RASTERIZATION_STATE_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::PipelineRasterizationStateCreateInfo`", + label = "`{Self}` does not extend `vk::PipelineRasterizationStateCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsPipelineRasterizationStateCreateInfo {} impl<'a> PipelineRasterizationStateCreateInfo<'a> { #[inline] @@ -4567,6 +4677,11 @@ impl ::core::default::Default for PipelineMultisampleStateCreateInfo<'_> { unsafe impl<'a> TaggedStructure for PipelineMultisampleStateCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_MULTISAMPLE_STATE_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::PipelineMultisampleStateCreateInfo`", + label = "`{Self}` does not extend `vk::PipelineMultisampleStateCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsPipelineMultisampleStateCreateInfo {} impl<'a> PipelineMultisampleStateCreateInfo<'a> { #[inline] @@ -4725,6 +4840,11 @@ impl ::core::default::Default for PipelineColorBlendStateCreateInfo<'_> { unsafe impl<'a> TaggedStructure for PipelineColorBlendStateCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PIPELINE_COLOR_BLEND_STATE_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::PipelineColorBlendStateCreateInfo`", + label = "`{Self}` does not extend `vk::PipelineColorBlendStateCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsPipelineColorBlendStateCreateInfo {} impl<'a> PipelineColorBlendStateCreateInfo<'a> { #[inline] @@ -5022,6 +5142,11 @@ impl ::core::default::Default for GraphicsPipelineCreateInfo<'_> { unsafe impl<'a> TaggedStructure for GraphicsPipelineCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::GRAPHICS_PIPELINE_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::GraphicsPipelineCreateInfo`", + label = "`{Self}` does not extend `vk::GraphicsPipelineCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsGraphicsPipelineCreateInfo {} impl<'a> GraphicsPipelineCreateInfo<'a> { #[inline] @@ -5386,6 +5511,11 @@ impl ::core::default::Default for SamplerCreateInfo<'_> { unsafe impl<'a> TaggedStructure for SamplerCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SAMPLER_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::SamplerCreateInfo`", + label = "`{Self}` does not extend `vk::SamplerCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsSamplerCreateInfo {} impl<'a> SamplerCreateInfo<'a> { #[inline] @@ -5609,6 +5739,11 @@ impl ::core::default::Default for CommandBufferInheritanceInfo<'_> { unsafe impl<'a> TaggedStructure for CommandBufferInheritanceInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::COMMAND_BUFFER_INHERITANCE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::CommandBufferInheritanceInfo`", + label = "`{Self}` does not extend `vk::CommandBufferInheritanceInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsCommandBufferInheritanceInfo {} impl<'a> CommandBufferInheritanceInfo<'a> { #[inline] @@ -5688,6 +5823,11 @@ impl ::core::default::Default for CommandBufferBeginInfo<'_> { unsafe impl<'a> TaggedStructure for CommandBufferBeginInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::COMMAND_BUFFER_BEGIN_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::CommandBufferBeginInfo`", + label = "`{Self}` does not extend `vk::CommandBufferBeginInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsCommandBufferBeginInfo {} impl<'a> CommandBufferBeginInfo<'a> { #[inline] @@ -5766,6 +5906,11 @@ impl ::core::default::Default for RenderPassBeginInfo<'_> { unsafe impl<'a> TaggedStructure for RenderPassBeginInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RENDER_PASS_BEGIN_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::RenderPassBeginInfo`", + label = "`{Self}` does not extend `vk::RenderPassBeginInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsRenderPassBeginInfo {} impl<'a> RenderPassBeginInfo<'a> { #[inline] @@ -6144,6 +6289,11 @@ impl ::core::default::Default for RenderPassCreateInfo<'_> { unsafe impl<'a> TaggedStructure for RenderPassCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RENDER_PASS_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::RenderPassCreateInfo`", + label = "`{Self}` does not extend `vk::RenderPassCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsRenderPassCreateInfo {} impl<'a> RenderPassCreateInfo<'a> { #[inline] @@ -6211,6 +6361,11 @@ impl ::core::default::Default for EventCreateInfo<'_> { unsafe impl<'a> TaggedStructure for EventCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EVENT_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::EventCreateInfo`", + label = "`{Self}` does not extend `vk::EventCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsEventCreateInfo {} impl<'a> EventCreateInfo<'a> { #[inline] @@ -6260,6 +6415,11 @@ impl ::core::default::Default for FenceCreateInfo<'_> { unsafe impl<'a> TaggedStructure for FenceCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::FENCE_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::FenceCreateInfo`", + label = "`{Self}` does not extend `vk::FenceCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsFenceCreateInfo {} impl<'a> FenceCreateInfo<'a> { #[inline] @@ -7624,6 +7784,11 @@ impl ::core::default::Default for SemaphoreCreateInfo<'_> { unsafe impl<'a> TaggedStructure for SemaphoreCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SEMAPHORE_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::SemaphoreCreateInfo`", + label = "`{Self}` does not extend `vk::SemaphoreCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsSemaphoreCreateInfo {} impl<'a> SemaphoreCreateInfo<'a> { #[inline] @@ -7679,6 +7844,11 @@ impl ::core::default::Default for QueryPoolCreateInfo<'_> { unsafe impl<'a> TaggedStructure for QueryPoolCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::QUERY_POOL_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::QueryPoolCreateInfo`", + label = "`{Self}` does not extend `vk::QueryPoolCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsQueryPoolCreateInfo {} impl<'a> QueryPoolCreateInfo<'a> { #[inline] @@ -7755,6 +7925,11 @@ impl ::core::default::Default for FramebufferCreateInfo<'_> { unsafe impl<'a> TaggedStructure for FramebufferCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::FRAMEBUFFER_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::FramebufferCreateInfo`", + label = "`{Self}` does not extend `vk::FramebufferCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsFramebufferCreateInfo {} impl<'a> FramebufferCreateInfo<'a> { #[inline] @@ -7994,6 +8169,11 @@ impl ::core::default::Default for SubmitInfo<'_> { unsafe impl<'a> TaggedStructure for SubmitInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SUBMIT_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::SubmitInfo`", + label = "`{Self}` does not extend `vk::SubmitInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsSubmitInfo {} impl<'a> SubmitInfo<'a> { #[inline] @@ -9013,6 +9193,11 @@ impl ::core::default::Default for SwapchainCreateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for SwapchainCreateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SWAPCHAIN_CREATE_INFO_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::SwapchainCreateInfoKHR`", + label = "`{Self}` does not extend `vk::SwapchainCreateInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsSwapchainCreateInfoKHR {} impl<'a> SwapchainCreateInfoKHR<'a> { #[inline] @@ -9143,6 +9328,11 @@ impl ::core::default::Default for PresentInfoKHR<'_> { unsafe impl<'a> TaggedStructure for PresentInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PRESENT_INFO_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::PresentInfoKHR`", + label = "`{Self}` does not extend `vk::PresentInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsPresentInfoKHR {} impl<'a> PresentInfoKHR<'a> { #[inline] @@ -11041,6 +11231,11 @@ unsafe impl<'a> TaggedStructure for PhysicalDeviceFeatures2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_FEATURES_2; } unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceFeatures2<'_> {} +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::PhysicalDeviceFeatures2`", + label = "`{Self}` does not extend `vk::PhysicalDeviceFeatures2`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsPhysicalDeviceFeatures2 {} impl<'a> PhysicalDeviceFeatures2<'a> { #[inline] @@ -11093,6 +11288,11 @@ impl ::core::default::Default for PhysicalDeviceProperties2<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceProperties2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_PROPERTIES_2; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::PhysicalDeviceProperties2`", + label = "`{Self}` does not extend `vk::PhysicalDeviceProperties2`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsPhysicalDeviceProperties2 {} impl<'a> PhysicalDeviceProperties2<'a> { #[inline] @@ -11145,6 +11345,11 @@ impl ::core::default::Default for FormatProperties2<'_> { unsafe impl<'a> TaggedStructure for FormatProperties2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::FORMAT_PROPERTIES_2; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::FormatProperties2`", + label = "`{Self}` does not extend `vk::FormatProperties2`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsFormatProperties2 {} impl<'a> FormatProperties2<'a> { #[inline] @@ -11194,6 +11399,11 @@ impl ::core::default::Default for ImageFormatProperties2<'_> { unsafe impl<'a> TaggedStructure for ImageFormatProperties2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_FORMAT_PROPERTIES_2; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::ImageFormatProperties2`", + label = "`{Self}` does not extend `vk::ImageFormatProperties2`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsImageFormatProperties2 {} impl<'a> ImageFormatProperties2<'a> { #[inline] @@ -11254,6 +11464,11 @@ impl ::core::default::Default for PhysicalDeviceImageFormatInfo2<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceImageFormatInfo2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::PhysicalDeviceImageFormatInfo2`", + label = "`{Self}` does not extend `vk::PhysicalDeviceImageFormatInfo2`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsPhysicalDeviceImageFormatInfo2 {} impl<'a> PhysicalDeviceImageFormatInfo2<'a> { #[inline] @@ -11326,6 +11541,11 @@ impl ::core::default::Default for QueueFamilyProperties2<'_> { unsafe impl<'a> TaggedStructure for QueueFamilyProperties2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::QUEUE_FAMILY_PROPERTIES_2; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::QueueFamilyProperties2`", + label = "`{Self}` does not extend `vk::QueueFamilyProperties2`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsQueueFamilyProperties2 {} impl<'a> QueueFamilyProperties2<'a> { #[inline] @@ -11378,6 +11598,11 @@ impl ::core::default::Default for PhysicalDeviceMemoryProperties2<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceMemoryProperties2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_MEMORY_PROPERTIES_2; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::PhysicalDeviceMemoryProperties2`", + label = "`{Self}` does not extend `vk::PhysicalDeviceMemoryProperties2`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsPhysicalDeviceMemoryProperties2 {} impl<'a> PhysicalDeviceMemoryProperties2<'a> { #[inline] @@ -11929,6 +12154,11 @@ impl ::core::default::Default for PhysicalDeviceExternalBufferInfo<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceExternalBufferInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::PhysicalDeviceExternalBufferInfo`", + label = "`{Self}` does not extend `vk::PhysicalDeviceExternalBufferInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsPhysicalDeviceExternalBufferInfo {} impl<'a> PhysicalDeviceExternalBufferInfo<'a> { #[inline] @@ -12676,6 +12906,11 @@ impl ::core::default::Default for PhysicalDeviceExternalSemaphoreInfo<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceExternalSemaphoreInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::PhysicalDeviceExternalSemaphoreInfo`", + label = "`{Self}` does not extend `vk::PhysicalDeviceExternalSemaphoreInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsPhysicalDeviceExternalSemaphoreInfo {} impl<'a> PhysicalDeviceExternalSemaphoreInfo<'a> { #[inline] @@ -14089,6 +14324,11 @@ impl ::core::default::Default for BindBufferMemoryInfo<'_> { unsafe impl<'a> TaggedStructure for BindBufferMemoryInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BIND_BUFFER_MEMORY_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::BindBufferMemoryInfo`", + label = "`{Self}` does not extend `vk::BindBufferMemoryInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsBindBufferMemoryInfo {} impl<'a> BindBufferMemoryInfo<'a> { #[inline] @@ -14190,6 +14430,11 @@ impl ::core::default::Default for BindImageMemoryInfo<'_> { unsafe impl<'a> TaggedStructure for BindImageMemoryInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BIND_IMAGE_MEMORY_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::BindImageMemoryInfo`", + label = "`{Self}` does not extend `vk::BindImageMemoryInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsBindImageMemoryInfo {} impl<'a> BindImageMemoryInfo<'a> { #[inline] @@ -15789,6 +16034,11 @@ impl ::core::default::Default for PhysicalDeviceSurfaceInfo2KHR<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceSurfaceInfo2KHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_SURFACE_INFO_2_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::PhysicalDeviceSurfaceInfo2KHR`", + label = "`{Self}` does not extend `vk::PhysicalDeviceSurfaceInfo2KHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsPhysicalDeviceSurfaceInfo2KHR {} impl<'a> PhysicalDeviceSurfaceInfo2KHR<'a> { #[inline] @@ -15841,6 +16091,11 @@ impl ::core::default::Default for SurfaceCapabilities2KHR<'_> { unsafe impl<'a> TaggedStructure for SurfaceCapabilities2KHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SURFACE_CAPABILITIES_2_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::SurfaceCapabilities2KHR`", + label = "`{Self}` does not extend `vk::SurfaceCapabilities2KHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsSurfaceCapabilities2KHR {} impl<'a> SurfaceCapabilities2KHR<'a> { #[inline] @@ -15893,6 +16148,11 @@ impl ::core::default::Default for SurfaceFormat2KHR<'_> { unsafe impl<'a> TaggedStructure for SurfaceFormat2KHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SURFACE_FORMAT_2_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::SurfaceFormat2KHR`", + label = "`{Self}` does not extend `vk::SurfaceFormat2KHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsSurfaceFormat2KHR {} impl<'a> SurfaceFormat2KHR<'a> { #[inline] @@ -16388,6 +16648,11 @@ impl ::core::default::Default for ImageMemoryRequirementsInfo2<'_> { unsafe impl<'a> TaggedStructure for ImageMemoryRequirementsInfo2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_MEMORY_REQUIREMENTS_INFO_2; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::ImageMemoryRequirementsInfo2`", + label = "`{Self}` does not extend `vk::ImageMemoryRequirementsInfo2`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsImageMemoryRequirementsInfo2 {} impl<'a> ImageMemoryRequirementsInfo2<'a> { #[inline] @@ -16515,6 +16780,11 @@ impl ::core::default::Default for MemoryRequirements2<'_> { unsafe impl<'a> TaggedStructure for MemoryRequirements2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::MEMORY_REQUIREMENTS_2; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::MemoryRequirements2`", + label = "`{Self}` does not extend `vk::MemoryRequirements2`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsMemoryRequirements2 {} impl<'a> MemoryRequirements2<'a> { #[inline] @@ -16889,6 +17159,11 @@ impl ::core::default::Default for SamplerYcbcrConversionCreateInfo<'_> { unsafe impl<'a> TaggedStructure for SamplerYcbcrConversionCreateInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SAMPLER_YCBCR_CONVERSION_CREATE_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::SamplerYcbcrConversionCreateInfo`", + label = "`{Self}` does not extend `vk::SamplerYcbcrConversionCreateInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsSamplerYcbcrConversionCreateInfo {} impl<'a> SamplerYcbcrConversionCreateInfo<'a> { #[inline] @@ -18851,6 +19126,11 @@ impl ::core::default::Default for DescriptorSetLayoutSupport<'_> { unsafe impl<'a> TaggedStructure for DescriptorSetLayoutSupport<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DESCRIPTOR_SET_LAYOUT_SUPPORT; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::DescriptorSetLayoutSupport`", + label = "`{Self}` does not extend `vk::DescriptorSetLayoutSupport`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsDescriptorSetLayoutSupport {} impl<'a> DescriptorSetLayoutSupport<'a> { #[inline] @@ -19850,6 +20130,11 @@ impl ::core::default::Default for DebugUtilsMessengerCallbackDataEXT<'_> { unsafe impl<'a> TaggedStructure for DebugUtilsMessengerCallbackDataEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::DebugUtilsMessengerCallbackDataEXT`", + label = "`{Self}` does not extend `vk::DebugUtilsMessengerCallbackDataEXT`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsDebugUtilsMessengerCallbackDataEXT {} impl<'a> DebugUtilsMessengerCallbackDataEXT<'a> { #[inline] @@ -21281,6 +21566,11 @@ impl ::core::default::Default for AttachmentDescription2<'_> { unsafe impl<'a> TaggedStructure for AttachmentDescription2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::ATTACHMENT_DESCRIPTION_2; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::AttachmentDescription2`", + label = "`{Self}` does not extend `vk::AttachmentDescription2`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsAttachmentDescription2 {} impl<'a> AttachmentDescription2<'a> { #[inline] @@ -21374,6 +21664,11 @@ impl ::core::default::Default for AttachmentReference2<'_> { unsafe impl<'a> TaggedStructure for AttachmentReference2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::ATTACHMENT_REFERENCE_2; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::AttachmentReference2`", + label = "`{Self}` does not extend `vk::AttachmentReference2`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsAttachmentReference2 {} impl<'a> AttachmentReference2<'a> { #[inline] @@ -21453,6 +21748,11 @@ impl ::core::default::Default for SubpassDescription2<'_> { unsafe impl<'a> TaggedStructure for SubpassDescription2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SUBPASS_DESCRIPTION_2; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::SubpassDescription2`", + label = "`{Self}` does not extend `vk::SubpassDescription2`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsSubpassDescription2 {} impl<'a> SubpassDescription2<'a> { #[inline] @@ -21561,6 +21861,11 @@ impl ::core::default::Default for SubpassDependency2<'_> { unsafe impl<'a> TaggedStructure for SubpassDependency2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SUBPASS_DEPENDENCY_2; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::SubpassDependency2`", + label = "`{Self}` does not extend `vk::SubpassDependency2`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsSubpassDependency2 {} impl<'a> SubpassDependency2<'a> { #[inline] @@ -21661,6 +21966,11 @@ impl ::core::default::Default for RenderPassCreateInfo2<'_> { unsafe impl<'a> TaggedStructure for RenderPassCreateInfo2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RENDER_PASS_CREATE_INFO_2; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::RenderPassCreateInfo2`", + label = "`{Self}` does not extend `vk::RenderPassCreateInfo2`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsRenderPassCreateInfo2 {} impl<'a> RenderPassCreateInfo2<'a> { #[inline] @@ -21766,6 +22076,11 @@ impl ::core::default::Default for SubpassEndInfo<'_> { unsafe impl<'a> TaggedStructure for SubpassEndInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SUBPASS_END_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::SubpassEndInfo`", + label = "`{Self}` does not extend `vk::SubpassEndInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsSubpassEndInfo {} impl<'a> SubpassEndInfo<'a> { #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] @@ -22355,6 +22670,11 @@ impl ::core::default::Default for AndroidHardwareBufferPropertiesANDROID<'_> { unsafe impl<'a> TaggedStructure for AndroidHardwareBufferPropertiesANDROID<'a> { const STRUCTURE_TYPE: StructureType = StructureType::ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::AndroidHardwareBufferPropertiesANDROID`", + label = "`{Self}` does not extend `vk::AndroidHardwareBufferPropertiesANDROID`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsAndroidHardwareBufferPropertiesANDROID {} impl<'a> AndroidHardwareBufferPropertiesANDROID<'a> { #[inline] @@ -25143,6 +25463,11 @@ impl ::core::default::Default for RayTracingPipelineCreateInfoNV<'_> { unsafe impl<'a> TaggedStructure for RayTracingPipelineCreateInfoNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_NV; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::RayTracingPipelineCreateInfoNV`", + label = "`{Self}` does not extend `vk::RayTracingPipelineCreateInfoNV`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsRayTracingPipelineCreateInfoNV {} impl<'a> RayTracingPipelineCreateInfoNV<'a> { #[inline] @@ -25249,6 +25574,11 @@ impl ::core::default::Default for RayTracingPipelineCreateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for RayTracingPipelineCreateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RAY_TRACING_PIPELINE_CREATE_INFO_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::RayTracingPipelineCreateInfoKHR`", + label = "`{Self}` does not extend `vk::RayTracingPipelineCreateInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsRayTracingPipelineCreateInfoKHR {} impl<'a> RayTracingPipelineCreateInfoKHR<'a> { #[inline] @@ -25643,6 +25973,11 @@ impl ::core::default::Default for AccelerationStructureCreateInfoNV<'_> { unsafe impl<'a> TaggedStructure for AccelerationStructureCreateInfoNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_CREATE_INFO_NV; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::AccelerationStructureCreateInfoNV`", + label = "`{Self}` does not extend `vk::AccelerationStructureCreateInfoNV`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsAccelerationStructureCreateInfoNV {} impl<'a> AccelerationStructureCreateInfoNV<'a> { #[inline] @@ -33660,6 +33995,11 @@ unsafe impl<'a> TaggedStructure for AccelerationStructureGeometryTrianglesDataKH const STRUCTURE_TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::AccelerationStructureGeometryTrianglesDataKHR`", + label = "`{Self}` does not extend `vk::AccelerationStructureGeometryTrianglesDataKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsAccelerationStructureGeometryTrianglesDataKHR {} impl<'a> AccelerationStructureGeometryTrianglesDataKHR<'a> { #[inline] @@ -34082,6 +34422,11 @@ impl ::core::default::Default for AccelerationStructureCreateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for AccelerationStructureCreateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::ACCELERATION_STRUCTURE_CREATE_INFO_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::AccelerationStructureCreateInfoKHR`", + label = "`{Self}` does not extend `vk::AccelerationStructureCreateInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsAccelerationStructureCreateInfoKHR {} impl<'a> AccelerationStructureCreateInfoKHR<'a> { #[inline] @@ -35907,6 +36252,11 @@ unsafe impl ExtendsPhysicalDeviceFeatures2 { } unsafe impl ExtendsDeviceCreateInfo for PhysicalDeviceClusterCullingShaderFeaturesHUAWEI<'_> {} +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI`", + label = "`{Self}` does not extend `vk::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsPhysicalDeviceClusterCullingShaderFeaturesHUAWEI {} impl<'a> PhysicalDeviceClusterCullingShaderFeaturesHUAWEI<'a> { #[inline] @@ -36122,6 +36472,11 @@ impl ::core::default::Default for ImageBlit2<'_> { unsafe impl<'a> TaggedStructure for ImageBlit2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_BLIT_2; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::ImageBlit2`", + label = "`{Self}` does not extend `vk::ImageBlit2`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsImageBlit2 {} impl<'a> ImageBlit2<'a> { #[inline] @@ -36196,6 +36551,11 @@ impl ::core::default::Default for BufferImageCopy2<'_> { unsafe impl<'a> TaggedStructure for BufferImageCopy2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BUFFER_IMAGE_COPY_2; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::BufferImageCopy2`", + label = "`{Self}` does not extend `vk::BufferImageCopy2`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsBufferImageCopy2 {} impl<'a> BufferImageCopy2<'a> { #[inline] @@ -36460,6 +36820,11 @@ impl ::core::default::Default for BlitImageInfo2<'_> { unsafe impl<'a> TaggedStructure for BlitImageInfo2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BLIT_IMAGE_INFO_2; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::BlitImageInfo2`", + label = "`{Self}` does not extend `vk::BlitImageInfo2`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsBlitImageInfo2 {} impl<'a> BlitImageInfo2<'a> { #[inline] @@ -38053,6 +38418,11 @@ impl ::core::default::Default for ImageMemoryBarrier2<'_> { unsafe impl<'a> TaggedStructure for ImageMemoryBarrier2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::IMAGE_MEMORY_BARRIER_2; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::ImageMemoryBarrier2`", + label = "`{Self}` does not extend `vk::ImageMemoryBarrier2`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsImageMemoryBarrier2 {} impl<'a> ImageMemoryBarrier2<'a> { #[inline] @@ -38163,6 +38533,11 @@ impl ::core::default::Default for BufferMemoryBarrier2<'_> { unsafe impl<'a> TaggedStructure for BufferMemoryBarrier2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BUFFER_MEMORY_BARRIER_2; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::BufferMemoryBarrier2`", + label = "`{Self}` does not extend `vk::BufferMemoryBarrier2`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsBufferMemoryBarrier2 {} impl<'a> BufferMemoryBarrier2<'a> { #[inline] @@ -38379,6 +38754,11 @@ impl ::core::default::Default for CommandBufferSubmitInfo<'_> { unsafe impl<'a> TaggedStructure for CommandBufferSubmitInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::COMMAND_BUFFER_SUBMIT_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::CommandBufferSubmitInfo`", + label = "`{Self}` does not extend `vk::CommandBufferSubmitInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsCommandBufferSubmitInfo {} impl<'a> CommandBufferSubmitInfo<'a> { #[inline] @@ -38448,6 +38828,11 @@ impl ::core::default::Default for SubmitInfo2<'_> { unsafe impl<'a> TaggedStructure for SubmitInfo2<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SUBMIT_INFO_2; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::SubmitInfo2`", + label = "`{Self}` does not extend `vk::SubmitInfo2`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsSubmitInfo2 {} impl<'a> SubmitInfo2<'a> { #[inline] @@ -39587,6 +39972,11 @@ impl ::core::default::Default for PhysicalDeviceVideoFormatInfoKHR<'_> { unsafe impl<'a> TaggedStructure for PhysicalDeviceVideoFormatInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::PhysicalDeviceVideoFormatInfoKHR`", + label = "`{Self}` does not extend `vk::PhysicalDeviceVideoFormatInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsPhysicalDeviceVideoFormatInfoKHR {} impl<'a> PhysicalDeviceVideoFormatInfoKHR<'a> { #[inline] @@ -39715,6 +40105,11 @@ unsafe impl<'a> TaggedStructure for VideoProfileInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_PROFILE_INFO_KHR; } unsafe impl ExtendsQueryPoolCreateInfo for VideoProfileInfoKHR<'_> {} +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::VideoProfileInfoKHR`", + label = "`{Self}` does not extend `vk::VideoProfileInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsVideoProfileInfoKHR {} impl<'a> VideoProfileInfoKHR<'a> { #[inline] @@ -39801,6 +40196,11 @@ impl ::core::default::Default for VideoCapabilitiesKHR<'_> { unsafe impl<'a> TaggedStructure for VideoCapabilitiesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_CAPABILITIES_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::VideoCapabilitiesKHR`", + label = "`{Self}` does not extend `vk::VideoCapabilitiesKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsVideoCapabilitiesKHR {} impl<'a> VideoCapabilitiesKHR<'a> { #[inline] @@ -40049,6 +40449,11 @@ impl ::core::default::Default for VideoReferenceSlotInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoReferenceSlotInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_REFERENCE_SLOT_INFO_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::VideoReferenceSlotInfoKHR`", + label = "`{Self}` does not extend `vk::VideoReferenceSlotInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsVideoReferenceSlotInfoKHR {} impl<'a> VideoReferenceSlotInfoKHR<'a> { #[inline] @@ -40194,6 +40599,11 @@ impl ::core::default::Default for VideoDecodeInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoDecodeInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_DECODE_INFO_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::VideoDecodeInfoKHR`", + label = "`{Self}` does not extend `vk::VideoDecodeInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsVideoDecodeInfoKHR {} impl<'a> VideoDecodeInfoKHR<'a> { #[inline] @@ -41166,6 +41576,11 @@ impl ::core::default::Default for VideoSessionCreateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoSessionCreateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_SESSION_CREATE_INFO_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::VideoSessionCreateInfoKHR`", + label = "`{Self}` does not extend `vk::VideoSessionCreateInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsVideoSessionCreateInfoKHR {} impl<'a> VideoSessionCreateInfoKHR<'a> { #[inline] @@ -41262,6 +41677,11 @@ impl ::core::default::Default for VideoSessionParametersCreateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoSessionParametersCreateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::VideoSessionParametersCreateInfoKHR`", + label = "`{Self}` does not extend `vk::VideoSessionParametersCreateInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsVideoSessionParametersCreateInfoKHR {} impl<'a> VideoSessionParametersCreateInfoKHR<'a> { #[inline] @@ -41327,6 +41747,11 @@ impl ::core::default::Default for VideoSessionParametersUpdateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoSessionParametersUpdateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::VideoSessionParametersUpdateInfoKHR`", + label = "`{Self}` does not extend `vk::VideoSessionParametersUpdateInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsVideoSessionParametersUpdateInfoKHR {} impl<'a> VideoSessionParametersUpdateInfoKHR<'a> { #[inline] @@ -41380,6 +41805,11 @@ unsafe impl<'a> TaggedStructure for VideoEncodeSessionParametersGetInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::VideoEncodeSessionParametersGetInfoKHR`", + label = "`{Self}` does not extend `vk::VideoEncodeSessionParametersGetInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsVideoEncodeSessionParametersGetInfoKHR {} impl<'a> VideoEncodeSessionParametersGetInfoKHR<'a> { #[inline] @@ -41436,6 +41866,11 @@ unsafe impl<'a> TaggedStructure for VideoEncodeSessionParametersFeedbackInfoKHR< const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::VideoEncodeSessionParametersFeedbackInfoKHR`", + label = "`{Self}` does not extend `vk::VideoEncodeSessionParametersFeedbackInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsVideoEncodeSessionParametersFeedbackInfoKHR {} impl<'a> VideoEncodeSessionParametersFeedbackInfoKHR<'a> { #[inline] @@ -41496,6 +41931,11 @@ impl ::core::default::Default for VideoBeginCodingInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoBeginCodingInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_BEGIN_CODING_INFO_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::VideoBeginCodingInfoKHR`", + label = "`{Self}` does not extend `vk::VideoBeginCodingInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsVideoBeginCodingInfoKHR {} impl<'a> VideoBeginCodingInfoKHR<'a> { #[inline] @@ -41601,6 +42041,11 @@ impl ::core::default::Default for VideoCodingControlInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoCodingControlInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_CODING_CONTROL_INFO_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::VideoCodingControlInfoKHR`", + label = "`{Self}` does not extend `vk::VideoCodingControlInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsVideoCodingControlInfoKHR {} impl<'a> VideoCodingControlInfoKHR<'a> { #[inline] @@ -41719,6 +42164,11 @@ impl ::core::default::Default for VideoEncodeInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_INFO_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::VideoEncodeInfoKHR`", + label = "`{Self}` does not extend `vk::VideoEncodeInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsVideoEncodeInfoKHR {} impl<'a> VideoEncodeInfoKHR<'a> { #[inline] @@ -41932,6 +42382,11 @@ impl ::core::default::Default for VideoEncodeQualityLevelPropertiesKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeQualityLevelPropertiesKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::VideoEncodeQualityLevelPropertiesKHR`", + label = "`{Self}` does not extend `vk::VideoEncodeQualityLevelPropertiesKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsVideoEncodeQualityLevelPropertiesKHR {} impl<'a> VideoEncodeQualityLevelPropertiesKHR<'a> { #[inline] @@ -42074,6 +42529,11 @@ impl ::core::default::Default for VideoEncodeRateControlLayerInfoKHR<'_> { unsafe impl<'a> TaggedStructure for VideoEncodeRateControlLayerInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::VideoEncodeRateControlLayerInfoKHR`", + label = "`{Self}` does not extend `vk::VideoEncodeRateControlLayerInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsVideoEncodeRateControlLayerInfoKHR {} impl<'a> VideoEncodeRateControlLayerInfoKHR<'a> { #[inline] @@ -45064,6 +45524,11 @@ impl ::core::default::Default for DescriptorBufferBindingInfoEXT<'_> { unsafe impl<'a> TaggedStructure for DescriptorBufferBindingInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DESCRIPTOR_BUFFER_BINDING_INFO_EXT; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::DescriptorBufferBindingInfoEXT`", + label = "`{Self}` does not extend `vk::DescriptorBufferBindingInfoEXT`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsDescriptorBufferBindingInfoEXT {} impl<'a> DescriptorBufferBindingInfoEXT<'a> { #[inline] @@ -47466,6 +47931,11 @@ impl ::core::default::Default for RenderingInfo<'_> { unsafe impl<'a> TaggedStructure for RenderingInfo<'a> { const STRUCTURE_TYPE: StructureType = StructureType::RENDERING_INFO; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::RenderingInfo`", + label = "`{Self}` does not extend `vk::RenderingInfo`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsRenderingInfo {} impl<'a> RenderingInfo<'a> { #[inline] @@ -48877,6 +49347,11 @@ impl ::core::default::Default for SubresourceLayout2KHR<'_> { unsafe impl<'a> TaggedStructure for SubresourceLayout2KHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SUBRESOURCE_LAYOUT_2_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::SubresourceLayout2KHR`", + label = "`{Self}` does not extend `vk::SubresourceLayout2KHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsSubresourceLayout2KHR {} impl<'a> SubresourceLayout2KHR<'a> { #[inline] @@ -50308,6 +50783,11 @@ impl ::core::default::Default for ExportMetalObjectsInfoEXT<'_> { unsafe impl<'a> TaggedStructure for ExportMetalObjectsInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXPORT_METAL_OBJECTS_INFO_EXT; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::ExportMetalObjectsInfoEXT`", + label = "`{Self}` does not extend `vk::ExportMetalObjectsInfoEXT`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsExportMetalObjectsInfoEXT {} impl<'a> ExportMetalObjectsInfoEXT<'a> { #[doc = r" Prepends the given extension struct between the root and the first pointer. This"] @@ -51705,6 +52185,11 @@ impl ::core::default::Default for OpticalFlowSessionCreateInfoNV<'_> { unsafe impl<'a> TaggedStructure for OpticalFlowSessionCreateInfoNV<'a> { const STRUCTURE_TYPE: StructureType = StructureType::OPTICAL_FLOW_SESSION_CREATE_INFO_NV; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::OpticalFlowSessionCreateInfoNV`", + label = "`{Self}` does not extend `vk::OpticalFlowSessionCreateInfoNV`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsOpticalFlowSessionCreateInfoNV {} impl<'a> OpticalFlowSessionCreateInfoNV<'a> { #[inline] @@ -52277,6 +52762,11 @@ impl ::core::default::Default for DepthBiasInfoEXT<'_> { unsafe impl<'a> TaggedStructure for DepthBiasInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::DEPTH_BIAS_INFO_EXT; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::DepthBiasInfoEXT`", + label = "`{Self}` does not extend `vk::DepthBiasInfoEXT`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsDepthBiasInfoEXT {} impl<'a> DepthBiasInfoEXT<'a> { #[inline] @@ -53709,6 +54199,11 @@ impl ::core::default::Default for MemoryMapInfoKHR<'_> { unsafe impl<'a> TaggedStructure for MemoryMapInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::MEMORY_MAP_INFO_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::MemoryMapInfoKHR`", + label = "`{Self}` does not extend `vk::MemoryMapInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsMemoryMapInfoKHR {} impl<'a> MemoryMapInfoKHR<'a> { #[inline] @@ -53915,6 +54410,11 @@ impl ::core::default::Default for ShaderCreateInfoEXT<'_> { unsafe impl<'a> TaggedStructure for ShaderCreateInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SHADER_CREATE_INFO_EXT; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::ShaderCreateInfoEXT`", + label = "`{Self}` does not extend `vk::ShaderCreateInfoEXT`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsShaderCreateInfoEXT {} impl<'a> ShaderCreateInfoEXT<'a> { #[inline] @@ -54174,6 +54674,11 @@ impl ::core::default::Default for ScreenBufferPropertiesQNX<'_> { unsafe impl<'a> TaggedStructure for ScreenBufferPropertiesQNX<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SCREEN_BUFFER_PROPERTIES_QNX; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::ScreenBufferPropertiesQNX`", + label = "`{Self}` does not extend `vk::ScreenBufferPropertiesQNX`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsScreenBufferPropertiesQNX {} impl<'a> ScreenBufferPropertiesQNX<'a> { #[inline] @@ -54707,6 +55212,11 @@ impl ::core::default::Default for ExecutionGraphPipelineCreateInfoAMDX<'_> { unsafe impl<'a> TaggedStructure for ExecutionGraphPipelineCreateInfoAMDX<'a> { const STRUCTURE_TYPE: StructureType = StructureType::EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::ExecutionGraphPipelineCreateInfoAMDX`", + label = "`{Self}` does not extend `vk::ExecutionGraphPipelineCreateInfoAMDX`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsExecutionGraphPipelineCreateInfoAMDX {} impl<'a> ExecutionGraphPipelineCreateInfoAMDX<'a> { #[inline] @@ -54997,6 +55507,11 @@ impl ::core::default::Default for BindDescriptorSetsInfoKHR<'_> { unsafe impl<'a> TaggedStructure for BindDescriptorSetsInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::BIND_DESCRIPTOR_SETS_INFO_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::BindDescriptorSetsInfoKHR`", + label = "`{Self}` does not extend `vk::BindDescriptorSetsInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsBindDescriptorSetsInfoKHR {} impl<'a> BindDescriptorSetsInfoKHR<'a> { #[inline] @@ -55079,6 +55594,11 @@ impl ::core::default::Default for PushConstantsInfoKHR<'_> { unsafe impl<'a> TaggedStructure for PushConstantsInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PUSH_CONSTANTS_INFO_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::PushConstantsInfoKHR`", + label = "`{Self}` does not extend `vk::PushConstantsInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsPushConstantsInfoKHR {} impl<'a> PushConstantsInfoKHR<'a> { #[inline] @@ -55152,6 +55672,11 @@ impl ::core::default::Default for PushDescriptorSetInfoKHR<'_> { unsafe impl<'a> TaggedStructure for PushDescriptorSetInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PUSH_DESCRIPTOR_SET_INFO_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::PushDescriptorSetInfoKHR`", + label = "`{Self}` does not extend `vk::PushDescriptorSetInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsPushDescriptorSetInfoKHR {} impl<'a> PushDescriptorSetInfoKHR<'a> { #[inline] @@ -55226,6 +55751,11 @@ impl ::core::default::Default for PushDescriptorSetWithTemplateInfoKHR<'_> { unsafe impl<'a> TaggedStructure for PushDescriptorSetWithTemplateInfoKHR<'a> { const STRUCTURE_TYPE: StructureType = StructureType::PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::PushDescriptorSetWithTemplateInfoKHR`", + label = "`{Self}` does not extend `vk::PushDescriptorSetWithTemplateInfoKHR`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsPushDescriptorSetWithTemplateInfoKHR {} impl<'a> PushDescriptorSetWithTemplateInfoKHR<'a> { #[inline] @@ -55306,6 +55836,11 @@ impl ::core::default::Default for SetDescriptorBufferOffsetsInfoEXT<'_> { unsafe impl<'a> TaggedStructure for SetDescriptorBufferOffsetsInfoEXT<'a> { const STRUCTURE_TYPE: StructureType = StructureType::SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::SetDescriptorBufferOffsetsInfoEXT`", + label = "`{Self}` does not extend `vk::SetDescriptorBufferOffsetsInfoEXT`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsSetDescriptorBufferOffsetsInfoEXT {} impl<'a> SetDescriptorBufferOffsetsInfoEXT<'a> { #[inline] @@ -55385,6 +55920,11 @@ unsafe impl<'a> TaggedStructure for BindDescriptorBufferEmbeddedSamplersInfoEXT< const STRUCTURE_TYPE: StructureType = StructureType::BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT; } +#[diagnostic::on_unimplemented( + message = "`{Self}` is not allowed in the `pNext` chain of `vk::BindDescriptorBufferEmbeddedSamplersInfoEXT`", + label = "`{Self}` does not extend `vk::BindDescriptorBufferEmbeddedSamplersInfoEXT`", + note = "See the list of allowed extension structs at " +)] pub unsafe trait ExtendsBindDescriptorBufferEmbeddedSamplersInfoEXT {} impl<'a> BindDescriptorBufferEmbeddedSamplersInfoEXT<'a> { #[inline] diff --git a/generator/src/lib.rs b/generator/src/lib.rs index 243f1da84..4ba80264e 100644 --- a/generator/src/lib.rs +++ b/generator/src/lib.rs @@ -2349,7 +2349,17 @@ fn derive_getters_and_setters( // Root structs come with their own trait that structs that extend // this struct will implement let next_trait = if root_struct_next_field.is_some() { - quote!(pub unsafe trait #extends_name {}) + let message = format!("`{{Self}}` is not allowed in the `pNext` chain of `vk::{name}`"); + let label = format!("`{{Self}}` does not extend `vk::{name}`"); + let note = format!("See the list of allowed extension structs at ", struct_.name, struct_.name); + quote! { + #[diagnostic::on_unimplemented( + message = #message, + label = #label, + note = #note + )] + pub unsafe trait #extends_name {} + } } else { quote!() };