diff --git a/include/detail_equality_checks/vk_equality_checks_v198.hpp b/include/detail_equality_checks/vk_equality_checks_v198.hpp new file mode 100644 index 0000000000000000000000000000000000000000..77841f40bf4c4e51a9d56acff6c2ff21da3c0dce --- /dev/null +++ b/include/detail_equality_checks/vk_equality_checks_v198.hpp @@ -0,0 +1,15134 @@ +/* + Copyright (C) 2020 George Cave - gcave@stablecoder.ca + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/* + This file was auto-generated by the Vulkan mini-libs utility can be found at + https://github.com/stablecoder/vulkan-mini-libs.git + or + https://git.stabletec.com/utilities/vulkan-mini-libs.git + + Check for an updated version anytime, or state concerns/bugs. +*/ + +#ifndef VK_EQUALITY_CHECK_V198_HPP +#define VK_EQUALITY_CHECK_V198_HPP + +/* USAGE: + To use, include this header where the declarations for the boolean checks are required. + + On *ONE* compilation unit, include the definition of `#define VK_EQUALITY_CHECK_CONFIG_MAIN` + so that the definitions are compiled somewhere following the one definition rule. +*/ + +#include <vulkan/vulkan.h> + +static_assert(VK_HEADER_VERSION == 198, "Incompatible VK_HEADER_VERSION!" ); + +bool operator==(VkBaseOutStructure const &lhs, + VkBaseOutStructure const &rhs) noexcept; +bool operator!=(VkBaseOutStructure const &lhs, + VkBaseOutStructure const &rhs) noexcept; + +bool operator==(VkBaseInStructure const &lhs, + VkBaseInStructure const &rhs) noexcept; +bool operator!=(VkBaseInStructure const &lhs, + VkBaseInStructure const &rhs) noexcept; + +bool operator==(VkOffset2D const &lhs, + VkOffset2D const &rhs) noexcept; +bool operator!=(VkOffset2D const &lhs, + VkOffset2D const &rhs) noexcept; + +bool operator==(VkOffset3D const &lhs, + VkOffset3D const &rhs) noexcept; +bool operator!=(VkOffset3D const &lhs, + VkOffset3D const &rhs) noexcept; + +bool operator==(VkExtent2D const &lhs, + VkExtent2D const &rhs) noexcept; +bool operator!=(VkExtent2D const &lhs, + VkExtent2D const &rhs) noexcept; + +bool operator==(VkExtent3D const &lhs, + VkExtent3D const &rhs) noexcept; +bool operator!=(VkExtent3D const &lhs, + VkExtent3D const &rhs) noexcept; + +bool operator==(VkViewport const &lhs, + VkViewport const &rhs) noexcept; +bool operator!=(VkViewport const &lhs, + VkViewport const &rhs) noexcept; + +bool operator==(VkRect2D const &lhs, + VkRect2D const &rhs) noexcept; +bool operator!=(VkRect2D const &lhs, + VkRect2D const &rhs) noexcept; + +bool operator==(VkClearRect const &lhs, + VkClearRect const &rhs) noexcept; +bool operator!=(VkClearRect const &lhs, + VkClearRect const &rhs) noexcept; + +bool operator==(VkComponentMapping const &lhs, + VkComponentMapping const &rhs) noexcept; +bool operator!=(VkComponentMapping const &lhs, + VkComponentMapping const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceProperties const &lhs, + VkPhysicalDeviceProperties const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceProperties const &lhs, + VkPhysicalDeviceProperties const &rhs) noexcept; + +bool operator==(VkExtensionProperties const &lhs, + VkExtensionProperties const &rhs) noexcept; +bool operator!=(VkExtensionProperties const &lhs, + VkExtensionProperties const &rhs) noexcept; + +bool operator==(VkLayerProperties const &lhs, + VkLayerProperties const &rhs) noexcept; +bool operator!=(VkLayerProperties const &lhs, + VkLayerProperties const &rhs) noexcept; + +bool operator==(VkApplicationInfo const &lhs, + VkApplicationInfo const &rhs) noexcept; +bool operator!=(VkApplicationInfo const &lhs, + VkApplicationInfo const &rhs) noexcept; + +bool operator==(VkAllocationCallbacks const &lhs, + VkAllocationCallbacks const &rhs) noexcept; +bool operator!=(VkAllocationCallbacks const &lhs, + VkAllocationCallbacks const &rhs) noexcept; + +bool operator==(VkDeviceQueueCreateInfo const &lhs, + VkDeviceQueueCreateInfo const &rhs) noexcept; +bool operator!=(VkDeviceQueueCreateInfo const &lhs, + VkDeviceQueueCreateInfo const &rhs) noexcept; + +bool operator==(VkQueueFamilyProperties const &lhs, + VkQueueFamilyProperties const &rhs) noexcept; +bool operator!=(VkQueueFamilyProperties const &lhs, + VkQueueFamilyProperties const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceMemoryProperties const &lhs, + VkPhysicalDeviceMemoryProperties const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceMemoryProperties const &lhs, + VkPhysicalDeviceMemoryProperties const &rhs) noexcept; + +bool operator==(VkMemoryAllocateInfo const &lhs, + VkMemoryAllocateInfo const &rhs) noexcept; +bool operator!=(VkMemoryAllocateInfo const &lhs, + VkMemoryAllocateInfo const &rhs) noexcept; + +bool operator==(VkMemoryRequirements const &lhs, + VkMemoryRequirements const &rhs) noexcept; +bool operator!=(VkMemoryRequirements const &lhs, + VkMemoryRequirements const &rhs) noexcept; + +bool operator==(VkSparseImageFormatProperties const &lhs, + VkSparseImageFormatProperties const &rhs) noexcept; +bool operator!=(VkSparseImageFormatProperties const &lhs, + VkSparseImageFormatProperties const &rhs) noexcept; + +bool operator==(VkSparseImageMemoryRequirements const &lhs, + VkSparseImageMemoryRequirements const &rhs) noexcept; +bool operator!=(VkSparseImageMemoryRequirements const &lhs, + VkSparseImageMemoryRequirements const &rhs) noexcept; + +bool operator==(VkMemoryType const &lhs, + VkMemoryType const &rhs) noexcept; +bool operator!=(VkMemoryType const &lhs, + VkMemoryType const &rhs) noexcept; + +bool operator==(VkMemoryHeap const &lhs, + VkMemoryHeap const &rhs) noexcept; +bool operator!=(VkMemoryHeap const &lhs, + VkMemoryHeap const &rhs) noexcept; + +bool operator==(VkMappedMemoryRange const &lhs, + VkMappedMemoryRange const &rhs) noexcept; +bool operator!=(VkMappedMemoryRange const &lhs, + VkMappedMemoryRange const &rhs) noexcept; + +bool operator==(VkFormatProperties const &lhs, + VkFormatProperties const &rhs) noexcept; +bool operator!=(VkFormatProperties const &lhs, + VkFormatProperties const &rhs) noexcept; + +bool operator==(VkImageFormatProperties const &lhs, + VkImageFormatProperties const &rhs) noexcept; +bool operator!=(VkImageFormatProperties const &lhs, + VkImageFormatProperties const &rhs) noexcept; + +bool operator==(VkDescriptorBufferInfo const &lhs, + VkDescriptorBufferInfo const &rhs) noexcept; +bool operator!=(VkDescriptorBufferInfo const &lhs, + VkDescriptorBufferInfo const &rhs) noexcept; + +bool operator==(VkDescriptorImageInfo const &lhs, + VkDescriptorImageInfo const &rhs) noexcept; +bool operator!=(VkDescriptorImageInfo const &lhs, + VkDescriptorImageInfo const &rhs) noexcept; + +bool operator==(VkWriteDescriptorSet const &lhs, + VkWriteDescriptorSet const &rhs) noexcept; +bool operator!=(VkWriteDescriptorSet const &lhs, + VkWriteDescriptorSet const &rhs) noexcept; + +bool operator==(VkCopyDescriptorSet const &lhs, + VkCopyDescriptorSet const &rhs) noexcept; +bool operator!=(VkCopyDescriptorSet const &lhs, + VkCopyDescriptorSet const &rhs) noexcept; + +bool operator==(VkBufferCreateInfo const &lhs, + VkBufferCreateInfo const &rhs) noexcept; +bool operator!=(VkBufferCreateInfo const &lhs, + VkBufferCreateInfo const &rhs) noexcept; + +bool operator==(VkBufferViewCreateInfo const &lhs, + VkBufferViewCreateInfo const &rhs) noexcept; +bool operator!=(VkBufferViewCreateInfo const &lhs, + VkBufferViewCreateInfo const &rhs) noexcept; + +bool operator==(VkImageSubresource const &lhs, + VkImageSubresource const &rhs) noexcept; +bool operator!=(VkImageSubresource const &lhs, + VkImageSubresource const &rhs) noexcept; + +bool operator==(VkImageSubresourceLayers const &lhs, + VkImageSubresourceLayers const &rhs) noexcept; +bool operator!=(VkImageSubresourceLayers const &lhs, + VkImageSubresourceLayers const &rhs) noexcept; + +bool operator==(VkImageSubresourceRange const &lhs, + VkImageSubresourceRange const &rhs) noexcept; +bool operator!=(VkImageSubresourceRange const &lhs, + VkImageSubresourceRange const &rhs) noexcept; + +bool operator==(VkMemoryBarrier const &lhs, + VkMemoryBarrier const &rhs) noexcept; +bool operator!=(VkMemoryBarrier const &lhs, + VkMemoryBarrier const &rhs) noexcept; + +bool operator==(VkBufferMemoryBarrier const &lhs, + VkBufferMemoryBarrier const &rhs) noexcept; +bool operator!=(VkBufferMemoryBarrier const &lhs, + VkBufferMemoryBarrier const &rhs) noexcept; + +bool operator==(VkImageMemoryBarrier const &lhs, + VkImageMemoryBarrier const &rhs) noexcept; +bool operator!=(VkImageMemoryBarrier const &lhs, + VkImageMemoryBarrier const &rhs) noexcept; + +bool operator==(VkImageCreateInfo const &lhs, + VkImageCreateInfo const &rhs) noexcept; +bool operator!=(VkImageCreateInfo const &lhs, + VkImageCreateInfo const &rhs) noexcept; + +bool operator==(VkSubresourceLayout const &lhs, + VkSubresourceLayout const &rhs) noexcept; +bool operator!=(VkSubresourceLayout const &lhs, + VkSubresourceLayout const &rhs) noexcept; + +bool operator==(VkImageViewCreateInfo const &lhs, + VkImageViewCreateInfo const &rhs) noexcept; +bool operator!=(VkImageViewCreateInfo const &lhs, + VkImageViewCreateInfo const &rhs) noexcept; + +bool operator==(VkBufferCopy const &lhs, + VkBufferCopy const &rhs) noexcept; +bool operator!=(VkBufferCopy const &lhs, + VkBufferCopy const &rhs) noexcept; + +bool operator==(VkSparseMemoryBind const &lhs, + VkSparseMemoryBind const &rhs) noexcept; +bool operator!=(VkSparseMemoryBind const &lhs, + VkSparseMemoryBind const &rhs) noexcept; + +bool operator==(VkSparseImageMemoryBind const &lhs, + VkSparseImageMemoryBind const &rhs) noexcept; +bool operator!=(VkSparseImageMemoryBind const &lhs, + VkSparseImageMemoryBind const &rhs) noexcept; + +bool operator==(VkSparseBufferMemoryBindInfo const &lhs, + VkSparseBufferMemoryBindInfo const &rhs) noexcept; +bool operator!=(VkSparseBufferMemoryBindInfo const &lhs, + VkSparseBufferMemoryBindInfo const &rhs) noexcept; + +bool operator==(VkSparseImageOpaqueMemoryBindInfo const &lhs, + VkSparseImageOpaqueMemoryBindInfo const &rhs) noexcept; +bool operator!=(VkSparseImageOpaqueMemoryBindInfo const &lhs, + VkSparseImageOpaqueMemoryBindInfo const &rhs) noexcept; + +bool operator==(VkSparseImageMemoryBindInfo const &lhs, + VkSparseImageMemoryBindInfo const &rhs) noexcept; +bool operator!=(VkSparseImageMemoryBindInfo const &lhs, + VkSparseImageMemoryBindInfo const &rhs) noexcept; + +bool operator==(VkBindSparseInfo const &lhs, + VkBindSparseInfo const &rhs) noexcept; +bool operator!=(VkBindSparseInfo const &lhs, + VkBindSparseInfo const &rhs) noexcept; + +bool operator==(VkImageCopy const &lhs, + VkImageCopy const &rhs) noexcept; +bool operator!=(VkImageCopy const &lhs, + VkImageCopy const &rhs) noexcept; + +bool operator==(VkImageBlit const &lhs, + VkImageBlit const &rhs) noexcept; +bool operator!=(VkImageBlit const &lhs, + VkImageBlit const &rhs) noexcept; + +bool operator==(VkBufferImageCopy const &lhs, + VkBufferImageCopy const &rhs) noexcept; +bool operator!=(VkBufferImageCopy const &lhs, + VkBufferImageCopy const &rhs) noexcept; + +bool operator==(VkImageResolve const &lhs, + VkImageResolve const &rhs) noexcept; +bool operator!=(VkImageResolve const &lhs, + VkImageResolve const &rhs) noexcept; + +bool operator==(VkShaderModuleCreateInfo const &lhs, + VkShaderModuleCreateInfo const &rhs) noexcept; +bool operator!=(VkShaderModuleCreateInfo const &lhs, + VkShaderModuleCreateInfo const &rhs) noexcept; + +bool operator==(VkDescriptorSetLayoutBinding const &lhs, + VkDescriptorSetLayoutBinding const &rhs) noexcept; +bool operator!=(VkDescriptorSetLayoutBinding const &lhs, + VkDescriptorSetLayoutBinding const &rhs) noexcept; + +bool operator==(VkDescriptorSetLayoutCreateInfo const &lhs, + VkDescriptorSetLayoutCreateInfo const &rhs) noexcept; +bool operator!=(VkDescriptorSetLayoutCreateInfo const &lhs, + VkDescriptorSetLayoutCreateInfo const &rhs) noexcept; + +bool operator==(VkDescriptorPoolSize const &lhs, + VkDescriptorPoolSize const &rhs) noexcept; +bool operator!=(VkDescriptorPoolSize const &lhs, + VkDescriptorPoolSize const &rhs) noexcept; + +bool operator==(VkDescriptorPoolCreateInfo const &lhs, + VkDescriptorPoolCreateInfo const &rhs) noexcept; +bool operator!=(VkDescriptorPoolCreateInfo const &lhs, + VkDescriptorPoolCreateInfo const &rhs) noexcept; + +bool operator==(VkDescriptorSetAllocateInfo const &lhs, + VkDescriptorSetAllocateInfo const &rhs) noexcept; +bool operator!=(VkDescriptorSetAllocateInfo const &lhs, + VkDescriptorSetAllocateInfo const &rhs) noexcept; + +bool operator==(VkSpecializationMapEntry const &lhs, + VkSpecializationMapEntry const &rhs) noexcept; +bool operator!=(VkSpecializationMapEntry const &lhs, + VkSpecializationMapEntry const &rhs) noexcept; + +bool operator==(VkSpecializationInfo const &lhs, + VkSpecializationInfo const &rhs) noexcept; +bool operator!=(VkSpecializationInfo const &lhs, + VkSpecializationInfo const &rhs) noexcept; + +bool operator==(VkPipelineShaderStageCreateInfo const &lhs, + VkPipelineShaderStageCreateInfo const &rhs) noexcept; +bool operator!=(VkPipelineShaderStageCreateInfo const &lhs, + VkPipelineShaderStageCreateInfo const &rhs) noexcept; + +bool operator==(VkComputePipelineCreateInfo const &lhs, + VkComputePipelineCreateInfo const &rhs) noexcept; +bool operator!=(VkComputePipelineCreateInfo const &lhs, + VkComputePipelineCreateInfo const &rhs) noexcept; + +bool operator==(VkVertexInputBindingDescription const &lhs, + VkVertexInputBindingDescription const &rhs) noexcept; +bool operator!=(VkVertexInputBindingDescription const &lhs, + VkVertexInputBindingDescription const &rhs) noexcept; + +bool operator==(VkVertexInputAttributeDescription const &lhs, + VkVertexInputAttributeDescription const &rhs) noexcept; +bool operator!=(VkVertexInputAttributeDescription const &lhs, + VkVertexInputAttributeDescription const &rhs) noexcept; + +bool operator==(VkPipelineVertexInputStateCreateInfo const &lhs, + VkPipelineVertexInputStateCreateInfo const &rhs) noexcept; +bool operator!=(VkPipelineVertexInputStateCreateInfo const &lhs, + VkPipelineVertexInputStateCreateInfo const &rhs) noexcept; + +bool operator==(VkPipelineInputAssemblyStateCreateInfo const &lhs, + VkPipelineInputAssemblyStateCreateInfo const &rhs) noexcept; +bool operator!=(VkPipelineInputAssemblyStateCreateInfo const &lhs, + VkPipelineInputAssemblyStateCreateInfo const &rhs) noexcept; + +bool operator==(VkPipelineTessellationStateCreateInfo const &lhs, + VkPipelineTessellationStateCreateInfo const &rhs) noexcept; +bool operator!=(VkPipelineTessellationStateCreateInfo const &lhs, + VkPipelineTessellationStateCreateInfo const &rhs) noexcept; + +bool operator==(VkPipelineViewportStateCreateInfo const &lhs, + VkPipelineViewportStateCreateInfo const &rhs) noexcept; +bool operator!=(VkPipelineViewportStateCreateInfo const &lhs, + VkPipelineViewportStateCreateInfo const &rhs) noexcept; + +bool operator==(VkPipelineRasterizationStateCreateInfo const &lhs, + VkPipelineRasterizationStateCreateInfo const &rhs) noexcept; +bool operator!=(VkPipelineRasterizationStateCreateInfo const &lhs, + VkPipelineRasterizationStateCreateInfo const &rhs) noexcept; + +bool operator==(VkPipelineMultisampleStateCreateInfo const &lhs, + VkPipelineMultisampleStateCreateInfo const &rhs) noexcept; +bool operator!=(VkPipelineMultisampleStateCreateInfo const &lhs, + VkPipelineMultisampleStateCreateInfo const &rhs) noexcept; + +bool operator==(VkPipelineColorBlendAttachmentState const &lhs, + VkPipelineColorBlendAttachmentState const &rhs) noexcept; +bool operator!=(VkPipelineColorBlendAttachmentState const &lhs, + VkPipelineColorBlendAttachmentState const &rhs) noexcept; + +bool operator==(VkPipelineColorBlendStateCreateInfo const &lhs, + VkPipelineColorBlendStateCreateInfo const &rhs) noexcept; +bool operator!=(VkPipelineColorBlendStateCreateInfo const &lhs, + VkPipelineColorBlendStateCreateInfo const &rhs) noexcept; + +bool operator==(VkPipelineDynamicStateCreateInfo const &lhs, + VkPipelineDynamicStateCreateInfo const &rhs) noexcept; +bool operator!=(VkPipelineDynamicStateCreateInfo const &lhs, + VkPipelineDynamicStateCreateInfo const &rhs) noexcept; + +bool operator==(VkStencilOpState const &lhs, + VkStencilOpState const &rhs) noexcept; +bool operator!=(VkStencilOpState const &lhs, + VkStencilOpState const &rhs) noexcept; + +bool operator==(VkPipelineDepthStencilStateCreateInfo const &lhs, + VkPipelineDepthStencilStateCreateInfo const &rhs) noexcept; +bool operator!=(VkPipelineDepthStencilStateCreateInfo const &lhs, + VkPipelineDepthStencilStateCreateInfo const &rhs) noexcept; + +bool operator==(VkGraphicsPipelineCreateInfo const &lhs, + VkGraphicsPipelineCreateInfo const &rhs) noexcept; +bool operator!=(VkGraphicsPipelineCreateInfo const &lhs, + VkGraphicsPipelineCreateInfo const &rhs) noexcept; + +bool operator==(VkPipelineCacheCreateInfo const &lhs, + VkPipelineCacheCreateInfo const &rhs) noexcept; +bool operator!=(VkPipelineCacheCreateInfo const &lhs, + VkPipelineCacheCreateInfo const &rhs) noexcept; + +bool operator==(VkPipelineCacheHeaderVersionOne const &lhs, + VkPipelineCacheHeaderVersionOne const &rhs) noexcept; +bool operator!=(VkPipelineCacheHeaderVersionOne const &lhs, + VkPipelineCacheHeaderVersionOne const &rhs) noexcept; + +bool operator==(VkPushConstantRange const &lhs, + VkPushConstantRange const &rhs) noexcept; +bool operator!=(VkPushConstantRange const &lhs, + VkPushConstantRange const &rhs) noexcept; + +bool operator==(VkPipelineLayoutCreateInfo const &lhs, + VkPipelineLayoutCreateInfo const &rhs) noexcept; +bool operator!=(VkPipelineLayoutCreateInfo const &lhs, + VkPipelineLayoutCreateInfo const &rhs) noexcept; + +bool operator==(VkSamplerCreateInfo const &lhs, + VkSamplerCreateInfo const &rhs) noexcept; +bool operator!=(VkSamplerCreateInfo const &lhs, + VkSamplerCreateInfo const &rhs) noexcept; + +bool operator==(VkCommandPoolCreateInfo const &lhs, + VkCommandPoolCreateInfo const &rhs) noexcept; +bool operator!=(VkCommandPoolCreateInfo const &lhs, + VkCommandPoolCreateInfo const &rhs) noexcept; + +bool operator==(VkCommandBufferAllocateInfo const &lhs, + VkCommandBufferAllocateInfo const &rhs) noexcept; +bool operator!=(VkCommandBufferAllocateInfo const &lhs, + VkCommandBufferAllocateInfo const &rhs) noexcept; + +bool operator==(VkCommandBufferInheritanceInfo const &lhs, + VkCommandBufferInheritanceInfo const &rhs) noexcept; +bool operator!=(VkCommandBufferInheritanceInfo const &lhs, + VkCommandBufferInheritanceInfo const &rhs) noexcept; + +bool operator==(VkCommandBufferBeginInfo const &lhs, + VkCommandBufferBeginInfo const &rhs) noexcept; +bool operator!=(VkCommandBufferBeginInfo const &lhs, + VkCommandBufferBeginInfo const &rhs) noexcept; + +bool operator==(VkClearDepthStencilValue const &lhs, + VkClearDepthStencilValue const &rhs) noexcept; +bool operator!=(VkClearDepthStencilValue const &lhs, + VkClearDepthStencilValue const &rhs) noexcept; + +bool operator==(VkAttachmentDescription const &lhs, + VkAttachmentDescription const &rhs) noexcept; +bool operator!=(VkAttachmentDescription const &lhs, + VkAttachmentDescription const &rhs) noexcept; + +bool operator==(VkAttachmentReference const &lhs, + VkAttachmentReference const &rhs) noexcept; +bool operator!=(VkAttachmentReference const &lhs, + VkAttachmentReference const &rhs) noexcept; + +bool operator==(VkSubpassDescription const &lhs, + VkSubpassDescription const &rhs) noexcept; +bool operator!=(VkSubpassDescription const &lhs, + VkSubpassDescription const &rhs) noexcept; + +bool operator==(VkSubpassDependency const &lhs, + VkSubpassDependency const &rhs) noexcept; +bool operator!=(VkSubpassDependency const &lhs, + VkSubpassDependency const &rhs) noexcept; + +bool operator==(VkRenderPassCreateInfo const &lhs, + VkRenderPassCreateInfo const &rhs) noexcept; +bool operator!=(VkRenderPassCreateInfo const &lhs, + VkRenderPassCreateInfo const &rhs) noexcept; + +bool operator==(VkEventCreateInfo const &lhs, + VkEventCreateInfo const &rhs) noexcept; +bool operator!=(VkEventCreateInfo const &lhs, + VkEventCreateInfo const &rhs) noexcept; + +bool operator==(VkFenceCreateInfo const &lhs, + VkFenceCreateInfo const &rhs) noexcept; +bool operator!=(VkFenceCreateInfo const &lhs, + VkFenceCreateInfo const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceFeatures const &lhs, + VkPhysicalDeviceFeatures const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceFeatures const &lhs, + VkPhysicalDeviceFeatures const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceSparseProperties const &lhs, + VkPhysicalDeviceSparseProperties const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceSparseProperties const &lhs, + VkPhysicalDeviceSparseProperties const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceLimits const &lhs, + VkPhysicalDeviceLimits const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceLimits const &lhs, + VkPhysicalDeviceLimits const &rhs) noexcept; + +bool operator==(VkSemaphoreCreateInfo const &lhs, + VkSemaphoreCreateInfo const &rhs) noexcept; +bool operator!=(VkSemaphoreCreateInfo const &lhs, + VkSemaphoreCreateInfo const &rhs) noexcept; + +bool operator==(VkQueryPoolCreateInfo const &lhs, + VkQueryPoolCreateInfo const &rhs) noexcept; +bool operator!=(VkQueryPoolCreateInfo const &lhs, + VkQueryPoolCreateInfo const &rhs) noexcept; + +bool operator==(VkFramebufferCreateInfo const &lhs, + VkFramebufferCreateInfo const &rhs) noexcept; +bool operator!=(VkFramebufferCreateInfo const &lhs, + VkFramebufferCreateInfo const &rhs) noexcept; + +bool operator==(VkDrawIndirectCommand const &lhs, + VkDrawIndirectCommand const &rhs) noexcept; +bool operator!=(VkDrawIndirectCommand const &lhs, + VkDrawIndirectCommand const &rhs) noexcept; + +bool operator==(VkDrawIndexedIndirectCommand const &lhs, + VkDrawIndexedIndirectCommand const &rhs) noexcept; +bool operator!=(VkDrawIndexedIndirectCommand const &lhs, + VkDrawIndexedIndirectCommand const &rhs) noexcept; + +bool operator==(VkDispatchIndirectCommand const &lhs, + VkDispatchIndirectCommand const &rhs) noexcept; +bool operator!=(VkDispatchIndirectCommand const &lhs, + VkDispatchIndirectCommand const &rhs) noexcept; + +bool operator==(VkMultiDrawInfoEXT const &lhs, + VkMultiDrawInfoEXT const &rhs) noexcept; +bool operator!=(VkMultiDrawInfoEXT const &lhs, + VkMultiDrawInfoEXT const &rhs) noexcept; + +bool operator==(VkMultiDrawIndexedInfoEXT const &lhs, + VkMultiDrawIndexedInfoEXT const &rhs) noexcept; +bool operator!=(VkMultiDrawIndexedInfoEXT const &lhs, + VkMultiDrawIndexedInfoEXT const &rhs) noexcept; + +bool operator==(VkSubmitInfo const &lhs, + VkSubmitInfo const &rhs) noexcept; +bool operator!=(VkSubmitInfo const &lhs, + VkSubmitInfo const &rhs) noexcept; + +bool operator==(VkDisplayPropertiesKHR const &lhs, + VkDisplayPropertiesKHR const &rhs) noexcept; +bool operator!=(VkDisplayPropertiesKHR const &lhs, + VkDisplayPropertiesKHR const &rhs) noexcept; + +bool operator==(VkDisplayPlanePropertiesKHR const &lhs, + VkDisplayPlanePropertiesKHR const &rhs) noexcept; +bool operator!=(VkDisplayPlanePropertiesKHR const &lhs, + VkDisplayPlanePropertiesKHR const &rhs) noexcept; + +bool operator==(VkDisplayModeParametersKHR const &lhs, + VkDisplayModeParametersKHR const &rhs) noexcept; +bool operator!=(VkDisplayModeParametersKHR const &lhs, + VkDisplayModeParametersKHR const &rhs) noexcept; + +bool operator==(VkDisplayModePropertiesKHR const &lhs, + VkDisplayModePropertiesKHR const &rhs) noexcept; +bool operator!=(VkDisplayModePropertiesKHR const &lhs, + VkDisplayModePropertiesKHR const &rhs) noexcept; + +bool operator==(VkDisplayModeCreateInfoKHR const &lhs, + VkDisplayModeCreateInfoKHR const &rhs) noexcept; +bool operator!=(VkDisplayModeCreateInfoKHR const &lhs, + VkDisplayModeCreateInfoKHR const &rhs) noexcept; + +bool operator==(VkDisplayPlaneCapabilitiesKHR const &lhs, + VkDisplayPlaneCapabilitiesKHR const &rhs) noexcept; +bool operator!=(VkDisplayPlaneCapabilitiesKHR const &lhs, + VkDisplayPlaneCapabilitiesKHR const &rhs) noexcept; + +bool operator==(VkDisplaySurfaceCreateInfoKHR const &lhs, + VkDisplaySurfaceCreateInfoKHR const &rhs) noexcept; +bool operator!=(VkDisplaySurfaceCreateInfoKHR const &lhs, + VkDisplaySurfaceCreateInfoKHR const &rhs) noexcept; + +bool operator==(VkDisplayPresentInfoKHR const &lhs, + VkDisplayPresentInfoKHR const &rhs) noexcept; +bool operator!=(VkDisplayPresentInfoKHR const &lhs, + VkDisplayPresentInfoKHR const &rhs) noexcept; + +bool operator==(VkSurfaceCapabilitiesKHR const &lhs, + VkSurfaceCapabilitiesKHR const &rhs) noexcept; +bool operator!=(VkSurfaceCapabilitiesKHR const &lhs, + VkSurfaceCapabilitiesKHR const &rhs) noexcept; + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkAndroidSurfaceCreateInfoKHR const &lhs, + VkAndroidSurfaceCreateInfoKHR const &rhs) noexcept; +bool operator!=(VkAndroidSurfaceCreateInfoKHR const &lhs, + VkAndroidSurfaceCreateInfoKHR const &rhs) noexcept; +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_VI_NN +bool operator==(VkViSurfaceCreateInfoNN const &lhs, + VkViSurfaceCreateInfoNN const &rhs) noexcept; +bool operator!=(VkViSurfaceCreateInfoNN const &lhs, + VkViSurfaceCreateInfoNN const &rhs) noexcept; +#endif // VK_USE_PLATFORM_VI_NN + +#ifdef VK_USE_PLATFORM_WAYLAND_KHR +bool operator==(VkWaylandSurfaceCreateInfoKHR const &lhs, + VkWaylandSurfaceCreateInfoKHR const &rhs) noexcept; +bool operator!=(VkWaylandSurfaceCreateInfoKHR const &lhs, + VkWaylandSurfaceCreateInfoKHR const &rhs) noexcept; +#endif // VK_USE_PLATFORM_WAYLAND_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkWin32SurfaceCreateInfoKHR const &lhs, + VkWin32SurfaceCreateInfoKHR const &rhs) noexcept; +bool operator!=(VkWin32SurfaceCreateInfoKHR const &lhs, + VkWin32SurfaceCreateInfoKHR const &rhs) noexcept; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_XLIB_KHR +bool operator==(VkXlibSurfaceCreateInfoKHR const &lhs, + VkXlibSurfaceCreateInfoKHR const &rhs) noexcept; +bool operator!=(VkXlibSurfaceCreateInfoKHR const &lhs, + VkXlibSurfaceCreateInfoKHR const &rhs) noexcept; +#endif // VK_USE_PLATFORM_XLIB_KHR + +#ifdef VK_USE_PLATFORM_XCB_KHR +bool operator==(VkXcbSurfaceCreateInfoKHR const &lhs, + VkXcbSurfaceCreateInfoKHR const &rhs) noexcept; +bool operator!=(VkXcbSurfaceCreateInfoKHR const &lhs, + VkXcbSurfaceCreateInfoKHR const &rhs) noexcept; +#endif // VK_USE_PLATFORM_XCB_KHR + +#ifdef VK_USE_PLATFORM_DIRECTFB_EXT +bool operator==(VkDirectFBSurfaceCreateInfoEXT const &lhs, + VkDirectFBSurfaceCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkDirectFBSurfaceCreateInfoEXT const &lhs, + VkDirectFBSurfaceCreateInfoEXT const &rhs) noexcept; +#endif // VK_USE_PLATFORM_DIRECTFB_EXT + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkImagePipeSurfaceCreateInfoFUCHSIA const &lhs, + VkImagePipeSurfaceCreateInfoFUCHSIA const &rhs) noexcept; +bool operator!=(VkImagePipeSurfaceCreateInfoFUCHSIA const &lhs, + VkImagePipeSurfaceCreateInfoFUCHSIA const &rhs) noexcept; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_GGP +bool operator==(VkStreamDescriptorSurfaceCreateInfoGGP const &lhs, + VkStreamDescriptorSurfaceCreateInfoGGP const &rhs) noexcept; +bool operator!=(VkStreamDescriptorSurfaceCreateInfoGGP const &lhs, + VkStreamDescriptorSurfaceCreateInfoGGP const &rhs) noexcept; +#endif // VK_USE_PLATFORM_GGP + +#ifdef VK_USE_PLATFORM_SCREEN_QNX +bool operator==(VkScreenSurfaceCreateInfoQNX const &lhs, + VkScreenSurfaceCreateInfoQNX const &rhs) noexcept; +bool operator!=(VkScreenSurfaceCreateInfoQNX const &lhs, + VkScreenSurfaceCreateInfoQNX const &rhs) noexcept; +#endif // VK_USE_PLATFORM_SCREEN_QNX + +bool operator==(VkSurfaceFormatKHR const &lhs, + VkSurfaceFormatKHR const &rhs) noexcept; +bool operator!=(VkSurfaceFormatKHR const &lhs, + VkSurfaceFormatKHR const &rhs) noexcept; + +bool operator==(VkSwapchainCreateInfoKHR const &lhs, + VkSwapchainCreateInfoKHR const &rhs) noexcept; +bool operator!=(VkSwapchainCreateInfoKHR const &lhs, + VkSwapchainCreateInfoKHR const &rhs) noexcept; + +bool operator==(VkPresentInfoKHR const &lhs, + VkPresentInfoKHR const &rhs) noexcept; +bool operator!=(VkPresentInfoKHR const &lhs, + VkPresentInfoKHR const &rhs) noexcept; + +bool operator==(VkDebugReportCallbackCreateInfoEXT const &lhs, + VkDebugReportCallbackCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkDebugReportCallbackCreateInfoEXT const &lhs, + VkDebugReportCallbackCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkValidationFlagsEXT const &lhs, + VkValidationFlagsEXT const &rhs) noexcept; +bool operator!=(VkValidationFlagsEXT const &lhs, + VkValidationFlagsEXT const &rhs) noexcept; + +bool operator==(VkValidationFeaturesEXT const &lhs, + VkValidationFeaturesEXT const &rhs) noexcept; +bool operator!=(VkValidationFeaturesEXT const &lhs, + VkValidationFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPipelineRasterizationStateRasterizationOrderAMD const &lhs, + VkPipelineRasterizationStateRasterizationOrderAMD const &rhs) noexcept; +bool operator!=(VkPipelineRasterizationStateRasterizationOrderAMD const &lhs, + VkPipelineRasterizationStateRasterizationOrderAMD const &rhs) noexcept; + +bool operator==(VkDebugMarkerObjectNameInfoEXT const &lhs, + VkDebugMarkerObjectNameInfoEXT const &rhs) noexcept; +bool operator!=(VkDebugMarkerObjectNameInfoEXT const &lhs, + VkDebugMarkerObjectNameInfoEXT const &rhs) noexcept; + +bool operator==(VkDebugMarkerObjectTagInfoEXT const &lhs, + VkDebugMarkerObjectTagInfoEXT const &rhs) noexcept; +bool operator!=(VkDebugMarkerObjectTagInfoEXT const &lhs, + VkDebugMarkerObjectTagInfoEXT const &rhs) noexcept; + +bool operator==(VkDebugMarkerMarkerInfoEXT const &lhs, + VkDebugMarkerMarkerInfoEXT const &rhs) noexcept; +bool operator!=(VkDebugMarkerMarkerInfoEXT const &lhs, + VkDebugMarkerMarkerInfoEXT const &rhs) noexcept; + +bool operator==(VkDedicatedAllocationImageCreateInfoNV const &lhs, + VkDedicatedAllocationImageCreateInfoNV const &rhs) noexcept; +bool operator!=(VkDedicatedAllocationImageCreateInfoNV const &lhs, + VkDedicatedAllocationImageCreateInfoNV const &rhs) noexcept; + +bool operator==(VkDedicatedAllocationBufferCreateInfoNV const &lhs, + VkDedicatedAllocationBufferCreateInfoNV const &rhs) noexcept; +bool operator!=(VkDedicatedAllocationBufferCreateInfoNV const &lhs, + VkDedicatedAllocationBufferCreateInfoNV const &rhs) noexcept; + +bool operator==(VkDedicatedAllocationMemoryAllocateInfoNV const &lhs, + VkDedicatedAllocationMemoryAllocateInfoNV const &rhs) noexcept; +bool operator!=(VkDedicatedAllocationMemoryAllocateInfoNV const &lhs, + VkDedicatedAllocationMemoryAllocateInfoNV const &rhs) noexcept; + +bool operator==(VkExternalImageFormatPropertiesNV const &lhs, + VkExternalImageFormatPropertiesNV const &rhs) noexcept; +bool operator!=(VkExternalImageFormatPropertiesNV const &lhs, + VkExternalImageFormatPropertiesNV const &rhs) noexcept; + +bool operator==(VkExternalMemoryImageCreateInfoNV const &lhs, + VkExternalMemoryImageCreateInfoNV const &rhs) noexcept; +bool operator!=(VkExternalMemoryImageCreateInfoNV const &lhs, + VkExternalMemoryImageCreateInfoNV const &rhs) noexcept; + +bool operator==(VkExportMemoryAllocateInfoNV const &lhs, + VkExportMemoryAllocateInfoNV const &rhs) noexcept; +bool operator!=(VkExportMemoryAllocateInfoNV const &lhs, + VkExportMemoryAllocateInfoNV const &rhs) noexcept; + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkImportMemoryWin32HandleInfoNV const &lhs, + VkImportMemoryWin32HandleInfoNV const &rhs) noexcept; +bool operator!=(VkImportMemoryWin32HandleInfoNV const &lhs, + VkImportMemoryWin32HandleInfoNV const &rhs) noexcept; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkExportMemoryWin32HandleInfoNV const &lhs, + VkExportMemoryWin32HandleInfoNV const &rhs) noexcept; +bool operator!=(VkExportMemoryWin32HandleInfoNV const &lhs, + VkExportMemoryWin32HandleInfoNV const &rhs) noexcept; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkWin32KeyedMutexAcquireReleaseInfoNV const &lhs, + VkWin32KeyedMutexAcquireReleaseInfoNV const &rhs) noexcept; +bool operator!=(VkWin32KeyedMutexAcquireReleaseInfoNV const &lhs, + VkWin32KeyedMutexAcquireReleaseInfoNV const &rhs) noexcept; +#endif // VK_USE_PLATFORM_WIN32_KHR + +bool operator==(VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const &lhs, + VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const &lhs, + VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const &rhs) noexcept; + +bool operator==(VkDevicePrivateDataCreateInfoEXT const &lhs, + VkDevicePrivateDataCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkDevicePrivateDataCreateInfoEXT const &lhs, + VkDevicePrivateDataCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkPrivateDataSlotCreateInfoEXT const &lhs, + VkPrivateDataSlotCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkPrivateDataSlotCreateInfoEXT const &lhs, + VkPrivateDataSlotCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDevicePrivateDataFeaturesEXT const &lhs, + VkPhysicalDevicePrivateDataFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDevicePrivateDataFeaturesEXT const &lhs, + VkPhysicalDevicePrivateDataFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const &lhs, + VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const &lhs, + VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceMultiDrawPropertiesEXT const &lhs, + VkPhysicalDeviceMultiDrawPropertiesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceMultiDrawPropertiesEXT const &lhs, + VkPhysicalDeviceMultiDrawPropertiesEXT const &rhs) noexcept; + +bool operator==(VkGraphicsShaderGroupCreateInfoNV const &lhs, + VkGraphicsShaderGroupCreateInfoNV const &rhs) noexcept; +bool operator!=(VkGraphicsShaderGroupCreateInfoNV const &lhs, + VkGraphicsShaderGroupCreateInfoNV const &rhs) noexcept; + +bool operator==(VkGraphicsPipelineShaderGroupsCreateInfoNV const &lhs, + VkGraphicsPipelineShaderGroupsCreateInfoNV const &rhs) noexcept; +bool operator!=(VkGraphicsPipelineShaderGroupsCreateInfoNV const &lhs, + VkGraphicsPipelineShaderGroupsCreateInfoNV const &rhs) noexcept; + +bool operator==(VkBindShaderGroupIndirectCommandNV const &lhs, + VkBindShaderGroupIndirectCommandNV const &rhs) noexcept; +bool operator!=(VkBindShaderGroupIndirectCommandNV const &lhs, + VkBindShaderGroupIndirectCommandNV const &rhs) noexcept; + +bool operator==(VkBindIndexBufferIndirectCommandNV const &lhs, + VkBindIndexBufferIndirectCommandNV const &rhs) noexcept; +bool operator!=(VkBindIndexBufferIndirectCommandNV const &lhs, + VkBindIndexBufferIndirectCommandNV const &rhs) noexcept; + +bool operator==(VkBindVertexBufferIndirectCommandNV const &lhs, + VkBindVertexBufferIndirectCommandNV const &rhs) noexcept; +bool operator!=(VkBindVertexBufferIndirectCommandNV const &lhs, + VkBindVertexBufferIndirectCommandNV const &rhs) noexcept; + +bool operator==(VkSetStateFlagsIndirectCommandNV const &lhs, + VkSetStateFlagsIndirectCommandNV const &rhs) noexcept; +bool operator!=(VkSetStateFlagsIndirectCommandNV const &lhs, + VkSetStateFlagsIndirectCommandNV const &rhs) noexcept; + +bool operator==(VkIndirectCommandsStreamNV const &lhs, + VkIndirectCommandsStreamNV const &rhs) noexcept; +bool operator!=(VkIndirectCommandsStreamNV const &lhs, + VkIndirectCommandsStreamNV const &rhs) noexcept; + +bool operator==(VkIndirectCommandsLayoutTokenNV const &lhs, + VkIndirectCommandsLayoutTokenNV const &rhs) noexcept; +bool operator!=(VkIndirectCommandsLayoutTokenNV const &lhs, + VkIndirectCommandsLayoutTokenNV const &rhs) noexcept; + +bool operator==(VkIndirectCommandsLayoutCreateInfoNV const &lhs, + VkIndirectCommandsLayoutCreateInfoNV const &rhs) noexcept; +bool operator!=(VkIndirectCommandsLayoutCreateInfoNV const &lhs, + VkIndirectCommandsLayoutCreateInfoNV const &rhs) noexcept; + +bool operator==(VkGeneratedCommandsInfoNV const &lhs, + VkGeneratedCommandsInfoNV const &rhs) noexcept; +bool operator!=(VkGeneratedCommandsInfoNV const &lhs, + VkGeneratedCommandsInfoNV const &rhs) noexcept; + +bool operator==(VkGeneratedCommandsMemoryRequirementsInfoNV const &lhs, + VkGeneratedCommandsMemoryRequirementsInfoNV const &rhs) noexcept; +bool operator!=(VkGeneratedCommandsMemoryRequirementsInfoNV const &lhs, + VkGeneratedCommandsMemoryRequirementsInfoNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceFeatures2 const &lhs, + VkPhysicalDeviceFeatures2 const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceFeatures2 const &lhs, + VkPhysicalDeviceFeatures2 const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceProperties2 const &lhs, + VkPhysicalDeviceProperties2 const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceProperties2 const &lhs, + VkPhysicalDeviceProperties2 const &rhs) noexcept; + +bool operator==(VkFormatProperties2 const &lhs, + VkFormatProperties2 const &rhs) noexcept; +bool operator!=(VkFormatProperties2 const &lhs, + VkFormatProperties2 const &rhs) noexcept; + +bool operator==(VkImageFormatProperties2 const &lhs, + VkImageFormatProperties2 const &rhs) noexcept; +bool operator!=(VkImageFormatProperties2 const &lhs, + VkImageFormatProperties2 const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceImageFormatInfo2 const &lhs, + VkPhysicalDeviceImageFormatInfo2 const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceImageFormatInfo2 const &lhs, + VkPhysicalDeviceImageFormatInfo2 const &rhs) noexcept; + +bool operator==(VkQueueFamilyProperties2 const &lhs, + VkQueueFamilyProperties2 const &rhs) noexcept; +bool operator!=(VkQueueFamilyProperties2 const &lhs, + VkQueueFamilyProperties2 const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceMemoryProperties2 const &lhs, + VkPhysicalDeviceMemoryProperties2 const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceMemoryProperties2 const &lhs, + VkPhysicalDeviceMemoryProperties2 const &rhs) noexcept; + +bool operator==(VkSparseImageFormatProperties2 const &lhs, + VkSparseImageFormatProperties2 const &rhs) noexcept; +bool operator!=(VkSparseImageFormatProperties2 const &lhs, + VkSparseImageFormatProperties2 const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceSparseImageFormatInfo2 const &lhs, + VkPhysicalDeviceSparseImageFormatInfo2 const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceSparseImageFormatInfo2 const &lhs, + VkPhysicalDeviceSparseImageFormatInfo2 const &rhs) noexcept; + +bool operator==(VkPhysicalDevicePushDescriptorPropertiesKHR const &lhs, + VkPhysicalDevicePushDescriptorPropertiesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDevicePushDescriptorPropertiesKHR const &lhs, + VkPhysicalDevicePushDescriptorPropertiesKHR const &rhs) noexcept; + +bool operator==(VkConformanceVersion const &lhs, + VkConformanceVersion const &rhs) noexcept; +bool operator!=(VkConformanceVersion const &lhs, + VkConformanceVersion const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceDriverProperties const &lhs, + VkPhysicalDeviceDriverProperties const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceDriverProperties const &lhs, + VkPhysicalDeviceDriverProperties const &rhs) noexcept; + +bool operator==(VkPresentRegionsKHR const &lhs, + VkPresentRegionsKHR const &rhs) noexcept; +bool operator!=(VkPresentRegionsKHR const &lhs, + VkPresentRegionsKHR const &rhs) noexcept; + +bool operator==(VkPresentRegionKHR const &lhs, + VkPresentRegionKHR const &rhs) noexcept; +bool operator!=(VkPresentRegionKHR const &lhs, + VkPresentRegionKHR const &rhs) noexcept; + +bool operator==(VkRectLayerKHR const &lhs, + VkRectLayerKHR const &rhs) noexcept; +bool operator!=(VkRectLayerKHR const &lhs, + VkRectLayerKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceVariablePointersFeatures const &lhs, + VkPhysicalDeviceVariablePointersFeatures const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceVariablePointersFeatures const &lhs, + VkPhysicalDeviceVariablePointersFeatures const &rhs) noexcept; + +bool operator==(VkExternalMemoryProperties const &lhs, + VkExternalMemoryProperties const &rhs) noexcept; +bool operator!=(VkExternalMemoryProperties const &lhs, + VkExternalMemoryProperties const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceExternalImageFormatInfo const &lhs, + VkPhysicalDeviceExternalImageFormatInfo const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceExternalImageFormatInfo const &lhs, + VkPhysicalDeviceExternalImageFormatInfo const &rhs) noexcept; + +bool operator==(VkExternalImageFormatProperties const &lhs, + VkExternalImageFormatProperties const &rhs) noexcept; +bool operator!=(VkExternalImageFormatProperties const &lhs, + VkExternalImageFormatProperties const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceExternalBufferInfo const &lhs, + VkPhysicalDeviceExternalBufferInfo const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceExternalBufferInfo const &lhs, + VkPhysicalDeviceExternalBufferInfo const &rhs) noexcept; + +bool operator==(VkExternalBufferProperties const &lhs, + VkExternalBufferProperties const &rhs) noexcept; +bool operator!=(VkExternalBufferProperties const &lhs, + VkExternalBufferProperties const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceIDProperties const &lhs, + VkPhysicalDeviceIDProperties const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceIDProperties const &lhs, + VkPhysicalDeviceIDProperties const &rhs) noexcept; + +bool operator==(VkExternalMemoryImageCreateInfo const &lhs, + VkExternalMemoryImageCreateInfo const &rhs) noexcept; +bool operator!=(VkExternalMemoryImageCreateInfo const &lhs, + VkExternalMemoryImageCreateInfo const &rhs) noexcept; + +bool operator==(VkExternalMemoryBufferCreateInfo const &lhs, + VkExternalMemoryBufferCreateInfo const &rhs) noexcept; +bool operator!=(VkExternalMemoryBufferCreateInfo const &lhs, + VkExternalMemoryBufferCreateInfo const &rhs) noexcept; + +bool operator==(VkExportMemoryAllocateInfo const &lhs, + VkExportMemoryAllocateInfo const &rhs) noexcept; +bool operator!=(VkExportMemoryAllocateInfo const &lhs, + VkExportMemoryAllocateInfo const &rhs) noexcept; + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkImportMemoryWin32HandleInfoKHR const &lhs, + VkImportMemoryWin32HandleInfoKHR const &rhs) noexcept; +bool operator!=(VkImportMemoryWin32HandleInfoKHR const &lhs, + VkImportMemoryWin32HandleInfoKHR const &rhs) noexcept; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkExportMemoryWin32HandleInfoKHR const &lhs, + VkExportMemoryWin32HandleInfoKHR const &rhs) noexcept; +bool operator!=(VkExportMemoryWin32HandleInfoKHR const &lhs, + VkExportMemoryWin32HandleInfoKHR const &rhs) noexcept; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkImportMemoryZirconHandleInfoFUCHSIA const &lhs, + VkImportMemoryZirconHandleInfoFUCHSIA const &rhs) noexcept; +bool operator!=(VkImportMemoryZirconHandleInfoFUCHSIA const &lhs, + VkImportMemoryZirconHandleInfoFUCHSIA const &rhs) noexcept; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkMemoryZirconHandlePropertiesFUCHSIA const &lhs, + VkMemoryZirconHandlePropertiesFUCHSIA const &rhs) noexcept; +bool operator!=(VkMemoryZirconHandlePropertiesFUCHSIA const &lhs, + VkMemoryZirconHandlePropertiesFUCHSIA const &rhs) noexcept; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkMemoryGetZirconHandleInfoFUCHSIA const &lhs, + VkMemoryGetZirconHandleInfoFUCHSIA const &rhs) noexcept; +bool operator!=(VkMemoryGetZirconHandleInfoFUCHSIA const &lhs, + VkMemoryGetZirconHandleInfoFUCHSIA const &rhs) noexcept; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkMemoryWin32HandlePropertiesKHR const &lhs, + VkMemoryWin32HandlePropertiesKHR const &rhs) noexcept; +bool operator!=(VkMemoryWin32HandlePropertiesKHR const &lhs, + VkMemoryWin32HandlePropertiesKHR const &rhs) noexcept; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkMemoryGetWin32HandleInfoKHR const &lhs, + VkMemoryGetWin32HandleInfoKHR const &rhs) noexcept; +bool operator!=(VkMemoryGetWin32HandleInfoKHR const &lhs, + VkMemoryGetWin32HandleInfoKHR const &rhs) noexcept; +#endif // VK_USE_PLATFORM_WIN32_KHR + +bool operator==(VkImportMemoryFdInfoKHR const &lhs, + VkImportMemoryFdInfoKHR const &rhs) noexcept; +bool operator!=(VkImportMemoryFdInfoKHR const &lhs, + VkImportMemoryFdInfoKHR const &rhs) noexcept; + +bool operator==(VkMemoryFdPropertiesKHR const &lhs, + VkMemoryFdPropertiesKHR const &rhs) noexcept; +bool operator!=(VkMemoryFdPropertiesKHR const &lhs, + VkMemoryFdPropertiesKHR const &rhs) noexcept; + +bool operator==(VkMemoryGetFdInfoKHR const &lhs, + VkMemoryGetFdInfoKHR const &rhs) noexcept; +bool operator!=(VkMemoryGetFdInfoKHR const &lhs, + VkMemoryGetFdInfoKHR const &rhs) noexcept; + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkWin32KeyedMutexAcquireReleaseInfoKHR const &lhs, + VkWin32KeyedMutexAcquireReleaseInfoKHR const &rhs) noexcept; +bool operator!=(VkWin32KeyedMutexAcquireReleaseInfoKHR const &lhs, + VkWin32KeyedMutexAcquireReleaseInfoKHR const &rhs) noexcept; +#endif // VK_USE_PLATFORM_WIN32_KHR + +bool operator==(VkPhysicalDeviceExternalSemaphoreInfo const &lhs, + VkPhysicalDeviceExternalSemaphoreInfo const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceExternalSemaphoreInfo const &lhs, + VkPhysicalDeviceExternalSemaphoreInfo const &rhs) noexcept; + +bool operator==(VkExternalSemaphoreProperties const &lhs, + VkExternalSemaphoreProperties const &rhs) noexcept; +bool operator!=(VkExternalSemaphoreProperties const &lhs, + VkExternalSemaphoreProperties const &rhs) noexcept; + +bool operator==(VkExportSemaphoreCreateInfo const &lhs, + VkExportSemaphoreCreateInfo const &rhs) noexcept; +bool operator!=(VkExportSemaphoreCreateInfo const &lhs, + VkExportSemaphoreCreateInfo const &rhs) noexcept; + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkImportSemaphoreWin32HandleInfoKHR const &lhs, + VkImportSemaphoreWin32HandleInfoKHR const &rhs) noexcept; +bool operator!=(VkImportSemaphoreWin32HandleInfoKHR const &lhs, + VkImportSemaphoreWin32HandleInfoKHR const &rhs) noexcept; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkExportSemaphoreWin32HandleInfoKHR const &lhs, + VkExportSemaphoreWin32HandleInfoKHR const &rhs) noexcept; +bool operator!=(VkExportSemaphoreWin32HandleInfoKHR const &lhs, + VkExportSemaphoreWin32HandleInfoKHR const &rhs) noexcept; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkD3D12FenceSubmitInfoKHR const &lhs, + VkD3D12FenceSubmitInfoKHR const &rhs) noexcept; +bool operator!=(VkD3D12FenceSubmitInfoKHR const &lhs, + VkD3D12FenceSubmitInfoKHR const &rhs) noexcept; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkSemaphoreGetWin32HandleInfoKHR const &lhs, + VkSemaphoreGetWin32HandleInfoKHR const &rhs) noexcept; +bool operator!=(VkSemaphoreGetWin32HandleInfoKHR const &lhs, + VkSemaphoreGetWin32HandleInfoKHR const &rhs) noexcept; +#endif // VK_USE_PLATFORM_WIN32_KHR + +bool operator==(VkImportSemaphoreFdInfoKHR const &lhs, + VkImportSemaphoreFdInfoKHR const &rhs) noexcept; +bool operator!=(VkImportSemaphoreFdInfoKHR const &lhs, + VkImportSemaphoreFdInfoKHR const &rhs) noexcept; + +bool operator==(VkSemaphoreGetFdInfoKHR const &lhs, + VkSemaphoreGetFdInfoKHR const &rhs) noexcept; +bool operator!=(VkSemaphoreGetFdInfoKHR const &lhs, + VkSemaphoreGetFdInfoKHR const &rhs) noexcept; + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkImportSemaphoreZirconHandleInfoFUCHSIA const &lhs, + VkImportSemaphoreZirconHandleInfoFUCHSIA const &rhs) noexcept; +bool operator!=(VkImportSemaphoreZirconHandleInfoFUCHSIA const &lhs, + VkImportSemaphoreZirconHandleInfoFUCHSIA const &rhs) noexcept; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkSemaphoreGetZirconHandleInfoFUCHSIA const &lhs, + VkSemaphoreGetZirconHandleInfoFUCHSIA const &rhs) noexcept; +bool operator!=(VkSemaphoreGetZirconHandleInfoFUCHSIA const &lhs, + VkSemaphoreGetZirconHandleInfoFUCHSIA const &rhs) noexcept; +#endif // VK_USE_PLATFORM_FUCHSIA + +bool operator==(VkPhysicalDeviceExternalFenceInfo const &lhs, + VkPhysicalDeviceExternalFenceInfo const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceExternalFenceInfo const &lhs, + VkPhysicalDeviceExternalFenceInfo const &rhs) noexcept; + +bool operator==(VkExternalFenceProperties const &lhs, + VkExternalFenceProperties const &rhs) noexcept; +bool operator!=(VkExternalFenceProperties const &lhs, + VkExternalFenceProperties const &rhs) noexcept; + +bool operator==(VkExportFenceCreateInfo const &lhs, + VkExportFenceCreateInfo const &rhs) noexcept; +bool operator!=(VkExportFenceCreateInfo const &lhs, + VkExportFenceCreateInfo const &rhs) noexcept; + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkImportFenceWin32HandleInfoKHR const &lhs, + VkImportFenceWin32HandleInfoKHR const &rhs) noexcept; +bool operator!=(VkImportFenceWin32HandleInfoKHR const &lhs, + VkImportFenceWin32HandleInfoKHR const &rhs) noexcept; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkExportFenceWin32HandleInfoKHR const &lhs, + VkExportFenceWin32HandleInfoKHR const &rhs) noexcept; +bool operator!=(VkExportFenceWin32HandleInfoKHR const &lhs, + VkExportFenceWin32HandleInfoKHR const &rhs) noexcept; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkFenceGetWin32HandleInfoKHR const &lhs, + VkFenceGetWin32HandleInfoKHR const &rhs) noexcept; +bool operator!=(VkFenceGetWin32HandleInfoKHR const &lhs, + VkFenceGetWin32HandleInfoKHR const &rhs) noexcept; +#endif // VK_USE_PLATFORM_WIN32_KHR + +bool operator==(VkImportFenceFdInfoKHR const &lhs, + VkImportFenceFdInfoKHR const &rhs) noexcept; +bool operator!=(VkImportFenceFdInfoKHR const &lhs, + VkImportFenceFdInfoKHR const &rhs) noexcept; + +bool operator==(VkFenceGetFdInfoKHR const &lhs, + VkFenceGetFdInfoKHR const &rhs) noexcept; +bool operator!=(VkFenceGetFdInfoKHR const &lhs, + VkFenceGetFdInfoKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceMultiviewFeatures const &lhs, + VkPhysicalDeviceMultiviewFeatures const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceMultiviewFeatures const &lhs, + VkPhysicalDeviceMultiviewFeatures const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceMultiviewProperties const &lhs, + VkPhysicalDeviceMultiviewProperties const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceMultiviewProperties const &lhs, + VkPhysicalDeviceMultiviewProperties const &rhs) noexcept; + +bool operator==(VkRenderPassMultiviewCreateInfo const &lhs, + VkRenderPassMultiviewCreateInfo const &rhs) noexcept; +bool operator!=(VkRenderPassMultiviewCreateInfo const &lhs, + VkRenderPassMultiviewCreateInfo const &rhs) noexcept; + +bool operator==(VkSurfaceCapabilities2EXT const &lhs, + VkSurfaceCapabilities2EXT const &rhs) noexcept; +bool operator!=(VkSurfaceCapabilities2EXT const &lhs, + VkSurfaceCapabilities2EXT const &rhs) noexcept; + +bool operator==(VkDisplayPowerInfoEXT const &lhs, + VkDisplayPowerInfoEXT const &rhs) noexcept; +bool operator!=(VkDisplayPowerInfoEXT const &lhs, + VkDisplayPowerInfoEXT const &rhs) noexcept; + +bool operator==(VkDeviceEventInfoEXT const &lhs, + VkDeviceEventInfoEXT const &rhs) noexcept; +bool operator!=(VkDeviceEventInfoEXT const &lhs, + VkDeviceEventInfoEXT const &rhs) noexcept; + +bool operator==(VkDisplayEventInfoEXT const &lhs, + VkDisplayEventInfoEXT const &rhs) noexcept; +bool operator!=(VkDisplayEventInfoEXT const &lhs, + VkDisplayEventInfoEXT const &rhs) noexcept; + +bool operator==(VkSwapchainCounterCreateInfoEXT const &lhs, + VkSwapchainCounterCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkSwapchainCounterCreateInfoEXT const &lhs, + VkSwapchainCounterCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceGroupProperties const &lhs, + VkPhysicalDeviceGroupProperties const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceGroupProperties const &lhs, + VkPhysicalDeviceGroupProperties const &rhs) noexcept; + +bool operator==(VkMemoryAllocateFlagsInfo const &lhs, + VkMemoryAllocateFlagsInfo const &rhs) noexcept; +bool operator!=(VkMemoryAllocateFlagsInfo const &lhs, + VkMemoryAllocateFlagsInfo const &rhs) noexcept; + +bool operator==(VkBindBufferMemoryInfo const &lhs, + VkBindBufferMemoryInfo const &rhs) noexcept; +bool operator!=(VkBindBufferMemoryInfo const &lhs, + VkBindBufferMemoryInfo const &rhs) noexcept; + +bool operator==(VkBindBufferMemoryDeviceGroupInfo const &lhs, + VkBindBufferMemoryDeviceGroupInfo const &rhs) noexcept; +bool operator!=(VkBindBufferMemoryDeviceGroupInfo const &lhs, + VkBindBufferMemoryDeviceGroupInfo const &rhs) noexcept; + +bool operator==(VkBindImageMemoryInfo const &lhs, + VkBindImageMemoryInfo const &rhs) noexcept; +bool operator!=(VkBindImageMemoryInfo const &lhs, + VkBindImageMemoryInfo const &rhs) noexcept; + +bool operator==(VkBindImageMemoryDeviceGroupInfo const &lhs, + VkBindImageMemoryDeviceGroupInfo const &rhs) noexcept; +bool operator!=(VkBindImageMemoryDeviceGroupInfo const &lhs, + VkBindImageMemoryDeviceGroupInfo const &rhs) noexcept; + +bool operator==(VkDeviceGroupRenderPassBeginInfo const &lhs, + VkDeviceGroupRenderPassBeginInfo const &rhs) noexcept; +bool operator!=(VkDeviceGroupRenderPassBeginInfo const &lhs, + VkDeviceGroupRenderPassBeginInfo const &rhs) noexcept; + +bool operator==(VkDeviceGroupCommandBufferBeginInfo const &lhs, + VkDeviceGroupCommandBufferBeginInfo const &rhs) noexcept; +bool operator!=(VkDeviceGroupCommandBufferBeginInfo const &lhs, + VkDeviceGroupCommandBufferBeginInfo const &rhs) noexcept; + +bool operator==(VkDeviceGroupSubmitInfo const &lhs, + VkDeviceGroupSubmitInfo const &rhs) noexcept; +bool operator!=(VkDeviceGroupSubmitInfo const &lhs, + VkDeviceGroupSubmitInfo const &rhs) noexcept; + +bool operator==(VkDeviceGroupBindSparseInfo const &lhs, + VkDeviceGroupBindSparseInfo const &rhs) noexcept; +bool operator!=(VkDeviceGroupBindSparseInfo const &lhs, + VkDeviceGroupBindSparseInfo const &rhs) noexcept; + +bool operator==(VkDeviceGroupPresentCapabilitiesKHR const &lhs, + VkDeviceGroupPresentCapabilitiesKHR const &rhs) noexcept; +bool operator!=(VkDeviceGroupPresentCapabilitiesKHR const &lhs, + VkDeviceGroupPresentCapabilitiesKHR const &rhs) noexcept; + +bool operator==(VkImageSwapchainCreateInfoKHR const &lhs, + VkImageSwapchainCreateInfoKHR const &rhs) noexcept; +bool operator!=(VkImageSwapchainCreateInfoKHR const &lhs, + VkImageSwapchainCreateInfoKHR const &rhs) noexcept; + +bool operator==(VkBindImageMemorySwapchainInfoKHR const &lhs, + VkBindImageMemorySwapchainInfoKHR const &rhs) noexcept; +bool operator!=(VkBindImageMemorySwapchainInfoKHR const &lhs, + VkBindImageMemorySwapchainInfoKHR const &rhs) noexcept; + +bool operator==(VkAcquireNextImageInfoKHR const &lhs, + VkAcquireNextImageInfoKHR const &rhs) noexcept; +bool operator!=(VkAcquireNextImageInfoKHR const &lhs, + VkAcquireNextImageInfoKHR const &rhs) noexcept; + +bool operator==(VkDeviceGroupPresentInfoKHR const &lhs, + VkDeviceGroupPresentInfoKHR const &rhs) noexcept; +bool operator!=(VkDeviceGroupPresentInfoKHR const &lhs, + VkDeviceGroupPresentInfoKHR const &rhs) noexcept; + +bool operator==(VkDeviceGroupDeviceCreateInfo const &lhs, + VkDeviceGroupDeviceCreateInfo const &rhs) noexcept; +bool operator!=(VkDeviceGroupDeviceCreateInfo const &lhs, + VkDeviceGroupDeviceCreateInfo const &rhs) noexcept; + +bool operator==(VkDeviceGroupSwapchainCreateInfoKHR const &lhs, + VkDeviceGroupSwapchainCreateInfoKHR const &rhs) noexcept; +bool operator!=(VkDeviceGroupSwapchainCreateInfoKHR const &lhs, + VkDeviceGroupSwapchainCreateInfoKHR const &rhs) noexcept; + +bool operator==(VkDescriptorUpdateTemplateEntry const &lhs, + VkDescriptorUpdateTemplateEntry const &rhs) noexcept; +bool operator!=(VkDescriptorUpdateTemplateEntry const &lhs, + VkDescriptorUpdateTemplateEntry const &rhs) noexcept; + +bool operator==(VkDescriptorUpdateTemplateCreateInfo const &lhs, + VkDescriptorUpdateTemplateCreateInfo const &rhs) noexcept; +bool operator!=(VkDescriptorUpdateTemplateCreateInfo const &lhs, + VkDescriptorUpdateTemplateCreateInfo const &rhs) noexcept; + +bool operator==(VkXYColorEXT const &lhs, + VkXYColorEXT const &rhs) noexcept; +bool operator!=(VkXYColorEXT const &lhs, + VkXYColorEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDevicePresentIdFeaturesKHR const &lhs, + VkPhysicalDevicePresentIdFeaturesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDevicePresentIdFeaturesKHR const &lhs, + VkPhysicalDevicePresentIdFeaturesKHR const &rhs) noexcept; + +bool operator==(VkPresentIdKHR const &lhs, + VkPresentIdKHR const &rhs) noexcept; +bool operator!=(VkPresentIdKHR const &lhs, + VkPresentIdKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDevicePresentWaitFeaturesKHR const &lhs, + VkPhysicalDevicePresentWaitFeaturesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDevicePresentWaitFeaturesKHR const &lhs, + VkPhysicalDevicePresentWaitFeaturesKHR const &rhs) noexcept; + +bool operator==(VkHdrMetadataEXT const &lhs, + VkHdrMetadataEXT const &rhs) noexcept; +bool operator!=(VkHdrMetadataEXT const &lhs, + VkHdrMetadataEXT const &rhs) noexcept; + +bool operator==(VkDisplayNativeHdrSurfaceCapabilitiesAMD const &lhs, + VkDisplayNativeHdrSurfaceCapabilitiesAMD const &rhs) noexcept; +bool operator!=(VkDisplayNativeHdrSurfaceCapabilitiesAMD const &lhs, + VkDisplayNativeHdrSurfaceCapabilitiesAMD const &rhs) noexcept; + +bool operator==(VkSwapchainDisplayNativeHdrCreateInfoAMD const &lhs, + VkSwapchainDisplayNativeHdrCreateInfoAMD const &rhs) noexcept; +bool operator!=(VkSwapchainDisplayNativeHdrCreateInfoAMD const &lhs, + VkSwapchainDisplayNativeHdrCreateInfoAMD const &rhs) noexcept; + +bool operator==(VkRefreshCycleDurationGOOGLE const &lhs, + VkRefreshCycleDurationGOOGLE const &rhs) noexcept; +bool operator!=(VkRefreshCycleDurationGOOGLE const &lhs, + VkRefreshCycleDurationGOOGLE const &rhs) noexcept; + +bool operator==(VkPastPresentationTimingGOOGLE const &lhs, + VkPastPresentationTimingGOOGLE const &rhs) noexcept; +bool operator!=(VkPastPresentationTimingGOOGLE const &lhs, + VkPastPresentationTimingGOOGLE const &rhs) noexcept; + +bool operator==(VkPresentTimesInfoGOOGLE const &lhs, + VkPresentTimesInfoGOOGLE const &rhs) noexcept; +bool operator!=(VkPresentTimesInfoGOOGLE const &lhs, + VkPresentTimesInfoGOOGLE const &rhs) noexcept; + +bool operator==(VkPresentTimeGOOGLE const &lhs, + VkPresentTimeGOOGLE const &rhs) noexcept; +bool operator!=(VkPresentTimeGOOGLE const &lhs, + VkPresentTimeGOOGLE const &rhs) noexcept; + +#ifdef VK_USE_PLATFORM_IOS_MVK +bool operator==(VkIOSSurfaceCreateInfoMVK const &lhs, + VkIOSSurfaceCreateInfoMVK const &rhs) noexcept; +bool operator!=(VkIOSSurfaceCreateInfoMVK const &lhs, + VkIOSSurfaceCreateInfoMVK const &rhs) noexcept; +#endif // VK_USE_PLATFORM_IOS_MVK + +#ifdef VK_USE_PLATFORM_MACOS_MVK +bool operator==(VkMacOSSurfaceCreateInfoMVK const &lhs, + VkMacOSSurfaceCreateInfoMVK const &rhs) noexcept; +bool operator!=(VkMacOSSurfaceCreateInfoMVK const &lhs, + VkMacOSSurfaceCreateInfoMVK const &rhs) noexcept; +#endif // VK_USE_PLATFORM_MACOS_MVK + +#ifdef VK_USE_PLATFORM_METAL_EXT +bool operator==(VkMetalSurfaceCreateInfoEXT const &lhs, + VkMetalSurfaceCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkMetalSurfaceCreateInfoEXT const &lhs, + VkMetalSurfaceCreateInfoEXT const &rhs) noexcept; +#endif // VK_USE_PLATFORM_METAL_EXT + +bool operator==(VkViewportWScalingNV const &lhs, + VkViewportWScalingNV const &rhs) noexcept; +bool operator!=(VkViewportWScalingNV const &lhs, + VkViewportWScalingNV const &rhs) noexcept; + +bool operator==(VkPipelineViewportWScalingStateCreateInfoNV const &lhs, + VkPipelineViewportWScalingStateCreateInfoNV const &rhs) noexcept; +bool operator!=(VkPipelineViewportWScalingStateCreateInfoNV const &lhs, + VkPipelineViewportWScalingStateCreateInfoNV const &rhs) noexcept; + +bool operator==(VkViewportSwizzleNV const &lhs, + VkViewportSwizzleNV const &rhs) noexcept; +bool operator!=(VkViewportSwizzleNV const &lhs, + VkViewportSwizzleNV const &rhs) noexcept; + +bool operator==(VkPipelineViewportSwizzleStateCreateInfoNV const &lhs, + VkPipelineViewportSwizzleStateCreateInfoNV const &rhs) noexcept; +bool operator!=(VkPipelineViewportSwizzleStateCreateInfoNV const &lhs, + VkPipelineViewportSwizzleStateCreateInfoNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceDiscardRectanglePropertiesEXT const &lhs, + VkPhysicalDeviceDiscardRectanglePropertiesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceDiscardRectanglePropertiesEXT const &lhs, + VkPhysicalDeviceDiscardRectanglePropertiesEXT const &rhs) noexcept; + +bool operator==(VkPipelineDiscardRectangleStateCreateInfoEXT const &lhs, + VkPipelineDiscardRectangleStateCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkPipelineDiscardRectangleStateCreateInfoEXT const &lhs, + VkPipelineDiscardRectangleStateCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const &lhs, + VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const &lhs, + VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const &rhs) noexcept; + +bool operator==(VkInputAttachmentAspectReference const &lhs, + VkInputAttachmentAspectReference const &rhs) noexcept; +bool operator!=(VkInputAttachmentAspectReference const &lhs, + VkInputAttachmentAspectReference const &rhs) noexcept; + +bool operator==(VkRenderPassInputAttachmentAspectCreateInfo const &lhs, + VkRenderPassInputAttachmentAspectCreateInfo const &rhs) noexcept; +bool operator!=(VkRenderPassInputAttachmentAspectCreateInfo const &lhs, + VkRenderPassInputAttachmentAspectCreateInfo const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceSurfaceInfo2KHR const &lhs, + VkPhysicalDeviceSurfaceInfo2KHR const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceSurfaceInfo2KHR const &lhs, + VkPhysicalDeviceSurfaceInfo2KHR const &rhs) noexcept; + +bool operator==(VkSurfaceCapabilities2KHR const &lhs, + VkSurfaceCapabilities2KHR const &rhs) noexcept; +bool operator!=(VkSurfaceCapabilities2KHR const &lhs, + VkSurfaceCapabilities2KHR const &rhs) noexcept; + +bool operator==(VkSurfaceFormat2KHR const &lhs, + VkSurfaceFormat2KHR const &rhs) noexcept; +bool operator!=(VkSurfaceFormat2KHR const &lhs, + VkSurfaceFormat2KHR const &rhs) noexcept; + +bool operator==(VkDisplayProperties2KHR const &lhs, + VkDisplayProperties2KHR const &rhs) noexcept; +bool operator!=(VkDisplayProperties2KHR const &lhs, + VkDisplayProperties2KHR const &rhs) noexcept; + +bool operator==(VkDisplayPlaneProperties2KHR const &lhs, + VkDisplayPlaneProperties2KHR const &rhs) noexcept; +bool operator!=(VkDisplayPlaneProperties2KHR const &lhs, + VkDisplayPlaneProperties2KHR const &rhs) noexcept; + +bool operator==(VkDisplayModeProperties2KHR const &lhs, + VkDisplayModeProperties2KHR const &rhs) noexcept; +bool operator!=(VkDisplayModeProperties2KHR const &lhs, + VkDisplayModeProperties2KHR const &rhs) noexcept; + +bool operator==(VkDisplayPlaneInfo2KHR const &lhs, + VkDisplayPlaneInfo2KHR const &rhs) noexcept; +bool operator!=(VkDisplayPlaneInfo2KHR const &lhs, + VkDisplayPlaneInfo2KHR const &rhs) noexcept; + +bool operator==(VkDisplayPlaneCapabilities2KHR const &lhs, + VkDisplayPlaneCapabilities2KHR const &rhs) noexcept; +bool operator!=(VkDisplayPlaneCapabilities2KHR const &lhs, + VkDisplayPlaneCapabilities2KHR const &rhs) noexcept; + +bool operator==(VkSharedPresentSurfaceCapabilitiesKHR const &lhs, + VkSharedPresentSurfaceCapabilitiesKHR const &rhs) noexcept; +bool operator!=(VkSharedPresentSurfaceCapabilitiesKHR const &lhs, + VkSharedPresentSurfaceCapabilitiesKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDevice16BitStorageFeatures const &lhs, + VkPhysicalDevice16BitStorageFeatures const &rhs) noexcept; +bool operator!=(VkPhysicalDevice16BitStorageFeatures const &lhs, + VkPhysicalDevice16BitStorageFeatures const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceSubgroupProperties const &lhs, + VkPhysicalDeviceSubgroupProperties const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceSubgroupProperties const &lhs, + VkPhysicalDeviceSubgroupProperties const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const &lhs, + VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const &lhs, + VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const &rhs) noexcept; + +bool operator==(VkBufferMemoryRequirementsInfo2 const &lhs, + VkBufferMemoryRequirementsInfo2 const &rhs) noexcept; +bool operator!=(VkBufferMemoryRequirementsInfo2 const &lhs, + VkBufferMemoryRequirementsInfo2 const &rhs) noexcept; + +bool operator==(VkDeviceBufferMemoryRequirementsKHR const &lhs, + VkDeviceBufferMemoryRequirementsKHR const &rhs) noexcept; +bool operator!=(VkDeviceBufferMemoryRequirementsKHR const &lhs, + VkDeviceBufferMemoryRequirementsKHR const &rhs) noexcept; + +bool operator==(VkImageMemoryRequirementsInfo2 const &lhs, + VkImageMemoryRequirementsInfo2 const &rhs) noexcept; +bool operator!=(VkImageMemoryRequirementsInfo2 const &lhs, + VkImageMemoryRequirementsInfo2 const &rhs) noexcept; + +bool operator==(VkImageSparseMemoryRequirementsInfo2 const &lhs, + VkImageSparseMemoryRequirementsInfo2 const &rhs) noexcept; +bool operator!=(VkImageSparseMemoryRequirementsInfo2 const &lhs, + VkImageSparseMemoryRequirementsInfo2 const &rhs) noexcept; + +bool operator==(VkDeviceImageMemoryRequirementsKHR const &lhs, + VkDeviceImageMemoryRequirementsKHR const &rhs) noexcept; +bool operator!=(VkDeviceImageMemoryRequirementsKHR const &lhs, + VkDeviceImageMemoryRequirementsKHR const &rhs) noexcept; + +bool operator==(VkMemoryRequirements2 const &lhs, + VkMemoryRequirements2 const &rhs) noexcept; +bool operator!=(VkMemoryRequirements2 const &lhs, + VkMemoryRequirements2 const &rhs) noexcept; + +bool operator==(VkSparseImageMemoryRequirements2 const &lhs, + VkSparseImageMemoryRequirements2 const &rhs) noexcept; +bool operator!=(VkSparseImageMemoryRequirements2 const &lhs, + VkSparseImageMemoryRequirements2 const &rhs) noexcept; + +bool operator==(VkPhysicalDevicePointClippingProperties const &lhs, + VkPhysicalDevicePointClippingProperties const &rhs) noexcept; +bool operator!=(VkPhysicalDevicePointClippingProperties const &lhs, + VkPhysicalDevicePointClippingProperties const &rhs) noexcept; + +bool operator==(VkMemoryDedicatedRequirements const &lhs, + VkMemoryDedicatedRequirements const &rhs) noexcept; +bool operator!=(VkMemoryDedicatedRequirements const &lhs, + VkMemoryDedicatedRequirements const &rhs) noexcept; + +bool operator==(VkMemoryDedicatedAllocateInfo const &lhs, + VkMemoryDedicatedAllocateInfo const &rhs) noexcept; +bool operator!=(VkMemoryDedicatedAllocateInfo const &lhs, + VkMemoryDedicatedAllocateInfo const &rhs) noexcept; + +bool operator==(VkImageViewUsageCreateInfo const &lhs, + VkImageViewUsageCreateInfo const &rhs) noexcept; +bool operator!=(VkImageViewUsageCreateInfo const &lhs, + VkImageViewUsageCreateInfo const &rhs) noexcept; + +bool operator==(VkPipelineTessellationDomainOriginStateCreateInfo const &lhs, + VkPipelineTessellationDomainOriginStateCreateInfo const &rhs) noexcept; +bool operator!=(VkPipelineTessellationDomainOriginStateCreateInfo const &lhs, + VkPipelineTessellationDomainOriginStateCreateInfo const &rhs) noexcept; + +bool operator==(VkSamplerYcbcrConversionInfo const &lhs, + VkSamplerYcbcrConversionInfo const &rhs) noexcept; +bool operator!=(VkSamplerYcbcrConversionInfo const &lhs, + VkSamplerYcbcrConversionInfo const &rhs) noexcept; + +bool operator==(VkSamplerYcbcrConversionCreateInfo const &lhs, + VkSamplerYcbcrConversionCreateInfo const &rhs) noexcept; +bool operator!=(VkSamplerYcbcrConversionCreateInfo const &lhs, + VkSamplerYcbcrConversionCreateInfo const &rhs) noexcept; + +bool operator==(VkBindImagePlaneMemoryInfo const &lhs, + VkBindImagePlaneMemoryInfo const &rhs) noexcept; +bool operator!=(VkBindImagePlaneMemoryInfo const &lhs, + VkBindImagePlaneMemoryInfo const &rhs) noexcept; + +bool operator==(VkImagePlaneMemoryRequirementsInfo const &lhs, + VkImagePlaneMemoryRequirementsInfo const &rhs) noexcept; +bool operator!=(VkImagePlaneMemoryRequirementsInfo const &lhs, + VkImagePlaneMemoryRequirementsInfo const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceSamplerYcbcrConversionFeatures const &lhs, + VkPhysicalDeviceSamplerYcbcrConversionFeatures const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceSamplerYcbcrConversionFeatures const &lhs, + VkPhysicalDeviceSamplerYcbcrConversionFeatures const &rhs) noexcept; + +bool operator==(VkSamplerYcbcrConversionImageFormatProperties const &lhs, + VkSamplerYcbcrConversionImageFormatProperties const &rhs) noexcept; +bool operator!=(VkSamplerYcbcrConversionImageFormatProperties const &lhs, + VkSamplerYcbcrConversionImageFormatProperties const &rhs) noexcept; + +bool operator==(VkTextureLODGatherFormatPropertiesAMD const &lhs, + VkTextureLODGatherFormatPropertiesAMD const &rhs) noexcept; +bool operator!=(VkTextureLODGatherFormatPropertiesAMD const &lhs, + VkTextureLODGatherFormatPropertiesAMD const &rhs) noexcept; + +bool operator==(VkConditionalRenderingBeginInfoEXT const &lhs, + VkConditionalRenderingBeginInfoEXT const &rhs) noexcept; +bool operator!=(VkConditionalRenderingBeginInfoEXT const &lhs, + VkConditionalRenderingBeginInfoEXT const &rhs) noexcept; + +bool operator==(VkProtectedSubmitInfo const &lhs, + VkProtectedSubmitInfo const &rhs) noexcept; +bool operator!=(VkProtectedSubmitInfo const &lhs, + VkProtectedSubmitInfo const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceProtectedMemoryFeatures const &lhs, + VkPhysicalDeviceProtectedMemoryFeatures const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceProtectedMemoryFeatures const &lhs, + VkPhysicalDeviceProtectedMemoryFeatures const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceProtectedMemoryProperties const &lhs, + VkPhysicalDeviceProtectedMemoryProperties const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceProtectedMemoryProperties const &lhs, + VkPhysicalDeviceProtectedMemoryProperties const &rhs) noexcept; + +bool operator==(VkDeviceQueueInfo2 const &lhs, + VkDeviceQueueInfo2 const &rhs) noexcept; +bool operator!=(VkDeviceQueueInfo2 const &lhs, + VkDeviceQueueInfo2 const &rhs) noexcept; + +bool operator==(VkPipelineCoverageToColorStateCreateInfoNV const &lhs, + VkPipelineCoverageToColorStateCreateInfoNV const &rhs) noexcept; +bool operator!=(VkPipelineCoverageToColorStateCreateInfoNV const &lhs, + VkPipelineCoverageToColorStateCreateInfoNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceSamplerFilterMinmaxProperties const &lhs, + VkPhysicalDeviceSamplerFilterMinmaxProperties const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceSamplerFilterMinmaxProperties const &lhs, + VkPhysicalDeviceSamplerFilterMinmaxProperties const &rhs) noexcept; + +bool operator==(VkSampleLocationEXT const &lhs, + VkSampleLocationEXT const &rhs) noexcept; +bool operator!=(VkSampleLocationEXT const &lhs, + VkSampleLocationEXT const &rhs) noexcept; + +bool operator==(VkSampleLocationsInfoEXT const &lhs, + VkSampleLocationsInfoEXT const &rhs) noexcept; +bool operator!=(VkSampleLocationsInfoEXT const &lhs, + VkSampleLocationsInfoEXT const &rhs) noexcept; + +bool operator==(VkAttachmentSampleLocationsEXT const &lhs, + VkAttachmentSampleLocationsEXT const &rhs) noexcept; +bool operator!=(VkAttachmentSampleLocationsEXT const &lhs, + VkAttachmentSampleLocationsEXT const &rhs) noexcept; + +bool operator==(VkSubpassSampleLocationsEXT const &lhs, + VkSubpassSampleLocationsEXT const &rhs) noexcept; +bool operator!=(VkSubpassSampleLocationsEXT const &lhs, + VkSubpassSampleLocationsEXT const &rhs) noexcept; + +bool operator==(VkRenderPassSampleLocationsBeginInfoEXT const &lhs, + VkRenderPassSampleLocationsBeginInfoEXT const &rhs) noexcept; +bool operator!=(VkRenderPassSampleLocationsBeginInfoEXT const &lhs, + VkRenderPassSampleLocationsBeginInfoEXT const &rhs) noexcept; + +bool operator==(VkPipelineSampleLocationsStateCreateInfoEXT const &lhs, + VkPipelineSampleLocationsStateCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkPipelineSampleLocationsStateCreateInfoEXT const &lhs, + VkPipelineSampleLocationsStateCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceSampleLocationsPropertiesEXT const &lhs, + VkPhysicalDeviceSampleLocationsPropertiesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceSampleLocationsPropertiesEXT const &lhs, + VkPhysicalDeviceSampleLocationsPropertiesEXT const &rhs) noexcept; + +bool operator==(VkMultisamplePropertiesEXT const &lhs, + VkMultisamplePropertiesEXT const &rhs) noexcept; +bool operator!=(VkMultisamplePropertiesEXT const &lhs, + VkMultisamplePropertiesEXT const &rhs) noexcept; + +bool operator==(VkSamplerReductionModeCreateInfo const &lhs, + VkSamplerReductionModeCreateInfo const &rhs) noexcept; +bool operator!=(VkSamplerReductionModeCreateInfo const &lhs, + VkSamplerReductionModeCreateInfo const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const &lhs, + VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const &lhs, + VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceMultiDrawFeaturesEXT const &lhs, + VkPhysicalDeviceMultiDrawFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceMultiDrawFeaturesEXT const &lhs, + VkPhysicalDeviceMultiDrawFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const &lhs, + VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const &lhs, + VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const &rhs) noexcept; + +bool operator==(VkPipelineColorBlendAdvancedStateCreateInfoEXT const &lhs, + VkPipelineColorBlendAdvancedStateCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkPipelineColorBlendAdvancedStateCreateInfoEXT const &lhs, + VkPipelineColorBlendAdvancedStateCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceInlineUniformBlockFeaturesEXT const &lhs, + VkPhysicalDeviceInlineUniformBlockFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceInlineUniformBlockFeaturesEXT const &lhs, + VkPhysicalDeviceInlineUniformBlockFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceInlineUniformBlockPropertiesEXT const &lhs, + VkPhysicalDeviceInlineUniformBlockPropertiesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceInlineUniformBlockPropertiesEXT const &lhs, + VkPhysicalDeviceInlineUniformBlockPropertiesEXT const &rhs) noexcept; + +bool operator==(VkWriteDescriptorSetInlineUniformBlockEXT const &lhs, + VkWriteDescriptorSetInlineUniformBlockEXT const &rhs) noexcept; +bool operator!=(VkWriteDescriptorSetInlineUniformBlockEXT const &lhs, + VkWriteDescriptorSetInlineUniformBlockEXT const &rhs) noexcept; + +bool operator==(VkDescriptorPoolInlineUniformBlockCreateInfoEXT const &lhs, + VkDescriptorPoolInlineUniformBlockCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkDescriptorPoolInlineUniformBlockCreateInfoEXT const &lhs, + VkDescriptorPoolInlineUniformBlockCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkPipelineCoverageModulationStateCreateInfoNV const &lhs, + VkPipelineCoverageModulationStateCreateInfoNV const &rhs) noexcept; +bool operator!=(VkPipelineCoverageModulationStateCreateInfoNV const &lhs, + VkPipelineCoverageModulationStateCreateInfoNV const &rhs) noexcept; + +bool operator==(VkImageFormatListCreateInfo const &lhs, + VkImageFormatListCreateInfo const &rhs) noexcept; +bool operator!=(VkImageFormatListCreateInfo const &lhs, + VkImageFormatListCreateInfo const &rhs) noexcept; + +bool operator==(VkValidationCacheCreateInfoEXT const &lhs, + VkValidationCacheCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkValidationCacheCreateInfoEXT const &lhs, + VkValidationCacheCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkShaderModuleValidationCacheCreateInfoEXT const &lhs, + VkShaderModuleValidationCacheCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkShaderModuleValidationCacheCreateInfoEXT const &lhs, + VkShaderModuleValidationCacheCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceMaintenance3Properties const &lhs, + VkPhysicalDeviceMaintenance3Properties const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceMaintenance3Properties const &lhs, + VkPhysicalDeviceMaintenance3Properties const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceMaintenance4FeaturesKHR const &lhs, + VkPhysicalDeviceMaintenance4FeaturesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceMaintenance4FeaturesKHR const &lhs, + VkPhysicalDeviceMaintenance4FeaturesKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceMaintenance4PropertiesKHR const &lhs, + VkPhysicalDeviceMaintenance4PropertiesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceMaintenance4PropertiesKHR const &lhs, + VkPhysicalDeviceMaintenance4PropertiesKHR const &rhs) noexcept; + +bool operator==(VkDescriptorSetLayoutSupport const &lhs, + VkDescriptorSetLayoutSupport const &rhs) noexcept; +bool operator!=(VkDescriptorSetLayoutSupport const &lhs, + VkDescriptorSetLayoutSupport const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceShaderDrawParametersFeatures const &lhs, + VkPhysicalDeviceShaderDrawParametersFeatures const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceShaderDrawParametersFeatures const &lhs, + VkPhysicalDeviceShaderDrawParametersFeatures const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceShaderFloat16Int8Features const &lhs, + VkPhysicalDeviceShaderFloat16Int8Features const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceShaderFloat16Int8Features const &lhs, + VkPhysicalDeviceShaderFloat16Int8Features const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceFloatControlsProperties const &lhs, + VkPhysicalDeviceFloatControlsProperties const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceFloatControlsProperties const &lhs, + VkPhysicalDeviceFloatControlsProperties const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceHostQueryResetFeatures const &lhs, + VkPhysicalDeviceHostQueryResetFeatures const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceHostQueryResetFeatures const &lhs, + VkPhysicalDeviceHostQueryResetFeatures const &rhs) noexcept; + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkNativeBufferUsage2ANDROID const &lhs, + VkNativeBufferUsage2ANDROID const &rhs) noexcept; +bool operator!=(VkNativeBufferUsage2ANDROID const &lhs, + VkNativeBufferUsage2ANDROID const &rhs) noexcept; +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkNativeBufferANDROID const &lhs, + VkNativeBufferANDROID const &rhs) noexcept; +bool operator!=(VkNativeBufferANDROID const &lhs, + VkNativeBufferANDROID const &rhs) noexcept; +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkSwapchainImageCreateInfoANDROID const &lhs, + VkSwapchainImageCreateInfoANDROID const &rhs) noexcept; +bool operator!=(VkSwapchainImageCreateInfoANDROID const &lhs, + VkSwapchainImageCreateInfoANDROID const &rhs) noexcept; +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkPhysicalDevicePresentationPropertiesANDROID const &lhs, + VkPhysicalDevicePresentationPropertiesANDROID const &rhs) noexcept; +bool operator!=(VkPhysicalDevicePresentationPropertiesANDROID const &lhs, + VkPhysicalDevicePresentationPropertiesANDROID const &rhs) noexcept; +#endif // VK_USE_PLATFORM_ANDROID_KHR + +bool operator==(VkShaderResourceUsageAMD const &lhs, + VkShaderResourceUsageAMD const &rhs) noexcept; +bool operator!=(VkShaderResourceUsageAMD const &lhs, + VkShaderResourceUsageAMD const &rhs) noexcept; + +bool operator==(VkShaderStatisticsInfoAMD const &lhs, + VkShaderStatisticsInfoAMD const &rhs) noexcept; +bool operator!=(VkShaderStatisticsInfoAMD const &lhs, + VkShaderStatisticsInfoAMD const &rhs) noexcept; + +bool operator==(VkDeviceQueueGlobalPriorityCreateInfoEXT const &lhs, + VkDeviceQueueGlobalPriorityCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkDeviceQueueGlobalPriorityCreateInfoEXT const &lhs, + VkDeviceQueueGlobalPriorityCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT const &lhs, + VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT const &lhs, + VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT const &rhs) noexcept; + +bool operator==(VkQueueFamilyGlobalPriorityPropertiesEXT const &lhs, + VkQueueFamilyGlobalPriorityPropertiesEXT const &rhs) noexcept; +bool operator!=(VkQueueFamilyGlobalPriorityPropertiesEXT const &lhs, + VkQueueFamilyGlobalPriorityPropertiesEXT const &rhs) noexcept; + +bool operator==(VkDebugUtilsObjectNameInfoEXT const &lhs, + VkDebugUtilsObjectNameInfoEXT const &rhs) noexcept; +bool operator!=(VkDebugUtilsObjectNameInfoEXT const &lhs, + VkDebugUtilsObjectNameInfoEXT const &rhs) noexcept; + +bool operator==(VkDebugUtilsObjectTagInfoEXT const &lhs, + VkDebugUtilsObjectTagInfoEXT const &rhs) noexcept; +bool operator!=(VkDebugUtilsObjectTagInfoEXT const &lhs, + VkDebugUtilsObjectTagInfoEXT const &rhs) noexcept; + +bool operator==(VkDebugUtilsLabelEXT const &lhs, + VkDebugUtilsLabelEXT const &rhs) noexcept; +bool operator!=(VkDebugUtilsLabelEXT const &lhs, + VkDebugUtilsLabelEXT const &rhs) noexcept; + +bool operator==(VkDebugUtilsMessengerCreateInfoEXT const &lhs, + VkDebugUtilsMessengerCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkDebugUtilsMessengerCreateInfoEXT const &lhs, + VkDebugUtilsMessengerCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkDebugUtilsMessengerCallbackDataEXT const &lhs, + VkDebugUtilsMessengerCallbackDataEXT const &rhs) noexcept; +bool operator!=(VkDebugUtilsMessengerCallbackDataEXT const &lhs, + VkDebugUtilsMessengerCallbackDataEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const &lhs, + VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const &lhs, + VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const &rhs) noexcept; + +bool operator==(VkDeviceDeviceMemoryReportCreateInfoEXT const &lhs, + VkDeviceDeviceMemoryReportCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkDeviceDeviceMemoryReportCreateInfoEXT const &lhs, + VkDeviceDeviceMemoryReportCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkDeviceMemoryReportCallbackDataEXT const &lhs, + VkDeviceMemoryReportCallbackDataEXT const &rhs) noexcept; +bool operator!=(VkDeviceMemoryReportCallbackDataEXT const &lhs, + VkDeviceMemoryReportCallbackDataEXT const &rhs) noexcept; + +bool operator==(VkImportMemoryHostPointerInfoEXT const &lhs, + VkImportMemoryHostPointerInfoEXT const &rhs) noexcept; +bool operator!=(VkImportMemoryHostPointerInfoEXT const &lhs, + VkImportMemoryHostPointerInfoEXT const &rhs) noexcept; + +bool operator==(VkMemoryHostPointerPropertiesEXT const &lhs, + VkMemoryHostPointerPropertiesEXT const &rhs) noexcept; +bool operator!=(VkMemoryHostPointerPropertiesEXT const &lhs, + VkMemoryHostPointerPropertiesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceExternalMemoryHostPropertiesEXT const &lhs, + VkPhysicalDeviceExternalMemoryHostPropertiesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceExternalMemoryHostPropertiesEXT const &lhs, + VkPhysicalDeviceExternalMemoryHostPropertiesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceConservativeRasterizationPropertiesEXT const &lhs, + VkPhysicalDeviceConservativeRasterizationPropertiesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceConservativeRasterizationPropertiesEXT const &lhs, + VkPhysicalDeviceConservativeRasterizationPropertiesEXT const &rhs) noexcept; + +bool operator==(VkCalibratedTimestampInfoEXT const &lhs, + VkCalibratedTimestampInfoEXT const &rhs) noexcept; +bool operator!=(VkCalibratedTimestampInfoEXT const &lhs, + VkCalibratedTimestampInfoEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceShaderCorePropertiesAMD const &lhs, + VkPhysicalDeviceShaderCorePropertiesAMD const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceShaderCorePropertiesAMD const &lhs, + VkPhysicalDeviceShaderCorePropertiesAMD const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceShaderCoreProperties2AMD const &lhs, + VkPhysicalDeviceShaderCoreProperties2AMD const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceShaderCoreProperties2AMD const &lhs, + VkPhysicalDeviceShaderCoreProperties2AMD const &rhs) noexcept; + +bool operator==(VkPipelineRasterizationConservativeStateCreateInfoEXT const &lhs, + VkPipelineRasterizationConservativeStateCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkPipelineRasterizationConservativeStateCreateInfoEXT const &lhs, + VkPipelineRasterizationConservativeStateCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceDescriptorIndexingFeatures const &lhs, + VkPhysicalDeviceDescriptorIndexingFeatures const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceDescriptorIndexingFeatures const &lhs, + VkPhysicalDeviceDescriptorIndexingFeatures const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceDescriptorIndexingProperties const &lhs, + VkPhysicalDeviceDescriptorIndexingProperties const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceDescriptorIndexingProperties const &lhs, + VkPhysicalDeviceDescriptorIndexingProperties const &rhs) noexcept; + +bool operator==(VkDescriptorSetLayoutBindingFlagsCreateInfo const &lhs, + VkDescriptorSetLayoutBindingFlagsCreateInfo const &rhs) noexcept; +bool operator!=(VkDescriptorSetLayoutBindingFlagsCreateInfo const &lhs, + VkDescriptorSetLayoutBindingFlagsCreateInfo const &rhs) noexcept; + +bool operator==(VkDescriptorSetVariableDescriptorCountAllocateInfo const &lhs, + VkDescriptorSetVariableDescriptorCountAllocateInfo const &rhs) noexcept; +bool operator!=(VkDescriptorSetVariableDescriptorCountAllocateInfo const &lhs, + VkDescriptorSetVariableDescriptorCountAllocateInfo const &rhs) noexcept; + +bool operator==(VkDescriptorSetVariableDescriptorCountLayoutSupport const &lhs, + VkDescriptorSetVariableDescriptorCountLayoutSupport const &rhs) noexcept; +bool operator!=(VkDescriptorSetVariableDescriptorCountLayoutSupport const &lhs, + VkDescriptorSetVariableDescriptorCountLayoutSupport const &rhs) noexcept; + +bool operator==(VkAttachmentDescription2 const &lhs, + VkAttachmentDescription2 const &rhs) noexcept; +bool operator!=(VkAttachmentDescription2 const &lhs, + VkAttachmentDescription2 const &rhs) noexcept; + +bool operator==(VkAttachmentReference2 const &lhs, + VkAttachmentReference2 const &rhs) noexcept; +bool operator!=(VkAttachmentReference2 const &lhs, + VkAttachmentReference2 const &rhs) noexcept; + +bool operator==(VkSubpassDescription2 const &lhs, + VkSubpassDescription2 const &rhs) noexcept; +bool operator!=(VkSubpassDescription2 const &lhs, + VkSubpassDescription2 const &rhs) noexcept; + +bool operator==(VkSubpassDependency2 const &lhs, + VkSubpassDependency2 const &rhs) noexcept; +bool operator!=(VkSubpassDependency2 const &lhs, + VkSubpassDependency2 const &rhs) noexcept; + +bool operator==(VkRenderPassCreateInfo2 const &lhs, + VkRenderPassCreateInfo2 const &rhs) noexcept; +bool operator!=(VkRenderPassCreateInfo2 const &lhs, + VkRenderPassCreateInfo2 const &rhs) noexcept; + +bool operator==(VkSubpassBeginInfo const &lhs, + VkSubpassBeginInfo const &rhs) noexcept; +bool operator!=(VkSubpassBeginInfo const &lhs, + VkSubpassBeginInfo const &rhs) noexcept; + +bool operator==(VkSubpassEndInfo const &lhs, + VkSubpassEndInfo const &rhs) noexcept; +bool operator!=(VkSubpassEndInfo const &lhs, + VkSubpassEndInfo const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceTimelineSemaphoreFeatures const &lhs, + VkPhysicalDeviceTimelineSemaphoreFeatures const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceTimelineSemaphoreFeatures const &lhs, + VkPhysicalDeviceTimelineSemaphoreFeatures const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceTimelineSemaphoreProperties const &lhs, + VkPhysicalDeviceTimelineSemaphoreProperties const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceTimelineSemaphoreProperties const &lhs, + VkPhysicalDeviceTimelineSemaphoreProperties const &rhs) noexcept; + +bool operator==(VkSemaphoreTypeCreateInfo const &lhs, + VkSemaphoreTypeCreateInfo const &rhs) noexcept; +bool operator!=(VkSemaphoreTypeCreateInfo const &lhs, + VkSemaphoreTypeCreateInfo const &rhs) noexcept; + +bool operator==(VkTimelineSemaphoreSubmitInfo const &lhs, + VkTimelineSemaphoreSubmitInfo const &rhs) noexcept; +bool operator!=(VkTimelineSemaphoreSubmitInfo const &lhs, + VkTimelineSemaphoreSubmitInfo const &rhs) noexcept; + +bool operator==(VkSemaphoreWaitInfo const &lhs, + VkSemaphoreWaitInfo const &rhs) noexcept; +bool operator!=(VkSemaphoreWaitInfo const &lhs, + VkSemaphoreWaitInfo const &rhs) noexcept; + +bool operator==(VkSemaphoreSignalInfo const &lhs, + VkSemaphoreSignalInfo const &rhs) noexcept; +bool operator!=(VkSemaphoreSignalInfo const &lhs, + VkSemaphoreSignalInfo const &rhs) noexcept; + +bool operator==(VkVertexInputBindingDivisorDescriptionEXT const &lhs, + VkVertexInputBindingDivisorDescriptionEXT const &rhs) noexcept; +bool operator!=(VkVertexInputBindingDivisorDescriptionEXT const &lhs, + VkVertexInputBindingDivisorDescriptionEXT const &rhs) noexcept; + +bool operator==(VkPipelineVertexInputDivisorStateCreateInfoEXT const &lhs, + VkPipelineVertexInputDivisorStateCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkPipelineVertexInputDivisorStateCreateInfoEXT const &lhs, + VkPipelineVertexInputDivisorStateCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const &lhs, + VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const &lhs, + VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDevicePCIBusInfoPropertiesEXT const &lhs, + VkPhysicalDevicePCIBusInfoPropertiesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDevicePCIBusInfoPropertiesEXT const &lhs, + VkPhysicalDevicePCIBusInfoPropertiesEXT const &rhs) noexcept; + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkImportAndroidHardwareBufferInfoANDROID const &lhs, + VkImportAndroidHardwareBufferInfoANDROID const &rhs) noexcept; +bool operator!=(VkImportAndroidHardwareBufferInfoANDROID const &lhs, + VkImportAndroidHardwareBufferInfoANDROID const &rhs) noexcept; +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkAndroidHardwareBufferUsageANDROID const &lhs, + VkAndroidHardwareBufferUsageANDROID const &rhs) noexcept; +bool operator!=(VkAndroidHardwareBufferUsageANDROID const &lhs, + VkAndroidHardwareBufferUsageANDROID const &rhs) noexcept; +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkAndroidHardwareBufferPropertiesANDROID const &lhs, + VkAndroidHardwareBufferPropertiesANDROID const &rhs) noexcept; +bool operator!=(VkAndroidHardwareBufferPropertiesANDROID const &lhs, + VkAndroidHardwareBufferPropertiesANDROID const &rhs) noexcept; +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkMemoryGetAndroidHardwareBufferInfoANDROID const &lhs, + VkMemoryGetAndroidHardwareBufferInfoANDROID const &rhs) noexcept; +bool operator!=(VkMemoryGetAndroidHardwareBufferInfoANDROID const &lhs, + VkMemoryGetAndroidHardwareBufferInfoANDROID const &rhs) noexcept; +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkAndroidHardwareBufferFormatPropertiesANDROID const &lhs, + VkAndroidHardwareBufferFormatPropertiesANDROID const &rhs) noexcept; +bool operator!=(VkAndroidHardwareBufferFormatPropertiesANDROID const &lhs, + VkAndroidHardwareBufferFormatPropertiesANDROID const &rhs) noexcept; +#endif // VK_USE_PLATFORM_ANDROID_KHR + +bool operator==(VkCommandBufferInheritanceConditionalRenderingInfoEXT const &lhs, + VkCommandBufferInheritanceConditionalRenderingInfoEXT const &rhs) noexcept; +bool operator!=(VkCommandBufferInheritanceConditionalRenderingInfoEXT const &lhs, + VkCommandBufferInheritanceConditionalRenderingInfoEXT const &rhs) noexcept; + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkExternalFormatANDROID const &lhs, + VkExternalFormatANDROID const &rhs) noexcept; +bool operator!=(VkExternalFormatANDROID const &lhs, + VkExternalFormatANDROID const &rhs) noexcept; +#endif // VK_USE_PLATFORM_ANDROID_KHR + +bool operator==(VkPhysicalDevice8BitStorageFeatures const &lhs, + VkPhysicalDevice8BitStorageFeatures const &rhs) noexcept; +bool operator!=(VkPhysicalDevice8BitStorageFeatures const &lhs, + VkPhysicalDevice8BitStorageFeatures const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceConditionalRenderingFeaturesEXT const &lhs, + VkPhysicalDeviceConditionalRenderingFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceConditionalRenderingFeaturesEXT const &lhs, + VkPhysicalDeviceConditionalRenderingFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceVulkanMemoryModelFeatures const &lhs, + VkPhysicalDeviceVulkanMemoryModelFeatures const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceVulkanMemoryModelFeatures const &lhs, + VkPhysicalDeviceVulkanMemoryModelFeatures const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceShaderAtomicInt64Features const &lhs, + VkPhysicalDeviceShaderAtomicInt64Features const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceShaderAtomicInt64Features const &lhs, + VkPhysicalDeviceShaderAtomicInt64Features const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const &lhs, + VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const &lhs, + VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const &lhs, + VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const &lhs, + VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const &lhs, + VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const &lhs, + VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const &rhs) noexcept; + +bool operator==(VkQueueFamilyCheckpointPropertiesNV const &lhs, + VkQueueFamilyCheckpointPropertiesNV const &rhs) noexcept; +bool operator!=(VkQueueFamilyCheckpointPropertiesNV const &lhs, + VkQueueFamilyCheckpointPropertiesNV const &rhs) noexcept; + +bool operator==(VkCheckpointDataNV const &lhs, + VkCheckpointDataNV const &rhs) noexcept; +bool operator!=(VkCheckpointDataNV const &lhs, + VkCheckpointDataNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceDepthStencilResolveProperties const &lhs, + VkPhysicalDeviceDepthStencilResolveProperties const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceDepthStencilResolveProperties const &lhs, + VkPhysicalDeviceDepthStencilResolveProperties const &rhs) noexcept; + +bool operator==(VkSubpassDescriptionDepthStencilResolve const &lhs, + VkSubpassDescriptionDepthStencilResolve const &rhs) noexcept; +bool operator!=(VkSubpassDescriptionDepthStencilResolve const &lhs, + VkSubpassDescriptionDepthStencilResolve const &rhs) noexcept; + +bool operator==(VkImageViewASTCDecodeModeEXT const &lhs, + VkImageViewASTCDecodeModeEXT const &rhs) noexcept; +bool operator!=(VkImageViewASTCDecodeModeEXT const &lhs, + VkImageViewASTCDecodeModeEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceASTCDecodeFeaturesEXT const &lhs, + VkPhysicalDeviceASTCDecodeFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceASTCDecodeFeaturesEXT const &lhs, + VkPhysicalDeviceASTCDecodeFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceTransformFeedbackFeaturesEXT const &lhs, + VkPhysicalDeviceTransformFeedbackFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceTransformFeedbackFeaturesEXT const &lhs, + VkPhysicalDeviceTransformFeedbackFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceTransformFeedbackPropertiesEXT const &lhs, + VkPhysicalDeviceTransformFeedbackPropertiesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceTransformFeedbackPropertiesEXT const &lhs, + VkPhysicalDeviceTransformFeedbackPropertiesEXT const &rhs) noexcept; + +bool operator==(VkPipelineRasterizationStateStreamCreateInfoEXT const &lhs, + VkPipelineRasterizationStateStreamCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkPipelineRasterizationStateStreamCreateInfoEXT const &lhs, + VkPipelineRasterizationStateStreamCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const &lhs, + VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const &lhs, + VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const &rhs) noexcept; + +bool operator==(VkPipelineRepresentativeFragmentTestStateCreateInfoNV const &lhs, + VkPipelineRepresentativeFragmentTestStateCreateInfoNV const &rhs) noexcept; +bool operator!=(VkPipelineRepresentativeFragmentTestStateCreateInfoNV const &lhs, + VkPipelineRepresentativeFragmentTestStateCreateInfoNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceExclusiveScissorFeaturesNV const &lhs, + VkPhysicalDeviceExclusiveScissorFeaturesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceExclusiveScissorFeaturesNV const &lhs, + VkPhysicalDeviceExclusiveScissorFeaturesNV const &rhs) noexcept; + +bool operator==(VkPipelineViewportExclusiveScissorStateCreateInfoNV const &lhs, + VkPipelineViewportExclusiveScissorStateCreateInfoNV const &rhs) noexcept; +bool operator!=(VkPipelineViewportExclusiveScissorStateCreateInfoNV const &lhs, + VkPipelineViewportExclusiveScissorStateCreateInfoNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceCornerSampledImageFeaturesNV const &lhs, + VkPhysicalDeviceCornerSampledImageFeaturesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceCornerSampledImageFeaturesNV const &lhs, + VkPhysicalDeviceCornerSampledImageFeaturesNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const &lhs, + VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const &lhs, + VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const &lhs, + VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const &lhs, + VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceShaderImageFootprintFeaturesNV const &lhs, + VkPhysicalDeviceShaderImageFootprintFeaturesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceShaderImageFootprintFeaturesNV const &lhs, + VkPhysicalDeviceShaderImageFootprintFeaturesNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const &lhs, + VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const &lhs, + VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const &rhs) noexcept; + +bool operator==(VkShadingRatePaletteNV const &lhs, + VkShadingRatePaletteNV const &rhs) noexcept; +bool operator!=(VkShadingRatePaletteNV const &lhs, + VkShadingRatePaletteNV const &rhs) noexcept; + +bool operator==(VkPipelineViewportShadingRateImageStateCreateInfoNV const &lhs, + VkPipelineViewportShadingRateImageStateCreateInfoNV const &rhs) noexcept; +bool operator!=(VkPipelineViewportShadingRateImageStateCreateInfoNV const &lhs, + VkPipelineViewportShadingRateImageStateCreateInfoNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceShadingRateImageFeaturesNV const &lhs, + VkPhysicalDeviceShadingRateImageFeaturesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceShadingRateImageFeaturesNV const &lhs, + VkPhysicalDeviceShadingRateImageFeaturesNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceShadingRateImagePropertiesNV const &lhs, + VkPhysicalDeviceShadingRateImagePropertiesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceShadingRateImagePropertiesNV const &lhs, + VkPhysicalDeviceShadingRateImagePropertiesNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const &lhs, + VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const &lhs, + VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const &rhs) noexcept; + +bool operator==(VkCoarseSampleLocationNV const &lhs, + VkCoarseSampleLocationNV const &rhs) noexcept; +bool operator!=(VkCoarseSampleLocationNV const &lhs, + VkCoarseSampleLocationNV const &rhs) noexcept; + +bool operator==(VkCoarseSampleOrderCustomNV const &lhs, + VkCoarseSampleOrderCustomNV const &rhs) noexcept; +bool operator!=(VkCoarseSampleOrderCustomNV const &lhs, + VkCoarseSampleOrderCustomNV const &rhs) noexcept; + +bool operator==(VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const &lhs, + VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const &rhs) noexcept; +bool operator!=(VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const &lhs, + VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceMeshShaderFeaturesNV const &lhs, + VkPhysicalDeviceMeshShaderFeaturesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceMeshShaderFeaturesNV const &lhs, + VkPhysicalDeviceMeshShaderFeaturesNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceMeshShaderPropertiesNV const &lhs, + VkPhysicalDeviceMeshShaderPropertiesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceMeshShaderPropertiesNV const &lhs, + VkPhysicalDeviceMeshShaderPropertiesNV const &rhs) noexcept; + +bool operator==(VkDrawMeshTasksIndirectCommandNV const &lhs, + VkDrawMeshTasksIndirectCommandNV const &rhs) noexcept; +bool operator!=(VkDrawMeshTasksIndirectCommandNV const &lhs, + VkDrawMeshTasksIndirectCommandNV const &rhs) noexcept; + +bool operator==(VkRayTracingShaderGroupCreateInfoNV const &lhs, + VkRayTracingShaderGroupCreateInfoNV const &rhs) noexcept; +bool operator!=(VkRayTracingShaderGroupCreateInfoNV const &lhs, + VkRayTracingShaderGroupCreateInfoNV const &rhs) noexcept; + +bool operator==(VkRayTracingShaderGroupCreateInfoKHR const &lhs, + VkRayTracingShaderGroupCreateInfoKHR const &rhs) noexcept; +bool operator!=(VkRayTracingShaderGroupCreateInfoKHR const &lhs, + VkRayTracingShaderGroupCreateInfoKHR const &rhs) noexcept; + +bool operator==(VkRayTracingPipelineCreateInfoNV const &lhs, + VkRayTracingPipelineCreateInfoNV const &rhs) noexcept; +bool operator!=(VkRayTracingPipelineCreateInfoNV const &lhs, + VkRayTracingPipelineCreateInfoNV const &rhs) noexcept; + +bool operator==(VkRayTracingPipelineCreateInfoKHR const &lhs, + VkRayTracingPipelineCreateInfoKHR const &rhs) noexcept; +bool operator!=(VkRayTracingPipelineCreateInfoKHR const &lhs, + VkRayTracingPipelineCreateInfoKHR const &rhs) noexcept; + +bool operator==(VkGeometryTrianglesNV const &lhs, + VkGeometryTrianglesNV const &rhs) noexcept; +bool operator!=(VkGeometryTrianglesNV const &lhs, + VkGeometryTrianglesNV const &rhs) noexcept; + +bool operator==(VkGeometryAABBNV const &lhs, + VkGeometryAABBNV const &rhs) noexcept; +bool operator!=(VkGeometryAABBNV const &lhs, + VkGeometryAABBNV const &rhs) noexcept; + +bool operator==(VkGeometryDataNV const &lhs, + VkGeometryDataNV const &rhs) noexcept; +bool operator!=(VkGeometryDataNV const &lhs, + VkGeometryDataNV const &rhs) noexcept; + +bool operator==(VkGeometryNV const &lhs, + VkGeometryNV const &rhs) noexcept; +bool operator!=(VkGeometryNV const &lhs, + VkGeometryNV const &rhs) noexcept; + +bool operator==(VkAccelerationStructureInfoNV const &lhs, + VkAccelerationStructureInfoNV const &rhs) noexcept; +bool operator!=(VkAccelerationStructureInfoNV const &lhs, + VkAccelerationStructureInfoNV const &rhs) noexcept; + +bool operator==(VkAccelerationStructureCreateInfoNV const &lhs, + VkAccelerationStructureCreateInfoNV const &rhs) noexcept; +bool operator!=(VkAccelerationStructureCreateInfoNV const &lhs, + VkAccelerationStructureCreateInfoNV const &rhs) noexcept; + +bool operator==(VkBindAccelerationStructureMemoryInfoNV const &lhs, + VkBindAccelerationStructureMemoryInfoNV const &rhs) noexcept; +bool operator!=(VkBindAccelerationStructureMemoryInfoNV const &lhs, + VkBindAccelerationStructureMemoryInfoNV const &rhs) noexcept; + +bool operator==(VkWriteDescriptorSetAccelerationStructureKHR const &lhs, + VkWriteDescriptorSetAccelerationStructureKHR const &rhs) noexcept; +bool operator!=(VkWriteDescriptorSetAccelerationStructureKHR const &lhs, + VkWriteDescriptorSetAccelerationStructureKHR const &rhs) noexcept; + +bool operator==(VkWriteDescriptorSetAccelerationStructureNV const &lhs, + VkWriteDescriptorSetAccelerationStructureNV const &rhs) noexcept; +bool operator!=(VkWriteDescriptorSetAccelerationStructureNV const &lhs, + VkWriteDescriptorSetAccelerationStructureNV const &rhs) noexcept; + +bool operator==(VkAccelerationStructureMemoryRequirementsInfoNV const &lhs, + VkAccelerationStructureMemoryRequirementsInfoNV const &rhs) noexcept; +bool operator!=(VkAccelerationStructureMemoryRequirementsInfoNV const &lhs, + VkAccelerationStructureMemoryRequirementsInfoNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceAccelerationStructureFeaturesKHR const &lhs, + VkPhysicalDeviceAccelerationStructureFeaturesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceAccelerationStructureFeaturesKHR const &lhs, + VkPhysicalDeviceAccelerationStructureFeaturesKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceRayTracingPipelineFeaturesKHR const &lhs, + VkPhysicalDeviceRayTracingPipelineFeaturesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceRayTracingPipelineFeaturesKHR const &lhs, + VkPhysicalDeviceRayTracingPipelineFeaturesKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceRayQueryFeaturesKHR const &lhs, + VkPhysicalDeviceRayQueryFeaturesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceRayQueryFeaturesKHR const &lhs, + VkPhysicalDeviceRayQueryFeaturesKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceAccelerationStructurePropertiesKHR const &lhs, + VkPhysicalDeviceAccelerationStructurePropertiesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceAccelerationStructurePropertiesKHR const &lhs, + VkPhysicalDeviceAccelerationStructurePropertiesKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceRayTracingPipelinePropertiesKHR const &lhs, + VkPhysicalDeviceRayTracingPipelinePropertiesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceRayTracingPipelinePropertiesKHR const &lhs, + VkPhysicalDeviceRayTracingPipelinePropertiesKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceRayTracingPropertiesNV const &lhs, + VkPhysicalDeviceRayTracingPropertiesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceRayTracingPropertiesNV const &lhs, + VkPhysicalDeviceRayTracingPropertiesNV const &rhs) noexcept; + +bool operator==(VkStridedDeviceAddressRegionKHR const &lhs, + VkStridedDeviceAddressRegionKHR const &rhs) noexcept; +bool operator!=(VkStridedDeviceAddressRegionKHR const &lhs, + VkStridedDeviceAddressRegionKHR const &rhs) noexcept; + +bool operator==(VkTraceRaysIndirectCommandKHR const &lhs, + VkTraceRaysIndirectCommandKHR const &rhs) noexcept; +bool operator!=(VkTraceRaysIndirectCommandKHR const &lhs, + VkTraceRaysIndirectCommandKHR const &rhs) noexcept; + +bool operator==(VkDrmFormatModifierPropertiesListEXT const &lhs, + VkDrmFormatModifierPropertiesListEXT const &rhs) noexcept; +bool operator!=(VkDrmFormatModifierPropertiesListEXT const &lhs, + VkDrmFormatModifierPropertiesListEXT const &rhs) noexcept; + +bool operator==(VkDrmFormatModifierPropertiesEXT const &lhs, + VkDrmFormatModifierPropertiesEXT const &rhs) noexcept; +bool operator!=(VkDrmFormatModifierPropertiesEXT const &lhs, + VkDrmFormatModifierPropertiesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceImageDrmFormatModifierInfoEXT const &lhs, + VkPhysicalDeviceImageDrmFormatModifierInfoEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceImageDrmFormatModifierInfoEXT const &lhs, + VkPhysicalDeviceImageDrmFormatModifierInfoEXT const &rhs) noexcept; + +bool operator==(VkImageDrmFormatModifierListCreateInfoEXT const &lhs, + VkImageDrmFormatModifierListCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkImageDrmFormatModifierListCreateInfoEXT const &lhs, + VkImageDrmFormatModifierListCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkImageDrmFormatModifierExplicitCreateInfoEXT const &lhs, + VkImageDrmFormatModifierExplicitCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkImageDrmFormatModifierExplicitCreateInfoEXT const &lhs, + VkImageDrmFormatModifierExplicitCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkImageDrmFormatModifierPropertiesEXT const &lhs, + VkImageDrmFormatModifierPropertiesEXT const &rhs) noexcept; +bool operator!=(VkImageDrmFormatModifierPropertiesEXT const &lhs, + VkImageDrmFormatModifierPropertiesEXT const &rhs) noexcept; + +bool operator==(VkImageStencilUsageCreateInfo const &lhs, + VkImageStencilUsageCreateInfo const &rhs) noexcept; +bool operator!=(VkImageStencilUsageCreateInfo const &lhs, + VkImageStencilUsageCreateInfo const &rhs) noexcept; + +bool operator==(VkDeviceMemoryOverallocationCreateInfoAMD const &lhs, + VkDeviceMemoryOverallocationCreateInfoAMD const &rhs) noexcept; +bool operator!=(VkDeviceMemoryOverallocationCreateInfoAMD const &lhs, + VkDeviceMemoryOverallocationCreateInfoAMD const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceFragmentDensityMapFeaturesEXT const &lhs, + VkPhysicalDeviceFragmentDensityMapFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceFragmentDensityMapFeaturesEXT const &lhs, + VkPhysicalDeviceFragmentDensityMapFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const &lhs, + VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const &lhs, + VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceFragmentDensityMapPropertiesEXT const &lhs, + VkPhysicalDeviceFragmentDensityMapPropertiesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceFragmentDensityMapPropertiesEXT const &lhs, + VkPhysicalDeviceFragmentDensityMapPropertiesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const &lhs, + VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const &lhs, + VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const &rhs) noexcept; + +bool operator==(VkRenderPassFragmentDensityMapCreateInfoEXT const &lhs, + VkRenderPassFragmentDensityMapCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkRenderPassFragmentDensityMapCreateInfoEXT const &lhs, + VkRenderPassFragmentDensityMapCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceScalarBlockLayoutFeatures const &lhs, + VkPhysicalDeviceScalarBlockLayoutFeatures const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceScalarBlockLayoutFeatures const &lhs, + VkPhysicalDeviceScalarBlockLayoutFeatures const &rhs) noexcept; + +bool operator==(VkSurfaceProtectedCapabilitiesKHR const &lhs, + VkSurfaceProtectedCapabilitiesKHR const &rhs) noexcept; +bool operator!=(VkSurfaceProtectedCapabilitiesKHR const &lhs, + VkSurfaceProtectedCapabilitiesKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceUniformBufferStandardLayoutFeatures const &lhs, + VkPhysicalDeviceUniformBufferStandardLayoutFeatures const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceUniformBufferStandardLayoutFeatures const &lhs, + VkPhysicalDeviceUniformBufferStandardLayoutFeatures const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceDepthClipEnableFeaturesEXT const &lhs, + VkPhysicalDeviceDepthClipEnableFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceDepthClipEnableFeaturesEXT const &lhs, + VkPhysicalDeviceDepthClipEnableFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPipelineRasterizationDepthClipStateCreateInfoEXT const &lhs, + VkPipelineRasterizationDepthClipStateCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkPipelineRasterizationDepthClipStateCreateInfoEXT const &lhs, + VkPipelineRasterizationDepthClipStateCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceMemoryBudgetPropertiesEXT const &lhs, + VkPhysicalDeviceMemoryBudgetPropertiesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceMemoryBudgetPropertiesEXT const &lhs, + VkPhysicalDeviceMemoryBudgetPropertiesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceMemoryPriorityFeaturesEXT const &lhs, + VkPhysicalDeviceMemoryPriorityFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceMemoryPriorityFeaturesEXT const &lhs, + VkPhysicalDeviceMemoryPriorityFeaturesEXT const &rhs) noexcept; + +bool operator==(VkMemoryPriorityAllocateInfoEXT const &lhs, + VkMemoryPriorityAllocateInfoEXT const &rhs) noexcept; +bool operator!=(VkMemoryPriorityAllocateInfoEXT const &lhs, + VkMemoryPriorityAllocateInfoEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const &lhs, + VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const &lhs, + VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceBufferDeviceAddressFeatures const &lhs, + VkPhysicalDeviceBufferDeviceAddressFeatures const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceBufferDeviceAddressFeatures const &lhs, + VkPhysicalDeviceBufferDeviceAddressFeatures const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const &lhs, + VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const &lhs, + VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const &rhs) noexcept; + +bool operator==(VkBufferDeviceAddressInfo const &lhs, + VkBufferDeviceAddressInfo const &rhs) noexcept; +bool operator!=(VkBufferDeviceAddressInfo const &lhs, + VkBufferDeviceAddressInfo const &rhs) noexcept; + +bool operator==(VkBufferOpaqueCaptureAddressCreateInfo const &lhs, + VkBufferOpaqueCaptureAddressCreateInfo const &rhs) noexcept; +bool operator!=(VkBufferOpaqueCaptureAddressCreateInfo const &lhs, + VkBufferOpaqueCaptureAddressCreateInfo const &rhs) noexcept; + +bool operator==(VkBufferDeviceAddressCreateInfoEXT const &lhs, + VkBufferDeviceAddressCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkBufferDeviceAddressCreateInfoEXT const &lhs, + VkBufferDeviceAddressCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceImageViewImageFormatInfoEXT const &lhs, + VkPhysicalDeviceImageViewImageFormatInfoEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceImageViewImageFormatInfoEXT const &lhs, + VkPhysicalDeviceImageViewImageFormatInfoEXT const &rhs) noexcept; + +bool operator==(VkFilterCubicImageViewImageFormatPropertiesEXT const &lhs, + VkFilterCubicImageViewImageFormatPropertiesEXT const &rhs) noexcept; +bool operator!=(VkFilterCubicImageViewImageFormatPropertiesEXT const &lhs, + VkFilterCubicImageViewImageFormatPropertiesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceImagelessFramebufferFeatures const &lhs, + VkPhysicalDeviceImagelessFramebufferFeatures const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceImagelessFramebufferFeatures const &lhs, + VkPhysicalDeviceImagelessFramebufferFeatures const &rhs) noexcept; + +bool operator==(VkFramebufferAttachmentsCreateInfo const &lhs, + VkFramebufferAttachmentsCreateInfo const &rhs) noexcept; +bool operator!=(VkFramebufferAttachmentsCreateInfo const &lhs, + VkFramebufferAttachmentsCreateInfo const &rhs) noexcept; + +bool operator==(VkFramebufferAttachmentImageInfo const &lhs, + VkFramebufferAttachmentImageInfo const &rhs) noexcept; +bool operator!=(VkFramebufferAttachmentImageInfo const &lhs, + VkFramebufferAttachmentImageInfo const &rhs) noexcept; + +bool operator==(VkRenderPassAttachmentBeginInfo const &lhs, + VkRenderPassAttachmentBeginInfo const &rhs) noexcept; +bool operator!=(VkRenderPassAttachmentBeginInfo const &lhs, + VkRenderPassAttachmentBeginInfo const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const &lhs, + VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const &lhs, + VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceCooperativeMatrixFeaturesNV const &lhs, + VkPhysicalDeviceCooperativeMatrixFeaturesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceCooperativeMatrixFeaturesNV const &lhs, + VkPhysicalDeviceCooperativeMatrixFeaturesNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceCooperativeMatrixPropertiesNV const &lhs, + VkPhysicalDeviceCooperativeMatrixPropertiesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceCooperativeMatrixPropertiesNV const &lhs, + VkPhysicalDeviceCooperativeMatrixPropertiesNV const &rhs) noexcept; + +bool operator==(VkCooperativeMatrixPropertiesNV const &lhs, + VkCooperativeMatrixPropertiesNV const &rhs) noexcept; +bool operator!=(VkCooperativeMatrixPropertiesNV const &lhs, + VkCooperativeMatrixPropertiesNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const &lhs, + VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const &lhs, + VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const &rhs) noexcept; + +bool operator==(VkImageViewHandleInfoNVX const &lhs, + VkImageViewHandleInfoNVX const &rhs) noexcept; +bool operator!=(VkImageViewHandleInfoNVX const &lhs, + VkImageViewHandleInfoNVX const &rhs) noexcept; + +bool operator==(VkImageViewAddressPropertiesNVX const &lhs, + VkImageViewAddressPropertiesNVX const &rhs) noexcept; +bool operator!=(VkImageViewAddressPropertiesNVX const &lhs, + VkImageViewAddressPropertiesNVX const &rhs) noexcept; + +#ifdef VK_USE_PLATFORM_GGP +bool operator==(VkPresentFrameTokenGGP const &lhs, + VkPresentFrameTokenGGP const &rhs) noexcept; +bool operator!=(VkPresentFrameTokenGGP const &lhs, + VkPresentFrameTokenGGP const &rhs) noexcept; +#endif // VK_USE_PLATFORM_GGP + +bool operator==(VkPipelineCreationFeedbackEXT const &lhs, + VkPipelineCreationFeedbackEXT const &rhs) noexcept; +bool operator!=(VkPipelineCreationFeedbackEXT const &lhs, + VkPipelineCreationFeedbackEXT const &rhs) noexcept; + +bool operator==(VkPipelineCreationFeedbackCreateInfoEXT const &lhs, + VkPipelineCreationFeedbackCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkPipelineCreationFeedbackCreateInfoEXT const &lhs, + VkPipelineCreationFeedbackCreateInfoEXT const &rhs) noexcept; + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkSurfaceFullScreenExclusiveInfoEXT const &lhs, + VkSurfaceFullScreenExclusiveInfoEXT const &rhs) noexcept; +bool operator!=(VkSurfaceFullScreenExclusiveInfoEXT const &lhs, + VkSurfaceFullScreenExclusiveInfoEXT const &rhs) noexcept; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkSurfaceFullScreenExclusiveWin32InfoEXT const &lhs, + VkSurfaceFullScreenExclusiveWin32InfoEXT const &rhs) noexcept; +bool operator!=(VkSurfaceFullScreenExclusiveWin32InfoEXT const &lhs, + VkSurfaceFullScreenExclusiveWin32InfoEXT const &rhs) noexcept; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkSurfaceCapabilitiesFullScreenExclusiveEXT const &lhs, + VkSurfaceCapabilitiesFullScreenExclusiveEXT const &rhs) noexcept; +bool operator!=(VkSurfaceCapabilitiesFullScreenExclusiveEXT const &lhs, + VkSurfaceCapabilitiesFullScreenExclusiveEXT const &rhs) noexcept; +#endif // VK_USE_PLATFORM_WIN32_KHR + +bool operator==(VkPhysicalDevicePerformanceQueryFeaturesKHR const &lhs, + VkPhysicalDevicePerformanceQueryFeaturesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDevicePerformanceQueryFeaturesKHR const &lhs, + VkPhysicalDevicePerformanceQueryFeaturesKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDevicePerformanceQueryPropertiesKHR const &lhs, + VkPhysicalDevicePerformanceQueryPropertiesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDevicePerformanceQueryPropertiesKHR const &lhs, + VkPhysicalDevicePerformanceQueryPropertiesKHR const &rhs) noexcept; + +bool operator==(VkPerformanceCounterKHR const &lhs, + VkPerformanceCounterKHR const &rhs) noexcept; +bool operator!=(VkPerformanceCounterKHR const &lhs, + VkPerformanceCounterKHR const &rhs) noexcept; + +bool operator==(VkPerformanceCounterDescriptionKHR const &lhs, + VkPerformanceCounterDescriptionKHR const &rhs) noexcept; +bool operator!=(VkPerformanceCounterDescriptionKHR const &lhs, + VkPerformanceCounterDescriptionKHR const &rhs) noexcept; + +bool operator==(VkQueryPoolPerformanceCreateInfoKHR const &lhs, + VkQueryPoolPerformanceCreateInfoKHR const &rhs) noexcept; +bool operator!=(VkQueryPoolPerformanceCreateInfoKHR const &lhs, + VkQueryPoolPerformanceCreateInfoKHR const &rhs) noexcept; + +bool operator==(VkAcquireProfilingLockInfoKHR const &lhs, + VkAcquireProfilingLockInfoKHR const &rhs) noexcept; +bool operator!=(VkAcquireProfilingLockInfoKHR const &lhs, + VkAcquireProfilingLockInfoKHR const &rhs) noexcept; + +bool operator==(VkPerformanceQuerySubmitInfoKHR const &lhs, + VkPerformanceQuerySubmitInfoKHR const &rhs) noexcept; +bool operator!=(VkPerformanceQuerySubmitInfoKHR const &lhs, + VkPerformanceQuerySubmitInfoKHR const &rhs) noexcept; + +bool operator==(VkHeadlessSurfaceCreateInfoEXT const &lhs, + VkHeadlessSurfaceCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkHeadlessSurfaceCreateInfoEXT const &lhs, + VkHeadlessSurfaceCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceCoverageReductionModeFeaturesNV const &lhs, + VkPhysicalDeviceCoverageReductionModeFeaturesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceCoverageReductionModeFeaturesNV const &lhs, + VkPhysicalDeviceCoverageReductionModeFeaturesNV const &rhs) noexcept; + +bool operator==(VkPipelineCoverageReductionStateCreateInfoNV const &lhs, + VkPipelineCoverageReductionStateCreateInfoNV const &rhs) noexcept; +bool operator!=(VkPipelineCoverageReductionStateCreateInfoNV const &lhs, + VkPipelineCoverageReductionStateCreateInfoNV const &rhs) noexcept; + +bool operator==(VkFramebufferMixedSamplesCombinationNV const &lhs, + VkFramebufferMixedSamplesCombinationNV const &rhs) noexcept; +bool operator!=(VkFramebufferMixedSamplesCombinationNV const &lhs, + VkFramebufferMixedSamplesCombinationNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const &lhs, + VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const &lhs, + VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const &rhs) noexcept; + +bool operator==(VkInitializePerformanceApiInfoINTEL const &lhs, + VkInitializePerformanceApiInfoINTEL const &rhs) noexcept; +bool operator!=(VkInitializePerformanceApiInfoINTEL const &lhs, + VkInitializePerformanceApiInfoINTEL const &rhs) noexcept; + +bool operator==(VkQueryPoolPerformanceQueryCreateInfoINTEL const &lhs, + VkQueryPoolPerformanceQueryCreateInfoINTEL const &rhs) noexcept; +bool operator!=(VkQueryPoolPerformanceQueryCreateInfoINTEL const &lhs, + VkQueryPoolPerformanceQueryCreateInfoINTEL const &rhs) noexcept; + +bool operator==(VkPerformanceMarkerInfoINTEL const &lhs, + VkPerformanceMarkerInfoINTEL const &rhs) noexcept; +bool operator!=(VkPerformanceMarkerInfoINTEL const &lhs, + VkPerformanceMarkerInfoINTEL const &rhs) noexcept; + +bool operator==(VkPerformanceStreamMarkerInfoINTEL const &lhs, + VkPerformanceStreamMarkerInfoINTEL const &rhs) noexcept; +bool operator!=(VkPerformanceStreamMarkerInfoINTEL const &lhs, + VkPerformanceStreamMarkerInfoINTEL const &rhs) noexcept; + +bool operator==(VkPerformanceOverrideInfoINTEL const &lhs, + VkPerformanceOverrideInfoINTEL const &rhs) noexcept; +bool operator!=(VkPerformanceOverrideInfoINTEL const &lhs, + VkPerformanceOverrideInfoINTEL const &rhs) noexcept; + +bool operator==(VkPerformanceConfigurationAcquireInfoINTEL const &lhs, + VkPerformanceConfigurationAcquireInfoINTEL const &rhs) noexcept; +bool operator!=(VkPerformanceConfigurationAcquireInfoINTEL const &lhs, + VkPerformanceConfigurationAcquireInfoINTEL const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceShaderClockFeaturesKHR const &lhs, + VkPhysicalDeviceShaderClockFeaturesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceShaderClockFeaturesKHR const &lhs, + VkPhysicalDeviceShaderClockFeaturesKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceIndexTypeUint8FeaturesEXT const &lhs, + VkPhysicalDeviceIndexTypeUint8FeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceIndexTypeUint8FeaturesEXT const &lhs, + VkPhysicalDeviceIndexTypeUint8FeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const &lhs, + VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const &lhs, + VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const &lhs, + VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const &lhs, + VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const &lhs, + VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const &lhs, + VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const &lhs, + VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const &lhs, + VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const &rhs) noexcept; + +bool operator==(VkAttachmentReferenceStencilLayout const &lhs, + VkAttachmentReferenceStencilLayout const &rhs) noexcept; +bool operator!=(VkAttachmentReferenceStencilLayout const &lhs, + VkAttachmentReferenceStencilLayout const &rhs) noexcept; + +bool operator==(VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const &lhs, + VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const &lhs, + VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const &rhs) noexcept; + +bool operator==(VkAttachmentDescriptionStencilLayout const &lhs, + VkAttachmentDescriptionStencilLayout const &rhs) noexcept; +bool operator!=(VkAttachmentDescriptionStencilLayout const &lhs, + VkAttachmentDescriptionStencilLayout const &rhs) noexcept; + +bool operator==(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const &lhs, + VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const &lhs, + VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const &rhs) noexcept; + +bool operator==(VkPipelineInfoKHR const &lhs, + VkPipelineInfoKHR const &rhs) noexcept; +bool operator!=(VkPipelineInfoKHR const &lhs, + VkPipelineInfoKHR const &rhs) noexcept; + +bool operator==(VkPipelineExecutablePropertiesKHR const &lhs, + VkPipelineExecutablePropertiesKHR const &rhs) noexcept; +bool operator!=(VkPipelineExecutablePropertiesKHR const &lhs, + VkPipelineExecutablePropertiesKHR const &rhs) noexcept; + +bool operator==(VkPipelineExecutableInfoKHR const &lhs, + VkPipelineExecutableInfoKHR const &rhs) noexcept; +bool operator!=(VkPipelineExecutableInfoKHR const &lhs, + VkPipelineExecutableInfoKHR const &rhs) noexcept; + +bool operator==(VkPipelineExecutableInternalRepresentationKHR const &lhs, + VkPipelineExecutableInternalRepresentationKHR const &rhs) noexcept; +bool operator!=(VkPipelineExecutableInternalRepresentationKHR const &lhs, + VkPipelineExecutableInternalRepresentationKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const &lhs, + VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const &lhs, + VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const &lhs, + VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const &lhs, + VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const &lhs, + VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const &lhs, + VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const &lhs, + VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const &lhs, + VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const &lhs, + VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const &lhs, + VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const &rhs) noexcept; + +bool operator==(VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const &lhs, + VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const &lhs, + VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkSubpassShadingPipelineCreateInfoHUAWEI const &lhs, + VkSubpassShadingPipelineCreateInfoHUAWEI const &rhs) noexcept; +bool operator!=(VkSubpassShadingPipelineCreateInfoHUAWEI const &lhs, + VkSubpassShadingPipelineCreateInfoHUAWEI const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const &lhs, + VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const &lhs, + VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const &rhs) noexcept; + +bool operator==(VkMemoryOpaqueCaptureAddressAllocateInfo const &lhs, + VkMemoryOpaqueCaptureAddressAllocateInfo const &rhs) noexcept; +bool operator!=(VkMemoryOpaqueCaptureAddressAllocateInfo const &lhs, + VkMemoryOpaqueCaptureAddressAllocateInfo const &rhs) noexcept; + +bool operator==(VkDeviceMemoryOpaqueCaptureAddressInfo const &lhs, + VkDeviceMemoryOpaqueCaptureAddressInfo const &rhs) noexcept; +bool operator!=(VkDeviceMemoryOpaqueCaptureAddressInfo const &lhs, + VkDeviceMemoryOpaqueCaptureAddressInfo const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceLineRasterizationFeaturesEXT const &lhs, + VkPhysicalDeviceLineRasterizationFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceLineRasterizationFeaturesEXT const &lhs, + VkPhysicalDeviceLineRasterizationFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceLineRasterizationPropertiesEXT const &lhs, + VkPhysicalDeviceLineRasterizationPropertiesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceLineRasterizationPropertiesEXT const &lhs, + VkPhysicalDeviceLineRasterizationPropertiesEXT const &rhs) noexcept; + +bool operator==(VkPipelineRasterizationLineStateCreateInfoEXT const &lhs, + VkPipelineRasterizationLineStateCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkPipelineRasterizationLineStateCreateInfoEXT const &lhs, + VkPipelineRasterizationLineStateCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT const &lhs, + VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT const &lhs, + VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceVulkan11Features const &lhs, + VkPhysicalDeviceVulkan11Features const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceVulkan11Features const &lhs, + VkPhysicalDeviceVulkan11Features const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceVulkan11Properties const &lhs, + VkPhysicalDeviceVulkan11Properties const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceVulkan11Properties const &lhs, + VkPhysicalDeviceVulkan11Properties const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceVulkan12Features const &lhs, + VkPhysicalDeviceVulkan12Features const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceVulkan12Features const &lhs, + VkPhysicalDeviceVulkan12Features const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceVulkan12Properties const &lhs, + VkPhysicalDeviceVulkan12Properties const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceVulkan12Properties const &lhs, + VkPhysicalDeviceVulkan12Properties const &rhs) noexcept; + +bool operator==(VkPipelineCompilerControlCreateInfoAMD const &lhs, + VkPipelineCompilerControlCreateInfoAMD const &rhs) noexcept; +bool operator!=(VkPipelineCompilerControlCreateInfoAMD const &lhs, + VkPipelineCompilerControlCreateInfoAMD const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceCoherentMemoryFeaturesAMD const &lhs, + VkPhysicalDeviceCoherentMemoryFeaturesAMD const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceCoherentMemoryFeaturesAMD const &lhs, + VkPhysicalDeviceCoherentMemoryFeaturesAMD const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceToolPropertiesEXT const &lhs, + VkPhysicalDeviceToolPropertiesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceToolPropertiesEXT const &lhs, + VkPhysicalDeviceToolPropertiesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceCustomBorderColorPropertiesEXT const &lhs, + VkPhysicalDeviceCustomBorderColorPropertiesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceCustomBorderColorPropertiesEXT const &lhs, + VkPhysicalDeviceCustomBorderColorPropertiesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceCustomBorderColorFeaturesEXT const &lhs, + VkPhysicalDeviceCustomBorderColorFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceCustomBorderColorFeaturesEXT const &lhs, + VkPhysicalDeviceCustomBorderColorFeaturesEXT const &rhs) noexcept; + +bool operator==(VkSamplerBorderColorComponentMappingCreateInfoEXT const &lhs, + VkSamplerBorderColorComponentMappingCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkSamplerBorderColorComponentMappingCreateInfoEXT const &lhs, + VkSamplerBorderColorComponentMappingCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const &lhs, + VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const &lhs, + VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const &rhs) noexcept; + +bool operator==(VkAccelerationStructureBuildRangeInfoKHR const &lhs, + VkAccelerationStructureBuildRangeInfoKHR const &rhs) noexcept; +bool operator!=(VkAccelerationStructureBuildRangeInfoKHR const &lhs, + VkAccelerationStructureBuildRangeInfoKHR const &rhs) noexcept; + +bool operator==(VkAccelerationStructureCreateInfoKHR const &lhs, + VkAccelerationStructureCreateInfoKHR const &rhs) noexcept; +bool operator!=(VkAccelerationStructureCreateInfoKHR const &lhs, + VkAccelerationStructureCreateInfoKHR const &rhs) noexcept; + +bool operator==(VkAabbPositionsKHR const &lhs, + VkAabbPositionsKHR const &rhs) noexcept; +bool operator!=(VkAabbPositionsKHR const &lhs, + VkAabbPositionsKHR const &rhs) noexcept; + +bool operator==(VkTransformMatrixKHR const &lhs, + VkTransformMatrixKHR const &rhs) noexcept; +bool operator!=(VkTransformMatrixKHR const &lhs, + VkTransformMatrixKHR const &rhs) noexcept; + +bool operator==(VkAccelerationStructureInstanceKHR const &lhs, + VkAccelerationStructureInstanceKHR const &rhs) noexcept; +bool operator!=(VkAccelerationStructureInstanceKHR const &lhs, + VkAccelerationStructureInstanceKHR const &rhs) noexcept; + +bool operator==(VkAccelerationStructureDeviceAddressInfoKHR const &lhs, + VkAccelerationStructureDeviceAddressInfoKHR const &rhs) noexcept; +bool operator!=(VkAccelerationStructureDeviceAddressInfoKHR const &lhs, + VkAccelerationStructureDeviceAddressInfoKHR const &rhs) noexcept; + +bool operator==(VkAccelerationStructureVersionInfoKHR const &lhs, + VkAccelerationStructureVersionInfoKHR const &rhs) noexcept; +bool operator!=(VkAccelerationStructureVersionInfoKHR const &lhs, + VkAccelerationStructureVersionInfoKHR const &rhs) noexcept; + +bool operator==(VkCopyAccelerationStructureInfoKHR const &lhs, + VkCopyAccelerationStructureInfoKHR const &rhs) noexcept; +bool operator!=(VkCopyAccelerationStructureInfoKHR const &lhs, + VkCopyAccelerationStructureInfoKHR const &rhs) noexcept; + +bool operator==(VkRayTracingPipelineInterfaceCreateInfoKHR const &lhs, + VkRayTracingPipelineInterfaceCreateInfoKHR const &rhs) noexcept; +bool operator!=(VkRayTracingPipelineInterfaceCreateInfoKHR const &lhs, + VkRayTracingPipelineInterfaceCreateInfoKHR const &rhs) noexcept; + +bool operator==(VkPipelineLibraryCreateInfoKHR const &lhs, + VkPipelineLibraryCreateInfoKHR const &rhs) noexcept; +bool operator!=(VkPipelineLibraryCreateInfoKHR const &lhs, + VkPipelineLibraryCreateInfoKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const &lhs, + VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const &lhs, + VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const &lhs, + VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const &lhs, + VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const &rhs) noexcept; + +bool operator==(VkRenderPassTransformBeginInfoQCOM const &lhs, + VkRenderPassTransformBeginInfoQCOM const &rhs) noexcept; +bool operator!=(VkRenderPassTransformBeginInfoQCOM const &lhs, + VkRenderPassTransformBeginInfoQCOM const &rhs) noexcept; + +bool operator==(VkCopyCommandTransformInfoQCOM const &lhs, + VkCopyCommandTransformInfoQCOM const &rhs) noexcept; +bool operator!=(VkCopyCommandTransformInfoQCOM const &lhs, + VkCopyCommandTransformInfoQCOM const &rhs) noexcept; + +bool operator==(VkCommandBufferInheritanceRenderPassTransformInfoQCOM const &lhs, + VkCommandBufferInheritanceRenderPassTransformInfoQCOM const &rhs) noexcept; +bool operator!=(VkCommandBufferInheritanceRenderPassTransformInfoQCOM const &lhs, + VkCommandBufferInheritanceRenderPassTransformInfoQCOM const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceDiagnosticsConfigFeaturesNV const &lhs, + VkPhysicalDeviceDiagnosticsConfigFeaturesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceDiagnosticsConfigFeaturesNV const &lhs, + VkPhysicalDeviceDiagnosticsConfigFeaturesNV const &rhs) noexcept; + +bool operator==(VkDeviceDiagnosticsConfigCreateInfoNV const &lhs, + VkDeviceDiagnosticsConfigCreateInfoNV const &rhs) noexcept; +bool operator!=(VkDeviceDiagnosticsConfigCreateInfoNV const &lhs, + VkDeviceDiagnosticsConfigCreateInfoNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const &lhs, + VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const &lhs, + VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const &lhs, + VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const &lhs, + VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceRobustness2FeaturesEXT const &lhs, + VkPhysicalDeviceRobustness2FeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceRobustness2FeaturesEXT const &lhs, + VkPhysicalDeviceRobustness2FeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceRobustness2PropertiesEXT const &lhs, + VkPhysicalDeviceRobustness2PropertiesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceRobustness2PropertiesEXT const &lhs, + VkPhysicalDeviceRobustness2PropertiesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceImageRobustnessFeaturesEXT const &lhs, + VkPhysicalDeviceImageRobustnessFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceImageRobustnessFeaturesEXT const &lhs, + VkPhysicalDeviceImageRobustnessFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const &lhs, + VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const &lhs, + VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const &rhs) noexcept; + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkPhysicalDevicePortabilitySubsetFeaturesKHR const &lhs, + VkPhysicalDevicePortabilitySubsetFeaturesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDevicePortabilitySubsetFeaturesKHR const &lhs, + VkPhysicalDevicePortabilitySubsetFeaturesKHR const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkPhysicalDevicePortabilitySubsetPropertiesKHR const &lhs, + VkPhysicalDevicePortabilitySubsetPropertiesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDevicePortabilitySubsetPropertiesKHR const &lhs, + VkPhysicalDevicePortabilitySubsetPropertiesKHR const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +bool operator==(VkPhysicalDevice4444FormatsFeaturesEXT const &lhs, + VkPhysicalDevice4444FormatsFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDevice4444FormatsFeaturesEXT const &lhs, + VkPhysicalDevice4444FormatsFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const &lhs, + VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const &lhs, + VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const &rhs) noexcept; + +bool operator==(VkBufferCopy2KHR const &lhs, + VkBufferCopy2KHR const &rhs) noexcept; +bool operator!=(VkBufferCopy2KHR const &lhs, + VkBufferCopy2KHR const &rhs) noexcept; + +bool operator==(VkImageCopy2KHR const &lhs, + VkImageCopy2KHR const &rhs) noexcept; +bool operator!=(VkImageCopy2KHR const &lhs, + VkImageCopy2KHR const &rhs) noexcept; + +bool operator==(VkImageBlit2KHR const &lhs, + VkImageBlit2KHR const &rhs) noexcept; +bool operator!=(VkImageBlit2KHR const &lhs, + VkImageBlit2KHR const &rhs) noexcept; + +bool operator==(VkBufferImageCopy2KHR const &lhs, + VkBufferImageCopy2KHR const &rhs) noexcept; +bool operator!=(VkBufferImageCopy2KHR const &lhs, + VkBufferImageCopy2KHR const &rhs) noexcept; + +bool operator==(VkImageResolve2KHR const &lhs, + VkImageResolve2KHR const &rhs) noexcept; +bool operator!=(VkImageResolve2KHR const &lhs, + VkImageResolve2KHR const &rhs) noexcept; + +bool operator==(VkCopyBufferInfo2KHR const &lhs, + VkCopyBufferInfo2KHR const &rhs) noexcept; +bool operator!=(VkCopyBufferInfo2KHR const &lhs, + VkCopyBufferInfo2KHR const &rhs) noexcept; + +bool operator==(VkCopyImageInfo2KHR const &lhs, + VkCopyImageInfo2KHR const &rhs) noexcept; +bool operator!=(VkCopyImageInfo2KHR const &lhs, + VkCopyImageInfo2KHR const &rhs) noexcept; + +bool operator==(VkBlitImageInfo2KHR const &lhs, + VkBlitImageInfo2KHR const &rhs) noexcept; +bool operator!=(VkBlitImageInfo2KHR const &lhs, + VkBlitImageInfo2KHR const &rhs) noexcept; + +bool operator==(VkCopyBufferToImageInfo2KHR const &lhs, + VkCopyBufferToImageInfo2KHR const &rhs) noexcept; +bool operator!=(VkCopyBufferToImageInfo2KHR const &lhs, + VkCopyBufferToImageInfo2KHR const &rhs) noexcept; + +bool operator==(VkCopyImageToBufferInfo2KHR const &lhs, + VkCopyImageToBufferInfo2KHR const &rhs) noexcept; +bool operator!=(VkCopyImageToBufferInfo2KHR const &lhs, + VkCopyImageToBufferInfo2KHR const &rhs) noexcept; + +bool operator==(VkResolveImageInfo2KHR const &lhs, + VkResolveImageInfo2KHR const &rhs) noexcept; +bool operator!=(VkResolveImageInfo2KHR const &lhs, + VkResolveImageInfo2KHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const &lhs, + VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const &lhs, + VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const &rhs) noexcept; + +bool operator==(VkFragmentShadingRateAttachmentInfoKHR const &lhs, + VkFragmentShadingRateAttachmentInfoKHR const &rhs) noexcept; +bool operator!=(VkFragmentShadingRateAttachmentInfoKHR const &lhs, + VkFragmentShadingRateAttachmentInfoKHR const &rhs) noexcept; + +bool operator==(VkPipelineFragmentShadingRateStateCreateInfoKHR const &lhs, + VkPipelineFragmentShadingRateStateCreateInfoKHR const &rhs) noexcept; +bool operator!=(VkPipelineFragmentShadingRateStateCreateInfoKHR const &lhs, + VkPipelineFragmentShadingRateStateCreateInfoKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceFragmentShadingRateFeaturesKHR const &lhs, + VkPhysicalDeviceFragmentShadingRateFeaturesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceFragmentShadingRateFeaturesKHR const &lhs, + VkPhysicalDeviceFragmentShadingRateFeaturesKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceFragmentShadingRatePropertiesKHR const &lhs, + VkPhysicalDeviceFragmentShadingRatePropertiesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceFragmentShadingRatePropertiesKHR const &lhs, + VkPhysicalDeviceFragmentShadingRatePropertiesKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceFragmentShadingRateKHR const &lhs, + VkPhysicalDeviceFragmentShadingRateKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceFragmentShadingRateKHR const &lhs, + VkPhysicalDeviceFragmentShadingRateKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR const &lhs, + VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR const &lhs, + VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const &lhs, + VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const &lhs, + VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const &lhs, + VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const &lhs, + VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const &rhs) noexcept; + +bool operator==(VkPipelineFragmentShadingRateEnumStateCreateInfoNV const &lhs, + VkPipelineFragmentShadingRateEnumStateCreateInfoNV const &rhs) noexcept; +bool operator!=(VkPipelineFragmentShadingRateEnumStateCreateInfoNV const &lhs, + VkPipelineFragmentShadingRateEnumStateCreateInfoNV const &rhs) noexcept; + +bool operator==(VkAccelerationStructureBuildSizesInfoKHR const &lhs, + VkAccelerationStructureBuildSizesInfoKHR const &rhs) noexcept; +bool operator!=(VkAccelerationStructureBuildSizesInfoKHR const &lhs, + VkAccelerationStructureBuildSizesInfoKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const &lhs, + VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const &lhs, + VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const &rhs) noexcept; + +bool operator==(VkMutableDescriptorTypeListVALVE const &lhs, + VkMutableDescriptorTypeListVALVE const &rhs) noexcept; +bool operator!=(VkMutableDescriptorTypeListVALVE const &lhs, + VkMutableDescriptorTypeListVALVE const &rhs) noexcept; + +bool operator==(VkMutableDescriptorTypeCreateInfoVALVE const &lhs, + VkMutableDescriptorTypeCreateInfoVALVE const &rhs) noexcept; +bool operator!=(VkMutableDescriptorTypeCreateInfoVALVE const &lhs, + VkMutableDescriptorTypeCreateInfoVALVE const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const &lhs, + VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const &lhs, + VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const &lhs, + VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const &lhs, + VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const &rhs) noexcept; + +bool operator==(VkVertexInputBindingDescription2EXT const &lhs, + VkVertexInputBindingDescription2EXT const &rhs) noexcept; +bool operator!=(VkVertexInputBindingDescription2EXT const &lhs, + VkVertexInputBindingDescription2EXT const &rhs) noexcept; + +bool operator==(VkVertexInputAttributeDescription2EXT const &lhs, + VkVertexInputAttributeDescription2EXT const &rhs) noexcept; +bool operator!=(VkVertexInputAttributeDescription2EXT const &lhs, + VkVertexInputAttributeDescription2EXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceColorWriteEnableFeaturesEXT const &lhs, + VkPhysicalDeviceColorWriteEnableFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceColorWriteEnableFeaturesEXT const &lhs, + VkPhysicalDeviceColorWriteEnableFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPipelineColorWriteCreateInfoEXT const &lhs, + VkPipelineColorWriteCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkPipelineColorWriteCreateInfoEXT const &lhs, + VkPipelineColorWriteCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkMemoryBarrier2KHR const &lhs, + VkMemoryBarrier2KHR const &rhs) noexcept; +bool operator!=(VkMemoryBarrier2KHR const &lhs, + VkMemoryBarrier2KHR const &rhs) noexcept; + +bool operator==(VkImageMemoryBarrier2KHR const &lhs, + VkImageMemoryBarrier2KHR const &rhs) noexcept; +bool operator!=(VkImageMemoryBarrier2KHR const &lhs, + VkImageMemoryBarrier2KHR const &rhs) noexcept; + +bool operator==(VkBufferMemoryBarrier2KHR const &lhs, + VkBufferMemoryBarrier2KHR const &rhs) noexcept; +bool operator!=(VkBufferMemoryBarrier2KHR const &lhs, + VkBufferMemoryBarrier2KHR const &rhs) noexcept; + +bool operator==(VkDependencyInfoKHR const &lhs, + VkDependencyInfoKHR const &rhs) noexcept; +bool operator!=(VkDependencyInfoKHR const &lhs, + VkDependencyInfoKHR const &rhs) noexcept; + +bool operator==(VkSemaphoreSubmitInfoKHR const &lhs, + VkSemaphoreSubmitInfoKHR const &rhs) noexcept; +bool operator!=(VkSemaphoreSubmitInfoKHR const &lhs, + VkSemaphoreSubmitInfoKHR const &rhs) noexcept; + +bool operator==(VkCommandBufferSubmitInfoKHR const &lhs, + VkCommandBufferSubmitInfoKHR const &rhs) noexcept; +bool operator!=(VkCommandBufferSubmitInfoKHR const &lhs, + VkCommandBufferSubmitInfoKHR const &rhs) noexcept; + +bool operator==(VkSubmitInfo2KHR const &lhs, + VkSubmitInfo2KHR const &rhs) noexcept; +bool operator!=(VkSubmitInfo2KHR const &lhs, + VkSubmitInfo2KHR const &rhs) noexcept; + +bool operator==(VkQueueFamilyCheckpointProperties2NV const &lhs, + VkQueueFamilyCheckpointProperties2NV const &rhs) noexcept; +bool operator!=(VkQueueFamilyCheckpointProperties2NV const &lhs, + VkQueueFamilyCheckpointProperties2NV const &rhs) noexcept; + +bool operator==(VkCheckpointData2NV const &lhs, + VkCheckpointData2NV const &rhs) noexcept; +bool operator!=(VkCheckpointData2NV const &lhs, + VkCheckpointData2NV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceSynchronization2FeaturesKHR const &lhs, + VkPhysicalDeviceSynchronization2FeaturesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceSynchronization2FeaturesKHR const &lhs, + VkPhysicalDeviceSynchronization2FeaturesKHR const &rhs) noexcept; + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoQueueFamilyProperties2KHR const &lhs, + VkVideoQueueFamilyProperties2KHR const &rhs) noexcept; +bool operator!=(VkVideoQueueFamilyProperties2KHR const &lhs, + VkVideoQueueFamilyProperties2KHR const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoProfilesKHR const &lhs, + VkVideoProfilesKHR const &rhs) noexcept; +bool operator!=(VkVideoProfilesKHR const &lhs, + VkVideoProfilesKHR const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkPhysicalDeviceVideoFormatInfoKHR const &lhs, + VkPhysicalDeviceVideoFormatInfoKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceVideoFormatInfoKHR const &lhs, + VkPhysicalDeviceVideoFormatInfoKHR const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoFormatPropertiesKHR const &lhs, + VkVideoFormatPropertiesKHR const &rhs) noexcept; +bool operator!=(VkVideoFormatPropertiesKHR const &lhs, + VkVideoFormatPropertiesKHR const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoProfileKHR const &lhs, + VkVideoProfileKHR const &rhs) noexcept; +bool operator!=(VkVideoProfileKHR const &lhs, + VkVideoProfileKHR const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoCapabilitiesKHR const &lhs, + VkVideoCapabilitiesKHR const &rhs) noexcept; +bool operator!=(VkVideoCapabilitiesKHR const &lhs, + VkVideoCapabilitiesKHR const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoGetMemoryPropertiesKHR const &lhs, + VkVideoGetMemoryPropertiesKHR const &rhs) noexcept; +bool operator!=(VkVideoGetMemoryPropertiesKHR const &lhs, + VkVideoGetMemoryPropertiesKHR const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoBindMemoryKHR const &lhs, + VkVideoBindMemoryKHR const &rhs) noexcept; +bool operator!=(VkVideoBindMemoryKHR const &lhs, + VkVideoBindMemoryKHR const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoPictureResourceKHR const &lhs, + VkVideoPictureResourceKHR const &rhs) noexcept; +bool operator!=(VkVideoPictureResourceKHR const &lhs, + VkVideoPictureResourceKHR const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoReferenceSlotKHR const &lhs, + VkVideoReferenceSlotKHR const &rhs) noexcept; +bool operator!=(VkVideoReferenceSlotKHR const &lhs, + VkVideoReferenceSlotKHR const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeInfoKHR const &lhs, + VkVideoDecodeInfoKHR const &rhs) noexcept; +bool operator!=(VkVideoDecodeInfoKHR const &lhs, + VkVideoDecodeInfoKHR const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH264ProfileEXT const &lhs, + VkVideoDecodeH264ProfileEXT const &rhs) noexcept; +bool operator!=(VkVideoDecodeH264ProfileEXT const &lhs, + VkVideoDecodeH264ProfileEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH264CapabilitiesEXT const &lhs, + VkVideoDecodeH264CapabilitiesEXT const &rhs) noexcept; +bool operator!=(VkVideoDecodeH264CapabilitiesEXT const &lhs, + VkVideoDecodeH264CapabilitiesEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH264SessionCreateInfoEXT const &lhs, + VkVideoDecodeH264SessionCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkVideoDecodeH264SessionCreateInfoEXT const &lhs, + VkVideoDecodeH264SessionCreateInfoEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH264SessionParametersAddInfoEXT const &lhs, + VkVideoDecodeH264SessionParametersAddInfoEXT const &rhs) noexcept; +bool operator!=(VkVideoDecodeH264SessionParametersAddInfoEXT const &lhs, + VkVideoDecodeH264SessionParametersAddInfoEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH264SessionParametersCreateInfoEXT const &lhs, + VkVideoDecodeH264SessionParametersCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkVideoDecodeH264SessionParametersCreateInfoEXT const &lhs, + VkVideoDecodeH264SessionParametersCreateInfoEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH264PictureInfoEXT const &lhs, + VkVideoDecodeH264PictureInfoEXT const &rhs) noexcept; +bool operator!=(VkVideoDecodeH264PictureInfoEXT const &lhs, + VkVideoDecodeH264PictureInfoEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH264DpbSlotInfoEXT const &lhs, + VkVideoDecodeH264DpbSlotInfoEXT const &rhs) noexcept; +bool operator!=(VkVideoDecodeH264DpbSlotInfoEXT const &lhs, + VkVideoDecodeH264DpbSlotInfoEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH264MvcEXT const &lhs, + VkVideoDecodeH264MvcEXT const &rhs) noexcept; +bool operator!=(VkVideoDecodeH264MvcEXT const &lhs, + VkVideoDecodeH264MvcEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH265ProfileEXT const &lhs, + VkVideoDecodeH265ProfileEXT const &rhs) noexcept; +bool operator!=(VkVideoDecodeH265ProfileEXT const &lhs, + VkVideoDecodeH265ProfileEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH265CapabilitiesEXT const &lhs, + VkVideoDecodeH265CapabilitiesEXT const &rhs) noexcept; +bool operator!=(VkVideoDecodeH265CapabilitiesEXT const &lhs, + VkVideoDecodeH265CapabilitiesEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH265SessionCreateInfoEXT const &lhs, + VkVideoDecodeH265SessionCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkVideoDecodeH265SessionCreateInfoEXT const &lhs, + VkVideoDecodeH265SessionCreateInfoEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH265SessionParametersAddInfoEXT const &lhs, + VkVideoDecodeH265SessionParametersAddInfoEXT const &rhs) noexcept; +bool operator!=(VkVideoDecodeH265SessionParametersAddInfoEXT const &lhs, + VkVideoDecodeH265SessionParametersAddInfoEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH265SessionParametersCreateInfoEXT const &lhs, + VkVideoDecodeH265SessionParametersCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkVideoDecodeH265SessionParametersCreateInfoEXT const &lhs, + VkVideoDecodeH265SessionParametersCreateInfoEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH265PictureInfoEXT const &lhs, + VkVideoDecodeH265PictureInfoEXT const &rhs) noexcept; +bool operator!=(VkVideoDecodeH265PictureInfoEXT const &lhs, + VkVideoDecodeH265PictureInfoEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH265DpbSlotInfoEXT const &lhs, + VkVideoDecodeH265DpbSlotInfoEXT const &rhs) noexcept; +bool operator!=(VkVideoDecodeH265DpbSlotInfoEXT const &lhs, + VkVideoDecodeH265DpbSlotInfoEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoSessionCreateInfoKHR const &lhs, + VkVideoSessionCreateInfoKHR const &rhs) noexcept; +bool operator!=(VkVideoSessionCreateInfoKHR const &lhs, + VkVideoSessionCreateInfoKHR const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoSessionParametersCreateInfoKHR const &lhs, + VkVideoSessionParametersCreateInfoKHR const &rhs) noexcept; +bool operator!=(VkVideoSessionParametersCreateInfoKHR const &lhs, + VkVideoSessionParametersCreateInfoKHR const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoSessionParametersUpdateInfoKHR const &lhs, + VkVideoSessionParametersUpdateInfoKHR const &rhs) noexcept; +bool operator!=(VkVideoSessionParametersUpdateInfoKHR const &lhs, + VkVideoSessionParametersUpdateInfoKHR const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoBeginCodingInfoKHR const &lhs, + VkVideoBeginCodingInfoKHR const &rhs) noexcept; +bool operator!=(VkVideoBeginCodingInfoKHR const &lhs, + VkVideoBeginCodingInfoKHR const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEndCodingInfoKHR const &lhs, + VkVideoEndCodingInfoKHR const &rhs) noexcept; +bool operator!=(VkVideoEndCodingInfoKHR const &lhs, + VkVideoEndCodingInfoKHR const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoCodingControlInfoKHR const &lhs, + VkVideoCodingControlInfoKHR const &rhs) noexcept; +bool operator!=(VkVideoCodingControlInfoKHR const &lhs, + VkVideoCodingControlInfoKHR const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeInfoKHR const &lhs, + VkVideoEncodeInfoKHR const &rhs) noexcept; +bool operator!=(VkVideoEncodeInfoKHR const &lhs, + VkVideoEncodeInfoKHR const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeRateControlInfoKHR const &lhs, + VkVideoEncodeRateControlInfoKHR const &rhs) noexcept; +bool operator!=(VkVideoEncodeRateControlInfoKHR const &lhs, + VkVideoEncodeRateControlInfoKHR const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH264CapabilitiesEXT const &lhs, + VkVideoEncodeH264CapabilitiesEXT const &rhs) noexcept; +bool operator!=(VkVideoEncodeH264CapabilitiesEXT const &lhs, + VkVideoEncodeH264CapabilitiesEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH264SessionCreateInfoEXT const &lhs, + VkVideoEncodeH264SessionCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkVideoEncodeH264SessionCreateInfoEXT const &lhs, + VkVideoEncodeH264SessionCreateInfoEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH264SessionParametersAddInfoEXT const &lhs, + VkVideoEncodeH264SessionParametersAddInfoEXT const &rhs) noexcept; +bool operator!=(VkVideoEncodeH264SessionParametersAddInfoEXT const &lhs, + VkVideoEncodeH264SessionParametersAddInfoEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH264SessionParametersCreateInfoEXT const &lhs, + VkVideoEncodeH264SessionParametersCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkVideoEncodeH264SessionParametersCreateInfoEXT const &lhs, + VkVideoEncodeH264SessionParametersCreateInfoEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH264DpbSlotInfoEXT const &lhs, + VkVideoEncodeH264DpbSlotInfoEXT const &rhs) noexcept; +bool operator!=(VkVideoEncodeH264DpbSlotInfoEXT const &lhs, + VkVideoEncodeH264DpbSlotInfoEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH264VclFrameInfoEXT const &lhs, + VkVideoEncodeH264VclFrameInfoEXT const &rhs) noexcept; +bool operator!=(VkVideoEncodeH264VclFrameInfoEXT const &lhs, + VkVideoEncodeH264VclFrameInfoEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH264EmitPictureParametersEXT const &lhs, + VkVideoEncodeH264EmitPictureParametersEXT const &rhs) noexcept; +bool operator!=(VkVideoEncodeH264EmitPictureParametersEXT const &lhs, + VkVideoEncodeH264EmitPictureParametersEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH264ProfileEXT const &lhs, + VkVideoEncodeH264ProfileEXT const &rhs) noexcept; +bool operator!=(VkVideoEncodeH264ProfileEXT const &lhs, + VkVideoEncodeH264ProfileEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH264NaluSliceEXT const &lhs, + VkVideoEncodeH264NaluSliceEXT const &rhs) noexcept; +bool operator!=(VkVideoEncodeH264NaluSliceEXT const &lhs, + VkVideoEncodeH264NaluSliceEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH265CapabilitiesEXT const &lhs, + VkVideoEncodeH265CapabilitiesEXT const &rhs) noexcept; +bool operator!=(VkVideoEncodeH265CapabilitiesEXT const &lhs, + VkVideoEncodeH265CapabilitiesEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH265SessionCreateInfoEXT const &lhs, + VkVideoEncodeH265SessionCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkVideoEncodeH265SessionCreateInfoEXT const &lhs, + VkVideoEncodeH265SessionCreateInfoEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH265SessionParametersAddInfoEXT const &lhs, + VkVideoEncodeH265SessionParametersAddInfoEXT const &rhs) noexcept; +bool operator!=(VkVideoEncodeH265SessionParametersAddInfoEXT const &lhs, + VkVideoEncodeH265SessionParametersAddInfoEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH265SessionParametersCreateInfoEXT const &lhs, + VkVideoEncodeH265SessionParametersCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkVideoEncodeH265SessionParametersCreateInfoEXT const &lhs, + VkVideoEncodeH265SessionParametersCreateInfoEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH265VclFrameInfoEXT const &lhs, + VkVideoEncodeH265VclFrameInfoEXT const &rhs) noexcept; +bool operator!=(VkVideoEncodeH265VclFrameInfoEXT const &lhs, + VkVideoEncodeH265VclFrameInfoEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH265EmitPictureParametersEXT const &lhs, + VkVideoEncodeH265EmitPictureParametersEXT const &rhs) noexcept; +bool operator!=(VkVideoEncodeH265EmitPictureParametersEXT const &lhs, + VkVideoEncodeH265EmitPictureParametersEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH265NaluSliceEXT const &lhs, + VkVideoEncodeH265NaluSliceEXT const &rhs) noexcept; +bool operator!=(VkVideoEncodeH265NaluSliceEXT const &lhs, + VkVideoEncodeH265NaluSliceEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH265ProfileEXT const &lhs, + VkVideoEncodeH265ProfileEXT const &rhs) noexcept; +bool operator!=(VkVideoEncodeH265ProfileEXT const &lhs, + VkVideoEncodeH265ProfileEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH265DpbSlotInfoEXT const &lhs, + VkVideoEncodeH265DpbSlotInfoEXT const &rhs) noexcept; +bool operator!=(VkVideoEncodeH265DpbSlotInfoEXT const &lhs, + VkVideoEncodeH265DpbSlotInfoEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH265ReferenceListsEXT const &lhs, + VkVideoEncodeH265ReferenceListsEXT const &rhs) noexcept; +bool operator!=(VkVideoEncodeH265ReferenceListsEXT const &lhs, + VkVideoEncodeH265ReferenceListsEXT const &rhs) noexcept; +#endif // VK_ENABLE_BETA_EXTENSIONS + +bool operator==(VkPhysicalDeviceInheritedViewportScissorFeaturesNV const &lhs, + VkPhysicalDeviceInheritedViewportScissorFeaturesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceInheritedViewportScissorFeaturesNV const &lhs, + VkPhysicalDeviceInheritedViewportScissorFeaturesNV const &rhs) noexcept; + +bool operator==(VkCommandBufferInheritanceViewportScissorInfoNV const &lhs, + VkCommandBufferInheritanceViewportScissorInfoNV const &rhs) noexcept; +bool operator!=(VkCommandBufferInheritanceViewportScissorInfoNV const &lhs, + VkCommandBufferInheritanceViewportScissorInfoNV const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const &lhs, + VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const &lhs, + VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceProvokingVertexFeaturesEXT const &lhs, + VkPhysicalDeviceProvokingVertexFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceProvokingVertexFeaturesEXT const &lhs, + VkPhysicalDeviceProvokingVertexFeaturesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceProvokingVertexPropertiesEXT const &lhs, + VkPhysicalDeviceProvokingVertexPropertiesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceProvokingVertexPropertiesEXT const &lhs, + VkPhysicalDeviceProvokingVertexPropertiesEXT const &rhs) noexcept; + +bool operator==(VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const &lhs, + VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const &rhs) noexcept; +bool operator!=(VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const &lhs, + VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const &rhs) noexcept; + +bool operator==(VkCuModuleCreateInfoNVX const &lhs, + VkCuModuleCreateInfoNVX const &rhs) noexcept; +bool operator!=(VkCuModuleCreateInfoNVX const &lhs, + VkCuModuleCreateInfoNVX const &rhs) noexcept; + +bool operator==(VkCuFunctionCreateInfoNVX const &lhs, + VkCuFunctionCreateInfoNVX const &rhs) noexcept; +bool operator!=(VkCuFunctionCreateInfoNVX const &lhs, + VkCuFunctionCreateInfoNVX const &rhs) noexcept; + +bool operator==(VkCuLaunchInfoNVX const &lhs, + VkCuLaunchInfoNVX const &rhs) noexcept; +bool operator!=(VkCuLaunchInfoNVX const &lhs, + VkCuLaunchInfoNVX const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR const &lhs, + VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR const &lhs, + VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR const &lhs, + VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR const &lhs, + VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceDrmPropertiesEXT const &lhs, + VkPhysicalDeviceDrmPropertiesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceDrmPropertiesEXT const &lhs, + VkPhysicalDeviceDrmPropertiesEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const &lhs, + VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const &lhs, + VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const &rhs) noexcept; + +bool operator==(VkAccelerationStructureMotionInfoNV const &lhs, + VkAccelerationStructureMotionInfoNV const &rhs) noexcept; +bool operator!=(VkAccelerationStructureMotionInfoNV const &lhs, + VkAccelerationStructureMotionInfoNV const &rhs) noexcept; + +bool operator==(VkSRTDataNV const &lhs, + VkSRTDataNV const &rhs) noexcept; +bool operator!=(VkSRTDataNV const &lhs, + VkSRTDataNV const &rhs) noexcept; + +bool operator==(VkAccelerationStructureSRTMotionInstanceNV const &lhs, + VkAccelerationStructureSRTMotionInstanceNV const &rhs) noexcept; +bool operator!=(VkAccelerationStructureSRTMotionInstanceNV const &lhs, + VkAccelerationStructureSRTMotionInstanceNV const &rhs) noexcept; + +bool operator==(VkAccelerationStructureMatrixMotionInstanceNV const &lhs, + VkAccelerationStructureMatrixMotionInstanceNV const &rhs) noexcept; +bool operator!=(VkAccelerationStructureMatrixMotionInstanceNV const &lhs, + VkAccelerationStructureMatrixMotionInstanceNV const &rhs) noexcept; + +bool operator==(VkMemoryGetRemoteAddressInfoNV const &lhs, + VkMemoryGetRemoteAddressInfoNV const &rhs) noexcept; +bool operator!=(VkMemoryGetRemoteAddressInfoNV const &lhs, + VkMemoryGetRemoteAddressInfoNV const &rhs) noexcept; + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkImportMemoryBufferCollectionFUCHSIA const &lhs, + VkImportMemoryBufferCollectionFUCHSIA const &rhs) noexcept; +bool operator!=(VkImportMemoryBufferCollectionFUCHSIA const &lhs, + VkImportMemoryBufferCollectionFUCHSIA const &rhs) noexcept; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkBufferCollectionImageCreateInfoFUCHSIA const &lhs, + VkBufferCollectionImageCreateInfoFUCHSIA const &rhs) noexcept; +bool operator!=(VkBufferCollectionImageCreateInfoFUCHSIA const &lhs, + VkBufferCollectionImageCreateInfoFUCHSIA const &rhs) noexcept; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkBufferCollectionBufferCreateInfoFUCHSIA const &lhs, + VkBufferCollectionBufferCreateInfoFUCHSIA const &rhs) noexcept; +bool operator!=(VkBufferCollectionBufferCreateInfoFUCHSIA const &lhs, + VkBufferCollectionBufferCreateInfoFUCHSIA const &rhs) noexcept; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkBufferCollectionCreateInfoFUCHSIA const &lhs, + VkBufferCollectionCreateInfoFUCHSIA const &rhs) noexcept; +bool operator!=(VkBufferCollectionCreateInfoFUCHSIA const &lhs, + VkBufferCollectionCreateInfoFUCHSIA const &rhs) noexcept; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkBufferCollectionPropertiesFUCHSIA const &lhs, + VkBufferCollectionPropertiesFUCHSIA const &rhs) noexcept; +bool operator!=(VkBufferCollectionPropertiesFUCHSIA const &lhs, + VkBufferCollectionPropertiesFUCHSIA const &rhs) noexcept; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkBufferConstraintsInfoFUCHSIA const &lhs, + VkBufferConstraintsInfoFUCHSIA const &rhs) noexcept; +bool operator!=(VkBufferConstraintsInfoFUCHSIA const &lhs, + VkBufferConstraintsInfoFUCHSIA const &rhs) noexcept; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkSysmemColorSpaceFUCHSIA const &lhs, + VkSysmemColorSpaceFUCHSIA const &rhs) noexcept; +bool operator!=(VkSysmemColorSpaceFUCHSIA const &lhs, + VkSysmemColorSpaceFUCHSIA const &rhs) noexcept; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkImageFormatConstraintsInfoFUCHSIA const &lhs, + VkImageFormatConstraintsInfoFUCHSIA const &rhs) noexcept; +bool operator!=(VkImageFormatConstraintsInfoFUCHSIA const &lhs, + VkImageFormatConstraintsInfoFUCHSIA const &rhs) noexcept; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkImageConstraintsInfoFUCHSIA const &lhs, + VkImageConstraintsInfoFUCHSIA const &rhs) noexcept; +bool operator!=(VkImageConstraintsInfoFUCHSIA const &lhs, + VkImageConstraintsInfoFUCHSIA const &rhs) noexcept; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkBufferCollectionConstraintsInfoFUCHSIA const &lhs, + VkBufferCollectionConstraintsInfoFUCHSIA const &rhs) noexcept; +bool operator!=(VkBufferCollectionConstraintsInfoFUCHSIA const &lhs, + VkBufferCollectionConstraintsInfoFUCHSIA const &rhs) noexcept; +#endif // VK_USE_PLATFORM_FUCHSIA + +bool operator==(VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const &lhs, + VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const &lhs, + VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const &rhs) noexcept; + +bool operator==(VkFormatProperties3KHR const &lhs, + VkFormatProperties3KHR const &rhs) noexcept; +bool operator!=(VkFormatProperties3KHR const &lhs, + VkFormatProperties3KHR const &rhs) noexcept; + +bool operator==(VkDrmFormatModifierPropertiesList2EXT const &lhs, + VkDrmFormatModifierPropertiesList2EXT const &rhs) noexcept; +bool operator!=(VkDrmFormatModifierPropertiesList2EXT const &lhs, + VkDrmFormatModifierPropertiesList2EXT const &rhs) noexcept; + +bool operator==(VkDrmFormatModifierProperties2EXT const &lhs, + VkDrmFormatModifierProperties2EXT const &rhs) noexcept; +bool operator!=(VkDrmFormatModifierProperties2EXT const &lhs, + VkDrmFormatModifierProperties2EXT const &rhs) noexcept; + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkAndroidHardwareBufferFormatProperties2ANDROID const &lhs, + VkAndroidHardwareBufferFormatProperties2ANDROID const &rhs) noexcept; +bool operator!=(VkAndroidHardwareBufferFormatProperties2ANDROID const &lhs, + VkAndroidHardwareBufferFormatProperties2ANDROID const &rhs) noexcept; +#endif // VK_USE_PLATFORM_ANDROID_KHR + +bool operator==(VkPipelineRenderingCreateInfoKHR const &lhs, + VkPipelineRenderingCreateInfoKHR const &rhs) noexcept; +bool operator!=(VkPipelineRenderingCreateInfoKHR const &lhs, + VkPipelineRenderingCreateInfoKHR const &rhs) noexcept; + +bool operator==(VkRenderingInfoKHR const &lhs, + VkRenderingInfoKHR const &rhs) noexcept; +bool operator!=(VkRenderingInfoKHR const &lhs, + VkRenderingInfoKHR const &rhs) noexcept; + +bool operator==(VkRenderingFragmentShadingRateAttachmentInfoKHR const &lhs, + VkRenderingFragmentShadingRateAttachmentInfoKHR const &rhs) noexcept; +bool operator!=(VkRenderingFragmentShadingRateAttachmentInfoKHR const &lhs, + VkRenderingFragmentShadingRateAttachmentInfoKHR const &rhs) noexcept; + +bool operator==(VkRenderingFragmentDensityMapAttachmentInfoEXT const &lhs, + VkRenderingFragmentDensityMapAttachmentInfoEXT const &rhs) noexcept; +bool operator!=(VkRenderingFragmentDensityMapAttachmentInfoEXT const &lhs, + VkRenderingFragmentDensityMapAttachmentInfoEXT const &rhs) noexcept; + +bool operator==(VkPhysicalDeviceDynamicRenderingFeaturesKHR const &lhs, + VkPhysicalDeviceDynamicRenderingFeaturesKHR const &rhs) noexcept; +bool operator!=(VkPhysicalDeviceDynamicRenderingFeaturesKHR const &lhs, + VkPhysicalDeviceDynamicRenderingFeaturesKHR const &rhs) noexcept; + +bool operator==(VkCommandBufferInheritanceRenderingInfoKHR const &lhs, + VkCommandBufferInheritanceRenderingInfoKHR const &rhs) noexcept; +bool operator!=(VkCommandBufferInheritanceRenderingInfoKHR const &lhs, + VkCommandBufferInheritanceRenderingInfoKHR const &rhs) noexcept; + +bool operator==(VkAttachmentSampleCountInfoAMD const &lhs, + VkAttachmentSampleCountInfoAMD const &rhs) noexcept; +bool operator!=(VkAttachmentSampleCountInfoAMD const &lhs, + VkAttachmentSampleCountInfoAMD const &rhs) noexcept; + +bool operator==(VkMultiviewPerViewAttributesInfoNVX const &lhs, + VkMultiviewPerViewAttributesInfoNVX const &rhs) noexcept; +bool operator!=(VkMultiviewPerViewAttributesInfoNVX const &lhs, + VkMultiviewPerViewAttributesInfoNVX const &rhs) noexcept; + +#ifdef VK_EQUALITY_CHECK_CONFIG_MAIN + +#include <cstdint> +#include <cstring> + +bool operator==(VkBaseOutStructure const &lhs, + VkBaseOutStructure const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pNext == rhs.pNext); +} + +bool operator!=(VkBaseOutStructure const &lhs, + VkBaseOutStructure const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBaseInStructure const &lhs, + VkBaseInStructure const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pNext == rhs.pNext); +} + +bool operator!=(VkBaseInStructure const &lhs, + VkBaseInStructure const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkOffset2D const &lhs, + VkOffset2D const &rhs) noexcept { + return (lhs.x == rhs.x) && + (lhs.y == rhs.y); +} + +bool operator!=(VkOffset2D const &lhs, + VkOffset2D const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkOffset3D const &lhs, + VkOffset3D const &rhs) noexcept { + return (lhs.x == rhs.x) && + (lhs.y == rhs.y) && + (lhs.z == rhs.z); +} + +bool operator!=(VkOffset3D const &lhs, + VkOffset3D const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkExtent2D const &lhs, + VkExtent2D const &rhs) noexcept { + return (lhs.width == rhs.width) && + (lhs.height == rhs.height); +} + +bool operator!=(VkExtent2D const &lhs, + VkExtent2D const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkExtent3D const &lhs, + VkExtent3D const &rhs) noexcept { + return (lhs.width == rhs.width) && + (lhs.height == rhs.height) && + (lhs.depth == rhs.depth); +} + +bool operator!=(VkExtent3D const &lhs, + VkExtent3D const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkViewport const &lhs, + VkViewport const &rhs) noexcept { + return (lhs.x == rhs.x) && + (lhs.y == rhs.y) && + (lhs.width == rhs.width) && + (lhs.height == rhs.height) && + (lhs.minDepth == rhs.minDepth) && + (lhs.maxDepth == rhs.maxDepth); +} + +bool operator!=(VkViewport const &lhs, + VkViewport const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkRect2D const &lhs, + VkRect2D const &rhs) noexcept { + return (lhs.offset == rhs.offset) && + (lhs.extent == rhs.extent); +} + +bool operator!=(VkRect2D const &lhs, + VkRect2D const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkClearRect const &lhs, + VkClearRect const &rhs) noexcept { + return (lhs.rect == rhs.rect) && + (lhs.baseArrayLayer == rhs.baseArrayLayer) && + (lhs.layerCount == rhs.layerCount); +} + +bool operator!=(VkClearRect const &lhs, + VkClearRect const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkComponentMapping const &lhs, + VkComponentMapping const &rhs) noexcept { + return (lhs.r == rhs.r) && + (lhs.g == rhs.g) && + (lhs.b == rhs.b) && + (lhs.a == rhs.a); +} + +bool operator!=(VkComponentMapping const &lhs, + VkComponentMapping const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceProperties const &lhs, + VkPhysicalDeviceProperties const &rhs) noexcept { + for(uint32_t i = 0; i < VK_MAX_PHYSICAL_DEVICE_NAME_SIZE; ++i) { + if(lhs.deviceName[i] != rhs.deviceName[i]) + return false; + } + + for(uint32_t i = 0; i < VK_UUID_SIZE; ++i) { + if(lhs.pipelineCacheUUID[i] != rhs.pipelineCacheUUID[i]) + return false; + } + + return (lhs.apiVersion == rhs.apiVersion) && + (lhs.driverVersion == rhs.driverVersion) && + (lhs.vendorID == rhs.vendorID) && + (lhs.deviceID == rhs.deviceID) && + (lhs.deviceType == rhs.deviceType) && + (lhs.limits == rhs.limits) && + (lhs.sparseProperties == rhs.sparseProperties); +} + +bool operator!=(VkPhysicalDeviceProperties const &lhs, + VkPhysicalDeviceProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkExtensionProperties const &lhs, + VkExtensionProperties const &rhs) noexcept { + for(uint32_t i = 0; i < VK_MAX_EXTENSION_NAME_SIZE; ++i) { + if(lhs.extensionName[i] != rhs.extensionName[i]) + return false; + } + + return (lhs.specVersion == rhs.specVersion); +} + +bool operator!=(VkExtensionProperties const &lhs, + VkExtensionProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkLayerProperties const &lhs, + VkLayerProperties const &rhs) noexcept { + for(uint32_t i = 0; i < VK_MAX_EXTENSION_NAME_SIZE; ++i) { + if(lhs.layerName[i] != rhs.layerName[i]) + return false; + } + + for(uint32_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i) { + if(lhs.description[i] != rhs.description[i]) + return false; + } + + return (lhs.specVersion == rhs.specVersion) && + (lhs.implementationVersion == rhs.implementationVersion); +} + +bool operator!=(VkLayerProperties const &lhs, + VkLayerProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkApplicationInfo const &lhs, + VkApplicationInfo const &rhs) noexcept { + if (lhs.pApplicationName != rhs.pApplicationName) { + if(lhs.pApplicationName == nullptr || rhs.pApplicationName == nullptr) + return false; + if(strcmp(lhs.pApplicationName, rhs.pApplicationName) != 0) + return false; + } + + if (lhs.pEngineName != rhs.pEngineName) { + if(lhs.pEngineName == nullptr || rhs.pEngineName == nullptr) + return false; + if(strcmp(lhs.pEngineName, rhs.pEngineName) != 0) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.applicationVersion == rhs.applicationVersion) && + (lhs.engineVersion == rhs.engineVersion) && + (lhs.apiVersion == rhs.apiVersion); +} + +bool operator!=(VkApplicationInfo const &lhs, + VkApplicationInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAllocationCallbacks const &lhs, + VkAllocationCallbacks const &rhs) noexcept { + return (lhs.pUserData == rhs.pUserData) && + (lhs.pfnAllocation == rhs.pfnAllocation) && + (lhs.pfnReallocation == rhs.pfnReallocation) && + (lhs.pfnFree == rhs.pfnFree) && + (lhs.pfnInternalAllocation == rhs.pfnInternalAllocation) && + (lhs.pfnInternalFree == rhs.pfnInternalFree); +} + +bool operator!=(VkAllocationCallbacks const &lhs, + VkAllocationCallbacks const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDeviceQueueCreateInfo const &lhs, + VkDeviceQueueCreateInfo const &rhs) noexcept { + if(lhs.queueCount != rhs.queueCount) + return false; + + for(uint32_t i = 0; i < lhs.queueCount; ++i) { + if(lhs.pQueuePriorities[i] != rhs.pQueuePriorities[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.queueFamilyIndex == rhs.queueFamilyIndex); +} + +bool operator!=(VkDeviceQueueCreateInfo const &lhs, + VkDeviceQueueCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkQueueFamilyProperties const &lhs, + VkQueueFamilyProperties const &rhs) noexcept { + return (lhs.queueFlags == rhs.queueFlags) && + (lhs.queueCount == rhs.queueCount) && + (lhs.timestampValidBits == rhs.timestampValidBits) && + (lhs.minImageTransferGranularity == rhs.minImageTransferGranularity); +} + +bool operator!=(VkQueueFamilyProperties const &lhs, + VkQueueFamilyProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceMemoryProperties const &lhs, + VkPhysicalDeviceMemoryProperties const &rhs) noexcept { + for(uint32_t i = 0; i < VK_MAX_MEMORY_TYPES; ++i) { + if(lhs.memoryTypes[i] != rhs.memoryTypes[i]) + return false; + } + + for(uint32_t i = 0; i < VK_MAX_MEMORY_HEAPS; ++i) { + if(lhs.memoryHeaps[i] != rhs.memoryHeaps[i]) + return false; + } + + return (lhs.memoryTypeCount == rhs.memoryTypeCount) && + (lhs.memoryHeapCount == rhs.memoryHeapCount); +} + +bool operator!=(VkPhysicalDeviceMemoryProperties const &lhs, + VkPhysicalDeviceMemoryProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMemoryAllocateInfo const &lhs, + VkMemoryAllocateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.allocationSize == rhs.allocationSize) && + (lhs.memoryTypeIndex == rhs.memoryTypeIndex); +} + +bool operator!=(VkMemoryAllocateInfo const &lhs, + VkMemoryAllocateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMemoryRequirements const &lhs, + VkMemoryRequirements const &rhs) noexcept { + return (lhs.size == rhs.size) && + (lhs.alignment == rhs.alignment) && + (lhs.memoryTypeBits == rhs.memoryTypeBits); +} + +bool operator!=(VkMemoryRequirements const &lhs, + VkMemoryRequirements const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSparseImageFormatProperties const &lhs, + VkSparseImageFormatProperties const &rhs) noexcept { + return (lhs.aspectMask == rhs.aspectMask) && + (lhs.imageGranularity == rhs.imageGranularity) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkSparseImageFormatProperties const &lhs, + VkSparseImageFormatProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSparseImageMemoryRequirements const &lhs, + VkSparseImageMemoryRequirements const &rhs) noexcept { + return (lhs.formatProperties == rhs.formatProperties) && + (lhs.imageMipTailFirstLod == rhs.imageMipTailFirstLod) && + (lhs.imageMipTailSize == rhs.imageMipTailSize) && + (lhs.imageMipTailOffset == rhs.imageMipTailOffset) && + (lhs.imageMipTailStride == rhs.imageMipTailStride); +} + +bool operator!=(VkSparseImageMemoryRequirements const &lhs, + VkSparseImageMemoryRequirements const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMemoryType const &lhs, + VkMemoryType const &rhs) noexcept { + return (lhs.propertyFlags == rhs.propertyFlags) && + (lhs.heapIndex == rhs.heapIndex); +} + +bool operator!=(VkMemoryType const &lhs, + VkMemoryType const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMemoryHeap const &lhs, + VkMemoryHeap const &rhs) noexcept { + return (lhs.size == rhs.size) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkMemoryHeap const &lhs, + VkMemoryHeap const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMappedMemoryRange const &lhs, + VkMappedMemoryRange const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.memory == rhs.memory) && + (lhs.offset == rhs.offset) && + (lhs.size == rhs.size); +} + +bool operator!=(VkMappedMemoryRange const &lhs, + VkMappedMemoryRange const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkFormatProperties const &lhs, + VkFormatProperties const &rhs) noexcept { + return (lhs.linearTilingFeatures == rhs.linearTilingFeatures) && + (lhs.optimalTilingFeatures == rhs.optimalTilingFeatures) && + (lhs.bufferFeatures == rhs.bufferFeatures); +} + +bool operator!=(VkFormatProperties const &lhs, + VkFormatProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageFormatProperties const &lhs, + VkImageFormatProperties const &rhs) noexcept { + return (lhs.maxExtent == rhs.maxExtent) && + (lhs.maxMipLevels == rhs.maxMipLevels) && + (lhs.maxArrayLayers == rhs.maxArrayLayers) && + (lhs.sampleCounts == rhs.sampleCounts) && + (lhs.maxResourceSize == rhs.maxResourceSize); +} + +bool operator!=(VkImageFormatProperties const &lhs, + VkImageFormatProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDescriptorBufferInfo const &lhs, + VkDescriptorBufferInfo const &rhs) noexcept { + return (lhs.buffer == rhs.buffer) && + (lhs.offset == rhs.offset) && + (lhs.range == rhs.range); +} + +bool operator!=(VkDescriptorBufferInfo const &lhs, + VkDescriptorBufferInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDescriptorImageInfo const &lhs, + VkDescriptorImageInfo const &rhs) noexcept { + return (lhs.sampler == rhs.sampler) && + (lhs.imageView == rhs.imageView) && + (lhs.imageLayout == rhs.imageLayout); +} + +bool operator!=(VkDescriptorImageInfo const &lhs, + VkDescriptorImageInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkWriteDescriptorSet const &lhs, + VkWriteDescriptorSet const &rhs) noexcept { + if(lhs.descriptorCount != rhs.descriptorCount) + return false; + + if(lhs.descriptorCount != rhs.descriptorCount) + return false; + + if(lhs.descriptorCount != rhs.descriptorCount) + return false; + + for(uint32_t i = 0; i < lhs.descriptorCount; ++i) { + if(lhs.pImageInfo[i] != rhs.pImageInfo[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.descriptorCount; ++i) { + if(lhs.pBufferInfo[i] != rhs.pBufferInfo[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.descriptorCount; ++i) { + if(lhs.pTexelBufferView[i] != rhs.pTexelBufferView[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.dstSet == rhs.dstSet) && + (lhs.dstBinding == rhs.dstBinding) && + (lhs.dstArrayElement == rhs.dstArrayElement) && + (lhs.descriptorType == rhs.descriptorType); +} + +bool operator!=(VkWriteDescriptorSet const &lhs, + VkWriteDescriptorSet const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCopyDescriptorSet const &lhs, + VkCopyDescriptorSet const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.srcSet == rhs.srcSet) && + (lhs.srcBinding == rhs.srcBinding) && + (lhs.srcArrayElement == rhs.srcArrayElement) && + (lhs.dstSet == rhs.dstSet) && + (lhs.dstBinding == rhs.dstBinding) && + (lhs.dstArrayElement == rhs.dstArrayElement) && + (lhs.descriptorCount == rhs.descriptorCount); +} + +bool operator!=(VkCopyDescriptorSet const &lhs, + VkCopyDescriptorSet const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBufferCreateInfo const &lhs, + VkBufferCreateInfo const &rhs) noexcept { + if(lhs.queueFamilyIndexCount != rhs.queueFamilyIndexCount) + return false; + + for(uint32_t i = 0; i < lhs.queueFamilyIndexCount; ++i) { + if(lhs.pQueueFamilyIndices[i] != rhs.pQueueFamilyIndices[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.size == rhs.size) && + (lhs.usage == rhs.usage) && + (lhs.sharingMode == rhs.sharingMode); +} + +bool operator!=(VkBufferCreateInfo const &lhs, + VkBufferCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBufferViewCreateInfo const &lhs, + VkBufferViewCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.buffer == rhs.buffer) && + (lhs.format == rhs.format) && + (lhs.offset == rhs.offset) && + (lhs.range == rhs.range); +} + +bool operator!=(VkBufferViewCreateInfo const &lhs, + VkBufferViewCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageSubresource const &lhs, + VkImageSubresource const &rhs) noexcept { + return (lhs.aspectMask == rhs.aspectMask) && + (lhs.mipLevel == rhs.mipLevel) && + (lhs.arrayLayer == rhs.arrayLayer); +} + +bool operator!=(VkImageSubresource const &lhs, + VkImageSubresource const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageSubresourceLayers const &lhs, + VkImageSubresourceLayers const &rhs) noexcept { + return (lhs.aspectMask == rhs.aspectMask) && + (lhs.mipLevel == rhs.mipLevel) && + (lhs.baseArrayLayer == rhs.baseArrayLayer) && + (lhs.layerCount == rhs.layerCount); +} + +bool operator!=(VkImageSubresourceLayers const &lhs, + VkImageSubresourceLayers const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageSubresourceRange const &lhs, + VkImageSubresourceRange const &rhs) noexcept { + return (lhs.aspectMask == rhs.aspectMask) && + (lhs.baseMipLevel == rhs.baseMipLevel) && + (lhs.levelCount == rhs.levelCount) && + (lhs.baseArrayLayer == rhs.baseArrayLayer) && + (lhs.layerCount == rhs.layerCount); +} + +bool operator!=(VkImageSubresourceRange const &lhs, + VkImageSubresourceRange const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMemoryBarrier const &lhs, + VkMemoryBarrier const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.srcAccessMask == rhs.srcAccessMask) && + (lhs.dstAccessMask == rhs.dstAccessMask); +} + +bool operator!=(VkMemoryBarrier const &lhs, + VkMemoryBarrier const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBufferMemoryBarrier const &lhs, + VkBufferMemoryBarrier const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.srcAccessMask == rhs.srcAccessMask) && + (lhs.dstAccessMask == rhs.dstAccessMask) && + (lhs.srcQueueFamilyIndex == rhs.srcQueueFamilyIndex) && + (lhs.dstQueueFamilyIndex == rhs.dstQueueFamilyIndex) && + (lhs.buffer == rhs.buffer) && + (lhs.offset == rhs.offset) && + (lhs.size == rhs.size); +} + +bool operator!=(VkBufferMemoryBarrier const &lhs, + VkBufferMemoryBarrier const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageMemoryBarrier const &lhs, + VkImageMemoryBarrier const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.srcAccessMask == rhs.srcAccessMask) && + (lhs.dstAccessMask == rhs.dstAccessMask) && + (lhs.oldLayout == rhs.oldLayout) && + (lhs.newLayout == rhs.newLayout) && + (lhs.srcQueueFamilyIndex == rhs.srcQueueFamilyIndex) && + (lhs.dstQueueFamilyIndex == rhs.dstQueueFamilyIndex) && + (lhs.image == rhs.image) && + (lhs.subresourceRange == rhs.subresourceRange); +} + +bool operator!=(VkImageMemoryBarrier const &lhs, + VkImageMemoryBarrier const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageCreateInfo const &lhs, + VkImageCreateInfo const &rhs) noexcept { + if(lhs.queueFamilyIndexCount != rhs.queueFamilyIndexCount) + return false; + + for(uint32_t i = 0; i < lhs.queueFamilyIndexCount; ++i) { + if(lhs.pQueueFamilyIndices[i] != rhs.pQueueFamilyIndices[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.imageType == rhs.imageType) && + (lhs.format == rhs.format) && + (lhs.extent == rhs.extent) && + (lhs.mipLevels == rhs.mipLevels) && + (lhs.arrayLayers == rhs.arrayLayers) && + (lhs.samples == rhs.samples) && + (lhs.tiling == rhs.tiling) && + (lhs.usage == rhs.usage) && + (lhs.sharingMode == rhs.sharingMode) && + (lhs.initialLayout == rhs.initialLayout); +} + +bool operator!=(VkImageCreateInfo const &lhs, + VkImageCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSubresourceLayout const &lhs, + VkSubresourceLayout const &rhs) noexcept { + return (lhs.offset == rhs.offset) && + (lhs.size == rhs.size) && + (lhs.rowPitch == rhs.rowPitch) && + (lhs.arrayPitch == rhs.arrayPitch) && + (lhs.depthPitch == rhs.depthPitch); +} + +bool operator!=(VkSubresourceLayout const &lhs, + VkSubresourceLayout const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageViewCreateInfo const &lhs, + VkImageViewCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.image == rhs.image) && + (lhs.viewType == rhs.viewType) && + (lhs.format == rhs.format) && + (lhs.components == rhs.components) && + (lhs.subresourceRange == rhs.subresourceRange); +} + +bool operator!=(VkImageViewCreateInfo const &lhs, + VkImageViewCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBufferCopy const &lhs, + VkBufferCopy const &rhs) noexcept { + return (lhs.srcOffset == rhs.srcOffset) && + (lhs.dstOffset == rhs.dstOffset) && + (lhs.size == rhs.size); +} + +bool operator!=(VkBufferCopy const &lhs, + VkBufferCopy const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSparseMemoryBind const &lhs, + VkSparseMemoryBind const &rhs) noexcept { + return (lhs.resourceOffset == rhs.resourceOffset) && + (lhs.size == rhs.size) && + (lhs.memory == rhs.memory) && + (lhs.memoryOffset == rhs.memoryOffset) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkSparseMemoryBind const &lhs, + VkSparseMemoryBind const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSparseImageMemoryBind const &lhs, + VkSparseImageMemoryBind const &rhs) noexcept { + return (lhs.subresource == rhs.subresource) && + (lhs.offset == rhs.offset) && + (lhs.extent == rhs.extent) && + (lhs.memory == rhs.memory) && + (lhs.memoryOffset == rhs.memoryOffset) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkSparseImageMemoryBind const &lhs, + VkSparseImageMemoryBind const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSparseBufferMemoryBindInfo const &lhs, + VkSparseBufferMemoryBindInfo const &rhs) noexcept { + if(lhs.bindCount != rhs.bindCount) + return false; + + for(uint32_t i = 0; i < lhs.bindCount; ++i) { + if(lhs.pBinds[i] != rhs.pBinds[i]) + return false; + } + + return (lhs.buffer == rhs.buffer); +} + +bool operator!=(VkSparseBufferMemoryBindInfo const &lhs, + VkSparseBufferMemoryBindInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSparseImageOpaqueMemoryBindInfo const &lhs, + VkSparseImageOpaqueMemoryBindInfo const &rhs) noexcept { + if(lhs.bindCount != rhs.bindCount) + return false; + + for(uint32_t i = 0; i < lhs.bindCount; ++i) { + if(lhs.pBinds[i] != rhs.pBinds[i]) + return false; + } + + return (lhs.image == rhs.image); +} + +bool operator!=(VkSparseImageOpaqueMemoryBindInfo const &lhs, + VkSparseImageOpaqueMemoryBindInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSparseImageMemoryBindInfo const &lhs, + VkSparseImageMemoryBindInfo const &rhs) noexcept { + if(lhs.bindCount != rhs.bindCount) + return false; + + for(uint32_t i = 0; i < lhs.bindCount; ++i) { + if(lhs.pBinds[i] != rhs.pBinds[i]) + return false; + } + + return (lhs.image == rhs.image); +} + +bool operator!=(VkSparseImageMemoryBindInfo const &lhs, + VkSparseImageMemoryBindInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBindSparseInfo const &lhs, + VkBindSparseInfo const &rhs) noexcept { + if(lhs.waitSemaphoreCount != rhs.waitSemaphoreCount) + return false; + + if(lhs.bufferBindCount != rhs.bufferBindCount) + return false; + + if(lhs.imageOpaqueBindCount != rhs.imageOpaqueBindCount) + return false; + + if(lhs.imageBindCount != rhs.imageBindCount) + return false; + + if(lhs.signalSemaphoreCount != rhs.signalSemaphoreCount) + return false; + + for(uint32_t i = 0; i < lhs.waitSemaphoreCount; ++i) { + if(lhs.pWaitSemaphores[i] != rhs.pWaitSemaphores[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.bufferBindCount; ++i) { + if(lhs.pBufferBinds[i] != rhs.pBufferBinds[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.imageOpaqueBindCount; ++i) { + if(lhs.pImageOpaqueBinds[i] != rhs.pImageOpaqueBinds[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.imageBindCount; ++i) { + if(lhs.pImageBinds[i] != rhs.pImageBinds[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.signalSemaphoreCount; ++i) { + if(lhs.pSignalSemaphores[i] != rhs.pSignalSemaphores[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkBindSparseInfo const &lhs, + VkBindSparseInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageCopy const &lhs, + VkImageCopy const &rhs) noexcept { + return (lhs.srcSubresource == rhs.srcSubresource) && + (lhs.srcOffset == rhs.srcOffset) && + (lhs.dstSubresource == rhs.dstSubresource) && + (lhs.dstOffset == rhs.dstOffset) && + (lhs.extent == rhs.extent); +} + +bool operator!=(VkImageCopy const &lhs, + VkImageCopy const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageBlit const &lhs, + VkImageBlit const &rhs) noexcept { + for(uint32_t i = 0; i < 2; ++i) { + if(lhs.srcOffsets[i] != rhs.srcOffsets[i]) + return false; + } + + for(uint32_t i = 0; i < 2; ++i) { + if(lhs.dstOffsets[i] != rhs.dstOffsets[i]) + return false; + } + + return (lhs.srcSubresource == rhs.srcSubresource) && + (lhs.dstSubresource == rhs.dstSubresource); +} + +bool operator!=(VkImageBlit const &lhs, + VkImageBlit const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBufferImageCopy const &lhs, + VkBufferImageCopy const &rhs) noexcept { + return (lhs.bufferOffset == rhs.bufferOffset) && + (lhs.bufferRowLength == rhs.bufferRowLength) && + (lhs.bufferImageHeight == rhs.bufferImageHeight) && + (lhs.imageSubresource == rhs.imageSubresource) && + (lhs.imageOffset == rhs.imageOffset) && + (lhs.imageExtent == rhs.imageExtent); +} + +bool operator!=(VkBufferImageCopy const &lhs, + VkBufferImageCopy const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageResolve const &lhs, + VkImageResolve const &rhs) noexcept { + return (lhs.srcSubresource == rhs.srcSubresource) && + (lhs.srcOffset == rhs.srcOffset) && + (lhs.dstSubresource == rhs.dstSubresource) && + (lhs.dstOffset == rhs.dstOffset) && + (lhs.extent == rhs.extent); +} + +bool operator!=(VkImageResolve const &lhs, + VkImageResolve const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkShaderModuleCreateInfo const &lhs, + VkShaderModuleCreateInfo const &rhs) noexcept { + if(lhs.codeSize != rhs.codeSize) + return false; + + for(uint32_t i = 0; i < lhs.codeSize / 4; ++i) { + if(lhs.pCode[i] != rhs.pCode[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkShaderModuleCreateInfo const &lhs, + VkShaderModuleCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDescriptorSetLayoutBinding const &lhs, + VkDescriptorSetLayoutBinding const &rhs) noexcept { + if(lhs.descriptorCount != rhs.descriptorCount) + return false; + + if (lhs.pImmutableSamplers != rhs.pImmutableSamplers) { + if(lhs.pImmutableSamplers == nullptr || rhs.pImmutableSamplers == nullptr) + return false; + for(uint32_t i = 0; i < lhs.descriptorCount; ++i) { + if(lhs.pImmutableSamplers[i] != rhs.pImmutableSamplers[i]) + return false; + } + } + + return (lhs.binding == rhs.binding) && + (lhs.descriptorType == rhs.descriptorType) && + (lhs.stageFlags == rhs.stageFlags); +} + +bool operator!=(VkDescriptorSetLayoutBinding const &lhs, + VkDescriptorSetLayoutBinding const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDescriptorSetLayoutCreateInfo const &lhs, + VkDescriptorSetLayoutCreateInfo const &rhs) noexcept { + if(lhs.bindingCount != rhs.bindingCount) + return false; + + for(uint32_t i = 0; i < lhs.bindingCount; ++i) { + if(lhs.pBindings[i] != rhs.pBindings[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkDescriptorSetLayoutCreateInfo const &lhs, + VkDescriptorSetLayoutCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDescriptorPoolSize const &lhs, + VkDescriptorPoolSize const &rhs) noexcept { + return (lhs.type == rhs.type) && + (lhs.descriptorCount == rhs.descriptorCount); +} + +bool operator!=(VkDescriptorPoolSize const &lhs, + VkDescriptorPoolSize const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDescriptorPoolCreateInfo const &lhs, + VkDescriptorPoolCreateInfo const &rhs) noexcept { + if(lhs.poolSizeCount != rhs.poolSizeCount) + return false; + + for(uint32_t i = 0; i < lhs.poolSizeCount; ++i) { + if(lhs.pPoolSizes[i] != rhs.pPoolSizes[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.maxSets == rhs.maxSets); +} + +bool operator!=(VkDescriptorPoolCreateInfo const &lhs, + VkDescriptorPoolCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDescriptorSetAllocateInfo const &lhs, + VkDescriptorSetAllocateInfo const &rhs) noexcept { + if(lhs.descriptorSetCount != rhs.descriptorSetCount) + return false; + + for(uint32_t i = 0; i < lhs.descriptorSetCount; ++i) { + if(lhs.pSetLayouts[i] != rhs.pSetLayouts[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.descriptorPool == rhs.descriptorPool); +} + +bool operator!=(VkDescriptorSetAllocateInfo const &lhs, + VkDescriptorSetAllocateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSpecializationMapEntry const &lhs, + VkSpecializationMapEntry const &rhs) noexcept { + return (lhs.constantID == rhs.constantID) && + (lhs.offset == rhs.offset) && + (lhs.size == rhs.size); +} + +bool operator!=(VkSpecializationMapEntry const &lhs, + VkSpecializationMapEntry const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSpecializationInfo const &lhs, + VkSpecializationInfo const &rhs) noexcept { + if(lhs.mapEntryCount != rhs.mapEntryCount) + return false; + + if(lhs.dataSize != rhs.dataSize) + return false; + + for(uint32_t i = 0; i < lhs.mapEntryCount; ++i) { + if(lhs.pMapEntries[i] != rhs.pMapEntries[i]) + return false; + } + + if(memcmp(lhs.pData, rhs.pData, lhs.dataSize) != 0) + return false; + + return true; +} + +bool operator!=(VkSpecializationInfo const &lhs, + VkSpecializationInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineShaderStageCreateInfo const &lhs, + VkPipelineShaderStageCreateInfo const &rhs) noexcept { + if (lhs.pName != rhs.pName) { + if(lhs.pName == nullptr || rhs.pName == nullptr) + return false; + if(strcmp(lhs.pName, rhs.pName) != 0) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.stage == rhs.stage) && + (lhs.module == rhs.module) && + (lhs.pSpecializationInfo == rhs.pSpecializationInfo); +} + +bool operator!=(VkPipelineShaderStageCreateInfo const &lhs, + VkPipelineShaderStageCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkComputePipelineCreateInfo const &lhs, + VkComputePipelineCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.stage == rhs.stage) && + (lhs.layout == rhs.layout) && + (lhs.basePipelineHandle == rhs.basePipelineHandle) && + (lhs.basePipelineIndex == rhs.basePipelineIndex); +} + +bool operator!=(VkComputePipelineCreateInfo const &lhs, + VkComputePipelineCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkVertexInputBindingDescription const &lhs, + VkVertexInputBindingDescription const &rhs) noexcept { + return (lhs.binding == rhs.binding) && + (lhs.stride == rhs.stride) && + (lhs.inputRate == rhs.inputRate); +} + +bool operator!=(VkVertexInputBindingDescription const &lhs, + VkVertexInputBindingDescription const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkVertexInputAttributeDescription const &lhs, + VkVertexInputAttributeDescription const &rhs) noexcept { + return (lhs.location == rhs.location) && + (lhs.binding == rhs.binding) && + (lhs.format == rhs.format) && + (lhs.offset == rhs.offset); +} + +bool operator!=(VkVertexInputAttributeDescription const &lhs, + VkVertexInputAttributeDescription const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineVertexInputStateCreateInfo const &lhs, + VkPipelineVertexInputStateCreateInfo const &rhs) noexcept { + if(lhs.vertexBindingDescriptionCount != rhs.vertexBindingDescriptionCount) + return false; + + if(lhs.vertexAttributeDescriptionCount != rhs.vertexAttributeDescriptionCount) + return false; + + for(uint32_t i = 0; i < lhs.vertexBindingDescriptionCount; ++i) { + if(lhs.pVertexBindingDescriptions[i] != rhs.pVertexBindingDescriptions[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.vertexAttributeDescriptionCount; ++i) { + if(lhs.pVertexAttributeDescriptions[i] != rhs.pVertexAttributeDescriptions[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkPipelineVertexInputStateCreateInfo const &lhs, + VkPipelineVertexInputStateCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineInputAssemblyStateCreateInfo const &lhs, + VkPipelineInputAssemblyStateCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.topology == rhs.topology) && + (lhs.primitiveRestartEnable == rhs.primitiveRestartEnable); +} + +bool operator!=(VkPipelineInputAssemblyStateCreateInfo const &lhs, + VkPipelineInputAssemblyStateCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineTessellationStateCreateInfo const &lhs, + VkPipelineTessellationStateCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.patchControlPoints == rhs.patchControlPoints); +} + +bool operator!=(VkPipelineTessellationStateCreateInfo const &lhs, + VkPipelineTessellationStateCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineViewportStateCreateInfo const &lhs, + VkPipelineViewportStateCreateInfo const &rhs) noexcept { + if(lhs.viewportCount != rhs.viewportCount) + return false; + + if(lhs.scissorCount != rhs.scissorCount) + return false; + + for(uint32_t i = 0; i < lhs.viewportCount; ++i) { + if(lhs.pViewports[i] != rhs.pViewports[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.scissorCount; ++i) { + if(lhs.pScissors[i] != rhs.pScissors[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkPipelineViewportStateCreateInfo const &lhs, + VkPipelineViewportStateCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineRasterizationStateCreateInfo const &lhs, + VkPipelineRasterizationStateCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.depthClampEnable == rhs.depthClampEnable) && + (lhs.rasterizerDiscardEnable == rhs.rasterizerDiscardEnable) && + (lhs.polygonMode == rhs.polygonMode) && + (lhs.cullMode == rhs.cullMode) && + (lhs.frontFace == rhs.frontFace) && + (lhs.depthBiasEnable == rhs.depthBiasEnable) && + (lhs.depthBiasConstantFactor == rhs.depthBiasConstantFactor) && + (lhs.depthBiasClamp == rhs.depthBiasClamp) && + (lhs.depthBiasSlopeFactor == rhs.depthBiasSlopeFactor) && + (lhs.lineWidth == rhs.lineWidth); +} + +bool operator!=(VkPipelineRasterizationStateCreateInfo const &lhs, + VkPipelineRasterizationStateCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineMultisampleStateCreateInfo const &lhs, + VkPipelineMultisampleStateCreateInfo const &rhs) noexcept { + if(lhs.rasterizationSamples != rhs.rasterizationSamples) + return false; + + for(uint32_t i = 0; i < (lhs.rasterizationSamples + 31) / 32; ++i) { + if(lhs.pSampleMask[i] != rhs.pSampleMask[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.sampleShadingEnable == rhs.sampleShadingEnable) && + (lhs.minSampleShading == rhs.minSampleShading) && + (lhs.alphaToCoverageEnable == rhs.alphaToCoverageEnable) && + (lhs.alphaToOneEnable == rhs.alphaToOneEnable); +} + +bool operator!=(VkPipelineMultisampleStateCreateInfo const &lhs, + VkPipelineMultisampleStateCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineColorBlendAttachmentState const &lhs, + VkPipelineColorBlendAttachmentState const &rhs) noexcept { + return (lhs.blendEnable == rhs.blendEnable) && + (lhs.srcColorBlendFactor == rhs.srcColorBlendFactor) && + (lhs.dstColorBlendFactor == rhs.dstColorBlendFactor) && + (lhs.colorBlendOp == rhs.colorBlendOp) && + (lhs.srcAlphaBlendFactor == rhs.srcAlphaBlendFactor) && + (lhs.dstAlphaBlendFactor == rhs.dstAlphaBlendFactor) && + (lhs.alphaBlendOp == rhs.alphaBlendOp) && + (lhs.colorWriteMask == rhs.colorWriteMask); +} + +bool operator!=(VkPipelineColorBlendAttachmentState const &lhs, + VkPipelineColorBlendAttachmentState const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineColorBlendStateCreateInfo const &lhs, + VkPipelineColorBlendStateCreateInfo const &rhs) noexcept { + if(lhs.attachmentCount != rhs.attachmentCount) + return false; + + for(uint32_t i = 0; i < lhs.attachmentCount; ++i) { + if(lhs.pAttachments[i] != rhs.pAttachments[i]) + return false; + } + + for(uint32_t i = 0; i < 4; ++i) { + if(lhs.blendConstants[i] != rhs.blendConstants[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.logicOpEnable == rhs.logicOpEnable) && + (lhs.logicOp == rhs.logicOp); +} + +bool operator!=(VkPipelineColorBlendStateCreateInfo const &lhs, + VkPipelineColorBlendStateCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineDynamicStateCreateInfo const &lhs, + VkPipelineDynamicStateCreateInfo const &rhs) noexcept { + if(lhs.dynamicStateCount != rhs.dynamicStateCount) + return false; + + for(uint32_t i = 0; i < lhs.dynamicStateCount; ++i) { + if(lhs.pDynamicStates[i] != rhs.pDynamicStates[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkPipelineDynamicStateCreateInfo const &lhs, + VkPipelineDynamicStateCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkStencilOpState const &lhs, + VkStencilOpState const &rhs) noexcept { + return (lhs.failOp == rhs.failOp) && + (lhs.passOp == rhs.passOp) && + (lhs.depthFailOp == rhs.depthFailOp) && + (lhs.compareOp == rhs.compareOp) && + (lhs.compareMask == rhs.compareMask) && + (lhs.writeMask == rhs.writeMask) && + (lhs.reference == rhs.reference); +} + +bool operator!=(VkStencilOpState const &lhs, + VkStencilOpState const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineDepthStencilStateCreateInfo const &lhs, + VkPipelineDepthStencilStateCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.depthTestEnable == rhs.depthTestEnable) && + (lhs.depthWriteEnable == rhs.depthWriteEnable) && + (lhs.depthCompareOp == rhs.depthCompareOp) && + (lhs.depthBoundsTestEnable == rhs.depthBoundsTestEnable) && + (lhs.stencilTestEnable == rhs.stencilTestEnable) && + (lhs.front == rhs.front) && + (lhs.back == rhs.back) && + (lhs.minDepthBounds == rhs.minDepthBounds) && + (lhs.maxDepthBounds == rhs.maxDepthBounds); +} + +bool operator!=(VkPipelineDepthStencilStateCreateInfo const &lhs, + VkPipelineDepthStencilStateCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkGraphicsPipelineCreateInfo const &lhs, + VkGraphicsPipelineCreateInfo const &rhs) noexcept { + if(lhs.stageCount != rhs.stageCount) + return false; + + for(uint32_t i = 0; i < lhs.stageCount; ++i) { + if(lhs.pStages[i] != rhs.pStages[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.pVertexInputState == rhs.pVertexInputState) && + (lhs.pInputAssemblyState == rhs.pInputAssemblyState) && + (lhs.pTessellationState == rhs.pTessellationState) && + (lhs.pViewportState == rhs.pViewportState) && + (lhs.pRasterizationState == rhs.pRasterizationState) && + (lhs.pMultisampleState == rhs.pMultisampleState) && + (lhs.pDepthStencilState == rhs.pDepthStencilState) && + (lhs.pColorBlendState == rhs.pColorBlendState) && + (lhs.pDynamicState == rhs.pDynamicState) && + (lhs.layout == rhs.layout) && + (lhs.renderPass == rhs.renderPass) && + (lhs.subpass == rhs.subpass) && + (lhs.basePipelineHandle == rhs.basePipelineHandle) && + (lhs.basePipelineIndex == rhs.basePipelineIndex); +} + +bool operator!=(VkGraphicsPipelineCreateInfo const &lhs, + VkGraphicsPipelineCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineCacheCreateInfo const &lhs, + VkPipelineCacheCreateInfo const &rhs) noexcept { + if(lhs.initialDataSize != rhs.initialDataSize) + return false; + + if(memcmp(lhs.pInitialData, rhs.pInitialData, lhs.initialDataSize) != 0) + return false; + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkPipelineCacheCreateInfo const &lhs, + VkPipelineCacheCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineCacheHeaderVersionOne const &lhs, + VkPipelineCacheHeaderVersionOne const &rhs) noexcept { + for(uint32_t i = 0; i < VK_UUID_SIZE; ++i) { + if(lhs.pipelineCacheUUID[i] != rhs.pipelineCacheUUID[i]) + return false; + } + + return (lhs.headerSize == rhs.headerSize) && + (lhs.headerVersion == rhs.headerVersion) && + (lhs.vendorID == rhs.vendorID) && + (lhs.deviceID == rhs.deviceID); +} + +bool operator!=(VkPipelineCacheHeaderVersionOne const &lhs, + VkPipelineCacheHeaderVersionOne const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPushConstantRange const &lhs, + VkPushConstantRange const &rhs) noexcept { + return (lhs.stageFlags == rhs.stageFlags) && + (lhs.offset == rhs.offset) && + (lhs.size == rhs.size); +} + +bool operator!=(VkPushConstantRange const &lhs, + VkPushConstantRange const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineLayoutCreateInfo const &lhs, + VkPipelineLayoutCreateInfo const &rhs) noexcept { + if(lhs.setLayoutCount != rhs.setLayoutCount) + return false; + + if(lhs.pushConstantRangeCount != rhs.pushConstantRangeCount) + return false; + + for(uint32_t i = 0; i < lhs.setLayoutCount; ++i) { + if(lhs.pSetLayouts[i] != rhs.pSetLayouts[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.pushConstantRangeCount; ++i) { + if(lhs.pPushConstantRanges[i] != rhs.pPushConstantRanges[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkPipelineLayoutCreateInfo const &lhs, + VkPipelineLayoutCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSamplerCreateInfo const &lhs, + VkSamplerCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.magFilter == rhs.magFilter) && + (lhs.minFilter == rhs.minFilter) && + (lhs.mipmapMode == rhs.mipmapMode) && + (lhs.addressModeU == rhs.addressModeU) && + (lhs.addressModeV == rhs.addressModeV) && + (lhs.addressModeW == rhs.addressModeW) && + (lhs.mipLodBias == rhs.mipLodBias) && + (lhs.anisotropyEnable == rhs.anisotropyEnable) && + (lhs.maxAnisotropy == rhs.maxAnisotropy) && + (lhs.compareEnable == rhs.compareEnable) && + (lhs.compareOp == rhs.compareOp) && + (lhs.minLod == rhs.minLod) && + (lhs.maxLod == rhs.maxLod) && + (lhs.borderColor == rhs.borderColor) && + (lhs.unnormalizedCoordinates == rhs.unnormalizedCoordinates); +} + +bool operator!=(VkSamplerCreateInfo const &lhs, + VkSamplerCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCommandPoolCreateInfo const &lhs, + VkCommandPoolCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.queueFamilyIndex == rhs.queueFamilyIndex); +} + +bool operator!=(VkCommandPoolCreateInfo const &lhs, + VkCommandPoolCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCommandBufferAllocateInfo const &lhs, + VkCommandBufferAllocateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.commandPool == rhs.commandPool) && + (lhs.level == rhs.level) && + (lhs.commandBufferCount == rhs.commandBufferCount); +} + +bool operator!=(VkCommandBufferAllocateInfo const &lhs, + VkCommandBufferAllocateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCommandBufferInheritanceInfo const &lhs, + VkCommandBufferInheritanceInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.renderPass == rhs.renderPass) && + (lhs.subpass == rhs.subpass) && + (lhs.framebuffer == rhs.framebuffer) && + (lhs.occlusionQueryEnable == rhs.occlusionQueryEnable) && + (lhs.queryFlags == rhs.queryFlags) && + (lhs.pipelineStatistics == rhs.pipelineStatistics); +} + +bool operator!=(VkCommandBufferInheritanceInfo const &lhs, + VkCommandBufferInheritanceInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCommandBufferBeginInfo const &lhs, + VkCommandBufferBeginInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.pInheritanceInfo == rhs.pInheritanceInfo); +} + +bool operator!=(VkCommandBufferBeginInfo const &lhs, + VkCommandBufferBeginInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkClearDepthStencilValue const &lhs, + VkClearDepthStencilValue const &rhs) noexcept { + return (lhs.depth == rhs.depth) && + (lhs.stencil == rhs.stencil); +} + +bool operator!=(VkClearDepthStencilValue const &lhs, + VkClearDepthStencilValue const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAttachmentDescription const &lhs, + VkAttachmentDescription const &rhs) noexcept { + return (lhs.flags == rhs.flags) && + (lhs.format == rhs.format) && + (lhs.samples == rhs.samples) && + (lhs.loadOp == rhs.loadOp) && + (lhs.storeOp == rhs.storeOp) && + (lhs.stencilLoadOp == rhs.stencilLoadOp) && + (lhs.stencilStoreOp == rhs.stencilStoreOp) && + (lhs.initialLayout == rhs.initialLayout) && + (lhs.finalLayout == rhs.finalLayout); +} + +bool operator!=(VkAttachmentDescription const &lhs, + VkAttachmentDescription const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAttachmentReference const &lhs, + VkAttachmentReference const &rhs) noexcept { + return (lhs.attachment == rhs.attachment) && + (lhs.layout == rhs.layout); +} + +bool operator!=(VkAttachmentReference const &lhs, + VkAttachmentReference const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSubpassDescription const &lhs, + VkSubpassDescription const &rhs) noexcept { + if(lhs.inputAttachmentCount != rhs.inputAttachmentCount) + return false; + + if(lhs.colorAttachmentCount != rhs.colorAttachmentCount) + return false; + + if(lhs.colorAttachmentCount != rhs.colorAttachmentCount) + return false; + + if(lhs.preserveAttachmentCount != rhs.preserveAttachmentCount) + return false; + + for(uint32_t i = 0; i < lhs.inputAttachmentCount; ++i) { + if(lhs.pInputAttachments[i] != rhs.pInputAttachments[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.colorAttachmentCount; ++i) { + if(lhs.pColorAttachments[i] != rhs.pColorAttachments[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.colorAttachmentCount; ++i) { + if(lhs.pResolveAttachments[i] != rhs.pResolveAttachments[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.preserveAttachmentCount; ++i) { + if(lhs.pPreserveAttachments[i] != rhs.pPreserveAttachments[i]) + return false; + } + + return (lhs.flags == rhs.flags) && + (lhs.pipelineBindPoint == rhs.pipelineBindPoint) && + (lhs.pDepthStencilAttachment == rhs.pDepthStencilAttachment); +} + +bool operator!=(VkSubpassDescription const &lhs, + VkSubpassDescription const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSubpassDependency const &lhs, + VkSubpassDependency const &rhs) noexcept { + return (lhs.srcSubpass == rhs.srcSubpass) && + (lhs.dstSubpass == rhs.dstSubpass) && + (lhs.srcStageMask == rhs.srcStageMask) && + (lhs.dstStageMask == rhs.dstStageMask) && + (lhs.srcAccessMask == rhs.srcAccessMask) && + (lhs.dstAccessMask == rhs.dstAccessMask) && + (lhs.dependencyFlags == rhs.dependencyFlags); +} + +bool operator!=(VkSubpassDependency const &lhs, + VkSubpassDependency const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkRenderPassCreateInfo const &lhs, + VkRenderPassCreateInfo const &rhs) noexcept { + if(lhs.attachmentCount != rhs.attachmentCount) + return false; + + if(lhs.subpassCount != rhs.subpassCount) + return false; + + if(lhs.dependencyCount != rhs.dependencyCount) + return false; + + for(uint32_t i = 0; i < lhs.attachmentCount; ++i) { + if(lhs.pAttachments[i] != rhs.pAttachments[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.subpassCount; ++i) { + if(lhs.pSubpasses[i] != rhs.pSubpasses[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.dependencyCount; ++i) { + if(lhs.pDependencies[i] != rhs.pDependencies[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkRenderPassCreateInfo const &lhs, + VkRenderPassCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkEventCreateInfo const &lhs, + VkEventCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkEventCreateInfo const &lhs, + VkEventCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkFenceCreateInfo const &lhs, + VkFenceCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkFenceCreateInfo const &lhs, + VkFenceCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceFeatures const &lhs, + VkPhysicalDeviceFeatures const &rhs) noexcept { + return (lhs.robustBufferAccess == rhs.robustBufferAccess) && + (lhs.fullDrawIndexUint32 == rhs.fullDrawIndexUint32) && + (lhs.imageCubeArray == rhs.imageCubeArray) && + (lhs.independentBlend == rhs.independentBlend) && + (lhs.geometryShader == rhs.geometryShader) && + (lhs.tessellationShader == rhs.tessellationShader) && + (lhs.sampleRateShading == rhs.sampleRateShading) && + (lhs.dualSrcBlend == rhs.dualSrcBlend) && + (lhs.logicOp == rhs.logicOp) && + (lhs.multiDrawIndirect == rhs.multiDrawIndirect) && + (lhs.drawIndirectFirstInstance == rhs.drawIndirectFirstInstance) && + (lhs.depthClamp == rhs.depthClamp) && + (lhs.depthBiasClamp == rhs.depthBiasClamp) && + (lhs.fillModeNonSolid == rhs.fillModeNonSolid) && + (lhs.depthBounds == rhs.depthBounds) && + (lhs.wideLines == rhs.wideLines) && + (lhs.largePoints == rhs.largePoints) && + (lhs.alphaToOne == rhs.alphaToOne) && + (lhs.multiViewport == rhs.multiViewport) && + (lhs.samplerAnisotropy == rhs.samplerAnisotropy) && + (lhs.textureCompressionETC2 == rhs.textureCompressionETC2) && + (lhs.textureCompressionASTC_LDR == rhs.textureCompressionASTC_LDR) && + (lhs.textureCompressionBC == rhs.textureCompressionBC) && + (lhs.occlusionQueryPrecise == rhs.occlusionQueryPrecise) && + (lhs.pipelineStatisticsQuery == rhs.pipelineStatisticsQuery) && + (lhs.vertexPipelineStoresAndAtomics == rhs.vertexPipelineStoresAndAtomics) && + (lhs.fragmentStoresAndAtomics == rhs.fragmentStoresAndAtomics) && + (lhs.shaderTessellationAndGeometryPointSize == rhs.shaderTessellationAndGeometryPointSize) && + (lhs.shaderImageGatherExtended == rhs.shaderImageGatherExtended) && + (lhs.shaderStorageImageExtendedFormats == rhs.shaderStorageImageExtendedFormats) && + (lhs.shaderStorageImageMultisample == rhs.shaderStorageImageMultisample) && + (lhs.shaderStorageImageReadWithoutFormat == rhs.shaderStorageImageReadWithoutFormat) && + (lhs.shaderStorageImageWriteWithoutFormat == rhs.shaderStorageImageWriteWithoutFormat) && + (lhs.shaderUniformBufferArrayDynamicIndexing == rhs.shaderUniformBufferArrayDynamicIndexing) && + (lhs.shaderSampledImageArrayDynamicIndexing == rhs.shaderSampledImageArrayDynamicIndexing) && + (lhs.shaderStorageBufferArrayDynamicIndexing == rhs.shaderStorageBufferArrayDynamicIndexing) && + (lhs.shaderStorageImageArrayDynamicIndexing == rhs.shaderStorageImageArrayDynamicIndexing) && + (lhs.shaderClipDistance == rhs.shaderClipDistance) && + (lhs.shaderCullDistance == rhs.shaderCullDistance) && + (lhs.shaderFloat64 == rhs.shaderFloat64) && + (lhs.shaderInt64 == rhs.shaderInt64) && + (lhs.shaderInt16 == rhs.shaderInt16) && + (lhs.shaderResourceResidency == rhs.shaderResourceResidency) && + (lhs.shaderResourceMinLod == rhs.shaderResourceMinLod) && + (lhs.sparseBinding == rhs.sparseBinding) && + (lhs.sparseResidencyBuffer == rhs.sparseResidencyBuffer) && + (lhs.sparseResidencyImage2D == rhs.sparseResidencyImage2D) && + (lhs.sparseResidencyImage3D == rhs.sparseResidencyImage3D) && + (lhs.sparseResidency2Samples == rhs.sparseResidency2Samples) && + (lhs.sparseResidency4Samples == rhs.sparseResidency4Samples) && + (lhs.sparseResidency8Samples == rhs.sparseResidency8Samples) && + (lhs.sparseResidency16Samples == rhs.sparseResidency16Samples) && + (lhs.sparseResidencyAliased == rhs.sparseResidencyAliased) && + (lhs.variableMultisampleRate == rhs.variableMultisampleRate) && + (lhs.inheritedQueries == rhs.inheritedQueries); +} + +bool operator!=(VkPhysicalDeviceFeatures const &lhs, + VkPhysicalDeviceFeatures const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceSparseProperties const &lhs, + VkPhysicalDeviceSparseProperties const &rhs) noexcept { + return (lhs.residencyStandard2DBlockShape == rhs.residencyStandard2DBlockShape) && + (lhs.residencyStandard2DMultisampleBlockShape == rhs.residencyStandard2DMultisampleBlockShape) && + (lhs.residencyStandard3DBlockShape == rhs.residencyStandard3DBlockShape) && + (lhs.residencyAlignedMipSize == rhs.residencyAlignedMipSize) && + (lhs.residencyNonResidentStrict == rhs.residencyNonResidentStrict); +} + +bool operator!=(VkPhysicalDeviceSparseProperties const &lhs, + VkPhysicalDeviceSparseProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceLimits const &lhs, + VkPhysicalDeviceLimits const &rhs) noexcept { + for(uint32_t i = 0; i < 3; ++i) { + if(lhs.maxComputeWorkGroupCount[i] != rhs.maxComputeWorkGroupCount[i]) + return false; + } + + for(uint32_t i = 0; i < 3; ++i) { + if(lhs.maxComputeWorkGroupSize[i] != rhs.maxComputeWorkGroupSize[i]) + return false; + } + + for(uint32_t i = 0; i < 2; ++i) { + if(lhs.maxViewportDimensions[i] != rhs.maxViewportDimensions[i]) + return false; + } + + for(uint32_t i = 0; i < 2; ++i) { + if(lhs.viewportBoundsRange[i] != rhs.viewportBoundsRange[i]) + return false; + } + + for(uint32_t i = 0; i < 2; ++i) { + if(lhs.pointSizeRange[i] != rhs.pointSizeRange[i]) + return false; + } + + for(uint32_t i = 0; i < 2; ++i) { + if(lhs.lineWidthRange[i] != rhs.lineWidthRange[i]) + return false; + } + + return (lhs.maxImageDimension1D == rhs.maxImageDimension1D) && + (lhs.maxImageDimension2D == rhs.maxImageDimension2D) && + (lhs.maxImageDimension3D == rhs.maxImageDimension3D) && + (lhs.maxImageDimensionCube == rhs.maxImageDimensionCube) && + (lhs.maxImageArrayLayers == rhs.maxImageArrayLayers) && + (lhs.maxTexelBufferElements == rhs.maxTexelBufferElements) && + (lhs.maxUniformBufferRange == rhs.maxUniformBufferRange) && + (lhs.maxStorageBufferRange == rhs.maxStorageBufferRange) && + (lhs.maxPushConstantsSize == rhs.maxPushConstantsSize) && + (lhs.maxMemoryAllocationCount == rhs.maxMemoryAllocationCount) && + (lhs.maxSamplerAllocationCount == rhs.maxSamplerAllocationCount) && + (lhs.bufferImageGranularity == rhs.bufferImageGranularity) && + (lhs.sparseAddressSpaceSize == rhs.sparseAddressSpaceSize) && + (lhs.maxBoundDescriptorSets == rhs.maxBoundDescriptorSets) && + (lhs.maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers) && + (lhs.maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers) && + (lhs.maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers) && + (lhs.maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages) && + (lhs.maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages) && + (lhs.maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments) && + (lhs.maxPerStageResources == rhs.maxPerStageResources) && + (lhs.maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers) && + (lhs.maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers) && + (lhs.maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic) && + (lhs.maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers) && + (lhs.maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic) && + (lhs.maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages) && + (lhs.maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages) && + (lhs.maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments) && + (lhs.maxVertexInputAttributes == rhs.maxVertexInputAttributes) && + (lhs.maxVertexInputBindings == rhs.maxVertexInputBindings) && + (lhs.maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset) && + (lhs.maxVertexInputBindingStride == rhs.maxVertexInputBindingStride) && + (lhs.maxVertexOutputComponents == rhs.maxVertexOutputComponents) && + (lhs.maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel) && + (lhs.maxTessellationPatchSize == rhs.maxTessellationPatchSize) && + (lhs.maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents) && + (lhs.maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents) && + (lhs.maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents) && + (lhs.maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents) && + (lhs.maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents) && + (lhs.maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents) && + (lhs.maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations) && + (lhs.maxGeometryInputComponents == rhs.maxGeometryInputComponents) && + (lhs.maxGeometryOutputComponents == rhs.maxGeometryOutputComponents) && + (lhs.maxGeometryOutputVertices == rhs.maxGeometryOutputVertices) && + (lhs.maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents) && + (lhs.maxFragmentInputComponents == rhs.maxFragmentInputComponents) && + (lhs.maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments) && + (lhs.maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments) && + (lhs.maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources) && + (lhs.maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize) && + (lhs.maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations) && + (lhs.subPixelPrecisionBits == rhs.subPixelPrecisionBits) && + (lhs.subTexelPrecisionBits == rhs.subTexelPrecisionBits) && + (lhs.mipmapPrecisionBits == rhs.mipmapPrecisionBits) && + (lhs.maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue) && + (lhs.maxDrawIndirectCount == rhs.maxDrawIndirectCount) && + (lhs.maxSamplerLodBias == rhs.maxSamplerLodBias) && + (lhs.maxSamplerAnisotropy == rhs.maxSamplerAnisotropy) && + (lhs.maxViewports == rhs.maxViewports) && + (lhs.viewportSubPixelBits == rhs.viewportSubPixelBits) && + (lhs.minMemoryMapAlignment == rhs.minMemoryMapAlignment) && + (lhs.minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment) && + (lhs.minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment) && + (lhs.minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment) && + (lhs.minTexelOffset == rhs.minTexelOffset) && + (lhs.maxTexelOffset == rhs.maxTexelOffset) && + (lhs.minTexelGatherOffset == rhs.minTexelGatherOffset) && + (lhs.maxTexelGatherOffset == rhs.maxTexelGatherOffset) && + (lhs.minInterpolationOffset == rhs.minInterpolationOffset) && + (lhs.maxInterpolationOffset == rhs.maxInterpolationOffset) && + (lhs.subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits) && + (lhs.maxFramebufferWidth == rhs.maxFramebufferWidth) && + (lhs.maxFramebufferHeight == rhs.maxFramebufferHeight) && + (lhs.maxFramebufferLayers == rhs.maxFramebufferLayers) && + (lhs.framebufferColorSampleCounts == rhs.framebufferColorSampleCounts) && + (lhs.framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts) && + (lhs.framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts) && + (lhs.framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts) && + (lhs.maxColorAttachments == rhs.maxColorAttachments) && + (lhs.sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts) && + (lhs.sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts) && + (lhs.sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts) && + (lhs.sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts) && + (lhs.storageImageSampleCounts == rhs.storageImageSampleCounts) && + (lhs.maxSampleMaskWords == rhs.maxSampleMaskWords) && + (lhs.timestampComputeAndGraphics == rhs.timestampComputeAndGraphics) && + (lhs.timestampPeriod == rhs.timestampPeriod) && + (lhs.maxClipDistances == rhs.maxClipDistances) && + (lhs.maxCullDistances == rhs.maxCullDistances) && + (lhs.maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances) && + (lhs.discreteQueuePriorities == rhs.discreteQueuePriorities) && + (lhs.pointSizeGranularity == rhs.pointSizeGranularity) && + (lhs.lineWidthGranularity == rhs.lineWidthGranularity) && + (lhs.strictLines == rhs.strictLines) && + (lhs.standardSampleLocations == rhs.standardSampleLocations) && + (lhs.optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment) && + (lhs.optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment) && + (lhs.nonCoherentAtomSize == rhs.nonCoherentAtomSize); +} + +bool operator!=(VkPhysicalDeviceLimits const &lhs, + VkPhysicalDeviceLimits const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSemaphoreCreateInfo const &lhs, + VkSemaphoreCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkSemaphoreCreateInfo const &lhs, + VkSemaphoreCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkQueryPoolCreateInfo const &lhs, + VkQueryPoolCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.queryType == rhs.queryType) && + (lhs.queryCount == rhs.queryCount) && + (lhs.pipelineStatistics == rhs.pipelineStatistics); +} + +bool operator!=(VkQueryPoolCreateInfo const &lhs, + VkQueryPoolCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkFramebufferCreateInfo const &lhs, + VkFramebufferCreateInfo const &rhs) noexcept { + if(lhs.attachmentCount != rhs.attachmentCount) + return false; + + for(uint32_t i = 0; i < lhs.attachmentCount; ++i) { + if(lhs.pAttachments[i] != rhs.pAttachments[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.renderPass == rhs.renderPass) && + (lhs.width == rhs.width) && + (lhs.height == rhs.height) && + (lhs.layers == rhs.layers); +} + +bool operator!=(VkFramebufferCreateInfo const &lhs, + VkFramebufferCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDrawIndirectCommand const &lhs, + VkDrawIndirectCommand const &rhs) noexcept { + return (lhs.vertexCount == rhs.vertexCount) && + (lhs.instanceCount == rhs.instanceCount) && + (lhs.firstVertex == rhs.firstVertex) && + (lhs.firstInstance == rhs.firstInstance); +} + +bool operator!=(VkDrawIndirectCommand const &lhs, + VkDrawIndirectCommand const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDrawIndexedIndirectCommand const &lhs, + VkDrawIndexedIndirectCommand const &rhs) noexcept { + return (lhs.indexCount == rhs.indexCount) && + (lhs.instanceCount == rhs.instanceCount) && + (lhs.firstIndex == rhs.firstIndex) && + (lhs.vertexOffset == rhs.vertexOffset) && + (lhs.firstInstance == rhs.firstInstance); +} + +bool operator!=(VkDrawIndexedIndirectCommand const &lhs, + VkDrawIndexedIndirectCommand const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDispatchIndirectCommand const &lhs, + VkDispatchIndirectCommand const &rhs) noexcept { + return (lhs.x == rhs.x) && + (lhs.y == rhs.y) && + (lhs.z == rhs.z); +} + +bool operator!=(VkDispatchIndirectCommand const &lhs, + VkDispatchIndirectCommand const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMultiDrawInfoEXT const &lhs, + VkMultiDrawInfoEXT const &rhs) noexcept { + return (lhs.firstVertex == rhs.firstVertex) && + (lhs.vertexCount == rhs.vertexCount); +} + +bool operator!=(VkMultiDrawInfoEXT const &lhs, + VkMultiDrawInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMultiDrawIndexedInfoEXT const &lhs, + VkMultiDrawIndexedInfoEXT const &rhs) noexcept { + return (lhs.firstIndex == rhs.firstIndex) && + (lhs.indexCount == rhs.indexCount) && + (lhs.vertexOffset == rhs.vertexOffset); +} + +bool operator!=(VkMultiDrawIndexedInfoEXT const &lhs, + VkMultiDrawIndexedInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSubmitInfo const &lhs, + VkSubmitInfo const &rhs) noexcept { + if(lhs.waitSemaphoreCount != rhs.waitSemaphoreCount) + return false; + + if(lhs.waitSemaphoreCount != rhs.waitSemaphoreCount) + return false; + + if(lhs.commandBufferCount != rhs.commandBufferCount) + return false; + + if(lhs.signalSemaphoreCount != rhs.signalSemaphoreCount) + return false; + + for(uint32_t i = 0; i < lhs.waitSemaphoreCount; ++i) { + if(lhs.pWaitSemaphores[i] != rhs.pWaitSemaphores[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.waitSemaphoreCount; ++i) { + if(lhs.pWaitDstStageMask[i] != rhs.pWaitDstStageMask[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.commandBufferCount; ++i) { + if(lhs.pCommandBuffers[i] != rhs.pCommandBuffers[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.signalSemaphoreCount; ++i) { + if(lhs.pSignalSemaphores[i] != rhs.pSignalSemaphores[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkSubmitInfo const &lhs, + VkSubmitInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDisplayPropertiesKHR const &lhs, + VkDisplayPropertiesKHR const &rhs) noexcept { + if (lhs.displayName != rhs.displayName) { + if(lhs.displayName == nullptr || rhs.displayName == nullptr) + return false; + if(strcmp(lhs.displayName, rhs.displayName) != 0) + return false; + } + + return (lhs.display == rhs.display) && + (lhs.physicalDimensions == rhs.physicalDimensions) && + (lhs.physicalResolution == rhs.physicalResolution) && + (lhs.supportedTransforms == rhs.supportedTransforms) && + (lhs.planeReorderPossible == rhs.planeReorderPossible) && + (lhs.persistentContent == rhs.persistentContent); +} + +bool operator!=(VkDisplayPropertiesKHR const &lhs, + VkDisplayPropertiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDisplayPlanePropertiesKHR const &lhs, + VkDisplayPlanePropertiesKHR const &rhs) noexcept { + return (lhs.currentDisplay == rhs.currentDisplay) && + (lhs.currentStackIndex == rhs.currentStackIndex); +} + +bool operator!=(VkDisplayPlanePropertiesKHR const &lhs, + VkDisplayPlanePropertiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDisplayModeParametersKHR const &lhs, + VkDisplayModeParametersKHR const &rhs) noexcept { + return (lhs.visibleRegion == rhs.visibleRegion) && + (lhs.refreshRate == rhs.refreshRate); +} + +bool operator!=(VkDisplayModeParametersKHR const &lhs, + VkDisplayModeParametersKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDisplayModePropertiesKHR const &lhs, + VkDisplayModePropertiesKHR const &rhs) noexcept { + return (lhs.displayMode == rhs.displayMode) && + (lhs.parameters == rhs.parameters); +} + +bool operator!=(VkDisplayModePropertiesKHR const &lhs, + VkDisplayModePropertiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDisplayModeCreateInfoKHR const &lhs, + VkDisplayModeCreateInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.parameters == rhs.parameters); +} + +bool operator!=(VkDisplayModeCreateInfoKHR const &lhs, + VkDisplayModeCreateInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDisplayPlaneCapabilitiesKHR const &lhs, + VkDisplayPlaneCapabilitiesKHR const &rhs) noexcept { + return (lhs.supportedAlpha == rhs.supportedAlpha) && + (lhs.minSrcPosition == rhs.minSrcPosition) && + (lhs.maxSrcPosition == rhs.maxSrcPosition) && + (lhs.minSrcExtent == rhs.minSrcExtent) && + (lhs.maxSrcExtent == rhs.maxSrcExtent) && + (lhs.minDstPosition == rhs.minDstPosition) && + (lhs.maxDstPosition == rhs.maxDstPosition) && + (lhs.minDstExtent == rhs.minDstExtent) && + (lhs.maxDstExtent == rhs.maxDstExtent); +} + +bool operator!=(VkDisplayPlaneCapabilitiesKHR const &lhs, + VkDisplayPlaneCapabilitiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDisplaySurfaceCreateInfoKHR const &lhs, + VkDisplaySurfaceCreateInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.displayMode == rhs.displayMode) && + (lhs.planeIndex == rhs.planeIndex) && + (lhs.planeStackIndex == rhs.planeStackIndex) && + (lhs.transform == rhs.transform) && + (lhs.globalAlpha == rhs.globalAlpha) && + (lhs.alphaMode == rhs.alphaMode) && + (lhs.imageExtent == rhs.imageExtent); +} + +bool operator!=(VkDisplaySurfaceCreateInfoKHR const &lhs, + VkDisplaySurfaceCreateInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDisplayPresentInfoKHR const &lhs, + VkDisplayPresentInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.srcRect == rhs.srcRect) && + (lhs.dstRect == rhs.dstRect) && + (lhs.persistent == rhs.persistent); +} + +bool operator!=(VkDisplayPresentInfoKHR const &lhs, + VkDisplayPresentInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSurfaceCapabilitiesKHR const &lhs, + VkSurfaceCapabilitiesKHR const &rhs) noexcept { + return (lhs.minImageCount == rhs.minImageCount) && + (lhs.maxImageCount == rhs.maxImageCount) && + (lhs.currentExtent == rhs.currentExtent) && + (lhs.minImageExtent == rhs.minImageExtent) && + (lhs.maxImageExtent == rhs.maxImageExtent) && + (lhs.maxImageArrayLayers == rhs.maxImageArrayLayers) && + (lhs.supportedTransforms == rhs.supportedTransforms) && + (lhs.currentTransform == rhs.currentTransform) && + (lhs.supportedCompositeAlpha == rhs.supportedCompositeAlpha) && + (lhs.supportedUsageFlags == rhs.supportedUsageFlags); +} + +bool operator!=(VkSurfaceCapabilitiesKHR const &lhs, + VkSurfaceCapabilitiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkAndroidSurfaceCreateInfoKHR const &lhs, + VkAndroidSurfaceCreateInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.window == rhs.window); +} + +bool operator!=(VkAndroidSurfaceCreateInfoKHR const &lhs, + VkAndroidSurfaceCreateInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_VI_NN +bool operator==(VkViSurfaceCreateInfoNN const &lhs, + VkViSurfaceCreateInfoNN const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.window == rhs.window); +} + +bool operator!=(VkViSurfaceCreateInfoNN const &lhs, + VkViSurfaceCreateInfoNN const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_VI_NN + +#ifdef VK_USE_PLATFORM_WAYLAND_KHR +bool operator==(VkWaylandSurfaceCreateInfoKHR const &lhs, + VkWaylandSurfaceCreateInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.display == rhs.display) && + (lhs.surface == rhs.surface); +} + +bool operator!=(VkWaylandSurfaceCreateInfoKHR const &lhs, + VkWaylandSurfaceCreateInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_WAYLAND_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkWin32SurfaceCreateInfoKHR const &lhs, + VkWin32SurfaceCreateInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.hinstance == rhs.hinstance) && + (lhs.hwnd == rhs.hwnd); +} + +bool operator!=(VkWin32SurfaceCreateInfoKHR const &lhs, + VkWin32SurfaceCreateInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_XLIB_KHR +bool operator==(VkXlibSurfaceCreateInfoKHR const &lhs, + VkXlibSurfaceCreateInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.dpy == rhs.dpy) && + (lhs.window == rhs.window); +} + +bool operator!=(VkXlibSurfaceCreateInfoKHR const &lhs, + VkXlibSurfaceCreateInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_XLIB_KHR + +#ifdef VK_USE_PLATFORM_XCB_KHR +bool operator==(VkXcbSurfaceCreateInfoKHR const &lhs, + VkXcbSurfaceCreateInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.connection == rhs.connection) && + (lhs.window == rhs.window); +} + +bool operator!=(VkXcbSurfaceCreateInfoKHR const &lhs, + VkXcbSurfaceCreateInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_XCB_KHR + +#ifdef VK_USE_PLATFORM_DIRECTFB_EXT +bool operator==(VkDirectFBSurfaceCreateInfoEXT const &lhs, + VkDirectFBSurfaceCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.dfb == rhs.dfb) && + (lhs.surface == rhs.surface); +} + +bool operator!=(VkDirectFBSurfaceCreateInfoEXT const &lhs, + VkDirectFBSurfaceCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_DIRECTFB_EXT + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkImagePipeSurfaceCreateInfoFUCHSIA const &lhs, + VkImagePipeSurfaceCreateInfoFUCHSIA const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.imagePipeHandle == rhs.imagePipeHandle); +} + +bool operator!=(VkImagePipeSurfaceCreateInfoFUCHSIA const &lhs, + VkImagePipeSurfaceCreateInfoFUCHSIA const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_GGP +bool operator==(VkStreamDescriptorSurfaceCreateInfoGGP const &lhs, + VkStreamDescriptorSurfaceCreateInfoGGP const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.streamDescriptor == rhs.streamDescriptor); +} + +bool operator!=(VkStreamDescriptorSurfaceCreateInfoGGP const &lhs, + VkStreamDescriptorSurfaceCreateInfoGGP const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_GGP + +#ifdef VK_USE_PLATFORM_SCREEN_QNX +bool operator==(VkScreenSurfaceCreateInfoQNX const &lhs, + VkScreenSurfaceCreateInfoQNX const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.context == rhs.context) && + (lhs.window == rhs.window); +} + +bool operator!=(VkScreenSurfaceCreateInfoQNX const &lhs, + VkScreenSurfaceCreateInfoQNX const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_SCREEN_QNX + +bool operator==(VkSurfaceFormatKHR const &lhs, + VkSurfaceFormatKHR const &rhs) noexcept { + return (lhs.format == rhs.format) && + (lhs.colorSpace == rhs.colorSpace); +} + +bool operator!=(VkSurfaceFormatKHR const &lhs, + VkSurfaceFormatKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSwapchainCreateInfoKHR const &lhs, + VkSwapchainCreateInfoKHR const &rhs) noexcept { + if(lhs.queueFamilyIndexCount != rhs.queueFamilyIndexCount) + return false; + + for(uint32_t i = 0; i < lhs.queueFamilyIndexCount; ++i) { + if(lhs.pQueueFamilyIndices[i] != rhs.pQueueFamilyIndices[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.surface == rhs.surface) && + (lhs.minImageCount == rhs.minImageCount) && + (lhs.imageFormat == rhs.imageFormat) && + (lhs.imageColorSpace == rhs.imageColorSpace) && + (lhs.imageExtent == rhs.imageExtent) && + (lhs.imageArrayLayers == rhs.imageArrayLayers) && + (lhs.imageUsage == rhs.imageUsage) && + (lhs.imageSharingMode == rhs.imageSharingMode) && + (lhs.preTransform == rhs.preTransform) && + (lhs.compositeAlpha == rhs.compositeAlpha) && + (lhs.presentMode == rhs.presentMode) && + (lhs.clipped == rhs.clipped) && + (lhs.oldSwapchain == rhs.oldSwapchain); +} + +bool operator!=(VkSwapchainCreateInfoKHR const &lhs, + VkSwapchainCreateInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPresentInfoKHR const &lhs, + VkPresentInfoKHR const &rhs) noexcept { + if(lhs.waitSemaphoreCount != rhs.waitSemaphoreCount) + return false; + + if(lhs.swapchainCount != rhs.swapchainCount) + return false; + + if(lhs.swapchainCount != rhs.swapchainCount) + return false; + + if(lhs.swapchainCount != rhs.swapchainCount) + return false; + + for(uint32_t i = 0; i < lhs.waitSemaphoreCount; ++i) { + if(lhs.pWaitSemaphores[i] != rhs.pWaitSemaphores[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.swapchainCount; ++i) { + if(lhs.pSwapchains[i] != rhs.pSwapchains[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.swapchainCount; ++i) { + if(lhs.pImageIndices[i] != rhs.pImageIndices[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.swapchainCount; ++i) { + if(lhs.pResults[i] != rhs.pResults[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkPresentInfoKHR const &lhs, + VkPresentInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDebugReportCallbackCreateInfoEXT const &lhs, + VkDebugReportCallbackCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.pfnCallback == rhs.pfnCallback) && + (lhs.pUserData == rhs.pUserData); +} + +bool operator!=(VkDebugReportCallbackCreateInfoEXT const &lhs, + VkDebugReportCallbackCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkValidationFlagsEXT const &lhs, + VkValidationFlagsEXT const &rhs) noexcept { + if(lhs.disabledValidationCheckCount != rhs.disabledValidationCheckCount) + return false; + + for(uint32_t i = 0; i < lhs.disabledValidationCheckCount; ++i) { + if(lhs.pDisabledValidationChecks[i] != rhs.pDisabledValidationChecks[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkValidationFlagsEXT const &lhs, + VkValidationFlagsEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkValidationFeaturesEXT const &lhs, + VkValidationFeaturesEXT const &rhs) noexcept { + if(lhs.enabledValidationFeatureCount != rhs.enabledValidationFeatureCount) + return false; + + if(lhs.disabledValidationFeatureCount != rhs.disabledValidationFeatureCount) + return false; + + for(uint32_t i = 0; i < lhs.enabledValidationFeatureCount; ++i) { + if(lhs.pEnabledValidationFeatures[i] != rhs.pEnabledValidationFeatures[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.disabledValidationFeatureCount; ++i) { + if(lhs.pDisabledValidationFeatures[i] != rhs.pDisabledValidationFeatures[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkValidationFeaturesEXT const &lhs, + VkValidationFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineRasterizationStateRasterizationOrderAMD const &lhs, + VkPipelineRasterizationStateRasterizationOrderAMD const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.rasterizationOrder == rhs.rasterizationOrder); +} + +bool operator!=(VkPipelineRasterizationStateRasterizationOrderAMD const &lhs, + VkPipelineRasterizationStateRasterizationOrderAMD const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDebugMarkerObjectNameInfoEXT const &lhs, + VkDebugMarkerObjectNameInfoEXT const &rhs) noexcept { + if (lhs.pObjectName != rhs.pObjectName) { + if(lhs.pObjectName == nullptr || rhs.pObjectName == nullptr) + return false; + if(strcmp(lhs.pObjectName, rhs.pObjectName) != 0) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.objectType == rhs.objectType) && + (lhs.object == rhs.object); +} + +bool operator!=(VkDebugMarkerObjectNameInfoEXT const &lhs, + VkDebugMarkerObjectNameInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDebugMarkerObjectTagInfoEXT const &lhs, + VkDebugMarkerObjectTagInfoEXT const &rhs) noexcept { + if(lhs.tagSize != rhs.tagSize) + return false; + + if(memcmp(lhs.pTag, rhs.pTag, lhs.tagSize) != 0) + return false; + + return (lhs.sType == rhs.sType) && + (lhs.objectType == rhs.objectType) && + (lhs.object == rhs.object) && + (lhs.tagName == rhs.tagName); +} + +bool operator!=(VkDebugMarkerObjectTagInfoEXT const &lhs, + VkDebugMarkerObjectTagInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDebugMarkerMarkerInfoEXT const &lhs, + VkDebugMarkerMarkerInfoEXT const &rhs) noexcept { + if (lhs.pMarkerName != rhs.pMarkerName) { + if(lhs.pMarkerName == nullptr || rhs.pMarkerName == nullptr) + return false; + if(strcmp(lhs.pMarkerName, rhs.pMarkerName) != 0) + return false; + } + + for(uint32_t i = 0; i < 4; ++i) { + if(lhs.color[i] != rhs.color[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkDebugMarkerMarkerInfoEXT const &lhs, + VkDebugMarkerMarkerInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDedicatedAllocationImageCreateInfoNV const &lhs, + VkDedicatedAllocationImageCreateInfoNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.dedicatedAllocation == rhs.dedicatedAllocation); +} + +bool operator!=(VkDedicatedAllocationImageCreateInfoNV const &lhs, + VkDedicatedAllocationImageCreateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDedicatedAllocationBufferCreateInfoNV const &lhs, + VkDedicatedAllocationBufferCreateInfoNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.dedicatedAllocation == rhs.dedicatedAllocation); +} + +bool operator!=(VkDedicatedAllocationBufferCreateInfoNV const &lhs, + VkDedicatedAllocationBufferCreateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDedicatedAllocationMemoryAllocateInfoNV const &lhs, + VkDedicatedAllocationMemoryAllocateInfoNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.image == rhs.image) && + (lhs.buffer == rhs.buffer); +} + +bool operator!=(VkDedicatedAllocationMemoryAllocateInfoNV const &lhs, + VkDedicatedAllocationMemoryAllocateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkExternalImageFormatPropertiesNV const &lhs, + VkExternalImageFormatPropertiesNV const &rhs) noexcept { + return (lhs.imageFormatProperties == rhs.imageFormatProperties) && + (lhs.externalMemoryFeatures == rhs.externalMemoryFeatures) && + (lhs.exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes) && + (lhs.compatibleHandleTypes == rhs.compatibleHandleTypes); +} + +bool operator!=(VkExternalImageFormatPropertiesNV const &lhs, + VkExternalImageFormatPropertiesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkExternalMemoryImageCreateInfoNV const &lhs, + VkExternalMemoryImageCreateInfoNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.handleTypes == rhs.handleTypes); +} + +bool operator!=(VkExternalMemoryImageCreateInfoNV const &lhs, + VkExternalMemoryImageCreateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkExportMemoryAllocateInfoNV const &lhs, + VkExportMemoryAllocateInfoNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.handleTypes == rhs.handleTypes); +} + +bool operator!=(VkExportMemoryAllocateInfoNV const &lhs, + VkExportMemoryAllocateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkImportMemoryWin32HandleInfoNV const &lhs, + VkImportMemoryWin32HandleInfoNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.handleType == rhs.handleType) && + (lhs.handle == rhs.handle); +} + +bool operator!=(VkImportMemoryWin32HandleInfoNV const &lhs, + VkImportMemoryWin32HandleInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkExportMemoryWin32HandleInfoNV const &lhs, + VkExportMemoryWin32HandleInfoNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pAttributes == rhs.pAttributes) && + (lhs.dwAccess == rhs.dwAccess); +} + +bool operator!=(VkExportMemoryWin32HandleInfoNV const &lhs, + VkExportMemoryWin32HandleInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkWin32KeyedMutexAcquireReleaseInfoNV const &lhs, + VkWin32KeyedMutexAcquireReleaseInfoNV const &rhs) noexcept { + if(lhs.acquireCount != rhs.acquireCount) + return false; + + if(lhs.acquireCount != rhs.acquireCount) + return false; + + if(lhs.acquireCount != rhs.acquireCount) + return false; + + if(lhs.releaseCount != rhs.releaseCount) + return false; + + if(lhs.releaseCount != rhs.releaseCount) + return false; + + for(uint32_t i = 0; i < lhs.acquireCount; ++i) { + if(lhs.pAcquireSyncs[i] != rhs.pAcquireSyncs[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.acquireCount; ++i) { + if(lhs.pAcquireKeys[i] != rhs.pAcquireKeys[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.acquireCount; ++i) { + if(lhs.pAcquireTimeoutMilliseconds[i] != rhs.pAcquireTimeoutMilliseconds[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.releaseCount; ++i) { + if(lhs.pReleaseSyncs[i] != rhs.pReleaseSyncs[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.releaseCount; ++i) { + if(lhs.pReleaseKeys[i] != rhs.pReleaseKeys[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkWin32KeyedMutexAcquireReleaseInfoNV const &lhs, + VkWin32KeyedMutexAcquireReleaseInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_WIN32_KHR + +bool operator==(VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const &lhs, + VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.deviceGeneratedCommands == rhs.deviceGeneratedCommands); +} + +bool operator!=(VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const &lhs, + VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDevicePrivateDataCreateInfoEXT const &lhs, + VkDevicePrivateDataCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.privateDataSlotRequestCount == rhs.privateDataSlotRequestCount); +} + +bool operator!=(VkDevicePrivateDataCreateInfoEXT const &lhs, + VkDevicePrivateDataCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPrivateDataSlotCreateInfoEXT const &lhs, + VkPrivateDataSlotCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkPrivateDataSlotCreateInfoEXT const &lhs, + VkPrivateDataSlotCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDevicePrivateDataFeaturesEXT const &lhs, + VkPhysicalDevicePrivateDataFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.privateData == rhs.privateData); +} + +bool operator!=(VkPhysicalDevicePrivateDataFeaturesEXT const &lhs, + VkPhysicalDevicePrivateDataFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const &lhs, + VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxGraphicsShaderGroupCount == rhs.maxGraphicsShaderGroupCount) && + (lhs.maxIndirectSequenceCount == rhs.maxIndirectSequenceCount) && + (lhs.maxIndirectCommandsTokenCount == rhs.maxIndirectCommandsTokenCount) && + (lhs.maxIndirectCommandsStreamCount == rhs.maxIndirectCommandsStreamCount) && + (lhs.maxIndirectCommandsTokenOffset == rhs.maxIndirectCommandsTokenOffset) && + (lhs.maxIndirectCommandsStreamStride == rhs.maxIndirectCommandsStreamStride) && + (lhs.minSequencesCountBufferOffsetAlignment == rhs.minSequencesCountBufferOffsetAlignment) && + (lhs.minSequencesIndexBufferOffsetAlignment == rhs.minSequencesIndexBufferOffsetAlignment) && + (lhs.minIndirectCommandsBufferOffsetAlignment == rhs.minIndirectCommandsBufferOffsetAlignment); +} + +bool operator!=(VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const &lhs, + VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceMultiDrawPropertiesEXT const &lhs, + VkPhysicalDeviceMultiDrawPropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxMultiDrawCount == rhs.maxMultiDrawCount); +} + +bool operator!=(VkPhysicalDeviceMultiDrawPropertiesEXT const &lhs, + VkPhysicalDeviceMultiDrawPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkGraphicsShaderGroupCreateInfoNV const &lhs, + VkGraphicsShaderGroupCreateInfoNV const &rhs) noexcept { + if(lhs.stageCount != rhs.stageCount) + return false; + + for(uint32_t i = 0; i < lhs.stageCount; ++i) { + if(lhs.pStages[i] != rhs.pStages[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.pVertexInputState == rhs.pVertexInputState) && + (lhs.pTessellationState == rhs.pTessellationState); +} + +bool operator!=(VkGraphicsShaderGroupCreateInfoNV const &lhs, + VkGraphicsShaderGroupCreateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkGraphicsPipelineShaderGroupsCreateInfoNV const &lhs, + VkGraphicsPipelineShaderGroupsCreateInfoNV const &rhs) noexcept { + if(lhs.groupCount != rhs.groupCount) + return false; + + if(lhs.pipelineCount != rhs.pipelineCount) + return false; + + for(uint32_t i = 0; i < lhs.groupCount; ++i) { + if(lhs.pGroups[i] != rhs.pGroups[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.pipelineCount; ++i) { + if(lhs.pPipelines[i] != rhs.pPipelines[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkGraphicsPipelineShaderGroupsCreateInfoNV const &lhs, + VkGraphicsPipelineShaderGroupsCreateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBindShaderGroupIndirectCommandNV const &lhs, + VkBindShaderGroupIndirectCommandNV const &rhs) noexcept { + return (lhs.groupIndex == rhs.groupIndex); +} + +bool operator!=(VkBindShaderGroupIndirectCommandNV const &lhs, + VkBindShaderGroupIndirectCommandNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBindIndexBufferIndirectCommandNV const &lhs, + VkBindIndexBufferIndirectCommandNV const &rhs) noexcept { + return (lhs.bufferAddress == rhs.bufferAddress) && + (lhs.size == rhs.size) && + (lhs.indexType == rhs.indexType); +} + +bool operator!=(VkBindIndexBufferIndirectCommandNV const &lhs, + VkBindIndexBufferIndirectCommandNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBindVertexBufferIndirectCommandNV const &lhs, + VkBindVertexBufferIndirectCommandNV const &rhs) noexcept { + return (lhs.bufferAddress == rhs.bufferAddress) && + (lhs.size == rhs.size) && + (lhs.stride == rhs.stride); +} + +bool operator!=(VkBindVertexBufferIndirectCommandNV const &lhs, + VkBindVertexBufferIndirectCommandNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSetStateFlagsIndirectCommandNV const &lhs, + VkSetStateFlagsIndirectCommandNV const &rhs) noexcept { + return (lhs.data == rhs.data); +} + +bool operator!=(VkSetStateFlagsIndirectCommandNV const &lhs, + VkSetStateFlagsIndirectCommandNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkIndirectCommandsStreamNV const &lhs, + VkIndirectCommandsStreamNV const &rhs) noexcept { + return (lhs.buffer == rhs.buffer) && + (lhs.offset == rhs.offset); +} + +bool operator!=(VkIndirectCommandsStreamNV const &lhs, + VkIndirectCommandsStreamNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkIndirectCommandsLayoutTokenNV const &lhs, + VkIndirectCommandsLayoutTokenNV const &rhs) noexcept { + if(lhs.indexTypeCount != rhs.indexTypeCount) + return false; + + if(lhs.indexTypeCount != rhs.indexTypeCount) + return false; + + for(uint32_t i = 0; i < lhs.indexTypeCount; ++i) { + if(lhs.pIndexTypes[i] != rhs.pIndexTypes[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.indexTypeCount; ++i) { + if(lhs.pIndexTypeValues[i] != rhs.pIndexTypeValues[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.tokenType == rhs.tokenType) && + (lhs.stream == rhs.stream) && + (lhs.offset == rhs.offset) && + (lhs.vertexBindingUnit == rhs.vertexBindingUnit) && + (lhs.vertexDynamicStride == rhs.vertexDynamicStride) && + (lhs.pushconstantPipelineLayout == rhs.pushconstantPipelineLayout) && + (lhs.pushconstantShaderStageFlags == rhs.pushconstantShaderStageFlags) && + (lhs.pushconstantOffset == rhs.pushconstantOffset) && + (lhs.pushconstantSize == rhs.pushconstantSize) && + (lhs.indirectStateFlags == rhs.indirectStateFlags); +} + +bool operator!=(VkIndirectCommandsLayoutTokenNV const &lhs, + VkIndirectCommandsLayoutTokenNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkIndirectCommandsLayoutCreateInfoNV const &lhs, + VkIndirectCommandsLayoutCreateInfoNV const &rhs) noexcept { + if(lhs.tokenCount != rhs.tokenCount) + return false; + + if(lhs.streamCount != rhs.streamCount) + return false; + + for(uint32_t i = 0; i < lhs.tokenCount; ++i) { + if(lhs.pTokens[i] != rhs.pTokens[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.streamCount; ++i) { + if(lhs.pStreamStrides[i] != rhs.pStreamStrides[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.pipelineBindPoint == rhs.pipelineBindPoint); +} + +bool operator!=(VkIndirectCommandsLayoutCreateInfoNV const &lhs, + VkIndirectCommandsLayoutCreateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkGeneratedCommandsInfoNV const &lhs, + VkGeneratedCommandsInfoNV const &rhs) noexcept { + if(lhs.streamCount != rhs.streamCount) + return false; + + for(uint32_t i = 0; i < lhs.streamCount; ++i) { + if(lhs.pStreams[i] != rhs.pStreams[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.pipelineBindPoint == rhs.pipelineBindPoint) && + (lhs.pipeline == rhs.pipeline) && + (lhs.indirectCommandsLayout == rhs.indirectCommandsLayout) && + (lhs.sequencesCount == rhs.sequencesCount) && + (lhs.preprocessBuffer == rhs.preprocessBuffer) && + (lhs.preprocessOffset == rhs.preprocessOffset) && + (lhs.preprocessSize == rhs.preprocessSize) && + (lhs.sequencesCountBuffer == rhs.sequencesCountBuffer) && + (lhs.sequencesCountOffset == rhs.sequencesCountOffset) && + (lhs.sequencesIndexBuffer == rhs.sequencesIndexBuffer) && + (lhs.sequencesIndexOffset == rhs.sequencesIndexOffset); +} + +bool operator!=(VkGeneratedCommandsInfoNV const &lhs, + VkGeneratedCommandsInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkGeneratedCommandsMemoryRequirementsInfoNV const &lhs, + VkGeneratedCommandsMemoryRequirementsInfoNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pipelineBindPoint == rhs.pipelineBindPoint) && + (lhs.pipeline == rhs.pipeline) && + (lhs.indirectCommandsLayout == rhs.indirectCommandsLayout) && + (lhs.maxSequencesCount == rhs.maxSequencesCount); +} + +bool operator!=(VkGeneratedCommandsMemoryRequirementsInfoNV const &lhs, + VkGeneratedCommandsMemoryRequirementsInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceFeatures2 const &lhs, + VkPhysicalDeviceFeatures2 const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.features == rhs.features); +} + +bool operator!=(VkPhysicalDeviceFeatures2 const &lhs, + VkPhysicalDeviceFeatures2 const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceProperties2 const &lhs, + VkPhysicalDeviceProperties2 const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.properties == rhs.properties); +} + +bool operator!=(VkPhysicalDeviceProperties2 const &lhs, + VkPhysicalDeviceProperties2 const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkFormatProperties2 const &lhs, + VkFormatProperties2 const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.formatProperties == rhs.formatProperties); +} + +bool operator!=(VkFormatProperties2 const &lhs, + VkFormatProperties2 const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageFormatProperties2 const &lhs, + VkImageFormatProperties2 const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.imageFormatProperties == rhs.imageFormatProperties); +} + +bool operator!=(VkImageFormatProperties2 const &lhs, + VkImageFormatProperties2 const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceImageFormatInfo2 const &lhs, + VkPhysicalDeviceImageFormatInfo2 const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.format == rhs.format) && + (lhs.type == rhs.type) && + (lhs.tiling == rhs.tiling) && + (lhs.usage == rhs.usage) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkPhysicalDeviceImageFormatInfo2 const &lhs, + VkPhysicalDeviceImageFormatInfo2 const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkQueueFamilyProperties2 const &lhs, + VkQueueFamilyProperties2 const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.queueFamilyProperties == rhs.queueFamilyProperties); +} + +bool operator!=(VkQueueFamilyProperties2 const &lhs, + VkQueueFamilyProperties2 const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceMemoryProperties2 const &lhs, + VkPhysicalDeviceMemoryProperties2 const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.memoryProperties == rhs.memoryProperties); +} + +bool operator!=(VkPhysicalDeviceMemoryProperties2 const &lhs, + VkPhysicalDeviceMemoryProperties2 const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSparseImageFormatProperties2 const &lhs, + VkSparseImageFormatProperties2 const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.properties == rhs.properties); +} + +bool operator!=(VkSparseImageFormatProperties2 const &lhs, + VkSparseImageFormatProperties2 const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceSparseImageFormatInfo2 const &lhs, + VkPhysicalDeviceSparseImageFormatInfo2 const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.format == rhs.format) && + (lhs.type == rhs.type) && + (lhs.samples == rhs.samples) && + (lhs.usage == rhs.usage) && + (lhs.tiling == rhs.tiling); +} + +bool operator!=(VkPhysicalDeviceSparseImageFormatInfo2 const &lhs, + VkPhysicalDeviceSparseImageFormatInfo2 const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDevicePushDescriptorPropertiesKHR const &lhs, + VkPhysicalDevicePushDescriptorPropertiesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxPushDescriptors == rhs.maxPushDescriptors); +} + +bool operator!=(VkPhysicalDevicePushDescriptorPropertiesKHR const &lhs, + VkPhysicalDevicePushDescriptorPropertiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkConformanceVersion const &lhs, + VkConformanceVersion const &rhs) noexcept { + return (lhs.major == rhs.major) && + (lhs.minor == rhs.minor) && + (lhs.subminor == rhs.subminor) && + (lhs.patch == rhs.patch); +} + +bool operator!=(VkConformanceVersion const &lhs, + VkConformanceVersion const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceDriverProperties const &lhs, + VkPhysicalDeviceDriverProperties const &rhs) noexcept { + for(uint32_t i = 0; i < VK_MAX_DRIVER_NAME_SIZE; ++i) { + if(lhs.driverName[i] != rhs.driverName[i]) + return false; + } + + for(uint32_t i = 0; i < VK_MAX_DRIVER_INFO_SIZE; ++i) { + if(lhs.driverInfo[i] != rhs.driverInfo[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.driverID == rhs.driverID) && + (lhs.conformanceVersion == rhs.conformanceVersion); +} + +bool operator!=(VkPhysicalDeviceDriverProperties const &lhs, + VkPhysicalDeviceDriverProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPresentRegionsKHR const &lhs, + VkPresentRegionsKHR const &rhs) noexcept { + if(lhs.swapchainCount != rhs.swapchainCount) + return false; + + for(uint32_t i = 0; i < lhs.swapchainCount; ++i) { + if(lhs.pRegions[i] != rhs.pRegions[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkPresentRegionsKHR const &lhs, + VkPresentRegionsKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPresentRegionKHR const &lhs, + VkPresentRegionKHR const &rhs) noexcept { + if(lhs.rectangleCount != rhs.rectangleCount) + return false; + + for(uint32_t i = 0; i < lhs.rectangleCount; ++i) { + if(lhs.pRectangles[i] != rhs.pRectangles[i]) + return false; + } + + return true; +} + +bool operator!=(VkPresentRegionKHR const &lhs, + VkPresentRegionKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkRectLayerKHR const &lhs, + VkRectLayerKHR const &rhs) noexcept { + return (lhs.offset == rhs.offset) && + (lhs.extent == rhs.extent) && + (lhs.layer == rhs.layer); +} + +bool operator!=(VkRectLayerKHR const &lhs, + VkRectLayerKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceVariablePointersFeatures const &lhs, + VkPhysicalDeviceVariablePointersFeatures const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.variablePointersStorageBuffer == rhs.variablePointersStorageBuffer) && + (lhs.variablePointers == rhs.variablePointers); +} + +bool operator!=(VkPhysicalDeviceVariablePointersFeatures const &lhs, + VkPhysicalDeviceVariablePointersFeatures const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkExternalMemoryProperties const &lhs, + VkExternalMemoryProperties const &rhs) noexcept { + return (lhs.externalMemoryFeatures == rhs.externalMemoryFeatures) && + (lhs.exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes) && + (lhs.compatibleHandleTypes == rhs.compatibleHandleTypes); +} + +bool operator!=(VkExternalMemoryProperties const &lhs, + VkExternalMemoryProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceExternalImageFormatInfo const &lhs, + VkPhysicalDeviceExternalImageFormatInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.handleType == rhs.handleType); +} + +bool operator!=(VkPhysicalDeviceExternalImageFormatInfo const &lhs, + VkPhysicalDeviceExternalImageFormatInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkExternalImageFormatProperties const &lhs, + VkExternalImageFormatProperties const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.externalMemoryProperties == rhs.externalMemoryProperties); +} + +bool operator!=(VkExternalImageFormatProperties const &lhs, + VkExternalImageFormatProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceExternalBufferInfo const &lhs, + VkPhysicalDeviceExternalBufferInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.usage == rhs.usage) && + (lhs.handleType == rhs.handleType); +} + +bool operator!=(VkPhysicalDeviceExternalBufferInfo const &lhs, + VkPhysicalDeviceExternalBufferInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkExternalBufferProperties const &lhs, + VkExternalBufferProperties const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.externalMemoryProperties == rhs.externalMemoryProperties); +} + +bool operator!=(VkExternalBufferProperties const &lhs, + VkExternalBufferProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceIDProperties const &lhs, + VkPhysicalDeviceIDProperties const &rhs) noexcept { + for(uint32_t i = 0; i < VK_UUID_SIZE; ++i) { + if(lhs.deviceUUID[i] != rhs.deviceUUID[i]) + return false; + } + + for(uint32_t i = 0; i < VK_UUID_SIZE; ++i) { + if(lhs.driverUUID[i] != rhs.driverUUID[i]) + return false; + } + + for(uint32_t i = 0; i < VK_LUID_SIZE; ++i) { + if(lhs.deviceLUID[i] != rhs.deviceLUID[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.deviceNodeMask == rhs.deviceNodeMask) && + (lhs.deviceLUIDValid == rhs.deviceLUIDValid); +} + +bool operator!=(VkPhysicalDeviceIDProperties const &lhs, + VkPhysicalDeviceIDProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkExternalMemoryImageCreateInfo const &lhs, + VkExternalMemoryImageCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.handleTypes == rhs.handleTypes); +} + +bool operator!=(VkExternalMemoryImageCreateInfo const &lhs, + VkExternalMemoryImageCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkExternalMemoryBufferCreateInfo const &lhs, + VkExternalMemoryBufferCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.handleTypes == rhs.handleTypes); +} + +bool operator!=(VkExternalMemoryBufferCreateInfo const &lhs, + VkExternalMemoryBufferCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkExportMemoryAllocateInfo const &lhs, + VkExportMemoryAllocateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.handleTypes == rhs.handleTypes); +} + +bool operator!=(VkExportMemoryAllocateInfo const &lhs, + VkExportMemoryAllocateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkImportMemoryWin32HandleInfoKHR const &lhs, + VkImportMemoryWin32HandleInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.handleType == rhs.handleType) && + (lhs.handle == rhs.handle) && + (lhs.name == rhs.name); +} + +bool operator!=(VkImportMemoryWin32HandleInfoKHR const &lhs, + VkImportMemoryWin32HandleInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkExportMemoryWin32HandleInfoKHR const &lhs, + VkExportMemoryWin32HandleInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pAttributes == rhs.pAttributes) && + (lhs.dwAccess == rhs.dwAccess) && + (lhs.name == rhs.name); +} + +bool operator!=(VkExportMemoryWin32HandleInfoKHR const &lhs, + VkExportMemoryWin32HandleInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkImportMemoryZirconHandleInfoFUCHSIA const &lhs, + VkImportMemoryZirconHandleInfoFUCHSIA const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.handleType == rhs.handleType) && + (lhs.handle == rhs.handle); +} + +bool operator!=(VkImportMemoryZirconHandleInfoFUCHSIA const &lhs, + VkImportMemoryZirconHandleInfoFUCHSIA const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkMemoryZirconHandlePropertiesFUCHSIA const &lhs, + VkMemoryZirconHandlePropertiesFUCHSIA const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.memoryTypeBits == rhs.memoryTypeBits); +} + +bool operator!=(VkMemoryZirconHandlePropertiesFUCHSIA const &lhs, + VkMemoryZirconHandlePropertiesFUCHSIA const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkMemoryGetZirconHandleInfoFUCHSIA const &lhs, + VkMemoryGetZirconHandleInfoFUCHSIA const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.memory == rhs.memory) && + (lhs.handleType == rhs.handleType); +} + +bool operator!=(VkMemoryGetZirconHandleInfoFUCHSIA const &lhs, + VkMemoryGetZirconHandleInfoFUCHSIA const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkMemoryWin32HandlePropertiesKHR const &lhs, + VkMemoryWin32HandlePropertiesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.memoryTypeBits == rhs.memoryTypeBits); +} + +bool operator!=(VkMemoryWin32HandlePropertiesKHR const &lhs, + VkMemoryWin32HandlePropertiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkMemoryGetWin32HandleInfoKHR const &lhs, + VkMemoryGetWin32HandleInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.memory == rhs.memory) && + (lhs.handleType == rhs.handleType); +} + +bool operator!=(VkMemoryGetWin32HandleInfoKHR const &lhs, + VkMemoryGetWin32HandleInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_WIN32_KHR + +bool operator==(VkImportMemoryFdInfoKHR const &lhs, + VkImportMemoryFdInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.handleType == rhs.handleType) && + (lhs.fd == rhs.fd); +} + +bool operator!=(VkImportMemoryFdInfoKHR const &lhs, + VkImportMemoryFdInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMemoryFdPropertiesKHR const &lhs, + VkMemoryFdPropertiesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.memoryTypeBits == rhs.memoryTypeBits); +} + +bool operator!=(VkMemoryFdPropertiesKHR const &lhs, + VkMemoryFdPropertiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMemoryGetFdInfoKHR const &lhs, + VkMemoryGetFdInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.memory == rhs.memory) && + (lhs.handleType == rhs.handleType); +} + +bool operator!=(VkMemoryGetFdInfoKHR const &lhs, + VkMemoryGetFdInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkWin32KeyedMutexAcquireReleaseInfoKHR const &lhs, + VkWin32KeyedMutexAcquireReleaseInfoKHR const &rhs) noexcept { + if(lhs.acquireCount != rhs.acquireCount) + return false; + + if(lhs.acquireCount != rhs.acquireCount) + return false; + + if(lhs.acquireCount != rhs.acquireCount) + return false; + + if(lhs.releaseCount != rhs.releaseCount) + return false; + + if(lhs.releaseCount != rhs.releaseCount) + return false; + + for(uint32_t i = 0; i < lhs.acquireCount; ++i) { + if(lhs.pAcquireSyncs[i] != rhs.pAcquireSyncs[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.acquireCount; ++i) { + if(lhs.pAcquireKeys[i] != rhs.pAcquireKeys[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.acquireCount; ++i) { + if(lhs.pAcquireTimeouts[i] != rhs.pAcquireTimeouts[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.releaseCount; ++i) { + if(lhs.pReleaseSyncs[i] != rhs.pReleaseSyncs[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.releaseCount; ++i) { + if(lhs.pReleaseKeys[i] != rhs.pReleaseKeys[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkWin32KeyedMutexAcquireReleaseInfoKHR const &lhs, + VkWin32KeyedMutexAcquireReleaseInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_WIN32_KHR + +bool operator==(VkPhysicalDeviceExternalSemaphoreInfo const &lhs, + VkPhysicalDeviceExternalSemaphoreInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.handleType == rhs.handleType); +} + +bool operator!=(VkPhysicalDeviceExternalSemaphoreInfo const &lhs, + VkPhysicalDeviceExternalSemaphoreInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkExternalSemaphoreProperties const &lhs, + VkExternalSemaphoreProperties const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes) && + (lhs.compatibleHandleTypes == rhs.compatibleHandleTypes) && + (lhs.externalSemaphoreFeatures == rhs.externalSemaphoreFeatures); +} + +bool operator!=(VkExternalSemaphoreProperties const &lhs, + VkExternalSemaphoreProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkExportSemaphoreCreateInfo const &lhs, + VkExportSemaphoreCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.handleTypes == rhs.handleTypes); +} + +bool operator!=(VkExportSemaphoreCreateInfo const &lhs, + VkExportSemaphoreCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkImportSemaphoreWin32HandleInfoKHR const &lhs, + VkImportSemaphoreWin32HandleInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.semaphore == rhs.semaphore) && + (lhs.flags == rhs.flags) && + (lhs.handleType == rhs.handleType) && + (lhs.handle == rhs.handle) && + (lhs.name == rhs.name); +} + +bool operator!=(VkImportSemaphoreWin32HandleInfoKHR const &lhs, + VkImportSemaphoreWin32HandleInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkExportSemaphoreWin32HandleInfoKHR const &lhs, + VkExportSemaphoreWin32HandleInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pAttributes == rhs.pAttributes) && + (lhs.dwAccess == rhs.dwAccess) && + (lhs.name == rhs.name); +} + +bool operator!=(VkExportSemaphoreWin32HandleInfoKHR const &lhs, + VkExportSemaphoreWin32HandleInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkD3D12FenceSubmitInfoKHR const &lhs, + VkD3D12FenceSubmitInfoKHR const &rhs) noexcept { + if(lhs.waitSemaphoreValuesCount != rhs.waitSemaphoreValuesCount) + return false; + + if(lhs.signalSemaphoreValuesCount != rhs.signalSemaphoreValuesCount) + return false; + + for(uint32_t i = 0; i < lhs.waitSemaphoreValuesCount; ++i) { + if(lhs.pWaitSemaphoreValues[i] != rhs.pWaitSemaphoreValues[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.signalSemaphoreValuesCount; ++i) { + if(lhs.pSignalSemaphoreValues[i] != rhs.pSignalSemaphoreValues[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkD3D12FenceSubmitInfoKHR const &lhs, + VkD3D12FenceSubmitInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkSemaphoreGetWin32HandleInfoKHR const &lhs, + VkSemaphoreGetWin32HandleInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.semaphore == rhs.semaphore) && + (lhs.handleType == rhs.handleType); +} + +bool operator!=(VkSemaphoreGetWin32HandleInfoKHR const &lhs, + VkSemaphoreGetWin32HandleInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_WIN32_KHR + +bool operator==(VkImportSemaphoreFdInfoKHR const &lhs, + VkImportSemaphoreFdInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.semaphore == rhs.semaphore) && + (lhs.flags == rhs.flags) && + (lhs.handleType == rhs.handleType) && + (lhs.fd == rhs.fd); +} + +bool operator!=(VkImportSemaphoreFdInfoKHR const &lhs, + VkImportSemaphoreFdInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSemaphoreGetFdInfoKHR const &lhs, + VkSemaphoreGetFdInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.semaphore == rhs.semaphore) && + (lhs.handleType == rhs.handleType); +} + +bool operator!=(VkSemaphoreGetFdInfoKHR const &lhs, + VkSemaphoreGetFdInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkImportSemaphoreZirconHandleInfoFUCHSIA const &lhs, + VkImportSemaphoreZirconHandleInfoFUCHSIA const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.semaphore == rhs.semaphore) && + (lhs.flags == rhs.flags) && + (lhs.handleType == rhs.handleType) && + (lhs.zirconHandle == rhs.zirconHandle); +} + +bool operator!=(VkImportSemaphoreZirconHandleInfoFUCHSIA const &lhs, + VkImportSemaphoreZirconHandleInfoFUCHSIA const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkSemaphoreGetZirconHandleInfoFUCHSIA const &lhs, + VkSemaphoreGetZirconHandleInfoFUCHSIA const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.semaphore == rhs.semaphore) && + (lhs.handleType == rhs.handleType); +} + +bool operator!=(VkSemaphoreGetZirconHandleInfoFUCHSIA const &lhs, + VkSemaphoreGetZirconHandleInfoFUCHSIA const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_FUCHSIA + +bool operator==(VkPhysicalDeviceExternalFenceInfo const &lhs, + VkPhysicalDeviceExternalFenceInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.handleType == rhs.handleType); +} + +bool operator!=(VkPhysicalDeviceExternalFenceInfo const &lhs, + VkPhysicalDeviceExternalFenceInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkExternalFenceProperties const &lhs, + VkExternalFenceProperties const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes) && + (lhs.compatibleHandleTypes == rhs.compatibleHandleTypes) && + (lhs.externalFenceFeatures == rhs.externalFenceFeatures); +} + +bool operator!=(VkExternalFenceProperties const &lhs, + VkExternalFenceProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkExportFenceCreateInfo const &lhs, + VkExportFenceCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.handleTypes == rhs.handleTypes); +} + +bool operator!=(VkExportFenceCreateInfo const &lhs, + VkExportFenceCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkImportFenceWin32HandleInfoKHR const &lhs, + VkImportFenceWin32HandleInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.fence == rhs.fence) && + (lhs.flags == rhs.flags) && + (lhs.handleType == rhs.handleType) && + (lhs.handle == rhs.handle) && + (lhs.name == rhs.name); +} + +bool operator!=(VkImportFenceWin32HandleInfoKHR const &lhs, + VkImportFenceWin32HandleInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkExportFenceWin32HandleInfoKHR const &lhs, + VkExportFenceWin32HandleInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pAttributes == rhs.pAttributes) && + (lhs.dwAccess == rhs.dwAccess) && + (lhs.name == rhs.name); +} + +bool operator!=(VkExportFenceWin32HandleInfoKHR const &lhs, + VkExportFenceWin32HandleInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkFenceGetWin32HandleInfoKHR const &lhs, + VkFenceGetWin32HandleInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.fence == rhs.fence) && + (lhs.handleType == rhs.handleType); +} + +bool operator!=(VkFenceGetWin32HandleInfoKHR const &lhs, + VkFenceGetWin32HandleInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_WIN32_KHR + +bool operator==(VkImportFenceFdInfoKHR const &lhs, + VkImportFenceFdInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.fence == rhs.fence) && + (lhs.flags == rhs.flags) && + (lhs.handleType == rhs.handleType) && + (lhs.fd == rhs.fd); +} + +bool operator!=(VkImportFenceFdInfoKHR const &lhs, + VkImportFenceFdInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkFenceGetFdInfoKHR const &lhs, + VkFenceGetFdInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.fence == rhs.fence) && + (lhs.handleType == rhs.handleType); +} + +bool operator!=(VkFenceGetFdInfoKHR const &lhs, + VkFenceGetFdInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceMultiviewFeatures const &lhs, + VkPhysicalDeviceMultiviewFeatures const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.multiview == rhs.multiview) && + (lhs.multiviewGeometryShader == rhs.multiviewGeometryShader) && + (lhs.multiviewTessellationShader == rhs.multiviewTessellationShader); +} + +bool operator!=(VkPhysicalDeviceMultiviewFeatures const &lhs, + VkPhysicalDeviceMultiviewFeatures const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceMultiviewProperties const &lhs, + VkPhysicalDeviceMultiviewProperties const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxMultiviewViewCount == rhs.maxMultiviewViewCount) && + (lhs.maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex); +} + +bool operator!=(VkPhysicalDeviceMultiviewProperties const &lhs, + VkPhysicalDeviceMultiviewProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkRenderPassMultiviewCreateInfo const &lhs, + VkRenderPassMultiviewCreateInfo const &rhs) noexcept { + if(lhs.subpassCount != rhs.subpassCount) + return false; + + if(lhs.dependencyCount != rhs.dependencyCount) + return false; + + if(lhs.correlationMaskCount != rhs.correlationMaskCount) + return false; + + for(uint32_t i = 0; i < lhs.subpassCount; ++i) { + if(lhs.pViewMasks[i] != rhs.pViewMasks[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.dependencyCount; ++i) { + if(lhs.pViewOffsets[i] != rhs.pViewOffsets[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.correlationMaskCount; ++i) { + if(lhs.pCorrelationMasks[i] != rhs.pCorrelationMasks[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkRenderPassMultiviewCreateInfo const &lhs, + VkRenderPassMultiviewCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSurfaceCapabilities2EXT const &lhs, + VkSurfaceCapabilities2EXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.minImageCount == rhs.minImageCount) && + (lhs.maxImageCount == rhs.maxImageCount) && + (lhs.currentExtent == rhs.currentExtent) && + (lhs.minImageExtent == rhs.minImageExtent) && + (lhs.maxImageExtent == rhs.maxImageExtent) && + (lhs.maxImageArrayLayers == rhs.maxImageArrayLayers) && + (lhs.supportedTransforms == rhs.supportedTransforms) && + (lhs.currentTransform == rhs.currentTransform) && + (lhs.supportedCompositeAlpha == rhs.supportedCompositeAlpha) && + (lhs.supportedUsageFlags == rhs.supportedUsageFlags) && + (lhs.supportedSurfaceCounters == rhs.supportedSurfaceCounters); +} + +bool operator!=(VkSurfaceCapabilities2EXT const &lhs, + VkSurfaceCapabilities2EXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDisplayPowerInfoEXT const &lhs, + VkDisplayPowerInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.powerState == rhs.powerState); +} + +bool operator!=(VkDisplayPowerInfoEXT const &lhs, + VkDisplayPowerInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDeviceEventInfoEXT const &lhs, + VkDeviceEventInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.deviceEvent == rhs.deviceEvent); +} + +bool operator!=(VkDeviceEventInfoEXT const &lhs, + VkDeviceEventInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDisplayEventInfoEXT const &lhs, + VkDisplayEventInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.displayEvent == rhs.displayEvent); +} + +bool operator!=(VkDisplayEventInfoEXT const &lhs, + VkDisplayEventInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSwapchainCounterCreateInfoEXT const &lhs, + VkSwapchainCounterCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.surfaceCounters == rhs.surfaceCounters); +} + +bool operator!=(VkSwapchainCounterCreateInfoEXT const &lhs, + VkSwapchainCounterCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceGroupProperties const &lhs, + VkPhysicalDeviceGroupProperties const &rhs) noexcept { + for(uint32_t i = 0; i < VK_MAX_DEVICE_GROUP_SIZE; ++i) { + if(lhs.physicalDevices[i] != rhs.physicalDevices[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.physicalDeviceCount == rhs.physicalDeviceCount) && + (lhs.subsetAllocation == rhs.subsetAllocation); +} + +bool operator!=(VkPhysicalDeviceGroupProperties const &lhs, + VkPhysicalDeviceGroupProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMemoryAllocateFlagsInfo const &lhs, + VkMemoryAllocateFlagsInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.deviceMask == rhs.deviceMask); +} + +bool operator!=(VkMemoryAllocateFlagsInfo const &lhs, + VkMemoryAllocateFlagsInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBindBufferMemoryInfo const &lhs, + VkBindBufferMemoryInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.buffer == rhs.buffer) && + (lhs.memory == rhs.memory) && + (lhs.memoryOffset == rhs.memoryOffset); +} + +bool operator!=(VkBindBufferMemoryInfo const &lhs, + VkBindBufferMemoryInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBindBufferMemoryDeviceGroupInfo const &lhs, + VkBindBufferMemoryDeviceGroupInfo const &rhs) noexcept { + if(lhs.deviceIndexCount != rhs.deviceIndexCount) + return false; + + for(uint32_t i = 0; i < lhs.deviceIndexCount; ++i) { + if(lhs.pDeviceIndices[i] != rhs.pDeviceIndices[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkBindBufferMemoryDeviceGroupInfo const &lhs, + VkBindBufferMemoryDeviceGroupInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBindImageMemoryInfo const &lhs, + VkBindImageMemoryInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.image == rhs.image) && + (lhs.memory == rhs.memory) && + (lhs.memoryOffset == rhs.memoryOffset); +} + +bool operator!=(VkBindImageMemoryInfo const &lhs, + VkBindImageMemoryInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBindImageMemoryDeviceGroupInfo const &lhs, + VkBindImageMemoryDeviceGroupInfo const &rhs) noexcept { + if(lhs.deviceIndexCount != rhs.deviceIndexCount) + return false; + + if(lhs.splitInstanceBindRegionCount != rhs.splitInstanceBindRegionCount) + return false; + + for(uint32_t i = 0; i < lhs.deviceIndexCount; ++i) { + if(lhs.pDeviceIndices[i] != rhs.pDeviceIndices[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.splitInstanceBindRegionCount; ++i) { + if(lhs.pSplitInstanceBindRegions[i] != rhs.pSplitInstanceBindRegions[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkBindImageMemoryDeviceGroupInfo const &lhs, + VkBindImageMemoryDeviceGroupInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDeviceGroupRenderPassBeginInfo const &lhs, + VkDeviceGroupRenderPassBeginInfo const &rhs) noexcept { + if(lhs.deviceRenderAreaCount != rhs.deviceRenderAreaCount) + return false; + + for(uint32_t i = 0; i < lhs.deviceRenderAreaCount; ++i) { + if(lhs.pDeviceRenderAreas[i] != rhs.pDeviceRenderAreas[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.deviceMask == rhs.deviceMask); +} + +bool operator!=(VkDeviceGroupRenderPassBeginInfo const &lhs, + VkDeviceGroupRenderPassBeginInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDeviceGroupCommandBufferBeginInfo const &lhs, + VkDeviceGroupCommandBufferBeginInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.deviceMask == rhs.deviceMask); +} + +bool operator!=(VkDeviceGroupCommandBufferBeginInfo const &lhs, + VkDeviceGroupCommandBufferBeginInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDeviceGroupSubmitInfo const &lhs, + VkDeviceGroupSubmitInfo const &rhs) noexcept { + if(lhs.waitSemaphoreCount != rhs.waitSemaphoreCount) + return false; + + if(lhs.commandBufferCount != rhs.commandBufferCount) + return false; + + if(lhs.signalSemaphoreCount != rhs.signalSemaphoreCount) + return false; + + for(uint32_t i = 0; i < lhs.waitSemaphoreCount; ++i) { + if(lhs.pWaitSemaphoreDeviceIndices[i] != rhs.pWaitSemaphoreDeviceIndices[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.commandBufferCount; ++i) { + if(lhs.pCommandBufferDeviceMasks[i] != rhs.pCommandBufferDeviceMasks[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.signalSemaphoreCount; ++i) { + if(lhs.pSignalSemaphoreDeviceIndices[i] != rhs.pSignalSemaphoreDeviceIndices[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkDeviceGroupSubmitInfo const &lhs, + VkDeviceGroupSubmitInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDeviceGroupBindSparseInfo const &lhs, + VkDeviceGroupBindSparseInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.resourceDeviceIndex == rhs.resourceDeviceIndex) && + (lhs.memoryDeviceIndex == rhs.memoryDeviceIndex); +} + +bool operator!=(VkDeviceGroupBindSparseInfo const &lhs, + VkDeviceGroupBindSparseInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDeviceGroupPresentCapabilitiesKHR const &lhs, + VkDeviceGroupPresentCapabilitiesKHR const &rhs) noexcept { + for(uint32_t i = 0; i < VK_MAX_DEVICE_GROUP_SIZE; ++i) { + if(lhs.presentMask[i] != rhs.presentMask[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.modes == rhs.modes); +} + +bool operator!=(VkDeviceGroupPresentCapabilitiesKHR const &lhs, + VkDeviceGroupPresentCapabilitiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageSwapchainCreateInfoKHR const &lhs, + VkImageSwapchainCreateInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.swapchain == rhs.swapchain); +} + +bool operator!=(VkImageSwapchainCreateInfoKHR const &lhs, + VkImageSwapchainCreateInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBindImageMemorySwapchainInfoKHR const &lhs, + VkBindImageMemorySwapchainInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.swapchain == rhs.swapchain) && + (lhs.imageIndex == rhs.imageIndex); +} + +bool operator!=(VkBindImageMemorySwapchainInfoKHR const &lhs, + VkBindImageMemorySwapchainInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAcquireNextImageInfoKHR const &lhs, + VkAcquireNextImageInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.swapchain == rhs.swapchain) && + (lhs.timeout == rhs.timeout) && + (lhs.semaphore == rhs.semaphore) && + (lhs.fence == rhs.fence) && + (lhs.deviceMask == rhs.deviceMask); +} + +bool operator!=(VkAcquireNextImageInfoKHR const &lhs, + VkAcquireNextImageInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDeviceGroupPresentInfoKHR const &lhs, + VkDeviceGroupPresentInfoKHR const &rhs) noexcept { + if(lhs.swapchainCount != rhs.swapchainCount) + return false; + + for(uint32_t i = 0; i < lhs.swapchainCount; ++i) { + if(lhs.pDeviceMasks[i] != rhs.pDeviceMasks[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.mode == rhs.mode); +} + +bool operator!=(VkDeviceGroupPresentInfoKHR const &lhs, + VkDeviceGroupPresentInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDeviceGroupDeviceCreateInfo const &lhs, + VkDeviceGroupDeviceCreateInfo const &rhs) noexcept { + if(lhs.physicalDeviceCount != rhs.physicalDeviceCount) + return false; + + for(uint32_t i = 0; i < lhs.physicalDeviceCount; ++i) { + if(lhs.pPhysicalDevices[i] != rhs.pPhysicalDevices[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkDeviceGroupDeviceCreateInfo const &lhs, + VkDeviceGroupDeviceCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDeviceGroupSwapchainCreateInfoKHR const &lhs, + VkDeviceGroupSwapchainCreateInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.modes == rhs.modes); +} + +bool operator!=(VkDeviceGroupSwapchainCreateInfoKHR const &lhs, + VkDeviceGroupSwapchainCreateInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDescriptorUpdateTemplateEntry const &lhs, + VkDescriptorUpdateTemplateEntry const &rhs) noexcept { + return (lhs.dstBinding == rhs.dstBinding) && + (lhs.dstArrayElement == rhs.dstArrayElement) && + (lhs.descriptorCount == rhs.descriptorCount) && + (lhs.descriptorType == rhs.descriptorType) && + (lhs.offset == rhs.offset) && + (lhs.stride == rhs.stride); +} + +bool operator!=(VkDescriptorUpdateTemplateEntry const &lhs, + VkDescriptorUpdateTemplateEntry const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDescriptorUpdateTemplateCreateInfo const &lhs, + VkDescriptorUpdateTemplateCreateInfo const &rhs) noexcept { + if(lhs.descriptorUpdateEntryCount != rhs.descriptorUpdateEntryCount) + return false; + + for(uint32_t i = 0; i < lhs.descriptorUpdateEntryCount; ++i) { + if(lhs.pDescriptorUpdateEntries[i] != rhs.pDescriptorUpdateEntries[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.templateType == rhs.templateType) && + (lhs.descriptorSetLayout == rhs.descriptorSetLayout) && + (lhs.pipelineBindPoint == rhs.pipelineBindPoint) && + (lhs.pipelineLayout == rhs.pipelineLayout) && + (lhs.set == rhs.set); +} + +bool operator!=(VkDescriptorUpdateTemplateCreateInfo const &lhs, + VkDescriptorUpdateTemplateCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkXYColorEXT const &lhs, + VkXYColorEXT const &rhs) noexcept { + return (lhs.x == rhs.x) && + (lhs.y == rhs.y); +} + +bool operator!=(VkXYColorEXT const &lhs, + VkXYColorEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDevicePresentIdFeaturesKHR const &lhs, + VkPhysicalDevicePresentIdFeaturesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.presentId == rhs.presentId); +} + +bool operator!=(VkPhysicalDevicePresentIdFeaturesKHR const &lhs, + VkPhysicalDevicePresentIdFeaturesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPresentIdKHR const &lhs, + VkPresentIdKHR const &rhs) noexcept { + if(lhs.swapchainCount != rhs.swapchainCount) + return false; + + for(uint32_t i = 0; i < lhs.swapchainCount; ++i) { + if(lhs.pPresentIds[i] != rhs.pPresentIds[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkPresentIdKHR const &lhs, + VkPresentIdKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDevicePresentWaitFeaturesKHR const &lhs, + VkPhysicalDevicePresentWaitFeaturesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.presentWait == rhs.presentWait); +} + +bool operator!=(VkPhysicalDevicePresentWaitFeaturesKHR const &lhs, + VkPhysicalDevicePresentWaitFeaturesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkHdrMetadataEXT const &lhs, + VkHdrMetadataEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.displayPrimaryRed == rhs.displayPrimaryRed) && + (lhs.displayPrimaryGreen == rhs.displayPrimaryGreen) && + (lhs.displayPrimaryBlue == rhs.displayPrimaryBlue) && + (lhs.whitePoint == rhs.whitePoint) && + (lhs.maxLuminance == rhs.maxLuminance) && + (lhs.minLuminance == rhs.minLuminance) && + (lhs.maxContentLightLevel == rhs.maxContentLightLevel) && + (lhs.maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel); +} + +bool operator!=(VkHdrMetadataEXT const &lhs, + VkHdrMetadataEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDisplayNativeHdrSurfaceCapabilitiesAMD const &lhs, + VkDisplayNativeHdrSurfaceCapabilitiesAMD const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.localDimmingSupport == rhs.localDimmingSupport); +} + +bool operator!=(VkDisplayNativeHdrSurfaceCapabilitiesAMD const &lhs, + VkDisplayNativeHdrSurfaceCapabilitiesAMD const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSwapchainDisplayNativeHdrCreateInfoAMD const &lhs, + VkSwapchainDisplayNativeHdrCreateInfoAMD const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.localDimmingEnable == rhs.localDimmingEnable); +} + +bool operator!=(VkSwapchainDisplayNativeHdrCreateInfoAMD const &lhs, + VkSwapchainDisplayNativeHdrCreateInfoAMD const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkRefreshCycleDurationGOOGLE const &lhs, + VkRefreshCycleDurationGOOGLE const &rhs) noexcept { + return (lhs.refreshDuration == rhs.refreshDuration); +} + +bool operator!=(VkRefreshCycleDurationGOOGLE const &lhs, + VkRefreshCycleDurationGOOGLE const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPastPresentationTimingGOOGLE const &lhs, + VkPastPresentationTimingGOOGLE const &rhs) noexcept { + return (lhs.presentID == rhs.presentID) && + (lhs.desiredPresentTime == rhs.desiredPresentTime) && + (lhs.actualPresentTime == rhs.actualPresentTime) && + (lhs.earliestPresentTime == rhs.earliestPresentTime) && + (lhs.presentMargin == rhs.presentMargin); +} + +bool operator!=(VkPastPresentationTimingGOOGLE const &lhs, + VkPastPresentationTimingGOOGLE const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPresentTimesInfoGOOGLE const &lhs, + VkPresentTimesInfoGOOGLE const &rhs) noexcept { + if(lhs.swapchainCount != rhs.swapchainCount) + return false; + + for(uint32_t i = 0; i < lhs.swapchainCount; ++i) { + if(lhs.pTimes[i] != rhs.pTimes[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkPresentTimesInfoGOOGLE const &lhs, + VkPresentTimesInfoGOOGLE const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPresentTimeGOOGLE const &lhs, + VkPresentTimeGOOGLE const &rhs) noexcept { + return (lhs.presentID == rhs.presentID) && + (lhs.desiredPresentTime == rhs.desiredPresentTime); +} + +bool operator!=(VkPresentTimeGOOGLE const &lhs, + VkPresentTimeGOOGLE const &rhs) noexcept { + return !(lhs == rhs); +} + +#ifdef VK_USE_PLATFORM_IOS_MVK +bool operator==(VkIOSSurfaceCreateInfoMVK const &lhs, + VkIOSSurfaceCreateInfoMVK const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.pView == rhs.pView); +} + +bool operator!=(VkIOSSurfaceCreateInfoMVK const &lhs, + VkIOSSurfaceCreateInfoMVK const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_IOS_MVK + +#ifdef VK_USE_PLATFORM_MACOS_MVK +bool operator==(VkMacOSSurfaceCreateInfoMVK const &lhs, + VkMacOSSurfaceCreateInfoMVK const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.pView == rhs.pView); +} + +bool operator!=(VkMacOSSurfaceCreateInfoMVK const &lhs, + VkMacOSSurfaceCreateInfoMVK const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_MACOS_MVK + +#ifdef VK_USE_PLATFORM_METAL_EXT +bool operator==(VkMetalSurfaceCreateInfoEXT const &lhs, + VkMetalSurfaceCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.pLayer == rhs.pLayer); +} + +bool operator!=(VkMetalSurfaceCreateInfoEXT const &lhs, + VkMetalSurfaceCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_METAL_EXT + +bool operator==(VkViewportWScalingNV const &lhs, + VkViewportWScalingNV const &rhs) noexcept { + return (lhs.xcoeff == rhs.xcoeff) && + (lhs.ycoeff == rhs.ycoeff); +} + +bool operator!=(VkViewportWScalingNV const &lhs, + VkViewportWScalingNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineViewportWScalingStateCreateInfoNV const &lhs, + VkPipelineViewportWScalingStateCreateInfoNV const &rhs) noexcept { + if(lhs.viewportCount != rhs.viewportCount) + return false; + + for(uint32_t i = 0; i < lhs.viewportCount; ++i) { + if(lhs.pViewportWScalings[i] != rhs.pViewportWScalings[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.viewportWScalingEnable == rhs.viewportWScalingEnable); +} + +bool operator!=(VkPipelineViewportWScalingStateCreateInfoNV const &lhs, + VkPipelineViewportWScalingStateCreateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkViewportSwizzleNV const &lhs, + VkViewportSwizzleNV const &rhs) noexcept { + return (lhs.x == rhs.x) && + (lhs.y == rhs.y) && + (lhs.z == rhs.z) && + (lhs.w == rhs.w); +} + +bool operator!=(VkViewportSwizzleNV const &lhs, + VkViewportSwizzleNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineViewportSwizzleStateCreateInfoNV const &lhs, + VkPipelineViewportSwizzleStateCreateInfoNV const &rhs) noexcept { + if(lhs.viewportCount != rhs.viewportCount) + return false; + + for(uint32_t i = 0; i < lhs.viewportCount; ++i) { + if(lhs.pViewportSwizzles[i] != rhs.pViewportSwizzles[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkPipelineViewportSwizzleStateCreateInfoNV const &lhs, + VkPipelineViewportSwizzleStateCreateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceDiscardRectanglePropertiesEXT const &lhs, + VkPhysicalDeviceDiscardRectanglePropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxDiscardRectangles == rhs.maxDiscardRectangles); +} + +bool operator!=(VkPhysicalDeviceDiscardRectanglePropertiesEXT const &lhs, + VkPhysicalDeviceDiscardRectanglePropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineDiscardRectangleStateCreateInfoEXT const &lhs, + VkPipelineDiscardRectangleStateCreateInfoEXT const &rhs) noexcept { + if(lhs.discardRectangleCount != rhs.discardRectangleCount) + return false; + + for(uint32_t i = 0; i < lhs.discardRectangleCount; ++i) { + if(lhs.pDiscardRectangles[i] != rhs.pDiscardRectangles[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.discardRectangleMode == rhs.discardRectangleMode); +} + +bool operator!=(VkPipelineDiscardRectangleStateCreateInfoEXT const &lhs, + VkPipelineDiscardRectangleStateCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const &lhs, + VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.perViewPositionAllComponents == rhs.perViewPositionAllComponents); +} + +bool operator!=(VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const &lhs, + VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkInputAttachmentAspectReference const &lhs, + VkInputAttachmentAspectReference const &rhs) noexcept { + return (lhs.subpass == rhs.subpass) && + (lhs.inputAttachmentIndex == rhs.inputAttachmentIndex) && + (lhs.aspectMask == rhs.aspectMask); +} + +bool operator!=(VkInputAttachmentAspectReference const &lhs, + VkInputAttachmentAspectReference const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkRenderPassInputAttachmentAspectCreateInfo const &lhs, + VkRenderPassInputAttachmentAspectCreateInfo const &rhs) noexcept { + if(lhs.aspectReferenceCount != rhs.aspectReferenceCount) + return false; + + for(uint32_t i = 0; i < lhs.aspectReferenceCount; ++i) { + if(lhs.pAspectReferences[i] != rhs.pAspectReferences[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkRenderPassInputAttachmentAspectCreateInfo const &lhs, + VkRenderPassInputAttachmentAspectCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceSurfaceInfo2KHR const &lhs, + VkPhysicalDeviceSurfaceInfo2KHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.surface == rhs.surface); +} + +bool operator!=(VkPhysicalDeviceSurfaceInfo2KHR const &lhs, + VkPhysicalDeviceSurfaceInfo2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSurfaceCapabilities2KHR const &lhs, + VkSurfaceCapabilities2KHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.surfaceCapabilities == rhs.surfaceCapabilities); +} + +bool operator!=(VkSurfaceCapabilities2KHR const &lhs, + VkSurfaceCapabilities2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSurfaceFormat2KHR const &lhs, + VkSurfaceFormat2KHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.surfaceFormat == rhs.surfaceFormat); +} + +bool operator!=(VkSurfaceFormat2KHR const &lhs, + VkSurfaceFormat2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDisplayProperties2KHR const &lhs, + VkDisplayProperties2KHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.displayProperties == rhs.displayProperties); +} + +bool operator!=(VkDisplayProperties2KHR const &lhs, + VkDisplayProperties2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDisplayPlaneProperties2KHR const &lhs, + VkDisplayPlaneProperties2KHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.displayPlaneProperties == rhs.displayPlaneProperties); +} + +bool operator!=(VkDisplayPlaneProperties2KHR const &lhs, + VkDisplayPlaneProperties2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDisplayModeProperties2KHR const &lhs, + VkDisplayModeProperties2KHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.displayModeProperties == rhs.displayModeProperties); +} + +bool operator!=(VkDisplayModeProperties2KHR const &lhs, + VkDisplayModeProperties2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDisplayPlaneInfo2KHR const &lhs, + VkDisplayPlaneInfo2KHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.mode == rhs.mode) && + (lhs.planeIndex == rhs.planeIndex); +} + +bool operator!=(VkDisplayPlaneInfo2KHR const &lhs, + VkDisplayPlaneInfo2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDisplayPlaneCapabilities2KHR const &lhs, + VkDisplayPlaneCapabilities2KHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.capabilities == rhs.capabilities); +} + +bool operator!=(VkDisplayPlaneCapabilities2KHR const &lhs, + VkDisplayPlaneCapabilities2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSharedPresentSurfaceCapabilitiesKHR const &lhs, + VkSharedPresentSurfaceCapabilitiesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.sharedPresentSupportedUsageFlags == rhs.sharedPresentSupportedUsageFlags); +} + +bool operator!=(VkSharedPresentSurfaceCapabilitiesKHR const &lhs, + VkSharedPresentSurfaceCapabilitiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDevice16BitStorageFeatures const &lhs, + VkPhysicalDevice16BitStorageFeatures const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.storageBuffer16BitAccess == rhs.storageBuffer16BitAccess) && + (lhs.uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess) && + (lhs.storagePushConstant16 == rhs.storagePushConstant16) && + (lhs.storageInputOutput16 == rhs.storageInputOutput16); +} + +bool operator!=(VkPhysicalDevice16BitStorageFeatures const &lhs, + VkPhysicalDevice16BitStorageFeatures const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceSubgroupProperties const &lhs, + VkPhysicalDeviceSubgroupProperties const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.subgroupSize == rhs.subgroupSize) && + (lhs.supportedStages == rhs.supportedStages) && + (lhs.supportedOperations == rhs.supportedOperations) && + (lhs.quadOperationsInAllStages == rhs.quadOperationsInAllStages); +} + +bool operator!=(VkPhysicalDeviceSubgroupProperties const &lhs, + VkPhysicalDeviceSubgroupProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const &lhs, + VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shaderSubgroupExtendedTypes == rhs.shaderSubgroupExtendedTypes); +} + +bool operator!=(VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const &lhs, + VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBufferMemoryRequirementsInfo2 const &lhs, + VkBufferMemoryRequirementsInfo2 const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.buffer == rhs.buffer); +} + +bool operator!=(VkBufferMemoryRequirementsInfo2 const &lhs, + VkBufferMemoryRequirementsInfo2 const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDeviceBufferMemoryRequirementsKHR const &lhs, + VkDeviceBufferMemoryRequirementsKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pCreateInfo == rhs.pCreateInfo); +} + +bool operator!=(VkDeviceBufferMemoryRequirementsKHR const &lhs, + VkDeviceBufferMemoryRequirementsKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageMemoryRequirementsInfo2 const &lhs, + VkImageMemoryRequirementsInfo2 const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.image == rhs.image); +} + +bool operator!=(VkImageMemoryRequirementsInfo2 const &lhs, + VkImageMemoryRequirementsInfo2 const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageSparseMemoryRequirementsInfo2 const &lhs, + VkImageSparseMemoryRequirementsInfo2 const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.image == rhs.image); +} + +bool operator!=(VkImageSparseMemoryRequirementsInfo2 const &lhs, + VkImageSparseMemoryRequirementsInfo2 const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDeviceImageMemoryRequirementsKHR const &lhs, + VkDeviceImageMemoryRequirementsKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pCreateInfo == rhs.pCreateInfo) && + (lhs.planeAspect == rhs.planeAspect); +} + +bool operator!=(VkDeviceImageMemoryRequirementsKHR const &lhs, + VkDeviceImageMemoryRequirementsKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMemoryRequirements2 const &lhs, + VkMemoryRequirements2 const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.memoryRequirements == rhs.memoryRequirements); +} + +bool operator!=(VkMemoryRequirements2 const &lhs, + VkMemoryRequirements2 const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSparseImageMemoryRequirements2 const &lhs, + VkSparseImageMemoryRequirements2 const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.memoryRequirements == rhs.memoryRequirements); +} + +bool operator!=(VkSparseImageMemoryRequirements2 const &lhs, + VkSparseImageMemoryRequirements2 const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDevicePointClippingProperties const &lhs, + VkPhysicalDevicePointClippingProperties const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pointClippingBehavior == rhs.pointClippingBehavior); +} + +bool operator!=(VkPhysicalDevicePointClippingProperties const &lhs, + VkPhysicalDevicePointClippingProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMemoryDedicatedRequirements const &lhs, + VkMemoryDedicatedRequirements const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.prefersDedicatedAllocation == rhs.prefersDedicatedAllocation) && + (lhs.requiresDedicatedAllocation == rhs.requiresDedicatedAllocation); +} + +bool operator!=(VkMemoryDedicatedRequirements const &lhs, + VkMemoryDedicatedRequirements const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMemoryDedicatedAllocateInfo const &lhs, + VkMemoryDedicatedAllocateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.image == rhs.image) && + (lhs.buffer == rhs.buffer); +} + +bool operator!=(VkMemoryDedicatedAllocateInfo const &lhs, + VkMemoryDedicatedAllocateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageViewUsageCreateInfo const &lhs, + VkImageViewUsageCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.usage == rhs.usage); +} + +bool operator!=(VkImageViewUsageCreateInfo const &lhs, + VkImageViewUsageCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineTessellationDomainOriginStateCreateInfo const &lhs, + VkPipelineTessellationDomainOriginStateCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.domainOrigin == rhs.domainOrigin); +} + +bool operator!=(VkPipelineTessellationDomainOriginStateCreateInfo const &lhs, + VkPipelineTessellationDomainOriginStateCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSamplerYcbcrConversionInfo const &lhs, + VkSamplerYcbcrConversionInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.conversion == rhs.conversion); +} + +bool operator!=(VkSamplerYcbcrConversionInfo const &lhs, + VkSamplerYcbcrConversionInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSamplerYcbcrConversionCreateInfo const &lhs, + VkSamplerYcbcrConversionCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.format == rhs.format) && + (lhs.ycbcrModel == rhs.ycbcrModel) && + (lhs.ycbcrRange == rhs.ycbcrRange) && + (lhs.components == rhs.components) && + (lhs.xChromaOffset == rhs.xChromaOffset) && + (lhs.yChromaOffset == rhs.yChromaOffset) && + (lhs.chromaFilter == rhs.chromaFilter) && + (lhs.forceExplicitReconstruction == rhs.forceExplicitReconstruction); +} + +bool operator!=(VkSamplerYcbcrConversionCreateInfo const &lhs, + VkSamplerYcbcrConversionCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBindImagePlaneMemoryInfo const &lhs, + VkBindImagePlaneMemoryInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.planeAspect == rhs.planeAspect); +} + +bool operator!=(VkBindImagePlaneMemoryInfo const &lhs, + VkBindImagePlaneMemoryInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImagePlaneMemoryRequirementsInfo const &lhs, + VkImagePlaneMemoryRequirementsInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.planeAspect == rhs.planeAspect); +} + +bool operator!=(VkImagePlaneMemoryRequirementsInfo const &lhs, + VkImagePlaneMemoryRequirementsInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceSamplerYcbcrConversionFeatures const &lhs, + VkPhysicalDeviceSamplerYcbcrConversionFeatures const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.samplerYcbcrConversion == rhs.samplerYcbcrConversion); +} + +bool operator!=(VkPhysicalDeviceSamplerYcbcrConversionFeatures const &lhs, + VkPhysicalDeviceSamplerYcbcrConversionFeatures const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSamplerYcbcrConversionImageFormatProperties const &lhs, + VkSamplerYcbcrConversionImageFormatProperties const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.combinedImageSamplerDescriptorCount == rhs.combinedImageSamplerDescriptorCount); +} + +bool operator!=(VkSamplerYcbcrConversionImageFormatProperties const &lhs, + VkSamplerYcbcrConversionImageFormatProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkTextureLODGatherFormatPropertiesAMD const &lhs, + VkTextureLODGatherFormatPropertiesAMD const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.supportsTextureGatherLODBiasAMD == rhs.supportsTextureGatherLODBiasAMD); +} + +bool operator!=(VkTextureLODGatherFormatPropertiesAMD const &lhs, + VkTextureLODGatherFormatPropertiesAMD const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkConditionalRenderingBeginInfoEXT const &lhs, + VkConditionalRenderingBeginInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.buffer == rhs.buffer) && + (lhs.offset == rhs.offset) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkConditionalRenderingBeginInfoEXT const &lhs, + VkConditionalRenderingBeginInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkProtectedSubmitInfo const &lhs, + VkProtectedSubmitInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.protectedSubmit == rhs.protectedSubmit); +} + +bool operator!=(VkProtectedSubmitInfo const &lhs, + VkProtectedSubmitInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceProtectedMemoryFeatures const &lhs, + VkPhysicalDeviceProtectedMemoryFeatures const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.protectedMemory == rhs.protectedMemory); +} + +bool operator!=(VkPhysicalDeviceProtectedMemoryFeatures const &lhs, + VkPhysicalDeviceProtectedMemoryFeatures const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceProtectedMemoryProperties const &lhs, + VkPhysicalDeviceProtectedMemoryProperties const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.protectedNoFault == rhs.protectedNoFault); +} + +bool operator!=(VkPhysicalDeviceProtectedMemoryProperties const &lhs, + VkPhysicalDeviceProtectedMemoryProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDeviceQueueInfo2 const &lhs, + VkDeviceQueueInfo2 const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.queueFamilyIndex == rhs.queueFamilyIndex) && + (lhs.queueIndex == rhs.queueIndex); +} + +bool operator!=(VkDeviceQueueInfo2 const &lhs, + VkDeviceQueueInfo2 const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineCoverageToColorStateCreateInfoNV const &lhs, + VkPipelineCoverageToColorStateCreateInfoNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.coverageToColorEnable == rhs.coverageToColorEnable) && + (lhs.coverageToColorLocation == rhs.coverageToColorLocation); +} + +bool operator!=(VkPipelineCoverageToColorStateCreateInfoNV const &lhs, + VkPipelineCoverageToColorStateCreateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceSamplerFilterMinmaxProperties const &lhs, + VkPhysicalDeviceSamplerFilterMinmaxProperties const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats) && + (lhs.filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping); +} + +bool operator!=(VkPhysicalDeviceSamplerFilterMinmaxProperties const &lhs, + VkPhysicalDeviceSamplerFilterMinmaxProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSampleLocationEXT const &lhs, + VkSampleLocationEXT const &rhs) noexcept { + return (lhs.x == rhs.x) && + (lhs.y == rhs.y); +} + +bool operator!=(VkSampleLocationEXT const &lhs, + VkSampleLocationEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSampleLocationsInfoEXT const &lhs, + VkSampleLocationsInfoEXT const &rhs) noexcept { + if(lhs.sampleLocationsCount != rhs.sampleLocationsCount) + return false; + + for(uint32_t i = 0; i < lhs.sampleLocationsCount; ++i) { + if(lhs.pSampleLocations[i] != rhs.pSampleLocations[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.sampleLocationsPerPixel == rhs.sampleLocationsPerPixel) && + (lhs.sampleLocationGridSize == rhs.sampleLocationGridSize); +} + +bool operator!=(VkSampleLocationsInfoEXT const &lhs, + VkSampleLocationsInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAttachmentSampleLocationsEXT const &lhs, + VkAttachmentSampleLocationsEXT const &rhs) noexcept { + return (lhs.attachmentIndex == rhs.attachmentIndex) && + (lhs.sampleLocationsInfo == rhs.sampleLocationsInfo); +} + +bool operator!=(VkAttachmentSampleLocationsEXT const &lhs, + VkAttachmentSampleLocationsEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSubpassSampleLocationsEXT const &lhs, + VkSubpassSampleLocationsEXT const &rhs) noexcept { + return (lhs.subpassIndex == rhs.subpassIndex) && + (lhs.sampleLocationsInfo == rhs.sampleLocationsInfo); +} + +bool operator!=(VkSubpassSampleLocationsEXT const &lhs, + VkSubpassSampleLocationsEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkRenderPassSampleLocationsBeginInfoEXT const &lhs, + VkRenderPassSampleLocationsBeginInfoEXT const &rhs) noexcept { + if(lhs.attachmentInitialSampleLocationsCount != rhs.attachmentInitialSampleLocationsCount) + return false; + + if(lhs.postSubpassSampleLocationsCount != rhs.postSubpassSampleLocationsCount) + return false; + + for(uint32_t i = 0; i < lhs.attachmentInitialSampleLocationsCount; ++i) { + if(lhs.pAttachmentInitialSampleLocations[i] != rhs.pAttachmentInitialSampleLocations[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.postSubpassSampleLocationsCount; ++i) { + if(lhs.pPostSubpassSampleLocations[i] != rhs.pPostSubpassSampleLocations[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkRenderPassSampleLocationsBeginInfoEXT const &lhs, + VkRenderPassSampleLocationsBeginInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineSampleLocationsStateCreateInfoEXT const &lhs, + VkPipelineSampleLocationsStateCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.sampleLocationsEnable == rhs.sampleLocationsEnable) && + (lhs.sampleLocationsInfo == rhs.sampleLocationsInfo); +} + +bool operator!=(VkPipelineSampleLocationsStateCreateInfoEXT const &lhs, + VkPipelineSampleLocationsStateCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceSampleLocationsPropertiesEXT const &lhs, + VkPhysicalDeviceSampleLocationsPropertiesEXT const &rhs) noexcept { + for(uint32_t i = 0; i < 2; ++i) { + if(lhs.sampleLocationCoordinateRange[i] != rhs.sampleLocationCoordinateRange[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.sampleLocationSampleCounts == rhs.sampleLocationSampleCounts) && + (lhs.maxSampleLocationGridSize == rhs.maxSampleLocationGridSize) && + (lhs.sampleLocationSubPixelBits == rhs.sampleLocationSubPixelBits) && + (lhs.variableSampleLocations == rhs.variableSampleLocations); +} + +bool operator!=(VkPhysicalDeviceSampleLocationsPropertiesEXT const &lhs, + VkPhysicalDeviceSampleLocationsPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMultisamplePropertiesEXT const &lhs, + VkMultisamplePropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxSampleLocationGridSize == rhs.maxSampleLocationGridSize); +} + +bool operator!=(VkMultisamplePropertiesEXT const &lhs, + VkMultisamplePropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSamplerReductionModeCreateInfo const &lhs, + VkSamplerReductionModeCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.reductionMode == rhs.reductionMode); +} + +bool operator!=(VkSamplerReductionModeCreateInfo const &lhs, + VkSamplerReductionModeCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const &lhs, + VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.advancedBlendCoherentOperations == rhs.advancedBlendCoherentOperations); +} + +bool operator!=(VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const &lhs, + VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceMultiDrawFeaturesEXT const &lhs, + VkPhysicalDeviceMultiDrawFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.multiDraw == rhs.multiDraw); +} + +bool operator!=(VkPhysicalDeviceMultiDrawFeaturesEXT const &lhs, + VkPhysicalDeviceMultiDrawFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const &lhs, + VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.advancedBlendMaxColorAttachments == rhs.advancedBlendMaxColorAttachments) && + (lhs.advancedBlendIndependentBlend == rhs.advancedBlendIndependentBlend) && + (lhs.advancedBlendNonPremultipliedSrcColor == rhs.advancedBlendNonPremultipliedSrcColor) && + (lhs.advancedBlendNonPremultipliedDstColor == rhs.advancedBlendNonPremultipliedDstColor) && + (lhs.advancedBlendCorrelatedOverlap == rhs.advancedBlendCorrelatedOverlap) && + (lhs.advancedBlendAllOperations == rhs.advancedBlendAllOperations); +} + +bool operator!=(VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const &lhs, + VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineColorBlendAdvancedStateCreateInfoEXT const &lhs, + VkPipelineColorBlendAdvancedStateCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.srcPremultiplied == rhs.srcPremultiplied) && + (lhs.dstPremultiplied == rhs.dstPremultiplied) && + (lhs.blendOverlap == rhs.blendOverlap); +} + +bool operator!=(VkPipelineColorBlendAdvancedStateCreateInfoEXT const &lhs, + VkPipelineColorBlendAdvancedStateCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceInlineUniformBlockFeaturesEXT const &lhs, + VkPhysicalDeviceInlineUniformBlockFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.inlineUniformBlock == rhs.inlineUniformBlock) && + (lhs.descriptorBindingInlineUniformBlockUpdateAfterBind == rhs.descriptorBindingInlineUniformBlockUpdateAfterBind); +} + +bool operator!=(VkPhysicalDeviceInlineUniformBlockFeaturesEXT const &lhs, + VkPhysicalDeviceInlineUniformBlockFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceInlineUniformBlockPropertiesEXT const &lhs, + VkPhysicalDeviceInlineUniformBlockPropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxInlineUniformBlockSize == rhs.maxInlineUniformBlockSize) && + (lhs.maxPerStageDescriptorInlineUniformBlocks == rhs.maxPerStageDescriptorInlineUniformBlocks) && + (lhs.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks == rhs.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks) && + (lhs.maxDescriptorSetInlineUniformBlocks == rhs.maxDescriptorSetInlineUniformBlocks) && + (lhs.maxDescriptorSetUpdateAfterBindInlineUniformBlocks == rhs.maxDescriptorSetUpdateAfterBindInlineUniformBlocks); +} + +bool operator!=(VkPhysicalDeviceInlineUniformBlockPropertiesEXT const &lhs, + VkPhysicalDeviceInlineUniformBlockPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkWriteDescriptorSetInlineUniformBlockEXT const &lhs, + VkWriteDescriptorSetInlineUniformBlockEXT const &rhs) noexcept { + if(lhs.dataSize != rhs.dataSize) + return false; + + if(memcmp(lhs.pData, rhs.pData, lhs.dataSize) != 0) + return false; + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkWriteDescriptorSetInlineUniformBlockEXT const &lhs, + VkWriteDescriptorSetInlineUniformBlockEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDescriptorPoolInlineUniformBlockCreateInfoEXT const &lhs, + VkDescriptorPoolInlineUniformBlockCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxInlineUniformBlockBindings == rhs.maxInlineUniformBlockBindings); +} + +bool operator!=(VkDescriptorPoolInlineUniformBlockCreateInfoEXT const &lhs, + VkDescriptorPoolInlineUniformBlockCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineCoverageModulationStateCreateInfoNV const &lhs, + VkPipelineCoverageModulationStateCreateInfoNV const &rhs) noexcept { + if(lhs.coverageModulationTableCount != rhs.coverageModulationTableCount) + return false; + + for(uint32_t i = 0; i < lhs.coverageModulationTableCount; ++i) { + if(lhs.pCoverageModulationTable[i] != rhs.pCoverageModulationTable[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.coverageModulationMode == rhs.coverageModulationMode) && + (lhs.coverageModulationTableEnable == rhs.coverageModulationTableEnable); +} + +bool operator!=(VkPipelineCoverageModulationStateCreateInfoNV const &lhs, + VkPipelineCoverageModulationStateCreateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageFormatListCreateInfo const &lhs, + VkImageFormatListCreateInfo const &rhs) noexcept { + if(lhs.viewFormatCount != rhs.viewFormatCount) + return false; + + for(uint32_t i = 0; i < lhs.viewFormatCount; ++i) { + if(lhs.pViewFormats[i] != rhs.pViewFormats[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkImageFormatListCreateInfo const &lhs, + VkImageFormatListCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkValidationCacheCreateInfoEXT const &lhs, + VkValidationCacheCreateInfoEXT const &rhs) noexcept { + if(lhs.initialDataSize != rhs.initialDataSize) + return false; + + if(memcmp(lhs.pInitialData, rhs.pInitialData, lhs.initialDataSize) != 0) + return false; + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkValidationCacheCreateInfoEXT const &lhs, + VkValidationCacheCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkShaderModuleValidationCacheCreateInfoEXT const &lhs, + VkShaderModuleValidationCacheCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.validationCache == rhs.validationCache); +} + +bool operator!=(VkShaderModuleValidationCacheCreateInfoEXT const &lhs, + VkShaderModuleValidationCacheCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceMaintenance3Properties const &lhs, + VkPhysicalDeviceMaintenance3Properties const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxPerSetDescriptors == rhs.maxPerSetDescriptors) && + (lhs.maxMemoryAllocationSize == rhs.maxMemoryAllocationSize); +} + +bool operator!=(VkPhysicalDeviceMaintenance3Properties const &lhs, + VkPhysicalDeviceMaintenance3Properties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceMaintenance4FeaturesKHR const &lhs, + VkPhysicalDeviceMaintenance4FeaturesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maintenance4 == rhs.maintenance4); +} + +bool operator!=(VkPhysicalDeviceMaintenance4FeaturesKHR const &lhs, + VkPhysicalDeviceMaintenance4FeaturesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceMaintenance4PropertiesKHR const &lhs, + VkPhysicalDeviceMaintenance4PropertiesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxBufferSize == rhs.maxBufferSize); +} + +bool operator!=(VkPhysicalDeviceMaintenance4PropertiesKHR const &lhs, + VkPhysicalDeviceMaintenance4PropertiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDescriptorSetLayoutSupport const &lhs, + VkDescriptorSetLayoutSupport const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.supported == rhs.supported); +} + +bool operator!=(VkDescriptorSetLayoutSupport const &lhs, + VkDescriptorSetLayoutSupport const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceShaderDrawParametersFeatures const &lhs, + VkPhysicalDeviceShaderDrawParametersFeatures const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shaderDrawParameters == rhs.shaderDrawParameters); +} + +bool operator!=(VkPhysicalDeviceShaderDrawParametersFeatures const &lhs, + VkPhysicalDeviceShaderDrawParametersFeatures const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceShaderFloat16Int8Features const &lhs, + VkPhysicalDeviceShaderFloat16Int8Features const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shaderFloat16 == rhs.shaderFloat16) && + (lhs.shaderInt8 == rhs.shaderInt8); +} + +bool operator!=(VkPhysicalDeviceShaderFloat16Int8Features const &lhs, + VkPhysicalDeviceShaderFloat16Int8Features const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceFloatControlsProperties const &lhs, + VkPhysicalDeviceFloatControlsProperties const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.denormBehaviorIndependence == rhs.denormBehaviorIndependence) && + (lhs.roundingModeIndependence == rhs.roundingModeIndependence) && + (lhs.shaderSignedZeroInfNanPreserveFloat16 == rhs.shaderSignedZeroInfNanPreserveFloat16) && + (lhs.shaderSignedZeroInfNanPreserveFloat32 == rhs.shaderSignedZeroInfNanPreserveFloat32) && + (lhs.shaderSignedZeroInfNanPreserveFloat64 == rhs.shaderSignedZeroInfNanPreserveFloat64) && + (lhs.shaderDenormPreserveFloat16 == rhs.shaderDenormPreserveFloat16) && + (lhs.shaderDenormPreserveFloat32 == rhs.shaderDenormPreserveFloat32) && + (lhs.shaderDenormPreserveFloat64 == rhs.shaderDenormPreserveFloat64) && + (lhs.shaderDenormFlushToZeroFloat16 == rhs.shaderDenormFlushToZeroFloat16) && + (lhs.shaderDenormFlushToZeroFloat32 == rhs.shaderDenormFlushToZeroFloat32) && + (lhs.shaderDenormFlushToZeroFloat64 == rhs.shaderDenormFlushToZeroFloat64) && + (lhs.shaderRoundingModeRTEFloat16 == rhs.shaderRoundingModeRTEFloat16) && + (lhs.shaderRoundingModeRTEFloat32 == rhs.shaderRoundingModeRTEFloat32) && + (lhs.shaderRoundingModeRTEFloat64 == rhs.shaderRoundingModeRTEFloat64) && + (lhs.shaderRoundingModeRTZFloat16 == rhs.shaderRoundingModeRTZFloat16) && + (lhs.shaderRoundingModeRTZFloat32 == rhs.shaderRoundingModeRTZFloat32) && + (lhs.shaderRoundingModeRTZFloat64 == rhs.shaderRoundingModeRTZFloat64); +} + +bool operator!=(VkPhysicalDeviceFloatControlsProperties const &lhs, + VkPhysicalDeviceFloatControlsProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceHostQueryResetFeatures const &lhs, + VkPhysicalDeviceHostQueryResetFeatures const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.hostQueryReset == rhs.hostQueryReset); +} + +bool operator!=(VkPhysicalDeviceHostQueryResetFeatures const &lhs, + VkPhysicalDeviceHostQueryResetFeatures const &rhs) noexcept { + return !(lhs == rhs); +} + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkNativeBufferUsage2ANDROID const &lhs, + VkNativeBufferUsage2ANDROID const &rhs) noexcept { + return (lhs.consumer == rhs.consumer) && + (lhs.producer == rhs.producer); +} + +bool operator!=(VkNativeBufferUsage2ANDROID const &lhs, + VkNativeBufferUsage2ANDROID const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkNativeBufferANDROID const &lhs, + VkNativeBufferANDROID const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.handle == rhs.handle) && + (lhs.stride == rhs.stride) && + (lhs.format == rhs.format) && + (lhs.usage == rhs.usage) && + (lhs.usage2 == rhs.usage2); +} + +bool operator!=(VkNativeBufferANDROID const &lhs, + VkNativeBufferANDROID const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkSwapchainImageCreateInfoANDROID const &lhs, + VkSwapchainImageCreateInfoANDROID const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.usage == rhs.usage); +} + +bool operator!=(VkSwapchainImageCreateInfoANDROID const &lhs, + VkSwapchainImageCreateInfoANDROID const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkPhysicalDevicePresentationPropertiesANDROID const &lhs, + VkPhysicalDevicePresentationPropertiesANDROID const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.sharedImage == rhs.sharedImage); +} + +bool operator!=(VkPhysicalDevicePresentationPropertiesANDROID const &lhs, + VkPhysicalDevicePresentationPropertiesANDROID const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_ANDROID_KHR + +bool operator==(VkShaderResourceUsageAMD const &lhs, + VkShaderResourceUsageAMD const &rhs) noexcept { + return (lhs.numUsedVgprs == rhs.numUsedVgprs) && + (lhs.numUsedSgprs == rhs.numUsedSgprs) && + (lhs.ldsSizePerLocalWorkGroup == rhs.ldsSizePerLocalWorkGroup) && + (lhs.ldsUsageSizeInBytes == rhs.ldsUsageSizeInBytes) && + (lhs.scratchMemUsageInBytes == rhs.scratchMemUsageInBytes); +} + +bool operator!=(VkShaderResourceUsageAMD const &lhs, + VkShaderResourceUsageAMD const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkShaderStatisticsInfoAMD const &lhs, + VkShaderStatisticsInfoAMD const &rhs) noexcept { + for(uint32_t i = 0; i < 3; ++i) { + if(lhs.computeWorkGroupSize[i] != rhs.computeWorkGroupSize[i]) + return false; + } + + return (lhs.shaderStageMask == rhs.shaderStageMask) && + (lhs.resourceUsage == rhs.resourceUsage) && + (lhs.numPhysicalVgprs == rhs.numPhysicalVgprs) && + (lhs.numPhysicalSgprs == rhs.numPhysicalSgprs) && + (lhs.numAvailableVgprs == rhs.numAvailableVgprs) && + (lhs.numAvailableSgprs == rhs.numAvailableSgprs); +} + +bool operator!=(VkShaderStatisticsInfoAMD const &lhs, + VkShaderStatisticsInfoAMD const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDeviceQueueGlobalPriorityCreateInfoEXT const &lhs, + VkDeviceQueueGlobalPriorityCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.globalPriority == rhs.globalPriority); +} + +bool operator!=(VkDeviceQueueGlobalPriorityCreateInfoEXT const &lhs, + VkDeviceQueueGlobalPriorityCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT const &lhs, + VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.globalPriorityQuery == rhs.globalPriorityQuery); +} + +bool operator!=(VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT const &lhs, + VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkQueueFamilyGlobalPriorityPropertiesEXT const &lhs, + VkQueueFamilyGlobalPriorityPropertiesEXT const &rhs) noexcept { + for(uint32_t i = 0; i < VK_MAX_GLOBAL_PRIORITY_SIZE_EXT; ++i) { + if(lhs.priorities[i] != rhs.priorities[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.priorityCount == rhs.priorityCount); +} + +bool operator!=(VkQueueFamilyGlobalPriorityPropertiesEXT const &lhs, + VkQueueFamilyGlobalPriorityPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDebugUtilsObjectNameInfoEXT const &lhs, + VkDebugUtilsObjectNameInfoEXT const &rhs) noexcept { + if (lhs.pObjectName != rhs.pObjectName) { + if(lhs.pObjectName == nullptr || rhs.pObjectName == nullptr) + return false; + if(strcmp(lhs.pObjectName, rhs.pObjectName) != 0) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.objectType == rhs.objectType) && + (lhs.objectHandle == rhs.objectHandle); +} + +bool operator!=(VkDebugUtilsObjectNameInfoEXT const &lhs, + VkDebugUtilsObjectNameInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDebugUtilsObjectTagInfoEXT const &lhs, + VkDebugUtilsObjectTagInfoEXT const &rhs) noexcept { + if(lhs.tagSize != rhs.tagSize) + return false; + + if(memcmp(lhs.pTag, rhs.pTag, lhs.tagSize) != 0) + return false; + + return (lhs.sType == rhs.sType) && + (lhs.objectType == rhs.objectType) && + (lhs.objectHandle == rhs.objectHandle) && + (lhs.tagName == rhs.tagName); +} + +bool operator!=(VkDebugUtilsObjectTagInfoEXT const &lhs, + VkDebugUtilsObjectTagInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDebugUtilsLabelEXT const &lhs, + VkDebugUtilsLabelEXT const &rhs) noexcept { + if (lhs.pLabelName != rhs.pLabelName) { + if(lhs.pLabelName == nullptr || rhs.pLabelName == nullptr) + return false; + if(strcmp(lhs.pLabelName, rhs.pLabelName) != 0) + return false; + } + + for(uint32_t i = 0; i < 4; ++i) { + if(lhs.color[i] != rhs.color[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkDebugUtilsLabelEXT const &lhs, + VkDebugUtilsLabelEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDebugUtilsMessengerCreateInfoEXT const &lhs, + VkDebugUtilsMessengerCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.messageSeverity == rhs.messageSeverity) && + (lhs.messageType == rhs.messageType) && + (lhs.pfnUserCallback == rhs.pfnUserCallback) && + (lhs.pUserData == rhs.pUserData); +} + +bool operator!=(VkDebugUtilsMessengerCreateInfoEXT const &lhs, + VkDebugUtilsMessengerCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDebugUtilsMessengerCallbackDataEXT const &lhs, + VkDebugUtilsMessengerCallbackDataEXT const &rhs) noexcept { + if(lhs.queueLabelCount != rhs.queueLabelCount) + return false; + + if(lhs.cmdBufLabelCount != rhs.cmdBufLabelCount) + return false; + + if(lhs.objectCount != rhs.objectCount) + return false; + + if (lhs.pMessageIdName != rhs.pMessageIdName) { + if(lhs.pMessageIdName == nullptr || rhs.pMessageIdName == nullptr) + return false; + if(strcmp(lhs.pMessageIdName, rhs.pMessageIdName) != 0) + return false; + } + + if (lhs.pMessage != rhs.pMessage) { + if(lhs.pMessage == nullptr || rhs.pMessage == nullptr) + return false; + if(strcmp(lhs.pMessage, rhs.pMessage) != 0) + return false; + } + + for(uint32_t i = 0; i < lhs.queueLabelCount; ++i) { + if(lhs.pQueueLabels[i] != rhs.pQueueLabels[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.cmdBufLabelCount; ++i) { + if(lhs.pCmdBufLabels[i] != rhs.pCmdBufLabels[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.objectCount; ++i) { + if(lhs.pObjects[i] != rhs.pObjects[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.messageIdNumber == rhs.messageIdNumber); +} + +bool operator!=(VkDebugUtilsMessengerCallbackDataEXT const &lhs, + VkDebugUtilsMessengerCallbackDataEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const &lhs, + VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.deviceMemoryReport == rhs.deviceMemoryReport); +} + +bool operator!=(VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const &lhs, + VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDeviceDeviceMemoryReportCreateInfoEXT const &lhs, + VkDeviceDeviceMemoryReportCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.pfnUserCallback == rhs.pfnUserCallback) && + (lhs.pUserData == rhs.pUserData); +} + +bool operator!=(VkDeviceDeviceMemoryReportCreateInfoEXT const &lhs, + VkDeviceDeviceMemoryReportCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDeviceMemoryReportCallbackDataEXT const &lhs, + VkDeviceMemoryReportCallbackDataEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.type == rhs.type) && + (lhs.memoryObjectId == rhs.memoryObjectId) && + (lhs.size == rhs.size) && + (lhs.objectType == rhs.objectType) && + (lhs.objectHandle == rhs.objectHandle) && + (lhs.heapIndex == rhs.heapIndex); +} + +bool operator!=(VkDeviceMemoryReportCallbackDataEXT const &lhs, + VkDeviceMemoryReportCallbackDataEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImportMemoryHostPointerInfoEXT const &lhs, + VkImportMemoryHostPointerInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.handleType == rhs.handleType) && + (lhs.pHostPointer == rhs.pHostPointer); +} + +bool operator!=(VkImportMemoryHostPointerInfoEXT const &lhs, + VkImportMemoryHostPointerInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMemoryHostPointerPropertiesEXT const &lhs, + VkMemoryHostPointerPropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.memoryTypeBits == rhs.memoryTypeBits); +} + +bool operator!=(VkMemoryHostPointerPropertiesEXT const &lhs, + VkMemoryHostPointerPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceExternalMemoryHostPropertiesEXT const &lhs, + VkPhysicalDeviceExternalMemoryHostPropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.minImportedHostPointerAlignment == rhs.minImportedHostPointerAlignment); +} + +bool operator!=(VkPhysicalDeviceExternalMemoryHostPropertiesEXT const &lhs, + VkPhysicalDeviceExternalMemoryHostPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceConservativeRasterizationPropertiesEXT const &lhs, + VkPhysicalDeviceConservativeRasterizationPropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.primitiveOverestimationSize == rhs.primitiveOverestimationSize) && + (lhs.maxExtraPrimitiveOverestimationSize == rhs.maxExtraPrimitiveOverestimationSize) && + (lhs.extraPrimitiveOverestimationSizeGranularity == rhs.extraPrimitiveOverestimationSizeGranularity) && + (lhs.primitiveUnderestimation == rhs.primitiveUnderestimation) && + (lhs.conservativePointAndLineRasterization == rhs.conservativePointAndLineRasterization) && + (lhs.degenerateTrianglesRasterized == rhs.degenerateTrianglesRasterized) && + (lhs.degenerateLinesRasterized == rhs.degenerateLinesRasterized) && + (lhs.fullyCoveredFragmentShaderInputVariable == rhs.fullyCoveredFragmentShaderInputVariable) && + (lhs.conservativeRasterizationPostDepthCoverage == rhs.conservativeRasterizationPostDepthCoverage); +} + +bool operator!=(VkPhysicalDeviceConservativeRasterizationPropertiesEXT const &lhs, + VkPhysicalDeviceConservativeRasterizationPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCalibratedTimestampInfoEXT const &lhs, + VkCalibratedTimestampInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.timeDomain == rhs.timeDomain); +} + +bool operator!=(VkCalibratedTimestampInfoEXT const &lhs, + VkCalibratedTimestampInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceShaderCorePropertiesAMD const &lhs, + VkPhysicalDeviceShaderCorePropertiesAMD const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shaderEngineCount == rhs.shaderEngineCount) && + (lhs.shaderArraysPerEngineCount == rhs.shaderArraysPerEngineCount) && + (lhs.computeUnitsPerShaderArray == rhs.computeUnitsPerShaderArray) && + (lhs.simdPerComputeUnit == rhs.simdPerComputeUnit) && + (lhs.wavefrontsPerSimd == rhs.wavefrontsPerSimd) && + (lhs.wavefrontSize == rhs.wavefrontSize) && + (lhs.sgprsPerSimd == rhs.sgprsPerSimd) && + (lhs.minSgprAllocation == rhs.minSgprAllocation) && + (lhs.maxSgprAllocation == rhs.maxSgprAllocation) && + (lhs.sgprAllocationGranularity == rhs.sgprAllocationGranularity) && + (lhs.vgprsPerSimd == rhs.vgprsPerSimd) && + (lhs.minVgprAllocation == rhs.minVgprAllocation) && + (lhs.maxVgprAllocation == rhs.maxVgprAllocation) && + (lhs.vgprAllocationGranularity == rhs.vgprAllocationGranularity); +} + +bool operator!=(VkPhysicalDeviceShaderCorePropertiesAMD const &lhs, + VkPhysicalDeviceShaderCorePropertiesAMD const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceShaderCoreProperties2AMD const &lhs, + VkPhysicalDeviceShaderCoreProperties2AMD const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shaderCoreFeatures == rhs.shaderCoreFeatures) && + (lhs.activeComputeUnitCount == rhs.activeComputeUnitCount); +} + +bool operator!=(VkPhysicalDeviceShaderCoreProperties2AMD const &lhs, + VkPhysicalDeviceShaderCoreProperties2AMD const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineRasterizationConservativeStateCreateInfoEXT const &lhs, + VkPipelineRasterizationConservativeStateCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.conservativeRasterizationMode == rhs.conservativeRasterizationMode) && + (lhs.extraPrimitiveOverestimationSize == rhs.extraPrimitiveOverestimationSize); +} + +bool operator!=(VkPipelineRasterizationConservativeStateCreateInfoEXT const &lhs, + VkPipelineRasterizationConservativeStateCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceDescriptorIndexingFeatures const &lhs, + VkPhysicalDeviceDescriptorIndexingFeatures const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shaderInputAttachmentArrayDynamicIndexing == rhs.shaderInputAttachmentArrayDynamicIndexing) && + (lhs.shaderUniformTexelBufferArrayDynamicIndexing == rhs.shaderUniformTexelBufferArrayDynamicIndexing) && + (lhs.shaderStorageTexelBufferArrayDynamicIndexing == rhs.shaderStorageTexelBufferArrayDynamicIndexing) && + (lhs.shaderUniformBufferArrayNonUniformIndexing == rhs.shaderUniformBufferArrayNonUniformIndexing) && + (lhs.shaderSampledImageArrayNonUniformIndexing == rhs.shaderSampledImageArrayNonUniformIndexing) && + (lhs.shaderStorageBufferArrayNonUniformIndexing == rhs.shaderStorageBufferArrayNonUniformIndexing) && + (lhs.shaderStorageImageArrayNonUniformIndexing == rhs.shaderStorageImageArrayNonUniformIndexing) && + (lhs.shaderInputAttachmentArrayNonUniformIndexing == rhs.shaderInputAttachmentArrayNonUniformIndexing) && + (lhs.shaderUniformTexelBufferArrayNonUniformIndexing == rhs.shaderUniformTexelBufferArrayNonUniformIndexing) && + (lhs.shaderStorageTexelBufferArrayNonUniformIndexing == rhs.shaderStorageTexelBufferArrayNonUniformIndexing) && + (lhs.descriptorBindingUniformBufferUpdateAfterBind == rhs.descriptorBindingUniformBufferUpdateAfterBind) && + (lhs.descriptorBindingSampledImageUpdateAfterBind == rhs.descriptorBindingSampledImageUpdateAfterBind) && + (lhs.descriptorBindingStorageImageUpdateAfterBind == rhs.descriptorBindingStorageImageUpdateAfterBind) && + (lhs.descriptorBindingStorageBufferUpdateAfterBind == rhs.descriptorBindingStorageBufferUpdateAfterBind) && + (lhs.descriptorBindingUniformTexelBufferUpdateAfterBind == rhs.descriptorBindingUniformTexelBufferUpdateAfterBind) && + (lhs.descriptorBindingStorageTexelBufferUpdateAfterBind == rhs.descriptorBindingStorageTexelBufferUpdateAfterBind) && + (lhs.descriptorBindingUpdateUnusedWhilePending == rhs.descriptorBindingUpdateUnusedWhilePending) && + (lhs.descriptorBindingPartiallyBound == rhs.descriptorBindingPartiallyBound) && + (lhs.descriptorBindingVariableDescriptorCount == rhs.descriptorBindingVariableDescriptorCount) && + (lhs.runtimeDescriptorArray == rhs.runtimeDescriptorArray); +} + +bool operator!=(VkPhysicalDeviceDescriptorIndexingFeatures const &lhs, + VkPhysicalDeviceDescriptorIndexingFeatures const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceDescriptorIndexingProperties const &lhs, + VkPhysicalDeviceDescriptorIndexingProperties const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxUpdateAfterBindDescriptorsInAllPools == rhs.maxUpdateAfterBindDescriptorsInAllPools) && + (lhs.shaderUniformBufferArrayNonUniformIndexingNative == rhs.shaderUniformBufferArrayNonUniformIndexingNative) && + (lhs.shaderSampledImageArrayNonUniformIndexingNative == rhs.shaderSampledImageArrayNonUniformIndexingNative) && + (lhs.shaderStorageBufferArrayNonUniformIndexingNative == rhs.shaderStorageBufferArrayNonUniformIndexingNative) && + (lhs.shaderStorageImageArrayNonUniformIndexingNative == rhs.shaderStorageImageArrayNonUniformIndexingNative) && + (lhs.shaderInputAttachmentArrayNonUniformIndexingNative == rhs.shaderInputAttachmentArrayNonUniformIndexingNative) && + (lhs.robustBufferAccessUpdateAfterBind == rhs.robustBufferAccessUpdateAfterBind) && + (lhs.quadDivergentImplicitLod == rhs.quadDivergentImplicitLod) && + (lhs.maxPerStageDescriptorUpdateAfterBindSamplers == rhs.maxPerStageDescriptorUpdateAfterBindSamplers) && + (lhs.maxPerStageDescriptorUpdateAfterBindUniformBuffers == rhs.maxPerStageDescriptorUpdateAfterBindUniformBuffers) && + (lhs.maxPerStageDescriptorUpdateAfterBindStorageBuffers == rhs.maxPerStageDescriptorUpdateAfterBindStorageBuffers) && + (lhs.maxPerStageDescriptorUpdateAfterBindSampledImages == rhs.maxPerStageDescriptorUpdateAfterBindSampledImages) && + (lhs.maxPerStageDescriptorUpdateAfterBindStorageImages == rhs.maxPerStageDescriptorUpdateAfterBindStorageImages) && + (lhs.maxPerStageDescriptorUpdateAfterBindInputAttachments == rhs.maxPerStageDescriptorUpdateAfterBindInputAttachments) && + (lhs.maxPerStageUpdateAfterBindResources == rhs.maxPerStageUpdateAfterBindResources) && + (lhs.maxDescriptorSetUpdateAfterBindSamplers == rhs.maxDescriptorSetUpdateAfterBindSamplers) && + (lhs.maxDescriptorSetUpdateAfterBindUniformBuffers == rhs.maxDescriptorSetUpdateAfterBindUniformBuffers) && + (lhs.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic) && + (lhs.maxDescriptorSetUpdateAfterBindStorageBuffers == rhs.maxDescriptorSetUpdateAfterBindStorageBuffers) && + (lhs.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic) && + (lhs.maxDescriptorSetUpdateAfterBindSampledImages == rhs.maxDescriptorSetUpdateAfterBindSampledImages) && + (lhs.maxDescriptorSetUpdateAfterBindStorageImages == rhs.maxDescriptorSetUpdateAfterBindStorageImages) && + (lhs.maxDescriptorSetUpdateAfterBindInputAttachments == rhs.maxDescriptorSetUpdateAfterBindInputAttachments); +} + +bool operator!=(VkPhysicalDeviceDescriptorIndexingProperties const &lhs, + VkPhysicalDeviceDescriptorIndexingProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDescriptorSetLayoutBindingFlagsCreateInfo const &lhs, + VkDescriptorSetLayoutBindingFlagsCreateInfo const &rhs) noexcept { + if(lhs.bindingCount != rhs.bindingCount) + return false; + + for(uint32_t i = 0; i < lhs.bindingCount; ++i) { + if(lhs.pBindingFlags[i] != rhs.pBindingFlags[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkDescriptorSetLayoutBindingFlagsCreateInfo const &lhs, + VkDescriptorSetLayoutBindingFlagsCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDescriptorSetVariableDescriptorCountAllocateInfo const &lhs, + VkDescriptorSetVariableDescriptorCountAllocateInfo const &rhs) noexcept { + if(lhs.descriptorSetCount != rhs.descriptorSetCount) + return false; + + for(uint32_t i = 0; i < lhs.descriptorSetCount; ++i) { + if(lhs.pDescriptorCounts[i] != rhs.pDescriptorCounts[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkDescriptorSetVariableDescriptorCountAllocateInfo const &lhs, + VkDescriptorSetVariableDescriptorCountAllocateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDescriptorSetVariableDescriptorCountLayoutSupport const &lhs, + VkDescriptorSetVariableDescriptorCountLayoutSupport const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxVariableDescriptorCount == rhs.maxVariableDescriptorCount); +} + +bool operator!=(VkDescriptorSetVariableDescriptorCountLayoutSupport const &lhs, + VkDescriptorSetVariableDescriptorCountLayoutSupport const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAttachmentDescription2 const &lhs, + VkAttachmentDescription2 const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.format == rhs.format) && + (lhs.samples == rhs.samples) && + (lhs.loadOp == rhs.loadOp) && + (lhs.storeOp == rhs.storeOp) && + (lhs.stencilLoadOp == rhs.stencilLoadOp) && + (lhs.stencilStoreOp == rhs.stencilStoreOp) && + (lhs.initialLayout == rhs.initialLayout) && + (lhs.finalLayout == rhs.finalLayout); +} + +bool operator!=(VkAttachmentDescription2 const &lhs, + VkAttachmentDescription2 const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAttachmentReference2 const &lhs, + VkAttachmentReference2 const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.attachment == rhs.attachment) && + (lhs.layout == rhs.layout) && + (lhs.aspectMask == rhs.aspectMask); +} + +bool operator!=(VkAttachmentReference2 const &lhs, + VkAttachmentReference2 const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSubpassDescription2 const &lhs, + VkSubpassDescription2 const &rhs) noexcept { + if(lhs.inputAttachmentCount != rhs.inputAttachmentCount) + return false; + + if(lhs.colorAttachmentCount != rhs.colorAttachmentCount) + return false; + + if(lhs.colorAttachmentCount != rhs.colorAttachmentCount) + return false; + + if(lhs.preserveAttachmentCount != rhs.preserveAttachmentCount) + return false; + + for(uint32_t i = 0; i < lhs.inputAttachmentCount; ++i) { + if(lhs.pInputAttachments[i] != rhs.pInputAttachments[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.colorAttachmentCount; ++i) { + if(lhs.pColorAttachments[i] != rhs.pColorAttachments[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.colorAttachmentCount; ++i) { + if(lhs.pResolveAttachments[i] != rhs.pResolveAttachments[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.preserveAttachmentCount; ++i) { + if(lhs.pPreserveAttachments[i] != rhs.pPreserveAttachments[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.pipelineBindPoint == rhs.pipelineBindPoint) && + (lhs.viewMask == rhs.viewMask) && + (lhs.pDepthStencilAttachment == rhs.pDepthStencilAttachment); +} + +bool operator!=(VkSubpassDescription2 const &lhs, + VkSubpassDescription2 const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSubpassDependency2 const &lhs, + VkSubpassDependency2 const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.srcSubpass == rhs.srcSubpass) && + (lhs.dstSubpass == rhs.dstSubpass) && + (lhs.srcStageMask == rhs.srcStageMask) && + (lhs.dstStageMask == rhs.dstStageMask) && + (lhs.srcAccessMask == rhs.srcAccessMask) && + (lhs.dstAccessMask == rhs.dstAccessMask) && + (lhs.dependencyFlags == rhs.dependencyFlags) && + (lhs.viewOffset == rhs.viewOffset); +} + +bool operator!=(VkSubpassDependency2 const &lhs, + VkSubpassDependency2 const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkRenderPassCreateInfo2 const &lhs, + VkRenderPassCreateInfo2 const &rhs) noexcept { + if(lhs.attachmentCount != rhs.attachmentCount) + return false; + + if(lhs.subpassCount != rhs.subpassCount) + return false; + + if(lhs.dependencyCount != rhs.dependencyCount) + return false; + + if(lhs.correlatedViewMaskCount != rhs.correlatedViewMaskCount) + return false; + + for(uint32_t i = 0; i < lhs.attachmentCount; ++i) { + if(lhs.pAttachments[i] != rhs.pAttachments[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.subpassCount; ++i) { + if(lhs.pSubpasses[i] != rhs.pSubpasses[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.dependencyCount; ++i) { + if(lhs.pDependencies[i] != rhs.pDependencies[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.correlatedViewMaskCount; ++i) { + if(lhs.pCorrelatedViewMasks[i] != rhs.pCorrelatedViewMasks[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkRenderPassCreateInfo2 const &lhs, + VkRenderPassCreateInfo2 const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSubpassBeginInfo const &lhs, + VkSubpassBeginInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.contents == rhs.contents); +} + +bool operator!=(VkSubpassBeginInfo const &lhs, + VkSubpassBeginInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSubpassEndInfo const &lhs, + VkSubpassEndInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkSubpassEndInfo const &lhs, + VkSubpassEndInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceTimelineSemaphoreFeatures const &lhs, + VkPhysicalDeviceTimelineSemaphoreFeatures const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.timelineSemaphore == rhs.timelineSemaphore); +} + +bool operator!=(VkPhysicalDeviceTimelineSemaphoreFeatures const &lhs, + VkPhysicalDeviceTimelineSemaphoreFeatures const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceTimelineSemaphoreProperties const &lhs, + VkPhysicalDeviceTimelineSemaphoreProperties const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxTimelineSemaphoreValueDifference == rhs.maxTimelineSemaphoreValueDifference); +} + +bool operator!=(VkPhysicalDeviceTimelineSemaphoreProperties const &lhs, + VkPhysicalDeviceTimelineSemaphoreProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSemaphoreTypeCreateInfo const &lhs, + VkSemaphoreTypeCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.semaphoreType == rhs.semaphoreType) && + (lhs.initialValue == rhs.initialValue); +} + +bool operator!=(VkSemaphoreTypeCreateInfo const &lhs, + VkSemaphoreTypeCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkTimelineSemaphoreSubmitInfo const &lhs, + VkTimelineSemaphoreSubmitInfo const &rhs) noexcept { + if(lhs.waitSemaphoreValueCount != rhs.waitSemaphoreValueCount) + return false; + + if(lhs.signalSemaphoreValueCount != rhs.signalSemaphoreValueCount) + return false; + + for(uint32_t i = 0; i < lhs.waitSemaphoreValueCount; ++i) { + if(lhs.pWaitSemaphoreValues[i] != rhs.pWaitSemaphoreValues[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.signalSemaphoreValueCount; ++i) { + if(lhs.pSignalSemaphoreValues[i] != rhs.pSignalSemaphoreValues[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkTimelineSemaphoreSubmitInfo const &lhs, + VkTimelineSemaphoreSubmitInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSemaphoreWaitInfo const &lhs, + VkSemaphoreWaitInfo const &rhs) noexcept { + if(lhs.semaphoreCount != rhs.semaphoreCount) + return false; + + if(lhs.semaphoreCount != rhs.semaphoreCount) + return false; + + for(uint32_t i = 0; i < lhs.semaphoreCount; ++i) { + if(lhs.pSemaphores[i] != rhs.pSemaphores[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.semaphoreCount; ++i) { + if(lhs.pValues[i] != rhs.pValues[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkSemaphoreWaitInfo const &lhs, + VkSemaphoreWaitInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSemaphoreSignalInfo const &lhs, + VkSemaphoreSignalInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.semaphore == rhs.semaphore) && + (lhs.value == rhs.value); +} + +bool operator!=(VkSemaphoreSignalInfo const &lhs, + VkSemaphoreSignalInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkVertexInputBindingDivisorDescriptionEXT const &lhs, + VkVertexInputBindingDivisorDescriptionEXT const &rhs) noexcept { + return (lhs.binding == rhs.binding) && + (lhs.divisor == rhs.divisor); +} + +bool operator!=(VkVertexInputBindingDivisorDescriptionEXT const &lhs, + VkVertexInputBindingDivisorDescriptionEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineVertexInputDivisorStateCreateInfoEXT const &lhs, + VkPipelineVertexInputDivisorStateCreateInfoEXT const &rhs) noexcept { + if(lhs.vertexBindingDivisorCount != rhs.vertexBindingDivisorCount) + return false; + + for(uint32_t i = 0; i < lhs.vertexBindingDivisorCount; ++i) { + if(lhs.pVertexBindingDivisors[i] != rhs.pVertexBindingDivisors[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkPipelineVertexInputDivisorStateCreateInfoEXT const &lhs, + VkPipelineVertexInputDivisorStateCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const &lhs, + VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxVertexAttribDivisor == rhs.maxVertexAttribDivisor); +} + +bool operator!=(VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const &lhs, + VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDevicePCIBusInfoPropertiesEXT const &lhs, + VkPhysicalDevicePCIBusInfoPropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pciDomain == rhs.pciDomain) && + (lhs.pciBus == rhs.pciBus) && + (lhs.pciDevice == rhs.pciDevice) && + (lhs.pciFunction == rhs.pciFunction); +} + +bool operator!=(VkPhysicalDevicePCIBusInfoPropertiesEXT const &lhs, + VkPhysicalDevicePCIBusInfoPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkImportAndroidHardwareBufferInfoANDROID const &lhs, + VkImportAndroidHardwareBufferInfoANDROID const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.buffer == rhs.buffer); +} + +bool operator!=(VkImportAndroidHardwareBufferInfoANDROID const &lhs, + VkImportAndroidHardwareBufferInfoANDROID const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkAndroidHardwareBufferUsageANDROID const &lhs, + VkAndroidHardwareBufferUsageANDROID const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.androidHardwareBufferUsage == rhs.androidHardwareBufferUsage); +} + +bool operator!=(VkAndroidHardwareBufferUsageANDROID const &lhs, + VkAndroidHardwareBufferUsageANDROID const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkAndroidHardwareBufferPropertiesANDROID const &lhs, + VkAndroidHardwareBufferPropertiesANDROID const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.allocationSize == rhs.allocationSize) && + (lhs.memoryTypeBits == rhs.memoryTypeBits); +} + +bool operator!=(VkAndroidHardwareBufferPropertiesANDROID const &lhs, + VkAndroidHardwareBufferPropertiesANDROID const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkMemoryGetAndroidHardwareBufferInfoANDROID const &lhs, + VkMemoryGetAndroidHardwareBufferInfoANDROID const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.memory == rhs.memory); +} + +bool operator!=(VkMemoryGetAndroidHardwareBufferInfoANDROID const &lhs, + VkMemoryGetAndroidHardwareBufferInfoANDROID const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkAndroidHardwareBufferFormatPropertiesANDROID const &lhs, + VkAndroidHardwareBufferFormatPropertiesANDROID const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.format == rhs.format) && + (lhs.externalFormat == rhs.externalFormat) && + (lhs.formatFeatures == rhs.formatFeatures) && + (lhs.samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents) && + (lhs.suggestedYcbcrModel == rhs.suggestedYcbcrModel) && + (lhs.suggestedYcbcrRange == rhs.suggestedYcbcrRange) && + (lhs.suggestedXChromaOffset == rhs.suggestedXChromaOffset) && + (lhs.suggestedYChromaOffset == rhs.suggestedYChromaOffset); +} + +bool operator!=(VkAndroidHardwareBufferFormatPropertiesANDROID const &lhs, + VkAndroidHardwareBufferFormatPropertiesANDROID const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_ANDROID_KHR + +bool operator==(VkCommandBufferInheritanceConditionalRenderingInfoEXT const &lhs, + VkCommandBufferInheritanceConditionalRenderingInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.conditionalRenderingEnable == rhs.conditionalRenderingEnable); +} + +bool operator!=(VkCommandBufferInheritanceConditionalRenderingInfoEXT const &lhs, + VkCommandBufferInheritanceConditionalRenderingInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkExternalFormatANDROID const &lhs, + VkExternalFormatANDROID const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.externalFormat == rhs.externalFormat); +} + +bool operator!=(VkExternalFormatANDROID const &lhs, + VkExternalFormatANDROID const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_ANDROID_KHR + +bool operator==(VkPhysicalDevice8BitStorageFeatures const &lhs, + VkPhysicalDevice8BitStorageFeatures const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.storageBuffer8BitAccess == rhs.storageBuffer8BitAccess) && + (lhs.uniformAndStorageBuffer8BitAccess == rhs.uniformAndStorageBuffer8BitAccess) && + (lhs.storagePushConstant8 == rhs.storagePushConstant8); +} + +bool operator!=(VkPhysicalDevice8BitStorageFeatures const &lhs, + VkPhysicalDevice8BitStorageFeatures const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceConditionalRenderingFeaturesEXT const &lhs, + VkPhysicalDeviceConditionalRenderingFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.conditionalRendering == rhs.conditionalRendering) && + (lhs.inheritedConditionalRendering == rhs.inheritedConditionalRendering); +} + +bool operator!=(VkPhysicalDeviceConditionalRenderingFeaturesEXT const &lhs, + VkPhysicalDeviceConditionalRenderingFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceVulkanMemoryModelFeatures const &lhs, + VkPhysicalDeviceVulkanMemoryModelFeatures const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.vulkanMemoryModel == rhs.vulkanMemoryModel) && + (lhs.vulkanMemoryModelDeviceScope == rhs.vulkanMemoryModelDeviceScope) && + (lhs.vulkanMemoryModelAvailabilityVisibilityChains == rhs.vulkanMemoryModelAvailabilityVisibilityChains); +} + +bool operator!=(VkPhysicalDeviceVulkanMemoryModelFeatures const &lhs, + VkPhysicalDeviceVulkanMemoryModelFeatures const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceShaderAtomicInt64Features const &lhs, + VkPhysicalDeviceShaderAtomicInt64Features const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shaderBufferInt64Atomics == rhs.shaderBufferInt64Atomics) && + (lhs.shaderSharedInt64Atomics == rhs.shaderSharedInt64Atomics); +} + +bool operator!=(VkPhysicalDeviceShaderAtomicInt64Features const &lhs, + VkPhysicalDeviceShaderAtomicInt64Features const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const &lhs, + VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shaderBufferFloat32Atomics == rhs.shaderBufferFloat32Atomics) && + (lhs.shaderBufferFloat32AtomicAdd == rhs.shaderBufferFloat32AtomicAdd) && + (lhs.shaderBufferFloat64Atomics == rhs.shaderBufferFloat64Atomics) && + (lhs.shaderBufferFloat64AtomicAdd == rhs.shaderBufferFloat64AtomicAdd) && + (lhs.shaderSharedFloat32Atomics == rhs.shaderSharedFloat32Atomics) && + (lhs.shaderSharedFloat32AtomicAdd == rhs.shaderSharedFloat32AtomicAdd) && + (lhs.shaderSharedFloat64Atomics == rhs.shaderSharedFloat64Atomics) && + (lhs.shaderSharedFloat64AtomicAdd == rhs.shaderSharedFloat64AtomicAdd) && + (lhs.shaderImageFloat32Atomics == rhs.shaderImageFloat32Atomics) && + (lhs.shaderImageFloat32AtomicAdd == rhs.shaderImageFloat32AtomicAdd) && + (lhs.sparseImageFloat32Atomics == rhs.sparseImageFloat32Atomics) && + (lhs.sparseImageFloat32AtomicAdd == rhs.sparseImageFloat32AtomicAdd); +} + +bool operator!=(VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const &lhs, + VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const &lhs, + VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shaderBufferFloat16Atomics == rhs.shaderBufferFloat16Atomics) && + (lhs.shaderBufferFloat16AtomicAdd == rhs.shaderBufferFloat16AtomicAdd) && + (lhs.shaderBufferFloat16AtomicMinMax == rhs.shaderBufferFloat16AtomicMinMax) && + (lhs.shaderBufferFloat32AtomicMinMax == rhs.shaderBufferFloat32AtomicMinMax) && + (lhs.shaderBufferFloat64AtomicMinMax == rhs.shaderBufferFloat64AtomicMinMax) && + (lhs.shaderSharedFloat16Atomics == rhs.shaderSharedFloat16Atomics) && + (lhs.shaderSharedFloat16AtomicAdd == rhs.shaderSharedFloat16AtomicAdd) && + (lhs.shaderSharedFloat16AtomicMinMax == rhs.shaderSharedFloat16AtomicMinMax) && + (lhs.shaderSharedFloat32AtomicMinMax == rhs.shaderSharedFloat32AtomicMinMax) && + (lhs.shaderSharedFloat64AtomicMinMax == rhs.shaderSharedFloat64AtomicMinMax) && + (lhs.shaderImageFloat32AtomicMinMax == rhs.shaderImageFloat32AtomicMinMax) && + (lhs.sparseImageFloat32AtomicMinMax == rhs.sparseImageFloat32AtomicMinMax); +} + +bool operator!=(VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const &lhs, + VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const &lhs, + VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.vertexAttributeInstanceRateDivisor == rhs.vertexAttributeInstanceRateDivisor) && + (lhs.vertexAttributeInstanceRateZeroDivisor == rhs.vertexAttributeInstanceRateZeroDivisor); +} + +bool operator!=(VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const &lhs, + VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkQueueFamilyCheckpointPropertiesNV const &lhs, + VkQueueFamilyCheckpointPropertiesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.checkpointExecutionStageMask == rhs.checkpointExecutionStageMask); +} + +bool operator!=(VkQueueFamilyCheckpointPropertiesNV const &lhs, + VkQueueFamilyCheckpointPropertiesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCheckpointDataNV const &lhs, + VkCheckpointDataNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.stage == rhs.stage) && + (lhs.pCheckpointMarker == rhs.pCheckpointMarker); +} + +bool operator!=(VkCheckpointDataNV const &lhs, + VkCheckpointDataNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceDepthStencilResolveProperties const &lhs, + VkPhysicalDeviceDepthStencilResolveProperties const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.supportedDepthResolveModes == rhs.supportedDepthResolveModes) && + (lhs.supportedStencilResolveModes == rhs.supportedStencilResolveModes) && + (lhs.independentResolveNone == rhs.independentResolveNone) && + (lhs.independentResolve == rhs.independentResolve); +} + +bool operator!=(VkPhysicalDeviceDepthStencilResolveProperties const &lhs, + VkPhysicalDeviceDepthStencilResolveProperties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSubpassDescriptionDepthStencilResolve const &lhs, + VkSubpassDescriptionDepthStencilResolve const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.depthResolveMode == rhs.depthResolveMode) && + (lhs.stencilResolveMode == rhs.stencilResolveMode) && + (lhs.pDepthStencilResolveAttachment == rhs.pDepthStencilResolveAttachment); +} + +bool operator!=(VkSubpassDescriptionDepthStencilResolve const &lhs, + VkSubpassDescriptionDepthStencilResolve const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageViewASTCDecodeModeEXT const &lhs, + VkImageViewASTCDecodeModeEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.decodeMode == rhs.decodeMode); +} + +bool operator!=(VkImageViewASTCDecodeModeEXT const &lhs, + VkImageViewASTCDecodeModeEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceASTCDecodeFeaturesEXT const &lhs, + VkPhysicalDeviceASTCDecodeFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.decodeModeSharedExponent == rhs.decodeModeSharedExponent); +} + +bool operator!=(VkPhysicalDeviceASTCDecodeFeaturesEXT const &lhs, + VkPhysicalDeviceASTCDecodeFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceTransformFeedbackFeaturesEXT const &lhs, + VkPhysicalDeviceTransformFeedbackFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.transformFeedback == rhs.transformFeedback) && + (lhs.geometryStreams == rhs.geometryStreams); +} + +bool operator!=(VkPhysicalDeviceTransformFeedbackFeaturesEXT const &lhs, + VkPhysicalDeviceTransformFeedbackFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceTransformFeedbackPropertiesEXT const &lhs, + VkPhysicalDeviceTransformFeedbackPropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxTransformFeedbackStreams == rhs.maxTransformFeedbackStreams) && + (lhs.maxTransformFeedbackBuffers == rhs.maxTransformFeedbackBuffers) && + (lhs.maxTransformFeedbackBufferSize == rhs.maxTransformFeedbackBufferSize) && + (lhs.maxTransformFeedbackStreamDataSize == rhs.maxTransformFeedbackStreamDataSize) && + (lhs.maxTransformFeedbackBufferDataSize == rhs.maxTransformFeedbackBufferDataSize) && + (lhs.maxTransformFeedbackBufferDataStride == rhs.maxTransformFeedbackBufferDataStride) && + (lhs.transformFeedbackQueries == rhs.transformFeedbackQueries) && + (lhs.transformFeedbackStreamsLinesTriangles == rhs.transformFeedbackStreamsLinesTriangles) && + (lhs.transformFeedbackRasterizationStreamSelect == rhs.transformFeedbackRasterizationStreamSelect) && + (lhs.transformFeedbackDraw == rhs.transformFeedbackDraw); +} + +bool operator!=(VkPhysicalDeviceTransformFeedbackPropertiesEXT const &lhs, + VkPhysicalDeviceTransformFeedbackPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineRasterizationStateStreamCreateInfoEXT const &lhs, + VkPipelineRasterizationStateStreamCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.rasterizationStream == rhs.rasterizationStream); +} + +bool operator!=(VkPipelineRasterizationStateStreamCreateInfoEXT const &lhs, + VkPipelineRasterizationStateStreamCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const &lhs, + VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.representativeFragmentTest == rhs.representativeFragmentTest); +} + +bool operator!=(VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const &lhs, + VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineRepresentativeFragmentTestStateCreateInfoNV const &lhs, + VkPipelineRepresentativeFragmentTestStateCreateInfoNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.representativeFragmentTestEnable == rhs.representativeFragmentTestEnable); +} + +bool operator!=(VkPipelineRepresentativeFragmentTestStateCreateInfoNV const &lhs, + VkPipelineRepresentativeFragmentTestStateCreateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceExclusiveScissorFeaturesNV const &lhs, + VkPhysicalDeviceExclusiveScissorFeaturesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.exclusiveScissor == rhs.exclusiveScissor); +} + +bool operator!=(VkPhysicalDeviceExclusiveScissorFeaturesNV const &lhs, + VkPhysicalDeviceExclusiveScissorFeaturesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineViewportExclusiveScissorStateCreateInfoNV const &lhs, + VkPipelineViewportExclusiveScissorStateCreateInfoNV const &rhs) noexcept { + if(lhs.exclusiveScissorCount != rhs.exclusiveScissorCount) + return false; + + for(uint32_t i = 0; i < lhs.exclusiveScissorCount; ++i) { + if(lhs.pExclusiveScissors[i] != rhs.pExclusiveScissors[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkPipelineViewportExclusiveScissorStateCreateInfoNV const &lhs, + VkPipelineViewportExclusiveScissorStateCreateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceCornerSampledImageFeaturesNV const &lhs, + VkPhysicalDeviceCornerSampledImageFeaturesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.cornerSampledImage == rhs.cornerSampledImage); +} + +bool operator!=(VkPhysicalDeviceCornerSampledImageFeaturesNV const &lhs, + VkPhysicalDeviceCornerSampledImageFeaturesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const &lhs, + VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.computeDerivativeGroupQuads == rhs.computeDerivativeGroupQuads) && + (lhs.computeDerivativeGroupLinear == rhs.computeDerivativeGroupLinear); +} + +bool operator!=(VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const &lhs, + VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const &lhs, + VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.fragmentShaderBarycentric == rhs.fragmentShaderBarycentric); +} + +bool operator!=(VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const &lhs, + VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceShaderImageFootprintFeaturesNV const &lhs, + VkPhysicalDeviceShaderImageFootprintFeaturesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.imageFootprint == rhs.imageFootprint); +} + +bool operator!=(VkPhysicalDeviceShaderImageFootprintFeaturesNV const &lhs, + VkPhysicalDeviceShaderImageFootprintFeaturesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const &lhs, + VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.dedicatedAllocationImageAliasing == rhs.dedicatedAllocationImageAliasing); +} + +bool operator!=(VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const &lhs, + VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkShadingRatePaletteNV const &lhs, + VkShadingRatePaletteNV const &rhs) noexcept { + if(lhs.shadingRatePaletteEntryCount != rhs.shadingRatePaletteEntryCount) + return false; + + for(uint32_t i = 0; i < lhs.shadingRatePaletteEntryCount; ++i) { + if(lhs.pShadingRatePaletteEntries[i] != rhs.pShadingRatePaletteEntries[i]) + return false; + } + + return true; +} + +bool operator!=(VkShadingRatePaletteNV const &lhs, + VkShadingRatePaletteNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineViewportShadingRateImageStateCreateInfoNV const &lhs, + VkPipelineViewportShadingRateImageStateCreateInfoNV const &rhs) noexcept { + if(lhs.viewportCount != rhs.viewportCount) + return false; + + for(uint32_t i = 0; i < lhs.viewportCount; ++i) { + if(lhs.pShadingRatePalettes[i] != rhs.pShadingRatePalettes[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.shadingRateImageEnable == rhs.shadingRateImageEnable); +} + +bool operator!=(VkPipelineViewportShadingRateImageStateCreateInfoNV const &lhs, + VkPipelineViewportShadingRateImageStateCreateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceShadingRateImageFeaturesNV const &lhs, + VkPhysicalDeviceShadingRateImageFeaturesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shadingRateImage == rhs.shadingRateImage) && + (lhs.shadingRateCoarseSampleOrder == rhs.shadingRateCoarseSampleOrder); +} + +bool operator!=(VkPhysicalDeviceShadingRateImageFeaturesNV const &lhs, + VkPhysicalDeviceShadingRateImageFeaturesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceShadingRateImagePropertiesNV const &lhs, + VkPhysicalDeviceShadingRateImagePropertiesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shadingRateTexelSize == rhs.shadingRateTexelSize) && + (lhs.shadingRatePaletteSize == rhs.shadingRatePaletteSize) && + (lhs.shadingRateMaxCoarseSamples == rhs.shadingRateMaxCoarseSamples); +} + +bool operator!=(VkPhysicalDeviceShadingRateImagePropertiesNV const &lhs, + VkPhysicalDeviceShadingRateImagePropertiesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const &lhs, + VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.invocationMask == rhs.invocationMask); +} + +bool operator!=(VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const &lhs, + VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCoarseSampleLocationNV const &lhs, + VkCoarseSampleLocationNV const &rhs) noexcept { + return (lhs.pixelX == rhs.pixelX) && + (lhs.pixelY == rhs.pixelY) && + (lhs.sample == rhs.sample); +} + +bool operator!=(VkCoarseSampleLocationNV const &lhs, + VkCoarseSampleLocationNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCoarseSampleOrderCustomNV const &lhs, + VkCoarseSampleOrderCustomNV const &rhs) noexcept { + if(lhs.sampleLocationCount != rhs.sampleLocationCount) + return false; + + for(uint32_t i = 0; i < lhs.sampleLocationCount; ++i) { + if(lhs.pSampleLocations[i] != rhs.pSampleLocations[i]) + return false; + } + + return (lhs.shadingRate == rhs.shadingRate) && + (lhs.sampleCount == rhs.sampleCount); +} + +bool operator!=(VkCoarseSampleOrderCustomNV const &lhs, + VkCoarseSampleOrderCustomNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const &lhs, + VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const &rhs) noexcept { + if(lhs.customSampleOrderCount != rhs.customSampleOrderCount) + return false; + + for(uint32_t i = 0; i < lhs.customSampleOrderCount; ++i) { + if(lhs.pCustomSampleOrders[i] != rhs.pCustomSampleOrders[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.sampleOrderType == rhs.sampleOrderType); +} + +bool operator!=(VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const &lhs, + VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceMeshShaderFeaturesNV const &lhs, + VkPhysicalDeviceMeshShaderFeaturesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.taskShader == rhs.taskShader) && + (lhs.meshShader == rhs.meshShader); +} + +bool operator!=(VkPhysicalDeviceMeshShaderFeaturesNV const &lhs, + VkPhysicalDeviceMeshShaderFeaturesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceMeshShaderPropertiesNV const &lhs, + VkPhysicalDeviceMeshShaderPropertiesNV const &rhs) noexcept { + for(uint32_t i = 0; i < 3; ++i) { + if(lhs.maxTaskWorkGroupSize[i] != rhs.maxTaskWorkGroupSize[i]) + return false; + } + + for(uint32_t i = 0; i < 3; ++i) { + if(lhs.maxMeshWorkGroupSize[i] != rhs.maxMeshWorkGroupSize[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.maxDrawMeshTasksCount == rhs.maxDrawMeshTasksCount) && + (lhs.maxTaskWorkGroupInvocations == rhs.maxTaskWorkGroupInvocations) && + (lhs.maxTaskTotalMemorySize == rhs.maxTaskTotalMemorySize) && + (lhs.maxTaskOutputCount == rhs.maxTaskOutputCount) && + (lhs.maxMeshWorkGroupInvocations == rhs.maxMeshWorkGroupInvocations) && + (lhs.maxMeshTotalMemorySize == rhs.maxMeshTotalMemorySize) && + (lhs.maxMeshOutputVertices == rhs.maxMeshOutputVertices) && + (lhs.maxMeshOutputPrimitives == rhs.maxMeshOutputPrimitives) && + (lhs.maxMeshMultiviewViewCount == rhs.maxMeshMultiviewViewCount) && + (lhs.meshOutputPerVertexGranularity == rhs.meshOutputPerVertexGranularity) && + (lhs.meshOutputPerPrimitiveGranularity == rhs.meshOutputPerPrimitiveGranularity); +} + +bool operator!=(VkPhysicalDeviceMeshShaderPropertiesNV const &lhs, + VkPhysicalDeviceMeshShaderPropertiesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDrawMeshTasksIndirectCommandNV const &lhs, + VkDrawMeshTasksIndirectCommandNV const &rhs) noexcept { + return (lhs.taskCount == rhs.taskCount) && + (lhs.firstTask == rhs.firstTask); +} + +bool operator!=(VkDrawMeshTasksIndirectCommandNV const &lhs, + VkDrawMeshTasksIndirectCommandNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkRayTracingShaderGroupCreateInfoNV const &lhs, + VkRayTracingShaderGroupCreateInfoNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.type == rhs.type) && + (lhs.generalShader == rhs.generalShader) && + (lhs.closestHitShader == rhs.closestHitShader) && + (lhs.anyHitShader == rhs.anyHitShader) && + (lhs.intersectionShader == rhs.intersectionShader); +} + +bool operator!=(VkRayTracingShaderGroupCreateInfoNV const &lhs, + VkRayTracingShaderGroupCreateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkRayTracingShaderGroupCreateInfoKHR const &lhs, + VkRayTracingShaderGroupCreateInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.type == rhs.type) && + (lhs.generalShader == rhs.generalShader) && + (lhs.closestHitShader == rhs.closestHitShader) && + (lhs.anyHitShader == rhs.anyHitShader) && + (lhs.intersectionShader == rhs.intersectionShader) && + (lhs.pShaderGroupCaptureReplayHandle == rhs.pShaderGroupCaptureReplayHandle); +} + +bool operator!=(VkRayTracingShaderGroupCreateInfoKHR const &lhs, + VkRayTracingShaderGroupCreateInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkRayTracingPipelineCreateInfoNV const &lhs, + VkRayTracingPipelineCreateInfoNV const &rhs) noexcept { + if(lhs.stageCount != rhs.stageCount) + return false; + + if(lhs.groupCount != rhs.groupCount) + return false; + + for(uint32_t i = 0; i < lhs.stageCount; ++i) { + if(lhs.pStages[i] != rhs.pStages[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.groupCount; ++i) { + if(lhs.pGroups[i] != rhs.pGroups[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.maxRecursionDepth == rhs.maxRecursionDepth) && + (lhs.layout == rhs.layout) && + (lhs.basePipelineHandle == rhs.basePipelineHandle) && + (lhs.basePipelineIndex == rhs.basePipelineIndex); +} + +bool operator!=(VkRayTracingPipelineCreateInfoNV const &lhs, + VkRayTracingPipelineCreateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkRayTracingPipelineCreateInfoKHR const &lhs, + VkRayTracingPipelineCreateInfoKHR const &rhs) noexcept { + if(lhs.stageCount != rhs.stageCount) + return false; + + if(lhs.groupCount != rhs.groupCount) + return false; + + for(uint32_t i = 0; i < lhs.stageCount; ++i) { + if(lhs.pStages[i] != rhs.pStages[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.groupCount; ++i) { + if(lhs.pGroups[i] != rhs.pGroups[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.maxPipelineRayRecursionDepth == rhs.maxPipelineRayRecursionDepth) && + (lhs.pLibraryInfo == rhs.pLibraryInfo) && + (lhs.pLibraryInterface == rhs.pLibraryInterface) && + (lhs.pDynamicState == rhs.pDynamicState) && + (lhs.layout == rhs.layout) && + (lhs.basePipelineHandle == rhs.basePipelineHandle) && + (lhs.basePipelineIndex == rhs.basePipelineIndex); +} + +bool operator!=(VkRayTracingPipelineCreateInfoKHR const &lhs, + VkRayTracingPipelineCreateInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkGeometryTrianglesNV const &lhs, + VkGeometryTrianglesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.vertexData == rhs.vertexData) && + (lhs.vertexOffset == rhs.vertexOffset) && + (lhs.vertexCount == rhs.vertexCount) && + (lhs.vertexStride == rhs.vertexStride) && + (lhs.vertexFormat == rhs.vertexFormat) && + (lhs.indexData == rhs.indexData) && + (lhs.indexOffset == rhs.indexOffset) && + (lhs.indexCount == rhs.indexCount) && + (lhs.indexType == rhs.indexType) && + (lhs.transformData == rhs.transformData) && + (lhs.transformOffset == rhs.transformOffset); +} + +bool operator!=(VkGeometryTrianglesNV const &lhs, + VkGeometryTrianglesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkGeometryAABBNV const &lhs, + VkGeometryAABBNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.aabbData == rhs.aabbData) && + (lhs.numAABBs == rhs.numAABBs) && + (lhs.stride == rhs.stride) && + (lhs.offset == rhs.offset); +} + +bool operator!=(VkGeometryAABBNV const &lhs, + VkGeometryAABBNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkGeometryDataNV const &lhs, + VkGeometryDataNV const &rhs) noexcept { + return (lhs.triangles == rhs.triangles) && + (lhs.aabbs == rhs.aabbs); +} + +bool operator!=(VkGeometryDataNV const &lhs, + VkGeometryDataNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkGeometryNV const &lhs, + VkGeometryNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.geometryType == rhs.geometryType) && + (lhs.geometry == rhs.geometry) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkGeometryNV const &lhs, + VkGeometryNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAccelerationStructureInfoNV const &lhs, + VkAccelerationStructureInfoNV const &rhs) noexcept { + if(lhs.geometryCount != rhs.geometryCount) + return false; + + for(uint32_t i = 0; i < lhs.geometryCount; ++i) { + if(lhs.pGeometries[i] != rhs.pGeometries[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.type == rhs.type) && + (lhs.flags == rhs.flags) && + (lhs.instanceCount == rhs.instanceCount); +} + +bool operator!=(VkAccelerationStructureInfoNV const &lhs, + VkAccelerationStructureInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAccelerationStructureCreateInfoNV const &lhs, + VkAccelerationStructureCreateInfoNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.compactedSize == rhs.compactedSize) && + (lhs.info == rhs.info); +} + +bool operator!=(VkAccelerationStructureCreateInfoNV const &lhs, + VkAccelerationStructureCreateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBindAccelerationStructureMemoryInfoNV const &lhs, + VkBindAccelerationStructureMemoryInfoNV const &rhs) noexcept { + if(lhs.deviceIndexCount != rhs.deviceIndexCount) + return false; + + for(uint32_t i = 0; i < lhs.deviceIndexCount; ++i) { + if(lhs.pDeviceIndices[i] != rhs.pDeviceIndices[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.accelerationStructure == rhs.accelerationStructure) && + (lhs.memory == rhs.memory) && + (lhs.memoryOffset == rhs.memoryOffset); +} + +bool operator!=(VkBindAccelerationStructureMemoryInfoNV const &lhs, + VkBindAccelerationStructureMemoryInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkWriteDescriptorSetAccelerationStructureKHR const &lhs, + VkWriteDescriptorSetAccelerationStructureKHR const &rhs) noexcept { + if(lhs.accelerationStructureCount != rhs.accelerationStructureCount) + return false; + + for(uint32_t i = 0; i < lhs.accelerationStructureCount; ++i) { + if(lhs.pAccelerationStructures[i] != rhs.pAccelerationStructures[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkWriteDescriptorSetAccelerationStructureKHR const &lhs, + VkWriteDescriptorSetAccelerationStructureKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkWriteDescriptorSetAccelerationStructureNV const &lhs, + VkWriteDescriptorSetAccelerationStructureNV const &rhs) noexcept { + if(lhs.accelerationStructureCount != rhs.accelerationStructureCount) + return false; + + for(uint32_t i = 0; i < lhs.accelerationStructureCount; ++i) { + if(lhs.pAccelerationStructures[i] != rhs.pAccelerationStructures[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkWriteDescriptorSetAccelerationStructureNV const &lhs, + VkWriteDescriptorSetAccelerationStructureNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAccelerationStructureMemoryRequirementsInfoNV const &lhs, + VkAccelerationStructureMemoryRequirementsInfoNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.type == rhs.type) && + (lhs.accelerationStructure == rhs.accelerationStructure); +} + +bool operator!=(VkAccelerationStructureMemoryRequirementsInfoNV const &lhs, + VkAccelerationStructureMemoryRequirementsInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceAccelerationStructureFeaturesKHR const &lhs, + VkPhysicalDeviceAccelerationStructureFeaturesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.accelerationStructure == rhs.accelerationStructure) && + (lhs.accelerationStructureCaptureReplay == rhs.accelerationStructureCaptureReplay) && + (lhs.accelerationStructureIndirectBuild == rhs.accelerationStructureIndirectBuild) && + (lhs.accelerationStructureHostCommands == rhs.accelerationStructureHostCommands) && + (lhs.descriptorBindingAccelerationStructureUpdateAfterBind == rhs.descriptorBindingAccelerationStructureUpdateAfterBind); +} + +bool operator!=(VkPhysicalDeviceAccelerationStructureFeaturesKHR const &lhs, + VkPhysicalDeviceAccelerationStructureFeaturesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceRayTracingPipelineFeaturesKHR const &lhs, + VkPhysicalDeviceRayTracingPipelineFeaturesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.rayTracingPipeline == rhs.rayTracingPipeline) && + (lhs.rayTracingPipelineShaderGroupHandleCaptureReplay == rhs.rayTracingPipelineShaderGroupHandleCaptureReplay) && + (lhs.rayTracingPipelineShaderGroupHandleCaptureReplayMixed == rhs.rayTracingPipelineShaderGroupHandleCaptureReplayMixed) && + (lhs.rayTracingPipelineTraceRaysIndirect == rhs.rayTracingPipelineTraceRaysIndirect) && + (lhs.rayTraversalPrimitiveCulling == rhs.rayTraversalPrimitiveCulling); +} + +bool operator!=(VkPhysicalDeviceRayTracingPipelineFeaturesKHR const &lhs, + VkPhysicalDeviceRayTracingPipelineFeaturesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceRayQueryFeaturesKHR const &lhs, + VkPhysicalDeviceRayQueryFeaturesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.rayQuery == rhs.rayQuery); +} + +bool operator!=(VkPhysicalDeviceRayQueryFeaturesKHR const &lhs, + VkPhysicalDeviceRayQueryFeaturesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceAccelerationStructurePropertiesKHR const &lhs, + VkPhysicalDeviceAccelerationStructurePropertiesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxGeometryCount == rhs.maxGeometryCount) && + (lhs.maxInstanceCount == rhs.maxInstanceCount) && + (lhs.maxPrimitiveCount == rhs.maxPrimitiveCount) && + (lhs.maxPerStageDescriptorAccelerationStructures == rhs.maxPerStageDescriptorAccelerationStructures) && + (lhs.maxPerStageDescriptorUpdateAfterBindAccelerationStructures == rhs.maxPerStageDescriptorUpdateAfterBindAccelerationStructures) && + (lhs.maxDescriptorSetAccelerationStructures == rhs.maxDescriptorSetAccelerationStructures) && + (lhs.maxDescriptorSetUpdateAfterBindAccelerationStructures == rhs.maxDescriptorSetUpdateAfterBindAccelerationStructures) && + (lhs.minAccelerationStructureScratchOffsetAlignment == rhs.minAccelerationStructureScratchOffsetAlignment); +} + +bool operator!=(VkPhysicalDeviceAccelerationStructurePropertiesKHR const &lhs, + VkPhysicalDeviceAccelerationStructurePropertiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceRayTracingPipelinePropertiesKHR const &lhs, + VkPhysicalDeviceRayTracingPipelinePropertiesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shaderGroupHandleSize == rhs.shaderGroupHandleSize) && + (lhs.maxRayRecursionDepth == rhs.maxRayRecursionDepth) && + (lhs.maxShaderGroupStride == rhs.maxShaderGroupStride) && + (lhs.shaderGroupBaseAlignment == rhs.shaderGroupBaseAlignment) && + (lhs.shaderGroupHandleCaptureReplaySize == rhs.shaderGroupHandleCaptureReplaySize) && + (lhs.maxRayDispatchInvocationCount == rhs.maxRayDispatchInvocationCount) && + (lhs.shaderGroupHandleAlignment == rhs.shaderGroupHandleAlignment) && + (lhs.maxRayHitAttributeSize == rhs.maxRayHitAttributeSize); +} + +bool operator!=(VkPhysicalDeviceRayTracingPipelinePropertiesKHR const &lhs, + VkPhysicalDeviceRayTracingPipelinePropertiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceRayTracingPropertiesNV const &lhs, + VkPhysicalDeviceRayTracingPropertiesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shaderGroupHandleSize == rhs.shaderGroupHandleSize) && + (lhs.maxRecursionDepth == rhs.maxRecursionDepth) && + (lhs.maxShaderGroupStride == rhs.maxShaderGroupStride) && + (lhs.shaderGroupBaseAlignment == rhs.shaderGroupBaseAlignment) && + (lhs.maxGeometryCount == rhs.maxGeometryCount) && + (lhs.maxInstanceCount == rhs.maxInstanceCount) && + (lhs.maxTriangleCount == rhs.maxTriangleCount) && + (lhs.maxDescriptorSetAccelerationStructures == rhs.maxDescriptorSetAccelerationStructures); +} + +bool operator!=(VkPhysicalDeviceRayTracingPropertiesNV const &lhs, + VkPhysicalDeviceRayTracingPropertiesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkStridedDeviceAddressRegionKHR const &lhs, + VkStridedDeviceAddressRegionKHR const &rhs) noexcept { + return (lhs.deviceAddress == rhs.deviceAddress) && + (lhs.stride == rhs.stride) && + (lhs.size == rhs.size); +} + +bool operator!=(VkStridedDeviceAddressRegionKHR const &lhs, + VkStridedDeviceAddressRegionKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkTraceRaysIndirectCommandKHR const &lhs, + VkTraceRaysIndirectCommandKHR const &rhs) noexcept { + return (lhs.width == rhs.width) && + (lhs.height == rhs.height) && + (lhs.depth == rhs.depth); +} + +bool operator!=(VkTraceRaysIndirectCommandKHR const &lhs, + VkTraceRaysIndirectCommandKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDrmFormatModifierPropertiesListEXT const &lhs, + VkDrmFormatModifierPropertiesListEXT const &rhs) noexcept { + if(lhs.drmFormatModifierCount != rhs.drmFormatModifierCount) + return false; + + for(uint32_t i = 0; i < lhs.drmFormatModifierCount; ++i) { + if(lhs.pDrmFormatModifierProperties[i] != rhs.pDrmFormatModifierProperties[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkDrmFormatModifierPropertiesListEXT const &lhs, + VkDrmFormatModifierPropertiesListEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDrmFormatModifierPropertiesEXT const &lhs, + VkDrmFormatModifierPropertiesEXT const &rhs) noexcept { + return (lhs.drmFormatModifier == rhs.drmFormatModifier) && + (lhs.drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount) && + (lhs.drmFormatModifierTilingFeatures == rhs.drmFormatModifierTilingFeatures); +} + +bool operator!=(VkDrmFormatModifierPropertiesEXT const &lhs, + VkDrmFormatModifierPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceImageDrmFormatModifierInfoEXT const &lhs, + VkPhysicalDeviceImageDrmFormatModifierInfoEXT const &rhs) noexcept { + if(lhs.queueFamilyIndexCount != rhs.queueFamilyIndexCount) + return false; + + for(uint32_t i = 0; i < lhs.queueFamilyIndexCount; ++i) { + if(lhs.pQueueFamilyIndices[i] != rhs.pQueueFamilyIndices[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.drmFormatModifier == rhs.drmFormatModifier) && + (lhs.sharingMode == rhs.sharingMode); +} + +bool operator!=(VkPhysicalDeviceImageDrmFormatModifierInfoEXT const &lhs, + VkPhysicalDeviceImageDrmFormatModifierInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageDrmFormatModifierListCreateInfoEXT const &lhs, + VkImageDrmFormatModifierListCreateInfoEXT const &rhs) noexcept { + if(lhs.drmFormatModifierCount != rhs.drmFormatModifierCount) + return false; + + for(uint32_t i = 0; i < lhs.drmFormatModifierCount; ++i) { + if(lhs.pDrmFormatModifiers[i] != rhs.pDrmFormatModifiers[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkImageDrmFormatModifierListCreateInfoEXT const &lhs, + VkImageDrmFormatModifierListCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageDrmFormatModifierExplicitCreateInfoEXT const &lhs, + VkImageDrmFormatModifierExplicitCreateInfoEXT const &rhs) noexcept { + if(lhs.drmFormatModifierPlaneCount != rhs.drmFormatModifierPlaneCount) + return false; + + for(uint32_t i = 0; i < lhs.drmFormatModifierPlaneCount; ++i) { + if(lhs.pPlaneLayouts[i] != rhs.pPlaneLayouts[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.drmFormatModifier == rhs.drmFormatModifier); +} + +bool operator!=(VkImageDrmFormatModifierExplicitCreateInfoEXT const &lhs, + VkImageDrmFormatModifierExplicitCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageDrmFormatModifierPropertiesEXT const &lhs, + VkImageDrmFormatModifierPropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.drmFormatModifier == rhs.drmFormatModifier); +} + +bool operator!=(VkImageDrmFormatModifierPropertiesEXT const &lhs, + VkImageDrmFormatModifierPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageStencilUsageCreateInfo const &lhs, + VkImageStencilUsageCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.stencilUsage == rhs.stencilUsage); +} + +bool operator!=(VkImageStencilUsageCreateInfo const &lhs, + VkImageStencilUsageCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDeviceMemoryOverallocationCreateInfoAMD const &lhs, + VkDeviceMemoryOverallocationCreateInfoAMD const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.overallocationBehavior == rhs.overallocationBehavior); +} + +bool operator!=(VkDeviceMemoryOverallocationCreateInfoAMD const &lhs, + VkDeviceMemoryOverallocationCreateInfoAMD const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceFragmentDensityMapFeaturesEXT const &lhs, + VkPhysicalDeviceFragmentDensityMapFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.fragmentDensityMap == rhs.fragmentDensityMap) && + (lhs.fragmentDensityMapDynamic == rhs.fragmentDensityMapDynamic) && + (lhs.fragmentDensityMapNonSubsampledImages == rhs.fragmentDensityMapNonSubsampledImages); +} + +bool operator!=(VkPhysicalDeviceFragmentDensityMapFeaturesEXT const &lhs, + VkPhysicalDeviceFragmentDensityMapFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const &lhs, + VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.fragmentDensityMapDeferred == rhs.fragmentDensityMapDeferred); +} + +bool operator!=(VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const &lhs, + VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceFragmentDensityMapPropertiesEXT const &lhs, + VkPhysicalDeviceFragmentDensityMapPropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.minFragmentDensityTexelSize == rhs.minFragmentDensityTexelSize) && + (lhs.maxFragmentDensityTexelSize == rhs.maxFragmentDensityTexelSize) && + (lhs.fragmentDensityInvocations == rhs.fragmentDensityInvocations); +} + +bool operator!=(VkPhysicalDeviceFragmentDensityMapPropertiesEXT const &lhs, + VkPhysicalDeviceFragmentDensityMapPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const &lhs, + VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.subsampledLoads == rhs.subsampledLoads) && + (lhs.subsampledCoarseReconstructionEarlyAccess == rhs.subsampledCoarseReconstructionEarlyAccess) && + (lhs.maxSubsampledArrayLayers == rhs.maxSubsampledArrayLayers) && + (lhs.maxDescriptorSetSubsampledSamplers == rhs.maxDescriptorSetSubsampledSamplers); +} + +bool operator!=(VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const &lhs, + VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkRenderPassFragmentDensityMapCreateInfoEXT const &lhs, + VkRenderPassFragmentDensityMapCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.fragmentDensityMapAttachment == rhs.fragmentDensityMapAttachment); +} + +bool operator!=(VkRenderPassFragmentDensityMapCreateInfoEXT const &lhs, + VkRenderPassFragmentDensityMapCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceScalarBlockLayoutFeatures const &lhs, + VkPhysicalDeviceScalarBlockLayoutFeatures const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.scalarBlockLayout == rhs.scalarBlockLayout); +} + +bool operator!=(VkPhysicalDeviceScalarBlockLayoutFeatures const &lhs, + VkPhysicalDeviceScalarBlockLayoutFeatures const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSurfaceProtectedCapabilitiesKHR const &lhs, + VkSurfaceProtectedCapabilitiesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.supportsProtected == rhs.supportsProtected); +} + +bool operator!=(VkSurfaceProtectedCapabilitiesKHR const &lhs, + VkSurfaceProtectedCapabilitiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceUniformBufferStandardLayoutFeatures const &lhs, + VkPhysicalDeviceUniformBufferStandardLayoutFeatures const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.uniformBufferStandardLayout == rhs.uniformBufferStandardLayout); +} + +bool operator!=(VkPhysicalDeviceUniformBufferStandardLayoutFeatures const &lhs, + VkPhysicalDeviceUniformBufferStandardLayoutFeatures const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceDepthClipEnableFeaturesEXT const &lhs, + VkPhysicalDeviceDepthClipEnableFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.depthClipEnable == rhs.depthClipEnable); +} + +bool operator!=(VkPhysicalDeviceDepthClipEnableFeaturesEXT const &lhs, + VkPhysicalDeviceDepthClipEnableFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineRasterizationDepthClipStateCreateInfoEXT const &lhs, + VkPipelineRasterizationDepthClipStateCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.depthClipEnable == rhs.depthClipEnable); +} + +bool operator!=(VkPipelineRasterizationDepthClipStateCreateInfoEXT const &lhs, + VkPipelineRasterizationDepthClipStateCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceMemoryBudgetPropertiesEXT const &lhs, + VkPhysicalDeviceMemoryBudgetPropertiesEXT const &rhs) noexcept { + for(uint32_t i = 0; i < VK_MAX_MEMORY_HEAPS; ++i) { + if(lhs.heapBudget[i] != rhs.heapBudget[i]) + return false; + } + + for(uint32_t i = 0; i < VK_MAX_MEMORY_HEAPS; ++i) { + if(lhs.heapUsage[i] != rhs.heapUsage[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkPhysicalDeviceMemoryBudgetPropertiesEXT const &lhs, + VkPhysicalDeviceMemoryBudgetPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceMemoryPriorityFeaturesEXT const &lhs, + VkPhysicalDeviceMemoryPriorityFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.memoryPriority == rhs.memoryPriority); +} + +bool operator!=(VkPhysicalDeviceMemoryPriorityFeaturesEXT const &lhs, + VkPhysicalDeviceMemoryPriorityFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMemoryPriorityAllocateInfoEXT const &lhs, + VkMemoryPriorityAllocateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.priority == rhs.priority); +} + +bool operator!=(VkMemoryPriorityAllocateInfoEXT const &lhs, + VkMemoryPriorityAllocateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const &lhs, + VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pageableDeviceLocalMemory == rhs.pageableDeviceLocalMemory); +} + +bool operator!=(VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const &lhs, + VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceBufferDeviceAddressFeatures const &lhs, + VkPhysicalDeviceBufferDeviceAddressFeatures const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.bufferDeviceAddress == rhs.bufferDeviceAddress) && + (lhs.bufferDeviceAddressCaptureReplay == rhs.bufferDeviceAddressCaptureReplay) && + (lhs.bufferDeviceAddressMultiDevice == rhs.bufferDeviceAddressMultiDevice); +} + +bool operator!=(VkPhysicalDeviceBufferDeviceAddressFeatures const &lhs, + VkPhysicalDeviceBufferDeviceAddressFeatures const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const &lhs, + VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.bufferDeviceAddress == rhs.bufferDeviceAddress) && + (lhs.bufferDeviceAddressCaptureReplay == rhs.bufferDeviceAddressCaptureReplay) && + (lhs.bufferDeviceAddressMultiDevice == rhs.bufferDeviceAddressMultiDevice); +} + +bool operator!=(VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const &lhs, + VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBufferDeviceAddressInfo const &lhs, + VkBufferDeviceAddressInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.buffer == rhs.buffer); +} + +bool operator!=(VkBufferDeviceAddressInfo const &lhs, + VkBufferDeviceAddressInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBufferOpaqueCaptureAddressCreateInfo const &lhs, + VkBufferOpaqueCaptureAddressCreateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.opaqueCaptureAddress == rhs.opaqueCaptureAddress); +} + +bool operator!=(VkBufferOpaqueCaptureAddressCreateInfo const &lhs, + VkBufferOpaqueCaptureAddressCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBufferDeviceAddressCreateInfoEXT const &lhs, + VkBufferDeviceAddressCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.deviceAddress == rhs.deviceAddress); +} + +bool operator!=(VkBufferDeviceAddressCreateInfoEXT const &lhs, + VkBufferDeviceAddressCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceImageViewImageFormatInfoEXT const &lhs, + VkPhysicalDeviceImageViewImageFormatInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.imageViewType == rhs.imageViewType); +} + +bool operator!=(VkPhysicalDeviceImageViewImageFormatInfoEXT const &lhs, + VkPhysicalDeviceImageViewImageFormatInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkFilterCubicImageViewImageFormatPropertiesEXT const &lhs, + VkFilterCubicImageViewImageFormatPropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.filterCubic == rhs.filterCubic) && + (lhs.filterCubicMinmax == rhs.filterCubicMinmax); +} + +bool operator!=(VkFilterCubicImageViewImageFormatPropertiesEXT const &lhs, + VkFilterCubicImageViewImageFormatPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceImagelessFramebufferFeatures const &lhs, + VkPhysicalDeviceImagelessFramebufferFeatures const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.imagelessFramebuffer == rhs.imagelessFramebuffer); +} + +bool operator!=(VkPhysicalDeviceImagelessFramebufferFeatures const &lhs, + VkPhysicalDeviceImagelessFramebufferFeatures const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkFramebufferAttachmentsCreateInfo const &lhs, + VkFramebufferAttachmentsCreateInfo const &rhs) noexcept { + if(lhs.attachmentImageInfoCount != rhs.attachmentImageInfoCount) + return false; + + for(uint32_t i = 0; i < lhs.attachmentImageInfoCount; ++i) { + if(lhs.pAttachmentImageInfos[i] != rhs.pAttachmentImageInfos[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkFramebufferAttachmentsCreateInfo const &lhs, + VkFramebufferAttachmentsCreateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkFramebufferAttachmentImageInfo const &lhs, + VkFramebufferAttachmentImageInfo const &rhs) noexcept { + if(lhs.viewFormatCount != rhs.viewFormatCount) + return false; + + for(uint32_t i = 0; i < lhs.viewFormatCount; ++i) { + if(lhs.pViewFormats[i] != rhs.pViewFormats[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.usage == rhs.usage) && + (lhs.width == rhs.width) && + (lhs.height == rhs.height) && + (lhs.layerCount == rhs.layerCount); +} + +bool operator!=(VkFramebufferAttachmentImageInfo const &lhs, + VkFramebufferAttachmentImageInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkRenderPassAttachmentBeginInfo const &lhs, + VkRenderPassAttachmentBeginInfo const &rhs) noexcept { + if(lhs.attachmentCount != rhs.attachmentCount) + return false; + + for(uint32_t i = 0; i < lhs.attachmentCount; ++i) { + if(lhs.pAttachments[i] != rhs.pAttachments[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkRenderPassAttachmentBeginInfo const &lhs, + VkRenderPassAttachmentBeginInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const &lhs, + VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.textureCompressionASTC_HDR == rhs.textureCompressionASTC_HDR); +} + +bool operator!=(VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const &lhs, + VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceCooperativeMatrixFeaturesNV const &lhs, + VkPhysicalDeviceCooperativeMatrixFeaturesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.cooperativeMatrix == rhs.cooperativeMatrix) && + (lhs.cooperativeMatrixRobustBufferAccess == rhs.cooperativeMatrixRobustBufferAccess); +} + +bool operator!=(VkPhysicalDeviceCooperativeMatrixFeaturesNV const &lhs, + VkPhysicalDeviceCooperativeMatrixFeaturesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceCooperativeMatrixPropertiesNV const &lhs, + VkPhysicalDeviceCooperativeMatrixPropertiesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.cooperativeMatrixSupportedStages == rhs.cooperativeMatrixSupportedStages); +} + +bool operator!=(VkPhysicalDeviceCooperativeMatrixPropertiesNV const &lhs, + VkPhysicalDeviceCooperativeMatrixPropertiesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCooperativeMatrixPropertiesNV const &lhs, + VkCooperativeMatrixPropertiesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.MSize == rhs.MSize) && + (lhs.NSize == rhs.NSize) && + (lhs.KSize == rhs.KSize) && + (lhs.AType == rhs.AType) && + (lhs.BType == rhs.BType) && + (lhs.CType == rhs.CType) && + (lhs.DType == rhs.DType) && + (lhs.scope == rhs.scope); +} + +bool operator!=(VkCooperativeMatrixPropertiesNV const &lhs, + VkCooperativeMatrixPropertiesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const &lhs, + VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.ycbcrImageArrays == rhs.ycbcrImageArrays); +} + +bool operator!=(VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const &lhs, + VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageViewHandleInfoNVX const &lhs, + VkImageViewHandleInfoNVX const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.imageView == rhs.imageView) && + (lhs.descriptorType == rhs.descriptorType) && + (lhs.sampler == rhs.sampler); +} + +bool operator!=(VkImageViewHandleInfoNVX const &lhs, + VkImageViewHandleInfoNVX const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageViewAddressPropertiesNVX const &lhs, + VkImageViewAddressPropertiesNVX const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.deviceAddress == rhs.deviceAddress) && + (lhs.size == rhs.size); +} + +bool operator!=(VkImageViewAddressPropertiesNVX const &lhs, + VkImageViewAddressPropertiesNVX const &rhs) noexcept { + return !(lhs == rhs); +} + +#ifdef VK_USE_PLATFORM_GGP +bool operator==(VkPresentFrameTokenGGP const &lhs, + VkPresentFrameTokenGGP const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.frameToken == rhs.frameToken); +} + +bool operator!=(VkPresentFrameTokenGGP const &lhs, + VkPresentFrameTokenGGP const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_GGP + +bool operator==(VkPipelineCreationFeedbackEXT const &lhs, + VkPipelineCreationFeedbackEXT const &rhs) noexcept { + return (lhs.flags == rhs.flags) && + (lhs.duration == rhs.duration); +} + +bool operator!=(VkPipelineCreationFeedbackEXT const &lhs, + VkPipelineCreationFeedbackEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineCreationFeedbackCreateInfoEXT const &lhs, + VkPipelineCreationFeedbackCreateInfoEXT const &rhs) noexcept { + if(lhs.pipelineStageCreationFeedbackCount != rhs.pipelineStageCreationFeedbackCount) + return false; + + for(uint32_t i = 0; i < lhs.pipelineStageCreationFeedbackCount; ++i) { + if(lhs.pPipelineStageCreationFeedbacks[i] != rhs.pPipelineStageCreationFeedbacks[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.pPipelineCreationFeedback == rhs.pPipelineCreationFeedback); +} + +bool operator!=(VkPipelineCreationFeedbackCreateInfoEXT const &lhs, + VkPipelineCreationFeedbackCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkSurfaceFullScreenExclusiveInfoEXT const &lhs, + VkSurfaceFullScreenExclusiveInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.fullScreenExclusive == rhs.fullScreenExclusive); +} + +bool operator!=(VkSurfaceFullScreenExclusiveInfoEXT const &lhs, + VkSurfaceFullScreenExclusiveInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkSurfaceFullScreenExclusiveWin32InfoEXT const &lhs, + VkSurfaceFullScreenExclusiveWin32InfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.hmonitor == rhs.hmonitor); +} + +bool operator!=(VkSurfaceFullScreenExclusiveWin32InfoEXT const &lhs, + VkSurfaceFullScreenExclusiveWin32InfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +bool operator==(VkSurfaceCapabilitiesFullScreenExclusiveEXT const &lhs, + VkSurfaceCapabilitiesFullScreenExclusiveEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.fullScreenExclusiveSupported == rhs.fullScreenExclusiveSupported); +} + +bool operator!=(VkSurfaceCapabilitiesFullScreenExclusiveEXT const &lhs, + VkSurfaceCapabilitiesFullScreenExclusiveEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_WIN32_KHR + +bool operator==(VkPhysicalDevicePerformanceQueryFeaturesKHR const &lhs, + VkPhysicalDevicePerformanceQueryFeaturesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.performanceCounterQueryPools == rhs.performanceCounterQueryPools) && + (lhs.performanceCounterMultipleQueryPools == rhs.performanceCounterMultipleQueryPools); +} + +bool operator!=(VkPhysicalDevicePerformanceQueryFeaturesKHR const &lhs, + VkPhysicalDevicePerformanceQueryFeaturesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDevicePerformanceQueryPropertiesKHR const &lhs, + VkPhysicalDevicePerformanceQueryPropertiesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.allowCommandBufferQueryCopies == rhs.allowCommandBufferQueryCopies); +} + +bool operator!=(VkPhysicalDevicePerformanceQueryPropertiesKHR const &lhs, + VkPhysicalDevicePerformanceQueryPropertiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPerformanceCounterKHR const &lhs, + VkPerformanceCounterKHR const &rhs) noexcept { + for(uint32_t i = 0; i < VK_UUID_SIZE; ++i) { + if(lhs.uuid[i] != rhs.uuid[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.unit == rhs.unit) && + (lhs.scope == rhs.scope) && + (lhs.storage == rhs.storage); +} + +bool operator!=(VkPerformanceCounterKHR const &lhs, + VkPerformanceCounterKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPerformanceCounterDescriptionKHR const &lhs, + VkPerformanceCounterDescriptionKHR const &rhs) noexcept { + for(uint32_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i) { + if(lhs.name[i] != rhs.name[i]) + return false; + } + + for(uint32_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i) { + if(lhs.category[i] != rhs.category[i]) + return false; + } + + for(uint32_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i) { + if(lhs.description[i] != rhs.description[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkPerformanceCounterDescriptionKHR const &lhs, + VkPerformanceCounterDescriptionKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkQueryPoolPerformanceCreateInfoKHR const &lhs, + VkQueryPoolPerformanceCreateInfoKHR const &rhs) noexcept { + if(lhs.counterIndexCount != rhs.counterIndexCount) + return false; + + for(uint32_t i = 0; i < lhs.counterIndexCount; ++i) { + if(lhs.pCounterIndices[i] != rhs.pCounterIndices[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.queueFamilyIndex == rhs.queueFamilyIndex); +} + +bool operator!=(VkQueryPoolPerformanceCreateInfoKHR const &lhs, + VkQueryPoolPerformanceCreateInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAcquireProfilingLockInfoKHR const &lhs, + VkAcquireProfilingLockInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.timeout == rhs.timeout); +} + +bool operator!=(VkAcquireProfilingLockInfoKHR const &lhs, + VkAcquireProfilingLockInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPerformanceQuerySubmitInfoKHR const &lhs, + VkPerformanceQuerySubmitInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.counterPassIndex == rhs.counterPassIndex); +} + +bool operator!=(VkPerformanceQuerySubmitInfoKHR const &lhs, + VkPerformanceQuerySubmitInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkHeadlessSurfaceCreateInfoEXT const &lhs, + VkHeadlessSurfaceCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkHeadlessSurfaceCreateInfoEXT const &lhs, + VkHeadlessSurfaceCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceCoverageReductionModeFeaturesNV const &lhs, + VkPhysicalDeviceCoverageReductionModeFeaturesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.coverageReductionMode == rhs.coverageReductionMode); +} + +bool operator!=(VkPhysicalDeviceCoverageReductionModeFeaturesNV const &lhs, + VkPhysicalDeviceCoverageReductionModeFeaturesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineCoverageReductionStateCreateInfoNV const &lhs, + VkPipelineCoverageReductionStateCreateInfoNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.coverageReductionMode == rhs.coverageReductionMode); +} + +bool operator!=(VkPipelineCoverageReductionStateCreateInfoNV const &lhs, + VkPipelineCoverageReductionStateCreateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkFramebufferMixedSamplesCombinationNV const &lhs, + VkFramebufferMixedSamplesCombinationNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.coverageReductionMode == rhs.coverageReductionMode) && + (lhs.rasterizationSamples == rhs.rasterizationSamples) && + (lhs.depthStencilSamples == rhs.depthStencilSamples) && + (lhs.colorSamples == rhs.colorSamples); +} + +bool operator!=(VkFramebufferMixedSamplesCombinationNV const &lhs, + VkFramebufferMixedSamplesCombinationNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const &lhs, + VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shaderIntegerFunctions2 == rhs.shaderIntegerFunctions2); +} + +bool operator!=(VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const &lhs, + VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkInitializePerformanceApiInfoINTEL const &lhs, + VkInitializePerformanceApiInfoINTEL const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pUserData == rhs.pUserData); +} + +bool operator!=(VkInitializePerformanceApiInfoINTEL const &lhs, + VkInitializePerformanceApiInfoINTEL const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkQueryPoolPerformanceQueryCreateInfoINTEL const &lhs, + VkQueryPoolPerformanceQueryCreateInfoINTEL const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.performanceCountersSampling == rhs.performanceCountersSampling); +} + +bool operator!=(VkQueryPoolPerformanceQueryCreateInfoINTEL const &lhs, + VkQueryPoolPerformanceQueryCreateInfoINTEL const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPerformanceMarkerInfoINTEL const &lhs, + VkPerformanceMarkerInfoINTEL const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.marker == rhs.marker); +} + +bool operator!=(VkPerformanceMarkerInfoINTEL const &lhs, + VkPerformanceMarkerInfoINTEL const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPerformanceStreamMarkerInfoINTEL const &lhs, + VkPerformanceStreamMarkerInfoINTEL const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.marker == rhs.marker); +} + +bool operator!=(VkPerformanceStreamMarkerInfoINTEL const &lhs, + VkPerformanceStreamMarkerInfoINTEL const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPerformanceOverrideInfoINTEL const &lhs, + VkPerformanceOverrideInfoINTEL const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.type == rhs.type) && + (lhs.enable == rhs.enable) && + (lhs.parameter == rhs.parameter); +} + +bool operator!=(VkPerformanceOverrideInfoINTEL const &lhs, + VkPerformanceOverrideInfoINTEL const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPerformanceConfigurationAcquireInfoINTEL const &lhs, + VkPerformanceConfigurationAcquireInfoINTEL const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.type == rhs.type); +} + +bool operator!=(VkPerformanceConfigurationAcquireInfoINTEL const &lhs, + VkPerformanceConfigurationAcquireInfoINTEL const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceShaderClockFeaturesKHR const &lhs, + VkPhysicalDeviceShaderClockFeaturesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shaderSubgroupClock == rhs.shaderSubgroupClock) && + (lhs.shaderDeviceClock == rhs.shaderDeviceClock); +} + +bool operator!=(VkPhysicalDeviceShaderClockFeaturesKHR const &lhs, + VkPhysicalDeviceShaderClockFeaturesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceIndexTypeUint8FeaturesEXT const &lhs, + VkPhysicalDeviceIndexTypeUint8FeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.indexTypeUint8 == rhs.indexTypeUint8); +} + +bool operator!=(VkPhysicalDeviceIndexTypeUint8FeaturesEXT const &lhs, + VkPhysicalDeviceIndexTypeUint8FeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const &lhs, + VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shaderSMCount == rhs.shaderSMCount) && + (lhs.shaderWarpsPerSM == rhs.shaderWarpsPerSM); +} + +bool operator!=(VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const &lhs, + VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const &lhs, + VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shaderSMBuiltins == rhs.shaderSMBuiltins); +} + +bool operator!=(VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const &lhs, + VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const &lhs, + VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.fragmentShaderSampleInterlock == rhs.fragmentShaderSampleInterlock) && + (lhs.fragmentShaderPixelInterlock == rhs.fragmentShaderPixelInterlock) && + (lhs.fragmentShaderShadingRateInterlock == rhs.fragmentShaderShadingRateInterlock); +} + +bool operator!=(VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const &lhs, + VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const &lhs, + VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.separateDepthStencilLayouts == rhs.separateDepthStencilLayouts); +} + +bool operator!=(VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const &lhs, + VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAttachmentReferenceStencilLayout const &lhs, + VkAttachmentReferenceStencilLayout const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.stencilLayout == rhs.stencilLayout); +} + +bool operator!=(VkAttachmentReferenceStencilLayout const &lhs, + VkAttachmentReferenceStencilLayout const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const &lhs, + VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.primitiveTopologyListRestart == rhs.primitiveTopologyListRestart) && + (lhs.primitiveTopologyPatchListRestart == rhs.primitiveTopologyPatchListRestart); +} + +bool operator!=(VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const &lhs, + VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAttachmentDescriptionStencilLayout const &lhs, + VkAttachmentDescriptionStencilLayout const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.stencilInitialLayout == rhs.stencilInitialLayout) && + (lhs.stencilFinalLayout == rhs.stencilFinalLayout); +} + +bool operator!=(VkAttachmentDescriptionStencilLayout const &lhs, + VkAttachmentDescriptionStencilLayout const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const &lhs, + VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pipelineExecutableInfo == rhs.pipelineExecutableInfo); +} + +bool operator!=(VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const &lhs, + VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineInfoKHR const &lhs, + VkPipelineInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pipeline == rhs.pipeline); +} + +bool operator!=(VkPipelineInfoKHR const &lhs, + VkPipelineInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineExecutablePropertiesKHR const &lhs, + VkPipelineExecutablePropertiesKHR const &rhs) noexcept { + for(uint32_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i) { + if(lhs.name[i] != rhs.name[i]) + return false; + } + + for(uint32_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i) { + if(lhs.description[i] != rhs.description[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.stages == rhs.stages) && + (lhs.subgroupSize == rhs.subgroupSize); +} + +bool operator!=(VkPipelineExecutablePropertiesKHR const &lhs, + VkPipelineExecutablePropertiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineExecutableInfoKHR const &lhs, + VkPipelineExecutableInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pipeline == rhs.pipeline) && + (lhs.executableIndex == rhs.executableIndex); +} + +bool operator!=(VkPipelineExecutableInfoKHR const &lhs, + VkPipelineExecutableInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineExecutableInternalRepresentationKHR const &lhs, + VkPipelineExecutableInternalRepresentationKHR const &rhs) noexcept { + if(lhs.dataSize != rhs.dataSize) + return false; + + for(uint32_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i) { + if(lhs.name[i] != rhs.name[i]) + return false; + } + + for(uint32_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i) { + if(lhs.description[i] != rhs.description[i]) + return false; + } + + if(memcmp(lhs.pData, rhs.pData, lhs.dataSize) != 0) + return false; + + return (lhs.sType == rhs.sType) && + (lhs.isText == rhs.isText); +} + +bool operator!=(VkPipelineExecutableInternalRepresentationKHR const &lhs, + VkPipelineExecutableInternalRepresentationKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const &lhs, + VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shaderDemoteToHelperInvocation == rhs.shaderDemoteToHelperInvocation); +} + +bool operator!=(VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const &lhs, + VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const &lhs, + VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.texelBufferAlignment == rhs.texelBufferAlignment); +} + +bool operator!=(VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const &lhs, + VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const &lhs, + VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.storageTexelBufferOffsetAlignmentBytes == rhs.storageTexelBufferOffsetAlignmentBytes) && + (lhs.storageTexelBufferOffsetSingleTexelAlignment == rhs.storageTexelBufferOffsetSingleTexelAlignment) && + (lhs.uniformTexelBufferOffsetAlignmentBytes == rhs.uniformTexelBufferOffsetAlignmentBytes) && + (lhs.uniformTexelBufferOffsetSingleTexelAlignment == rhs.uniformTexelBufferOffsetSingleTexelAlignment); +} + +bool operator!=(VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const &lhs, + VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const &lhs, + VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.subgroupSizeControl == rhs.subgroupSizeControl) && + (lhs.computeFullSubgroups == rhs.computeFullSubgroups); +} + +bool operator!=(VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const &lhs, + VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const &lhs, + VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.minSubgroupSize == rhs.minSubgroupSize) && + (lhs.maxSubgroupSize == rhs.maxSubgroupSize) && + (lhs.maxComputeWorkgroupSubgroups == rhs.maxComputeWorkgroupSubgroups) && + (lhs.requiredSubgroupSizeStages == rhs.requiredSubgroupSizeStages); +} + +bool operator!=(VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const &lhs, + VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const &lhs, + VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.requiredSubgroupSize == rhs.requiredSubgroupSize); +} + +bool operator!=(VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const &lhs, + VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSubpassShadingPipelineCreateInfoHUAWEI const &lhs, + VkSubpassShadingPipelineCreateInfoHUAWEI const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.renderPass == rhs.renderPass) && + (lhs.subpass == rhs.subpass); +} + +bool operator!=(VkSubpassShadingPipelineCreateInfoHUAWEI const &lhs, + VkSubpassShadingPipelineCreateInfoHUAWEI const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const &lhs, + VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxSubpassShadingWorkgroupSizeAspectRatio == rhs.maxSubpassShadingWorkgroupSizeAspectRatio); +} + +bool operator!=(VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const &lhs, + VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMemoryOpaqueCaptureAddressAllocateInfo const &lhs, + VkMemoryOpaqueCaptureAddressAllocateInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.opaqueCaptureAddress == rhs.opaqueCaptureAddress); +} + +bool operator!=(VkMemoryOpaqueCaptureAddressAllocateInfo const &lhs, + VkMemoryOpaqueCaptureAddressAllocateInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDeviceMemoryOpaqueCaptureAddressInfo const &lhs, + VkDeviceMemoryOpaqueCaptureAddressInfo const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.memory == rhs.memory); +} + +bool operator!=(VkDeviceMemoryOpaqueCaptureAddressInfo const &lhs, + VkDeviceMemoryOpaqueCaptureAddressInfo const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceLineRasterizationFeaturesEXT const &lhs, + VkPhysicalDeviceLineRasterizationFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.rectangularLines == rhs.rectangularLines) && + (lhs.bresenhamLines == rhs.bresenhamLines) && + (lhs.smoothLines == rhs.smoothLines) && + (lhs.stippledRectangularLines == rhs.stippledRectangularLines) && + (lhs.stippledBresenhamLines == rhs.stippledBresenhamLines) && + (lhs.stippledSmoothLines == rhs.stippledSmoothLines); +} + +bool operator!=(VkPhysicalDeviceLineRasterizationFeaturesEXT const &lhs, + VkPhysicalDeviceLineRasterizationFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceLineRasterizationPropertiesEXT const &lhs, + VkPhysicalDeviceLineRasterizationPropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.lineSubPixelPrecisionBits == rhs.lineSubPixelPrecisionBits); +} + +bool operator!=(VkPhysicalDeviceLineRasterizationPropertiesEXT const &lhs, + VkPhysicalDeviceLineRasterizationPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineRasterizationLineStateCreateInfoEXT const &lhs, + VkPipelineRasterizationLineStateCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.lineRasterizationMode == rhs.lineRasterizationMode) && + (lhs.stippledLineEnable == rhs.stippledLineEnable) && + (lhs.lineStippleFactor == rhs.lineStippleFactor) && + (lhs.lineStipplePattern == rhs.lineStipplePattern); +} + +bool operator!=(VkPipelineRasterizationLineStateCreateInfoEXT const &lhs, + VkPipelineRasterizationLineStateCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT const &lhs, + VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pipelineCreationCacheControl == rhs.pipelineCreationCacheControl); +} + +bool operator!=(VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT const &lhs, + VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceVulkan11Features const &lhs, + VkPhysicalDeviceVulkan11Features const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.storageBuffer16BitAccess == rhs.storageBuffer16BitAccess) && + (lhs.uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess) && + (lhs.storagePushConstant16 == rhs.storagePushConstant16) && + (lhs.storageInputOutput16 == rhs.storageInputOutput16) && + (lhs.multiview == rhs.multiview) && + (lhs.multiviewGeometryShader == rhs.multiviewGeometryShader) && + (lhs.multiviewTessellationShader == rhs.multiviewTessellationShader) && + (lhs.variablePointersStorageBuffer == rhs.variablePointersStorageBuffer) && + (lhs.variablePointers == rhs.variablePointers) && + (lhs.protectedMemory == rhs.protectedMemory) && + (lhs.samplerYcbcrConversion == rhs.samplerYcbcrConversion) && + (lhs.shaderDrawParameters == rhs.shaderDrawParameters); +} + +bool operator!=(VkPhysicalDeviceVulkan11Features const &lhs, + VkPhysicalDeviceVulkan11Features const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceVulkan11Properties const &lhs, + VkPhysicalDeviceVulkan11Properties const &rhs) noexcept { + for(uint32_t i = 0; i < VK_UUID_SIZE; ++i) { + if(lhs.deviceUUID[i] != rhs.deviceUUID[i]) + return false; + } + + for(uint32_t i = 0; i < VK_UUID_SIZE; ++i) { + if(lhs.driverUUID[i] != rhs.driverUUID[i]) + return false; + } + + for(uint32_t i = 0; i < VK_LUID_SIZE; ++i) { + if(lhs.deviceLUID[i] != rhs.deviceLUID[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.deviceNodeMask == rhs.deviceNodeMask) && + (lhs.deviceLUIDValid == rhs.deviceLUIDValid) && + (lhs.subgroupSize == rhs.subgroupSize) && + (lhs.subgroupSupportedStages == rhs.subgroupSupportedStages) && + (lhs.subgroupSupportedOperations == rhs.subgroupSupportedOperations) && + (lhs.subgroupQuadOperationsInAllStages == rhs.subgroupQuadOperationsInAllStages) && + (lhs.pointClippingBehavior == rhs.pointClippingBehavior) && + (lhs.maxMultiviewViewCount == rhs.maxMultiviewViewCount) && + (lhs.maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex) && + (lhs.protectedNoFault == rhs.protectedNoFault) && + (lhs.maxPerSetDescriptors == rhs.maxPerSetDescriptors) && + (lhs.maxMemoryAllocationSize == rhs.maxMemoryAllocationSize); +} + +bool operator!=(VkPhysicalDeviceVulkan11Properties const &lhs, + VkPhysicalDeviceVulkan11Properties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceVulkan12Features const &lhs, + VkPhysicalDeviceVulkan12Features const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.samplerMirrorClampToEdge == rhs.samplerMirrorClampToEdge) && + (lhs.drawIndirectCount == rhs.drawIndirectCount) && + (lhs.storageBuffer8BitAccess == rhs.storageBuffer8BitAccess) && + (lhs.uniformAndStorageBuffer8BitAccess == rhs.uniformAndStorageBuffer8BitAccess) && + (lhs.storagePushConstant8 == rhs.storagePushConstant8) && + (lhs.shaderBufferInt64Atomics == rhs.shaderBufferInt64Atomics) && + (lhs.shaderSharedInt64Atomics == rhs.shaderSharedInt64Atomics) && + (lhs.shaderFloat16 == rhs.shaderFloat16) && + (lhs.shaderInt8 == rhs.shaderInt8) && + (lhs.descriptorIndexing == rhs.descriptorIndexing) && + (lhs.shaderInputAttachmentArrayDynamicIndexing == rhs.shaderInputAttachmentArrayDynamicIndexing) && + (lhs.shaderUniformTexelBufferArrayDynamicIndexing == rhs.shaderUniformTexelBufferArrayDynamicIndexing) && + (lhs.shaderStorageTexelBufferArrayDynamicIndexing == rhs.shaderStorageTexelBufferArrayDynamicIndexing) && + (lhs.shaderUniformBufferArrayNonUniformIndexing == rhs.shaderUniformBufferArrayNonUniformIndexing) && + (lhs.shaderSampledImageArrayNonUniformIndexing == rhs.shaderSampledImageArrayNonUniformIndexing) && + (lhs.shaderStorageBufferArrayNonUniformIndexing == rhs.shaderStorageBufferArrayNonUniformIndexing) && + (lhs.shaderStorageImageArrayNonUniformIndexing == rhs.shaderStorageImageArrayNonUniformIndexing) && + (lhs.shaderInputAttachmentArrayNonUniformIndexing == rhs.shaderInputAttachmentArrayNonUniformIndexing) && + (lhs.shaderUniformTexelBufferArrayNonUniformIndexing == rhs.shaderUniformTexelBufferArrayNonUniformIndexing) && + (lhs.shaderStorageTexelBufferArrayNonUniformIndexing == rhs.shaderStorageTexelBufferArrayNonUniformIndexing) && + (lhs.descriptorBindingUniformBufferUpdateAfterBind == rhs.descriptorBindingUniformBufferUpdateAfterBind) && + (lhs.descriptorBindingSampledImageUpdateAfterBind == rhs.descriptorBindingSampledImageUpdateAfterBind) && + (lhs.descriptorBindingStorageImageUpdateAfterBind == rhs.descriptorBindingStorageImageUpdateAfterBind) && + (lhs.descriptorBindingStorageBufferUpdateAfterBind == rhs.descriptorBindingStorageBufferUpdateAfterBind) && + (lhs.descriptorBindingUniformTexelBufferUpdateAfterBind == rhs.descriptorBindingUniformTexelBufferUpdateAfterBind) && + (lhs.descriptorBindingStorageTexelBufferUpdateAfterBind == rhs.descriptorBindingStorageTexelBufferUpdateAfterBind) && + (lhs.descriptorBindingUpdateUnusedWhilePending == rhs.descriptorBindingUpdateUnusedWhilePending) && + (lhs.descriptorBindingPartiallyBound == rhs.descriptorBindingPartiallyBound) && + (lhs.descriptorBindingVariableDescriptorCount == rhs.descriptorBindingVariableDescriptorCount) && + (lhs.runtimeDescriptorArray == rhs.runtimeDescriptorArray) && + (lhs.samplerFilterMinmax == rhs.samplerFilterMinmax) && + (lhs.scalarBlockLayout == rhs.scalarBlockLayout) && + (lhs.imagelessFramebuffer == rhs.imagelessFramebuffer) && + (lhs.uniformBufferStandardLayout == rhs.uniformBufferStandardLayout) && + (lhs.shaderSubgroupExtendedTypes == rhs.shaderSubgroupExtendedTypes) && + (lhs.separateDepthStencilLayouts == rhs.separateDepthStencilLayouts) && + (lhs.hostQueryReset == rhs.hostQueryReset) && + (lhs.timelineSemaphore == rhs.timelineSemaphore) && + (lhs.bufferDeviceAddress == rhs.bufferDeviceAddress) && + (lhs.bufferDeviceAddressCaptureReplay == rhs.bufferDeviceAddressCaptureReplay) && + (lhs.bufferDeviceAddressMultiDevice == rhs.bufferDeviceAddressMultiDevice) && + (lhs.vulkanMemoryModel == rhs.vulkanMemoryModel) && + (lhs.vulkanMemoryModelDeviceScope == rhs.vulkanMemoryModelDeviceScope) && + (lhs.vulkanMemoryModelAvailabilityVisibilityChains == rhs.vulkanMemoryModelAvailabilityVisibilityChains) && + (lhs.shaderOutputViewportIndex == rhs.shaderOutputViewportIndex) && + (lhs.shaderOutputLayer == rhs.shaderOutputLayer) && + (lhs.subgroupBroadcastDynamicId == rhs.subgroupBroadcastDynamicId); +} + +bool operator!=(VkPhysicalDeviceVulkan12Features const &lhs, + VkPhysicalDeviceVulkan12Features const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceVulkan12Properties const &lhs, + VkPhysicalDeviceVulkan12Properties const &rhs) noexcept { + for(uint32_t i = 0; i < VK_MAX_DRIVER_NAME_SIZE; ++i) { + if(lhs.driverName[i] != rhs.driverName[i]) + return false; + } + + for(uint32_t i = 0; i < VK_MAX_DRIVER_INFO_SIZE; ++i) { + if(lhs.driverInfo[i] != rhs.driverInfo[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.driverID == rhs.driverID) && + (lhs.conformanceVersion == rhs.conformanceVersion) && + (lhs.denormBehaviorIndependence == rhs.denormBehaviorIndependence) && + (lhs.roundingModeIndependence == rhs.roundingModeIndependence) && + (lhs.shaderSignedZeroInfNanPreserveFloat16 == rhs.shaderSignedZeroInfNanPreserveFloat16) && + (lhs.shaderSignedZeroInfNanPreserveFloat32 == rhs.shaderSignedZeroInfNanPreserveFloat32) && + (lhs.shaderSignedZeroInfNanPreserveFloat64 == rhs.shaderSignedZeroInfNanPreserveFloat64) && + (lhs.shaderDenormPreserveFloat16 == rhs.shaderDenormPreserveFloat16) && + (lhs.shaderDenormPreserveFloat32 == rhs.shaderDenormPreserveFloat32) && + (lhs.shaderDenormPreserveFloat64 == rhs.shaderDenormPreserveFloat64) && + (lhs.shaderDenormFlushToZeroFloat16 == rhs.shaderDenormFlushToZeroFloat16) && + (lhs.shaderDenormFlushToZeroFloat32 == rhs.shaderDenormFlushToZeroFloat32) && + (lhs.shaderDenormFlushToZeroFloat64 == rhs.shaderDenormFlushToZeroFloat64) && + (lhs.shaderRoundingModeRTEFloat16 == rhs.shaderRoundingModeRTEFloat16) && + (lhs.shaderRoundingModeRTEFloat32 == rhs.shaderRoundingModeRTEFloat32) && + (lhs.shaderRoundingModeRTEFloat64 == rhs.shaderRoundingModeRTEFloat64) && + (lhs.shaderRoundingModeRTZFloat16 == rhs.shaderRoundingModeRTZFloat16) && + (lhs.shaderRoundingModeRTZFloat32 == rhs.shaderRoundingModeRTZFloat32) && + (lhs.shaderRoundingModeRTZFloat64 == rhs.shaderRoundingModeRTZFloat64) && + (lhs.maxUpdateAfterBindDescriptorsInAllPools == rhs.maxUpdateAfterBindDescriptorsInAllPools) && + (lhs.shaderUniformBufferArrayNonUniformIndexingNative == rhs.shaderUniformBufferArrayNonUniformIndexingNative) && + (lhs.shaderSampledImageArrayNonUniformIndexingNative == rhs.shaderSampledImageArrayNonUniformIndexingNative) && + (lhs.shaderStorageBufferArrayNonUniformIndexingNative == rhs.shaderStorageBufferArrayNonUniformIndexingNative) && + (lhs.shaderStorageImageArrayNonUniformIndexingNative == rhs.shaderStorageImageArrayNonUniformIndexingNative) && + (lhs.shaderInputAttachmentArrayNonUniformIndexingNative == rhs.shaderInputAttachmentArrayNonUniformIndexingNative) && + (lhs.robustBufferAccessUpdateAfterBind == rhs.robustBufferAccessUpdateAfterBind) && + (lhs.quadDivergentImplicitLod == rhs.quadDivergentImplicitLod) && + (lhs.maxPerStageDescriptorUpdateAfterBindSamplers == rhs.maxPerStageDescriptorUpdateAfterBindSamplers) && + (lhs.maxPerStageDescriptorUpdateAfterBindUniformBuffers == rhs.maxPerStageDescriptorUpdateAfterBindUniformBuffers) && + (lhs.maxPerStageDescriptorUpdateAfterBindStorageBuffers == rhs.maxPerStageDescriptorUpdateAfterBindStorageBuffers) && + (lhs.maxPerStageDescriptorUpdateAfterBindSampledImages == rhs.maxPerStageDescriptorUpdateAfterBindSampledImages) && + (lhs.maxPerStageDescriptorUpdateAfterBindStorageImages == rhs.maxPerStageDescriptorUpdateAfterBindStorageImages) && + (lhs.maxPerStageDescriptorUpdateAfterBindInputAttachments == rhs.maxPerStageDescriptorUpdateAfterBindInputAttachments) && + (lhs.maxPerStageUpdateAfterBindResources == rhs.maxPerStageUpdateAfterBindResources) && + (lhs.maxDescriptorSetUpdateAfterBindSamplers == rhs.maxDescriptorSetUpdateAfterBindSamplers) && + (lhs.maxDescriptorSetUpdateAfterBindUniformBuffers == rhs.maxDescriptorSetUpdateAfterBindUniformBuffers) && + (lhs.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic) && + (lhs.maxDescriptorSetUpdateAfterBindStorageBuffers == rhs.maxDescriptorSetUpdateAfterBindStorageBuffers) && + (lhs.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic) && + (lhs.maxDescriptorSetUpdateAfterBindSampledImages == rhs.maxDescriptorSetUpdateAfterBindSampledImages) && + (lhs.maxDescriptorSetUpdateAfterBindStorageImages == rhs.maxDescriptorSetUpdateAfterBindStorageImages) && + (lhs.maxDescriptorSetUpdateAfterBindInputAttachments == rhs.maxDescriptorSetUpdateAfterBindInputAttachments) && + (lhs.supportedDepthResolveModes == rhs.supportedDepthResolveModes) && + (lhs.supportedStencilResolveModes == rhs.supportedStencilResolveModes) && + (lhs.independentResolveNone == rhs.independentResolveNone) && + (lhs.independentResolve == rhs.independentResolve) && + (lhs.filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats) && + (lhs.filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping) && + (lhs.maxTimelineSemaphoreValueDifference == rhs.maxTimelineSemaphoreValueDifference) && + (lhs.framebufferIntegerColorSampleCounts == rhs.framebufferIntegerColorSampleCounts); +} + +bool operator!=(VkPhysicalDeviceVulkan12Properties const &lhs, + VkPhysicalDeviceVulkan12Properties const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineCompilerControlCreateInfoAMD const &lhs, + VkPipelineCompilerControlCreateInfoAMD const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.compilerControlFlags == rhs.compilerControlFlags); +} + +bool operator!=(VkPipelineCompilerControlCreateInfoAMD const &lhs, + VkPipelineCompilerControlCreateInfoAMD const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceCoherentMemoryFeaturesAMD const &lhs, + VkPhysicalDeviceCoherentMemoryFeaturesAMD const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.deviceCoherentMemory == rhs.deviceCoherentMemory); +} + +bool operator!=(VkPhysicalDeviceCoherentMemoryFeaturesAMD const &lhs, + VkPhysicalDeviceCoherentMemoryFeaturesAMD const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceToolPropertiesEXT const &lhs, + VkPhysicalDeviceToolPropertiesEXT const &rhs) noexcept { + for(uint32_t i = 0; i < VK_MAX_EXTENSION_NAME_SIZE; ++i) { + if(lhs.name[i] != rhs.name[i]) + return false; + } + + for(uint32_t i = 0; i < VK_MAX_EXTENSION_NAME_SIZE; ++i) { + if(lhs.version[i] != rhs.version[i]) + return false; + } + + for(uint32_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i) { + if(lhs.description[i] != rhs.description[i]) + return false; + } + + for(uint32_t i = 0; i < VK_MAX_EXTENSION_NAME_SIZE; ++i) { + if(lhs.layer[i] != rhs.layer[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.purposes == rhs.purposes); +} + +bool operator!=(VkPhysicalDeviceToolPropertiesEXT const &lhs, + VkPhysicalDeviceToolPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceCustomBorderColorPropertiesEXT const &lhs, + VkPhysicalDeviceCustomBorderColorPropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxCustomBorderColorSamplers == rhs.maxCustomBorderColorSamplers); +} + +bool operator!=(VkPhysicalDeviceCustomBorderColorPropertiesEXT const &lhs, + VkPhysicalDeviceCustomBorderColorPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceCustomBorderColorFeaturesEXT const &lhs, + VkPhysicalDeviceCustomBorderColorFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.customBorderColors == rhs.customBorderColors) && + (lhs.customBorderColorWithoutFormat == rhs.customBorderColorWithoutFormat); +} + +bool operator!=(VkPhysicalDeviceCustomBorderColorFeaturesEXT const &lhs, + VkPhysicalDeviceCustomBorderColorFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSamplerBorderColorComponentMappingCreateInfoEXT const &lhs, + VkSamplerBorderColorComponentMappingCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.components == rhs.components) && + (lhs.srgb == rhs.srgb); +} + +bool operator!=(VkSamplerBorderColorComponentMappingCreateInfoEXT const &lhs, + VkSamplerBorderColorComponentMappingCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const &lhs, + VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.borderColorSwizzle == rhs.borderColorSwizzle) && + (lhs.borderColorSwizzleFromImage == rhs.borderColorSwizzleFromImage); +} + +bool operator!=(VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const &lhs, + VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAccelerationStructureBuildRangeInfoKHR const &lhs, + VkAccelerationStructureBuildRangeInfoKHR const &rhs) noexcept { + return (lhs.primitiveCount == rhs.primitiveCount) && + (lhs.primitiveOffset == rhs.primitiveOffset) && + (lhs.firstVertex == rhs.firstVertex) && + (lhs.transformOffset == rhs.transformOffset); +} + +bool operator!=(VkAccelerationStructureBuildRangeInfoKHR const &lhs, + VkAccelerationStructureBuildRangeInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAccelerationStructureCreateInfoKHR const &lhs, + VkAccelerationStructureCreateInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.createFlags == rhs.createFlags) && + (lhs.buffer == rhs.buffer) && + (lhs.offset == rhs.offset) && + (lhs.size == rhs.size) && + (lhs.type == rhs.type) && + (lhs.deviceAddress == rhs.deviceAddress); +} + +bool operator!=(VkAccelerationStructureCreateInfoKHR const &lhs, + VkAccelerationStructureCreateInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAabbPositionsKHR const &lhs, + VkAabbPositionsKHR const &rhs) noexcept { + return (lhs.minX == rhs.minX) && + (lhs.minY == rhs.minY) && + (lhs.minZ == rhs.minZ) && + (lhs.maxX == rhs.maxX) && + (lhs.maxY == rhs.maxY) && + (lhs.maxZ == rhs.maxZ); +} + +bool operator!=(VkAabbPositionsKHR const &lhs, + VkAabbPositionsKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkTransformMatrixKHR const &lhs, + VkTransformMatrixKHR const &rhs) noexcept { + for(uint32_t i = 0; i < 3; ++i) { + for(uint32_t j = 0; j < 4; ++j) { + if(lhs.matrix[i][j] != rhs.matrix[i][j]) + return false; + } + } + + return true; +} + +bool operator!=(VkTransformMatrixKHR const &lhs, + VkTransformMatrixKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAccelerationStructureInstanceKHR const &lhs, + VkAccelerationStructureInstanceKHR const &rhs) noexcept { + return (lhs.transform == rhs.transform) && + (lhs.instanceCustomIndex == rhs.instanceCustomIndex) && + (lhs.mask == rhs.mask) && + (lhs.instanceShaderBindingTableRecordOffset == rhs.instanceShaderBindingTableRecordOffset) && + (lhs.flags == rhs.flags) && + (lhs.accelerationStructureReference == rhs.accelerationStructureReference); +} + +bool operator!=(VkAccelerationStructureInstanceKHR const &lhs, + VkAccelerationStructureInstanceKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAccelerationStructureDeviceAddressInfoKHR const &lhs, + VkAccelerationStructureDeviceAddressInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.accelerationStructure == rhs.accelerationStructure); +} + +bool operator!=(VkAccelerationStructureDeviceAddressInfoKHR const &lhs, + VkAccelerationStructureDeviceAddressInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAccelerationStructureVersionInfoKHR const &lhs, + VkAccelerationStructureVersionInfoKHR const &rhs) noexcept { + if(lhs.VK\_UUID\_SIZE != rhs.VK\_UUID\_SIZE) + return false; + + for(uint32_t i = 0; i < 2*VK_UUID_SIZE; ++i) { + if(lhs.pVersionData[i] != rhs.pVersionData[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkAccelerationStructureVersionInfoKHR const &lhs, + VkAccelerationStructureVersionInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCopyAccelerationStructureInfoKHR const &lhs, + VkCopyAccelerationStructureInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.src == rhs.src) && + (lhs.dst == rhs.dst) && + (lhs.mode == rhs.mode); +} + +bool operator!=(VkCopyAccelerationStructureInfoKHR const &lhs, + VkCopyAccelerationStructureInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkRayTracingPipelineInterfaceCreateInfoKHR const &lhs, + VkRayTracingPipelineInterfaceCreateInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxPipelineRayPayloadSize == rhs.maxPipelineRayPayloadSize) && + (lhs.maxPipelineRayHitAttributeSize == rhs.maxPipelineRayHitAttributeSize); +} + +bool operator!=(VkRayTracingPipelineInterfaceCreateInfoKHR const &lhs, + VkRayTracingPipelineInterfaceCreateInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineLibraryCreateInfoKHR const &lhs, + VkPipelineLibraryCreateInfoKHR const &rhs) noexcept { + if(lhs.libraryCount != rhs.libraryCount) + return false; + + for(uint32_t i = 0; i < lhs.libraryCount; ++i) { + if(lhs.pLibraries[i] != rhs.pLibraries[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkPipelineLibraryCreateInfoKHR const &lhs, + VkPipelineLibraryCreateInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const &lhs, + VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.extendedDynamicState == rhs.extendedDynamicState); +} + +bool operator!=(VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const &lhs, + VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const &lhs, + VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.extendedDynamicState2 == rhs.extendedDynamicState2) && + (lhs.extendedDynamicState2LogicOp == rhs.extendedDynamicState2LogicOp) && + (lhs.extendedDynamicState2PatchControlPoints == rhs.extendedDynamicState2PatchControlPoints); +} + +bool operator!=(VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const &lhs, + VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkRenderPassTransformBeginInfoQCOM const &lhs, + VkRenderPassTransformBeginInfoQCOM const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.transform == rhs.transform); +} + +bool operator!=(VkRenderPassTransformBeginInfoQCOM const &lhs, + VkRenderPassTransformBeginInfoQCOM const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCopyCommandTransformInfoQCOM const &lhs, + VkCopyCommandTransformInfoQCOM const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.transform == rhs.transform); +} + +bool operator!=(VkCopyCommandTransformInfoQCOM const &lhs, + VkCopyCommandTransformInfoQCOM const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCommandBufferInheritanceRenderPassTransformInfoQCOM const &lhs, + VkCommandBufferInheritanceRenderPassTransformInfoQCOM const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.transform == rhs.transform) && + (lhs.renderArea == rhs.renderArea); +} + +bool operator!=(VkCommandBufferInheritanceRenderPassTransformInfoQCOM const &lhs, + VkCommandBufferInheritanceRenderPassTransformInfoQCOM const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceDiagnosticsConfigFeaturesNV const &lhs, + VkPhysicalDeviceDiagnosticsConfigFeaturesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.diagnosticsConfig == rhs.diagnosticsConfig); +} + +bool operator!=(VkPhysicalDeviceDiagnosticsConfigFeaturesNV const &lhs, + VkPhysicalDeviceDiagnosticsConfigFeaturesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDeviceDiagnosticsConfigCreateInfoNV const &lhs, + VkDeviceDiagnosticsConfigCreateInfoNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkDeviceDiagnosticsConfigCreateInfoNV const &lhs, + VkDeviceDiagnosticsConfigCreateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const &lhs, + VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shaderZeroInitializeWorkgroupMemory == rhs.shaderZeroInitializeWorkgroupMemory); +} + +bool operator!=(VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const &lhs, + VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const &lhs, + VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shaderSubgroupUniformControlFlow == rhs.shaderSubgroupUniformControlFlow); +} + +bool operator!=(VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const &lhs, + VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceRobustness2FeaturesEXT const &lhs, + VkPhysicalDeviceRobustness2FeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.robustBufferAccess2 == rhs.robustBufferAccess2) && + (lhs.robustImageAccess2 == rhs.robustImageAccess2) && + (lhs.nullDescriptor == rhs.nullDescriptor); +} + +bool operator!=(VkPhysicalDeviceRobustness2FeaturesEXT const &lhs, + VkPhysicalDeviceRobustness2FeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceRobustness2PropertiesEXT const &lhs, + VkPhysicalDeviceRobustness2PropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.robustStorageBufferAccessSizeAlignment == rhs.robustStorageBufferAccessSizeAlignment) && + (lhs.robustUniformBufferAccessSizeAlignment == rhs.robustUniformBufferAccessSizeAlignment); +} + +bool operator!=(VkPhysicalDeviceRobustness2PropertiesEXT const &lhs, + VkPhysicalDeviceRobustness2PropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceImageRobustnessFeaturesEXT const &lhs, + VkPhysicalDeviceImageRobustnessFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.robustImageAccess == rhs.robustImageAccess); +} + +bool operator!=(VkPhysicalDeviceImageRobustnessFeaturesEXT const &lhs, + VkPhysicalDeviceImageRobustnessFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const &lhs, + VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.workgroupMemoryExplicitLayout == rhs.workgroupMemoryExplicitLayout) && + (lhs.workgroupMemoryExplicitLayoutScalarBlockLayout == rhs.workgroupMemoryExplicitLayoutScalarBlockLayout) && + (lhs.workgroupMemoryExplicitLayout8BitAccess == rhs.workgroupMemoryExplicitLayout8BitAccess) && + (lhs.workgroupMemoryExplicitLayout16BitAccess == rhs.workgroupMemoryExplicitLayout16BitAccess); +} + +bool operator!=(VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const &lhs, + VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkPhysicalDevicePortabilitySubsetFeaturesKHR const &lhs, + VkPhysicalDevicePortabilitySubsetFeaturesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.constantAlphaColorBlendFactors == rhs.constantAlphaColorBlendFactors) && + (lhs.events == rhs.events) && + (lhs.imageViewFormatReinterpretation == rhs.imageViewFormatReinterpretation) && + (lhs.imageViewFormatSwizzle == rhs.imageViewFormatSwizzle) && + (lhs.imageView2DOn3DImage == rhs.imageView2DOn3DImage) && + (lhs.multisampleArrayImage == rhs.multisampleArrayImage) && + (lhs.mutableComparisonSamplers == rhs.mutableComparisonSamplers) && + (lhs.pointPolygons == rhs.pointPolygons) && + (lhs.samplerMipLodBias == rhs.samplerMipLodBias) && + (lhs.separateStencilMaskRef == rhs.separateStencilMaskRef) && + (lhs.shaderSampleRateInterpolationFunctions == rhs.shaderSampleRateInterpolationFunctions) && + (lhs.tessellationIsolines == rhs.tessellationIsolines) && + (lhs.tessellationPointMode == rhs.tessellationPointMode) && + (lhs.triangleFans == rhs.triangleFans) && + (lhs.vertexAttributeAccessBeyondStride == rhs.vertexAttributeAccessBeyondStride); +} + +bool operator!=(VkPhysicalDevicePortabilitySubsetFeaturesKHR const &lhs, + VkPhysicalDevicePortabilitySubsetFeaturesKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkPhysicalDevicePortabilitySubsetPropertiesKHR const &lhs, + VkPhysicalDevicePortabilitySubsetPropertiesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.minVertexInputBindingStrideAlignment == rhs.minVertexInputBindingStrideAlignment); +} + +bool operator!=(VkPhysicalDevicePortabilitySubsetPropertiesKHR const &lhs, + VkPhysicalDevicePortabilitySubsetPropertiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +bool operator==(VkPhysicalDevice4444FormatsFeaturesEXT const &lhs, + VkPhysicalDevice4444FormatsFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.formatA4R4G4B4 == rhs.formatA4R4G4B4) && + (lhs.formatA4B4G4R4 == rhs.formatA4B4G4R4); +} + +bool operator!=(VkPhysicalDevice4444FormatsFeaturesEXT const &lhs, + VkPhysicalDevice4444FormatsFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const &lhs, + VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.subpassShading == rhs.subpassShading); +} + +bool operator!=(VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const &lhs, + VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBufferCopy2KHR const &lhs, + VkBufferCopy2KHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.srcOffset == rhs.srcOffset) && + (lhs.dstOffset == rhs.dstOffset) && + (lhs.size == rhs.size); +} + +bool operator!=(VkBufferCopy2KHR const &lhs, + VkBufferCopy2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageCopy2KHR const &lhs, + VkImageCopy2KHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.srcSubresource == rhs.srcSubresource) && + (lhs.srcOffset == rhs.srcOffset) && + (lhs.dstSubresource == rhs.dstSubresource) && + (lhs.dstOffset == rhs.dstOffset) && + (lhs.extent == rhs.extent); +} + +bool operator!=(VkImageCopy2KHR const &lhs, + VkImageCopy2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageBlit2KHR const &lhs, + VkImageBlit2KHR const &rhs) noexcept { + for(uint32_t i = 0; i < 2; ++i) { + if(lhs.srcOffsets[i] != rhs.srcOffsets[i]) + return false; + } + + for(uint32_t i = 0; i < 2; ++i) { + if(lhs.dstOffsets[i] != rhs.dstOffsets[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.srcSubresource == rhs.srcSubresource) && + (lhs.dstSubresource == rhs.dstSubresource); +} + +bool operator!=(VkImageBlit2KHR const &lhs, + VkImageBlit2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBufferImageCopy2KHR const &lhs, + VkBufferImageCopy2KHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.bufferOffset == rhs.bufferOffset) && + (lhs.bufferRowLength == rhs.bufferRowLength) && + (lhs.bufferImageHeight == rhs.bufferImageHeight) && + (lhs.imageSubresource == rhs.imageSubresource) && + (lhs.imageOffset == rhs.imageOffset) && + (lhs.imageExtent == rhs.imageExtent); +} + +bool operator!=(VkBufferImageCopy2KHR const &lhs, + VkBufferImageCopy2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageResolve2KHR const &lhs, + VkImageResolve2KHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.srcSubresource == rhs.srcSubresource) && + (lhs.srcOffset == rhs.srcOffset) && + (lhs.dstSubresource == rhs.dstSubresource) && + (lhs.dstOffset == rhs.dstOffset) && + (lhs.extent == rhs.extent); +} + +bool operator!=(VkImageResolve2KHR const &lhs, + VkImageResolve2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCopyBufferInfo2KHR const &lhs, + VkCopyBufferInfo2KHR const &rhs) noexcept { + if(lhs.regionCount != rhs.regionCount) + return false; + + for(uint32_t i = 0; i < lhs.regionCount; ++i) { + if(lhs.pRegions[i] != rhs.pRegions[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.srcBuffer == rhs.srcBuffer) && + (lhs.dstBuffer == rhs.dstBuffer); +} + +bool operator!=(VkCopyBufferInfo2KHR const &lhs, + VkCopyBufferInfo2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCopyImageInfo2KHR const &lhs, + VkCopyImageInfo2KHR const &rhs) noexcept { + if(lhs.regionCount != rhs.regionCount) + return false; + + for(uint32_t i = 0; i < lhs.regionCount; ++i) { + if(lhs.pRegions[i] != rhs.pRegions[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.srcImage == rhs.srcImage) && + (lhs.srcImageLayout == rhs.srcImageLayout) && + (lhs.dstImage == rhs.dstImage) && + (lhs.dstImageLayout == rhs.dstImageLayout); +} + +bool operator!=(VkCopyImageInfo2KHR const &lhs, + VkCopyImageInfo2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBlitImageInfo2KHR const &lhs, + VkBlitImageInfo2KHR const &rhs) noexcept { + if(lhs.regionCount != rhs.regionCount) + return false; + + for(uint32_t i = 0; i < lhs.regionCount; ++i) { + if(lhs.pRegions[i] != rhs.pRegions[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.srcImage == rhs.srcImage) && + (lhs.srcImageLayout == rhs.srcImageLayout) && + (lhs.dstImage == rhs.dstImage) && + (lhs.dstImageLayout == rhs.dstImageLayout) && + (lhs.filter == rhs.filter); +} + +bool operator!=(VkBlitImageInfo2KHR const &lhs, + VkBlitImageInfo2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCopyBufferToImageInfo2KHR const &lhs, + VkCopyBufferToImageInfo2KHR const &rhs) noexcept { + if(lhs.regionCount != rhs.regionCount) + return false; + + for(uint32_t i = 0; i < lhs.regionCount; ++i) { + if(lhs.pRegions[i] != rhs.pRegions[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.srcBuffer == rhs.srcBuffer) && + (lhs.dstImage == rhs.dstImage) && + (lhs.dstImageLayout == rhs.dstImageLayout); +} + +bool operator!=(VkCopyBufferToImageInfo2KHR const &lhs, + VkCopyBufferToImageInfo2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCopyImageToBufferInfo2KHR const &lhs, + VkCopyImageToBufferInfo2KHR const &rhs) noexcept { + if(lhs.regionCount != rhs.regionCount) + return false; + + for(uint32_t i = 0; i < lhs.regionCount; ++i) { + if(lhs.pRegions[i] != rhs.pRegions[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.srcImage == rhs.srcImage) && + (lhs.srcImageLayout == rhs.srcImageLayout) && + (lhs.dstBuffer == rhs.dstBuffer); +} + +bool operator!=(VkCopyImageToBufferInfo2KHR const &lhs, + VkCopyImageToBufferInfo2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkResolveImageInfo2KHR const &lhs, + VkResolveImageInfo2KHR const &rhs) noexcept { + if(lhs.regionCount != rhs.regionCount) + return false; + + for(uint32_t i = 0; i < lhs.regionCount; ++i) { + if(lhs.pRegions[i] != rhs.pRegions[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.srcImage == rhs.srcImage) && + (lhs.srcImageLayout == rhs.srcImageLayout) && + (lhs.dstImage == rhs.dstImage) && + (lhs.dstImageLayout == rhs.dstImageLayout); +} + +bool operator!=(VkResolveImageInfo2KHR const &lhs, + VkResolveImageInfo2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const &lhs, + VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shaderImageInt64Atomics == rhs.shaderImageInt64Atomics) && + (lhs.sparseImageInt64Atomics == rhs.sparseImageInt64Atomics); +} + +bool operator!=(VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const &lhs, + VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkFragmentShadingRateAttachmentInfoKHR const &lhs, + VkFragmentShadingRateAttachmentInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pFragmentShadingRateAttachment == rhs.pFragmentShadingRateAttachment) && + (lhs.shadingRateAttachmentTexelSize == rhs.shadingRateAttachmentTexelSize); +} + +bool operator!=(VkFragmentShadingRateAttachmentInfoKHR const &lhs, + VkFragmentShadingRateAttachmentInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineFragmentShadingRateStateCreateInfoKHR const &lhs, + VkPipelineFragmentShadingRateStateCreateInfoKHR const &rhs) noexcept { + for(uint32_t i = 0; i < 2; ++i) { + if(lhs.combinerOps[i] != rhs.combinerOps[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.fragmentSize == rhs.fragmentSize); +} + +bool operator!=(VkPipelineFragmentShadingRateStateCreateInfoKHR const &lhs, + VkPipelineFragmentShadingRateStateCreateInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceFragmentShadingRateFeaturesKHR const &lhs, + VkPhysicalDeviceFragmentShadingRateFeaturesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pipelineFragmentShadingRate == rhs.pipelineFragmentShadingRate) && + (lhs.primitiveFragmentShadingRate == rhs.primitiveFragmentShadingRate) && + (lhs.attachmentFragmentShadingRate == rhs.attachmentFragmentShadingRate); +} + +bool operator!=(VkPhysicalDeviceFragmentShadingRateFeaturesKHR const &lhs, + VkPhysicalDeviceFragmentShadingRateFeaturesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceFragmentShadingRatePropertiesKHR const &lhs, + VkPhysicalDeviceFragmentShadingRatePropertiesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.minFragmentShadingRateAttachmentTexelSize == rhs.minFragmentShadingRateAttachmentTexelSize) && + (lhs.maxFragmentShadingRateAttachmentTexelSize == rhs.maxFragmentShadingRateAttachmentTexelSize) && + (lhs.maxFragmentShadingRateAttachmentTexelSizeAspectRatio == rhs.maxFragmentShadingRateAttachmentTexelSizeAspectRatio) && + (lhs.primitiveFragmentShadingRateWithMultipleViewports == rhs.primitiveFragmentShadingRateWithMultipleViewports) && + (lhs.layeredShadingRateAttachments == rhs.layeredShadingRateAttachments) && + (lhs.fragmentShadingRateNonTrivialCombinerOps == rhs.fragmentShadingRateNonTrivialCombinerOps) && + (lhs.maxFragmentSize == rhs.maxFragmentSize) && + (lhs.maxFragmentSizeAspectRatio == rhs.maxFragmentSizeAspectRatio) && + (lhs.maxFragmentShadingRateCoverageSamples == rhs.maxFragmentShadingRateCoverageSamples) && + (lhs.maxFragmentShadingRateRasterizationSamples == rhs.maxFragmentShadingRateRasterizationSamples) && + (lhs.fragmentShadingRateWithShaderDepthStencilWrites == rhs.fragmentShadingRateWithShaderDepthStencilWrites) && + (lhs.fragmentShadingRateWithSampleMask == rhs.fragmentShadingRateWithSampleMask) && + (lhs.fragmentShadingRateWithShaderSampleMask == rhs.fragmentShadingRateWithShaderSampleMask) && + (lhs.fragmentShadingRateWithConservativeRasterization == rhs.fragmentShadingRateWithConservativeRasterization) && + (lhs.fragmentShadingRateWithFragmentShaderInterlock == rhs.fragmentShadingRateWithFragmentShaderInterlock) && + (lhs.fragmentShadingRateWithCustomSampleLocations == rhs.fragmentShadingRateWithCustomSampleLocations) && + (lhs.fragmentShadingRateStrictMultiplyCombiner == rhs.fragmentShadingRateStrictMultiplyCombiner); +} + +bool operator!=(VkPhysicalDeviceFragmentShadingRatePropertiesKHR const &lhs, + VkPhysicalDeviceFragmentShadingRatePropertiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceFragmentShadingRateKHR const &lhs, + VkPhysicalDeviceFragmentShadingRateKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.sampleCounts == rhs.sampleCounts) && + (lhs.fragmentSize == rhs.fragmentSize); +} + +bool operator!=(VkPhysicalDeviceFragmentShadingRateKHR const &lhs, + VkPhysicalDeviceFragmentShadingRateKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR const &lhs, + VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shaderTerminateInvocation == rhs.shaderTerminateInvocation); +} + +bool operator!=(VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR const &lhs, + VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const &lhs, + VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.fragmentShadingRateEnums == rhs.fragmentShadingRateEnums) && + (lhs.supersampleFragmentShadingRates == rhs.supersampleFragmentShadingRates) && + (lhs.noInvocationFragmentShadingRates == rhs.noInvocationFragmentShadingRates); +} + +bool operator!=(VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const &lhs, + VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const &lhs, + VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxFragmentShadingRateInvocationCount == rhs.maxFragmentShadingRateInvocationCount); +} + +bool operator!=(VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const &lhs, + VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineFragmentShadingRateEnumStateCreateInfoNV const &lhs, + VkPipelineFragmentShadingRateEnumStateCreateInfoNV const &rhs) noexcept { + for(uint32_t i = 0; i < 2; ++i) { + if(lhs.combinerOps[i] != rhs.combinerOps[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.shadingRateType == rhs.shadingRateType) && + (lhs.shadingRate == rhs.shadingRate); +} + +bool operator!=(VkPipelineFragmentShadingRateEnumStateCreateInfoNV const &lhs, + VkPipelineFragmentShadingRateEnumStateCreateInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAccelerationStructureBuildSizesInfoKHR const &lhs, + VkAccelerationStructureBuildSizesInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.accelerationStructureSize == rhs.accelerationStructureSize) && + (lhs.updateScratchSize == rhs.updateScratchSize) && + (lhs.buildScratchSize == rhs.buildScratchSize); +} + +bool operator!=(VkAccelerationStructureBuildSizesInfoKHR const &lhs, + VkAccelerationStructureBuildSizesInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const &lhs, + VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.mutableDescriptorType == rhs.mutableDescriptorType); +} + +bool operator!=(VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const &lhs, + VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMutableDescriptorTypeListVALVE const &lhs, + VkMutableDescriptorTypeListVALVE const &rhs) noexcept { + if(lhs.descriptorTypeCount != rhs.descriptorTypeCount) + return false; + + for(uint32_t i = 0; i < lhs.descriptorTypeCount; ++i) { + if(lhs.pDescriptorTypes[i] != rhs.pDescriptorTypes[i]) + return false; + } + + return true; +} + +bool operator!=(VkMutableDescriptorTypeListVALVE const &lhs, + VkMutableDescriptorTypeListVALVE const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMutableDescriptorTypeCreateInfoVALVE const &lhs, + VkMutableDescriptorTypeCreateInfoVALVE const &rhs) noexcept { + if(lhs.mutableDescriptorTypeListCount != rhs.mutableDescriptorTypeListCount) + return false; + + for(uint32_t i = 0; i < lhs.mutableDescriptorTypeListCount; ++i) { + if(lhs.pMutableDescriptorTypeLists[i] != rhs.pMutableDescriptorTypeLists[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkMutableDescriptorTypeCreateInfoVALVE const &lhs, + VkMutableDescriptorTypeCreateInfoVALVE const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const &lhs, + VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.vertexInputDynamicState == rhs.vertexInputDynamicState); +} + +bool operator!=(VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const &lhs, + VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const &lhs, + VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.externalMemoryRDMA == rhs.externalMemoryRDMA); +} + +bool operator!=(VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const &lhs, + VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkVertexInputBindingDescription2EXT const &lhs, + VkVertexInputBindingDescription2EXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.binding == rhs.binding) && + (lhs.stride == rhs.stride) && + (lhs.inputRate == rhs.inputRate) && + (lhs.divisor == rhs.divisor); +} + +bool operator!=(VkVertexInputBindingDescription2EXT const &lhs, + VkVertexInputBindingDescription2EXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkVertexInputAttributeDescription2EXT const &lhs, + VkVertexInputAttributeDescription2EXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.location == rhs.location) && + (lhs.binding == rhs.binding) && + (lhs.format == rhs.format) && + (lhs.offset == rhs.offset); +} + +bool operator!=(VkVertexInputAttributeDescription2EXT const &lhs, + VkVertexInputAttributeDescription2EXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceColorWriteEnableFeaturesEXT const &lhs, + VkPhysicalDeviceColorWriteEnableFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.colorWriteEnable == rhs.colorWriteEnable); +} + +bool operator!=(VkPhysicalDeviceColorWriteEnableFeaturesEXT const &lhs, + VkPhysicalDeviceColorWriteEnableFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineColorWriteCreateInfoEXT const &lhs, + VkPipelineColorWriteCreateInfoEXT const &rhs) noexcept { + if(lhs.attachmentCount != rhs.attachmentCount) + return false; + + for(uint32_t i = 0; i < lhs.attachmentCount; ++i) { + if(lhs.pColorWriteEnables[i] != rhs.pColorWriteEnables[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkPipelineColorWriteCreateInfoEXT const &lhs, + VkPipelineColorWriteCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMemoryBarrier2KHR const &lhs, + VkMemoryBarrier2KHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.srcStageMask == rhs.srcStageMask) && + (lhs.srcAccessMask == rhs.srcAccessMask) && + (lhs.dstStageMask == rhs.dstStageMask) && + (lhs.dstAccessMask == rhs.dstAccessMask); +} + +bool operator!=(VkMemoryBarrier2KHR const &lhs, + VkMemoryBarrier2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkImageMemoryBarrier2KHR const &lhs, + VkImageMemoryBarrier2KHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.srcStageMask == rhs.srcStageMask) && + (lhs.srcAccessMask == rhs.srcAccessMask) && + (lhs.dstStageMask == rhs.dstStageMask) && + (lhs.dstAccessMask == rhs.dstAccessMask) && + (lhs.oldLayout == rhs.oldLayout) && + (lhs.newLayout == rhs.newLayout) && + (lhs.srcQueueFamilyIndex == rhs.srcQueueFamilyIndex) && + (lhs.dstQueueFamilyIndex == rhs.dstQueueFamilyIndex) && + (lhs.image == rhs.image) && + (lhs.subresourceRange == rhs.subresourceRange); +} + +bool operator!=(VkImageMemoryBarrier2KHR const &lhs, + VkImageMemoryBarrier2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkBufferMemoryBarrier2KHR const &lhs, + VkBufferMemoryBarrier2KHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.srcStageMask == rhs.srcStageMask) && + (lhs.srcAccessMask == rhs.srcAccessMask) && + (lhs.dstStageMask == rhs.dstStageMask) && + (lhs.dstAccessMask == rhs.dstAccessMask) && + (lhs.srcQueueFamilyIndex == rhs.srcQueueFamilyIndex) && + (lhs.dstQueueFamilyIndex == rhs.dstQueueFamilyIndex) && + (lhs.buffer == rhs.buffer) && + (lhs.offset == rhs.offset) && + (lhs.size == rhs.size); +} + +bool operator!=(VkBufferMemoryBarrier2KHR const &lhs, + VkBufferMemoryBarrier2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDependencyInfoKHR const &lhs, + VkDependencyInfoKHR const &rhs) noexcept { + if(lhs.memoryBarrierCount != rhs.memoryBarrierCount) + return false; + + if(lhs.bufferMemoryBarrierCount != rhs.bufferMemoryBarrierCount) + return false; + + if(lhs.imageMemoryBarrierCount != rhs.imageMemoryBarrierCount) + return false; + + for(uint32_t i = 0; i < lhs.memoryBarrierCount; ++i) { + if(lhs.pMemoryBarriers[i] != rhs.pMemoryBarriers[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.bufferMemoryBarrierCount; ++i) { + if(lhs.pBufferMemoryBarriers[i] != rhs.pBufferMemoryBarriers[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.imageMemoryBarrierCount; ++i) { + if(lhs.pImageMemoryBarriers[i] != rhs.pImageMemoryBarriers[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.dependencyFlags == rhs.dependencyFlags); +} + +bool operator!=(VkDependencyInfoKHR const &lhs, + VkDependencyInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSemaphoreSubmitInfoKHR const &lhs, + VkSemaphoreSubmitInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.semaphore == rhs.semaphore) && + (lhs.value == rhs.value) && + (lhs.stageMask == rhs.stageMask) && + (lhs.deviceIndex == rhs.deviceIndex); +} + +bool operator!=(VkSemaphoreSubmitInfoKHR const &lhs, + VkSemaphoreSubmitInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCommandBufferSubmitInfoKHR const &lhs, + VkCommandBufferSubmitInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.commandBuffer == rhs.commandBuffer) && + (lhs.deviceMask == rhs.deviceMask); +} + +bool operator!=(VkCommandBufferSubmitInfoKHR const &lhs, + VkCommandBufferSubmitInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSubmitInfo2KHR const &lhs, + VkSubmitInfo2KHR const &rhs) noexcept { + if(lhs.waitSemaphoreInfoCount != rhs.waitSemaphoreInfoCount) + return false; + + if(lhs.commandBufferInfoCount != rhs.commandBufferInfoCount) + return false; + + if(lhs.signalSemaphoreInfoCount != rhs.signalSemaphoreInfoCount) + return false; + + for(uint32_t i = 0; i < lhs.waitSemaphoreInfoCount; ++i) { + if(lhs.pWaitSemaphoreInfos[i] != rhs.pWaitSemaphoreInfos[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.commandBufferInfoCount; ++i) { + if(lhs.pCommandBufferInfos[i] != rhs.pCommandBufferInfos[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.signalSemaphoreInfoCount; ++i) { + if(lhs.pSignalSemaphoreInfos[i] != rhs.pSignalSemaphoreInfos[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkSubmitInfo2KHR const &lhs, + VkSubmitInfo2KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkQueueFamilyCheckpointProperties2NV const &lhs, + VkQueueFamilyCheckpointProperties2NV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.checkpointExecutionStageMask == rhs.checkpointExecutionStageMask); +} + +bool operator!=(VkQueueFamilyCheckpointProperties2NV const &lhs, + VkQueueFamilyCheckpointProperties2NV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCheckpointData2NV const &lhs, + VkCheckpointData2NV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.stage == rhs.stage) && + (lhs.pCheckpointMarker == rhs.pCheckpointMarker); +} + +bool operator!=(VkCheckpointData2NV const &lhs, + VkCheckpointData2NV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceSynchronization2FeaturesKHR const &lhs, + VkPhysicalDeviceSynchronization2FeaturesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.synchronization2 == rhs.synchronization2); +} + +bool operator!=(VkPhysicalDeviceSynchronization2FeaturesKHR const &lhs, + VkPhysicalDeviceSynchronization2FeaturesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoQueueFamilyProperties2KHR const &lhs, + VkVideoQueueFamilyProperties2KHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.videoCodecOperations == rhs.videoCodecOperations); +} + +bool operator!=(VkVideoQueueFamilyProperties2KHR const &lhs, + VkVideoQueueFamilyProperties2KHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoProfilesKHR const &lhs, + VkVideoProfilesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.profileCount == rhs.profileCount) && + (lhs.pProfiles == rhs.pProfiles); +} + +bool operator!=(VkVideoProfilesKHR const &lhs, + VkVideoProfilesKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkPhysicalDeviceVideoFormatInfoKHR const &lhs, + VkPhysicalDeviceVideoFormatInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.imageUsage == rhs.imageUsage) && + (lhs.pVideoProfiles == rhs.pVideoProfiles); +} + +bool operator!=(VkPhysicalDeviceVideoFormatInfoKHR const &lhs, + VkPhysicalDeviceVideoFormatInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoFormatPropertiesKHR const &lhs, + VkVideoFormatPropertiesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.format == rhs.format); +} + +bool operator!=(VkVideoFormatPropertiesKHR const &lhs, + VkVideoFormatPropertiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoProfileKHR const &lhs, + VkVideoProfileKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.videoCodecOperation == rhs.videoCodecOperation) && + (lhs.chromaSubsampling == rhs.chromaSubsampling) && + (lhs.lumaBitDepth == rhs.lumaBitDepth) && + (lhs.chromaBitDepth == rhs.chromaBitDepth); +} + +bool operator!=(VkVideoProfileKHR const &lhs, + VkVideoProfileKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoCapabilitiesKHR const &lhs, + VkVideoCapabilitiesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.capabilityFlags == rhs.capabilityFlags) && + (lhs.minBitstreamBufferOffsetAlignment == rhs.minBitstreamBufferOffsetAlignment) && + (lhs.minBitstreamBufferSizeAlignment == rhs.minBitstreamBufferSizeAlignment) && + (lhs.videoPictureExtentGranularity == rhs.videoPictureExtentGranularity) && + (lhs.minExtent == rhs.minExtent) && + (lhs.maxExtent == rhs.maxExtent) && + (lhs.maxReferencePicturesSlotsCount == rhs.maxReferencePicturesSlotsCount) && + (lhs.maxReferencePicturesActiveCount == rhs.maxReferencePicturesActiveCount); +} + +bool operator!=(VkVideoCapabilitiesKHR const &lhs, + VkVideoCapabilitiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoGetMemoryPropertiesKHR const &lhs, + VkVideoGetMemoryPropertiesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.memoryBindIndex == rhs.memoryBindIndex) && + (lhs.pMemoryRequirements == rhs.pMemoryRequirements); +} + +bool operator!=(VkVideoGetMemoryPropertiesKHR const &lhs, + VkVideoGetMemoryPropertiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoBindMemoryKHR const &lhs, + VkVideoBindMemoryKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.memoryBindIndex == rhs.memoryBindIndex) && + (lhs.memory == rhs.memory) && + (lhs.memoryOffset == rhs.memoryOffset) && + (lhs.memorySize == rhs.memorySize); +} + +bool operator!=(VkVideoBindMemoryKHR const &lhs, + VkVideoBindMemoryKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoPictureResourceKHR const &lhs, + VkVideoPictureResourceKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.codedOffset == rhs.codedOffset) && + (lhs.codedExtent == rhs.codedExtent) && + (lhs.baseArrayLayer == rhs.baseArrayLayer) && + (lhs.imageViewBinding == rhs.imageViewBinding); +} + +bool operator!=(VkVideoPictureResourceKHR const &lhs, + VkVideoPictureResourceKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoReferenceSlotKHR const &lhs, + VkVideoReferenceSlotKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.slotIndex == rhs.slotIndex) && + (lhs.pPictureResource == rhs.pPictureResource); +} + +bool operator!=(VkVideoReferenceSlotKHR const &lhs, + VkVideoReferenceSlotKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeInfoKHR const &lhs, + VkVideoDecodeInfoKHR const &rhs) noexcept { + if(lhs.referenceSlotCount != rhs.referenceSlotCount) + return false; + + for(uint32_t i = 0; i < lhs.referenceSlotCount; ++i) { + if(lhs.pReferenceSlots[i] != rhs.pReferenceSlots[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.codedOffset == rhs.codedOffset) && + (lhs.codedExtent == rhs.codedExtent) && + (lhs.srcBuffer == rhs.srcBuffer) && + (lhs.srcBufferOffset == rhs.srcBufferOffset) && + (lhs.srcBufferRange == rhs.srcBufferRange) && + (lhs.dstPictureResource == rhs.dstPictureResource) && + (lhs.pSetupReferenceSlot == rhs.pSetupReferenceSlot); +} + +bool operator!=(VkVideoDecodeInfoKHR const &lhs, + VkVideoDecodeInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH264ProfileEXT const &lhs, + VkVideoDecodeH264ProfileEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.stdProfileIdc == rhs.stdProfileIdc) && + (lhs.pictureLayout == rhs.pictureLayout); +} + +bool operator!=(VkVideoDecodeH264ProfileEXT const &lhs, + VkVideoDecodeH264ProfileEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH264CapabilitiesEXT const &lhs, + VkVideoDecodeH264CapabilitiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxLevel == rhs.maxLevel) && + (lhs.fieldOffsetGranularity == rhs.fieldOffsetGranularity) && + (lhs.stdExtensionVersion == rhs.stdExtensionVersion); +} + +bool operator!=(VkVideoDecodeH264CapabilitiesEXT const &lhs, + VkVideoDecodeH264CapabilitiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH264SessionCreateInfoEXT const &lhs, + VkVideoDecodeH264SessionCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.pStdExtensionVersion == rhs.pStdExtensionVersion); +} + +bool operator!=(VkVideoDecodeH264SessionCreateInfoEXT const &lhs, + VkVideoDecodeH264SessionCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH264SessionParametersAddInfoEXT const &lhs, + VkVideoDecodeH264SessionParametersAddInfoEXT const &rhs) noexcept { + if(lhs.spsStdCount != rhs.spsStdCount) + return false; + + if(lhs.ppsStdCount != rhs.ppsStdCount) + return false; + + for(uint32_t i = 0; i < lhs.spsStdCount; ++i) { + if(lhs.pSpsStd[i] != rhs.pSpsStd[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.ppsStdCount; ++i) { + if(lhs.pPpsStd[i] != rhs.pPpsStd[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkVideoDecodeH264SessionParametersAddInfoEXT const &lhs, + VkVideoDecodeH264SessionParametersAddInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH264SessionParametersCreateInfoEXT const &lhs, + VkVideoDecodeH264SessionParametersCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxSpsStdCount == rhs.maxSpsStdCount) && + (lhs.maxPpsStdCount == rhs.maxPpsStdCount) && + (lhs.pParametersAddInfo == rhs.pParametersAddInfo); +} + +bool operator!=(VkVideoDecodeH264SessionParametersCreateInfoEXT const &lhs, + VkVideoDecodeH264SessionParametersCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH264PictureInfoEXT const &lhs, + VkVideoDecodeH264PictureInfoEXT const &rhs) noexcept { + if(lhs.slicesCount != rhs.slicesCount) + return false; + + for(uint32_t i = 0; i < lhs.slicesCount; ++i) { + if(lhs.pSlicesDataOffsets[i] != rhs.pSlicesDataOffsets[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.pStdPictureInfo == rhs.pStdPictureInfo); +} + +bool operator!=(VkVideoDecodeH264PictureInfoEXT const &lhs, + VkVideoDecodeH264PictureInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH264DpbSlotInfoEXT const &lhs, + VkVideoDecodeH264DpbSlotInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pStdReferenceInfo == rhs.pStdReferenceInfo); +} + +bool operator!=(VkVideoDecodeH264DpbSlotInfoEXT const &lhs, + VkVideoDecodeH264DpbSlotInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH264MvcEXT const &lhs, + VkVideoDecodeH264MvcEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pStdMvc == rhs.pStdMvc); +} + +bool operator!=(VkVideoDecodeH264MvcEXT const &lhs, + VkVideoDecodeH264MvcEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH265ProfileEXT const &lhs, + VkVideoDecodeH265ProfileEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.stdProfileIdc == rhs.stdProfileIdc); +} + +bool operator!=(VkVideoDecodeH265ProfileEXT const &lhs, + VkVideoDecodeH265ProfileEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH265CapabilitiesEXT const &lhs, + VkVideoDecodeH265CapabilitiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxLevel == rhs.maxLevel) && + (lhs.stdExtensionVersion == rhs.stdExtensionVersion); +} + +bool operator!=(VkVideoDecodeH265CapabilitiesEXT const &lhs, + VkVideoDecodeH265CapabilitiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH265SessionCreateInfoEXT const &lhs, + VkVideoDecodeH265SessionCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.pStdExtensionVersion == rhs.pStdExtensionVersion); +} + +bool operator!=(VkVideoDecodeH265SessionCreateInfoEXT const &lhs, + VkVideoDecodeH265SessionCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH265SessionParametersAddInfoEXT const &lhs, + VkVideoDecodeH265SessionParametersAddInfoEXT const &rhs) noexcept { + if(lhs.spsStdCount != rhs.spsStdCount) + return false; + + if(lhs.ppsStdCount != rhs.ppsStdCount) + return false; + + for(uint32_t i = 0; i < lhs.spsStdCount; ++i) { + if(lhs.pSpsStd[i] != rhs.pSpsStd[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.ppsStdCount; ++i) { + if(lhs.pPpsStd[i] != rhs.pPpsStd[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkVideoDecodeH265SessionParametersAddInfoEXT const &lhs, + VkVideoDecodeH265SessionParametersAddInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH265SessionParametersCreateInfoEXT const &lhs, + VkVideoDecodeH265SessionParametersCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxSpsStdCount == rhs.maxSpsStdCount) && + (lhs.maxPpsStdCount == rhs.maxPpsStdCount) && + (lhs.pParametersAddInfo == rhs.pParametersAddInfo); +} + +bool operator!=(VkVideoDecodeH265SessionParametersCreateInfoEXT const &lhs, + VkVideoDecodeH265SessionParametersCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH265PictureInfoEXT const &lhs, + VkVideoDecodeH265PictureInfoEXT const &rhs) noexcept { + if(lhs.slicesCount != rhs.slicesCount) + return false; + + for(uint32_t i = 0; i < lhs.slicesCount; ++i) { + if(lhs.pSlicesDataOffsets[i] != rhs.pSlicesDataOffsets[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.pStdPictureInfo == rhs.pStdPictureInfo); +} + +bool operator!=(VkVideoDecodeH265PictureInfoEXT const &lhs, + VkVideoDecodeH265PictureInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoDecodeH265DpbSlotInfoEXT const &lhs, + VkVideoDecodeH265DpbSlotInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.pStdReferenceInfo == rhs.pStdReferenceInfo); +} + +bool operator!=(VkVideoDecodeH265DpbSlotInfoEXT const &lhs, + VkVideoDecodeH265DpbSlotInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoSessionCreateInfoKHR const &lhs, + VkVideoSessionCreateInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.queueFamilyIndex == rhs.queueFamilyIndex) && + (lhs.flags == rhs.flags) && + (lhs.pVideoProfile == rhs.pVideoProfile) && + (lhs.pictureFormat == rhs.pictureFormat) && + (lhs.maxCodedExtent == rhs.maxCodedExtent) && + (lhs.referencePicturesFormat == rhs.referencePicturesFormat) && + (lhs.maxReferencePicturesSlotsCount == rhs.maxReferencePicturesSlotsCount) && + (lhs.maxReferencePicturesActiveCount == rhs.maxReferencePicturesActiveCount); +} + +bool operator!=(VkVideoSessionCreateInfoKHR const &lhs, + VkVideoSessionCreateInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoSessionParametersCreateInfoKHR const &lhs, + VkVideoSessionParametersCreateInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.videoSessionParametersTemplate == rhs.videoSessionParametersTemplate) && + (lhs.videoSession == rhs.videoSession); +} + +bool operator!=(VkVideoSessionParametersCreateInfoKHR const &lhs, + VkVideoSessionParametersCreateInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoSessionParametersUpdateInfoKHR const &lhs, + VkVideoSessionParametersUpdateInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.updateSequenceCount == rhs.updateSequenceCount); +} + +bool operator!=(VkVideoSessionParametersUpdateInfoKHR const &lhs, + VkVideoSessionParametersUpdateInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoBeginCodingInfoKHR const &lhs, + VkVideoBeginCodingInfoKHR const &rhs) noexcept { + if(lhs.referenceSlotCount != rhs.referenceSlotCount) + return false; + + for(uint32_t i = 0; i < lhs.referenceSlotCount; ++i) { + if(lhs.pReferenceSlots[i] != rhs.pReferenceSlots[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.codecQualityPreset == rhs.codecQualityPreset) && + (lhs.videoSession == rhs.videoSession) && + (lhs.videoSessionParameters == rhs.videoSessionParameters); +} + +bool operator!=(VkVideoBeginCodingInfoKHR const &lhs, + VkVideoBeginCodingInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEndCodingInfoKHR const &lhs, + VkVideoEndCodingInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkVideoEndCodingInfoKHR const &lhs, + VkVideoEndCodingInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoCodingControlInfoKHR const &lhs, + VkVideoCodingControlInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkVideoCodingControlInfoKHR const &lhs, + VkVideoCodingControlInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeInfoKHR const &lhs, + VkVideoEncodeInfoKHR const &rhs) noexcept { + if(lhs.referenceSlotCount != rhs.referenceSlotCount) + return false; + + for(uint32_t i = 0; i < lhs.referenceSlotCount; ++i) { + if(lhs.pReferenceSlots[i] != rhs.pReferenceSlots[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.qualityLevel == rhs.qualityLevel) && + (lhs.codedExtent == rhs.codedExtent) && + (lhs.dstBitstreamBuffer == rhs.dstBitstreamBuffer) && + (lhs.dstBitstreamBufferOffset == rhs.dstBitstreamBufferOffset) && + (lhs.dstBitstreamBufferMaxRange == rhs.dstBitstreamBufferMaxRange) && + (lhs.srcPictureResource == rhs.srcPictureResource) && + (lhs.pSetupReferenceSlot == rhs.pSetupReferenceSlot); +} + +bool operator!=(VkVideoEncodeInfoKHR const &lhs, + VkVideoEncodeInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeRateControlInfoKHR const &lhs, + VkVideoEncodeRateControlInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.rateControlMode == rhs.rateControlMode) && + (lhs.averageBitrate == rhs.averageBitrate) && + (lhs.peakToAverageBitrateRatio == rhs.peakToAverageBitrateRatio) && + (lhs.frameRateNumerator == rhs.frameRateNumerator) && + (lhs.frameRateDenominator == rhs.frameRateDenominator) && + (lhs.virtualBufferSizeInMs == rhs.virtualBufferSizeInMs); +} + +bool operator!=(VkVideoEncodeRateControlInfoKHR const &lhs, + VkVideoEncodeRateControlInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH264CapabilitiesEXT const &lhs, + VkVideoEncodeH264CapabilitiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.inputModeFlags == rhs.inputModeFlags) && + (lhs.outputModeFlags == rhs.outputModeFlags) && + (lhs.minPictureSizeInMbs == rhs.minPictureSizeInMbs) && + (lhs.maxPictureSizeInMbs == rhs.maxPictureSizeInMbs) && + (lhs.inputImageDataAlignment == rhs.inputImageDataAlignment) && + (lhs.maxNumL0ReferenceForP == rhs.maxNumL0ReferenceForP) && + (lhs.maxNumL0ReferenceForB == rhs.maxNumL0ReferenceForB) && + (lhs.maxNumL1Reference == rhs.maxNumL1Reference) && + (lhs.qualityLevelCount == rhs.qualityLevelCount) && + (lhs.stdExtensionVersion == rhs.stdExtensionVersion); +} + +bool operator!=(VkVideoEncodeH264CapabilitiesEXT const &lhs, + VkVideoEncodeH264CapabilitiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH264SessionCreateInfoEXT const &lhs, + VkVideoEncodeH264SessionCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.maxPictureSizeInMbs == rhs.maxPictureSizeInMbs) && + (lhs.pStdExtensionVersion == rhs.pStdExtensionVersion); +} + +bool operator!=(VkVideoEncodeH264SessionCreateInfoEXT const &lhs, + VkVideoEncodeH264SessionCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH264SessionParametersAddInfoEXT const &lhs, + VkVideoEncodeH264SessionParametersAddInfoEXT const &rhs) noexcept { + if(lhs.spsStdCount != rhs.spsStdCount) + return false; + + if(lhs.ppsStdCount != rhs.ppsStdCount) + return false; + + for(uint32_t i = 0; i < lhs.spsStdCount; ++i) { + if(lhs.pSpsStd[i] != rhs.pSpsStd[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.ppsStdCount; ++i) { + if(lhs.pPpsStd[i] != rhs.pPpsStd[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkVideoEncodeH264SessionParametersAddInfoEXT const &lhs, + VkVideoEncodeH264SessionParametersAddInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH264SessionParametersCreateInfoEXT const &lhs, + VkVideoEncodeH264SessionParametersCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxSpsStdCount == rhs.maxSpsStdCount) && + (lhs.maxPpsStdCount == rhs.maxPpsStdCount) && + (lhs.pParametersAddInfo == rhs.pParametersAddInfo); +} + +bool operator!=(VkVideoEncodeH264SessionParametersCreateInfoEXT const &lhs, + VkVideoEncodeH264SessionParametersCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH264DpbSlotInfoEXT const &lhs, + VkVideoEncodeH264DpbSlotInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.slotIndex == rhs.slotIndex) && + (lhs.pStdPictureInfo == rhs.pStdPictureInfo); +} + +bool operator!=(VkVideoEncodeH264DpbSlotInfoEXT const &lhs, + VkVideoEncodeH264DpbSlotInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH264VclFrameInfoEXT const &lhs, + VkVideoEncodeH264VclFrameInfoEXT const &rhs) noexcept { + if(lhs.refDefaultFinalList0EntryCount != rhs.refDefaultFinalList0EntryCount) + return false; + + if(lhs.refDefaultFinalList1EntryCount != rhs.refDefaultFinalList1EntryCount) + return false; + + if(lhs.naluSliceEntryCount != rhs.naluSliceEntryCount) + return false; + + for(uint32_t i = 0; i < lhs.refDefaultFinalList0EntryCount; ++i) { + if(lhs.pRefDefaultFinalList0Entries[i] != rhs.pRefDefaultFinalList0Entries[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.refDefaultFinalList1EntryCount; ++i) { + if(lhs.pRefDefaultFinalList1Entries[i] != rhs.pRefDefaultFinalList1Entries[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.naluSliceEntryCount; ++i) { + if(lhs.pNaluSliceEntries[i] != rhs.pNaluSliceEntries[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.pCurrentPictureInfo == rhs.pCurrentPictureInfo); +} + +bool operator!=(VkVideoEncodeH264VclFrameInfoEXT const &lhs, + VkVideoEncodeH264VclFrameInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH264EmitPictureParametersEXT const &lhs, + VkVideoEncodeH264EmitPictureParametersEXT const &rhs) noexcept { + if(lhs.ppsIdEntryCount != rhs.ppsIdEntryCount) + return false; + + for(uint32_t i = 0; i < lhs.ppsIdEntryCount; ++i) { + if(lhs.ppsIdEntries[i] != rhs.ppsIdEntries[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.spsId == rhs.spsId) && + (lhs.emitSpsEnable == rhs.emitSpsEnable); +} + +bool operator!=(VkVideoEncodeH264EmitPictureParametersEXT const &lhs, + VkVideoEncodeH264EmitPictureParametersEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH264ProfileEXT const &lhs, + VkVideoEncodeH264ProfileEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.stdProfileIdc == rhs.stdProfileIdc); +} + +bool operator!=(VkVideoEncodeH264ProfileEXT const &lhs, + VkVideoEncodeH264ProfileEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH264NaluSliceEXT const &lhs, + VkVideoEncodeH264NaluSliceEXT const &rhs) noexcept { + if(lhs.refFinalList0EntryCount != rhs.refFinalList0EntryCount) + return false; + + if(lhs.refFinalList1EntryCount != rhs.refFinalList1EntryCount) + return false; + + for(uint32_t i = 0; i < lhs.refFinalList0EntryCount; ++i) { + if(lhs.pRefFinalList0Entries[i] != rhs.pRefFinalList0Entries[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.refFinalList1EntryCount; ++i) { + if(lhs.pRefFinalList1Entries[i] != rhs.pRefFinalList1Entries[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.pSliceHeaderStd == rhs.pSliceHeaderStd) && + (lhs.mbCount == rhs.mbCount) && + (lhs.precedingNaluBytes == rhs.precedingNaluBytes) && + (lhs.minQp == rhs.minQp) && + (lhs.maxQp == rhs.maxQp); +} + +bool operator!=(VkVideoEncodeH264NaluSliceEXT const &lhs, + VkVideoEncodeH264NaluSliceEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH265CapabilitiesEXT const &lhs, + VkVideoEncodeH265CapabilitiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.inputModeFlags == rhs.inputModeFlags) && + (lhs.outputModeFlags == rhs.outputModeFlags) && + (lhs.ctbSizes == rhs.ctbSizes) && + (lhs.inputImageDataAlignment == rhs.inputImageDataAlignment) && + (lhs.maxNumL0ReferenceForP == rhs.maxNumL0ReferenceForP) && + (lhs.maxNumL0ReferenceForB == rhs.maxNumL0ReferenceForB) && + (lhs.maxNumL1Reference == rhs.maxNumL1Reference) && + (lhs.maxNumSubLayers == rhs.maxNumSubLayers) && + (lhs.qualityLevelCount == rhs.qualityLevelCount) && + (lhs.stdExtensionVersion == rhs.stdExtensionVersion); +} + +bool operator!=(VkVideoEncodeH265CapabilitiesEXT const &lhs, + VkVideoEncodeH265CapabilitiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH265SessionCreateInfoEXT const &lhs, + VkVideoEncodeH265SessionCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.pStdExtensionVersion == rhs.pStdExtensionVersion); +} + +bool operator!=(VkVideoEncodeH265SessionCreateInfoEXT const &lhs, + VkVideoEncodeH265SessionCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH265SessionParametersAddInfoEXT const &lhs, + VkVideoEncodeH265SessionParametersAddInfoEXT const &rhs) noexcept { + if(lhs.vpsStdCount != rhs.vpsStdCount) + return false; + + if(lhs.spsStdCount != rhs.spsStdCount) + return false; + + if(lhs.ppsStdCount != rhs.ppsStdCount) + return false; + + for(uint32_t i = 0; i < lhs.vpsStdCount; ++i) { + if(lhs.pVpsStd[i] != rhs.pVpsStd[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.spsStdCount; ++i) { + if(lhs.pSpsStd[i] != rhs.pSpsStd[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.ppsStdCount; ++i) { + if(lhs.pPpsStd[i] != rhs.pPpsStd[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkVideoEncodeH265SessionParametersAddInfoEXT const &lhs, + VkVideoEncodeH265SessionParametersAddInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH265SessionParametersCreateInfoEXT const &lhs, + VkVideoEncodeH265SessionParametersCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxVpsStdCount == rhs.maxVpsStdCount) && + (lhs.maxSpsStdCount == rhs.maxSpsStdCount) && + (lhs.maxPpsStdCount == rhs.maxPpsStdCount) && + (lhs.pParametersAddInfo == rhs.pParametersAddInfo); +} + +bool operator!=(VkVideoEncodeH265SessionParametersCreateInfoEXT const &lhs, + VkVideoEncodeH265SessionParametersCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH265VclFrameInfoEXT const &lhs, + VkVideoEncodeH265VclFrameInfoEXT const &rhs) noexcept { + if(lhs.naluSliceEntryCount != rhs.naluSliceEntryCount) + return false; + + for(uint32_t i = 0; i < lhs.naluSliceEntryCount; ++i) { + if(lhs.pNaluSliceEntries[i] != rhs.pNaluSliceEntries[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.pReferenceFinalLists == rhs.pReferenceFinalLists) && + (lhs.pCurrentPictureInfo == rhs.pCurrentPictureInfo); +} + +bool operator!=(VkVideoEncodeH265VclFrameInfoEXT const &lhs, + VkVideoEncodeH265VclFrameInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH265EmitPictureParametersEXT const &lhs, + VkVideoEncodeH265EmitPictureParametersEXT const &rhs) noexcept { + if(lhs.ppsIdEntryCount != rhs.ppsIdEntryCount) + return false; + + for(uint32_t i = 0; i < lhs.ppsIdEntryCount; ++i) { + if(lhs.ppsIdEntries[i] != rhs.ppsIdEntries[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.vpsId == rhs.vpsId) && + (lhs.spsId == rhs.spsId) && + (lhs.emitVpsEnable == rhs.emitVpsEnable) && + (lhs.emitSpsEnable == rhs.emitSpsEnable); +} + +bool operator!=(VkVideoEncodeH265EmitPictureParametersEXT const &lhs, + VkVideoEncodeH265EmitPictureParametersEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH265NaluSliceEXT const &lhs, + VkVideoEncodeH265NaluSliceEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.ctbCount == rhs.ctbCount) && + (lhs.pReferenceFinalLists == rhs.pReferenceFinalLists) && + (lhs.pSliceHeaderStd == rhs.pSliceHeaderStd); +} + +bool operator!=(VkVideoEncodeH265NaluSliceEXT const &lhs, + VkVideoEncodeH265NaluSliceEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH265ProfileEXT const &lhs, + VkVideoEncodeH265ProfileEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.stdProfileIdc == rhs.stdProfileIdc); +} + +bool operator!=(VkVideoEncodeH265ProfileEXT const &lhs, + VkVideoEncodeH265ProfileEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH265DpbSlotInfoEXT const &lhs, + VkVideoEncodeH265DpbSlotInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.slotIndex == rhs.slotIndex) && + (lhs.pStdReferenceInfo == rhs.pStdReferenceInfo); +} + +bool operator!=(VkVideoEncodeH265DpbSlotInfoEXT const &lhs, + VkVideoEncodeH265DpbSlotInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS +bool operator==(VkVideoEncodeH265ReferenceListsEXT const &lhs, + VkVideoEncodeH265ReferenceListsEXT const &rhs) noexcept { + if(lhs.referenceList0EntryCount != rhs.referenceList0EntryCount) + return false; + + if(lhs.referenceList1EntryCount != rhs.referenceList1EntryCount) + return false; + + for(uint32_t i = 0; i < lhs.referenceList0EntryCount; ++i) { + if(lhs.pReferenceList0Entries[i] != rhs.pReferenceList0Entries[i]) + return false; + } + + for(uint32_t i = 0; i < lhs.referenceList1EntryCount; ++i) { + if(lhs.pReferenceList1Entries[i] != rhs.pReferenceList1Entries[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.pReferenceModifications == rhs.pReferenceModifications); +} + +bool operator!=(VkVideoEncodeH265ReferenceListsEXT const &lhs, + VkVideoEncodeH265ReferenceListsEXT const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_ENABLE_BETA_EXTENSIONS + +bool operator==(VkPhysicalDeviceInheritedViewportScissorFeaturesNV const &lhs, + VkPhysicalDeviceInheritedViewportScissorFeaturesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.inheritedViewportScissor2D == rhs.inheritedViewportScissor2D); +} + +bool operator!=(VkPhysicalDeviceInheritedViewportScissorFeaturesNV const &lhs, + VkPhysicalDeviceInheritedViewportScissorFeaturesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCommandBufferInheritanceViewportScissorInfoNV const &lhs, + VkCommandBufferInheritanceViewportScissorInfoNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.viewportScissor2D == rhs.viewportScissor2D) && + (lhs.viewportDepthCount == rhs.viewportDepthCount) && + (lhs.pViewportDepths == rhs.pViewportDepths); +} + +bool operator!=(VkCommandBufferInheritanceViewportScissorInfoNV const &lhs, + VkCommandBufferInheritanceViewportScissorInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const &lhs, + VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.ycbcr2plane444Formats == rhs.ycbcr2plane444Formats); +} + +bool operator!=(VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const &lhs, + VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceProvokingVertexFeaturesEXT const &lhs, + VkPhysicalDeviceProvokingVertexFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.provokingVertexLast == rhs.provokingVertexLast) && + (lhs.transformFeedbackPreservesProvokingVertex == rhs.transformFeedbackPreservesProvokingVertex); +} + +bool operator!=(VkPhysicalDeviceProvokingVertexFeaturesEXT const &lhs, + VkPhysicalDeviceProvokingVertexFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceProvokingVertexPropertiesEXT const &lhs, + VkPhysicalDeviceProvokingVertexPropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.provokingVertexModePerPipeline == rhs.provokingVertexModePerPipeline) && + (lhs.transformFeedbackPreservesTriangleFanProvokingVertex == rhs.transformFeedbackPreservesTriangleFanProvokingVertex); +} + +bool operator!=(VkPhysicalDeviceProvokingVertexPropertiesEXT const &lhs, + VkPhysicalDeviceProvokingVertexPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const &lhs, + VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.provokingVertexMode == rhs.provokingVertexMode); +} + +bool operator!=(VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const &lhs, + VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCuModuleCreateInfoNVX const &lhs, + VkCuModuleCreateInfoNVX const &rhs) noexcept { + if(lhs.dataSize != rhs.dataSize) + return false; + + if(memcmp(lhs.pData, rhs.pData, lhs.dataSize) != 0) + return false; + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkCuModuleCreateInfoNVX const &lhs, + VkCuModuleCreateInfoNVX const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCuFunctionCreateInfoNVX const &lhs, + VkCuFunctionCreateInfoNVX const &rhs) noexcept { + if (lhs.pName != rhs.pName) { + if(lhs.pName == nullptr || rhs.pName == nullptr) + return false; + if(strcmp(lhs.pName, rhs.pName) != 0) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.module == rhs.module); +} + +bool operator!=(VkCuFunctionCreateInfoNVX const &lhs, + VkCuFunctionCreateInfoNVX const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCuLaunchInfoNVX const &lhs, + VkCuLaunchInfoNVX const &rhs) noexcept { + if(lhs.paramCount != rhs.paramCount) + return false; + + if(lhs.extraCount != rhs.extraCount) + return false; + + if(memcmp(lhs.pParams, rhs.pParams, lhs.paramCount) != 0) + return false; + + if(memcmp(lhs.pExtras, rhs.pExtras, lhs.extraCount) != 0) + return false; + + return (lhs.sType == rhs.sType) && + (lhs.function == rhs.function) && + (lhs.gridDimX == rhs.gridDimX) && + (lhs.gridDimY == rhs.gridDimY) && + (lhs.gridDimZ == rhs.gridDimZ) && + (lhs.blockDimX == rhs.blockDimX) && + (lhs.blockDimY == rhs.blockDimY) && + (lhs.blockDimZ == rhs.blockDimZ) && + (lhs.sharedMemBytes == rhs.sharedMemBytes); +} + +bool operator!=(VkCuLaunchInfoNVX const &lhs, + VkCuLaunchInfoNVX const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR const &lhs, + VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.shaderIntegerDotProduct == rhs.shaderIntegerDotProduct); +} + +bool operator!=(VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR const &lhs, + VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR const &lhs, + VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.integerDotProduct8BitUnsignedAccelerated == rhs.integerDotProduct8BitUnsignedAccelerated) && + (lhs.integerDotProduct8BitSignedAccelerated == rhs.integerDotProduct8BitSignedAccelerated) && + (lhs.integerDotProduct8BitMixedSignednessAccelerated == rhs.integerDotProduct8BitMixedSignednessAccelerated) && + (lhs.integerDotProduct4x8BitPackedUnsignedAccelerated == rhs.integerDotProduct4x8BitPackedUnsignedAccelerated) && + (lhs.integerDotProduct4x8BitPackedSignedAccelerated == rhs.integerDotProduct4x8BitPackedSignedAccelerated) && + (lhs.integerDotProduct4x8BitPackedMixedSignednessAccelerated == rhs.integerDotProduct4x8BitPackedMixedSignednessAccelerated) && + (lhs.integerDotProduct16BitUnsignedAccelerated == rhs.integerDotProduct16BitUnsignedAccelerated) && + (lhs.integerDotProduct16BitSignedAccelerated == rhs.integerDotProduct16BitSignedAccelerated) && + (lhs.integerDotProduct16BitMixedSignednessAccelerated == rhs.integerDotProduct16BitMixedSignednessAccelerated) && + (lhs.integerDotProduct32BitUnsignedAccelerated == rhs.integerDotProduct32BitUnsignedAccelerated) && + (lhs.integerDotProduct32BitSignedAccelerated == rhs.integerDotProduct32BitSignedAccelerated) && + (lhs.integerDotProduct32BitMixedSignednessAccelerated == rhs.integerDotProduct32BitMixedSignednessAccelerated) && + (lhs.integerDotProduct64BitUnsignedAccelerated == rhs.integerDotProduct64BitUnsignedAccelerated) && + (lhs.integerDotProduct64BitSignedAccelerated == rhs.integerDotProduct64BitSignedAccelerated) && + (lhs.integerDotProduct64BitMixedSignednessAccelerated == rhs.integerDotProduct64BitMixedSignednessAccelerated) && + (lhs.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated) && + (lhs.integerDotProductAccumulatingSaturating8BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating8BitSignedAccelerated) && + (lhs.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated == rhs.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated) && + (lhs.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated) && + (lhs.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated == rhs.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated) && + (lhs.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated == rhs.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated) && + (lhs.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated) && + (lhs.integerDotProductAccumulatingSaturating16BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating16BitSignedAccelerated) && + (lhs.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated == rhs.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated) && + (lhs.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated) && + (lhs.integerDotProductAccumulatingSaturating32BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating32BitSignedAccelerated) && + (lhs.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated == rhs.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated) && + (lhs.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated) && + (lhs.integerDotProductAccumulatingSaturating64BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating64BitSignedAccelerated) && + (lhs.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated == rhs.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated); +} + +bool operator!=(VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR const &lhs, + VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceDrmPropertiesEXT const &lhs, + VkPhysicalDeviceDrmPropertiesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.hasPrimary == rhs.hasPrimary) && + (lhs.hasRender == rhs.hasRender) && + (lhs.primaryMajor == rhs.primaryMajor) && + (lhs.primaryMinor == rhs.primaryMinor) && + (lhs.renderMajor == rhs.renderMajor) && + (lhs.renderMinor == rhs.renderMinor); +} + +bool operator!=(VkPhysicalDeviceDrmPropertiesEXT const &lhs, + VkPhysicalDeviceDrmPropertiesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const &lhs, + VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.rayTracingMotionBlur == rhs.rayTracingMotionBlur) && + (lhs.rayTracingMotionBlurPipelineTraceRaysIndirect == rhs.rayTracingMotionBlurPipelineTraceRaysIndirect); +} + +bool operator!=(VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const &lhs, + VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAccelerationStructureMotionInfoNV const &lhs, + VkAccelerationStructureMotionInfoNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.maxInstances == rhs.maxInstances) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkAccelerationStructureMotionInfoNV const &lhs, + VkAccelerationStructureMotionInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkSRTDataNV const &lhs, + VkSRTDataNV const &rhs) noexcept { + return (lhs.sx == rhs.sx) && + (lhs.a == rhs.a) && + (lhs.b == rhs.b) && + (lhs.pvx == rhs.pvx) && + (lhs.sy == rhs.sy) && + (lhs.c == rhs.c) && + (lhs.pvy == rhs.pvy) && + (lhs.sz == rhs.sz) && + (lhs.pvz == rhs.pvz) && + (lhs.qx == rhs.qx) && + (lhs.qy == rhs.qy) && + (lhs.qz == rhs.qz) && + (lhs.qw == rhs.qw) && + (lhs.tx == rhs.tx) && + (lhs.ty == rhs.ty) && + (lhs.tz == rhs.tz); +} + +bool operator!=(VkSRTDataNV const &lhs, + VkSRTDataNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAccelerationStructureSRTMotionInstanceNV const &lhs, + VkAccelerationStructureSRTMotionInstanceNV const &rhs) noexcept { + return (lhs.transformT0 == rhs.transformT0) && + (lhs.transformT1 == rhs.transformT1) && + (lhs.instanceCustomIndex == rhs.instanceCustomIndex) && + (lhs.mask == rhs.mask) && + (lhs.instanceShaderBindingTableRecordOffset == rhs.instanceShaderBindingTableRecordOffset) && + (lhs.flags == rhs.flags) && + (lhs.accelerationStructureReference == rhs.accelerationStructureReference); +} + +bool operator!=(VkAccelerationStructureSRTMotionInstanceNV const &lhs, + VkAccelerationStructureSRTMotionInstanceNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAccelerationStructureMatrixMotionInstanceNV const &lhs, + VkAccelerationStructureMatrixMotionInstanceNV const &rhs) noexcept { + return (lhs.transformT0 == rhs.transformT0) && + (lhs.transformT1 == rhs.transformT1) && + (lhs.instanceCustomIndex == rhs.instanceCustomIndex) && + (lhs.mask == rhs.mask) && + (lhs.instanceShaderBindingTableRecordOffset == rhs.instanceShaderBindingTableRecordOffset) && + (lhs.flags == rhs.flags) && + (lhs.accelerationStructureReference == rhs.accelerationStructureReference); +} + +bool operator!=(VkAccelerationStructureMatrixMotionInstanceNV const &lhs, + VkAccelerationStructureMatrixMotionInstanceNV const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMemoryGetRemoteAddressInfoNV const &lhs, + VkMemoryGetRemoteAddressInfoNV const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.memory == rhs.memory) && + (lhs.handleType == rhs.handleType); +} + +bool operator!=(VkMemoryGetRemoteAddressInfoNV const &lhs, + VkMemoryGetRemoteAddressInfoNV const &rhs) noexcept { + return !(lhs == rhs); +} + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkImportMemoryBufferCollectionFUCHSIA const &lhs, + VkImportMemoryBufferCollectionFUCHSIA const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.collection == rhs.collection) && + (lhs.index == rhs.index); +} + +bool operator!=(VkImportMemoryBufferCollectionFUCHSIA const &lhs, + VkImportMemoryBufferCollectionFUCHSIA const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkBufferCollectionImageCreateInfoFUCHSIA const &lhs, + VkBufferCollectionImageCreateInfoFUCHSIA const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.collection == rhs.collection) && + (lhs.index == rhs.index); +} + +bool operator!=(VkBufferCollectionImageCreateInfoFUCHSIA const &lhs, + VkBufferCollectionImageCreateInfoFUCHSIA const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkBufferCollectionBufferCreateInfoFUCHSIA const &lhs, + VkBufferCollectionBufferCreateInfoFUCHSIA const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.collection == rhs.collection) && + (lhs.index == rhs.index); +} + +bool operator!=(VkBufferCollectionBufferCreateInfoFUCHSIA const &lhs, + VkBufferCollectionBufferCreateInfoFUCHSIA const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkBufferCollectionCreateInfoFUCHSIA const &lhs, + VkBufferCollectionCreateInfoFUCHSIA const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.collectionToken == rhs.collectionToken); +} + +bool operator!=(VkBufferCollectionCreateInfoFUCHSIA const &lhs, + VkBufferCollectionCreateInfoFUCHSIA const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkBufferCollectionPropertiesFUCHSIA const &lhs, + VkBufferCollectionPropertiesFUCHSIA const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.memoryTypeBits == rhs.memoryTypeBits) && + (lhs.bufferCount == rhs.bufferCount) && + (lhs.createInfoIndex == rhs.createInfoIndex) && + (lhs.sysmemPixelFormat == rhs.sysmemPixelFormat) && + (lhs.formatFeatures == rhs.formatFeatures) && + (lhs.sysmemColorSpaceIndex == rhs.sysmemColorSpaceIndex) && + (lhs.samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents) && + (lhs.suggestedYcbcrModel == rhs.suggestedYcbcrModel) && + (lhs.suggestedYcbcrRange == rhs.suggestedYcbcrRange) && + (lhs.suggestedXChromaOffset == rhs.suggestedXChromaOffset) && + (lhs.suggestedYChromaOffset == rhs.suggestedYChromaOffset); +} + +bool operator!=(VkBufferCollectionPropertiesFUCHSIA const &lhs, + VkBufferCollectionPropertiesFUCHSIA const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkBufferConstraintsInfoFUCHSIA const &lhs, + VkBufferConstraintsInfoFUCHSIA const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.createInfo == rhs.createInfo) && + (lhs.requiredFormatFeatures == rhs.requiredFormatFeatures) && + (lhs.bufferCollectionConstraints == rhs.bufferCollectionConstraints); +} + +bool operator!=(VkBufferConstraintsInfoFUCHSIA const &lhs, + VkBufferConstraintsInfoFUCHSIA const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkSysmemColorSpaceFUCHSIA const &lhs, + VkSysmemColorSpaceFUCHSIA const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.colorSpace == rhs.colorSpace); +} + +bool operator!=(VkSysmemColorSpaceFUCHSIA const &lhs, + VkSysmemColorSpaceFUCHSIA const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkImageFormatConstraintsInfoFUCHSIA const &lhs, + VkImageFormatConstraintsInfoFUCHSIA const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.imageCreateInfo == rhs.imageCreateInfo) && + (lhs.requiredFormatFeatures == rhs.requiredFormatFeatures) && + (lhs.flags == rhs.flags) && + (lhs.sysmemPixelFormat == rhs.sysmemPixelFormat) && + (lhs.colorSpaceCount == rhs.colorSpaceCount) && + (lhs.pColorSpaces == rhs.pColorSpaces); +} + +bool operator!=(VkImageFormatConstraintsInfoFUCHSIA const &lhs, + VkImageFormatConstraintsInfoFUCHSIA const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkImageConstraintsInfoFUCHSIA const &lhs, + VkImageConstraintsInfoFUCHSIA const &rhs) noexcept { + if(lhs.formatConstraintsCount != rhs.formatConstraintsCount) + return false; + + for(uint32_t i = 0; i < lhs.formatConstraintsCount; ++i) { + if(lhs.pFormatConstraints[i] != rhs.pFormatConstraints[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.bufferCollectionConstraints == rhs.bufferCollectionConstraints) && + (lhs.flags == rhs.flags); +} + +bool operator!=(VkImageConstraintsInfoFUCHSIA const &lhs, + VkImageConstraintsInfoFUCHSIA const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA +bool operator==(VkBufferCollectionConstraintsInfoFUCHSIA const &lhs, + VkBufferCollectionConstraintsInfoFUCHSIA const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.minBufferCount == rhs.minBufferCount) && + (lhs.maxBufferCount == rhs.maxBufferCount) && + (lhs.minBufferCountForCamping == rhs.minBufferCountForCamping) && + (lhs.minBufferCountForDedicatedSlack == rhs.minBufferCountForDedicatedSlack) && + (lhs.minBufferCountForSharedSlack == rhs.minBufferCountForSharedSlack); +} + +bool operator!=(VkBufferCollectionConstraintsInfoFUCHSIA const &lhs, + VkBufferCollectionConstraintsInfoFUCHSIA const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_FUCHSIA + +bool operator==(VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const &lhs, + VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.formatRgba10x6WithoutYCbCrSampler == rhs.formatRgba10x6WithoutYCbCrSampler); +} + +bool operator!=(VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const &lhs, + VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkFormatProperties3KHR const &lhs, + VkFormatProperties3KHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.linearTilingFeatures == rhs.linearTilingFeatures) && + (lhs.optimalTilingFeatures == rhs.optimalTilingFeatures) && + (lhs.bufferFeatures == rhs.bufferFeatures); +} + +bool operator!=(VkFormatProperties3KHR const &lhs, + VkFormatProperties3KHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDrmFormatModifierPropertiesList2EXT const &lhs, + VkDrmFormatModifierPropertiesList2EXT const &rhs) noexcept { + if(lhs.drmFormatModifierCount != rhs.drmFormatModifierCount) + return false; + + for(uint32_t i = 0; i < lhs.drmFormatModifierCount; ++i) { + if(lhs.pDrmFormatModifierProperties[i] != rhs.pDrmFormatModifierProperties[i]) + return false; + } + + return (lhs.sType == rhs.sType); +} + +bool operator!=(VkDrmFormatModifierPropertiesList2EXT const &lhs, + VkDrmFormatModifierPropertiesList2EXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkDrmFormatModifierProperties2EXT const &lhs, + VkDrmFormatModifierProperties2EXT const &rhs) noexcept { + return (lhs.drmFormatModifier == rhs.drmFormatModifier) && + (lhs.drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount) && + (lhs.drmFormatModifierTilingFeatures == rhs.drmFormatModifierTilingFeatures); +} + +bool operator!=(VkDrmFormatModifierProperties2EXT const &lhs, + VkDrmFormatModifierProperties2EXT const &rhs) noexcept { + return !(lhs == rhs); +} + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +bool operator==(VkAndroidHardwareBufferFormatProperties2ANDROID const &lhs, + VkAndroidHardwareBufferFormatProperties2ANDROID const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.format == rhs.format) && + (lhs.externalFormat == rhs.externalFormat) && + (lhs.formatFeatures == rhs.formatFeatures) && + (lhs.samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents) && + (lhs.suggestedYcbcrModel == rhs.suggestedYcbcrModel) && + (lhs.suggestedYcbcrRange == rhs.suggestedYcbcrRange) && + (lhs.suggestedXChromaOffset == rhs.suggestedXChromaOffset) && + (lhs.suggestedYChromaOffset == rhs.suggestedYChromaOffset); +} + +bool operator!=(VkAndroidHardwareBufferFormatProperties2ANDROID const &lhs, + VkAndroidHardwareBufferFormatProperties2ANDROID const &rhs) noexcept { + return !(lhs == rhs); +} +#endif // VK_USE_PLATFORM_ANDROID_KHR + +bool operator==(VkPipelineRenderingCreateInfoKHR const &lhs, + VkPipelineRenderingCreateInfoKHR const &rhs) noexcept { + if(lhs.colorAttachmentCount != rhs.colorAttachmentCount) + return false; + + for(uint32_t i = 0; i < lhs.colorAttachmentCount; ++i) { + if(lhs.pColorAttachmentFormats[i] != rhs.pColorAttachmentFormats[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.viewMask == rhs.viewMask) && + (lhs.depthAttachmentFormat == rhs.depthAttachmentFormat) && + (lhs.stencilAttachmentFormat == rhs.stencilAttachmentFormat); +} + +bool operator!=(VkPipelineRenderingCreateInfoKHR const &lhs, + VkPipelineRenderingCreateInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkRenderingInfoKHR const &lhs, + VkRenderingInfoKHR const &rhs) noexcept { + if(lhs.colorAttachmentCount != rhs.colorAttachmentCount) + return false; + + for(uint32_t i = 0; i < lhs.colorAttachmentCount; ++i) { + if(lhs.pColorAttachments[i] != rhs.pColorAttachments[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.renderArea == rhs.renderArea) && + (lhs.layerCount == rhs.layerCount) && + (lhs.viewMask == rhs.viewMask) && + (lhs.pDepthAttachment == rhs.pDepthAttachment) && + (lhs.pStencilAttachment == rhs.pStencilAttachment); +} + +bool operator!=(VkRenderingInfoKHR const &lhs, + VkRenderingInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkRenderingFragmentShadingRateAttachmentInfoKHR const &lhs, + VkRenderingFragmentShadingRateAttachmentInfoKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.imageView == rhs.imageView) && + (lhs.imageLayout == rhs.imageLayout) && + (lhs.shadingRateAttachmentTexelSize == rhs.shadingRateAttachmentTexelSize); +} + +bool operator!=(VkRenderingFragmentShadingRateAttachmentInfoKHR const &lhs, + VkRenderingFragmentShadingRateAttachmentInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkRenderingFragmentDensityMapAttachmentInfoEXT const &lhs, + VkRenderingFragmentDensityMapAttachmentInfoEXT const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.imageView == rhs.imageView) && + (lhs.imageLayout == rhs.imageLayout); +} + +bool operator!=(VkRenderingFragmentDensityMapAttachmentInfoEXT const &lhs, + VkRenderingFragmentDensityMapAttachmentInfoEXT const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkPhysicalDeviceDynamicRenderingFeaturesKHR const &lhs, + VkPhysicalDeviceDynamicRenderingFeaturesKHR const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.dynamicRendering == rhs.dynamicRendering); +} + +bool operator!=(VkPhysicalDeviceDynamicRenderingFeaturesKHR const &lhs, + VkPhysicalDeviceDynamicRenderingFeaturesKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkCommandBufferInheritanceRenderingInfoKHR const &lhs, + VkCommandBufferInheritanceRenderingInfoKHR const &rhs) noexcept { + if(lhs.colorAttachmentCount != rhs.colorAttachmentCount) + return false; + + for(uint32_t i = 0; i < lhs.colorAttachmentCount; ++i) { + if(lhs.pColorAttachmentFormats[i] != rhs.pColorAttachmentFormats[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.flags == rhs.flags) && + (lhs.viewMask == rhs.viewMask) && + (lhs.depthAttachmentFormat == rhs.depthAttachmentFormat) && + (lhs.stencilAttachmentFormat == rhs.stencilAttachmentFormat) && + (lhs.rasterizationSamples == rhs.rasterizationSamples); +} + +bool operator!=(VkCommandBufferInheritanceRenderingInfoKHR const &lhs, + VkCommandBufferInheritanceRenderingInfoKHR const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkAttachmentSampleCountInfoAMD const &lhs, + VkAttachmentSampleCountInfoAMD const &rhs) noexcept { + if(lhs.colorAttachmentCount != rhs.colorAttachmentCount) + return false; + + for(uint32_t i = 0; i < lhs.colorAttachmentCount; ++i) { + if(lhs.pColorAttachmentSamples[i] != rhs.pColorAttachmentSamples[i]) + return false; + } + + return (lhs.sType == rhs.sType) && + (lhs.depthStencilAttachmentSamples == rhs.depthStencilAttachmentSamples); +} + +bool operator!=(VkAttachmentSampleCountInfoAMD const &lhs, + VkAttachmentSampleCountInfoAMD const &rhs) noexcept { + return !(lhs == rhs); +} + +bool operator==(VkMultiviewPerViewAttributesInfoNVX const &lhs, + VkMultiviewPerViewAttributesInfoNVX const &rhs) noexcept { + return (lhs.sType == rhs.sType) && + (lhs.perViewAttributes == rhs.perViewAttributes) && + (lhs.perViewAttributesPositionXOnly == rhs.perViewAttributesPositionXOnly); +} + +bool operator!=(VkMultiviewPerViewAttributesInfoNVX const &lhs, + VkMultiviewPerViewAttributesInfoNVX const &rhs) noexcept { + return !(lhs == rhs); +} + +#endif // VK_EQUALITY_CHECK_CONFIG_MAIN + +#endif // VK_EQUALITY_CHECK_V198_HPP diff --git a/include/detail_error_code/vk_error_code_v198.hpp b/include/detail_error_code/vk_error_code_v198.hpp new file mode 100644 index 0000000000000000000000000000000000000000..dc343055b01205341355baf97acfd19f19f5678b --- /dev/null +++ b/include/detail_error_code/vk_error_code_v198.hpp @@ -0,0 +1,158 @@ +/* + Copyright (C) 2020 George Cave - gcave@stablecoder.ca + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/* + This file was auto-generated by the Vulkan mini-libs utility can be found at + https://github.com/stablecoder/vulkan-mini-libs.git + or + https://git.stabletec.com/utilities/vulkan-mini-libs.git + + Check for an updated version anytime, or state concerns/bugs. +*/ + +#ifndef VK_ERROR_CODE_V198_HPP +#define VK_ERROR_CODE_V198_HPP + +#include <vulkan/vulkan.h> + +#include <system_error> + +/* USAGE + To use, include this header where the declarations for the boolean checks are required. + + On *ONE* compilation unit, include the definition of `#define VK_ERROR_CODE_CONFIG_MAIN` + so that the definitions are compiled somewhere following the one definition rule. +*/ + +static_assert(VK_HEADER_VERSION == 198, "Incompatible VK_HEADER_VERSION!"); + +namespace std { +template <> +struct is_error_code_enum<VkResult> : true_type {}; +} // namespace std + +std::error_code make_error_code(VkResult); + +#ifdef VK_ERROR_CODE_CONFIG_MAIN + +namespace { + +struct VulkanErrCategory : std::error_category { + const char *name() const noexcept override; + std::string message(int ev) const override; +}; + +const char *VulkanErrCategory::name() const noexcept { + return "VkResult"; +} + +std::string VulkanErrCategory::message(int ev) const { + switch (static_cast<VkResult>(ev)) { + case VK_SUCCESS: + return "VK_SUCCESS"; + case VK_NOT_READY: + return "VK_NOT_READY"; + case VK_TIMEOUT: + return "VK_TIMEOUT"; + case VK_EVENT_SET: + return "VK_EVENT_SET"; + case VK_EVENT_RESET: + return "VK_EVENT_RESET"; + case VK_INCOMPLETE: + return "VK_INCOMPLETE"; + case VK_ERROR_OUT_OF_HOST_MEMORY: + return "VK_ERROR_OUT_OF_HOST_MEMORY"; + case VK_ERROR_OUT_OF_DEVICE_MEMORY: + return "VK_ERROR_OUT_OF_DEVICE_MEMORY"; + case VK_ERROR_INITIALIZATION_FAILED: + return "VK_ERROR_INITIALIZATION_FAILED"; + case VK_ERROR_DEVICE_LOST: + return "VK_ERROR_DEVICE_LOST"; + case VK_ERROR_MEMORY_MAP_FAILED: + return "VK_ERROR_MEMORY_MAP_FAILED"; + case VK_ERROR_LAYER_NOT_PRESENT: + return "VK_ERROR_LAYER_NOT_PRESENT"; + case VK_ERROR_EXTENSION_NOT_PRESENT: + return "VK_ERROR_EXTENSION_NOT_PRESENT"; + case VK_ERROR_FEATURE_NOT_PRESENT: + return "VK_ERROR_FEATURE_NOT_PRESENT"; + case VK_ERROR_INCOMPATIBLE_DRIVER: + return "VK_ERROR_INCOMPATIBLE_DRIVER"; + case VK_ERROR_TOO_MANY_OBJECTS: + return "VK_ERROR_TOO_MANY_OBJECTS"; + case VK_ERROR_FORMAT_NOT_SUPPORTED: + return "VK_ERROR_FORMAT_NOT_SUPPORTED"; + case VK_ERROR_FRAGMENTED_POOL: + return "VK_ERROR_FRAGMENTED_POOL"; + case VK_ERROR_UNKNOWN: + return "VK_ERROR_UNKNOWN"; + case VK_ERROR_SURFACE_LOST_KHR: + return "VK_ERROR_SURFACE_LOST_KHR"; + case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR: + return "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR"; + case VK_SUBOPTIMAL_KHR: + return "VK_SUBOPTIMAL_KHR"; + case VK_ERROR_OUT_OF_DATE_KHR: + return "VK_ERROR_OUT_OF_DATE_KHR"; + case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR: + return "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR"; + case VK_ERROR_VALIDATION_FAILED_EXT: + return "VK_ERROR_VALIDATION_FAILED_EXT"; + case VK_ERROR_INVALID_SHADER_NV: + return "VK_ERROR_INVALID_SHADER_NV"; + case VK_ERROR_OUT_OF_POOL_MEMORY: + return "VK_ERROR_OUT_OF_POOL_MEMORY"; + case VK_ERROR_INVALID_EXTERNAL_HANDLE: + return "VK_ERROR_INVALID_EXTERNAL_HANDLE"; + case VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT: + return "VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT"; + case VK_ERROR_FRAGMENTATION: + return "VK_ERROR_FRAGMENTATION"; + case VK_ERROR_NOT_PERMITTED_EXT: + return "VK_ERROR_NOT_PERMITTED_EXT"; + case VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS: + return "VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS"; + case VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT: + return "VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT"; + case VK_THREAD_IDLE_KHR: + return "VK_THREAD_IDLE_KHR"; + case VK_THREAD_DONE_KHR: + return "VK_THREAD_DONE_KHR"; + case VK_OPERATION_DEFERRED_KHR: + return "VK_OPERATION_DEFERRED_KHR"; + case VK_OPERATION_NOT_DEFERRED_KHR: + return "VK_OPERATION_NOT_DEFERRED_KHR"; + case VK_PIPELINE_COMPILE_REQUIRED_EXT: + return "VK_PIPELINE_COMPILE_REQUIRED_EXT"; + + default: + if (ev > 0) + return "(unrecognized positive VkResult value)"; + else + return "(unrecognized negative VkResult value)"; + } +} + +const VulkanErrCategory vulkanErrCategory{}; + +} // namespace + +std::error_code make_error_code(VkResult e) { + return {static_cast<int>(e), vulkanErrCategory}; +} + +#endif // VK_ERROR_CODE_CONFIG_MAIN +#endif // VK_ERROR_CODE_V198_HPP diff --git a/include/detail_struct_cleanup/vk_struct_cleanup_v198.hpp b/include/detail_struct_cleanup/vk_struct_cleanup_v198.hpp new file mode 100644 index 0000000000000000000000000000000000000000..28eb91c2ed4ca9d432cbf042e01a3aa570e0b870 --- /dev/null +++ b/include/detail_struct_cleanup/vk_struct_cleanup_v198.hpp @@ -0,0 +1,7929 @@ +/* + Copyright (C) 2020 George Cave - gcave@stablecoder.ca + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/* + This file was auto-generated by the Vulkan mini-libs utility can be found at + https://github.com/stablecoder/vulkan-mini-libs.git + or + https://git.stabletec.com/utilities/vulkan-mini-libs.git + + Check for an updated version anytime, or state concerns/bugs. +*/ + +#ifndef VK_STRUCT_CLEANUP_V198_HPP +#define VK_STRUCT_CLEANUP_V198_HPP + +/* USAGE: + To use, include this header where the declarations for the boolean checks are required. + + On *ONE* compilation unit, include the definition of `#define VK_STRUCT_CLEANUP_CONFIG_MAIN` + so that the definitions are compiled somewhere following the one definition rule. +*/ + +#include <vulkan/vulkan.h> + +static_assert(VK_HEADER_VERSION == 198, "Incompatible VK_HEADER_VERSION!" ); + +/** @brief Cleans up a Vulkan sType-based structure of pointer data + * @param pData Pointer to the struct to be cleaned up + * + * This function is only to be called on Vulkan structures that *have* a VkStructureType + * member 'sType'. Any pointer members that start with 'p[A-Z]' are assumed to be *owned* + * by the struct and are themselves cleaned up recusrively, and then deleted. + * + * This means any other pointer members, or pointer to pointer members are not cleaned up + * and would still require manual deletion. + */ +void vk_struct_cleanup(void const* pData); + +#ifdef VK_STRUCT_CLEANUP_CONFIG_MAIN + +#include <cstdlib> + +void vk_struct_cleanup(void const *pData) { + if (pData == nullptr) + return; + + struct VkTempStruct { + VkStructureType sType; + }; + VkTempStruct const *pTemp = static_cast<VkTempStruct const *>(pData); + + switch (pTemp->sType) { + case VK_STRUCTURE_TYPE_APPLICATION_INFO: + { // VkApplicationInfo + VkApplicationInfo const *pStruct = static_cast<VkApplicationInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // char - pApplicationName / null-terminated + free(const_cast<char *>(pStruct->pApplicationName)); + + // char - pEngineName / null-terminated + free(const_cast<char *>(pStruct->pEngineName)); + } + + break; + + case VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO: + { // VkDeviceQueueCreateInfo + VkDeviceQueueCreateInfo const *pStruct = static_cast<VkDeviceQueueCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // float - pQueuePriorities / queueCount + free(const_cast<float *>(pStruct->pQueuePriorities)); + } + + break; + + case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO: + { // VkDeviceCreateInfo + VkDeviceCreateInfo const *pStruct = static_cast<VkDeviceCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkDeviceQueueCreateInfo - pQueueCreateInfos / queueCreateInfoCount + for (uint32_t i = 0; i < pStruct->queueCreateInfoCount; ++i) + vk_struct_cleanup(&pStruct->pQueueCreateInfos[i]); + free(const_cast<VkDeviceQueueCreateInfo *>(pStruct->pQueueCreateInfos)); + + // VkPhysicalDeviceFeatures - pEnabledFeatures + free(const_cast<VkPhysicalDeviceFeatures *>(pStruct->pEnabledFeatures)); + } + + break; + + case VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO: + { // VkInstanceCreateInfo + VkInstanceCreateInfo const *pStruct = static_cast<VkInstanceCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkApplicationInfo - pApplicationInfo + vk_struct_cleanup(pStruct->pApplicationInfo); + free(const_cast<VkApplicationInfo *>(pStruct->pApplicationInfo)); + } + + break; + + case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO: + { // VkMemoryAllocateInfo + VkMemoryAllocateInfo const *pStruct = static_cast<VkMemoryAllocateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE: + { // VkMappedMemoryRange + VkMappedMemoryRange const *pStruct = static_cast<VkMappedMemoryRange const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET: + { // VkWriteDescriptorSet + VkWriteDescriptorSet const *pStruct = static_cast<VkWriteDescriptorSet const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkDescriptorImageInfo - pImageInfo / descriptorCount + free(const_cast<VkDescriptorImageInfo *>(pStruct->pImageInfo)); + + // VkDescriptorBufferInfo - pBufferInfo / descriptorCount + free(const_cast<VkDescriptorBufferInfo *>(pStruct->pBufferInfo)); + + // VkBufferView - pTexelBufferView / descriptorCount + free(const_cast<VkBufferView *>(pStruct->pTexelBufferView)); + } + + break; + + case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET: + { // VkCopyDescriptorSet + VkCopyDescriptorSet const *pStruct = static_cast<VkCopyDescriptorSet const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO: + { // VkBufferCreateInfo + VkBufferCreateInfo const *pStruct = static_cast<VkBufferCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // uint32_t - pQueueFamilyIndices / queueFamilyIndexCount + free(const_cast<uint32_t *>(pStruct->pQueueFamilyIndices)); + } + + break; + + case VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO: + { // VkBufferViewCreateInfo + VkBufferViewCreateInfo const *pStruct = static_cast<VkBufferViewCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_MEMORY_BARRIER: + { // VkMemoryBarrier + VkMemoryBarrier const *pStruct = static_cast<VkMemoryBarrier const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER: + { // VkBufferMemoryBarrier + VkBufferMemoryBarrier const *pStruct = static_cast<VkBufferMemoryBarrier const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER: + { // VkImageMemoryBarrier + VkImageMemoryBarrier const *pStruct = static_cast<VkImageMemoryBarrier const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO: + { // VkImageCreateInfo + VkImageCreateInfo const *pStruct = static_cast<VkImageCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // uint32_t - pQueueFamilyIndices / queueFamilyIndexCount + free(const_cast<uint32_t *>(pStruct->pQueueFamilyIndices)); + } + + break; + + case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO: + { // VkImageViewCreateInfo + VkImageViewCreateInfo const *pStruct = static_cast<VkImageViewCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_BIND_SPARSE_INFO: + { // VkBindSparseInfo + VkBindSparseInfo const *pStruct = static_cast<VkBindSparseInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkSemaphore - pWaitSemaphores / waitSemaphoreCount + free(const_cast<VkSemaphore *>(pStruct->pWaitSemaphores)); + + // VkSparseBufferMemoryBindInfo - pBufferBinds / bufferBindCount + free(const_cast<VkSparseBufferMemoryBindInfo *>(pStruct->pBufferBinds)); + + // VkSparseImageOpaqueMemoryBindInfo - pImageOpaqueBinds / imageOpaqueBindCount + free(const_cast<VkSparseImageOpaqueMemoryBindInfo *>(pStruct->pImageOpaqueBinds)); + + // VkSparseImageMemoryBindInfo - pImageBinds / imageBindCount + free(const_cast<VkSparseImageMemoryBindInfo *>(pStruct->pImageBinds)); + + // VkSemaphore - pSignalSemaphores / signalSemaphoreCount + free(const_cast<VkSemaphore *>(pStruct->pSignalSemaphores)); + } + + break; + + case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO: + { // VkShaderModuleCreateInfo + VkShaderModuleCreateInfo const *pStruct = static_cast<VkShaderModuleCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // uint32_t - pCode / codeSize + free(const_cast<uint32_t *>(pStruct->pCode)); + } + + break; + + case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO: + { // VkDescriptorSetLayoutCreateInfo + VkDescriptorSetLayoutCreateInfo const *pStruct = static_cast<VkDescriptorSetLayoutCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkDescriptorSetLayoutBinding - pBindings / bindingCount + free(const_cast<VkDescriptorSetLayoutBinding *>(pStruct->pBindings)); + } + + break; + + case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO: + { // VkDescriptorPoolCreateInfo + VkDescriptorPoolCreateInfo const *pStruct = static_cast<VkDescriptorPoolCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkDescriptorPoolSize - pPoolSizes / poolSizeCount + free(const_cast<VkDescriptorPoolSize *>(pStruct->pPoolSizes)); + } + + break; + + case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO: + { // VkDescriptorSetAllocateInfo + VkDescriptorSetAllocateInfo const *pStruct = static_cast<VkDescriptorSetAllocateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkDescriptorSetLayout - pSetLayouts / descriptorSetCount + free(const_cast<VkDescriptorSetLayout *>(pStruct->pSetLayouts)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO: + { // VkPipelineShaderStageCreateInfo + VkPipelineShaderStageCreateInfo const *pStruct = static_cast<VkPipelineShaderStageCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // char - pName / null-terminated + free(const_cast<char *>(pStruct->pName)); + + // VkSpecializationInfo - pSpecializationInfo + free(const_cast<VkSpecializationInfo *>(pStruct->pSpecializationInfo)); + } + + break; + + case VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO: + { // VkComputePipelineCreateInfo + VkComputePipelineCreateInfo const *pStruct = static_cast<VkComputePipelineCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO: + { // VkPipelineVertexInputStateCreateInfo + VkPipelineVertexInputStateCreateInfo const *pStruct = static_cast<VkPipelineVertexInputStateCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkVertexInputBindingDescription - pVertexBindingDescriptions / vertexBindingDescriptionCount + free(const_cast<VkVertexInputBindingDescription *>(pStruct->pVertexBindingDescriptions)); + + // VkVertexInputAttributeDescription - pVertexAttributeDescriptions / vertexAttributeDescriptionCount + free(const_cast<VkVertexInputAttributeDescription *>(pStruct->pVertexAttributeDescriptions)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO: + { // VkPipelineInputAssemblyStateCreateInfo + VkPipelineInputAssemblyStateCreateInfo const *pStruct = static_cast<VkPipelineInputAssemblyStateCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO: + { // VkPipelineTessellationStateCreateInfo + VkPipelineTessellationStateCreateInfo const *pStruct = static_cast<VkPipelineTessellationStateCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO: + { // VkPipelineViewportStateCreateInfo + VkPipelineViewportStateCreateInfo const *pStruct = static_cast<VkPipelineViewportStateCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkViewport - pViewports / viewportCount + free(const_cast<VkViewport *>(pStruct->pViewports)); + + // VkRect2D - pScissors / scissorCount + free(const_cast<VkRect2D *>(pStruct->pScissors)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO: + { // VkPipelineRasterizationStateCreateInfo + VkPipelineRasterizationStateCreateInfo const *pStruct = static_cast<VkPipelineRasterizationStateCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO: + { // VkPipelineMultisampleStateCreateInfo + VkPipelineMultisampleStateCreateInfo const *pStruct = static_cast<VkPipelineMultisampleStateCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkSampleMask - pSampleMask / rasterizationSamples + free(const_cast<VkSampleMask *>(pStruct->pSampleMask)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO: + { // VkPipelineColorBlendStateCreateInfo + VkPipelineColorBlendStateCreateInfo const *pStruct = static_cast<VkPipelineColorBlendStateCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkPipelineColorBlendAttachmentState - pAttachments / attachmentCount + free(const_cast<VkPipelineColorBlendAttachmentState *>(pStruct->pAttachments)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO: + { // VkPipelineDynamicStateCreateInfo + VkPipelineDynamicStateCreateInfo const *pStruct = static_cast<VkPipelineDynamicStateCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkDynamicState - pDynamicStates / dynamicStateCount + free(const_cast<VkDynamicState *>(pStruct->pDynamicStates)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO: + { // VkPipelineDepthStencilStateCreateInfo + VkPipelineDepthStencilStateCreateInfo const *pStruct = static_cast<VkPipelineDepthStencilStateCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO: + { // VkGraphicsPipelineCreateInfo + VkGraphicsPipelineCreateInfo const *pStruct = static_cast<VkGraphicsPipelineCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkPipelineShaderStageCreateInfo - pStages / stageCount + for (uint32_t i = 0; i < pStruct->stageCount; ++i) + vk_struct_cleanup(&pStruct->pStages[i]); + free(const_cast<VkPipelineShaderStageCreateInfo *>(pStruct->pStages)); + + // VkPipelineVertexInputStateCreateInfo - pVertexInputState + vk_struct_cleanup(pStruct->pVertexInputState); + free(const_cast<VkPipelineVertexInputStateCreateInfo *>(pStruct->pVertexInputState)); + + // VkPipelineInputAssemblyStateCreateInfo - pInputAssemblyState + vk_struct_cleanup(pStruct->pInputAssemblyState); + free(const_cast<VkPipelineInputAssemblyStateCreateInfo *>(pStruct->pInputAssemblyState)); + + // VkPipelineTessellationStateCreateInfo - pTessellationState + vk_struct_cleanup(pStruct->pTessellationState); + free(const_cast<VkPipelineTessellationStateCreateInfo *>(pStruct->pTessellationState)); + + // VkPipelineViewportStateCreateInfo - pViewportState + vk_struct_cleanup(pStruct->pViewportState); + free(const_cast<VkPipelineViewportStateCreateInfo *>(pStruct->pViewportState)); + + // VkPipelineRasterizationStateCreateInfo - pRasterizationState + vk_struct_cleanup(pStruct->pRasterizationState); + free(const_cast<VkPipelineRasterizationStateCreateInfo *>(pStruct->pRasterizationState)); + + // VkPipelineMultisampleStateCreateInfo - pMultisampleState + vk_struct_cleanup(pStruct->pMultisampleState); + free(const_cast<VkPipelineMultisampleStateCreateInfo *>(pStruct->pMultisampleState)); + + // VkPipelineDepthStencilStateCreateInfo - pDepthStencilState + vk_struct_cleanup(pStruct->pDepthStencilState); + free(const_cast<VkPipelineDepthStencilStateCreateInfo *>(pStruct->pDepthStencilState)); + + // VkPipelineColorBlendStateCreateInfo - pColorBlendState + vk_struct_cleanup(pStruct->pColorBlendState); + free(const_cast<VkPipelineColorBlendStateCreateInfo *>(pStruct->pColorBlendState)); + + // VkPipelineDynamicStateCreateInfo - pDynamicState + vk_struct_cleanup(pStruct->pDynamicState); + free(const_cast<VkPipelineDynamicStateCreateInfo *>(pStruct->pDynamicState)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO: + { // VkPipelineCacheCreateInfo + VkPipelineCacheCreateInfo const *pStruct = static_cast<VkPipelineCacheCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // void - pInitialData / initialDataSize + free(const_cast<void *>(pStruct->pInitialData)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO: + { // VkPipelineLayoutCreateInfo + VkPipelineLayoutCreateInfo const *pStruct = static_cast<VkPipelineLayoutCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkDescriptorSetLayout - pSetLayouts / setLayoutCount + free(const_cast<VkDescriptorSetLayout *>(pStruct->pSetLayouts)); + + // VkPushConstantRange - pPushConstantRanges / pushConstantRangeCount + free(const_cast<VkPushConstantRange *>(pStruct->pPushConstantRanges)); + } + + break; + + case VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO: + { // VkSamplerCreateInfo + VkSamplerCreateInfo const *pStruct = static_cast<VkSamplerCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO: + { // VkCommandPoolCreateInfo + VkCommandPoolCreateInfo const *pStruct = static_cast<VkCommandPoolCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO: + { // VkCommandBufferAllocateInfo + VkCommandBufferAllocateInfo const *pStruct = static_cast<VkCommandBufferAllocateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO: + { // VkCommandBufferInheritanceInfo + VkCommandBufferInheritanceInfo const *pStruct = static_cast<VkCommandBufferInheritanceInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO: + { // VkCommandBufferBeginInfo + VkCommandBufferBeginInfo const *pStruct = static_cast<VkCommandBufferBeginInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkCommandBufferInheritanceInfo - pInheritanceInfo + vk_struct_cleanup(pStruct->pInheritanceInfo); + free(const_cast<VkCommandBufferInheritanceInfo *>(pStruct->pInheritanceInfo)); + } + + break; + + case VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO: + { // VkRenderPassBeginInfo + VkRenderPassBeginInfo const *pStruct = static_cast<VkRenderPassBeginInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkClearValue - pClearValues / clearValueCount + free(const_cast<VkClearValue *>(pStruct->pClearValues)); + } + + break; + + case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO: + { // VkRenderPassCreateInfo + VkRenderPassCreateInfo const *pStruct = static_cast<VkRenderPassCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkAttachmentDescription - pAttachments / attachmentCount + free(const_cast<VkAttachmentDescription *>(pStruct->pAttachments)); + + // VkSubpassDescription - pSubpasses / subpassCount + free(const_cast<VkSubpassDescription *>(pStruct->pSubpasses)); + + // VkSubpassDependency - pDependencies / dependencyCount + free(const_cast<VkSubpassDependency *>(pStruct->pDependencies)); + } + + break; + + case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO: + { // VkEventCreateInfo + VkEventCreateInfo const *pStruct = static_cast<VkEventCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_FENCE_CREATE_INFO: + { // VkFenceCreateInfo + VkFenceCreateInfo const *pStruct = static_cast<VkFenceCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO: + { // VkSemaphoreCreateInfo + VkSemaphoreCreateInfo const *pStruct = static_cast<VkSemaphoreCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO: + { // VkQueryPoolCreateInfo + VkQueryPoolCreateInfo const *pStruct = static_cast<VkQueryPoolCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO: + { // VkFramebufferCreateInfo + VkFramebufferCreateInfo const *pStruct = static_cast<VkFramebufferCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkImageView - pAttachments / attachmentCount + free(const_cast<VkImageView *>(pStruct->pAttachments)); + } + + break; + + case VK_STRUCTURE_TYPE_SUBMIT_INFO: + { // VkSubmitInfo + VkSubmitInfo const *pStruct = static_cast<VkSubmitInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkSemaphore - pWaitSemaphores / waitSemaphoreCount + free(const_cast<VkSemaphore *>(pStruct->pWaitSemaphores)); + + // VkPipelineStageFlags - pWaitDstStageMask / waitSemaphoreCount + free(const_cast<VkPipelineStageFlags *>(pStruct->pWaitDstStageMask)); + + // VkCommandBuffer - pCommandBuffers / commandBufferCount + free(const_cast<VkCommandBuffer *>(pStruct->pCommandBuffers)); + + // VkSemaphore - pSignalSemaphores / signalSemaphoreCount + free(const_cast<VkSemaphore *>(pStruct->pSignalSemaphores)); + } + + break; + + case VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR: + { // VkDisplayModeCreateInfoKHR + VkDisplayModeCreateInfoKHR const *pStruct = static_cast<VkDisplayModeCreateInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR: + { // VkDisplaySurfaceCreateInfoKHR + VkDisplaySurfaceCreateInfoKHR const *pStruct = static_cast<VkDisplaySurfaceCreateInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR: + { // VkDisplayPresentInfoKHR + VkDisplayPresentInfoKHR const *pStruct = static_cast<VkDisplayPresentInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + +#ifdef VK_USE_PLATFORM_ANDROID_KHR + case VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR: + { // VkAndroidSurfaceCreateInfoKHR + VkAndroidSurfaceCreateInfoKHR const *pStruct = static_cast<VkAndroidSurfaceCreateInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_VI_NN + case VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN: + { // VkViSurfaceCreateInfoNN + VkViSurfaceCreateInfoNN const *pStruct = static_cast<VkViSurfaceCreateInfoNN const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_VI_NN + +#ifdef VK_USE_PLATFORM_WAYLAND_KHR + case VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR: + { // VkWaylandSurfaceCreateInfoKHR + VkWaylandSurfaceCreateInfoKHR const *pStruct = static_cast<VkWaylandSurfaceCreateInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_WAYLAND_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR + case VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR: + { // VkWin32SurfaceCreateInfoKHR + VkWin32SurfaceCreateInfoKHR const *pStruct = static_cast<VkWin32SurfaceCreateInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_XLIB_KHR + case VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR: + { // VkXlibSurfaceCreateInfoKHR + VkXlibSurfaceCreateInfoKHR const *pStruct = static_cast<VkXlibSurfaceCreateInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_XLIB_KHR + +#ifdef VK_USE_PLATFORM_XCB_KHR + case VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR: + { // VkXcbSurfaceCreateInfoKHR + VkXcbSurfaceCreateInfoKHR const *pStruct = static_cast<VkXcbSurfaceCreateInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_XCB_KHR + +#ifdef VK_USE_PLATFORM_DIRECTFB_EXT + case VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT: + { // VkDirectFBSurfaceCreateInfoEXT + VkDirectFBSurfaceCreateInfoEXT const *pStruct = static_cast<VkDirectFBSurfaceCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_DIRECTFB_EXT + +#ifdef VK_USE_PLATFORM_FUCHSIA + case VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA: + { // VkImagePipeSurfaceCreateInfoFUCHSIA + VkImagePipeSurfaceCreateInfoFUCHSIA const *pStruct = static_cast<VkImagePipeSurfaceCreateInfoFUCHSIA const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_GGP + case VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP: + { // VkStreamDescriptorSurfaceCreateInfoGGP + VkStreamDescriptorSurfaceCreateInfoGGP const *pStruct = static_cast<VkStreamDescriptorSurfaceCreateInfoGGP const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_GGP + +#ifdef VK_USE_PLATFORM_SCREEN_QNX + case VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX: + { // VkScreenSurfaceCreateInfoQNX + VkScreenSurfaceCreateInfoQNX const *pStruct = static_cast<VkScreenSurfaceCreateInfoQNX const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_SCREEN_QNX + + case VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR: + { // VkSwapchainCreateInfoKHR + VkSwapchainCreateInfoKHR const *pStruct = static_cast<VkSwapchainCreateInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // uint32_t - pQueueFamilyIndices / queueFamilyIndexCount + free(const_cast<uint32_t *>(pStruct->pQueueFamilyIndices)); + } + + break; + + case VK_STRUCTURE_TYPE_PRESENT_INFO_KHR: + { // VkPresentInfoKHR + VkPresentInfoKHR const *pStruct = static_cast<VkPresentInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkSemaphore - pWaitSemaphores / waitSemaphoreCount + free(const_cast<VkSemaphore *>(pStruct->pWaitSemaphores)); + + // VkSwapchainKHR - pSwapchains / swapchainCount + free(const_cast<VkSwapchainKHR *>(pStruct->pSwapchains)); + + // uint32_t - pImageIndices / swapchainCount + free(const_cast<uint32_t *>(pStruct->pImageIndices)); + + // VkResult - pResults / swapchainCount + free(const_cast<VkResult *>(pStruct->pResults)); + } + + break; + + case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT: + { // VkDebugReportCallbackCreateInfoEXT + VkDebugReportCallbackCreateInfoEXT const *pStruct = static_cast<VkDebugReportCallbackCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // void - pUserData + free(const_cast<void *>(pStruct->pUserData)); + } + + break; + + case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT: + { // VkValidationFlagsEXT + VkValidationFlagsEXT const *pStruct = static_cast<VkValidationFlagsEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkValidationCheckEXT - pDisabledValidationChecks / disabledValidationCheckCount + free(const_cast<VkValidationCheckEXT *>(pStruct->pDisabledValidationChecks)); + } + + break; + + case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT: + { // VkValidationFeaturesEXT + VkValidationFeaturesEXT const *pStruct = static_cast<VkValidationFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkValidationFeatureEnableEXT - pEnabledValidationFeatures / enabledValidationFeatureCount + free(const_cast<VkValidationFeatureEnableEXT *>(pStruct->pEnabledValidationFeatures)); + + // VkValidationFeatureDisableEXT - pDisabledValidationFeatures / disabledValidationFeatureCount + free(const_cast<VkValidationFeatureDisableEXT *>(pStruct->pDisabledValidationFeatures)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD: + { // VkPipelineRasterizationStateRasterizationOrderAMD + VkPipelineRasterizationStateRasterizationOrderAMD const *pStruct = static_cast<VkPipelineRasterizationStateRasterizationOrderAMD const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT: + { // VkDebugMarkerObjectNameInfoEXT + VkDebugMarkerObjectNameInfoEXT const *pStruct = static_cast<VkDebugMarkerObjectNameInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // char - pObjectName / null-terminated + free(const_cast<char *>(pStruct->pObjectName)); + } + + break; + + case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT: + { // VkDebugMarkerObjectTagInfoEXT + VkDebugMarkerObjectTagInfoEXT const *pStruct = static_cast<VkDebugMarkerObjectTagInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // void - pTag / tagSize + free(const_cast<void *>(pStruct->pTag)); + } + + break; + + case VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT: + { // VkDebugMarkerMarkerInfoEXT + VkDebugMarkerMarkerInfoEXT const *pStruct = static_cast<VkDebugMarkerMarkerInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // char - pMarkerName / null-terminated + free(const_cast<char *>(pStruct->pMarkerName)); + } + + break; + + case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV: + { // VkDedicatedAllocationImageCreateInfoNV + VkDedicatedAllocationImageCreateInfoNV const *pStruct = static_cast<VkDedicatedAllocationImageCreateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV: + { // VkDedicatedAllocationBufferCreateInfoNV + VkDedicatedAllocationBufferCreateInfoNV const *pStruct = static_cast<VkDedicatedAllocationBufferCreateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV: + { // VkDedicatedAllocationMemoryAllocateInfoNV + VkDedicatedAllocationMemoryAllocateInfoNV const *pStruct = static_cast<VkDedicatedAllocationMemoryAllocateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV: + { // VkExternalMemoryImageCreateInfoNV + VkExternalMemoryImageCreateInfoNV const *pStruct = static_cast<VkExternalMemoryImageCreateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV: + { // VkExportMemoryAllocateInfoNV + VkExportMemoryAllocateInfoNV const *pStruct = static_cast<VkExportMemoryAllocateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + +#ifdef VK_USE_PLATFORM_WIN32_KHR + case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV: + { // VkImportMemoryWin32HandleInfoNV + VkImportMemoryWin32HandleInfoNV const *pStruct = static_cast<VkImportMemoryWin32HandleInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR + case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV: + { // VkExportMemoryWin32HandleInfoNV + VkExportMemoryWin32HandleInfoNV const *pStruct = static_cast<VkExportMemoryWin32HandleInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // SECURITY_ATTRIBUTES - pAttributes + free(const_cast<SECURITY_ATTRIBUTES *>(pStruct->pAttributes)); + } + + break; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR + case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV: + { // VkWin32KeyedMutexAcquireReleaseInfoNV + VkWin32KeyedMutexAcquireReleaseInfoNV const *pStruct = static_cast<VkWin32KeyedMutexAcquireReleaseInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkDeviceMemory - pAcquireSyncs / acquireCount + free(const_cast<VkDeviceMemory *>(pStruct->pAcquireSyncs)); + + // uint64_t - pAcquireKeys / acquireCount + free(const_cast<uint64_t *>(pStruct->pAcquireKeys)); + + // uint32_t - pAcquireTimeoutMilliseconds / acquireCount + free(const_cast<uint32_t *>(pStruct->pAcquireTimeoutMilliseconds)); + + // VkDeviceMemory - pReleaseSyncs / releaseCount + free(const_cast<VkDeviceMemory *>(pStruct->pReleaseSyncs)); + + // uint64_t - pReleaseKeys / releaseCount + free(const_cast<uint64_t *>(pStruct->pReleaseKeys)); + } + + break; +#endif // VK_USE_PLATFORM_WIN32_KHR + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV: + { // VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const *pStruct = static_cast<VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT: + { // VkDevicePrivateDataCreateInfoEXT + VkDevicePrivateDataCreateInfoEXT const *pStruct = static_cast<VkDevicePrivateDataCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT: + { // VkPrivateDataSlotCreateInfoEXT + VkPrivateDataSlotCreateInfoEXT const *pStruct = static_cast<VkPrivateDataSlotCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT: + { // VkPhysicalDevicePrivateDataFeaturesEXT + VkPhysicalDevicePrivateDataFeaturesEXT const *pStruct = static_cast<VkPhysicalDevicePrivateDataFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV: + { // VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const *pStruct = static_cast<VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT: + { // VkPhysicalDeviceMultiDrawPropertiesEXT + VkPhysicalDeviceMultiDrawPropertiesEXT const *pStruct = static_cast<VkPhysicalDeviceMultiDrawPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV: + { // VkGraphicsShaderGroupCreateInfoNV + VkGraphicsShaderGroupCreateInfoNV const *pStruct = static_cast<VkGraphicsShaderGroupCreateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkPipelineShaderStageCreateInfo - pStages / stageCount + for (uint32_t i = 0; i < pStruct->stageCount; ++i) + vk_struct_cleanup(&pStruct->pStages[i]); + free(const_cast<VkPipelineShaderStageCreateInfo *>(pStruct->pStages)); + + // VkPipelineVertexInputStateCreateInfo - pVertexInputState + vk_struct_cleanup(pStruct->pVertexInputState); + free(const_cast<VkPipelineVertexInputStateCreateInfo *>(pStruct->pVertexInputState)); + + // VkPipelineTessellationStateCreateInfo - pTessellationState + vk_struct_cleanup(pStruct->pTessellationState); + free(const_cast<VkPipelineTessellationStateCreateInfo *>(pStruct->pTessellationState)); + } + + break; + + case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV: + { // VkGraphicsPipelineShaderGroupsCreateInfoNV + VkGraphicsPipelineShaderGroupsCreateInfoNV const *pStruct = static_cast<VkGraphicsPipelineShaderGroupsCreateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkGraphicsShaderGroupCreateInfoNV - pGroups / groupCount + for (uint32_t i = 0; i < pStruct->groupCount; ++i) + vk_struct_cleanup(&pStruct->pGroups[i]); + free(const_cast<VkGraphicsShaderGroupCreateInfoNV *>(pStruct->pGroups)); + + // VkPipeline - pPipelines / pipelineCount + free(const_cast<VkPipeline *>(pStruct->pPipelines)); + } + + break; + + case VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV: + { // VkIndirectCommandsLayoutTokenNV + VkIndirectCommandsLayoutTokenNV const *pStruct = static_cast<VkIndirectCommandsLayoutTokenNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkIndexType - pIndexTypes / indexTypeCount + free(const_cast<VkIndexType *>(pStruct->pIndexTypes)); + + // uint32_t - pIndexTypeValues / indexTypeCount + free(const_cast<uint32_t *>(pStruct->pIndexTypeValues)); + } + + break; + + case VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV: + { // VkIndirectCommandsLayoutCreateInfoNV + VkIndirectCommandsLayoutCreateInfoNV const *pStruct = static_cast<VkIndirectCommandsLayoutCreateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkIndirectCommandsLayoutTokenNV - pTokens / tokenCount + for (uint32_t i = 0; i < pStruct->tokenCount; ++i) + vk_struct_cleanup(&pStruct->pTokens[i]); + free(const_cast<VkIndirectCommandsLayoutTokenNV *>(pStruct->pTokens)); + + // uint32_t - pStreamStrides / streamCount + free(const_cast<uint32_t *>(pStruct->pStreamStrides)); + } + + break; + + case VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV: + { // VkGeneratedCommandsInfoNV + VkGeneratedCommandsInfoNV const *pStruct = static_cast<VkGeneratedCommandsInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkIndirectCommandsStreamNV - pStreams / streamCount + free(const_cast<VkIndirectCommandsStreamNV *>(pStruct->pStreams)); + } + + break; + + case VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV: + { // VkGeneratedCommandsMemoryRequirementsInfoNV + VkGeneratedCommandsMemoryRequirementsInfoNV const *pStruct = static_cast<VkGeneratedCommandsMemoryRequirementsInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: + { // VkPhysicalDeviceFeatures2 + VkPhysicalDeviceFeatures2 const *pStruct = static_cast<VkPhysicalDeviceFeatures2 const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2: + { // VkPhysicalDeviceProperties2 + VkPhysicalDeviceProperties2 const *pStruct = static_cast<VkPhysicalDeviceProperties2 const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2: + { // VkFormatProperties2 + VkFormatProperties2 const *pStruct = static_cast<VkFormatProperties2 const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2: + { // VkImageFormatProperties2 + VkImageFormatProperties2 const *pStruct = static_cast<VkImageFormatProperties2 const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2: + { // VkPhysicalDeviceImageFormatInfo2 + VkPhysicalDeviceImageFormatInfo2 const *pStruct = static_cast<VkPhysicalDeviceImageFormatInfo2 const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2: + { // VkQueueFamilyProperties2 + VkQueueFamilyProperties2 const *pStruct = static_cast<VkQueueFamilyProperties2 const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2: + { // VkPhysicalDeviceMemoryProperties2 + VkPhysicalDeviceMemoryProperties2 const *pStruct = static_cast<VkPhysicalDeviceMemoryProperties2 const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2: + { // VkSparseImageFormatProperties2 + VkSparseImageFormatProperties2 const *pStruct = static_cast<VkSparseImageFormatProperties2 const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2: + { // VkPhysicalDeviceSparseImageFormatInfo2 + VkPhysicalDeviceSparseImageFormatInfo2 const *pStruct = static_cast<VkPhysicalDeviceSparseImageFormatInfo2 const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR: + { // VkPhysicalDevicePushDescriptorPropertiesKHR + VkPhysicalDevicePushDescriptorPropertiesKHR const *pStruct = static_cast<VkPhysicalDevicePushDescriptorPropertiesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES: + { // VkPhysicalDeviceDriverProperties + VkPhysicalDeviceDriverProperties const *pStruct = static_cast<VkPhysicalDeviceDriverProperties const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR: + { // VkPresentRegionsKHR + VkPresentRegionsKHR const *pStruct = static_cast<VkPresentRegionsKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkPresentRegionKHR - pRegions / swapchainCount + free(const_cast<VkPresentRegionKHR *>(pStruct->pRegions)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: + { // VkPhysicalDeviceVariablePointersFeatures + VkPhysicalDeviceVariablePointersFeatures const *pStruct = static_cast<VkPhysicalDeviceVariablePointersFeatures const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO: + { // VkPhysicalDeviceExternalImageFormatInfo + VkPhysicalDeviceExternalImageFormatInfo const *pStruct = static_cast<VkPhysicalDeviceExternalImageFormatInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES: + { // VkExternalImageFormatProperties + VkExternalImageFormatProperties const *pStruct = static_cast<VkExternalImageFormatProperties const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO: + { // VkPhysicalDeviceExternalBufferInfo + VkPhysicalDeviceExternalBufferInfo const *pStruct = static_cast<VkPhysicalDeviceExternalBufferInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES: + { // VkExternalBufferProperties + VkExternalBufferProperties const *pStruct = static_cast<VkExternalBufferProperties const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES: + { // VkPhysicalDeviceIDProperties + VkPhysicalDeviceIDProperties const *pStruct = static_cast<VkPhysicalDeviceIDProperties const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO: + { // VkExternalMemoryImageCreateInfo + VkExternalMemoryImageCreateInfo const *pStruct = static_cast<VkExternalMemoryImageCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO: + { // VkExternalMemoryBufferCreateInfo + VkExternalMemoryBufferCreateInfo const *pStruct = static_cast<VkExternalMemoryBufferCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO: + { // VkExportMemoryAllocateInfo + VkExportMemoryAllocateInfo const *pStruct = static_cast<VkExportMemoryAllocateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + +#ifdef VK_USE_PLATFORM_WIN32_KHR + case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR: + { // VkImportMemoryWin32HandleInfoKHR + VkImportMemoryWin32HandleInfoKHR const *pStruct = static_cast<VkImportMemoryWin32HandleInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR + case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR: + { // VkExportMemoryWin32HandleInfoKHR + VkExportMemoryWin32HandleInfoKHR const *pStruct = static_cast<VkExportMemoryWin32HandleInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // SECURITY_ATTRIBUTES - pAttributes + free(const_cast<SECURITY_ATTRIBUTES *>(pStruct->pAttributes)); + } + + break; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_FUCHSIA + case VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA: + { // VkImportMemoryZirconHandleInfoFUCHSIA + VkImportMemoryZirconHandleInfoFUCHSIA const *pStruct = static_cast<VkImportMemoryZirconHandleInfoFUCHSIA const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA + case VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA: + { // VkMemoryZirconHandlePropertiesFUCHSIA + VkMemoryZirconHandlePropertiesFUCHSIA const *pStruct = static_cast<VkMemoryZirconHandlePropertiesFUCHSIA const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA + case VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA: + { // VkMemoryGetZirconHandleInfoFUCHSIA + VkMemoryGetZirconHandleInfoFUCHSIA const *pStruct = static_cast<VkMemoryGetZirconHandleInfoFUCHSIA const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_WIN32_KHR + case VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR: + { // VkMemoryWin32HandlePropertiesKHR + VkMemoryWin32HandlePropertiesKHR const *pStruct = static_cast<VkMemoryWin32HandlePropertiesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR + case VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR: + { // VkMemoryGetWin32HandleInfoKHR + VkMemoryGetWin32HandleInfoKHR const *pStruct = static_cast<VkMemoryGetWin32HandleInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_WIN32_KHR + + case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR: + { // VkImportMemoryFdInfoKHR + VkImportMemoryFdInfoKHR const *pStruct = static_cast<VkImportMemoryFdInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR: + { // VkMemoryFdPropertiesKHR + VkMemoryFdPropertiesKHR const *pStruct = static_cast<VkMemoryFdPropertiesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR: + { // VkMemoryGetFdInfoKHR + VkMemoryGetFdInfoKHR const *pStruct = static_cast<VkMemoryGetFdInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + +#ifdef VK_USE_PLATFORM_WIN32_KHR + case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR: + { // VkWin32KeyedMutexAcquireReleaseInfoKHR + VkWin32KeyedMutexAcquireReleaseInfoKHR const *pStruct = static_cast<VkWin32KeyedMutexAcquireReleaseInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkDeviceMemory - pAcquireSyncs / acquireCount + free(const_cast<VkDeviceMemory *>(pStruct->pAcquireSyncs)); + + // uint64_t - pAcquireKeys / acquireCount + free(const_cast<uint64_t *>(pStruct->pAcquireKeys)); + + // uint32_t - pAcquireTimeouts / acquireCount + free(const_cast<uint32_t *>(pStruct->pAcquireTimeouts)); + + // VkDeviceMemory - pReleaseSyncs / releaseCount + free(const_cast<VkDeviceMemory *>(pStruct->pReleaseSyncs)); + + // uint64_t - pReleaseKeys / releaseCount + free(const_cast<uint64_t *>(pStruct->pReleaseKeys)); + } + + break; +#endif // VK_USE_PLATFORM_WIN32_KHR + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO: + { // VkPhysicalDeviceExternalSemaphoreInfo + VkPhysicalDeviceExternalSemaphoreInfo const *pStruct = static_cast<VkPhysicalDeviceExternalSemaphoreInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES: + { // VkExternalSemaphoreProperties + VkExternalSemaphoreProperties const *pStruct = static_cast<VkExternalSemaphoreProperties const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO: + { // VkExportSemaphoreCreateInfo + VkExportSemaphoreCreateInfo const *pStruct = static_cast<VkExportSemaphoreCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + +#ifdef VK_USE_PLATFORM_WIN32_KHR + case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR: + { // VkImportSemaphoreWin32HandleInfoKHR + VkImportSemaphoreWin32HandleInfoKHR const *pStruct = static_cast<VkImportSemaphoreWin32HandleInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR + case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR: + { // VkExportSemaphoreWin32HandleInfoKHR + VkExportSemaphoreWin32HandleInfoKHR const *pStruct = static_cast<VkExportSemaphoreWin32HandleInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // SECURITY_ATTRIBUTES - pAttributes + free(const_cast<SECURITY_ATTRIBUTES *>(pStruct->pAttributes)); + } + + break; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR + case VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR: + { // VkD3D12FenceSubmitInfoKHR + VkD3D12FenceSubmitInfoKHR const *pStruct = static_cast<VkD3D12FenceSubmitInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // uint64_t - pWaitSemaphoreValues / waitSemaphoreValuesCount + free(const_cast<uint64_t *>(pStruct->pWaitSemaphoreValues)); + + // uint64_t - pSignalSemaphoreValues / signalSemaphoreValuesCount + free(const_cast<uint64_t *>(pStruct->pSignalSemaphoreValues)); + } + + break; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR + case VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR: + { // VkSemaphoreGetWin32HandleInfoKHR + VkSemaphoreGetWin32HandleInfoKHR const *pStruct = static_cast<VkSemaphoreGetWin32HandleInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_WIN32_KHR + + case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR: + { // VkImportSemaphoreFdInfoKHR + VkImportSemaphoreFdInfoKHR const *pStruct = static_cast<VkImportSemaphoreFdInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR: + { // VkSemaphoreGetFdInfoKHR + VkSemaphoreGetFdInfoKHR const *pStruct = static_cast<VkSemaphoreGetFdInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + +#ifdef VK_USE_PLATFORM_FUCHSIA + case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA: + { // VkImportSemaphoreZirconHandleInfoFUCHSIA + VkImportSemaphoreZirconHandleInfoFUCHSIA const *pStruct = static_cast<VkImportSemaphoreZirconHandleInfoFUCHSIA const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA + case VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA: + { // VkSemaphoreGetZirconHandleInfoFUCHSIA + VkSemaphoreGetZirconHandleInfoFUCHSIA const *pStruct = static_cast<VkSemaphoreGetZirconHandleInfoFUCHSIA const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_FUCHSIA + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO: + { // VkPhysicalDeviceExternalFenceInfo + VkPhysicalDeviceExternalFenceInfo const *pStruct = static_cast<VkPhysicalDeviceExternalFenceInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES: + { // VkExternalFenceProperties + VkExternalFenceProperties const *pStruct = static_cast<VkExternalFenceProperties const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO: + { // VkExportFenceCreateInfo + VkExportFenceCreateInfo const *pStruct = static_cast<VkExportFenceCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + +#ifdef VK_USE_PLATFORM_WIN32_KHR + case VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR: + { // VkImportFenceWin32HandleInfoKHR + VkImportFenceWin32HandleInfoKHR const *pStruct = static_cast<VkImportFenceWin32HandleInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR + case VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR: + { // VkExportFenceWin32HandleInfoKHR + VkExportFenceWin32HandleInfoKHR const *pStruct = static_cast<VkExportFenceWin32HandleInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // SECURITY_ATTRIBUTES - pAttributes + free(const_cast<SECURITY_ATTRIBUTES *>(pStruct->pAttributes)); + } + + break; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR + case VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR: + { // VkFenceGetWin32HandleInfoKHR + VkFenceGetWin32HandleInfoKHR const *pStruct = static_cast<VkFenceGetWin32HandleInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_WIN32_KHR + + case VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR: + { // VkImportFenceFdInfoKHR + VkImportFenceFdInfoKHR const *pStruct = static_cast<VkImportFenceFdInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR: + { // VkFenceGetFdInfoKHR + VkFenceGetFdInfoKHR const *pStruct = static_cast<VkFenceGetFdInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES: + { // VkPhysicalDeviceMultiviewFeatures + VkPhysicalDeviceMultiviewFeatures const *pStruct = static_cast<VkPhysicalDeviceMultiviewFeatures const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES: + { // VkPhysicalDeviceMultiviewProperties + VkPhysicalDeviceMultiviewProperties const *pStruct = static_cast<VkPhysicalDeviceMultiviewProperties const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO: + { // VkRenderPassMultiviewCreateInfo + VkRenderPassMultiviewCreateInfo const *pStruct = static_cast<VkRenderPassMultiviewCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // uint32_t - pViewMasks / subpassCount + free(const_cast<uint32_t *>(pStruct->pViewMasks)); + + // int32_t - pViewOffsets / dependencyCount + free(const_cast<int32_t *>(pStruct->pViewOffsets)); + + // uint32_t - pCorrelationMasks / correlationMaskCount + free(const_cast<uint32_t *>(pStruct->pCorrelationMasks)); + } + + break; + + case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT: + { // VkSurfaceCapabilities2EXT + VkSurfaceCapabilities2EXT const *pStruct = static_cast<VkSurfaceCapabilities2EXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT: + { // VkDisplayPowerInfoEXT + VkDisplayPowerInfoEXT const *pStruct = static_cast<VkDisplayPowerInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT: + { // VkDeviceEventInfoEXT + VkDeviceEventInfoEXT const *pStruct = static_cast<VkDeviceEventInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT: + { // VkDisplayEventInfoEXT + VkDisplayEventInfoEXT const *pStruct = static_cast<VkDisplayEventInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT: + { // VkSwapchainCounterCreateInfoEXT + VkSwapchainCounterCreateInfoEXT const *pStruct = static_cast<VkSwapchainCounterCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES: + { // VkPhysicalDeviceGroupProperties + VkPhysicalDeviceGroupProperties const *pStruct = static_cast<VkPhysicalDeviceGroupProperties const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO: + { // VkMemoryAllocateFlagsInfo + VkMemoryAllocateFlagsInfo const *pStruct = static_cast<VkMemoryAllocateFlagsInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO: + { // VkBindBufferMemoryInfo + VkBindBufferMemoryInfo const *pStruct = static_cast<VkBindBufferMemoryInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO: + { // VkBindBufferMemoryDeviceGroupInfo + VkBindBufferMemoryDeviceGroupInfo const *pStruct = static_cast<VkBindBufferMemoryDeviceGroupInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // uint32_t - pDeviceIndices / deviceIndexCount + free(const_cast<uint32_t *>(pStruct->pDeviceIndices)); + } + + break; + + case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO: + { // VkBindImageMemoryInfo + VkBindImageMemoryInfo const *pStruct = static_cast<VkBindImageMemoryInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO: + { // VkBindImageMemoryDeviceGroupInfo + VkBindImageMemoryDeviceGroupInfo const *pStruct = static_cast<VkBindImageMemoryDeviceGroupInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // uint32_t - pDeviceIndices / deviceIndexCount + free(const_cast<uint32_t *>(pStruct->pDeviceIndices)); + + // VkRect2D - pSplitInstanceBindRegions / splitInstanceBindRegionCount + free(const_cast<VkRect2D *>(pStruct->pSplitInstanceBindRegions)); + } + + break; + + case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO: + { // VkDeviceGroupRenderPassBeginInfo + VkDeviceGroupRenderPassBeginInfo const *pStruct = static_cast<VkDeviceGroupRenderPassBeginInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkRect2D - pDeviceRenderAreas / deviceRenderAreaCount + free(const_cast<VkRect2D *>(pStruct->pDeviceRenderAreas)); + } + + break; + + case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO: + { // VkDeviceGroupCommandBufferBeginInfo + VkDeviceGroupCommandBufferBeginInfo const *pStruct = static_cast<VkDeviceGroupCommandBufferBeginInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO: + { // VkDeviceGroupSubmitInfo + VkDeviceGroupSubmitInfo const *pStruct = static_cast<VkDeviceGroupSubmitInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // uint32_t - pWaitSemaphoreDeviceIndices / waitSemaphoreCount + free(const_cast<uint32_t *>(pStruct->pWaitSemaphoreDeviceIndices)); + + // uint32_t - pCommandBufferDeviceMasks / commandBufferCount + free(const_cast<uint32_t *>(pStruct->pCommandBufferDeviceMasks)); + + // uint32_t - pSignalSemaphoreDeviceIndices / signalSemaphoreCount + free(const_cast<uint32_t *>(pStruct->pSignalSemaphoreDeviceIndices)); + } + + break; + + case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO: + { // VkDeviceGroupBindSparseInfo + VkDeviceGroupBindSparseInfo const *pStruct = static_cast<VkDeviceGroupBindSparseInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR: + { // VkDeviceGroupPresentCapabilitiesKHR + VkDeviceGroupPresentCapabilitiesKHR const *pStruct = static_cast<VkDeviceGroupPresentCapabilitiesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR: + { // VkImageSwapchainCreateInfoKHR + VkImageSwapchainCreateInfoKHR const *pStruct = static_cast<VkImageSwapchainCreateInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR: + { // VkBindImageMemorySwapchainInfoKHR + VkBindImageMemorySwapchainInfoKHR const *pStruct = static_cast<VkBindImageMemorySwapchainInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR: + { // VkAcquireNextImageInfoKHR + VkAcquireNextImageInfoKHR const *pStruct = static_cast<VkAcquireNextImageInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR: + { // VkDeviceGroupPresentInfoKHR + VkDeviceGroupPresentInfoKHR const *pStruct = static_cast<VkDeviceGroupPresentInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // uint32_t - pDeviceMasks / swapchainCount + free(const_cast<uint32_t *>(pStruct->pDeviceMasks)); + } + + break; + + case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO: + { // VkDeviceGroupDeviceCreateInfo + VkDeviceGroupDeviceCreateInfo const *pStruct = static_cast<VkDeviceGroupDeviceCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkPhysicalDevice - pPhysicalDevices / physicalDeviceCount + free(const_cast<VkPhysicalDevice *>(pStruct->pPhysicalDevices)); + } + + break; + + case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR: + { // VkDeviceGroupSwapchainCreateInfoKHR + VkDeviceGroupSwapchainCreateInfoKHR const *pStruct = static_cast<VkDeviceGroupSwapchainCreateInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO: + { // VkDescriptorUpdateTemplateCreateInfo + VkDescriptorUpdateTemplateCreateInfo const *pStruct = static_cast<VkDescriptorUpdateTemplateCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkDescriptorUpdateTemplateEntry - pDescriptorUpdateEntries / descriptorUpdateEntryCount + free(const_cast<VkDescriptorUpdateTemplateEntry *>(pStruct->pDescriptorUpdateEntries)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR: + { // VkPhysicalDevicePresentIdFeaturesKHR + VkPhysicalDevicePresentIdFeaturesKHR const *pStruct = static_cast<VkPhysicalDevicePresentIdFeaturesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PRESENT_ID_KHR: + { // VkPresentIdKHR + VkPresentIdKHR const *pStruct = static_cast<VkPresentIdKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // uint64_t - pPresentIds / swapchainCount + free(const_cast<uint64_t *>(pStruct->pPresentIds)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR: + { // VkPhysicalDevicePresentWaitFeaturesKHR + VkPhysicalDevicePresentWaitFeaturesKHR const *pStruct = static_cast<VkPhysicalDevicePresentWaitFeaturesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_HDR_METADATA_EXT: + { // VkHdrMetadataEXT + VkHdrMetadataEXT const *pStruct = static_cast<VkHdrMetadataEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD: + { // VkDisplayNativeHdrSurfaceCapabilitiesAMD + VkDisplayNativeHdrSurfaceCapabilitiesAMD const *pStruct = static_cast<VkDisplayNativeHdrSurfaceCapabilitiesAMD const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD: + { // VkSwapchainDisplayNativeHdrCreateInfoAMD + VkSwapchainDisplayNativeHdrCreateInfoAMD const *pStruct = static_cast<VkSwapchainDisplayNativeHdrCreateInfoAMD const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE: + { // VkPresentTimesInfoGOOGLE + VkPresentTimesInfoGOOGLE const *pStruct = static_cast<VkPresentTimesInfoGOOGLE const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkPresentTimeGOOGLE - pTimes / swapchainCount + free(const_cast<VkPresentTimeGOOGLE *>(pStruct->pTimes)); + } + + break; + +#ifdef VK_USE_PLATFORM_IOS_MVK + case VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK: + { // VkIOSSurfaceCreateInfoMVK + VkIOSSurfaceCreateInfoMVK const *pStruct = static_cast<VkIOSSurfaceCreateInfoMVK const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // void - pView + free(const_cast<void *>(pStruct->pView)); + } + + break; +#endif // VK_USE_PLATFORM_IOS_MVK + +#ifdef VK_USE_PLATFORM_MACOS_MVK + case VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK: + { // VkMacOSSurfaceCreateInfoMVK + VkMacOSSurfaceCreateInfoMVK const *pStruct = static_cast<VkMacOSSurfaceCreateInfoMVK const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // void - pView + free(const_cast<void *>(pStruct->pView)); + } + + break; +#endif // VK_USE_PLATFORM_MACOS_MVK + +#ifdef VK_USE_PLATFORM_METAL_EXT + case VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT: + { // VkMetalSurfaceCreateInfoEXT + VkMetalSurfaceCreateInfoEXT const *pStruct = static_cast<VkMetalSurfaceCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // CAMetalLayer - pLayer + free(const_cast<CAMetalLayer *>(pStruct->pLayer)); + } + + break; +#endif // VK_USE_PLATFORM_METAL_EXT + + case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV: + { // VkPipelineViewportWScalingStateCreateInfoNV + VkPipelineViewportWScalingStateCreateInfoNV const *pStruct = static_cast<VkPipelineViewportWScalingStateCreateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkViewportWScalingNV - pViewportWScalings / viewportCount + free(const_cast<VkViewportWScalingNV *>(pStruct->pViewportWScalings)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV: + { // VkPipelineViewportSwizzleStateCreateInfoNV + VkPipelineViewportSwizzleStateCreateInfoNV const *pStruct = static_cast<VkPipelineViewportSwizzleStateCreateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkViewportSwizzleNV - pViewportSwizzles / viewportCount + free(const_cast<VkViewportSwizzleNV *>(pStruct->pViewportSwizzles)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT: + { // VkPhysicalDeviceDiscardRectanglePropertiesEXT + VkPhysicalDeviceDiscardRectanglePropertiesEXT const *pStruct = static_cast<VkPhysicalDeviceDiscardRectanglePropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT: + { // VkPipelineDiscardRectangleStateCreateInfoEXT + VkPipelineDiscardRectangleStateCreateInfoEXT const *pStruct = static_cast<VkPipelineDiscardRectangleStateCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkRect2D - pDiscardRectangles / discardRectangleCount + free(const_cast<VkRect2D *>(pStruct->pDiscardRectangles)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX: + { // VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const *pStruct = static_cast<VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO: + { // VkRenderPassInputAttachmentAspectCreateInfo + VkRenderPassInputAttachmentAspectCreateInfo const *pStruct = static_cast<VkRenderPassInputAttachmentAspectCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkInputAttachmentAspectReference - pAspectReferences / aspectReferenceCount + free(const_cast<VkInputAttachmentAspectReference *>(pStruct->pAspectReferences)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR: + { // VkPhysicalDeviceSurfaceInfo2KHR + VkPhysicalDeviceSurfaceInfo2KHR const *pStruct = static_cast<VkPhysicalDeviceSurfaceInfo2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR: + { // VkSurfaceCapabilities2KHR + VkSurfaceCapabilities2KHR const *pStruct = static_cast<VkSurfaceCapabilities2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR: + { // VkSurfaceFormat2KHR + VkSurfaceFormat2KHR const *pStruct = static_cast<VkSurfaceFormat2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR: + { // VkDisplayProperties2KHR + VkDisplayProperties2KHR const *pStruct = static_cast<VkDisplayProperties2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR: + { // VkDisplayPlaneProperties2KHR + VkDisplayPlaneProperties2KHR const *pStruct = static_cast<VkDisplayPlaneProperties2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR: + { // VkDisplayModeProperties2KHR + VkDisplayModeProperties2KHR const *pStruct = static_cast<VkDisplayModeProperties2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR: + { // VkDisplayPlaneInfo2KHR + VkDisplayPlaneInfo2KHR const *pStruct = static_cast<VkDisplayPlaneInfo2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR: + { // VkDisplayPlaneCapabilities2KHR + VkDisplayPlaneCapabilities2KHR const *pStruct = static_cast<VkDisplayPlaneCapabilities2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR: + { // VkSharedPresentSurfaceCapabilitiesKHR + VkSharedPresentSurfaceCapabilitiesKHR const *pStruct = static_cast<VkSharedPresentSurfaceCapabilitiesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: + { // VkPhysicalDevice16BitStorageFeatures + VkPhysicalDevice16BitStorageFeatures const *pStruct = static_cast<VkPhysicalDevice16BitStorageFeatures const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES: + { // VkPhysicalDeviceSubgroupProperties + VkPhysicalDeviceSubgroupProperties const *pStruct = static_cast<VkPhysicalDeviceSubgroupProperties const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES: + { // VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const *pStruct = static_cast<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2: + { // VkBufferMemoryRequirementsInfo2 + VkBufferMemoryRequirementsInfo2 const *pStruct = static_cast<VkBufferMemoryRequirementsInfo2 const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR: + { // VkDeviceBufferMemoryRequirementsKHR + VkDeviceBufferMemoryRequirementsKHR const *pStruct = static_cast<VkDeviceBufferMemoryRequirementsKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkBufferCreateInfo - pCreateInfo + vk_struct_cleanup(pStruct->pCreateInfo); + free(const_cast<VkBufferCreateInfo *>(pStruct->pCreateInfo)); + } + + break; + + case VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2: + { // VkImageMemoryRequirementsInfo2 + VkImageMemoryRequirementsInfo2 const *pStruct = static_cast<VkImageMemoryRequirementsInfo2 const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2: + { // VkImageSparseMemoryRequirementsInfo2 + VkImageSparseMemoryRequirementsInfo2 const *pStruct = static_cast<VkImageSparseMemoryRequirementsInfo2 const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR: + { // VkDeviceImageMemoryRequirementsKHR + VkDeviceImageMemoryRequirementsKHR const *pStruct = static_cast<VkDeviceImageMemoryRequirementsKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkImageCreateInfo - pCreateInfo + vk_struct_cleanup(pStruct->pCreateInfo); + free(const_cast<VkImageCreateInfo *>(pStruct->pCreateInfo)); + } + + break; + + case VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2: + { // VkMemoryRequirements2 + VkMemoryRequirements2 const *pStruct = static_cast<VkMemoryRequirements2 const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2: + { // VkSparseImageMemoryRequirements2 + VkSparseImageMemoryRequirements2 const *pStruct = static_cast<VkSparseImageMemoryRequirements2 const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES: + { // VkPhysicalDevicePointClippingProperties + VkPhysicalDevicePointClippingProperties const *pStruct = static_cast<VkPhysicalDevicePointClippingProperties const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS: + { // VkMemoryDedicatedRequirements + VkMemoryDedicatedRequirements const *pStruct = static_cast<VkMemoryDedicatedRequirements const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO: + { // VkMemoryDedicatedAllocateInfo + VkMemoryDedicatedAllocateInfo const *pStruct = static_cast<VkMemoryDedicatedAllocateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO: + { // VkImageViewUsageCreateInfo + VkImageViewUsageCreateInfo const *pStruct = static_cast<VkImageViewUsageCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO: + { // VkPipelineTessellationDomainOriginStateCreateInfo + VkPipelineTessellationDomainOriginStateCreateInfo const *pStruct = static_cast<VkPipelineTessellationDomainOriginStateCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO: + { // VkSamplerYcbcrConversionInfo + VkSamplerYcbcrConversionInfo const *pStruct = static_cast<VkSamplerYcbcrConversionInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO: + { // VkSamplerYcbcrConversionCreateInfo + VkSamplerYcbcrConversionCreateInfo const *pStruct = static_cast<VkSamplerYcbcrConversionCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO: + { // VkBindImagePlaneMemoryInfo + VkBindImagePlaneMemoryInfo const *pStruct = static_cast<VkBindImagePlaneMemoryInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO: + { // VkImagePlaneMemoryRequirementsInfo + VkImagePlaneMemoryRequirementsInfo const *pStruct = static_cast<VkImagePlaneMemoryRequirementsInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES: + { // VkPhysicalDeviceSamplerYcbcrConversionFeatures + VkPhysicalDeviceSamplerYcbcrConversionFeatures const *pStruct = static_cast<VkPhysicalDeviceSamplerYcbcrConversionFeatures const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES: + { // VkSamplerYcbcrConversionImageFormatProperties + VkSamplerYcbcrConversionImageFormatProperties const *pStruct = static_cast<VkSamplerYcbcrConversionImageFormatProperties const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD: + { // VkTextureLODGatherFormatPropertiesAMD + VkTextureLODGatherFormatPropertiesAMD const *pStruct = static_cast<VkTextureLODGatherFormatPropertiesAMD const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT: + { // VkConditionalRenderingBeginInfoEXT + VkConditionalRenderingBeginInfoEXT const *pStruct = static_cast<VkConditionalRenderingBeginInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO: + { // VkProtectedSubmitInfo + VkProtectedSubmitInfo const *pStruct = static_cast<VkProtectedSubmitInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES: + { // VkPhysicalDeviceProtectedMemoryFeatures + VkPhysicalDeviceProtectedMemoryFeatures const *pStruct = static_cast<VkPhysicalDeviceProtectedMemoryFeatures const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES: + { // VkPhysicalDeviceProtectedMemoryProperties + VkPhysicalDeviceProtectedMemoryProperties const *pStruct = static_cast<VkPhysicalDeviceProtectedMemoryProperties const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2: + { // VkDeviceQueueInfo2 + VkDeviceQueueInfo2 const *pStruct = static_cast<VkDeviceQueueInfo2 const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV: + { // VkPipelineCoverageToColorStateCreateInfoNV + VkPipelineCoverageToColorStateCreateInfoNV const *pStruct = static_cast<VkPipelineCoverageToColorStateCreateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES: + { // VkPhysicalDeviceSamplerFilterMinmaxProperties + VkPhysicalDeviceSamplerFilterMinmaxProperties const *pStruct = static_cast<VkPhysicalDeviceSamplerFilterMinmaxProperties const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT: + { // VkSampleLocationsInfoEXT + VkSampleLocationsInfoEXT const *pStruct = static_cast<VkSampleLocationsInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkSampleLocationEXT - pSampleLocations / sampleLocationsCount + free(const_cast<VkSampleLocationEXT *>(pStruct->pSampleLocations)); + } + + break; + + case VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT: + { // VkRenderPassSampleLocationsBeginInfoEXT + VkRenderPassSampleLocationsBeginInfoEXT const *pStruct = static_cast<VkRenderPassSampleLocationsBeginInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkAttachmentSampleLocationsEXT - pAttachmentInitialSampleLocations / attachmentInitialSampleLocationsCount + free(const_cast<VkAttachmentSampleLocationsEXT *>(pStruct->pAttachmentInitialSampleLocations)); + + // VkSubpassSampleLocationsEXT - pPostSubpassSampleLocations / postSubpassSampleLocationsCount + free(const_cast<VkSubpassSampleLocationsEXT *>(pStruct->pPostSubpassSampleLocations)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT: + { // VkPipelineSampleLocationsStateCreateInfoEXT + VkPipelineSampleLocationsStateCreateInfoEXT const *pStruct = static_cast<VkPipelineSampleLocationsStateCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT: + { // VkPhysicalDeviceSampleLocationsPropertiesEXT + VkPhysicalDeviceSampleLocationsPropertiesEXT const *pStruct = static_cast<VkPhysicalDeviceSampleLocationsPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT: + { // VkMultisamplePropertiesEXT + VkMultisamplePropertiesEXT const *pStruct = static_cast<VkMultisamplePropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO: + { // VkSamplerReductionModeCreateInfo + VkSamplerReductionModeCreateInfo const *pStruct = static_cast<VkSamplerReductionModeCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT: + { // VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT: + { // VkPhysicalDeviceMultiDrawFeaturesEXT + VkPhysicalDeviceMultiDrawFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceMultiDrawFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT: + { // VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const *pStruct = static_cast<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT: + { // VkPipelineColorBlendAdvancedStateCreateInfoEXT + VkPipelineColorBlendAdvancedStateCreateInfoEXT const *pStruct = static_cast<VkPipelineColorBlendAdvancedStateCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT: + { // VkPhysicalDeviceInlineUniformBlockFeaturesEXT + VkPhysicalDeviceInlineUniformBlockFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceInlineUniformBlockFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT: + { // VkPhysicalDeviceInlineUniformBlockPropertiesEXT + VkPhysicalDeviceInlineUniformBlockPropertiesEXT const *pStruct = static_cast<VkPhysicalDeviceInlineUniformBlockPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT: + { // VkWriteDescriptorSetInlineUniformBlockEXT + VkWriteDescriptorSetInlineUniformBlockEXT const *pStruct = static_cast<VkWriteDescriptorSetInlineUniformBlockEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // void - pData / dataSize + free(const_cast<void *>(pStruct->pData)); + } + + break; + + case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT: + { // VkDescriptorPoolInlineUniformBlockCreateInfoEXT + VkDescriptorPoolInlineUniformBlockCreateInfoEXT const *pStruct = static_cast<VkDescriptorPoolInlineUniformBlockCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV: + { // VkPipelineCoverageModulationStateCreateInfoNV + VkPipelineCoverageModulationStateCreateInfoNV const *pStruct = static_cast<VkPipelineCoverageModulationStateCreateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // float - pCoverageModulationTable / coverageModulationTableCount + free(const_cast<float *>(pStruct->pCoverageModulationTable)); + } + + break; + + case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO: + { // VkImageFormatListCreateInfo + VkImageFormatListCreateInfo const *pStruct = static_cast<VkImageFormatListCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkFormat - pViewFormats / viewFormatCount + free(const_cast<VkFormat *>(pStruct->pViewFormats)); + } + + break; + + case VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT: + { // VkValidationCacheCreateInfoEXT + VkValidationCacheCreateInfoEXT const *pStruct = static_cast<VkValidationCacheCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // void - pInitialData / initialDataSize + free(const_cast<void *>(pStruct->pInitialData)); + } + + break; + + case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT: + { // VkShaderModuleValidationCacheCreateInfoEXT + VkShaderModuleValidationCacheCreateInfoEXT const *pStruct = static_cast<VkShaderModuleValidationCacheCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES: + { // VkPhysicalDeviceMaintenance3Properties + VkPhysicalDeviceMaintenance3Properties const *pStruct = static_cast<VkPhysicalDeviceMaintenance3Properties const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR: + { // VkPhysicalDeviceMaintenance4FeaturesKHR + VkPhysicalDeviceMaintenance4FeaturesKHR const *pStruct = static_cast<VkPhysicalDeviceMaintenance4FeaturesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR: + { // VkPhysicalDeviceMaintenance4PropertiesKHR + VkPhysicalDeviceMaintenance4PropertiesKHR const *pStruct = static_cast<VkPhysicalDeviceMaintenance4PropertiesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT: + { // VkDescriptorSetLayoutSupport + VkDescriptorSetLayoutSupport const *pStruct = static_cast<VkDescriptorSetLayoutSupport const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: + { // VkPhysicalDeviceShaderDrawParametersFeatures + VkPhysicalDeviceShaderDrawParametersFeatures const *pStruct = static_cast<VkPhysicalDeviceShaderDrawParametersFeatures const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES: + { // VkPhysicalDeviceShaderFloat16Int8Features + VkPhysicalDeviceShaderFloat16Int8Features const *pStruct = static_cast<VkPhysicalDeviceShaderFloat16Int8Features const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES: + { // VkPhysicalDeviceFloatControlsProperties + VkPhysicalDeviceFloatControlsProperties const *pStruct = static_cast<VkPhysicalDeviceFloatControlsProperties const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES: + { // VkPhysicalDeviceHostQueryResetFeatures + VkPhysicalDeviceHostQueryResetFeatures const *pStruct = static_cast<VkPhysicalDeviceHostQueryResetFeatures const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + +#ifdef VK_USE_PLATFORM_ANDROID_KHR + case VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID: + { // VkNativeBufferANDROID + VkNativeBufferANDROID const *pStruct = static_cast<VkNativeBufferANDROID const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_ANDROID_KHR + case VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID: + { // VkSwapchainImageCreateInfoANDROID + VkSwapchainImageCreateInfoANDROID const *pStruct = static_cast<VkSwapchainImageCreateInfoANDROID const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_ANDROID_KHR + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID: + { // VkPhysicalDevicePresentationPropertiesANDROID + VkPhysicalDevicePresentationPropertiesANDROID const *pStruct = static_cast<VkPhysicalDevicePresentationPropertiesANDROID const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_ANDROID_KHR + + case VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT: + { // VkDeviceQueueGlobalPriorityCreateInfoEXT + VkDeviceQueueGlobalPriorityCreateInfoEXT const *pStruct = static_cast<VkDeviceQueueGlobalPriorityCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT: + { // VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT + VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT: + { // VkQueueFamilyGlobalPriorityPropertiesEXT + VkQueueFamilyGlobalPriorityPropertiesEXT const *pStruct = static_cast<VkQueueFamilyGlobalPriorityPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT: + { // VkDebugUtilsObjectNameInfoEXT + VkDebugUtilsObjectNameInfoEXT const *pStruct = static_cast<VkDebugUtilsObjectNameInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // char - pObjectName / null-terminated + free(const_cast<char *>(pStruct->pObjectName)); + } + + break; + + case VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT: + { // VkDebugUtilsObjectTagInfoEXT + VkDebugUtilsObjectTagInfoEXT const *pStruct = static_cast<VkDebugUtilsObjectTagInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // void - pTag / tagSize + free(const_cast<void *>(pStruct->pTag)); + } + + break; + + case VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT: + { // VkDebugUtilsLabelEXT + VkDebugUtilsLabelEXT const *pStruct = static_cast<VkDebugUtilsLabelEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // char - pLabelName / null-terminated + free(const_cast<char *>(pStruct->pLabelName)); + } + + break; + + case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT: + { // VkDebugUtilsMessengerCreateInfoEXT + VkDebugUtilsMessengerCreateInfoEXT const *pStruct = static_cast<VkDebugUtilsMessengerCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // void - pUserData + free(const_cast<void *>(pStruct->pUserData)); + } + + break; + + case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT: + { // VkDebugUtilsMessengerCallbackDataEXT + VkDebugUtilsMessengerCallbackDataEXT const *pStruct = static_cast<VkDebugUtilsMessengerCallbackDataEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // char - pMessageIdName / null-terminated + free(const_cast<char *>(pStruct->pMessageIdName)); + + // char - pMessage / null-terminated + free(const_cast<char *>(pStruct->pMessage)); + + // VkDebugUtilsLabelEXT - pQueueLabels / queueLabelCount + for (uint32_t i = 0; i < pStruct->queueLabelCount; ++i) + vk_struct_cleanup(&pStruct->pQueueLabels[i]); + free(const_cast<VkDebugUtilsLabelEXT *>(pStruct->pQueueLabels)); + + // VkDebugUtilsLabelEXT - pCmdBufLabels / cmdBufLabelCount + for (uint32_t i = 0; i < pStruct->cmdBufLabelCount; ++i) + vk_struct_cleanup(&pStruct->pCmdBufLabels[i]); + free(const_cast<VkDebugUtilsLabelEXT *>(pStruct->pCmdBufLabels)); + + // VkDebugUtilsObjectNameInfoEXT - pObjects / objectCount + for (uint32_t i = 0; i < pStruct->objectCount; ++i) + vk_struct_cleanup(&pStruct->pObjects[i]); + free(const_cast<VkDebugUtilsObjectNameInfoEXT *>(pStruct->pObjects)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT: + { // VkPhysicalDeviceDeviceMemoryReportFeaturesEXT + VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT: + { // VkDeviceDeviceMemoryReportCreateInfoEXT + VkDeviceDeviceMemoryReportCreateInfoEXT const *pStruct = static_cast<VkDeviceDeviceMemoryReportCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // void - pUserData + free(const_cast<void *>(pStruct->pUserData)); + } + + break; + + case VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT: + { // VkDeviceMemoryReportCallbackDataEXT + VkDeviceMemoryReportCallbackDataEXT const *pStruct = static_cast<VkDeviceMemoryReportCallbackDataEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT: + { // VkImportMemoryHostPointerInfoEXT + VkImportMemoryHostPointerInfoEXT const *pStruct = static_cast<VkImportMemoryHostPointerInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // void - pHostPointer + free(const_cast<void *>(pStruct->pHostPointer)); + } + + break; + + case VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT: + { // VkMemoryHostPointerPropertiesEXT + VkMemoryHostPointerPropertiesEXT const *pStruct = static_cast<VkMemoryHostPointerPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT: + { // VkPhysicalDeviceExternalMemoryHostPropertiesEXT + VkPhysicalDeviceExternalMemoryHostPropertiesEXT const *pStruct = static_cast<VkPhysicalDeviceExternalMemoryHostPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT: + { // VkPhysicalDeviceConservativeRasterizationPropertiesEXT + VkPhysicalDeviceConservativeRasterizationPropertiesEXT const *pStruct = static_cast<VkPhysicalDeviceConservativeRasterizationPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT: + { // VkCalibratedTimestampInfoEXT + VkCalibratedTimestampInfoEXT const *pStruct = static_cast<VkCalibratedTimestampInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD: + { // VkPhysicalDeviceShaderCorePropertiesAMD + VkPhysicalDeviceShaderCorePropertiesAMD const *pStruct = static_cast<VkPhysicalDeviceShaderCorePropertiesAMD const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD: + { // VkPhysicalDeviceShaderCoreProperties2AMD + VkPhysicalDeviceShaderCoreProperties2AMD const *pStruct = static_cast<VkPhysicalDeviceShaderCoreProperties2AMD const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT: + { // VkPipelineRasterizationConservativeStateCreateInfoEXT + VkPipelineRasterizationConservativeStateCreateInfoEXT const *pStruct = static_cast<VkPipelineRasterizationConservativeStateCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES: + { // VkPhysicalDeviceDescriptorIndexingFeatures + VkPhysicalDeviceDescriptorIndexingFeatures const *pStruct = static_cast<VkPhysicalDeviceDescriptorIndexingFeatures const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES: + { // VkPhysicalDeviceDescriptorIndexingProperties + VkPhysicalDeviceDescriptorIndexingProperties const *pStruct = static_cast<VkPhysicalDeviceDescriptorIndexingProperties const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO: + { // VkDescriptorSetLayoutBindingFlagsCreateInfo + VkDescriptorSetLayoutBindingFlagsCreateInfo const *pStruct = static_cast<VkDescriptorSetLayoutBindingFlagsCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkDescriptorBindingFlags - pBindingFlags / bindingCount + free(const_cast<VkDescriptorBindingFlags *>(pStruct->pBindingFlags)); + } + + break; + + case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO: + { // VkDescriptorSetVariableDescriptorCountAllocateInfo + VkDescriptorSetVariableDescriptorCountAllocateInfo const *pStruct = static_cast<VkDescriptorSetVariableDescriptorCountAllocateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // uint32_t - pDescriptorCounts / descriptorSetCount + free(const_cast<uint32_t *>(pStruct->pDescriptorCounts)); + } + + break; + + case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT: + { // VkDescriptorSetVariableDescriptorCountLayoutSupport + VkDescriptorSetVariableDescriptorCountLayoutSupport const *pStruct = static_cast<VkDescriptorSetVariableDescriptorCountLayoutSupport const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2: + { // VkAttachmentDescription2 + VkAttachmentDescription2 const *pStruct = static_cast<VkAttachmentDescription2 const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2: + { // VkAttachmentReference2 + VkAttachmentReference2 const *pStruct = static_cast<VkAttachmentReference2 const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2: + { // VkSubpassDescription2 + VkSubpassDescription2 const *pStruct = static_cast<VkSubpassDescription2 const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkAttachmentReference2 - pInputAttachments / inputAttachmentCount + for (uint32_t i = 0; i < pStruct->inputAttachmentCount; ++i) + vk_struct_cleanup(&pStruct->pInputAttachments[i]); + free(const_cast<VkAttachmentReference2 *>(pStruct->pInputAttachments)); + + // VkAttachmentReference2 - pColorAttachments / colorAttachmentCount + for (uint32_t i = 0; i < pStruct->colorAttachmentCount; ++i) + vk_struct_cleanup(&pStruct->pColorAttachments[i]); + free(const_cast<VkAttachmentReference2 *>(pStruct->pColorAttachments)); + + // VkAttachmentReference2 - pResolveAttachments / colorAttachmentCount + for (uint32_t i = 0; i < pStruct->colorAttachmentCount; ++i) + vk_struct_cleanup(&pStruct->pResolveAttachments[i]); + free(const_cast<VkAttachmentReference2 *>(pStruct->pResolveAttachments)); + + // VkAttachmentReference2 - pDepthStencilAttachment + vk_struct_cleanup(pStruct->pDepthStencilAttachment); + free(const_cast<VkAttachmentReference2 *>(pStruct->pDepthStencilAttachment)); + + // uint32_t - pPreserveAttachments / preserveAttachmentCount + free(const_cast<uint32_t *>(pStruct->pPreserveAttachments)); + } + + break; + + case VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2: + { // VkSubpassDependency2 + VkSubpassDependency2 const *pStruct = static_cast<VkSubpassDependency2 const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2: + { // VkRenderPassCreateInfo2 + VkRenderPassCreateInfo2 const *pStruct = static_cast<VkRenderPassCreateInfo2 const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkAttachmentDescription2 - pAttachments / attachmentCount + for (uint32_t i = 0; i < pStruct->attachmentCount; ++i) + vk_struct_cleanup(&pStruct->pAttachments[i]); + free(const_cast<VkAttachmentDescription2 *>(pStruct->pAttachments)); + + // VkSubpassDescription2 - pSubpasses / subpassCount + for (uint32_t i = 0; i < pStruct->subpassCount; ++i) + vk_struct_cleanup(&pStruct->pSubpasses[i]); + free(const_cast<VkSubpassDescription2 *>(pStruct->pSubpasses)); + + // VkSubpassDependency2 - pDependencies / dependencyCount + for (uint32_t i = 0; i < pStruct->dependencyCount; ++i) + vk_struct_cleanup(&pStruct->pDependencies[i]); + free(const_cast<VkSubpassDependency2 *>(pStruct->pDependencies)); + + // uint32_t - pCorrelatedViewMasks / correlatedViewMaskCount + free(const_cast<uint32_t *>(pStruct->pCorrelatedViewMasks)); + } + + break; + + case VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO: + { // VkSubpassBeginInfo + VkSubpassBeginInfo const *pStruct = static_cast<VkSubpassBeginInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SUBPASS_END_INFO: + { // VkSubpassEndInfo + VkSubpassEndInfo const *pStruct = static_cast<VkSubpassEndInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES: + { // VkPhysicalDeviceTimelineSemaphoreFeatures + VkPhysicalDeviceTimelineSemaphoreFeatures const *pStruct = static_cast<VkPhysicalDeviceTimelineSemaphoreFeatures const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES: + { // VkPhysicalDeviceTimelineSemaphoreProperties + VkPhysicalDeviceTimelineSemaphoreProperties const *pStruct = static_cast<VkPhysicalDeviceTimelineSemaphoreProperties const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO: + { // VkSemaphoreTypeCreateInfo + VkSemaphoreTypeCreateInfo const *pStruct = static_cast<VkSemaphoreTypeCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO: + { // VkTimelineSemaphoreSubmitInfo + VkTimelineSemaphoreSubmitInfo const *pStruct = static_cast<VkTimelineSemaphoreSubmitInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // uint64_t - pWaitSemaphoreValues / waitSemaphoreValueCount + free(const_cast<uint64_t *>(pStruct->pWaitSemaphoreValues)); + + // uint64_t - pSignalSemaphoreValues / signalSemaphoreValueCount + free(const_cast<uint64_t *>(pStruct->pSignalSemaphoreValues)); + } + + break; + + case VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO: + { // VkSemaphoreWaitInfo + VkSemaphoreWaitInfo const *pStruct = static_cast<VkSemaphoreWaitInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkSemaphore - pSemaphores / semaphoreCount + free(const_cast<VkSemaphore *>(pStruct->pSemaphores)); + + // uint64_t - pValues / semaphoreCount + free(const_cast<uint64_t *>(pStruct->pValues)); + } + + break; + + case VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO: + { // VkSemaphoreSignalInfo + VkSemaphoreSignalInfo const *pStruct = static_cast<VkSemaphoreSignalInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT: + { // VkPipelineVertexInputDivisorStateCreateInfoEXT + VkPipelineVertexInputDivisorStateCreateInfoEXT const *pStruct = static_cast<VkPipelineVertexInputDivisorStateCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkVertexInputBindingDivisorDescriptionEXT - pVertexBindingDivisors / vertexBindingDivisorCount + free(const_cast<VkVertexInputBindingDivisorDescriptionEXT *>(pStruct->pVertexBindingDivisors)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT: + { // VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const *pStruct = static_cast<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT: + { // VkPhysicalDevicePCIBusInfoPropertiesEXT + VkPhysicalDevicePCIBusInfoPropertiesEXT const *pStruct = static_cast<VkPhysicalDevicePCIBusInfoPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + +#ifdef VK_USE_PLATFORM_ANDROID_KHR + case VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID: + { // VkImportAndroidHardwareBufferInfoANDROID + VkImportAndroidHardwareBufferInfoANDROID const *pStruct = static_cast<VkImportAndroidHardwareBufferInfoANDROID const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_ANDROID_KHR + case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID: + { // VkAndroidHardwareBufferUsageANDROID + VkAndroidHardwareBufferUsageANDROID const *pStruct = static_cast<VkAndroidHardwareBufferUsageANDROID const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_ANDROID_KHR + case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID: + { // VkAndroidHardwareBufferPropertiesANDROID + VkAndroidHardwareBufferPropertiesANDROID const *pStruct = static_cast<VkAndroidHardwareBufferPropertiesANDROID const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_ANDROID_KHR + case VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID: + { // VkMemoryGetAndroidHardwareBufferInfoANDROID + VkMemoryGetAndroidHardwareBufferInfoANDROID const *pStruct = static_cast<VkMemoryGetAndroidHardwareBufferInfoANDROID const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_ANDROID_KHR + case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID: + { // VkAndroidHardwareBufferFormatPropertiesANDROID + VkAndroidHardwareBufferFormatPropertiesANDROID const *pStruct = static_cast<VkAndroidHardwareBufferFormatPropertiesANDROID const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_ANDROID_KHR + + case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT: + { // VkCommandBufferInheritanceConditionalRenderingInfoEXT + VkCommandBufferInheritanceConditionalRenderingInfoEXT const *pStruct = static_cast<VkCommandBufferInheritanceConditionalRenderingInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + +#ifdef VK_USE_PLATFORM_ANDROID_KHR + case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID: + { // VkExternalFormatANDROID + VkExternalFormatANDROID const *pStruct = static_cast<VkExternalFormatANDROID const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_ANDROID_KHR + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES: + { // VkPhysicalDevice8BitStorageFeatures + VkPhysicalDevice8BitStorageFeatures const *pStruct = static_cast<VkPhysicalDevice8BitStorageFeatures const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT: + { // VkPhysicalDeviceConditionalRenderingFeaturesEXT + VkPhysicalDeviceConditionalRenderingFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceConditionalRenderingFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES: + { // VkPhysicalDeviceVulkanMemoryModelFeatures + VkPhysicalDeviceVulkanMemoryModelFeatures const *pStruct = static_cast<VkPhysicalDeviceVulkanMemoryModelFeatures const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES: + { // VkPhysicalDeviceShaderAtomicInt64Features + VkPhysicalDeviceShaderAtomicInt64Features const *pStruct = static_cast<VkPhysicalDeviceShaderAtomicInt64Features const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT: + { // VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT: + { // VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT + VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT: + { // VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV: + { // VkQueueFamilyCheckpointPropertiesNV + VkQueueFamilyCheckpointPropertiesNV const *pStruct = static_cast<VkQueueFamilyCheckpointPropertiesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV: + { // VkCheckpointDataNV + VkCheckpointDataNV const *pStruct = static_cast<VkCheckpointDataNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // void - pCheckpointMarker + free(const_cast<void *>(pStruct->pCheckpointMarker)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES: + { // VkPhysicalDeviceDepthStencilResolveProperties + VkPhysicalDeviceDepthStencilResolveProperties const *pStruct = static_cast<VkPhysicalDeviceDepthStencilResolveProperties const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE: + { // VkSubpassDescriptionDepthStencilResolve + VkSubpassDescriptionDepthStencilResolve const *pStruct = static_cast<VkSubpassDescriptionDepthStencilResolve const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkAttachmentReference2 - pDepthStencilResolveAttachment + vk_struct_cleanup(pStruct->pDepthStencilResolveAttachment); + free(const_cast<VkAttachmentReference2 *>(pStruct->pDepthStencilResolveAttachment)); + } + + break; + + case VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT: + { // VkImageViewASTCDecodeModeEXT + VkImageViewASTCDecodeModeEXT const *pStruct = static_cast<VkImageViewASTCDecodeModeEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT: + { // VkPhysicalDeviceASTCDecodeFeaturesEXT + VkPhysicalDeviceASTCDecodeFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceASTCDecodeFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: + { // VkPhysicalDeviceTransformFeedbackFeaturesEXT + VkPhysicalDeviceTransformFeedbackFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceTransformFeedbackFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT: + { // VkPhysicalDeviceTransformFeedbackPropertiesEXT + VkPhysicalDeviceTransformFeedbackPropertiesEXT const *pStruct = static_cast<VkPhysicalDeviceTransformFeedbackPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT: + { // VkPipelineRasterizationStateStreamCreateInfoEXT + VkPipelineRasterizationStateStreamCreateInfoEXT const *pStruct = static_cast<VkPipelineRasterizationStateStreamCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV: + { // VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const *pStruct = static_cast<VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV: + { // VkPipelineRepresentativeFragmentTestStateCreateInfoNV + VkPipelineRepresentativeFragmentTestStateCreateInfoNV const *pStruct = static_cast<VkPipelineRepresentativeFragmentTestStateCreateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV: + { // VkPhysicalDeviceExclusiveScissorFeaturesNV + VkPhysicalDeviceExclusiveScissorFeaturesNV const *pStruct = static_cast<VkPhysicalDeviceExclusiveScissorFeaturesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV: + { // VkPipelineViewportExclusiveScissorStateCreateInfoNV + VkPipelineViewportExclusiveScissorStateCreateInfoNV const *pStruct = static_cast<VkPipelineViewportExclusiveScissorStateCreateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkRect2D - pExclusiveScissors / exclusiveScissorCount + free(const_cast<VkRect2D *>(pStruct->pExclusiveScissors)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV: + { // VkPhysicalDeviceCornerSampledImageFeaturesNV + VkPhysicalDeviceCornerSampledImageFeaturesNV const *pStruct = static_cast<VkPhysicalDeviceCornerSampledImageFeaturesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV: + { // VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const *pStruct = static_cast<VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV: + { // VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const *pStruct = static_cast<VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV: + { // VkPhysicalDeviceShaderImageFootprintFeaturesNV + VkPhysicalDeviceShaderImageFootprintFeaturesNV const *pStruct = static_cast<VkPhysicalDeviceShaderImageFootprintFeaturesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV: + { // VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const *pStruct = static_cast<VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV: + { // VkPipelineViewportShadingRateImageStateCreateInfoNV + VkPipelineViewportShadingRateImageStateCreateInfoNV const *pStruct = static_cast<VkPipelineViewportShadingRateImageStateCreateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkShadingRatePaletteNV - pShadingRatePalettes / viewportCount + free(const_cast<VkShadingRatePaletteNV *>(pStruct->pShadingRatePalettes)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV: + { // VkPhysicalDeviceShadingRateImageFeaturesNV + VkPhysicalDeviceShadingRateImageFeaturesNV const *pStruct = static_cast<VkPhysicalDeviceShadingRateImageFeaturesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV: + { // VkPhysicalDeviceShadingRateImagePropertiesNV + VkPhysicalDeviceShadingRateImagePropertiesNV const *pStruct = static_cast<VkPhysicalDeviceShadingRateImagePropertiesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI: + { // VkPhysicalDeviceInvocationMaskFeaturesHUAWEI + VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const *pStruct = static_cast<VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV: + { // VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const *pStruct = static_cast<VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkCoarseSampleOrderCustomNV - pCustomSampleOrders / customSampleOrderCount + free(const_cast<VkCoarseSampleOrderCustomNV *>(pStruct->pCustomSampleOrders)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV: + { // VkPhysicalDeviceMeshShaderFeaturesNV + VkPhysicalDeviceMeshShaderFeaturesNV const *pStruct = static_cast<VkPhysicalDeviceMeshShaderFeaturesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV: + { // VkPhysicalDeviceMeshShaderPropertiesNV + VkPhysicalDeviceMeshShaderPropertiesNV const *pStruct = static_cast<VkPhysicalDeviceMeshShaderPropertiesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV: + { // VkRayTracingShaderGroupCreateInfoNV + VkRayTracingShaderGroupCreateInfoNV const *pStruct = static_cast<VkRayTracingShaderGroupCreateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR: + { // VkRayTracingShaderGroupCreateInfoKHR + VkRayTracingShaderGroupCreateInfoKHR const *pStruct = static_cast<VkRayTracingShaderGroupCreateInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // void - pShaderGroupCaptureReplayHandle + free(const_cast<void *>(pStruct->pShaderGroupCaptureReplayHandle)); + } + + break; + + case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV: + { // VkRayTracingPipelineCreateInfoNV + VkRayTracingPipelineCreateInfoNV const *pStruct = static_cast<VkRayTracingPipelineCreateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkPipelineShaderStageCreateInfo - pStages / stageCount + for (uint32_t i = 0; i < pStruct->stageCount; ++i) + vk_struct_cleanup(&pStruct->pStages[i]); + free(const_cast<VkPipelineShaderStageCreateInfo *>(pStruct->pStages)); + + // VkRayTracingShaderGroupCreateInfoNV - pGroups / groupCount + for (uint32_t i = 0; i < pStruct->groupCount; ++i) + vk_struct_cleanup(&pStruct->pGroups[i]); + free(const_cast<VkRayTracingShaderGroupCreateInfoNV *>(pStruct->pGroups)); + } + + break; + + case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR: + { // VkRayTracingPipelineCreateInfoKHR + VkRayTracingPipelineCreateInfoKHR const *pStruct = static_cast<VkRayTracingPipelineCreateInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkPipelineShaderStageCreateInfo - pStages / stageCount + for (uint32_t i = 0; i < pStruct->stageCount; ++i) + vk_struct_cleanup(&pStruct->pStages[i]); + free(const_cast<VkPipelineShaderStageCreateInfo *>(pStruct->pStages)); + + // VkRayTracingShaderGroupCreateInfoKHR - pGroups / groupCount + for (uint32_t i = 0; i < pStruct->groupCount; ++i) + vk_struct_cleanup(&pStruct->pGroups[i]); + free(const_cast<VkRayTracingShaderGroupCreateInfoKHR *>(pStruct->pGroups)); + + // VkPipelineLibraryCreateInfoKHR - pLibraryInfo + vk_struct_cleanup(pStruct->pLibraryInfo); + free(const_cast<VkPipelineLibraryCreateInfoKHR *>(pStruct->pLibraryInfo)); + + // VkRayTracingPipelineInterfaceCreateInfoKHR - pLibraryInterface + vk_struct_cleanup(pStruct->pLibraryInterface); + free(const_cast<VkRayTracingPipelineInterfaceCreateInfoKHR *>(pStruct->pLibraryInterface)); + + // VkPipelineDynamicStateCreateInfo - pDynamicState + vk_struct_cleanup(pStruct->pDynamicState); + free(const_cast<VkPipelineDynamicStateCreateInfo *>(pStruct->pDynamicState)); + } + + break; + + case VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV: + { // VkGeometryTrianglesNV + VkGeometryTrianglesNV const *pStruct = static_cast<VkGeometryTrianglesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV: + { // VkGeometryAABBNV + VkGeometryAABBNV const *pStruct = static_cast<VkGeometryAABBNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_GEOMETRY_NV: + { // VkGeometryNV + VkGeometryNV const *pStruct = static_cast<VkGeometryNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV: + { // VkAccelerationStructureInfoNV + VkAccelerationStructureInfoNV const *pStruct = static_cast<VkAccelerationStructureInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkGeometryNV - pGeometries / geometryCount + for (uint32_t i = 0; i < pStruct->geometryCount; ++i) + vk_struct_cleanup(&pStruct->pGeometries[i]); + free(const_cast<VkGeometryNV *>(pStruct->pGeometries)); + } + + break; + + case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV: + { // VkAccelerationStructureCreateInfoNV + VkAccelerationStructureCreateInfoNV const *pStruct = static_cast<VkAccelerationStructureCreateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV: + { // VkBindAccelerationStructureMemoryInfoNV + VkBindAccelerationStructureMemoryInfoNV const *pStruct = static_cast<VkBindAccelerationStructureMemoryInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // uint32_t - pDeviceIndices / deviceIndexCount + free(const_cast<uint32_t *>(pStruct->pDeviceIndices)); + } + + break; + + case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR: + { // VkWriteDescriptorSetAccelerationStructureKHR + VkWriteDescriptorSetAccelerationStructureKHR const *pStruct = static_cast<VkWriteDescriptorSetAccelerationStructureKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkAccelerationStructureKHR - pAccelerationStructures / accelerationStructureCount + free(const_cast<VkAccelerationStructureKHR *>(pStruct->pAccelerationStructures)); + } + + break; + + case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV: + { // VkWriteDescriptorSetAccelerationStructureNV + VkWriteDescriptorSetAccelerationStructureNV const *pStruct = static_cast<VkWriteDescriptorSetAccelerationStructureNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkAccelerationStructureNV - pAccelerationStructures / accelerationStructureCount + free(const_cast<VkAccelerationStructureNV *>(pStruct->pAccelerationStructures)); + } + + break; + + case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV: + { // VkAccelerationStructureMemoryRequirementsInfoNV + VkAccelerationStructureMemoryRequirementsInfoNV const *pStruct = static_cast<VkAccelerationStructureMemoryRequirementsInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR: + { // VkPhysicalDeviceAccelerationStructureFeaturesKHR + VkPhysicalDeviceAccelerationStructureFeaturesKHR const *pStruct = static_cast<VkPhysicalDeviceAccelerationStructureFeaturesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR: + { // VkPhysicalDeviceRayTracingPipelineFeaturesKHR + VkPhysicalDeviceRayTracingPipelineFeaturesKHR const *pStruct = static_cast<VkPhysicalDeviceRayTracingPipelineFeaturesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR: + { // VkPhysicalDeviceRayQueryFeaturesKHR + VkPhysicalDeviceRayQueryFeaturesKHR const *pStruct = static_cast<VkPhysicalDeviceRayQueryFeaturesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR: + { // VkPhysicalDeviceAccelerationStructurePropertiesKHR + VkPhysicalDeviceAccelerationStructurePropertiesKHR const *pStruct = static_cast<VkPhysicalDeviceAccelerationStructurePropertiesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR: + { // VkPhysicalDeviceRayTracingPipelinePropertiesKHR + VkPhysicalDeviceRayTracingPipelinePropertiesKHR const *pStruct = static_cast<VkPhysicalDeviceRayTracingPipelinePropertiesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV: + { // VkPhysicalDeviceRayTracingPropertiesNV + VkPhysicalDeviceRayTracingPropertiesNV const *pStruct = static_cast<VkPhysicalDeviceRayTracingPropertiesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT: + { // VkDrmFormatModifierPropertiesListEXT + VkDrmFormatModifierPropertiesListEXT const *pStruct = static_cast<VkDrmFormatModifierPropertiesListEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkDrmFormatModifierPropertiesEXT - pDrmFormatModifierProperties / drmFormatModifierCount + free(const_cast<VkDrmFormatModifierPropertiesEXT *>(pStruct->pDrmFormatModifierProperties)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT: + { // VkPhysicalDeviceImageDrmFormatModifierInfoEXT + VkPhysicalDeviceImageDrmFormatModifierInfoEXT const *pStruct = static_cast<VkPhysicalDeviceImageDrmFormatModifierInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // uint32_t - pQueueFamilyIndices / queueFamilyIndexCount + free(const_cast<uint32_t *>(pStruct->pQueueFamilyIndices)); + } + + break; + + case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT: + { // VkImageDrmFormatModifierListCreateInfoEXT + VkImageDrmFormatModifierListCreateInfoEXT const *pStruct = static_cast<VkImageDrmFormatModifierListCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // uint64_t - pDrmFormatModifiers / drmFormatModifierCount + free(const_cast<uint64_t *>(pStruct->pDrmFormatModifiers)); + } + + break; + + case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT: + { // VkImageDrmFormatModifierExplicitCreateInfoEXT + VkImageDrmFormatModifierExplicitCreateInfoEXT const *pStruct = static_cast<VkImageDrmFormatModifierExplicitCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkSubresourceLayout - pPlaneLayouts / drmFormatModifierPlaneCount + free(const_cast<VkSubresourceLayout *>(pStruct->pPlaneLayouts)); + } + + break; + + case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT: + { // VkImageDrmFormatModifierPropertiesEXT + VkImageDrmFormatModifierPropertiesEXT const *pStruct = static_cast<VkImageDrmFormatModifierPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO: + { // VkImageStencilUsageCreateInfo + VkImageStencilUsageCreateInfo const *pStruct = static_cast<VkImageStencilUsageCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD: + { // VkDeviceMemoryOverallocationCreateInfoAMD + VkDeviceMemoryOverallocationCreateInfoAMD const *pStruct = static_cast<VkDeviceMemoryOverallocationCreateInfoAMD const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: + { // VkPhysicalDeviceFragmentDensityMapFeaturesEXT + VkPhysicalDeviceFragmentDensityMapFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceFragmentDensityMapFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT: + { // VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: + { // VkPhysicalDeviceFragmentDensityMapPropertiesEXT + VkPhysicalDeviceFragmentDensityMapPropertiesEXT const *pStruct = static_cast<VkPhysicalDeviceFragmentDensityMapPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT: + { // VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const *pStruct = static_cast<VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: + { // VkRenderPassFragmentDensityMapCreateInfoEXT + VkRenderPassFragmentDensityMapCreateInfoEXT const *pStruct = static_cast<VkRenderPassFragmentDensityMapCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES: + { // VkPhysicalDeviceScalarBlockLayoutFeatures + VkPhysicalDeviceScalarBlockLayoutFeatures const *pStruct = static_cast<VkPhysicalDeviceScalarBlockLayoutFeatures const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR: + { // VkSurfaceProtectedCapabilitiesKHR + VkSurfaceProtectedCapabilitiesKHR const *pStruct = static_cast<VkSurfaceProtectedCapabilitiesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES: + { // VkPhysicalDeviceUniformBufferStandardLayoutFeatures + VkPhysicalDeviceUniformBufferStandardLayoutFeatures const *pStruct = static_cast<VkPhysicalDeviceUniformBufferStandardLayoutFeatures const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT: + { // VkPhysicalDeviceDepthClipEnableFeaturesEXT + VkPhysicalDeviceDepthClipEnableFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceDepthClipEnableFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT: + { // VkPipelineRasterizationDepthClipStateCreateInfoEXT + VkPipelineRasterizationDepthClipStateCreateInfoEXT const *pStruct = static_cast<VkPipelineRasterizationDepthClipStateCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT: + { // VkPhysicalDeviceMemoryBudgetPropertiesEXT + VkPhysicalDeviceMemoryBudgetPropertiesEXT const *pStruct = static_cast<VkPhysicalDeviceMemoryBudgetPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT: + { // VkPhysicalDeviceMemoryPriorityFeaturesEXT + VkPhysicalDeviceMemoryPriorityFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceMemoryPriorityFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT: + { // VkMemoryPriorityAllocateInfoEXT + VkMemoryPriorityAllocateInfoEXT const *pStruct = static_cast<VkMemoryPriorityAllocateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT: + { // VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT + VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const *pStruct = static_cast<VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES: + { // VkPhysicalDeviceBufferDeviceAddressFeatures + VkPhysicalDeviceBufferDeviceAddressFeatures const *pStruct = static_cast<VkPhysicalDeviceBufferDeviceAddressFeatures const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT: + { // VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO: + { // VkBufferDeviceAddressInfo + VkBufferDeviceAddressInfo const *pStruct = static_cast<VkBufferDeviceAddressInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO: + { // VkBufferOpaqueCaptureAddressCreateInfo + VkBufferOpaqueCaptureAddressCreateInfo const *pStruct = static_cast<VkBufferOpaqueCaptureAddressCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT: + { // VkBufferDeviceAddressCreateInfoEXT + VkBufferDeviceAddressCreateInfoEXT const *pStruct = static_cast<VkBufferDeviceAddressCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT: + { // VkPhysicalDeviceImageViewImageFormatInfoEXT + VkPhysicalDeviceImageViewImageFormatInfoEXT const *pStruct = static_cast<VkPhysicalDeviceImageViewImageFormatInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT: + { // VkFilterCubicImageViewImageFormatPropertiesEXT + VkFilterCubicImageViewImageFormatPropertiesEXT const *pStruct = static_cast<VkFilterCubicImageViewImageFormatPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES: + { // VkPhysicalDeviceImagelessFramebufferFeatures + VkPhysicalDeviceImagelessFramebufferFeatures const *pStruct = static_cast<VkPhysicalDeviceImagelessFramebufferFeatures const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO: + { // VkFramebufferAttachmentsCreateInfo + VkFramebufferAttachmentsCreateInfo const *pStruct = static_cast<VkFramebufferAttachmentsCreateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkFramebufferAttachmentImageInfo - pAttachmentImageInfos / attachmentImageInfoCount + for (uint32_t i = 0; i < pStruct->attachmentImageInfoCount; ++i) + vk_struct_cleanup(&pStruct->pAttachmentImageInfos[i]); + free(const_cast<VkFramebufferAttachmentImageInfo *>(pStruct->pAttachmentImageInfos)); + } + + break; + + case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO: + { // VkFramebufferAttachmentImageInfo + VkFramebufferAttachmentImageInfo const *pStruct = static_cast<VkFramebufferAttachmentImageInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkFormat - pViewFormats / viewFormatCount + free(const_cast<VkFormat *>(pStruct->pViewFormats)); + } + + break; + + case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO: + { // VkRenderPassAttachmentBeginInfo + VkRenderPassAttachmentBeginInfo const *pStruct = static_cast<VkRenderPassAttachmentBeginInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkImageView - pAttachments / attachmentCount + free(const_cast<VkImageView *>(pStruct->pAttachments)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT: + { // VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV: + { // VkPhysicalDeviceCooperativeMatrixFeaturesNV + VkPhysicalDeviceCooperativeMatrixFeaturesNV const *pStruct = static_cast<VkPhysicalDeviceCooperativeMatrixFeaturesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV: + { // VkPhysicalDeviceCooperativeMatrixPropertiesNV + VkPhysicalDeviceCooperativeMatrixPropertiesNV const *pStruct = static_cast<VkPhysicalDeviceCooperativeMatrixPropertiesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV: + { // VkCooperativeMatrixPropertiesNV + VkCooperativeMatrixPropertiesNV const *pStruct = static_cast<VkCooperativeMatrixPropertiesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT: + { // VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX: + { // VkImageViewHandleInfoNVX + VkImageViewHandleInfoNVX const *pStruct = static_cast<VkImageViewHandleInfoNVX const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX: + { // VkImageViewAddressPropertiesNVX + VkImageViewAddressPropertiesNVX const *pStruct = static_cast<VkImageViewAddressPropertiesNVX const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + +#ifdef VK_USE_PLATFORM_GGP + case VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP: + { // VkPresentFrameTokenGGP + VkPresentFrameTokenGGP const *pStruct = static_cast<VkPresentFrameTokenGGP const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_GGP + + case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT: + { // VkPipelineCreationFeedbackCreateInfoEXT + VkPipelineCreationFeedbackCreateInfoEXT const *pStruct = static_cast<VkPipelineCreationFeedbackCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkPipelineCreationFeedbackEXT - pPipelineCreationFeedback + free(const_cast<VkPipelineCreationFeedbackEXT *>(pStruct->pPipelineCreationFeedback)); + + // VkPipelineCreationFeedbackEXT - pPipelineStageCreationFeedbacks / pipelineStageCreationFeedbackCount + free(const_cast<VkPipelineCreationFeedbackEXT *>(pStruct->pPipelineStageCreationFeedbacks)); + } + + break; + +#ifdef VK_USE_PLATFORM_WIN32_KHR + case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT: + { // VkSurfaceFullScreenExclusiveInfoEXT + VkSurfaceFullScreenExclusiveInfoEXT const *pStruct = static_cast<VkSurfaceFullScreenExclusiveInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR + case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT: + { // VkSurfaceFullScreenExclusiveWin32InfoEXT + VkSurfaceFullScreenExclusiveWin32InfoEXT const *pStruct = static_cast<VkSurfaceFullScreenExclusiveWin32InfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR + case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT: + { // VkSurfaceCapabilitiesFullScreenExclusiveEXT + VkSurfaceCapabilitiesFullScreenExclusiveEXT const *pStruct = static_cast<VkSurfaceCapabilitiesFullScreenExclusiveEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_WIN32_KHR + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR: + { // VkPhysicalDevicePerformanceQueryFeaturesKHR + VkPhysicalDevicePerformanceQueryFeaturesKHR const *pStruct = static_cast<VkPhysicalDevicePerformanceQueryFeaturesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR: + { // VkPhysicalDevicePerformanceQueryPropertiesKHR + VkPhysicalDevicePerformanceQueryPropertiesKHR const *pStruct = static_cast<VkPhysicalDevicePerformanceQueryPropertiesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR: + { // VkPerformanceCounterKHR + VkPerformanceCounterKHR const *pStruct = static_cast<VkPerformanceCounterKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR: + { // VkPerformanceCounterDescriptionKHR + VkPerformanceCounterDescriptionKHR const *pStruct = static_cast<VkPerformanceCounterDescriptionKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR: + { // VkQueryPoolPerformanceCreateInfoKHR + VkQueryPoolPerformanceCreateInfoKHR const *pStruct = static_cast<VkQueryPoolPerformanceCreateInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // uint32_t - pCounterIndices / counterIndexCount + free(const_cast<uint32_t *>(pStruct->pCounterIndices)); + } + + break; + + case VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR: + { // VkAcquireProfilingLockInfoKHR + VkAcquireProfilingLockInfoKHR const *pStruct = static_cast<VkAcquireProfilingLockInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR: + { // VkPerformanceQuerySubmitInfoKHR + VkPerformanceQuerySubmitInfoKHR const *pStruct = static_cast<VkPerformanceQuerySubmitInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT: + { // VkHeadlessSurfaceCreateInfoEXT + VkHeadlessSurfaceCreateInfoEXT const *pStruct = static_cast<VkHeadlessSurfaceCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV: + { // VkPhysicalDeviceCoverageReductionModeFeaturesNV + VkPhysicalDeviceCoverageReductionModeFeaturesNV const *pStruct = static_cast<VkPhysicalDeviceCoverageReductionModeFeaturesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV: + { // VkPipelineCoverageReductionStateCreateInfoNV + VkPipelineCoverageReductionStateCreateInfoNV const *pStruct = static_cast<VkPipelineCoverageReductionStateCreateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV: + { // VkFramebufferMixedSamplesCombinationNV + VkFramebufferMixedSamplesCombinationNV const *pStruct = static_cast<VkFramebufferMixedSamplesCombinationNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL: + { // VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const *pStruct = static_cast<VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL: + { // VkInitializePerformanceApiInfoINTEL + VkInitializePerformanceApiInfoINTEL const *pStruct = static_cast<VkInitializePerformanceApiInfoINTEL const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // void - pUserData + free(const_cast<void *>(pStruct->pUserData)); + } + + break; + + case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL: + { // VkQueryPoolPerformanceQueryCreateInfoINTEL + VkQueryPoolPerformanceQueryCreateInfoINTEL const *pStruct = static_cast<VkQueryPoolPerformanceQueryCreateInfoINTEL const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL: + { // VkPerformanceMarkerInfoINTEL + VkPerformanceMarkerInfoINTEL const *pStruct = static_cast<VkPerformanceMarkerInfoINTEL const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL: + { // VkPerformanceStreamMarkerInfoINTEL + VkPerformanceStreamMarkerInfoINTEL const *pStruct = static_cast<VkPerformanceStreamMarkerInfoINTEL const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL: + { // VkPerformanceOverrideInfoINTEL + VkPerformanceOverrideInfoINTEL const *pStruct = static_cast<VkPerformanceOverrideInfoINTEL const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL: + { // VkPerformanceConfigurationAcquireInfoINTEL + VkPerformanceConfigurationAcquireInfoINTEL const *pStruct = static_cast<VkPerformanceConfigurationAcquireInfoINTEL const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR: + { // VkPhysicalDeviceShaderClockFeaturesKHR + VkPhysicalDeviceShaderClockFeaturesKHR const *pStruct = static_cast<VkPhysicalDeviceShaderClockFeaturesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT: + { // VkPhysicalDeviceIndexTypeUint8FeaturesEXT + VkPhysicalDeviceIndexTypeUint8FeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceIndexTypeUint8FeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV: + { // VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const *pStruct = static_cast<VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV: + { // VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const *pStruct = static_cast<VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT: + { // VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES: + { // VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const *pStruct = static_cast<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT: + { // VkAttachmentReferenceStencilLayout + VkAttachmentReferenceStencilLayout const *pStruct = static_cast<VkAttachmentReferenceStencilLayout const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT: + { // VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT + VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const *pStruct = static_cast<VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT: + { // VkAttachmentDescriptionStencilLayout + VkAttachmentDescriptionStencilLayout const *pStruct = static_cast<VkAttachmentDescriptionStencilLayout const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR: + { // VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const *pStruct = static_cast<VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR: + { // VkPipelineInfoKHR + VkPipelineInfoKHR const *pStruct = static_cast<VkPipelineInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR: + { // VkPipelineExecutablePropertiesKHR + VkPipelineExecutablePropertiesKHR const *pStruct = static_cast<VkPipelineExecutablePropertiesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR: + { // VkPipelineExecutableInfoKHR + VkPipelineExecutableInfoKHR const *pStruct = static_cast<VkPipelineExecutableInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR: + { // VkPipelineExecutableStatisticKHR + VkPipelineExecutableStatisticKHR const *pStruct = static_cast<VkPipelineExecutableStatisticKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR: + { // VkPipelineExecutableInternalRepresentationKHR + VkPipelineExecutableInternalRepresentationKHR const *pStruct = static_cast<VkPipelineExecutableInternalRepresentationKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // void - pData / dataSize + free(const_cast<void *>(pStruct->pData)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT: + { // VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: + { // VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT: + { // VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const *pStruct = static_cast<VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT: + { // VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT: + { // VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const *pStruct = static_cast<VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT: + { // VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const *pStruct = static_cast<VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI: + { // VkSubpassShadingPipelineCreateInfoHUAWEI + VkSubpassShadingPipelineCreateInfoHUAWEI const *pStruct = static_cast<VkSubpassShadingPipelineCreateInfoHUAWEI const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI: + { // VkPhysicalDeviceSubpassShadingPropertiesHUAWEI + VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const *pStruct = static_cast<VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO: + { // VkMemoryOpaqueCaptureAddressAllocateInfo + VkMemoryOpaqueCaptureAddressAllocateInfo const *pStruct = static_cast<VkMemoryOpaqueCaptureAddressAllocateInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO: + { // VkDeviceMemoryOpaqueCaptureAddressInfo + VkDeviceMemoryOpaqueCaptureAddressInfo const *pStruct = static_cast<VkDeviceMemoryOpaqueCaptureAddressInfo const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT: + { // VkPhysicalDeviceLineRasterizationFeaturesEXT + VkPhysicalDeviceLineRasterizationFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceLineRasterizationFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT: + { // VkPhysicalDeviceLineRasterizationPropertiesEXT + VkPhysicalDeviceLineRasterizationPropertiesEXT const *pStruct = static_cast<VkPhysicalDeviceLineRasterizationPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT: + { // VkPipelineRasterizationLineStateCreateInfoEXT + VkPipelineRasterizationLineStateCreateInfoEXT const *pStruct = static_cast<VkPipelineRasterizationLineStateCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT: + { // VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT const *pStruct = static_cast<VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: + { // VkPhysicalDeviceVulkan11Features + VkPhysicalDeviceVulkan11Features const *pStruct = static_cast<VkPhysicalDeviceVulkan11Features const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES: + { // VkPhysicalDeviceVulkan11Properties + VkPhysicalDeviceVulkan11Properties const *pStruct = static_cast<VkPhysicalDeviceVulkan11Properties const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES: + { // VkPhysicalDeviceVulkan12Features + VkPhysicalDeviceVulkan12Features const *pStruct = static_cast<VkPhysicalDeviceVulkan12Features const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES: + { // VkPhysicalDeviceVulkan12Properties + VkPhysicalDeviceVulkan12Properties const *pStruct = static_cast<VkPhysicalDeviceVulkan12Properties const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD: + { // VkPipelineCompilerControlCreateInfoAMD + VkPipelineCompilerControlCreateInfoAMD const *pStruct = static_cast<VkPipelineCompilerControlCreateInfoAMD const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD: + { // VkPhysicalDeviceCoherentMemoryFeaturesAMD + VkPhysicalDeviceCoherentMemoryFeaturesAMD const *pStruct = static_cast<VkPhysicalDeviceCoherentMemoryFeaturesAMD const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT: + { // VkPhysicalDeviceToolPropertiesEXT + VkPhysicalDeviceToolPropertiesEXT const *pStruct = static_cast<VkPhysicalDeviceToolPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT: + { // VkSamplerCustomBorderColorCreateInfoEXT + VkSamplerCustomBorderColorCreateInfoEXT const *pStruct = static_cast<VkSamplerCustomBorderColorCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT: + { // VkPhysicalDeviceCustomBorderColorPropertiesEXT + VkPhysicalDeviceCustomBorderColorPropertiesEXT const *pStruct = static_cast<VkPhysicalDeviceCustomBorderColorPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT: + { // VkPhysicalDeviceCustomBorderColorFeaturesEXT + VkPhysicalDeviceCustomBorderColorFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceCustomBorderColorFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT: + { // VkSamplerBorderColorComponentMappingCreateInfoEXT + VkSamplerBorderColorComponentMappingCreateInfoEXT const *pStruct = static_cast<VkSamplerBorderColorComponentMappingCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT: + { // VkPhysicalDeviceBorderColorSwizzleFeaturesEXT + VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR: + { // VkAccelerationStructureGeometryTrianglesDataKHR + VkAccelerationStructureGeometryTrianglesDataKHR const *pStruct = static_cast<VkAccelerationStructureGeometryTrianglesDataKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR: + { // VkAccelerationStructureGeometryAabbsDataKHR + VkAccelerationStructureGeometryAabbsDataKHR const *pStruct = static_cast<VkAccelerationStructureGeometryAabbsDataKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR: + { // VkAccelerationStructureGeometryInstancesDataKHR + VkAccelerationStructureGeometryInstancesDataKHR const *pStruct = static_cast<VkAccelerationStructureGeometryInstancesDataKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR: + { // VkAccelerationStructureGeometryKHR + VkAccelerationStructureGeometryKHR const *pStruct = static_cast<VkAccelerationStructureGeometryKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR: + { // VkAccelerationStructureBuildGeometryInfoKHR + VkAccelerationStructureBuildGeometryInfoKHR const *pStruct = static_cast<VkAccelerationStructureBuildGeometryInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkAccelerationStructureGeometryKHR - pGeometries / geometryCount + for (uint32_t i = 0; i < pStruct->geometryCount; ++i) + vk_struct_cleanup(&pStruct->pGeometries[i]); + free(const_cast<VkAccelerationStructureGeometryKHR *>(pStruct->pGeometries)); + } + + break; + + case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR: + { // VkAccelerationStructureCreateInfoKHR + VkAccelerationStructureCreateInfoKHR const *pStruct = static_cast<VkAccelerationStructureCreateInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR: + { // VkAccelerationStructureDeviceAddressInfoKHR + VkAccelerationStructureDeviceAddressInfoKHR const *pStruct = static_cast<VkAccelerationStructureDeviceAddressInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR: + { // VkAccelerationStructureVersionInfoKHR + VkAccelerationStructureVersionInfoKHR const *pStruct = static_cast<VkAccelerationStructureVersionInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // uint8_t - pVersionData / VK\_UUID\_SIZE + free(const_cast<uint8_t *>(pStruct->pVersionData)); + } + + break; + + case VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR: + { // VkCopyAccelerationStructureInfoKHR + VkCopyAccelerationStructureInfoKHR const *pStruct = static_cast<VkCopyAccelerationStructureInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR: + { // VkCopyAccelerationStructureToMemoryInfoKHR + VkCopyAccelerationStructureToMemoryInfoKHR const *pStruct = static_cast<VkCopyAccelerationStructureToMemoryInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR: + { // VkCopyMemoryToAccelerationStructureInfoKHR + VkCopyMemoryToAccelerationStructureInfoKHR const *pStruct = static_cast<VkCopyMemoryToAccelerationStructureInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR: + { // VkRayTracingPipelineInterfaceCreateInfoKHR + VkRayTracingPipelineInterfaceCreateInfoKHR const *pStruct = static_cast<VkRayTracingPipelineInterfaceCreateInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR: + { // VkPipelineLibraryCreateInfoKHR + VkPipelineLibraryCreateInfoKHR const *pStruct = static_cast<VkPipelineLibraryCreateInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkPipeline - pLibraries / libraryCount + free(const_cast<VkPipeline *>(pStruct->pLibraries)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT: + { // VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT: + { // VkPhysicalDeviceExtendedDynamicState2FeaturesEXT + VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM: + { // VkRenderPassTransformBeginInfoQCOM + VkRenderPassTransformBeginInfoQCOM const *pStruct = static_cast<VkRenderPassTransformBeginInfoQCOM const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM: + { // VkCopyCommandTransformInfoQCOM + VkCopyCommandTransformInfoQCOM const *pStruct = static_cast<VkCopyCommandTransformInfoQCOM const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM: + { // VkCommandBufferInheritanceRenderPassTransformInfoQCOM + VkCommandBufferInheritanceRenderPassTransformInfoQCOM const *pStruct = static_cast<VkCommandBufferInheritanceRenderPassTransformInfoQCOM const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV: + { // VkPhysicalDeviceDiagnosticsConfigFeaturesNV + VkPhysicalDeviceDiagnosticsConfigFeaturesNV const *pStruct = static_cast<VkPhysicalDeviceDiagnosticsConfigFeaturesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV: + { // VkDeviceDiagnosticsConfigCreateInfoNV + VkDeviceDiagnosticsConfigCreateInfoNV const *pStruct = static_cast<VkDeviceDiagnosticsConfigCreateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR: + { // VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR + VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const *pStruct = static_cast<VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR: + { // VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR + VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const *pStruct = static_cast<VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT: + { // VkPhysicalDeviceRobustness2FeaturesEXT + VkPhysicalDeviceRobustness2FeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceRobustness2FeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT: + { // VkPhysicalDeviceRobustness2PropertiesEXT + VkPhysicalDeviceRobustness2PropertiesEXT const *pStruct = static_cast<VkPhysicalDeviceRobustness2PropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT: + { // VkPhysicalDeviceImageRobustnessFeaturesEXT + VkPhysicalDeviceImageRobustnessFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceImageRobustnessFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR: + { // VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR + VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const *pStruct = static_cast<VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR: + { // VkPhysicalDevicePortabilitySubsetFeaturesKHR + VkPhysicalDevicePortabilitySubsetFeaturesKHR const *pStruct = static_cast<VkPhysicalDevicePortabilitySubsetFeaturesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR: + { // VkPhysicalDevicePortabilitySubsetPropertiesKHR + VkPhysicalDevicePortabilitySubsetPropertiesKHR const *pStruct = static_cast<VkPhysicalDevicePortabilitySubsetPropertiesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT: + { // VkPhysicalDevice4444FormatsFeaturesEXT + VkPhysicalDevice4444FormatsFeaturesEXT const *pStruct = static_cast<VkPhysicalDevice4444FormatsFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI: + { // VkPhysicalDeviceSubpassShadingFeaturesHUAWEI + VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const *pStruct = static_cast<VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR: + { // VkBufferCopy2KHR + VkBufferCopy2KHR const *pStruct = static_cast<VkBufferCopy2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR: + { // VkImageCopy2KHR + VkImageCopy2KHR const *pStruct = static_cast<VkImageCopy2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR: + { // VkImageBlit2KHR + VkImageBlit2KHR const *pStruct = static_cast<VkImageBlit2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR: + { // VkBufferImageCopy2KHR + VkBufferImageCopy2KHR const *pStruct = static_cast<VkBufferImageCopy2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR: + { // VkImageResolve2KHR + VkImageResolve2KHR const *pStruct = static_cast<VkImageResolve2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR: + { // VkCopyBufferInfo2KHR + VkCopyBufferInfo2KHR const *pStruct = static_cast<VkCopyBufferInfo2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkBufferCopy2KHR - pRegions / regionCount + for (uint32_t i = 0; i < pStruct->regionCount; ++i) + vk_struct_cleanup(&pStruct->pRegions[i]); + free(const_cast<VkBufferCopy2KHR *>(pStruct->pRegions)); + } + + break; + + case VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR: + { // VkCopyImageInfo2KHR + VkCopyImageInfo2KHR const *pStruct = static_cast<VkCopyImageInfo2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkImageCopy2KHR - pRegions / regionCount + for (uint32_t i = 0; i < pStruct->regionCount; ++i) + vk_struct_cleanup(&pStruct->pRegions[i]); + free(const_cast<VkImageCopy2KHR *>(pStruct->pRegions)); + } + + break; + + case VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR: + { // VkBlitImageInfo2KHR + VkBlitImageInfo2KHR const *pStruct = static_cast<VkBlitImageInfo2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkImageBlit2KHR - pRegions / regionCount + for (uint32_t i = 0; i < pStruct->regionCount; ++i) + vk_struct_cleanup(&pStruct->pRegions[i]); + free(const_cast<VkImageBlit2KHR *>(pStruct->pRegions)); + } + + break; + + case VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR: + { // VkCopyBufferToImageInfo2KHR + VkCopyBufferToImageInfo2KHR const *pStruct = static_cast<VkCopyBufferToImageInfo2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkBufferImageCopy2KHR - pRegions / regionCount + for (uint32_t i = 0; i < pStruct->regionCount; ++i) + vk_struct_cleanup(&pStruct->pRegions[i]); + free(const_cast<VkBufferImageCopy2KHR *>(pStruct->pRegions)); + } + + break; + + case VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR: + { // VkCopyImageToBufferInfo2KHR + VkCopyImageToBufferInfo2KHR const *pStruct = static_cast<VkCopyImageToBufferInfo2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkBufferImageCopy2KHR - pRegions / regionCount + for (uint32_t i = 0; i < pStruct->regionCount; ++i) + vk_struct_cleanup(&pStruct->pRegions[i]); + free(const_cast<VkBufferImageCopy2KHR *>(pStruct->pRegions)); + } + + break; + + case VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR: + { // VkResolveImageInfo2KHR + VkResolveImageInfo2KHR const *pStruct = static_cast<VkResolveImageInfo2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkImageResolve2KHR - pRegions / regionCount + for (uint32_t i = 0; i < pStruct->regionCount; ++i) + vk_struct_cleanup(&pStruct->pRegions[i]); + free(const_cast<VkImageResolve2KHR *>(pStruct->pRegions)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT: + { // VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT + VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR: + { // VkFragmentShadingRateAttachmentInfoKHR + VkFragmentShadingRateAttachmentInfoKHR const *pStruct = static_cast<VkFragmentShadingRateAttachmentInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkAttachmentReference2 - pFragmentShadingRateAttachment + vk_struct_cleanup(pStruct->pFragmentShadingRateAttachment); + free(const_cast<VkAttachmentReference2 *>(pStruct->pFragmentShadingRateAttachment)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR: + { // VkPipelineFragmentShadingRateStateCreateInfoKHR + VkPipelineFragmentShadingRateStateCreateInfoKHR const *pStruct = static_cast<VkPipelineFragmentShadingRateStateCreateInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR: + { // VkPhysicalDeviceFragmentShadingRateFeaturesKHR + VkPhysicalDeviceFragmentShadingRateFeaturesKHR const *pStruct = static_cast<VkPhysicalDeviceFragmentShadingRateFeaturesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR: + { // VkPhysicalDeviceFragmentShadingRatePropertiesKHR + VkPhysicalDeviceFragmentShadingRatePropertiesKHR const *pStruct = static_cast<VkPhysicalDeviceFragmentShadingRatePropertiesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR: + { // VkPhysicalDeviceFragmentShadingRateKHR + VkPhysicalDeviceFragmentShadingRateKHR const *pStruct = static_cast<VkPhysicalDeviceFragmentShadingRateKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR: + { // VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR + VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR const *pStruct = static_cast<VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV: + { // VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV + VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const *pStruct = static_cast<VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV: + { // VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV + VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const *pStruct = static_cast<VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV: + { // VkPipelineFragmentShadingRateEnumStateCreateInfoNV + VkPipelineFragmentShadingRateEnumStateCreateInfoNV const *pStruct = static_cast<VkPipelineFragmentShadingRateEnumStateCreateInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR: + { // VkAccelerationStructureBuildSizesInfoKHR + VkAccelerationStructureBuildSizesInfoKHR const *pStruct = static_cast<VkAccelerationStructureBuildSizesInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE: + { // VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE + VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const *pStruct = static_cast<VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE: + { // VkMutableDescriptorTypeCreateInfoVALVE + VkMutableDescriptorTypeCreateInfoVALVE const *pStruct = static_cast<VkMutableDescriptorTypeCreateInfoVALVE const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkMutableDescriptorTypeListVALVE - pMutableDescriptorTypeLists / mutableDescriptorTypeListCount + free(const_cast<VkMutableDescriptorTypeListVALVE *>(pStruct->pMutableDescriptorTypeLists)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT: + { // VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT + VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV: + { // VkPhysicalDeviceExternalMemoryRDMAFeaturesNV + VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const *pStruct = static_cast<VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT: + { // VkVertexInputBindingDescription2EXT + VkVertexInputBindingDescription2EXT const *pStruct = static_cast<VkVertexInputBindingDescription2EXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT: + { // VkVertexInputAttributeDescription2EXT + VkVertexInputAttributeDescription2EXT const *pStruct = static_cast<VkVertexInputAttributeDescription2EXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT: + { // VkPhysicalDeviceColorWriteEnableFeaturesEXT + VkPhysicalDeviceColorWriteEnableFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceColorWriteEnableFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT: + { // VkPipelineColorWriteCreateInfoEXT + VkPipelineColorWriteCreateInfoEXT const *pStruct = static_cast<VkPipelineColorWriteCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkBool32 - pColorWriteEnables / attachmentCount + free(const_cast<VkBool32 *>(pStruct->pColorWriteEnables)); + } + + break; + + case VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR: + { // VkMemoryBarrier2KHR + VkMemoryBarrier2KHR const *pStruct = static_cast<VkMemoryBarrier2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR: + { // VkImageMemoryBarrier2KHR + VkImageMemoryBarrier2KHR const *pStruct = static_cast<VkImageMemoryBarrier2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR: + { // VkBufferMemoryBarrier2KHR + VkBufferMemoryBarrier2KHR const *pStruct = static_cast<VkBufferMemoryBarrier2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR: + { // VkDependencyInfoKHR + VkDependencyInfoKHR const *pStruct = static_cast<VkDependencyInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkMemoryBarrier2KHR - pMemoryBarriers / memoryBarrierCount + for (uint32_t i = 0; i < pStruct->memoryBarrierCount; ++i) + vk_struct_cleanup(&pStruct->pMemoryBarriers[i]); + free(const_cast<VkMemoryBarrier2KHR *>(pStruct->pMemoryBarriers)); + + // VkBufferMemoryBarrier2KHR - pBufferMemoryBarriers / bufferMemoryBarrierCount + for (uint32_t i = 0; i < pStruct->bufferMemoryBarrierCount; ++i) + vk_struct_cleanup(&pStruct->pBufferMemoryBarriers[i]); + free(const_cast<VkBufferMemoryBarrier2KHR *>(pStruct->pBufferMemoryBarriers)); + + // VkImageMemoryBarrier2KHR - pImageMemoryBarriers / imageMemoryBarrierCount + for (uint32_t i = 0; i < pStruct->imageMemoryBarrierCount; ++i) + vk_struct_cleanup(&pStruct->pImageMemoryBarriers[i]); + free(const_cast<VkImageMemoryBarrier2KHR *>(pStruct->pImageMemoryBarriers)); + } + + break; + + case VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR: + { // VkSemaphoreSubmitInfoKHR + VkSemaphoreSubmitInfoKHR const *pStruct = static_cast<VkSemaphoreSubmitInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR: + { // VkCommandBufferSubmitInfoKHR + VkCommandBufferSubmitInfoKHR const *pStruct = static_cast<VkCommandBufferSubmitInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR: + { // VkSubmitInfo2KHR + VkSubmitInfo2KHR const *pStruct = static_cast<VkSubmitInfo2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkSemaphoreSubmitInfoKHR - pWaitSemaphoreInfos / waitSemaphoreInfoCount + for (uint32_t i = 0; i < pStruct->waitSemaphoreInfoCount; ++i) + vk_struct_cleanup(&pStruct->pWaitSemaphoreInfos[i]); + free(const_cast<VkSemaphoreSubmitInfoKHR *>(pStruct->pWaitSemaphoreInfos)); + + // VkCommandBufferSubmitInfoKHR - pCommandBufferInfos / commandBufferInfoCount + for (uint32_t i = 0; i < pStruct->commandBufferInfoCount; ++i) + vk_struct_cleanup(&pStruct->pCommandBufferInfos[i]); + free(const_cast<VkCommandBufferSubmitInfoKHR *>(pStruct->pCommandBufferInfos)); + + // VkSemaphoreSubmitInfoKHR - pSignalSemaphoreInfos / signalSemaphoreInfoCount + for (uint32_t i = 0; i < pStruct->signalSemaphoreInfoCount; ++i) + vk_struct_cleanup(&pStruct->pSignalSemaphoreInfos[i]); + free(const_cast<VkSemaphoreSubmitInfoKHR *>(pStruct->pSignalSemaphoreInfos)); + } + + break; + + case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV: + { // VkQueueFamilyCheckpointProperties2NV + VkQueueFamilyCheckpointProperties2NV const *pStruct = static_cast<VkQueueFamilyCheckpointProperties2NV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV: + { // VkCheckpointData2NV + VkCheckpointData2NV const *pStruct = static_cast<VkCheckpointData2NV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // void - pCheckpointMarker + free(const_cast<void *>(pStruct->pCheckpointMarker)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR: + { // VkPhysicalDeviceSynchronization2FeaturesKHR + VkPhysicalDeviceSynchronization2FeaturesKHR const *pStruct = static_cast<VkPhysicalDeviceSynchronization2FeaturesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR: + { // VkVideoQueueFamilyProperties2KHR + VkVideoQueueFamilyProperties2KHR const *pStruct = static_cast<VkVideoQueueFamilyProperties2KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR: + { // VkVideoProfilesKHR + VkVideoProfilesKHR const *pStruct = static_cast<VkVideoProfilesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkVideoProfileKHR - pProfiles + vk_struct_cleanup(pStruct->pProfiles); + free(const_cast<VkVideoProfileKHR *>(pStruct->pProfiles)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR: + { // VkPhysicalDeviceVideoFormatInfoKHR + VkPhysicalDeviceVideoFormatInfoKHR const *pStruct = static_cast<VkPhysicalDeviceVideoFormatInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkVideoProfilesKHR - pVideoProfiles + vk_struct_cleanup(pStruct->pVideoProfiles); + free(const_cast<VkVideoProfilesKHR *>(pStruct->pVideoProfiles)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR: + { // VkVideoFormatPropertiesKHR + VkVideoFormatPropertiesKHR const *pStruct = static_cast<VkVideoFormatPropertiesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR: + { // VkVideoProfileKHR + VkVideoProfileKHR const *pStruct = static_cast<VkVideoProfileKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR: + { // VkVideoCapabilitiesKHR + VkVideoCapabilitiesKHR const *pStruct = static_cast<VkVideoCapabilitiesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR: + { // VkVideoGetMemoryPropertiesKHR + VkVideoGetMemoryPropertiesKHR const *pStruct = static_cast<VkVideoGetMemoryPropertiesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkMemoryRequirements2 - pMemoryRequirements + vk_struct_cleanup(pStruct->pMemoryRequirements); + free(const_cast<VkMemoryRequirements2 *>(pStruct->pMemoryRequirements)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR: + { // VkVideoBindMemoryKHR + VkVideoBindMemoryKHR const *pStruct = static_cast<VkVideoBindMemoryKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR: + { // VkVideoPictureResourceKHR + VkVideoPictureResourceKHR const *pStruct = static_cast<VkVideoPictureResourceKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR: + { // VkVideoReferenceSlotKHR + VkVideoReferenceSlotKHR const *pStruct = static_cast<VkVideoReferenceSlotKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkVideoPictureResourceKHR - pPictureResource + vk_struct_cleanup(pStruct->pPictureResource); + free(const_cast<VkVideoPictureResourceKHR *>(pStruct->pPictureResource)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR: + { // VkVideoDecodeInfoKHR + VkVideoDecodeInfoKHR const *pStruct = static_cast<VkVideoDecodeInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkVideoReferenceSlotKHR - pSetupReferenceSlot + vk_struct_cleanup(pStruct->pSetupReferenceSlot); + free(const_cast<VkVideoReferenceSlotKHR *>(pStruct->pSetupReferenceSlot)); + + // VkVideoReferenceSlotKHR - pReferenceSlots / referenceSlotCount + for (uint32_t i = 0; i < pStruct->referenceSlotCount; ++i) + vk_struct_cleanup(&pStruct->pReferenceSlots[i]); + free(const_cast<VkVideoReferenceSlotKHR *>(pStruct->pReferenceSlots)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT: + { // VkVideoDecodeH264ProfileEXT + VkVideoDecodeH264ProfileEXT const *pStruct = static_cast<VkVideoDecodeH264ProfileEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT: + { // VkVideoDecodeH264CapabilitiesEXT + VkVideoDecodeH264CapabilitiesEXT const *pStruct = static_cast<VkVideoDecodeH264CapabilitiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT: + { // VkVideoDecodeH264SessionCreateInfoEXT + VkVideoDecodeH264SessionCreateInfoEXT const *pStruct = static_cast<VkVideoDecodeH264SessionCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkExtensionProperties - pStdExtensionVersion + free(const_cast<VkExtensionProperties *>(pStruct->pStdExtensionVersion)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT: + { // VkVideoDecodeH264SessionParametersAddInfoEXT + VkVideoDecodeH264SessionParametersAddInfoEXT const *pStruct = static_cast<VkVideoDecodeH264SessionParametersAddInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // StdVideoH264SequenceParameterSet - pSpsStd / spsStdCount + free(const_cast<StdVideoH264SequenceParameterSet *>(pStruct->pSpsStd)); + + // StdVideoH264PictureParameterSet - pPpsStd / ppsStdCount + free(const_cast<StdVideoH264PictureParameterSet *>(pStruct->pPpsStd)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT: + { // VkVideoDecodeH264SessionParametersCreateInfoEXT + VkVideoDecodeH264SessionParametersCreateInfoEXT const *pStruct = static_cast<VkVideoDecodeH264SessionParametersCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkVideoDecodeH264SessionParametersAddInfoEXT - pParametersAddInfo + vk_struct_cleanup(pStruct->pParametersAddInfo); + free(const_cast<VkVideoDecodeH264SessionParametersAddInfoEXT *>(pStruct->pParametersAddInfo)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT: + { // VkVideoDecodeH264PictureInfoEXT + VkVideoDecodeH264PictureInfoEXT const *pStruct = static_cast<VkVideoDecodeH264PictureInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // StdVideoDecodeH264PictureInfo - pStdPictureInfo + free(const_cast<StdVideoDecodeH264PictureInfo *>(pStruct->pStdPictureInfo)); + + // uint32_t - pSlicesDataOffsets / slicesCount + free(const_cast<uint32_t *>(pStruct->pSlicesDataOffsets)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT: + { // VkVideoDecodeH264DpbSlotInfoEXT + VkVideoDecodeH264DpbSlotInfoEXT const *pStruct = static_cast<VkVideoDecodeH264DpbSlotInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // StdVideoDecodeH264ReferenceInfo - pStdReferenceInfo + free(const_cast<StdVideoDecodeH264ReferenceInfo *>(pStruct->pStdReferenceInfo)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT: + { // VkVideoDecodeH264MvcEXT + VkVideoDecodeH264MvcEXT const *pStruct = static_cast<VkVideoDecodeH264MvcEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // StdVideoDecodeH264Mvc - pStdMvc + free(const_cast<StdVideoDecodeH264Mvc *>(pStruct->pStdMvc)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT: + { // VkVideoDecodeH265ProfileEXT + VkVideoDecodeH265ProfileEXT const *pStruct = static_cast<VkVideoDecodeH265ProfileEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT: + { // VkVideoDecodeH265CapabilitiesEXT + VkVideoDecodeH265CapabilitiesEXT const *pStruct = static_cast<VkVideoDecodeH265CapabilitiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT: + { // VkVideoDecodeH265SessionCreateInfoEXT + VkVideoDecodeH265SessionCreateInfoEXT const *pStruct = static_cast<VkVideoDecodeH265SessionCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkExtensionProperties - pStdExtensionVersion + free(const_cast<VkExtensionProperties *>(pStruct->pStdExtensionVersion)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT: + { // VkVideoDecodeH265SessionParametersAddInfoEXT + VkVideoDecodeH265SessionParametersAddInfoEXT const *pStruct = static_cast<VkVideoDecodeH265SessionParametersAddInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // StdVideoH265SequenceParameterSet - pSpsStd / spsStdCount + free(const_cast<StdVideoH265SequenceParameterSet *>(pStruct->pSpsStd)); + + // StdVideoH265PictureParameterSet - pPpsStd / ppsStdCount + free(const_cast<StdVideoH265PictureParameterSet *>(pStruct->pPpsStd)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT: + { // VkVideoDecodeH265SessionParametersCreateInfoEXT + VkVideoDecodeH265SessionParametersCreateInfoEXT const *pStruct = static_cast<VkVideoDecodeH265SessionParametersCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkVideoDecodeH265SessionParametersAddInfoEXT - pParametersAddInfo + vk_struct_cleanup(pStruct->pParametersAddInfo); + free(const_cast<VkVideoDecodeH265SessionParametersAddInfoEXT *>(pStruct->pParametersAddInfo)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT: + { // VkVideoDecodeH265PictureInfoEXT + VkVideoDecodeH265PictureInfoEXT const *pStruct = static_cast<VkVideoDecodeH265PictureInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // StdVideoDecodeH265PictureInfo - pStdPictureInfo + free(const_cast<StdVideoDecodeH265PictureInfo *>(pStruct->pStdPictureInfo)); + + // uint32_t - pSlicesDataOffsets / slicesCount + free(const_cast<uint32_t *>(pStruct->pSlicesDataOffsets)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT: + { // VkVideoDecodeH265DpbSlotInfoEXT + VkVideoDecodeH265DpbSlotInfoEXT const *pStruct = static_cast<VkVideoDecodeH265DpbSlotInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // StdVideoDecodeH265ReferenceInfo - pStdReferenceInfo + free(const_cast<StdVideoDecodeH265ReferenceInfo *>(pStruct->pStdReferenceInfo)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR: + { // VkVideoSessionCreateInfoKHR + VkVideoSessionCreateInfoKHR const *pStruct = static_cast<VkVideoSessionCreateInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkVideoProfileKHR - pVideoProfile + vk_struct_cleanup(pStruct->pVideoProfile); + free(const_cast<VkVideoProfileKHR *>(pStruct->pVideoProfile)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR: + { // VkVideoSessionParametersCreateInfoKHR + VkVideoSessionParametersCreateInfoKHR const *pStruct = static_cast<VkVideoSessionParametersCreateInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR: + { // VkVideoSessionParametersUpdateInfoKHR + VkVideoSessionParametersUpdateInfoKHR const *pStruct = static_cast<VkVideoSessionParametersUpdateInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR: + { // VkVideoBeginCodingInfoKHR + VkVideoBeginCodingInfoKHR const *pStruct = static_cast<VkVideoBeginCodingInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkVideoReferenceSlotKHR - pReferenceSlots / referenceSlotCount + for (uint32_t i = 0; i < pStruct->referenceSlotCount; ++i) + vk_struct_cleanup(&pStruct->pReferenceSlots[i]); + free(const_cast<VkVideoReferenceSlotKHR *>(pStruct->pReferenceSlots)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR: + { // VkVideoEndCodingInfoKHR + VkVideoEndCodingInfoKHR const *pStruct = static_cast<VkVideoEndCodingInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR: + { // VkVideoCodingControlInfoKHR + VkVideoCodingControlInfoKHR const *pStruct = static_cast<VkVideoCodingControlInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR: + { // VkVideoEncodeInfoKHR + VkVideoEncodeInfoKHR const *pStruct = static_cast<VkVideoEncodeInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkVideoReferenceSlotKHR - pSetupReferenceSlot + vk_struct_cleanup(pStruct->pSetupReferenceSlot); + free(const_cast<VkVideoReferenceSlotKHR *>(pStruct->pSetupReferenceSlot)); + + // VkVideoReferenceSlotKHR - pReferenceSlots / referenceSlotCount + for (uint32_t i = 0; i < pStruct->referenceSlotCount; ++i) + vk_struct_cleanup(&pStruct->pReferenceSlots[i]); + free(const_cast<VkVideoReferenceSlotKHR *>(pStruct->pReferenceSlots)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR: + { // VkVideoEncodeRateControlInfoKHR + VkVideoEncodeRateControlInfoKHR const *pStruct = static_cast<VkVideoEncodeRateControlInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT: + { // VkVideoEncodeH264CapabilitiesEXT + VkVideoEncodeH264CapabilitiesEXT const *pStruct = static_cast<VkVideoEncodeH264CapabilitiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT: + { // VkVideoEncodeH264SessionCreateInfoEXT + VkVideoEncodeH264SessionCreateInfoEXT const *pStruct = static_cast<VkVideoEncodeH264SessionCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkExtensionProperties - pStdExtensionVersion + free(const_cast<VkExtensionProperties *>(pStruct->pStdExtensionVersion)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT: + { // VkVideoEncodeH264SessionParametersAddInfoEXT + VkVideoEncodeH264SessionParametersAddInfoEXT const *pStruct = static_cast<VkVideoEncodeH264SessionParametersAddInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // StdVideoH264SequenceParameterSet - pSpsStd / spsStdCount + free(const_cast<StdVideoH264SequenceParameterSet *>(pStruct->pSpsStd)); + + // StdVideoH264PictureParameterSet - pPpsStd / ppsStdCount + free(const_cast<StdVideoH264PictureParameterSet *>(pStruct->pPpsStd)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT: + { // VkVideoEncodeH264SessionParametersCreateInfoEXT + VkVideoEncodeH264SessionParametersCreateInfoEXT const *pStruct = static_cast<VkVideoEncodeH264SessionParametersCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkVideoEncodeH264SessionParametersAddInfoEXT - pParametersAddInfo + vk_struct_cleanup(pStruct->pParametersAddInfo); + free(const_cast<VkVideoEncodeH264SessionParametersAddInfoEXT *>(pStruct->pParametersAddInfo)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT: + { // VkVideoEncodeH264DpbSlotInfoEXT + VkVideoEncodeH264DpbSlotInfoEXT const *pStruct = static_cast<VkVideoEncodeH264DpbSlotInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // StdVideoEncodeH264PictureInfo - pStdPictureInfo + free(const_cast<StdVideoEncodeH264PictureInfo *>(pStruct->pStdPictureInfo)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT: + { // VkVideoEncodeH264VclFrameInfoEXT + VkVideoEncodeH264VclFrameInfoEXT const *pStruct = static_cast<VkVideoEncodeH264VclFrameInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkVideoEncodeH264DpbSlotInfoEXT - pRefDefaultFinalList0Entries / refDefaultFinalList0EntryCount + for (uint32_t i = 0; i < pStruct->refDefaultFinalList0EntryCount; ++i) + vk_struct_cleanup(&pStruct->pRefDefaultFinalList0Entries[i]); + free(const_cast<VkVideoEncodeH264DpbSlotInfoEXT *>(pStruct->pRefDefaultFinalList0Entries)); + + // VkVideoEncodeH264DpbSlotInfoEXT - pRefDefaultFinalList1Entries / refDefaultFinalList1EntryCount + for (uint32_t i = 0; i < pStruct->refDefaultFinalList1EntryCount; ++i) + vk_struct_cleanup(&pStruct->pRefDefaultFinalList1Entries[i]); + free(const_cast<VkVideoEncodeH264DpbSlotInfoEXT *>(pStruct->pRefDefaultFinalList1Entries)); + + // VkVideoEncodeH264NaluSliceEXT - pNaluSliceEntries / naluSliceEntryCount + for (uint32_t i = 0; i < pStruct->naluSliceEntryCount; ++i) + vk_struct_cleanup(&pStruct->pNaluSliceEntries[i]); + free(const_cast<VkVideoEncodeH264NaluSliceEXT *>(pStruct->pNaluSliceEntries)); + + // VkVideoEncodeH264DpbSlotInfoEXT - pCurrentPictureInfo + vk_struct_cleanup(pStruct->pCurrentPictureInfo); + free(const_cast<VkVideoEncodeH264DpbSlotInfoEXT *>(pStruct->pCurrentPictureInfo)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT: + { // VkVideoEncodeH264EmitPictureParametersEXT + VkVideoEncodeH264EmitPictureParametersEXT const *pStruct = static_cast<VkVideoEncodeH264EmitPictureParametersEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT: + { // VkVideoEncodeH264ProfileEXT + VkVideoEncodeH264ProfileEXT const *pStruct = static_cast<VkVideoEncodeH264ProfileEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT: + { // VkVideoEncodeH264NaluSliceEXT + VkVideoEncodeH264NaluSliceEXT const *pStruct = static_cast<VkVideoEncodeH264NaluSliceEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // StdVideoEncodeH264SliceHeader - pSliceHeaderStd + free(const_cast<StdVideoEncodeH264SliceHeader *>(pStruct->pSliceHeaderStd)); + + // VkVideoEncodeH264DpbSlotInfoEXT - pRefFinalList0Entries / refFinalList0EntryCount + for (uint32_t i = 0; i < pStruct->refFinalList0EntryCount; ++i) + vk_struct_cleanup(&pStruct->pRefFinalList0Entries[i]); + free(const_cast<VkVideoEncodeH264DpbSlotInfoEXT *>(pStruct->pRefFinalList0Entries)); + + // VkVideoEncodeH264DpbSlotInfoEXT - pRefFinalList1Entries / refFinalList1EntryCount + for (uint32_t i = 0; i < pStruct->refFinalList1EntryCount; ++i) + vk_struct_cleanup(&pStruct->pRefFinalList1Entries[i]); + free(const_cast<VkVideoEncodeH264DpbSlotInfoEXT *>(pStruct->pRefFinalList1Entries)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT: + { // VkVideoEncodeH265CapabilitiesEXT + VkVideoEncodeH265CapabilitiesEXT const *pStruct = static_cast<VkVideoEncodeH265CapabilitiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXT: + { // VkVideoEncodeH265SessionCreateInfoEXT + VkVideoEncodeH265SessionCreateInfoEXT const *pStruct = static_cast<VkVideoEncodeH265SessionCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkExtensionProperties - pStdExtensionVersion + free(const_cast<VkExtensionProperties *>(pStruct->pStdExtensionVersion)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT: + { // VkVideoEncodeH265SessionParametersAddInfoEXT + VkVideoEncodeH265SessionParametersAddInfoEXT const *pStruct = static_cast<VkVideoEncodeH265SessionParametersAddInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // StdVideoH265VideoParameterSet - pVpsStd / vpsStdCount + free(const_cast<StdVideoH265VideoParameterSet *>(pStruct->pVpsStd)); + + // StdVideoH265SequenceParameterSet - pSpsStd / spsStdCount + free(const_cast<StdVideoH265SequenceParameterSet *>(pStruct->pSpsStd)); + + // StdVideoH265PictureParameterSet - pPpsStd / ppsStdCount + free(const_cast<StdVideoH265PictureParameterSet *>(pStruct->pPpsStd)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT: + { // VkVideoEncodeH265SessionParametersCreateInfoEXT + VkVideoEncodeH265SessionParametersCreateInfoEXT const *pStruct = static_cast<VkVideoEncodeH265SessionParametersCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkVideoEncodeH265SessionParametersAddInfoEXT - pParametersAddInfo + vk_struct_cleanup(pStruct->pParametersAddInfo); + free(const_cast<VkVideoEncodeH265SessionParametersAddInfoEXT *>(pStruct->pParametersAddInfo)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT: + { // VkVideoEncodeH265VclFrameInfoEXT + VkVideoEncodeH265VclFrameInfoEXT const *pStruct = static_cast<VkVideoEncodeH265VclFrameInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkVideoEncodeH265ReferenceListsEXT - pReferenceFinalLists + vk_struct_cleanup(pStruct->pReferenceFinalLists); + free(const_cast<VkVideoEncodeH265ReferenceListsEXT *>(pStruct->pReferenceFinalLists)); + + // VkVideoEncodeH265NaluSliceEXT - pNaluSliceEntries / naluSliceEntryCount + for (uint32_t i = 0; i < pStruct->naluSliceEntryCount; ++i) + vk_struct_cleanup(&pStruct->pNaluSliceEntries[i]); + free(const_cast<VkVideoEncodeH265NaluSliceEXT *>(pStruct->pNaluSliceEntries)); + + // StdVideoEncodeH265PictureInfo - pCurrentPictureInfo + free(const_cast<StdVideoEncodeH265PictureInfo *>(pStruct->pCurrentPictureInfo)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_EXT: + { // VkVideoEncodeH265EmitPictureParametersEXT + VkVideoEncodeH265EmitPictureParametersEXT const *pStruct = static_cast<VkVideoEncodeH265EmitPictureParametersEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_EXT: + { // VkVideoEncodeH265NaluSliceEXT + VkVideoEncodeH265NaluSliceEXT const *pStruct = static_cast<VkVideoEncodeH265NaluSliceEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkVideoEncodeH265ReferenceListsEXT - pReferenceFinalLists + vk_struct_cleanup(pStruct->pReferenceFinalLists); + free(const_cast<VkVideoEncodeH265ReferenceListsEXT *>(pStruct->pReferenceFinalLists)); + + // StdVideoEncodeH265SliceHeader - pSliceHeaderStd + free(const_cast<StdVideoEncodeH265SliceHeader *>(pStruct->pSliceHeaderStd)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_EXT: + { // VkVideoEncodeH265ProfileEXT + VkVideoEncodeH265ProfileEXT const *pStruct = static_cast<VkVideoEncodeH265ProfileEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT: + { // VkVideoEncodeH265DpbSlotInfoEXT + VkVideoEncodeH265DpbSlotInfoEXT const *pStruct = static_cast<VkVideoEncodeH265DpbSlotInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // StdVideoEncodeH265ReferenceInfo - pStdReferenceInfo + free(const_cast<StdVideoEncodeH265ReferenceInfo *>(pStruct->pStdReferenceInfo)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + +#ifdef VK_ENABLE_BETA_EXTENSIONS + case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_REFERENCE_LISTS_EXT: + { // VkVideoEncodeH265ReferenceListsEXT + VkVideoEncodeH265ReferenceListsEXT const *pStruct = static_cast<VkVideoEncodeH265ReferenceListsEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkVideoEncodeH265DpbSlotInfoEXT - pReferenceList0Entries / referenceList0EntryCount + for (uint32_t i = 0; i < pStruct->referenceList0EntryCount; ++i) + vk_struct_cleanup(&pStruct->pReferenceList0Entries[i]); + free(const_cast<VkVideoEncodeH265DpbSlotInfoEXT *>(pStruct->pReferenceList0Entries)); + + // VkVideoEncodeH265DpbSlotInfoEXT - pReferenceList1Entries / referenceList1EntryCount + for (uint32_t i = 0; i < pStruct->referenceList1EntryCount; ++i) + vk_struct_cleanup(&pStruct->pReferenceList1Entries[i]); + free(const_cast<VkVideoEncodeH265DpbSlotInfoEXT *>(pStruct->pReferenceList1Entries)); + + // StdVideoEncodeH265ReferenceModifications - pReferenceModifications + free(const_cast<StdVideoEncodeH265ReferenceModifications *>(pStruct->pReferenceModifications)); + } + + break; +#endif // VK_ENABLE_BETA_EXTENSIONS + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV: + { // VkPhysicalDeviceInheritedViewportScissorFeaturesNV + VkPhysicalDeviceInheritedViewportScissorFeaturesNV const *pStruct = static_cast<VkPhysicalDeviceInheritedViewportScissorFeaturesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV: + { // VkCommandBufferInheritanceViewportScissorInfoNV + VkCommandBufferInheritanceViewportScissorInfoNV const *pStruct = static_cast<VkCommandBufferInheritanceViewportScissorInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkViewport - pViewportDepths + free(const_cast<VkViewport *>(pStruct->pViewportDepths)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT: + { // VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT + VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: + { // VkPhysicalDeviceProvokingVertexFeaturesEXT + VkPhysicalDeviceProvokingVertexFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceProvokingVertexFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT: + { // VkPhysicalDeviceProvokingVertexPropertiesEXT + VkPhysicalDeviceProvokingVertexPropertiesEXT const *pStruct = static_cast<VkPhysicalDeviceProvokingVertexPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT: + { // VkPipelineRasterizationProvokingVertexStateCreateInfoEXT + VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const *pStruct = static_cast<VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX: + { // VkCuModuleCreateInfoNVX + VkCuModuleCreateInfoNVX const *pStruct = static_cast<VkCuModuleCreateInfoNVX const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // void - pData / dataSize + free(const_cast<void *>(pStruct->pData)); + } + + break; + + case VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX: + { // VkCuFunctionCreateInfoNVX + VkCuFunctionCreateInfoNVX const *pStruct = static_cast<VkCuFunctionCreateInfoNVX const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // char - pName / null-terminated + free(const_cast<char *>(pStruct->pName)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR: + { // VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR + VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR const *pStruct = static_cast<VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR: + { // VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR + VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR const *pStruct = static_cast<VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT: + { // VkPhysicalDeviceDrmPropertiesEXT + VkPhysicalDeviceDrmPropertiesEXT const *pStruct = static_cast<VkPhysicalDeviceDrmPropertiesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV: + { // VkPhysicalDeviceRayTracingMotionBlurFeaturesNV + VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const *pStruct = static_cast<VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV: + { // VkAccelerationStructureGeometryMotionTrianglesDataNV + VkAccelerationStructureGeometryMotionTrianglesDataNV const *pStruct = static_cast<VkAccelerationStructureGeometryMotionTrianglesDataNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV: + { // VkAccelerationStructureMotionInfoNV + VkAccelerationStructureMotionInfoNV const *pStruct = static_cast<VkAccelerationStructureMotionInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV: + { // VkMemoryGetRemoteAddressInfoNV + VkMemoryGetRemoteAddressInfoNV const *pStruct = static_cast<VkMemoryGetRemoteAddressInfoNV const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + +#ifdef VK_USE_PLATFORM_FUCHSIA + case VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA: + { // VkImportMemoryBufferCollectionFUCHSIA + VkImportMemoryBufferCollectionFUCHSIA const *pStruct = static_cast<VkImportMemoryBufferCollectionFUCHSIA const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA + case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA: + { // VkBufferCollectionImageCreateInfoFUCHSIA + VkBufferCollectionImageCreateInfoFUCHSIA const *pStruct = static_cast<VkBufferCollectionImageCreateInfoFUCHSIA const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA + case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA: + { // VkBufferCollectionBufferCreateInfoFUCHSIA + VkBufferCollectionBufferCreateInfoFUCHSIA const *pStruct = static_cast<VkBufferCollectionBufferCreateInfoFUCHSIA const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA + case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA: + { // VkBufferCollectionCreateInfoFUCHSIA + VkBufferCollectionCreateInfoFUCHSIA const *pStruct = static_cast<VkBufferCollectionCreateInfoFUCHSIA const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA + case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA: + { // VkBufferCollectionPropertiesFUCHSIA + VkBufferCollectionPropertiesFUCHSIA const *pStruct = static_cast<VkBufferCollectionPropertiesFUCHSIA const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA + case VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA: + { // VkBufferConstraintsInfoFUCHSIA + VkBufferConstraintsInfoFUCHSIA const *pStruct = static_cast<VkBufferConstraintsInfoFUCHSIA const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA + case VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA: + { // VkSysmemColorSpaceFUCHSIA + VkSysmemColorSpaceFUCHSIA const *pStruct = static_cast<VkSysmemColorSpaceFUCHSIA const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA + case VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA: + { // VkImageFormatConstraintsInfoFUCHSIA + VkImageFormatConstraintsInfoFUCHSIA const *pStruct = static_cast<VkImageFormatConstraintsInfoFUCHSIA const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkSysmemColorSpaceFUCHSIA - pColorSpaces + vk_struct_cleanup(pStruct->pColorSpaces); + free(const_cast<VkSysmemColorSpaceFUCHSIA *>(pStruct->pColorSpaces)); + } + + break; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA + case VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA: + { // VkImageConstraintsInfoFUCHSIA + VkImageConstraintsInfoFUCHSIA const *pStruct = static_cast<VkImageConstraintsInfoFUCHSIA const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkImageFormatConstraintsInfoFUCHSIA - pFormatConstraints / formatConstraintsCount + for (uint32_t i = 0; i < pStruct->formatConstraintsCount; ++i) + vk_struct_cleanup(&pStruct->pFormatConstraints[i]); + free(const_cast<VkImageFormatConstraintsInfoFUCHSIA *>(pStruct->pFormatConstraints)); + } + + break; +#endif // VK_USE_PLATFORM_FUCHSIA + +#ifdef VK_USE_PLATFORM_FUCHSIA + case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA: + { // VkBufferCollectionConstraintsInfoFUCHSIA + VkBufferCollectionConstraintsInfoFUCHSIA const *pStruct = static_cast<VkBufferCollectionConstraintsInfoFUCHSIA const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_FUCHSIA + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT: + { // VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT + VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const *pStruct = static_cast<VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR: + { // VkFormatProperties3KHR + VkFormatProperties3KHR const *pStruct = static_cast<VkFormatProperties3KHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT: + { // VkDrmFormatModifierPropertiesList2EXT + VkDrmFormatModifierPropertiesList2EXT const *pStruct = static_cast<VkDrmFormatModifierPropertiesList2EXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkDrmFormatModifierProperties2EXT - pDrmFormatModifierProperties / drmFormatModifierCount + free(const_cast<VkDrmFormatModifierProperties2EXT *>(pStruct->pDrmFormatModifierProperties)); + } + + break; + +#ifdef VK_USE_PLATFORM_ANDROID_KHR + case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID: + { // VkAndroidHardwareBufferFormatProperties2ANDROID + VkAndroidHardwareBufferFormatProperties2ANDROID const *pStruct = static_cast<VkAndroidHardwareBufferFormatProperties2ANDROID const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; +#endif // VK_USE_PLATFORM_ANDROID_KHR + + case VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR: + { // VkPipelineRenderingCreateInfoKHR + VkPipelineRenderingCreateInfoKHR const *pStruct = static_cast<VkPipelineRenderingCreateInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkFormat - pColorAttachmentFormats / colorAttachmentCount + free(const_cast<VkFormat *>(pStruct->pColorAttachmentFormats)); + } + + break; + + case VK_STRUCTURE_TYPE_RENDERING_INFO_KHR: + { // VkRenderingInfoKHR + VkRenderingInfoKHR const *pStruct = static_cast<VkRenderingInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkRenderingAttachmentInfoKHR - pColorAttachments / colorAttachmentCount + for (uint32_t i = 0; i < pStruct->colorAttachmentCount; ++i) + vk_struct_cleanup(&pStruct->pColorAttachments[i]); + free(const_cast<VkRenderingAttachmentInfoKHR *>(pStruct->pColorAttachments)); + + // VkRenderingAttachmentInfoKHR - pDepthAttachment + vk_struct_cleanup(pStruct->pDepthAttachment); + free(const_cast<VkRenderingAttachmentInfoKHR *>(pStruct->pDepthAttachment)); + + // VkRenderingAttachmentInfoKHR - pStencilAttachment + vk_struct_cleanup(pStruct->pStencilAttachment); + free(const_cast<VkRenderingAttachmentInfoKHR *>(pStruct->pStencilAttachment)); + } + + break; + + case VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR: + { // VkRenderingAttachmentInfoKHR + VkRenderingAttachmentInfoKHR const *pStruct = static_cast<VkRenderingAttachmentInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR: + { // VkRenderingFragmentShadingRateAttachmentInfoKHR + VkRenderingFragmentShadingRateAttachmentInfoKHR const *pStruct = static_cast<VkRenderingFragmentShadingRateAttachmentInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT: + { // VkRenderingFragmentDensityMapAttachmentInfoEXT + VkRenderingFragmentDensityMapAttachmentInfoEXT const *pStruct = static_cast<VkRenderingFragmentDensityMapAttachmentInfoEXT const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR: + { // VkPhysicalDeviceDynamicRenderingFeaturesKHR + VkPhysicalDeviceDynamicRenderingFeaturesKHR const *pStruct = static_cast<VkPhysicalDeviceDynamicRenderingFeaturesKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR: + { // VkCommandBufferInheritanceRenderingInfoKHR + VkCommandBufferInheritanceRenderingInfoKHR const *pStruct = static_cast<VkCommandBufferInheritanceRenderingInfoKHR const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkFormat - pColorAttachmentFormats / colorAttachmentCount + free(const_cast<VkFormat *>(pStruct->pColorAttachmentFormats)); + } + + break; + + case VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD: + { // VkAttachmentSampleCountInfoAMD + VkAttachmentSampleCountInfoAMD const *pStruct = static_cast<VkAttachmentSampleCountInfoAMD const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + + // VkSampleCountFlagBits - pColorAttachmentSamples / colorAttachmentCount + free(const_cast<VkSampleCountFlagBits *>(pStruct->pColorAttachmentSamples)); + } + + break; + + case VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX: + { // VkMultiviewPerViewAttributesInfoNVX + VkMultiviewPerViewAttributesInfoNVX const *pStruct = static_cast<VkMultiviewPerViewAttributesInfoNVX const *>(pData); + + // void - pNext + vk_struct_cleanup(pStruct->pNext); + free(const_cast<void *>(pStruct->pNext)); + } + + break; + + + default: + break; + } +} + +#endif // VK_STRUCT_CLEANUP_CONFIG_MAIN + +#endif // VK_STRUCT_CLEANUP_V198_HPP diff --git a/include/detail_value_serialization/vk_value_serialization_v198.hpp b/include/detail_value_serialization/vk_value_serialization_v198.hpp new file mode 100644 index 0000000000000000000000000000000000000000..4e9621ebe6aa25163ebcdfa4266ce9572a1f5a3b --- /dev/null +++ b/include/detail_value_serialization/vk_value_serialization_v198.hpp @@ -0,0 +1,2203 @@ +/* + Copyright (C) 2020 George Cave - gcave@stablecoder.ca + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/* + This file was auto-generated by the Vulkan mini-libs utility can be found at + https://github.com/stablecoder/vulkan-mini-libs.git + or + https://git.stabletec.com/utilities/vulkan-mini-libs.git + + Check for an updated version anytime, or state concerns/bugs. +*/ + +#ifndef VK_VALUE_SERIALIZATION_V198_HPP +#define VK_VALUE_SERIALIZATION_V198_HPP + +/* USAGE: + To use, include this header where the declarations for the boolean checks are required. + + On *ONE* compilation unit, include the definition of `#define VK_VALUE_SERIALIZATION_CONFIG_MAIN` + so that the definitions are compiled somewhere following the one definition rule. +*/ + +#include <vulkan/vulkan.h> + +#include <string> +#include <string_view> + +static_assert(VK_HEADER_VERSION == 198, "Incompatible VK_HEADER_VERSION!"); + +/** + * @brief Macro that automatically stringifies the given Vulkan type for serialization + * @param VKTYPE Actual Vulkan type + * @param VALUE Value to be serialized + * @param STRPTR Pointer to the string to store the serialization in. Only modified if true is + * returned. + * @return True if serialization was successful. False otherwise. + */ +#define VK_SERIALIZE(VKTYPE, VALUE, STRPTR) vk_serialize<VKTYPE>(#VKTYPE, VALUE, STRPTR) + +/** + * @brief Macro that automatically stringifies the given Vulkan type for parsing + * @param VKTYPE Actual Vulkan type + * @param STRING String to be parsed + * @param VALPTR Pointer to the value to store the parsed value in. Only modified if true is + * returned. + * @return True if serialization was successful. False otherwise. + */ +#define VK_PARSE(VKTYPE, STRING, VALPTR) vk_parse<VKTYPE>(#VKTYPE, STRING, VALPTR) + +/** + * @brief Serializes a Vulkan enumerator/flag type + * @param vkType Name of the Vulkan enumerator/flag type + * @param vkValue Value being serialized + * @param pString Pointer to a string that will be modified with the serialized value. Only modified + * if true is returned. + * @return True the value was successfully serialized. False otherwise. + */ +bool vk_serialize(std::string_view vkType, uint32_t vkValue, std::string *pString); + +/** + * @brief Parses a Vulkan enumerator/flag serialized string + * @param vkType Name of the Vulkan enumerator/flag type + * @param vkString String being parsed + * @param pValue Pointer to a value that will be modified with the parsed value. Only modified if + * true is returned. + * @return True the value was successfully serialized. False otherwise. + */ +bool vk_parse(std::string_view vkType, std::string vkString, uint32_t *pValue); + +/** + * @brief Serializes a Vulkan enumerator/flag type + * @tparam Vulkan type being serialized + * @param vkType Name of the Vulkan enumerator/flag type + * @param vkValue Value being serialized + * @param pString Pointer to a string that will be modified with the serialized value. Only modified + * if true is returned. + * @return True the value was successfully serialized. False otherwise. + */ +template <typename T> +bool vk_serialize(std::string_view vkType, T vkValue, std::string *pString) { + return vk_serialize(vkType, static_cast<uint32_t>(vkValue), pString); +} + +/** + * @brief Parses a Vulkan enumerator/flag serialized string + * @tparam Vulkan type being parsed + * @param vkType Name of the Vulkan enumerator/flag type + * @param vkString String being parsed + * @param pValue Pointer to a value that will be modified with the parsed value. Only modified if + * true is returned. + * @return True the value was successfully serialized. False otherwise. + */ +template <typename T> +bool vk_parse(std::string_view vkType, std::string vkString, T *pValue) { + uint32_t retVal = 0; + auto found = vk_parse(vkType, vkString, &retVal); + if (found) { + *pValue = static_cast<T>(retVal); + } + return found; +} + +#ifdef VK_VALUE_SERIALIZATION_CONFIG_MAIN + +#include <algorithm> +#include <array> +#include <cstring> +#include <tuple> + +namespace { + +constexpr std::array<std::string_view, 35> vendors = {{ + "IMG", + "AMD", + "AMDX", + "ARM", + "FSL", + "BRCM", + "NXP", + "NV", + "NVX", + "VIV", + "VSI", + "KDAB", + "ANDROID", + "CHROMIUM", + "FUCHSIA", + "GGP", + "GOOGLE", + "QCOM", + "LUNARG", + "SAMSUNG", + "SEC", + "TIZEN", + "RENDERDOC", + "NN", + "MVK", + "KHR", + "KHX", + "EXT", + "MESA", + "INTEL", + "HUAWEI", + "VALVE", + "QNX", + "JUICE", + "FB", +}}; + +struct EnumValueSet { + std::string_view name; + int32_t value; +}; +constexpr EnumValueSet VkImageLayoutSets[] = { + {"UNDEFINED", 0}, + {"GENERAL", 1}, + {"COLOR_ATTACHMENT_OPTIMAL", 2}, + {"DEPTH_STENCIL_ATTACHMENT_OPTIMAL", 3}, + {"DEPTH_STENCIL_READ_ONLY_OPTIMAL", 4}, + {"SHADER_READ_ONLY_OPTIMAL", 5}, + {"TRANSFER_SRC_OPTIMAL", 6}, + {"TRANSFER_DST_OPTIMAL", 7}, + {"PREINITIALIZED", 8}, +}; +constexpr EnumValueSet VkAttachmentLoadOpSets[] = { + {"LOAD", 0}, + {"CLEAR", 1}, + {"DONT_CARE", 2}, +}; +constexpr EnumValueSet VkAttachmentStoreOpSets[] = { + {"STORE", 0}, + {"DONT_CARE", 1}, +}; +constexpr EnumValueSet VkImageTypeSets[] = { + {"1D", 0}, + {"2D", 1}, + {"3D", 2}, +}; +constexpr EnumValueSet VkImageTilingSets[] = { + {"OPTIMAL", 0}, + {"LINEAR", 1}, +}; +constexpr EnumValueSet VkImageViewTypeSets[] = { + {"1D", 0}, + {"2D", 1}, + {"3D", 2}, + {"CUBE", 3}, + {"1D_ARRAY", 4}, + {"2D_ARRAY", 5}, + {"CUBE_ARRAY", 6}, +}; +constexpr EnumValueSet VkCommandBufferLevelSets[] = { + {"PRIMARY", 0}, + {"SECONDARY", 1}, +}; +constexpr EnumValueSet VkComponentSwizzleSets[] = { + {"IDENTITY", 0}, + {"ZERO", 1}, + {"ONE", 2}, + {"R", 3}, + {"G", 4}, + {"B", 5}, + {"A", 6}, +}; +constexpr EnumValueSet VkDescriptorTypeSets[] = { + {"SAMPLER", 0}, + {"COMBINED_IMAGE_SAMPLER", 1}, + {"SAMPLED_IMAGE", 2}, + {"STORAGE_IMAGE", 3}, + {"UNIFORM_TEXEL_BUFFER", 4}, + {"STORAGE_TEXEL_BUFFER", 5}, + {"UNIFORM_BUFFER", 6}, + {"STORAGE_BUFFER", 7}, + {"UNIFORM_BUFFER_DYNAMIC", 8}, + {"STORAGE_BUFFER_DYNAMIC", 9}, + {"INPUT_ATTACHMENT", 10}, +}; +constexpr EnumValueSet VkQueryTypeSets[] = { + {"OCCLUSION", 0}, + {"PIPELINE_STATISTICS", 1}, + {"TIMESTAMP", 2}, +}; +constexpr EnumValueSet VkBorderColorSets[] = { + {"FLOAT_TRANSPARENT_BLACK", 0}, + {"INT_TRANSPARENT_BLACK", 1}, + {"FLOAT_OPAQUE_BLACK", 2}, + {"INT_OPAQUE_BLACK", 3}, + {"FLOAT_OPAQUE_WHITE", 4}, + {"INT_OPAQUE_WHITE", 5}, +}; +constexpr EnumValueSet VkPipelineBindPointSets[] = { + {"GRAPHICS", 0}, + {"COMPUTE", 1}, +}; +constexpr EnumValueSet VkPipelineCacheHeaderVersionSets[] = { + {"ONE", 1}, +}; +constexpr EnumValueSet VkPrimitiveTopologySets[] = { + {"POINT_LIST", 0}, + {"LINE_LIST", 1}, + {"LINE_STRIP", 2}, + {"TRIANGLE_LIST", 3}, + {"TRIANGLE_STRIP", 4}, + {"TRIANGLE_FAN", 5}, + {"LINE_LIST_WITH_ADJACENCY", 6}, + {"LINE_STRIP_WITH_ADJACENCY", 7}, + {"TRIANGLE_LIST_WITH_ADJACENCY", 8}, + {"TRIANGLE_STRIP_WITH_ADJACENCY", 9}, + {"PATCH_LIST", 10}, +}; +constexpr EnumValueSet VkSharingModeSets[] = { + {"EXCLUSIVE", 0}, + {"CONCURRENT", 1}, +}; +constexpr EnumValueSet VkIndexTypeSets[] = { + {"UINT16", 0}, + {"UINT32", 1}, +}; +constexpr EnumValueSet VkFilterSets[] = { + {"NEAREST", 0}, + {"LINEAR", 1}, +}; +constexpr EnumValueSet VkSamplerMipmapModeSets[] = { + {"NEAREST", 0}, + {"LINEAR", 1}, +}; +constexpr EnumValueSet VkSamplerAddressModeSets[] = { + {"REPEAT", 0}, + {"MIRRORED_REPEAT", 1}, + {"CLAMP_TO_EDGE", 2}, + {"CLAMP_TO_BORDER", 3}, +}; +constexpr EnumValueSet VkCompareOpSets[] = { + {"NEVER", 0}, + {"LESS", 1}, + {"EQUAL", 2}, + {"LESS_OR_EQUAL", 3}, + {"GREATER", 4}, + {"NOT_EQUAL", 5}, + {"GREATER_OR_EQUAL", 6}, + {"ALWAYS", 7}, +}; +constexpr EnumValueSet VkPolygonModeSets[] = { + {"FILL", 0}, + {"LINE", 1}, + {"POINT", 2}, +}; +constexpr EnumValueSet VkFrontFaceSets[] = { + {"COUNTER_CLOCKWISE", 0}, + {"CLOCKWISE", 1}, +}; +constexpr EnumValueSet VkBlendFactorSets[] = { + {"ZERO", 0}, + {"ONE", 1}, + {"SRC_COLOR", 2}, + {"ONE_MINUS_SRC_COLOR", 3}, + {"DST_COLOR", 4}, + {"ONE_MINUS_DST_COLOR", 5}, + {"SRC_ALPHA", 6}, + {"ONE_MINUS_SRC_ALPHA", 7}, + {"DST_ALPHA", 8}, + {"ONE_MINUS_DST_ALPHA", 9}, + {"CONSTANT_COLOR", 10}, + {"ONE_MINUS_CONSTANT_COLOR", 11}, + {"CONSTANT_ALPHA", 12}, + {"ONE_MINUS_CONSTANT_ALPHA", 13}, + {"SRC_ALPHA_SATURATE", 14}, + {"SRC1_COLOR", 15}, + {"ONE_MINUS_SRC1_COLOR", 16}, + {"SRC1_ALPHA", 17}, + {"ONE_MINUS_SRC1_ALPHA", 18}, +}; +constexpr EnumValueSet VkBlendOpSets[] = { + {"ADD", 0}, + {"SUBTRACT", 1}, + {"REVERSE_SUBTRACT", 2}, + {"MIN", 3}, + {"MAX", 4}, +}; +constexpr EnumValueSet VkStencilOpSets[] = { + {"KEEP", 0}, + {"ZERO", 1}, + {"REPLACE", 2}, + {"INCREMENT_AND_CLAMP", 3}, + {"DECREMENT_AND_CLAMP", 4}, + {"INVERT", 5}, + {"INCREMENT_AND_WRAP", 6}, + {"DECREMENT_AND_WRAP", 7}, +}; +constexpr EnumValueSet VkLogicOpSets[] = { + {"CLEAR", 0}, + {"AND", 1}, + {"AND_REVERSE", 2}, + {"COPY", 3}, + {"AND_INVERTED", 4}, + {"NO_OP", 5}, + {"XOR", 6}, + {"OR", 7}, + {"NOR", 8}, + {"EQUIVALENT", 9}, + {"INVERT", 10}, + {"OR_REVERSE", 11}, + {"COPY_INVERTED", 12}, + {"OR_INVERTED", 13}, + {"NAND", 14}, + {"SET", 15}, +}; +constexpr EnumValueSet VkInternalAllocationTypeSets[] = { + {"EXECUTABLE", 0}, +}; +constexpr EnumValueSet VkSystemAllocationScopeSets[] = { + {"COMMAND", 0}, + {"OBJECT", 1}, + {"CACHE", 2}, + {"DEVICE", 3}, + {"INSTANCE", 4}, +}; +constexpr EnumValueSet VkPhysicalDeviceTypeSets[] = { + {"OTHER", 0}, + {"INTEGRATED_GPU", 1}, + {"DISCRETE_GPU", 2}, + {"VIRTUAL_GPU", 3}, + {"CPU", 4}, +}; +constexpr EnumValueSet VkVertexInputRateSets[] = { + {"VERTEX", 0}, + {"INSTANCE", 1}, +}; +constexpr EnumValueSet VkFormatSets[] = { + {"UNDEFINED", 0}, + {"R4G4_UNORM_PACK8", 1}, + {"R4G4B4A4_UNORM_PACK16", 2}, + {"B4G4R4A4_UNORM_PACK16", 3}, + {"R5G6B5_UNORM_PACK16", 4}, + {"B5G6R5_UNORM_PACK16", 5}, + {"R5G5B5A1_UNORM_PACK16", 6}, + {"B5G5R5A1_UNORM_PACK16", 7}, + {"A1R5G5B5_UNORM_PACK16", 8}, + {"R8_UNORM", 9}, + {"R8_SNORM", 10}, + {"R8_USCALED", 11}, + {"R8_SSCALED", 12}, + {"R8_UINT", 13}, + {"R8_SINT", 14}, + {"R8_SRGB", 15}, + {"R8G8_UNORM", 16}, + {"R8G8_SNORM", 17}, + {"R8G8_USCALED", 18}, + {"R8G8_SSCALED", 19}, + {"R8G8_UINT", 20}, + {"R8G8_SINT", 21}, + {"R8G8_SRGB", 22}, + {"R8G8B8_UNORM", 23}, + {"R8G8B8_SNORM", 24}, + {"R8G8B8_USCALED", 25}, + {"R8G8B8_SSCALED", 26}, + {"R8G8B8_UINT", 27}, + {"R8G8B8_SINT", 28}, + {"R8G8B8_SRGB", 29}, + {"B8G8R8_UNORM", 30}, + {"B8G8R8_SNORM", 31}, + {"B8G8R8_USCALED", 32}, + {"B8G8R8_SSCALED", 33}, + {"B8G8R8_UINT", 34}, + {"B8G8R8_SINT", 35}, + {"B8G8R8_SRGB", 36}, + {"R8G8B8A8_UNORM", 37}, + {"R8G8B8A8_SNORM", 38}, + {"R8G8B8A8_USCALED", 39}, + {"R8G8B8A8_SSCALED", 40}, + {"R8G8B8A8_UINT", 41}, + {"R8G8B8A8_SINT", 42}, + {"R8G8B8A8_SRGB", 43}, + {"B8G8R8A8_UNORM", 44}, + {"B8G8R8A8_SNORM", 45}, + {"B8G8R8A8_USCALED", 46}, + {"B8G8R8A8_SSCALED", 47}, + {"B8G8R8A8_UINT", 48}, + {"B8G8R8A8_SINT", 49}, + {"B8G8R8A8_SRGB", 50}, + {"A8B8G8R8_UNORM_PACK32", 51}, + {"A8B8G8R8_SNORM_PACK32", 52}, + {"A8B8G8R8_USCALED_PACK32", 53}, + {"A8B8G8R8_SSCALED_PACK32", 54}, + {"A8B8G8R8_UINT_PACK32", 55}, + {"A8B8G8R8_SINT_PACK32", 56}, + {"A8B8G8R8_SRGB_PACK32", 57}, + {"A2R10G10B10_UNORM_PACK32", 58}, + {"A2R10G10B10_SNORM_PACK32", 59}, + {"A2R10G10B10_USCALED_PACK32", 60}, + {"A2R10G10B10_SSCALED_PACK32", 61}, + {"A2R10G10B10_UINT_PACK32", 62}, + {"A2R10G10B10_SINT_PACK32", 63}, + {"A2B10G10R10_UNORM_PACK32", 64}, + {"A2B10G10R10_SNORM_PACK32", 65}, + {"A2B10G10R10_USCALED_PACK32", 66}, + {"A2B10G10R10_SSCALED_PACK32", 67}, + {"A2B10G10R10_UINT_PACK32", 68}, + {"A2B10G10R10_SINT_PACK32", 69}, + {"R16_UNORM", 70}, + {"R16_SNORM", 71}, + {"R16_USCALED", 72}, + {"R16_SSCALED", 73}, + {"R16_UINT", 74}, + {"R16_SINT", 75}, + {"R16_SFLOAT", 76}, + {"R16G16_UNORM", 77}, + {"R16G16_SNORM", 78}, + {"R16G16_USCALED", 79}, + {"R16G16_SSCALED", 80}, + {"R16G16_UINT", 81}, + {"R16G16_SINT", 82}, + {"R16G16_SFLOAT", 83}, + {"R16G16B16_UNORM", 84}, + {"R16G16B16_SNORM", 85}, + {"R16G16B16_USCALED", 86}, + {"R16G16B16_SSCALED", 87}, + {"R16G16B16_UINT", 88}, + {"R16G16B16_SINT", 89}, + {"R16G16B16_SFLOAT", 90}, + {"R16G16B16A16_UNORM", 91}, + {"R16G16B16A16_SNORM", 92}, + {"R16G16B16A16_USCALED", 93}, + {"R16G16B16A16_SSCALED", 94}, + {"R16G16B16A16_UINT", 95}, + {"R16G16B16A16_SINT", 96}, + {"R16G16B16A16_SFLOAT", 97}, + {"R32_UINT", 98}, + {"R32_SINT", 99}, + {"R32_SFLOAT", 100}, + {"R32G32_UINT", 101}, + {"R32G32_SINT", 102}, + {"R32G32_SFLOAT", 103}, + {"R32G32B32_UINT", 104}, + {"R32G32B32_SINT", 105}, + {"R32G32B32_SFLOAT", 106}, + {"R32G32B32A32_UINT", 107}, + {"R32G32B32A32_SINT", 108}, + {"R32G32B32A32_SFLOAT", 109}, + {"R64_UINT", 110}, + {"R64_SINT", 111}, + {"R64_SFLOAT", 112}, + {"R64G64_UINT", 113}, + {"R64G64_SINT", 114}, + {"R64G64_SFLOAT", 115}, + {"R64G64B64_UINT", 116}, + {"R64G64B64_SINT", 117}, + {"R64G64B64_SFLOAT", 118}, + {"R64G64B64A64_UINT", 119}, + {"R64G64B64A64_SINT", 120}, + {"R64G64B64A64_SFLOAT", 121}, + {"B10G11R11_UFLOAT_PACK32", 122}, + {"E5B9G9R9_UFLOAT_PACK32", 123}, + {"D16_UNORM", 124}, + {"X8_D24_UNORM_PACK32", 125}, + {"D32_SFLOAT", 126}, + {"S8_UINT", 127}, + {"D16_UNORM_S8_UINT", 128}, + {"D24_UNORM_S8_UINT", 129}, + {"D32_SFLOAT_S8_UINT", 130}, + {"BC1_RGB_UNORM_BLOCK", 131}, + {"BC1_RGB_SRGB_BLOCK", 132}, + {"BC1_RGBA_UNORM_BLOCK", 133}, + {"BC1_RGBA_SRGB_BLOCK", 134}, + {"BC2_UNORM_BLOCK", 135}, + {"BC2_SRGB_BLOCK", 136}, + {"BC3_UNORM_BLOCK", 137}, + {"BC3_SRGB_BLOCK", 138}, + {"BC4_UNORM_BLOCK", 139}, + {"BC4_SNORM_BLOCK", 140}, + {"BC5_UNORM_BLOCK", 141}, + {"BC5_SNORM_BLOCK", 142}, + {"BC6H_UFLOAT_BLOCK", 143}, + {"BC6H_SFLOAT_BLOCK", 144}, + {"BC7_UNORM_BLOCK", 145}, + {"BC7_SRGB_BLOCK", 146}, + {"ETC2_R8G8B8_UNORM_BLOCK", 147}, + {"ETC2_R8G8B8_SRGB_BLOCK", 148}, + {"ETC2_R8G8B8A1_UNORM_BLOCK", 149}, + {"ETC2_R8G8B8A1_SRGB_BLOCK", 150}, + {"ETC2_R8G8B8A8_UNORM_BLOCK", 151}, + {"ETC2_R8G8B8A8_SRGB_BLOCK", 152}, + {"EAC_R11_UNORM_BLOCK", 153}, + {"EAC_R11_SNORM_BLOCK", 154}, + {"EAC_R11G11_UNORM_BLOCK", 155}, + {"EAC_R11G11_SNORM_BLOCK", 156}, + {"ASTC_4x4_UNORM_BLOCK", 157}, + {"ASTC_4x4_SRGB_BLOCK", 158}, + {"ASTC_5x4_UNORM_BLOCK", 159}, + {"ASTC_5x4_SRGB_BLOCK", 160}, + {"ASTC_5x5_UNORM_BLOCK", 161}, + {"ASTC_5x5_SRGB_BLOCK", 162}, + {"ASTC_6x5_UNORM_BLOCK", 163}, + {"ASTC_6x5_SRGB_BLOCK", 164}, + {"ASTC_6x6_UNORM_BLOCK", 165}, + {"ASTC_6x6_SRGB_BLOCK", 166}, + {"ASTC_8x5_UNORM_BLOCK", 167}, + {"ASTC_8x5_SRGB_BLOCK", 168}, + {"ASTC_8x6_UNORM_BLOCK", 169}, + {"ASTC_8x6_SRGB_BLOCK", 170}, + {"ASTC_8x8_UNORM_BLOCK", 171}, + {"ASTC_8x8_SRGB_BLOCK", 172}, + {"ASTC_10x5_UNORM_BLOCK", 173}, + {"ASTC_10x5_SRGB_BLOCK", 174}, + {"ASTC_10x6_UNORM_BLOCK", 175}, + {"ASTC_10x6_SRGB_BLOCK", 176}, + {"ASTC_10x8_UNORM_BLOCK", 177}, + {"ASTC_10x8_SRGB_BLOCK", 178}, + {"ASTC_10x10_UNORM_BLOCK", 179}, + {"ASTC_10x10_SRGB_BLOCK", 180}, + {"ASTC_12x10_UNORM_BLOCK", 181}, + {"ASTC_12x10_SRGB_BLOCK", 182}, + {"ASTC_12x12_UNORM_BLOCK", 183}, + {"ASTC_12x12_SRGB_BLOCK", 184}, +}; +constexpr EnumValueSet VkStructureTypeSets[] = { + {"APPLICATION_INFO", 0}, + {"INSTANCE_CREATE_INFO", 1}, + {"DEVICE_QUEUE_CREATE_INFO", 2}, + {"DEVICE_CREATE_INFO", 3}, + {"SUBMIT_INFO", 4}, + {"MEMORY_ALLOCATE_INFO", 5}, + {"MAPPED_MEMORY_RANGE", 6}, + {"BIND_SPARSE_INFO", 7}, + {"FENCE_CREATE_INFO", 8}, + {"SEMAPHORE_CREATE_INFO", 9}, + {"EVENT_CREATE_INFO", 10}, + {"QUERY_POOL_CREATE_INFO", 11}, + {"BUFFER_CREATE_INFO", 12}, + {"BUFFER_VIEW_CREATE_INFO", 13}, + {"IMAGE_CREATE_INFO", 14}, + {"IMAGE_VIEW_CREATE_INFO", 15}, + {"SHADER_MODULE_CREATE_INFO", 16}, + {"PIPELINE_CACHE_CREATE_INFO", 17}, + {"PIPELINE_SHADER_STAGE_CREATE_INFO", 18}, + {"PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO", 19}, + {"PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO", 20}, + {"PIPELINE_TESSELLATION_STATE_CREATE_INFO", 21}, + {"PIPELINE_VIEWPORT_STATE_CREATE_INFO", 22}, + {"PIPELINE_RASTERIZATION_STATE_CREATE_INFO", 23}, + {"PIPELINE_MULTISAMPLE_STATE_CREATE_INFO", 24}, + {"PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO", 25}, + {"PIPELINE_COLOR_BLEND_STATE_CREATE_INFO", 26}, + {"PIPELINE_DYNAMIC_STATE_CREATE_INFO", 27}, + {"GRAPHICS_PIPELINE_CREATE_INFO", 28}, + {"COMPUTE_PIPELINE_CREATE_INFO", 29}, + {"PIPELINE_LAYOUT_CREATE_INFO", 30}, + {"SAMPLER_CREATE_INFO", 31}, + {"DESCRIPTOR_SET_LAYOUT_CREATE_INFO", 32}, + {"DESCRIPTOR_POOL_CREATE_INFO", 33}, + {"DESCRIPTOR_SET_ALLOCATE_INFO", 34}, + {"WRITE_DESCRIPTOR_SET", 35}, + {"COPY_DESCRIPTOR_SET", 36}, + {"FRAMEBUFFER_CREATE_INFO", 37}, + {"RENDER_PASS_CREATE_INFO", 38}, + {"COMMAND_POOL_CREATE_INFO", 39}, + {"COMMAND_BUFFER_ALLOCATE_INFO", 40}, + {"COMMAND_BUFFER_INHERITANCE_INFO", 41}, + {"COMMAND_BUFFER_BEGIN_INFO", 42}, + {"RENDER_PASS_BEGIN_INFO", 43}, + {"BUFFER_MEMORY_BARRIER", 44}, + {"IMAGE_MEMORY_BARRIER", 45}, + {"MEMORY_BARRIER", 46}, + {"LOADER_INSTANCE_CREATE_INFO", 47}, + {"LOADER_DEVICE_CREATE_INFO", 48}, +}; +constexpr EnumValueSet VkSubpassContentsSets[] = { + {"INLINE", 0}, + {"SECONDARY_COMMAND_BUFFERS", 1}, +}; +constexpr EnumValueSet VkDynamicStateSets[] = { + {"VIEWPORT", 0}, + {"SCISSOR", 1}, + {"LINE_WIDTH", 2}, + {"DEPTH_BIAS", 3}, + {"BLEND_CONSTANTS", 4}, + {"DEPTH_BOUNDS", 5}, + {"STENCIL_COMPARE_MASK", 6}, + {"STENCIL_WRITE_MASK", 7}, + {"STENCIL_REFERENCE", 8}, +}; +constexpr EnumValueSet VkDescriptorUpdateTemplateTypeSets[] = { + {"DESCRIPTOR_SET", 0}, +}; +constexpr EnumValueSet VkObjectTypeSets[] = { + {"UNKNOWN", 0}, + {"INSTANCE", 1}, + {"PHYSICAL_DEVICE", 2}, + {"DEVICE", 3}, + {"QUEUE", 4}, + {"SEMAPHORE", 5}, + {"COMMAND_BUFFER", 6}, + {"FENCE", 7}, + {"DEVICE_MEMORY", 8}, + {"BUFFER", 9}, + {"IMAGE", 10}, + {"EVENT", 11}, + {"QUERY_POOL", 12}, + {"BUFFER_VIEW", 13}, + {"IMAGE_VIEW", 14}, + {"SHADER_MODULE", 15}, + {"PIPELINE_CACHE", 16}, + {"PIPELINE_LAYOUT", 17}, + {"RENDER_PASS", 18}, + {"PIPELINE", 19}, + {"DESCRIPTOR_SET_LAYOUT", 20}, + {"SAMPLER", 21}, + {"DESCRIPTOR_POOL", 22}, + {"DESCRIPTOR_SET", 23}, + {"FRAMEBUFFER", 24}, + {"COMMAND_POOL", 25}, +}; +constexpr EnumValueSet VkQueueFlagBitsSets[] = { + {"GRAPHICS", 0x00000001}, + {"COMPUTE", 0x00000002}, + {"TRANSFER", 0x00000004}, + {"SPARSE_BINDING", 0x00000008}, +}; +constexpr EnumValueSet VkCullModeFlagBitsSets[] = { + {"NONE", 0}, + {"FRONT", 0x00000001}, + {"BACK", 0x00000002}, + {"FRONT_AND_BACK", 0x00000003}, +}; +constexpr EnumValueSet VkMemoryPropertyFlagBitsSets[] = { + {"DEVICE_LOCAL", 0x00000001}, + {"HOST_VISIBLE", 0x00000002}, + {"HOST_COHERENT", 0x00000004}, + {"HOST_CACHED", 0x00000008}, + {"LAZILY_ALLOCATED", 0x00000010}, +}; +constexpr EnumValueSet VkMemoryHeapFlagBitsSets[] = { + {"DEVICE_LOCAL", 0x00000001}, +}; +constexpr EnumValueSet VkAccessFlagBitsSets[] = { + {"INDIRECT_COMMAND_READ", 0x00000001}, + {"INDEX_READ", 0x00000002}, + {"VERTEX_ATTRIBUTE_READ", 0x00000004}, + {"UNIFORM_READ", 0x00000008}, + {"INPUT_ATTACHMENT_READ", 0x00000010}, + {"SHADER_READ", 0x00000020}, + {"SHADER_WRITE", 0x00000040}, + {"COLOR_ATTACHMENT_READ", 0x00000080}, + {"COLOR_ATTACHMENT_WRITE", 0x00000100}, + {"DEPTH_STENCIL_ATTACHMENT_READ", 0x00000200}, + {"DEPTH_STENCIL_ATTACHMENT_WRITE", 0x00000400}, + {"TRANSFER_READ", 0x00000800}, + {"TRANSFER_WRITE", 0x00001000}, + {"HOST_READ", 0x00002000}, + {"HOST_WRITE", 0x00004000}, + {"MEMORY_READ", 0x00008000}, + {"MEMORY_WRITE", 0x00010000}, +}; +constexpr EnumValueSet VkBufferUsageFlagBitsSets[] = { + {"TRANSFER_SRC", 0x00000001}, + {"TRANSFER_DST", 0x00000002}, + {"UNIFORM_TEXEL_BUFFER", 0x00000004}, + {"STORAGE_TEXEL_BUFFER", 0x00000008}, + {"UNIFORM_BUFFER", 0x00000010}, + {"STORAGE_BUFFER", 0x00000020}, + {"INDEX_BUFFER", 0x00000040}, + {"VERTEX_BUFFER", 0x00000080}, + {"INDIRECT_BUFFER", 0x00000100}, +}; +constexpr EnumValueSet VkBufferCreateFlagBitsSets[] = { + {"SPARSE_BINDING", 0x00000001}, + {"SPARSE_RESIDENCY", 0x00000002}, + {"SPARSE_ALIASED", 0x00000004}, +}; +constexpr EnumValueSet VkShaderStageFlagBitsSets[] = { + {"VERTEX", 0x00000001}, + {"TESSELLATION_CONTROL", 0x00000002}, + {"TESSELLATION_EVALUATION", 0x00000004}, + {"GEOMETRY", 0x00000008}, + {"FRAGMENT", 0x00000010}, + {"COMPUTE", 0x00000020}, + {"ALL_GRAPHICS", 0x0000001F}, + {"ALL", 0x7FFFFFFF}, +}; +constexpr EnumValueSet VkImageUsageFlagBitsSets[] = { + {"TRANSFER_SRC", 0x00000001}, + {"TRANSFER_DST", 0x00000002}, + {"SAMPLED", 0x00000004}, + {"STORAGE", 0x00000008}, + {"COLOR_ATTACHMENT", 0x00000010}, + {"DEPTH_STENCIL_ATTACHMENT", 0x00000020}, + {"TRANSIENT_ATTACHMENT", 0x00000040}, + {"INPUT_ATTACHMENT", 0x00000080}, +}; +constexpr EnumValueSet VkImageCreateFlagBitsSets[] = { + {"SPARSE_BINDING", 0x00000001}, + {"SPARSE_RESIDENCY", 0x00000002}, + {"SPARSE_ALIASED", 0x00000004}, + {"MUTABLE_FORMAT", 0x00000008}, + {"CUBE_COMPATIBLE", 0x00000010}, +}; +constexpr EnumValueSet VkPipelineCreateFlagBitsSets[] = { + {"DISABLE_OPTIMIZATION", 0x00000001}, + {"ALLOW_DERIVATIVES", 0x00000002}, + {"DERIVATIVE", 0x00000004}, +}; +constexpr EnumValueSet VkColorComponentFlagBitsSets[] = { + {"R", 0x00000001}, + {"G", 0x00000002}, + {"B", 0x00000004}, + {"A", 0x00000008}, +}; +constexpr EnumValueSet VkFenceCreateFlagBitsSets[] = { + {"SIGNALED", 0x00000001}, +}; +constexpr EnumValueSet VkFormatFeatureFlagBitsSets[] = { + {"SAMPLED_IMAGE", 0x00000001}, + {"STORAGE_IMAGE", 0x00000002}, + {"STORAGE_IMAGE_ATOMIC", 0x00000004}, + {"UNIFORM_TEXEL_BUFFER", 0x00000008}, + {"STORAGE_TEXEL_BUFFER", 0x00000010}, + {"STORAGE_TEXEL_BUFFER_ATOMIC", 0x00000020}, + {"VERTEX_BUFFER", 0x00000040}, + {"COLOR_ATTACHMENT", 0x00000080}, + {"COLOR_ATTACHMENT_BLEND", 0x00000100}, + {"DEPTH_STENCIL_ATTACHMENT", 0x00000200}, + {"BLIT_SRC", 0x00000400}, + {"BLIT_DST", 0x00000800}, + {"SAMPLED_IMAGE_FILTER_LINEAR", 0x00001000}, +}; +constexpr EnumValueSet VkQueryControlFlagBitsSets[] = { + {"PRECISE", 0x00000001}, +}; +constexpr EnumValueSet VkQueryResultFlagBitsSets[] = { + {"64", 0x00000001}, + {"WAIT", 0x00000002}, + {"WITH_AVAILABILITY", 0x00000004}, + {"PARTIAL", 0x00000008}, +}; +constexpr EnumValueSet VkCommandBufferUsageFlagBitsSets[] = { + {"ONE_TIME_SUBMIT", 0x00000001}, + {"RENDER_PASS_CONTINUE", 0x00000002}, + {"SIMULTANEOUS_USE", 0x00000004}, +}; +constexpr EnumValueSet VkQueryPipelineStatisticFlagBitsSets[] = { + {"INPUT_ASSEMBLY_VERTICES", 0x00000001}, + {"INPUT_ASSEMBLY_PRIMITIVES", 0x00000002}, + {"VERTEX_SHADER_INVOCATIONS", 0x00000004}, + {"GEOMETRY_SHADER_INVOCATIONS", 0x00000008}, + {"GEOMETRY_SHADER_PRIMITIVES", 0x00000010}, + {"CLIPPING_INVOCATIONS", 0x00000020}, + {"CLIPPING_PRIMITIVES", 0x00000040}, + {"FRAGMENT_SHADER_INVOCATIONS", 0x00000080}, + {"TESSELLATION_CONTROL_SHADER_PATCHES", 0x00000100}, + {"TESSELLATION_EVALUATION_SHADER_INVOCATIONS", 0x00000200}, + {"COMPUTE_SHADER_INVOCATIONS", 0x00000400}, +}; +constexpr EnumValueSet VkImageAspectFlagBitsSets[] = { + {"COLOR", 0x00000001}, + {"DEPTH", 0x00000002}, + {"STENCIL", 0x00000004}, + {"METADATA", 0x00000008}, +}; +constexpr EnumValueSet VkSparseImageFormatFlagBitsSets[] = { + {"SINGLE_MIPTAIL", 0x00000001}, + {"ALIGNED_MIP_SIZE", 0x00000002}, + {"NONSTANDARD_BLOCK_SIZE", 0x00000004}, +}; +constexpr EnumValueSet VkSparseMemoryBindFlagBitsSets[] = { + {"METADATA", 0x00000001}, +}; +constexpr EnumValueSet VkPipelineStageFlagBitsSets[] = { + {"TOP_OF_PIPE", 0x00000001}, + {"DRAW_INDIRECT", 0x00000002}, + {"VERTEX_INPUT", 0x00000004}, + {"VERTEX_SHADER", 0x00000008}, + {"TESSELLATION_CONTROL_SHADER", 0x00000010}, + {"TESSELLATION_EVALUATION_SHADER", 0x00000020}, + {"GEOMETRY_SHADER", 0x00000040}, + {"FRAGMENT_SHADER", 0x00000080}, + {"EARLY_FRAGMENT_TESTS", 0x00000100}, + {"LATE_FRAGMENT_TESTS", 0x00000200}, + {"COLOR_ATTACHMENT_OUTPUT", 0x00000400}, + {"COMPUTE_SHADER", 0x00000800}, + {"TRANSFER", 0x00001000}, + {"BOTTOM_OF_PIPE", 0x00002000}, + {"HOST", 0x00004000}, + {"ALL_GRAPHICS", 0x00008000}, + {"ALL_COMMANDS", 0x00010000}, +}; +constexpr EnumValueSet VkCommandPoolCreateFlagBitsSets[] = { + {"TRANSIENT", 0x00000001}, + {"RESET_COMMAND_BUFFER", 0x00000002}, +}; +constexpr EnumValueSet VkCommandPoolResetFlagBitsSets[] = { + {"RELEASE_RESOURCES", 0x00000001}, +}; +constexpr EnumValueSet VkCommandBufferResetFlagBitsSets[] = { + {"RELEASE_RESOURCES", 0x00000001}, +}; +constexpr EnumValueSet VkSampleCountFlagBitsSets[] = { + {"1", 0x00000001}, + {"2", 0x00000002}, + {"4", 0x00000004}, + {"8", 0x00000008}, + {"16", 0x00000010}, + {"32", 0x00000020}, + {"64", 0x00000040}, +}; +constexpr EnumValueSet VkAttachmentDescriptionFlagBitsSets[] = { + {"MAY_ALIAS", 0x00000001}, +}; +constexpr EnumValueSet VkStencilFaceFlagBitsSets[] = { + {"FRONT", 0x00000001}, + {"BACK", 0x00000002}, + {"FRONT_AND_BACK", 0x00000003}, + {"VK_STENCIL_FRONT_AND_BACK", 0x00000003}, +}; +constexpr EnumValueSet VkDescriptorPoolCreateFlagBitsSets[] = { + {"FREE_DESCRIPTOR_SET", 0x00000001}, +}; +constexpr EnumValueSet VkDependencyFlagBitsSets[] = { + {"BY_REGION", 0x00000001}, +}; +constexpr EnumValueSet VkSemaphoreTypeSets[] = { + {"BINARY", 0}, + {"TIMELINE", 1}, +}; +constexpr EnumValueSet VkSemaphoreWaitFlagBitsSets[] = { + {"ANY", 0x00000001}, +}; +constexpr EnumValueSet VkPresentModeKHRSets[] = { + {"IMMEDIATE", 0}, + {"MAILBOX", 1}, + {"FIFO", 2}, + {"FIFO_RELAXED", 3}, +}; +constexpr EnumValueSet VkColorSpaceKHRSets[] = { + {"SRGB_NONLINEAR", 0}, + {"VK_COLORSPACE_SRGB_NONLINEAR", 0}, +}; +constexpr EnumValueSet VkDisplayPlaneAlphaFlagBitsKHRSets[] = { + {"OPAQUE", 0x00000001}, + {"GLOBAL", 0x00000002}, + {"PER_PIXEL", 0x00000004}, + {"PER_PIXEL_PREMULTIPLIED", 0x00000008}, +}; +constexpr EnumValueSet VkCompositeAlphaFlagBitsKHRSets[] = { + {"OPAQUE", 0x00000001}, + {"PRE_MULTIPLIED", 0x00000002}, + {"POST_MULTIPLIED", 0x00000004}, + {"INHERIT", 0x00000008}, +}; +constexpr EnumValueSet VkSurfaceTransformFlagBitsKHRSets[] = { + {"IDENTITY", 0x00000001}, + {"ROTATE_90", 0x00000002}, + {"ROTATE_180", 0x00000004}, + {"ROTATE_270", 0x00000008}, + {"HORIZONTAL_MIRROR", 0x00000010}, + {"HORIZONTAL_MIRROR_ROTATE_90", 0x00000020}, + {"HORIZONTAL_MIRROR_ROTATE_180", 0x00000040}, + {"HORIZONTAL_MIRROR_ROTATE_270", 0x00000080}, + {"INHERIT", 0x00000100}, +}; +constexpr EnumValueSet VkSwapchainImageUsageFlagBitsANDROIDSets[] = { + {"SHARED", 0x00000001}, +}; +constexpr EnumValueSet VkTimeDomainEXTSets[] = { + {"DEVICE", 0}, + {"CLOCK_MONOTONIC", 1}, + {"CLOCK_MONOTONIC_RAW", 2}, + {"QUERY_PERFORMANCE_COUNTER", 3}, +}; +constexpr EnumValueSet VkDebugReportFlagBitsEXTSets[] = { + {"INFORMATION", 0x00000001}, + {"WARNING", 0x00000002}, + {"PERFORMANCE_WARNING", 0x00000004}, + {"ERROR", 0x00000008}, + {"DEBUG", 0x00000010}, +}; +constexpr EnumValueSet VkDebugReportObjectTypeEXTSets[] = { + {"UNKNOWN", 0}, + {"INSTANCE", 1}, + {"PHYSICAL_DEVICE", 2}, + {"DEVICE", 3}, + {"QUEUE", 4}, + {"SEMAPHORE", 5}, + {"COMMAND_BUFFER", 6}, + {"FENCE", 7}, + {"DEVICE_MEMORY", 8}, + {"BUFFER", 9}, + {"IMAGE", 10}, + {"EVENT", 11}, + {"QUERY_POOL", 12}, + {"BUFFER_VIEW", 13}, + {"IMAGE_VIEW", 14}, + {"SHADER_MODULE", 15}, + {"PIPELINE_CACHE", 16}, + {"PIPELINE_LAYOUT", 17}, + {"RENDER_PASS", 18}, + {"PIPELINE", 19}, + {"DESCRIPTOR_SET_LAYOUT", 20}, + {"SAMPLER", 21}, + {"DESCRIPTOR_POOL", 22}, + {"DESCRIPTOR_SET", 23}, + {"FRAMEBUFFER", 24}, + {"COMMAND_POOL", 25}, + {"SURFACE_KHR", 26}, + {"SWAPCHAIN_KHR", 27}, + {"DEBUG_REPORT_CALLBACK_EXT", 28}, + {"DEBUG_REPORT", 28}, + {"DISPLAY_KHR", 29}, + {"DISPLAY_MODE_KHR", 30}, + {"VALIDATION_CACHE_EXT", 33}, + {"VALIDATION_CACHE", 33}, +}; +constexpr EnumValueSet VkDeviceMemoryReportEventTypeEXTSets[] = { + {"ALLOCATE", 0}, + {"FREE", 1}, + {"IMPORT", 2}, + {"UNIMPORT", 3}, + {"ALLOCATION_FAILED", 4}, +}; +constexpr EnumValueSet VkRasterizationOrderAMDSets[] = { + {"STRICT", 0}, + {"RELAXED", 1}, +}; +constexpr EnumValueSet VkExternalMemoryHandleTypeFlagBitsNVSets[] = { + {"OPAQUE_WIN32", 0x00000001}, + {"OPAQUE_WIN32_KMT", 0x00000002}, + {"D3D11_IMAGE", 0x00000004}, + {"D3D11_IMAGE_KMT", 0x00000008}, +}; +constexpr EnumValueSet VkExternalMemoryFeatureFlagBitsNVSets[] = { + {"DEDICATED_ONLY", 0x00000001}, + {"EXPORTABLE", 0x00000002}, + {"IMPORTABLE", 0x00000004}, +}; +constexpr EnumValueSet VkValidationCheckEXTSets[] = { + {"ALL", 0}, + {"SHADERS", 1}, +}; +constexpr EnumValueSet VkValidationFeatureEnableEXTSets[] = { + {"GPU_ASSISTED", 0}, + {"GPU_ASSISTED_RESERVE_BINDING_SLOT", 1}, + {"BEST_PRACTICES", 2}, + {"DEBUG_PRINTF", 3}, + {"SYNCHRONIZATION_VALIDATION", 4}, +}; +constexpr EnumValueSet VkValidationFeatureDisableEXTSets[] = { + {"ALL", 0}, + {"SHADERS", 1}, + {"THREAD_SAFETY", 2}, + {"API_PARAMETERS", 3}, + {"OBJECT_LIFETIMES", 4}, + {"CORE_CHECKS", 5}, + {"UNIQUE_HANDLES", 6}, + {"SHADER_VALIDATION_CACHE", 7}, +}; +constexpr EnumValueSet VkSubgroupFeatureFlagBitsSets[] = { + {"BASIC", 0x00000001}, + {"VOTE", 0x00000002}, + {"ARITHMETIC", 0x00000004}, + {"BALLOT", 0x00000008}, + {"SHUFFLE", 0x00000010}, + {"SHUFFLE_RELATIVE", 0x00000020}, + {"CLUSTERED", 0x00000040}, + {"QUAD", 0x00000080}, +}; +constexpr EnumValueSet VkIndirectCommandsLayoutUsageFlagBitsNVSets[] = { + {"EXPLICIT_PREPROCESS", 0x00000001}, + {"INDEXED_SEQUENCES", 0x00000002}, + {"UNORDERED_SEQUENCES", 0x00000004}, +}; +constexpr EnumValueSet VkIndirectStateFlagBitsNVSets[] = { + {"FLAG_FRONTFACE", 0x00000001}, +}; +constexpr EnumValueSet VkIndirectCommandsTokenTypeNVSets[] = { + {"SHADER_GROUP", 0}, + {"STATE_FLAGS", 1}, + {"INDEX_BUFFER", 2}, + {"VERTEX_BUFFER", 3}, + {"PUSH_CONSTANT", 4}, + {"DRAW_INDEXED", 5}, + {"DRAW", 6}, + {"DRAW_TASKS", 7}, +}; +constexpr EnumValueSet VkExternalMemoryHandleTypeFlagBitsSets[] = { + {"OPAQUE_FD", 0x00000001}, + {"OPAQUE_WIN32", 0x00000002}, + {"OPAQUE_WIN32_KMT", 0x00000004}, + {"D3D11_TEXTURE", 0x00000008}, + {"D3D11_TEXTURE_KMT", 0x00000010}, + {"D3D12_HEAP", 0x00000020}, + {"D3D12_RESOURCE", 0x00000040}, +}; +constexpr EnumValueSet VkExternalMemoryFeatureFlagBitsSets[] = { + {"DEDICATED_ONLY", 0x00000001}, + {"EXPORTABLE", 0x00000002}, + {"IMPORTABLE", 0x00000004}, +}; +constexpr EnumValueSet VkExternalSemaphoreHandleTypeFlagBitsSets[] = { + {"OPAQUE_FD", 0x00000001}, + {"OPAQUE_WIN32", 0x00000002}, + {"OPAQUE_WIN32_KMT", 0x00000004}, + {"D3D12_FENCE", 0x00000008}, + {"D3D11_FENCE", 0x00000008}, + {"SYNC_FD", 0x00000010}, +}; +constexpr EnumValueSet VkExternalSemaphoreFeatureFlagBitsSets[] = { + {"EXPORTABLE", 0x00000001}, + {"IMPORTABLE", 0x00000002}, +}; +constexpr EnumValueSet VkSemaphoreImportFlagBitsSets[] = { + {"TEMPORARY", 0x00000001}, +}; +constexpr EnumValueSet VkExternalFenceHandleTypeFlagBitsSets[] = { + {"OPAQUE_FD", 0x00000001}, + {"OPAQUE_WIN32", 0x00000002}, + {"OPAQUE_WIN32_KMT", 0x00000004}, + {"SYNC_FD", 0x00000008}, +}; +constexpr EnumValueSet VkExternalFenceFeatureFlagBitsSets[] = { + {"EXPORTABLE", 0x00000001}, + {"IMPORTABLE", 0x00000002}, +}; +constexpr EnumValueSet VkFenceImportFlagBitsSets[] = { + {"TEMPORARY", 0x00000001}, +}; +constexpr EnumValueSet VkSurfaceCounterFlagBitsEXTSets[] = { + {"VBLANK", 0x00000001}, + {"VBLANK", 0x00000001}, +}; +constexpr EnumValueSet VkDisplayPowerStateEXTSets[] = { + {"OFF", 0}, + {"SUSPEND", 1}, + {"ON", 2}, +}; +constexpr EnumValueSet VkDeviceEventTypeEXTSets[] = { + {"DISPLAY_HOTPLUG", 0}, +}; +constexpr EnumValueSet VkDisplayEventTypeEXTSets[] = { + {"FIRST_PIXEL_OUT", 0}, +}; +constexpr EnumValueSet VkPeerMemoryFeatureFlagBitsSets[] = { + {"COPY_SRC", 0x00000001}, + {"COPY_DST", 0x00000002}, + {"GENERIC_SRC", 0x00000004}, + {"GENERIC_DST", 0x00000008}, +}; +constexpr EnumValueSet VkMemoryAllocateFlagBitsSets[] = { + {"DEVICE_MASK", 0x00000001}, +}; +constexpr EnumValueSet VkDeviceGroupPresentModeFlagBitsKHRSets[] = { + {"LOCAL", 0x00000001}, + {"REMOTE", 0x00000002}, + {"SUM", 0x00000004}, + {"LOCAL_MULTI_DEVICE", 0x00000008}, +}; +constexpr EnumValueSet VkViewportCoordinateSwizzleNVSets[] = { + {"POSITIVE_X", 0}, + {"NEGATIVE_X", 1}, + {"POSITIVE_Y", 2}, + {"NEGATIVE_Y", 3}, + {"POSITIVE_Z", 4}, + {"NEGATIVE_Z", 5}, + {"POSITIVE_W", 6}, + {"NEGATIVE_W", 7}, +}; +constexpr EnumValueSet VkDiscardRectangleModeEXTSets[] = { + {"INCLUSIVE", 0}, + {"EXCLUSIVE", 1}, +}; +constexpr EnumValueSet VkPointClippingBehaviorSets[] = { + {"ALL_CLIP_PLANES", 0}, + {"USER_CLIP_PLANES_ONLY", 1}, +}; +constexpr EnumValueSet VkSamplerReductionModeSets[] = { + {"WEIGHTED_AVERAGE", 0}, + {"MIN", 1}, + {"MAX", 2}, +}; +constexpr EnumValueSet VkTessellationDomainOriginSets[] = { + {"UPPER_LEFT", 0}, + {"LOWER_LEFT", 1}, +}; +constexpr EnumValueSet VkSamplerYcbcrModelConversionSets[] = { + {"RGB_IDENTITY", 0}, + {"YCBCR_IDENTITY", 1}, + {"YCBCR_709", 2}, + {"YCBCR_601", 3}, + {"YCBCR_2020", 4}, +}; +constexpr EnumValueSet VkSamplerYcbcrRangeSets[] = { + {"ITU_FULL", 0}, + {"ITU_NARROW", 1}, +}; +constexpr EnumValueSet VkChromaLocationSets[] = { + {"COSITED_EVEN", 0}, + {"MIDPOINT", 1}, +}; +constexpr EnumValueSet VkBlendOverlapEXTSets[] = { + {"UNCORRELATED", 0}, + {"DISJOINT", 1}, + {"CONJOINT", 2}, +}; +constexpr EnumValueSet VkCoverageModulationModeNVSets[] = { + {"NONE", 0}, + {"RGB", 1}, + {"ALPHA", 2}, + {"RGBA", 3}, +}; +constexpr EnumValueSet VkCoverageReductionModeNVSets[] = { + {"MERGE", 0}, + {"TRUNCATE", 1}, +}; +constexpr EnumValueSet VkValidationCacheHeaderVersionEXTSets[] = { + {"ONE", 1}, +}; +constexpr EnumValueSet VkShaderInfoTypeAMDSets[] = { + {"STATISTICS", 0}, + {"BINARY", 1}, + {"DISASSEMBLY", 2}, +}; +constexpr EnumValueSet VkQueueGlobalPriorityEXTSets[] = { + {"LOW", 128}, + {"MEDIUM", 256}, + {"HIGH", 512}, + {"REALTIME", 1024}, +}; +constexpr EnumValueSet VkDebugUtilsMessageSeverityFlagBitsEXTSets[] = { + {"VERBOSE", 0x00000001}, + {"INFO", 0x00000010}, + {"WARNING", 0x00000100}, + {"ERROR", 0x00001000}, +}; +constexpr EnumValueSet VkDebugUtilsMessageTypeFlagBitsEXTSets[] = { + {"GENERAL", 0x00000001}, + {"VALIDATION", 0x00000002}, + {"PERFORMANCE", 0x00000004}, +}; +constexpr EnumValueSet VkConservativeRasterizationModeEXTSets[] = { + {"DISABLED", 0}, + {"OVERESTIMATE", 1}, + {"UNDERESTIMATE", 2}, +}; +constexpr EnumValueSet VkDescriptorBindingFlagBitsSets[] = { + {"UPDATE_AFTER_BIND", 0x00000001}, + {"UPDATE_UNUSED_WHILE_PENDING", 0x00000002}, + {"PARTIALLY_BOUND", 0x00000004}, + {"VARIABLE_DESCRIPTOR_COUNT", 0x00000008}, +}; +constexpr EnumValueSet VkVendorIdSets[] = { + {"VIV", 0x10001}, + {"VSI", 0x10002}, + {"KAZAN", 0x10003}, + {"CODEPLAY", 0x10004}, + {"MESA", 0x10005}, + {"POCL", 0x10006}, +}; +constexpr EnumValueSet VkDriverIdSets[] = { + {"AMD_PROPRIETARY", 1}, + {"AMD_OPEN_SOURCE", 2}, + {"MESA_RADV", 3}, + {"NVIDIA_PROPRIETARY", 4}, + {"INTEL_PROPRIETARY_WINDOWS", 5}, + {"INTEL_OPEN_SOURCE", 6}, + {"IMAGINATION_PROPRIETARY", 7}, + {"QUALCOMM_PROPRIETARY", 8}, + {"ARM_PROPRIETARY", 9}, + {"GOOGLE_SWIFTSHADER", 10}, + {"GGP_PROPRIETARY", 11}, + {"BROADCOM_PROPRIETARY", 12}, + {"MESA_LLVMPIPE", 13}, + {"MOLTENVK", 14}, + {"COREAVI_PROPRIETARY", 15}, + {"JUICE_PROPRIETARY", 16}, + {"VERISILICON_PROPRIETARY", 17}, + {"MESA_TURNIP", 18}, + {"MESA_V3DV", 19}, + {"MESA_PANVK", 20}, +}; +constexpr EnumValueSet VkConditionalRenderingFlagBitsEXTSets[] = { + {"INVERTED", 0x00000001}, +}; +constexpr EnumValueSet VkResolveModeFlagBitsSets[] = { + {"NONE", 0}, + {"SAMPLE_ZERO", 0x00000001}, + {"AVERAGE", 0x00000002}, + {"MIN", 0x00000004}, + {"MAX", 0x00000008}, +}; +constexpr EnumValueSet VkShadingRatePaletteEntryNVSets[] = { + {"NO_INVOCATIONS", 0}, + {"16_INVOCATIONS_PER_PIXEL", 1}, + {"8_INVOCATIONS_PER_PIXEL", 2}, + {"4_INVOCATIONS_PER_PIXEL", 3}, + {"2_INVOCATIONS_PER_PIXEL", 4}, + {"1_INVOCATION_PER_PIXEL", 5}, + {"1_INVOCATION_PER_2X1_PIXELS", 6}, + {"1_INVOCATION_PER_1X2_PIXELS", 7}, + {"1_INVOCATION_PER_2X2_PIXELS", 8}, + {"1_INVOCATION_PER_4X2_PIXELS", 9}, + {"1_INVOCATION_PER_2X4_PIXELS", 10}, + {"1_INVOCATION_PER_4X4_PIXELS", 11}, +}; +constexpr EnumValueSet VkCoarseSampleOrderTypeNVSets[] = { + {"DEFAULT", 0}, + {"CUSTOM", 1}, + {"PIXEL_MAJOR", 2}, + {"SAMPLE_MAJOR", 3}, +}; +constexpr EnumValueSet VkGeometryInstanceFlagBitsKHRSets[] = { + {"TRIANGLE_FACING_CULL_DISABLE", 0x00000001}, + {"TRIANGLE_FLIP_FACING", 0x00000002}, + {"FORCE_OPAQUE", 0x00000004}, + {"FORCE_NO_OPAQUE", 0x00000008}, + {"TRIANGLE_FRONT_COUNTERCLOCKWISE", 0x00000002}, +}; +constexpr EnumValueSet VkGeometryFlagBitsKHRSets[] = { + {"OPAQUE", 0x00000001}, + {"NO_DUPLICATE_ANY_HIT_INVOCATION", 0x00000002}, +}; +constexpr EnumValueSet VkBuildAccelerationStructureFlagBitsKHRSets[] = { + {"ALLOW_UPDATE", 0x00000001}, + {"ALLOW_COMPACTION", 0x00000002}, + {"PREFER_FAST_TRACE", 0x00000004}, + {"PREFER_FAST_BUILD", 0x00000008}, + {"LOW_MEMORY", 0x00000010}, +}; +constexpr EnumValueSet VkAccelerationStructureCreateFlagBitsKHRSets[] = { + {"DEVICE_ADDRESS_CAPTURE_REPLAY", 0x00000001}, +}; +constexpr EnumValueSet VkCopyAccelerationStructureModeKHRSets[] = { + {"CLONE", 0}, + {"COMPACT", 1}, + {"SERIALIZE", 2}, + {"DESERIALIZE", 3}, +}; +constexpr EnumValueSet VkBuildAccelerationStructureModeKHRSets[] = { + {"BUILD", 0}, + {"UPDATE", 1}, +}; +constexpr EnumValueSet VkAccelerationStructureTypeKHRSets[] = { + {"TOP_LEVEL", 0}, + {"BOTTOM_LEVEL", 1}, + {"GENERIC", 2}, +}; +constexpr EnumValueSet VkGeometryTypeKHRSets[] = { + {"TRIANGLES", 0}, + {"AABBS", 1}, + {"INSTANCES", 2}, +}; +constexpr EnumValueSet VkAccelerationStructureMemoryRequirementsTypeNVSets[] = { + {"OBJECT", 0}, + {"BUILD_SCRATCH", 1}, + {"UPDATE_SCRATCH", 2}, +}; +constexpr EnumValueSet VkAccelerationStructureBuildTypeKHRSets[] = { + {"HOST", 0}, + {"DEVICE", 1}, + {"HOST_OR_DEVICE", 2}, +}; +constexpr EnumValueSet VkRayTracingShaderGroupTypeKHRSets[] = { + {"GENERAL", 0}, + {"TRIANGLES_HIT_GROUP", 1}, + {"PROCEDURAL_HIT_GROUP", 2}, +}; +constexpr EnumValueSet VkAccelerationStructureCompatibilityKHRSets[] = { + {"COMPATIBLE", 0}, + {"INCOMPATIBLE", 1}, +}; +constexpr EnumValueSet VkShaderGroupShaderKHRSets[] = { + {"GENERAL", 0}, + {"CLOSEST_HIT", 1}, + {"ANY_HIT", 2}, + {"INTERSECTION", 3}, +}; +constexpr EnumValueSet VkMemoryOverallocationBehaviorAMDSets[] = { + {"DEFAULT", 0}, + {"ALLOWED", 1}, + {"DISALLOWED", 2}, +}; +constexpr EnumValueSet VkScopeNVSets[] = { + {"DEVICE", 1}, + {"WORKGROUP", 2}, + {"SUBGROUP", 3}, + {"QUEUE_FAMILY", 5}, +}; +constexpr EnumValueSet VkComponentTypeNVSets[] = { + {"FLOAT16", 0}, + {"FLOAT32", 1}, + {"FLOAT64", 2}, + {"SINT8", 3}, + {"SINT16", 4}, + {"SINT32", 5}, + {"SINT64", 6}, + {"UINT8", 7}, + {"UINT16", 8}, + {"UINT32", 9}, + {"UINT64", 10}, +}; +constexpr EnumValueSet VkDeviceDiagnosticsConfigFlagBitsNVSets[] = { + {"ENABLE_SHADER_DEBUG_INFO", 0x00000001}, + {"ENABLE_RESOURCE_TRACKING", 0x00000002}, + {"ENABLE_AUTOMATIC_CHECKPOINTS", 0x00000004}, +}; +constexpr EnumValueSet VkPipelineCreationFeedbackFlagBitsEXTSets[] = { + {"VALID", 0x00000001}, + {"APPLICATION_PIPELINE_CACHE_HIT", 0x00000002}, + {"BASE_PIPELINE_ACCELERATION", 0x00000004}, +}; +constexpr EnumValueSet VkFullScreenExclusiveEXTSets[] = { + {"DEFAULT", 0}, + {"ALLOWED", 1}, + {"DISALLOWED", 2}, + {"APPLICATION_CONTROLLED", 3}, +}; +constexpr EnumValueSet VkPerformanceCounterScopeKHRSets[] = { + {"COMMAND_BUFFER", 0}, + {"RENDER_PASS", 1}, + {"COMMAND", 2}, + {"VK_QUERY_SCOPE_COMMAND_BUFFER", 0}, + {"VK_QUERY_SCOPE_RENDER_PASS", 1}, + {"VK_QUERY_SCOPE_COMMAND", 2}, +}; +constexpr EnumValueSet VkPerformanceCounterUnitKHRSets[] = { + {"GENERIC", 0}, + {"PERCENTAGE", 1}, + {"NANOSECONDS", 2}, + {"BYTES", 3}, + {"BYTES_PER_SECOND", 4}, + {"KELVIN", 5}, + {"WATTS", 6}, + {"VOLTS", 7}, + {"AMPS", 8}, + {"HERTZ", 9}, + {"CYCLES", 10}, +}; +constexpr EnumValueSet VkPerformanceCounterStorageKHRSets[] = { + {"INT32", 0}, + {"INT64", 1}, + {"UINT32", 2}, + {"UINT64", 3}, + {"FLOAT32", 4}, + {"FLOAT64", 5}, +}; +constexpr EnumValueSet VkPerformanceCounterDescriptionFlagBitsKHRSets[] = { + {"PERFORMANCE_IMPACTING", 0x00000001}, + {"PERFORMANCE_IMPACTING", 0x00000001}, + {"CONCURRENTLY_IMPACTED", 0x00000002}, + {"CONCURRENTLY_IMPACTED", 0x00000002}, +}; +constexpr EnumValueSet VkPerformanceConfigurationTypeINTELSets[] = { + {"COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED", 0}, +}; +constexpr EnumValueSet VkQueryPoolSamplingModeINTELSets[] = { + {"MANUAL", 0}, +}; +constexpr EnumValueSet VkPerformanceOverrideTypeINTELSets[] = { + {"NULL_HARDWARE", 0}, + {"FLUSH_GPU_CACHES", 1}, +}; +constexpr EnumValueSet VkPerformanceParameterTypeINTELSets[] = { + {"HW_COUNTERS_SUPPORTED", 0}, + {"STREAM_MARKER_VALID_BITS", 1}, +}; +constexpr EnumValueSet VkPerformanceValueTypeINTELSets[] = { + {"UINT32", 0}, + {"UINT64", 1}, + {"FLOAT", 2}, + {"BOOL", 3}, + {"STRING", 4}, +}; +constexpr EnumValueSet VkShaderFloatControlsIndependenceSets[] = { + {"32_BIT_ONLY", 0}, + {"ALL", 1}, + {"NONE", 2}, +}; +constexpr EnumValueSet VkPipelineExecutableStatisticFormatKHRSets[] = { + {"BOOL32", 0}, + {"INT64", 1}, + {"UINT64", 2}, + {"FLOAT64", 3}, +}; +constexpr EnumValueSet VkLineRasterizationModeEXTSets[] = { + {"DEFAULT", 0}, + {"RECTANGULAR", 1}, + {"BRESENHAM", 2}, + {"RECTANGULAR_SMOOTH", 3}, +}; +constexpr EnumValueSet VkToolPurposeFlagBitsEXTSets[] = { + {"VALIDATION", 0x00000001}, + {"PROFILING", 0x00000002}, + {"TRACING", 0x00000004}, + {"ADDITIONAL_FEATURES", 0x00000008}, + {"MODIFYING_FEATURES", 0x00000010}, +}; +constexpr EnumValueSet VkFragmentShadingRateCombinerOpKHRSets[] = { + {"KEEP", 0}, + {"REPLACE", 1}, + {"MIN", 2}, + {"MAX", 3}, + {"MUL", 4}, +}; +constexpr EnumValueSet VkFragmentShadingRateNVSets[] = { + {"1_INVOCATION_PER_PIXEL", 0}, + {"1_INVOCATION_PER_1X2_PIXELS", 1}, + {"1_INVOCATION_PER_2X1_PIXELS", 4}, + {"1_INVOCATION_PER_2X2_PIXELS", 5}, + {"1_INVOCATION_PER_2X4_PIXELS", 6}, + {"1_INVOCATION_PER_4X2_PIXELS", 9}, + {"1_INVOCATION_PER_4X4_PIXELS", 10}, + {"2_INVOCATIONS_PER_PIXEL", 11}, + {"4_INVOCATIONS_PER_PIXEL", 12}, + {"8_INVOCATIONS_PER_PIXEL", 13}, + {"16_INVOCATIONS_PER_PIXEL", 14}, + {"NO_INVOCATIONS", 15}, +}; +constexpr EnumValueSet VkFragmentShadingRateTypeNVSets[] = { + {"FRAGMENT_SIZE", 0}, + {"ENUMS", 1}, +}; +constexpr EnumValueSet VkAccessFlagBits2KHRSets[] = { + {"VK_ACCESS_2_NONE", 0}, + {"VK_ACCESS_2_INDIRECT_COMMAND_READ", 0x00000001}, + {"VK_ACCESS_2_INDEX_READ", 0x00000002}, + {"VK_ACCESS_2_VERTEX_ATTRIBUTE_READ", 0x00000004}, + {"VK_ACCESS_2_UNIFORM_READ", 0x00000008}, + {"VK_ACCESS_2_INPUT_ATTACHMENT_READ", 0x00000010}, + {"VK_ACCESS_2_SHADER_READ", 0x00000020}, + {"VK_ACCESS_2_SHADER_WRITE", 0x00000040}, + {"VK_ACCESS_2_COLOR_ATTACHMENT_READ", 0x00000080}, + {"VK_ACCESS_2_COLOR_ATTACHMENT_WRITE", 0x00000100}, + {"VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ", 0x00000200}, + {"VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE", 0x00000400}, + {"VK_ACCESS_2_TRANSFER_READ", 0x00000800}, + {"VK_ACCESS_2_TRANSFER_WRITE", 0x00001000}, + {"VK_ACCESS_2_HOST_READ", 0x00002000}, + {"VK_ACCESS_2_HOST_WRITE", 0x00004000}, + {"VK_ACCESS_2_MEMORY_READ", 0x00008000}, + {"VK_ACCESS_2_MEMORY_WRITE", 0x00010000}, + {"VK_ACCESS_2_SHADER_SAMPLED_READ", 0x00000001}, + {"VK_ACCESS_2_SHADER_STORAGE_READ", 0x00000002}, + {"VK_ACCESS_2_SHADER_STORAGE_WRITE", 0x00000004}, +}; +constexpr EnumValueSet VkPipelineStageFlagBits2KHRSets[] = { + {"VK_PIPELINE_STAGE_2_NONE", 0}, + {"VK_PIPELINE_STAGE_2_TOP_OF_PIPE", 0x00000001}, + {"VK_PIPELINE_STAGE_2_DRAW_INDIRECT", 0x00000002}, + {"VK_PIPELINE_STAGE_2_VERTEX_INPUT", 0x00000004}, + {"VK_PIPELINE_STAGE_2_VERTEX_SHADER", 0x00000008}, + {"VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER", 0x00000010}, + {"VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER", 0x00000020}, + {"VK_PIPELINE_STAGE_2_GEOMETRY_SHADER", 0x00000040}, + {"VK_PIPELINE_STAGE_2_FRAGMENT_SHADER", 0x00000080}, + {"VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS", 0x00000100}, + {"VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS", 0x00000200}, + {"VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT", 0x00000400}, + {"VK_PIPELINE_STAGE_2_COMPUTE_SHADER", 0x00000800}, + {"VK_PIPELINE_STAGE_2_ALL_TRANSFER", 0x00001000}, + {"VK_PIPELINE_STAGE_2_TRANSFER", 0x00001000}, + {"VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE", 0x00002000}, + {"VK_PIPELINE_STAGE_2_HOST", 0x00004000}, + {"VK_PIPELINE_STAGE_2_ALL_GRAPHICS", 0x00008000}, + {"VK_PIPELINE_STAGE_2_ALL_COMMANDS", 0x00010000}, + {"VK_PIPELINE_STAGE_2_COPY", 0x00000001}, + {"VK_PIPELINE_STAGE_2_RESOLVE", 0x00000002}, + {"VK_PIPELINE_STAGE_2_BLIT", 0x00000004}, + {"VK_PIPELINE_STAGE_2_CLEAR", 0x00000008}, + {"VK_PIPELINE_STAGE_2_INDEX_INPUT", 0x00000010}, + {"VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT", 0x00000020}, + {"VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS", 0x00000040}, +}; +constexpr EnumValueSet VkSubmitFlagBitsKHRSets[] = { + {"PROTECTED", 0x00000001}, +}; +constexpr EnumValueSet VkProvokingVertexModeEXTSets[] = { + {"FIRST_VERTEX", 0}, + {"LAST_VERTEX", 1}, +}; +constexpr EnumValueSet VkAccelerationStructureMotionInstanceTypeNVSets[] = { + {"STATIC", 0}, + {"MATRIX_MOTION", 1}, + {"SRT_MOTION", 2}, +}; +constexpr EnumValueSet VkVideoCodecOperationFlagBitsKHRSets[] = { + {"INVALID", 0}, +}; +constexpr EnumValueSet VkVideoChromaSubsamplingFlagBitsKHRSets[] = { + {"INVALID", 0}, + {"MONOCHROME", 0x00000001}, + {"420", 0x00000002}, + {"422", 0x00000004}, + {"444", 0x00000008}, +}; +constexpr EnumValueSet VkVideoComponentBitDepthFlagBitsKHRSets[] = { + {"INVALID", 0}, + {"8", 0x00000001}, + {"10", 0x00000004}, + {"12", 0x00000010}, +}; +constexpr EnumValueSet VkVideoCapabilityFlagBitsKHRSets[] = { + {"PROTECTED_CONTENT", 0x00000001}, + {"SEPARATE_REFERENCE_IMAGES", 0x00000002}, +}; +constexpr EnumValueSet VkVideoSessionCreateFlagBitsKHRSets[] = { + {"DEFAULT", 0}, + {"PROTECTED_CONTENT", 0x00000001}, +}; +constexpr EnumValueSet VkVideoCodingQualityPresetFlagBitsKHRSets[] = { + {"NORMAL", 0x00000001}, + {"POWER", 0x00000002}, + {"QUALITY", 0x00000004}, +}; +constexpr EnumValueSet VkVideoDecodeH264PictureLayoutFlagBitsEXTSets[] = { + {"PROGRESSIVE", 0}, + {"INTERLACED_INTERLEAVED_LINES", 0x00000001}, + {"INTERLACED_SEPARATE_PLANES", 0x00000002}, +}; +constexpr EnumValueSet VkVideoCodingControlFlagBitsKHRSets[] = { + {"DEFAULT", 0}, + {"RESET", 0x00000001}, +}; +constexpr EnumValueSet VkQueryResultStatusKHRSets[] = { + {"ERROR", -1}, + {"NOT_READY", 0}, + {"COMPLETE", 1}, +}; +constexpr EnumValueSet VkVideoDecodeFlagBitsKHRSets[] = { + {"DEFAULT", 0}, + {"RESERVED_0", 0x00000001}, +}; +constexpr EnumValueSet VkVideoEncodeFlagBitsKHRSets[] = { + {"DEFAULT", 0}, + {"RESERVED_0", 0x00000001}, +}; +constexpr EnumValueSet VkVideoEncodeRateControlFlagBitsKHRSets[] = { + {"DEFAULT", 0}, + {"RESET", 0x00000001}, +}; +constexpr EnumValueSet VkVideoEncodeRateControlModeFlagBitsKHRSets[] = { + {"NONE", 0}, + {"CBR", 1}, + {"VBR", 2}, +}; +constexpr EnumValueSet VkVideoEncodeH264CapabilityFlagBitsEXTSets[] = { + {"CABAC", 0x00000001}, + {"CAVLC", 0x00000002}, + {"WEIGHTED_BI_PRED_IMPLICIT", 0x00000004}, + {"TRANSFORM_8X8", 0x00000008}, + {"CHROMA_QP_OFFSET", 0x00000010}, + {"SECOND_CHROMA_QP_OFFSET", 0x00000020}, + {"DEBLOCKING_FILTER_DISABLED", 0x00000040}, + {"DEBLOCKING_FILTER_ENABLED", 0x00000080}, + {"DEBLOCKING_FILTER_PARTIAL", 0x00000100}, + {"MULTIPLE_SLICE_PER_FRAME", 0x00000200}, + {"EVENLY_DISTRIBUTED_SLICE_SIZE", 0x00000400}, +}; +constexpr EnumValueSet VkVideoEncodeH264InputModeFlagBitsEXTSets[] = { + {"FRAME", 0x00000001}, + {"SLICE", 0x00000002}, + {"NON_VCL", 0x00000004}, +}; +constexpr EnumValueSet VkVideoEncodeH264OutputModeFlagBitsEXTSets[] = { + {"FRAME", 0x00000001}, + {"SLICE", 0x00000002}, + {"NON_VCL", 0x00000004}, +}; +constexpr EnumValueSet VkVideoEncodeH264CreateFlagBitsEXTSets[] = { + {"DEFAULT", 0}, + {"RESERVED_0", 0x00000001}, +}; +constexpr EnumValueSet VkImageConstraintsInfoFlagBitsFUCHSIASets[] = { + {"CPU_READ_RARELY", 0x00000001}, + {"CPU_READ_OFTEN", 0x00000002}, + {"CPU_WRITE_RARELY", 0x00000004}, + {"CPU_WRITE_OFTEN", 0x00000008}, + {"PROTECTED_OPTIONAL", 0x00000010}, +}; +constexpr EnumValueSet VkFormatFeatureFlagBits2KHRSets[] = { + {"VK_FORMAT_FEATURE_2_SAMPLED_IMAGE", 0x00000001}, + {"VK_FORMAT_FEATURE_2_STORAGE_IMAGE", 0x00000002}, + {"VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC", 0x00000004}, + {"VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER", 0x00000008}, + {"VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER", 0x00000010}, + {"VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC", 0x00000020}, + {"VK_FORMAT_FEATURE_2_VERTEX_BUFFER", 0x00000040}, + {"VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT", 0x00000080}, + {"VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND", 0x00000100}, + {"VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT", 0x00000200}, + {"VK_FORMAT_FEATURE_2_BLIT_SRC", 0x00000400}, + {"VK_FORMAT_FEATURE_2_BLIT_DST", 0x00000800}, + {"VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR", 0x00001000}, + {"VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC", 0x00002000}, + {"VK_FORMAT_FEATURE_2_TRANSFER_SRC", 0x00004000}, + {"VK_FORMAT_FEATURE_2_TRANSFER_DST", 0x00008000}, + {"VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX", 0x00010000}, + {"VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES", 0x00020000}, + {"VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER", 0x00040000}, + {"VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER", 0x00080000}, + {"VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT", 0x00100000}, + {"VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE", 0x00200000}, + {"VK_FORMAT_FEATURE_2_DISJOINT", 0x00400000}, + {"VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES", 0x00800000}, + {"VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT", 0x80000000}, + {"VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT", 0x00000001}, + {"VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON", 0x00000002}, +}; +constexpr EnumValueSet VkVideoEncodeH265InputModeFlagBitsEXTSets[] = { + {"FRAME", 0x00000001}, + {"SLICE", 0x00000002}, + {"NON_VCL", 0x00000004}, +}; +constexpr EnumValueSet VkVideoEncodeH265OutputModeFlagBitsEXTSets[] = { + {"FRAME", 0x00000001}, + {"SLICE", 0x00000002}, + {"NON_VCL", 0x00000004}, +}; +constexpr EnumValueSet VkVideoEncodeH265CtbSizeFlagBitsEXTSets[] = { + {"8", 0x00000001}, + {"16", 0x00000002}, + {"32", 0x00000004}, + {"64", 0x00000008}, +}; +constexpr EnumValueSet VkRenderingFlagBitsKHRSets[] = { + {"CONTENTS_SECONDARY_COMMAND_BUFFERS", 0x00000001}, + {"SUSPENDING", 0x00000002}, + {"RESUMING", 0x00000004}, +}; + +struct EnumType { + std::string_view name; + EnumValueSet const* data; + uint32_t count; +}; + +constexpr std::array<EnumType, 209> enumTypes = {{ + {"VkImageLayout", VkImageLayoutSets, 9}, + {"VkAttachmentLoadOp", VkAttachmentLoadOpSets, 3}, + {"VkAttachmentStoreOp", VkAttachmentStoreOpSets, 2}, + {"VkImageType", VkImageTypeSets, 3}, + {"VkImageTiling", VkImageTilingSets, 2}, + {"VkImageViewType", VkImageViewTypeSets, 7}, + {"VkCommandBufferLevel", VkCommandBufferLevelSets, 2}, + {"VkComponentSwizzle", VkComponentSwizzleSets, 7}, + {"VkDescriptorType", VkDescriptorTypeSets, 11}, + {"VkQueryType", VkQueryTypeSets, 3}, + {"VkBorderColor", VkBorderColorSets, 6}, + {"VkPipelineBindPoint", VkPipelineBindPointSets, 2}, + {"VkPipelineCacheHeaderVersion", VkPipelineCacheHeaderVersionSets, 1}, + {"VkPipelineCacheCreateFlagBits", nullptr, 0}, + {"VkPrimitiveTopology", VkPrimitiveTopologySets, 11}, + {"VkSharingMode", VkSharingModeSets, 2}, + {"VkIndexType", VkIndexTypeSets, 2}, + {"VkFilter", VkFilterSets, 2}, + {"VkSamplerMipmapMode", VkSamplerMipmapModeSets, 2}, + {"VkSamplerAddressMode", VkSamplerAddressModeSets, 4}, + {"VkCompareOp", VkCompareOpSets, 8}, + {"VkPolygonMode", VkPolygonModeSets, 3}, + {"VkFrontFace", VkFrontFaceSets, 2}, + {"VkBlendFactor", VkBlendFactorSets, 19}, + {"VkBlendOp", VkBlendOpSets, 5}, + {"VkStencilOp", VkStencilOpSets, 8}, + {"VkLogicOp", VkLogicOpSets, 16}, + {"VkInternalAllocationType", VkInternalAllocationTypeSets, 1}, + {"VkSystemAllocationScope", VkSystemAllocationScopeSets, 5}, + {"VkPhysicalDeviceType", VkPhysicalDeviceTypeSets, 5}, + {"VkVertexInputRate", VkVertexInputRateSets, 2}, + {"VkFormat", VkFormatSets, 185}, + {"VkStructureType", VkStructureTypeSets, 49}, + {"VkSubpassContents", VkSubpassContentsSets, 2}, + {"VkDynamicState", VkDynamicStateSets, 9}, + {"VkDescriptorUpdateTemplateType", VkDescriptorUpdateTemplateTypeSets, 1}, + {"VkObjectType", VkObjectTypeSets, 26}, + {"VkQueueFlagBits", VkQueueFlagBitsSets, 4}, + {"VkCullModeFlagBits", VkCullModeFlagBitsSets, 4}, + {"VkRenderPassCreateFlagBits", nullptr, 0}, + {"VkDeviceQueueCreateFlagBits", nullptr, 0}, + {"VkMemoryPropertyFlagBits", VkMemoryPropertyFlagBitsSets, 5}, + {"VkMemoryHeapFlagBits", VkMemoryHeapFlagBitsSets, 1}, + {"VkAccessFlagBits", VkAccessFlagBitsSets, 17}, + {"VkBufferUsageFlagBits", VkBufferUsageFlagBitsSets, 9}, + {"VkBufferCreateFlagBits", VkBufferCreateFlagBitsSets, 3}, + {"VkShaderStageFlagBits", VkShaderStageFlagBitsSets, 8}, + {"VkImageUsageFlagBits", VkImageUsageFlagBitsSets, 8}, + {"VkImageCreateFlagBits", VkImageCreateFlagBitsSets, 5}, + {"VkImageViewCreateFlagBits", nullptr, 0}, + {"VkSamplerCreateFlagBits", nullptr, 0}, + {"VkPipelineCreateFlagBits", VkPipelineCreateFlagBitsSets, 3}, + {"VkPipelineShaderStageCreateFlagBits", nullptr, 0}, + {"VkColorComponentFlagBits", VkColorComponentFlagBitsSets, 4}, + {"VkFenceCreateFlagBits", VkFenceCreateFlagBitsSets, 1}, + {"VkSemaphoreCreateFlagBits", nullptr, 0}, + {"VkFormatFeatureFlagBits", VkFormatFeatureFlagBitsSets, 13}, + {"VkQueryControlFlagBits", VkQueryControlFlagBitsSets, 1}, + {"VkQueryResultFlagBits", VkQueryResultFlagBitsSets, 4}, + {"VkCommandBufferUsageFlagBits", VkCommandBufferUsageFlagBitsSets, 3}, + {"VkQueryPipelineStatisticFlagBits", VkQueryPipelineStatisticFlagBitsSets, 11}, + {"VkImageAspectFlagBits", VkImageAspectFlagBitsSets, 4}, + {"VkSparseImageFormatFlagBits", VkSparseImageFormatFlagBitsSets, 3}, + {"VkSparseMemoryBindFlagBits", VkSparseMemoryBindFlagBitsSets, 1}, + {"VkPipelineStageFlagBits", VkPipelineStageFlagBitsSets, 17}, + {"VkCommandPoolCreateFlagBits", VkCommandPoolCreateFlagBitsSets, 2}, + {"VkCommandPoolResetFlagBits", VkCommandPoolResetFlagBitsSets, 1}, + {"VkCommandBufferResetFlagBits", VkCommandBufferResetFlagBitsSets, 1}, + {"VkSampleCountFlagBits", VkSampleCountFlagBitsSets, 7}, + {"VkAttachmentDescriptionFlagBits", VkAttachmentDescriptionFlagBitsSets, 1}, + {"VkStencilFaceFlagBits", VkStencilFaceFlagBitsSets, 4}, + {"VkDescriptorPoolCreateFlagBits", VkDescriptorPoolCreateFlagBitsSets, 1}, + {"VkDependencyFlagBits", VkDependencyFlagBitsSets, 1}, + {"VkSemaphoreType", VkSemaphoreTypeSets, 2}, + {"VkSemaphoreWaitFlagBits", VkSemaphoreWaitFlagBitsSets, 1}, + {"VkPresentModeKHR", VkPresentModeKHRSets, 4}, + {"VkColorSpaceKHR", VkColorSpaceKHRSets, 2}, + {"VkDisplayPlaneAlphaFlagBitsKHR", VkDisplayPlaneAlphaFlagBitsKHRSets, 4}, + {"VkCompositeAlphaFlagBitsKHR", VkCompositeAlphaFlagBitsKHRSets, 4}, + {"VkSurfaceTransformFlagBitsKHR", VkSurfaceTransformFlagBitsKHRSets, 9}, + {"VkSwapchainImageUsageFlagBitsANDROID", VkSwapchainImageUsageFlagBitsANDROIDSets, 1}, + {"VkTimeDomainEXT", VkTimeDomainEXTSets, 4}, + {"VkDebugReportFlagBitsEXT", VkDebugReportFlagBitsEXTSets, 5}, + {"VkDebugReportObjectTypeEXT", VkDebugReportObjectTypeEXTSets, 34}, + {"VkDeviceMemoryReportEventTypeEXT", VkDeviceMemoryReportEventTypeEXTSets, 5}, + {"VkRasterizationOrderAMD", VkRasterizationOrderAMDSets, 2}, + {"VkExternalMemoryHandleTypeFlagBitsNV", VkExternalMemoryHandleTypeFlagBitsNVSets, 4}, + {"VkExternalMemoryFeatureFlagBitsNV", VkExternalMemoryFeatureFlagBitsNVSets, 3}, + {"VkValidationCheckEXT", VkValidationCheckEXTSets, 2}, + {"VkValidationFeatureEnableEXT", VkValidationFeatureEnableEXTSets, 5}, + {"VkValidationFeatureDisableEXT", VkValidationFeatureDisableEXTSets, 8}, + {"VkSubgroupFeatureFlagBits", VkSubgroupFeatureFlagBitsSets, 8}, + {"VkIndirectCommandsLayoutUsageFlagBitsNV", VkIndirectCommandsLayoutUsageFlagBitsNVSets, 3}, + {"VkIndirectStateFlagBitsNV", VkIndirectStateFlagBitsNVSets, 1}, + {"VkIndirectCommandsTokenTypeNV", VkIndirectCommandsTokenTypeNVSets, 8}, + {"VkPrivateDataSlotCreateFlagBitsEXT", nullptr, 0}, + {"VkDescriptorSetLayoutCreateFlagBits", nullptr, 0}, + {"VkExternalMemoryHandleTypeFlagBits", VkExternalMemoryHandleTypeFlagBitsSets, 7}, + {"VkExternalMemoryFeatureFlagBits", VkExternalMemoryFeatureFlagBitsSets, 3}, + {"VkExternalSemaphoreHandleTypeFlagBits", VkExternalSemaphoreHandleTypeFlagBitsSets, 6}, + {"VkExternalSemaphoreFeatureFlagBits", VkExternalSemaphoreFeatureFlagBitsSets, 2}, + {"VkSemaphoreImportFlagBits", VkSemaphoreImportFlagBitsSets, 1}, + {"VkExternalFenceHandleTypeFlagBits", VkExternalFenceHandleTypeFlagBitsSets, 4}, + {"VkExternalFenceFeatureFlagBits", VkExternalFenceFeatureFlagBitsSets, 2}, + {"VkFenceImportFlagBits", VkFenceImportFlagBitsSets, 1}, + {"VkSurfaceCounterFlagBitsEXT", VkSurfaceCounterFlagBitsEXTSets, 2}, + {"VkDisplayPowerStateEXT", VkDisplayPowerStateEXTSets, 3}, + {"VkDeviceEventTypeEXT", VkDeviceEventTypeEXTSets, 1}, + {"VkDisplayEventTypeEXT", VkDisplayEventTypeEXTSets, 1}, + {"VkPeerMemoryFeatureFlagBits", VkPeerMemoryFeatureFlagBitsSets, 4}, + {"VkMemoryAllocateFlagBits", VkMemoryAllocateFlagBitsSets, 1}, + {"VkDeviceGroupPresentModeFlagBitsKHR", VkDeviceGroupPresentModeFlagBitsKHRSets, 4}, + {"VkSwapchainCreateFlagBitsKHR", nullptr, 0}, + {"VkViewportCoordinateSwizzleNV", VkViewportCoordinateSwizzleNVSets, 8}, + {"VkDiscardRectangleModeEXT", VkDiscardRectangleModeEXTSets, 2}, + {"VkSubpassDescriptionFlagBits", nullptr, 0}, + {"VkPointClippingBehavior", VkPointClippingBehaviorSets, 2}, + {"VkSamplerReductionMode", VkSamplerReductionModeSets, 3}, + {"VkTessellationDomainOrigin", VkTessellationDomainOriginSets, 2}, + {"VkSamplerYcbcrModelConversion", VkSamplerYcbcrModelConversionSets, 5}, + {"VkSamplerYcbcrRange", VkSamplerYcbcrRangeSets, 2}, + {"VkChromaLocation", VkChromaLocationSets, 2}, + {"VkBlendOverlapEXT", VkBlendOverlapEXTSets, 3}, + {"VkCoverageModulationModeNV", VkCoverageModulationModeNVSets, 4}, + {"VkCoverageReductionModeNV", VkCoverageReductionModeNVSets, 2}, + {"VkValidationCacheHeaderVersionEXT", VkValidationCacheHeaderVersionEXTSets, 1}, + {"VkShaderInfoTypeAMD", VkShaderInfoTypeAMDSets, 3}, + {"VkQueueGlobalPriorityEXT", VkQueueGlobalPriorityEXTSets, 4}, + {"VkDebugUtilsMessageSeverityFlagBitsEXT", VkDebugUtilsMessageSeverityFlagBitsEXTSets, 4}, + {"VkDebugUtilsMessageTypeFlagBitsEXT", VkDebugUtilsMessageTypeFlagBitsEXTSets, 3}, + {"VkConservativeRasterizationModeEXT", VkConservativeRasterizationModeEXTSets, 3}, + {"VkDescriptorBindingFlagBits", VkDescriptorBindingFlagBitsSets, 4}, + {"VkVendorId", VkVendorIdSets, 6}, + {"VkDriverId", VkDriverIdSets, 20}, + {"VkConditionalRenderingFlagBitsEXT", VkConditionalRenderingFlagBitsEXTSets, 1}, + {"VkResolveModeFlagBits", VkResolveModeFlagBitsSets, 5}, + {"VkShadingRatePaletteEntryNV", VkShadingRatePaletteEntryNVSets, 12}, + {"VkCoarseSampleOrderTypeNV", VkCoarseSampleOrderTypeNVSets, 4}, + {"VkGeometryInstanceFlagBitsKHR", VkGeometryInstanceFlagBitsKHRSets, 5}, + {"VkGeometryFlagBitsKHR", VkGeometryFlagBitsKHRSets, 2}, + {"VkBuildAccelerationStructureFlagBitsKHR", VkBuildAccelerationStructureFlagBitsKHRSets, 5}, + {"VkAccelerationStructureCreateFlagBitsKHR", VkAccelerationStructureCreateFlagBitsKHRSets, 1}, + {"VkCopyAccelerationStructureModeKHR", VkCopyAccelerationStructureModeKHRSets, 4}, + {"VkBuildAccelerationStructureModeKHR", VkBuildAccelerationStructureModeKHRSets, 2}, + {"VkAccelerationStructureTypeKHR", VkAccelerationStructureTypeKHRSets, 3}, + {"VkGeometryTypeKHR", VkGeometryTypeKHRSets, 3}, + {"VkAccelerationStructureMemoryRequirementsTypeNV", VkAccelerationStructureMemoryRequirementsTypeNVSets, 3}, + {"VkAccelerationStructureBuildTypeKHR", VkAccelerationStructureBuildTypeKHRSets, 3}, + {"VkRayTracingShaderGroupTypeKHR", VkRayTracingShaderGroupTypeKHRSets, 3}, + {"VkAccelerationStructureCompatibilityKHR", VkAccelerationStructureCompatibilityKHRSets, 2}, + {"VkShaderGroupShaderKHR", VkShaderGroupShaderKHRSets, 4}, + {"VkMemoryOverallocationBehaviorAMD", VkMemoryOverallocationBehaviorAMDSets, 3}, + {"VkFramebufferCreateFlagBits", nullptr, 0}, + {"VkScopeNV", VkScopeNVSets, 4}, + {"VkComponentTypeNV", VkComponentTypeNVSets, 11}, + {"VkDeviceDiagnosticsConfigFlagBitsNV", VkDeviceDiagnosticsConfigFlagBitsNVSets, 3}, + {"VkPipelineCreationFeedbackFlagBitsEXT", VkPipelineCreationFeedbackFlagBitsEXTSets, 3}, + {"VkFullScreenExclusiveEXT", VkFullScreenExclusiveEXTSets, 4}, + {"VkPerformanceCounterScopeKHR", VkPerformanceCounterScopeKHRSets, 6}, + {"VkPerformanceCounterUnitKHR", VkPerformanceCounterUnitKHRSets, 11}, + {"VkPerformanceCounterStorageKHR", VkPerformanceCounterStorageKHRSets, 6}, + {"VkPerformanceCounterDescriptionFlagBitsKHR", VkPerformanceCounterDescriptionFlagBitsKHRSets, 4}, + {"VkAcquireProfilingLockFlagBitsKHR", nullptr, 0}, + {"VkShaderCorePropertiesFlagBitsAMD", nullptr, 0}, + {"VkPerformanceConfigurationTypeINTEL", VkPerformanceConfigurationTypeINTELSets, 1}, + {"VkQueryPoolSamplingModeINTEL", VkQueryPoolSamplingModeINTELSets, 1}, + {"VkPerformanceOverrideTypeINTEL", VkPerformanceOverrideTypeINTELSets, 2}, + {"VkPerformanceParameterTypeINTEL", VkPerformanceParameterTypeINTELSets, 2}, + {"VkPerformanceValueTypeINTEL", VkPerformanceValueTypeINTELSets, 5}, + {"VkShaderFloatControlsIndependence", VkShaderFloatControlsIndependenceSets, 3}, + {"VkPipelineExecutableStatisticFormatKHR", VkPipelineExecutableStatisticFormatKHRSets, 4}, + {"VkLineRasterizationModeEXT", VkLineRasterizationModeEXTSets, 4}, + {"VkShaderModuleCreateFlagBits", nullptr, 0}, + {"VkPipelineCompilerControlFlagBitsAMD", nullptr, 0}, + {"VkToolPurposeFlagBitsEXT", VkToolPurposeFlagBitsEXTSets, 5}, + {"VkFragmentShadingRateCombinerOpKHR", VkFragmentShadingRateCombinerOpKHRSets, 5}, + {"VkFragmentShadingRateNV", VkFragmentShadingRateNVSets, 12}, + {"VkFragmentShadingRateTypeNV", VkFragmentShadingRateTypeNVSets, 2}, + {"VkAccessFlagBits2KHR", VkAccessFlagBits2KHRSets, 21}, + {"VkPipelineStageFlagBits2KHR", VkPipelineStageFlagBits2KHRSets, 26}, + {"VkSubmitFlagBitsKHR", VkSubmitFlagBitsKHRSets, 1}, + {"VkEventCreateFlagBits", nullptr, 0}, + {"VkPipelineLayoutCreateFlagBits", nullptr, 0}, + {"VkProvokingVertexModeEXT", VkProvokingVertexModeEXTSets, 2}, + {"VkAccelerationStructureMotionInstanceTypeNV", VkAccelerationStructureMotionInstanceTypeNVSets, 3}, + {"VkVideoCodecOperationFlagBitsKHR", VkVideoCodecOperationFlagBitsKHRSets, 1}, + {"VkVideoChromaSubsamplingFlagBitsKHR", VkVideoChromaSubsamplingFlagBitsKHRSets, 5}, + {"VkVideoComponentBitDepthFlagBitsKHR", VkVideoComponentBitDepthFlagBitsKHRSets, 4}, + {"VkVideoCapabilityFlagBitsKHR", VkVideoCapabilityFlagBitsKHRSets, 2}, + {"VkVideoSessionCreateFlagBitsKHR", VkVideoSessionCreateFlagBitsKHRSets, 2}, + {"VkVideoCodingQualityPresetFlagBitsKHR", VkVideoCodingQualityPresetFlagBitsKHRSets, 3}, + {"VkVideoDecodeH264PictureLayoutFlagBitsEXT", VkVideoDecodeH264PictureLayoutFlagBitsEXTSets, 3}, + {"VkVideoCodingControlFlagBitsKHR", VkVideoCodingControlFlagBitsKHRSets, 2}, + {"VkQueryResultStatusKHR", VkQueryResultStatusKHRSets, 3}, + {"VkVideoDecodeFlagBitsKHR", VkVideoDecodeFlagBitsKHRSets, 2}, + {"VkVideoEncodeFlagBitsKHR", VkVideoEncodeFlagBitsKHRSets, 2}, + {"VkVideoEncodeRateControlFlagBitsKHR", VkVideoEncodeRateControlFlagBitsKHRSets, 2}, + {"VkVideoEncodeRateControlModeFlagBitsKHR", VkVideoEncodeRateControlModeFlagBitsKHRSets, 3}, + {"VkVideoEncodeH264CapabilityFlagBitsEXT", VkVideoEncodeH264CapabilityFlagBitsEXTSets, 11}, + {"VkVideoEncodeH264InputModeFlagBitsEXT", VkVideoEncodeH264InputModeFlagBitsEXTSets, 3}, + {"VkVideoEncodeH264OutputModeFlagBitsEXT", VkVideoEncodeH264OutputModeFlagBitsEXTSets, 3}, + {"VkVideoEncodeH264CreateFlagBitsEXT", VkVideoEncodeH264CreateFlagBitsEXTSets, 2}, + {"VkImageFormatConstraintsFlagBitsFUCHSIA", nullptr, 0}, + {"VkImageConstraintsInfoFlagBitsFUCHSIA", VkImageConstraintsInfoFlagBitsFUCHSIASets, 5}, + {"VkFormatFeatureFlagBits2KHR", VkFormatFeatureFlagBits2KHRSets, 27}, + {"VkVideoEncodeH265InputModeFlagBitsEXT", VkVideoEncodeH265InputModeFlagBitsEXTSets, 3}, + {"VkVideoEncodeH265OutputModeFlagBitsEXT", VkVideoEncodeH265OutputModeFlagBitsEXTSets, 3}, + {"VkVideoEncodeH265CtbSizeFlagBitsEXT", VkVideoEncodeH265CtbSizeFlagBitsEXTSets, 4}, + {"VkRenderingFlagBitsKHR", VkRenderingFlagBitsKHRSets, 3}, +}}; + +/** + * @brief Removes a vendor tag from the end of the given string view + * @param view String view to remove the vendor tag from + * @return A string_view without the vendor tag, if it was suffixed + */ +std::string_view stripVendor(std::string_view view) { + for (auto const &it : vendors) { + // Don't strip if it's all that's left + if (view == it) + break; + + if (strncmp(view.data() + view.size() - it.size(), it.data(), it.size()) == 0) { + view = view.substr(0, view.size() - it.size()); + break; + } + } + + return view; +} + +/** + * @brief Strips '_BIT' from the end of a string, if there + */ +std::string_view stripBit(std::string_view view) { + if (view.size() > strlen("_BIT")) { + if (view.substr(view.size() - strlen("_BIT")) == "_BIT") { + return view.substr(0, view.size() - strlen("_BIT")); + } + } + + return view; +} + +std::tuple<EnumValueSet const *, EnumValueSet const *> getEnumType(std::string_view vkType) { + // Check for a conversion from Flags -> FlagBits + std::string localString; + if (vkType.rfind("Flags") != std::string::npos) { + localString = vkType; + auto it = localString.rfind("Flags"); + localString = localString.replace(it, strlen("Flags"), "FlagBits"); + vkType = localString; + } + + // Try the original name + for (auto const &it : enumTypes) { + if (vkType == std::string_view{it.name}) { + if (it.data == nullptr) + return std::make_tuple(nullptr, nullptr); + return std::make_tuple(it.data, it.data + it.count); + } + } + + // Try a vendor-stripped name + vkType = stripVendor(vkType); + for (auto const &it : enumTypes) { + if (vkType == std::string_view{it.name}) { + if (it.data == nullptr) + return std::make_tuple(nullptr, nullptr); + return std::make_tuple(it.data, it.data + it.count); + } + } + + return std::make_tuple(nullptr, nullptr); +} + +/** + * @brief Converts a Vulkan Flag typename into the prefix that is used for it's enums + * @param typeName Name of the type to generate the Vk enum prefix for + * @return Generated prefix string + * + * Any capitalized letters except for the first has an underscore inserted before it, an underscore + * is added to the end, and all characters are converted to upper case. + * + * It also removed the 'Flags' or 'FlagBits' suffixes. + */ +std::string processEnumPrefix(std::string_view typeName) { + // Flag Bits + std::size_t flagBitsSize = strlen("FlagBits"); + if (typeName.size() > flagBitsSize) { + if (strncmp(typeName.data() + typeName.size() - flagBitsSize, "FlagBits", flagBitsSize) == + 0) { + typeName = typeName.substr(0, typeName.size() - strlen("FlagBits")); + } + } + // Flags + std::size_t flagsSize = strlen("Flags"); + if (typeName.size() > flagsSize) { + if (strncmp(typeName.data() + typeName.size() - flagsSize, "Flags", flagsSize) == 0) { + typeName = typeName.substr(0, typeName.size() - strlen("Flags")); + } + } + + std::string retStr; + for (auto it = typeName.begin(); it != typeName.end(); ++it) { + if (it == typeName.begin()) { + retStr += ::toupper(*it); + } else if (::isupper(*it)) { + retStr += '_'; + retStr += *it; + } else { + retStr += toupper(*it); + } + } + retStr += '_'; + + return retStr; +} + +bool findValue(std::string_view findValue, + std::string_view prefix, + uint32_t *pValue, + EnumValueSet const *start, + EnumValueSet const *end) { + // Remove the vendor tag suffix if it's on the value + findValue = stripVendor(findValue); + if (findValue[findValue.size() - 1] == '_') + findValue = findValue.substr(0, findValue.size() - 1); + + // Remove '_BIT' if it's there + findValue = stripBit(findValue); + + // Iterate until we find the value + while (start != end) { + if (findValue == start->name) { + *pValue |= start->value; + return true; + } + + std::string prefixedName{prefix}; + prefixedName += start->name; + if (findValue == prefixedName) { + *pValue |= start->value; + return true; + } + + ++start; + } + + return false; +} + +/** + * @brief Takes a given string and formats it for use with parsing + * @param str The string to format + * @return Formatted string + * + * First, any non alphanumeric characters are trimmed from both ends of the string. + * After than, any spaces are replaced with underscores, and finally all the characters are + * capitalized. This will generate the string closest to the original ones found in the XML spec. + */ +std::string formatString(std::string str) { + // Trim left + std::size_t cutOffset = 0; + for (auto c : str) { + if (::isalnum(c)) + break; + else + ++cutOffset; + } + str = str.substr(cutOffset); + + // Trim right + cutOffset = 0; + for (std::size_t i = 0; i < str.size(); ++i) { + if (::isalnum(str[i])) + cutOffset = i + 1; + } + str = str.substr(0, cutOffset); + + std::replace(str.begin(), str.end(), ' ', '_'); + std::for_each(str.begin(), str.end(), [](char &c) { c = ::toupper(c); }); + + return str; +} + +bool serializeBitmask(std::string_view vkType, uint32_t vkValue, std::string *pString) { + auto [end, start] = getEnumType(vkType); + --end; + --start; + + if(start == end) { + // If this is a non-existing bitmask, then return an empty string + *pString = {}; + return true; + } + + std::string retStr; + while (start != end) { + if(vkValue == 0 && !retStr.empty()) { + break; + } + if ((start->value & vkValue) == start->value) { + // Found a compatible bit mask, add it + if (!retStr.empty()) { + retStr += " | "; + } + retStr += start->name; + vkValue = vkValue ^ start->value; + } + + --start; + } + + if (vkValue != 0 || retStr.empty()) { + // Failed to find a valid bitmask for the value + return false; + } + + *pString = retStr; + return true; +} + +bool serializeEnum(std::string_view vkType, uint32_t vkValue, std::string *pString) { + auto [start, end] = getEnumType(vkType); + + while (start != end) { + if (start->value == vkValue) { + *pString = start->name; + return true; + } + + ++start; + } + + return false; +} + +bool parseBitmask(std::string_view vkType, std::string_view vkString, uint32_t *pValue) { + auto [start, end] = getEnumType(vkType); + std::string prefix = processEnumPrefix(stripVendor(vkType)); + uint32_t retVal = 0; + + auto startCh = vkString.begin(); + auto endCh = startCh; + for (; endCh != vkString.end(); ++endCh) { + if (*endCh == '|') { + std::string token(startCh, endCh); + token = formatString(token); + + bool foundVal = findValue(token, prefix, &retVal, start, end); + if (!foundVal) + return false; + + startCh = endCh + 1; + } + } + if (startCh != endCh) { + std::string token(startCh, endCh); + token = formatString(token); + + bool foundVal = findValue(token, prefix, &retVal, start, end); + if (!foundVal) + return false; + } + + *pValue = retVal; + return true; +} + +bool parseEnum(std::string_view vkType, std::string_view vkString, uint32_t *pValue) { + auto [start, end] = getEnumType(vkType); + std::string prefix = processEnumPrefix(stripVendor(vkType)); + uint32_t retVal = 0; + + std::string token = formatString(std::string{vkString}); + bool found = findValue(token, prefix, &retVal, start, end); + if (found) { + *pValue = retVal; + } + return found; +} + +} // namespace + +bool vk_serialize(std::string_view vkType, uint32_t vkValue, std::string *pString) { + if (vkType.empty()) { + return false; + } + + if (vkType.find("Flags") != std::string::npos || + vkType.find("FlagBits") != std::string::npos) { + return serializeBitmask(vkType, vkValue, pString); + } + + return serializeEnum(vkType, vkValue, pString); +} + +bool vk_parse(std::string_view vkType, std::string vkString, uint32_t *pValue) { + if (vkType.empty()) { + return false; + } + if(vkString.empty()) { + *pValue = 0; + return true; + } + + if (vkType.find("Flags") != std::string::npos || + vkType.find("FlagBits") != std::string::npos) { + return parseBitmask(vkType, vkString, pValue); + } + + return parseEnum(vkType, vkString, pValue); +} + +#endif // VK_VALUE_SERIALIZATION_CONFIG_MAIN +#endif // VK_VALUE_SERIALIZATION_V198_HPP diff --git a/include/vk_equality_checks.hpp b/include/vk_equality_checks.hpp index 8fa42eaa726fe0add910e431501179029bdd5d20..759dbf8a7660904238efe454401c6072ce606195 100644 --- a/include/vk_equality_checks.hpp +++ b/include/vk_equality_checks.hpp @@ -36,6 +36,9 @@ #include <vulkan/vulkan.h> // Delegate to header specific to the local Vulkan header version +#if VK_HEADER_VERSION == 198 + #include "detail_equality_checks/vk_equality_checks_v198.hpp" +#endif #if VK_HEADER_VERSION == 197 #include "detail_equality_checks/vk_equality_checks_v197.hpp" #endif diff --git a/include/vk_error_code.hpp b/include/vk_error_code.hpp index 775c4f8547ba722e58418134c0170330783ff3ec..cfbe96c1f155bd2791c49e1fedcdd1f1d5b60e47 100644 --- a/include/vk_error_code.hpp +++ b/include/vk_error_code.hpp @@ -36,6 +36,9 @@ #include <vulkan/vulkan.h> // Delegate to header specific to the local Vulkan header version +#if VK_HEADER_VERSION == 198 + #include "detail_error_code/vk_error_code_v198.hpp" +#endif #if VK_HEADER_VERSION == 197 #include "detail_error_code/vk_error_code_v197.hpp" #endif diff --git a/include/vk_struct_cleanup.hpp b/include/vk_struct_cleanup.hpp index 1998b6cd2c6094b018b55b7cab190a9f46dda816..458dc39be2b5688276995f4eece36c354528958d 100644 --- a/include/vk_struct_cleanup.hpp +++ b/include/vk_struct_cleanup.hpp @@ -36,6 +36,9 @@ #include <vulkan/vulkan.h> // Delegate to header specific to the local Vulkan header version +#if VK_HEADER_VERSION == 198 + #include "detail_struct_cleanup/vk_struct_cleanup_v198.hpp" +#endif #if VK_HEADER_VERSION == 197 #include "detail_struct_cleanup/vk_struct_cleanup_v197.hpp" #endif diff --git a/include/vk_value_serialization.hpp b/include/vk_value_serialization.hpp index f751fcdfee81616a20295396b06746a8284c39db..d18b9b2e8d49cb576a0ea3c43b45862b75453b52 100644 --- a/include/vk_value_serialization.hpp +++ b/include/vk_value_serialization.hpp @@ -36,6 +36,9 @@ #include <vulkan/vulkan.h> // Delegate to header specific to the local Vulkan header version +#if VK_HEADER_VERSION == 198 + #include "detail_value_serialization/vk_value_serialization_v198.hpp" +#endif #if VK_HEADER_VERSION == 197 #include "detail_value_serialization/vk_value_serialization_v197.hpp" #endif