Home | History | Annotate | Download | only in include
      1 /* THIS FILE IS GENERATED.  DO NOT EDIT. */
      2 
      3 /*
      4  * Vulkan
      5  *
      6  * Copyright (c) 2015-2016 The Khronos Group Inc.
      7  * Copyright (c) 2015-2016 Valve Corporation.
      8  * Copyright (c) 2015-2016 LunarG, Inc.
      9  * Copyright (c) 2015-2016 Google Inc.
     10  *
     11  * Licensed under the Apache License, Version 2.0 (the "License");
     12  * you may not use this file except in compliance with the License.
     13  * You may obtain a copy of the License at
     14  *
     15  *     http://www.apache.org/licenses/LICENSE-2.0
     16  *
     17  * Unless required by applicable law or agreed to in writing, software
     18  * distributed under the License is distributed on an "AS IS" BASIS,
     19  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     20  * See the License for the specific language governing permissions and
     21  * limitations under the License.
     22  *
     23  * Author: Courtney Goeltzenleuchter <courtney (at) LunarG.com>
     24  * Author: Tobin Ehlis <tobin (at) lunarg.com>
     25  */
     26 //#includes, #defines, globals and such...
     27 #include <vulkan/vulkan.h>
     28 #include <vk_enum_string_helper.h>
     29 #include <stdint.h>
     30 #include <cinttypes>
     31 #include <stdio.h>
     32 #include <stdlib.h>
     33 #include "vk_enum_validate_helper.h"
     34 
     35 // Function Prototypes
     36 uint32_t vk_validate_vkallocationcallbacks(const VkAllocationCallbacks* pStruct);
     37 #ifdef VK_USE_PLATFORM_ANDROID_KHR
     38 uint32_t vk_validate_vkandroidsurfacecreateinfokhr(const VkAndroidSurfaceCreateInfoKHR* pStruct);
     39 #endif //VK_USE_PLATFORM_ANDROID_KHR
     40 uint32_t vk_validate_vkapplicationinfo(const VkApplicationInfo* pStruct);
     41 uint32_t vk_validate_vkattachmentdescription(const VkAttachmentDescription* pStruct);
     42 uint32_t vk_validate_vkattachmentreference(const VkAttachmentReference* pStruct);
     43 uint32_t vk_validate_vkbindsparseinfo(const VkBindSparseInfo* pStruct);
     44 uint32_t vk_validate_vkbuffercopy(const VkBufferCopy* pStruct);
     45 uint32_t vk_validate_vkbuffercreateinfo(const VkBufferCreateInfo* pStruct);
     46 uint32_t vk_validate_vkbufferimagecopy(const VkBufferImageCopy* pStruct);
     47 uint32_t vk_validate_vkbuffermemorybarrier(const VkBufferMemoryBarrier* pStruct);
     48 uint32_t vk_validate_vkbufferviewcreateinfo(const VkBufferViewCreateInfo* pStruct);
     49 uint32_t vk_validate_vkclearattachment(const VkClearAttachment* pStruct);
     50 uint32_t vk_validate_vkclearcolorvalue(const VkClearColorValue* pStruct);
     51 uint32_t vk_validate_vkcleardepthstencilvalue(const VkClearDepthStencilValue* pStruct);
     52 uint32_t vk_validate_vkclearrect(const VkClearRect* pStruct);
     53 uint32_t vk_validate_vkclearvalue(const VkClearValue* pStruct);
     54 uint32_t vk_validate_vkcommandbufferallocateinfo(const VkCommandBufferAllocateInfo* pStruct);
     55 uint32_t vk_validate_vkcommandbufferbegininfo(const VkCommandBufferBeginInfo* pStruct);
     56 uint32_t vk_validate_vkcommandbufferinheritanceinfo(const VkCommandBufferInheritanceInfo* pStruct);
     57 uint32_t vk_validate_vkcommandpoolcreateinfo(const VkCommandPoolCreateInfo* pStruct);
     58 uint32_t vk_validate_vkcomponentmapping(const VkComponentMapping* pStruct);
     59 uint32_t vk_validate_vkcomputepipelinecreateinfo(const VkComputePipelineCreateInfo* pStruct);
     60 uint32_t vk_validate_vkcopydescriptorset(const VkCopyDescriptorSet* pStruct);
     61 uint32_t vk_validate_vkdebugmarkermarkerinfoext(const VkDebugMarkerMarkerInfoEXT* pStruct);
     62 uint32_t vk_validate_vkdebugmarkerobjectnameinfoext(const VkDebugMarkerObjectNameInfoEXT* pStruct);
     63 uint32_t vk_validate_vkdebugmarkerobjecttaginfoext(const VkDebugMarkerObjectTagInfoEXT* pStruct);
     64 uint32_t vk_validate_vkdebugreportcallbackcreateinfoext(const VkDebugReportCallbackCreateInfoEXT* pStruct);
     65 uint32_t vk_validate_vkdescriptorbufferinfo(const VkDescriptorBufferInfo* pStruct);
     66 uint32_t vk_validate_vkdescriptorimageinfo(const VkDescriptorImageInfo* pStruct);
     67 uint32_t vk_validate_vkdescriptorpoolcreateinfo(const VkDescriptorPoolCreateInfo* pStruct);
     68 uint32_t vk_validate_vkdescriptorpoolsize(const VkDescriptorPoolSize* pStruct);
     69 uint32_t vk_validate_vkdescriptorsetallocateinfo(const VkDescriptorSetAllocateInfo* pStruct);
     70 uint32_t vk_validate_vkdescriptorsetlayoutbinding(const VkDescriptorSetLayoutBinding* pStruct);
     71 uint32_t vk_validate_vkdescriptorsetlayoutcreateinfo(const VkDescriptorSetLayoutCreateInfo* pStruct);
     72 uint32_t vk_validate_vkdevicecreateinfo(const VkDeviceCreateInfo* pStruct);
     73 uint32_t vk_validate_vkdevicequeuecreateinfo(const VkDeviceQueueCreateInfo* pStruct);
     74 uint32_t vk_validate_vkdispatchindirectcommand(const VkDispatchIndirectCommand* pStruct);
     75 uint32_t vk_validate_vkdisplaymodecreateinfokhr(const VkDisplayModeCreateInfoKHR* pStruct);
     76 uint32_t vk_validate_vkdisplaymodeparameterskhr(const VkDisplayModeParametersKHR* pStruct);
     77 uint32_t vk_validate_vkdisplaymodepropertieskhr(const VkDisplayModePropertiesKHR* pStruct);
     78 uint32_t vk_validate_vkdisplayplanecapabilitieskhr(const VkDisplayPlaneCapabilitiesKHR* pStruct);
     79 uint32_t vk_validate_vkdisplayplanepropertieskhr(const VkDisplayPlanePropertiesKHR* pStruct);
     80 uint32_t vk_validate_vkdisplaypresentinfokhr(const VkDisplayPresentInfoKHR* pStruct);
     81 uint32_t vk_validate_vkdisplaypropertieskhr(const VkDisplayPropertiesKHR* pStruct);
     82 uint32_t vk_validate_vkdisplaysurfacecreateinfokhr(const VkDisplaySurfaceCreateInfoKHR* pStruct);
     83 uint32_t vk_validate_vkdrawindexedindirectcommand(const VkDrawIndexedIndirectCommand* pStruct);
     84 uint32_t vk_validate_vkdrawindirectcommand(const VkDrawIndirectCommand* pStruct);
     85 uint32_t vk_validate_vkeventcreateinfo(const VkEventCreateInfo* pStruct);
     86 uint32_t vk_validate_vkextensionproperties(const VkExtensionProperties* pStruct);
     87 uint32_t vk_validate_vkextent2d(const VkExtent2D* pStruct);
     88 uint32_t vk_validate_vkextent3d(const VkExtent3D* pStruct);
     89 uint32_t vk_validate_vkfencecreateinfo(const VkFenceCreateInfo* pStruct);
     90 uint32_t vk_validate_vkformatproperties(const VkFormatProperties* pStruct);
     91 uint32_t vk_validate_vkframebuffercreateinfo(const VkFramebufferCreateInfo* pStruct);
     92 uint32_t vk_validate_vkgraphicspipelinecreateinfo(const VkGraphicsPipelineCreateInfo* pStruct);
     93 uint32_t vk_validate_vkimageblit(const VkImageBlit* pStruct);
     94 uint32_t vk_validate_vkimagecopy(const VkImageCopy* pStruct);
     95 uint32_t vk_validate_vkimagecreateinfo(const VkImageCreateInfo* pStruct);
     96 uint32_t vk_validate_vkimageformatproperties(const VkImageFormatProperties* pStruct);
     97 uint32_t vk_validate_vkimagememorybarrier(const VkImageMemoryBarrier* pStruct);
     98 uint32_t vk_validate_vkimageresolve(const VkImageResolve* pStruct);
     99 uint32_t vk_validate_vkimagesubresource(const VkImageSubresource* pStruct);
    100 uint32_t vk_validate_vkimagesubresourcelayers(const VkImageSubresourceLayers* pStruct);
    101 uint32_t vk_validate_vkimagesubresourcerange(const VkImageSubresourceRange* pStruct);
    102 uint32_t vk_validate_vkimageviewcreateinfo(const VkImageViewCreateInfo* pStruct);
    103 uint32_t vk_validate_vkinstancecreateinfo(const VkInstanceCreateInfo* pStruct);
    104 uint32_t vk_validate_vklayerproperties(const VkLayerProperties* pStruct);
    105 uint32_t vk_validate_vkmappedmemoryrange(const VkMappedMemoryRange* pStruct);
    106 uint32_t vk_validate_vkmemoryallocateinfo(const VkMemoryAllocateInfo* pStruct);
    107 uint32_t vk_validate_vkmemorybarrier(const VkMemoryBarrier* pStruct);
    108 uint32_t vk_validate_vkmemoryheap(const VkMemoryHeap* pStruct);
    109 uint32_t vk_validate_vkmemoryrequirements(const VkMemoryRequirements* pStruct);
    110 uint32_t vk_validate_vkmemorytype(const VkMemoryType* pStruct);
    111 #ifdef VK_USE_PLATFORM_MIR_KHR
    112 uint32_t vk_validate_vkmirsurfacecreateinfokhr(const VkMirSurfaceCreateInfoKHR* pStruct);
    113 #endif //VK_USE_PLATFORM_MIR_KHR
    114 uint32_t vk_validate_vkoffset2d(const VkOffset2D* pStruct);
    115 uint32_t vk_validate_vkoffset3d(const VkOffset3D* pStruct);
    116 uint32_t vk_validate_vkphysicaldevicefeatures(const VkPhysicalDeviceFeatures* pStruct);
    117 uint32_t vk_validate_vkphysicaldevicelimits(const VkPhysicalDeviceLimits* pStruct);
    118 uint32_t vk_validate_vkphysicaldevicememoryproperties(const VkPhysicalDeviceMemoryProperties* pStruct);
    119 uint32_t vk_validate_vkphysicaldeviceproperties(const VkPhysicalDeviceProperties* pStruct);
    120 uint32_t vk_validate_vkphysicaldevicesparseproperties(const VkPhysicalDeviceSparseProperties* pStruct);
    121 uint32_t vk_validate_vkpipelinecachecreateinfo(const VkPipelineCacheCreateInfo* pStruct);
    122 uint32_t vk_validate_vkpipelinecolorblendattachmentstate(const VkPipelineColorBlendAttachmentState* pStruct);
    123 uint32_t vk_validate_vkpipelinecolorblendstatecreateinfo(const VkPipelineColorBlendStateCreateInfo* pStruct);
    124 uint32_t vk_validate_vkpipelinedepthstencilstatecreateinfo(const VkPipelineDepthStencilStateCreateInfo* pStruct);
    125 uint32_t vk_validate_vkpipelinedynamicstatecreateinfo(const VkPipelineDynamicStateCreateInfo* pStruct);
    126 uint32_t vk_validate_vkpipelineinputassemblystatecreateinfo(const VkPipelineInputAssemblyStateCreateInfo* pStruct);
    127 uint32_t vk_validate_vkpipelinelayoutcreateinfo(const VkPipelineLayoutCreateInfo* pStruct);
    128 uint32_t vk_validate_vkpipelinemultisamplestatecreateinfo(const VkPipelineMultisampleStateCreateInfo* pStruct);
    129 uint32_t vk_validate_vkpipelinerasterizationstatecreateinfo(const VkPipelineRasterizationStateCreateInfo* pStruct);
    130 uint32_t vk_validate_vkpipelinerasterizationstaterasterizationorderamd(const VkPipelineRasterizationStateRasterizationOrderAMD* pStruct);
    131 uint32_t vk_validate_vkpipelineshaderstagecreateinfo(const VkPipelineShaderStageCreateInfo* pStruct);
    132 uint32_t vk_validate_vkpipelinetessellationstatecreateinfo(const VkPipelineTessellationStateCreateInfo* pStruct);
    133 uint32_t vk_validate_vkpipelinevertexinputstatecreateinfo(const VkPipelineVertexInputStateCreateInfo* pStruct);
    134 uint32_t vk_validate_vkpipelineviewportstatecreateinfo(const VkPipelineViewportStateCreateInfo* pStruct);
    135 uint32_t vk_validate_vkpresentinfokhr(const VkPresentInfoKHR* pStruct);
    136 uint32_t vk_validate_vkpushconstantrange(const VkPushConstantRange* pStruct);
    137 uint32_t vk_validate_vkquerypoolcreateinfo(const VkQueryPoolCreateInfo* pStruct);
    138 uint32_t vk_validate_vkqueuefamilyproperties(const VkQueueFamilyProperties* pStruct);
    139 uint32_t vk_validate_vkrect2d(const VkRect2D* pStruct);
    140 uint32_t vk_validate_vkrenderpassbegininfo(const VkRenderPassBeginInfo* pStruct);
    141 uint32_t vk_validate_vkrenderpasscreateinfo(const VkRenderPassCreateInfo* pStruct);
    142 uint32_t vk_validate_vksamplercreateinfo(const VkSamplerCreateInfo* pStruct);
    143 uint32_t vk_validate_vksemaphorecreateinfo(const VkSemaphoreCreateInfo* pStruct);
    144 uint32_t vk_validate_vkshadermodulecreateinfo(const VkShaderModuleCreateInfo* pStruct);
    145 uint32_t vk_validate_vksparsebuffermemorybindinfo(const VkSparseBufferMemoryBindInfo* pStruct);
    146 uint32_t vk_validate_vksparseimageformatproperties(const VkSparseImageFormatProperties* pStruct);
    147 uint32_t vk_validate_vksparseimagememorybind(const VkSparseImageMemoryBind* pStruct);
    148 uint32_t vk_validate_vksparseimagememorybindinfo(const VkSparseImageMemoryBindInfo* pStruct);
    149 uint32_t vk_validate_vksparseimagememoryrequirements(const VkSparseImageMemoryRequirements* pStruct);
    150 uint32_t vk_validate_vksparseimageopaquememorybindinfo(const VkSparseImageOpaqueMemoryBindInfo* pStruct);
    151 uint32_t vk_validate_vksparsememorybind(const VkSparseMemoryBind* pStruct);
    152 uint32_t vk_validate_vkspecializationinfo(const VkSpecializationInfo* pStruct);
    153 uint32_t vk_validate_vkspecializationmapentry(const VkSpecializationMapEntry* pStruct);
    154 uint32_t vk_validate_vkstencilopstate(const VkStencilOpState* pStruct);
    155 uint32_t vk_validate_vksubmitinfo(const VkSubmitInfo* pStruct);
    156 uint32_t vk_validate_vksubpassdependency(const VkSubpassDependency* pStruct);
    157 uint32_t vk_validate_vksubpassdescription(const VkSubpassDescription* pStruct);
    158 uint32_t vk_validate_vksubresourcelayout(const VkSubresourceLayout* pStruct);
    159 uint32_t vk_validate_vksurfacecapabilitieskhr(const VkSurfaceCapabilitiesKHR* pStruct);
    160 uint32_t vk_validate_vksurfaceformatkhr(const VkSurfaceFormatKHR* pStruct);
    161 uint32_t vk_validate_vkswapchaincreateinfokhr(const VkSwapchainCreateInfoKHR* pStruct);
    162 uint32_t vk_validate_vkvertexinputattributedescription(const VkVertexInputAttributeDescription* pStruct);
    163 uint32_t vk_validate_vkvertexinputbindingdescription(const VkVertexInputBindingDescription* pStruct);
    164 uint32_t vk_validate_vkviewport(const VkViewport* pStruct);
    165 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
    166 uint32_t vk_validate_vkwaylandsurfacecreateinfokhr(const VkWaylandSurfaceCreateInfoKHR* pStruct);
    167 #endif //VK_USE_PLATFORM_WAYLAND_KHR
    168 #ifdef VK_USE_PLATFORM_WIN32_KHR
    169 uint32_t vk_validate_vkwin32surfacecreateinfokhr(const VkWin32SurfaceCreateInfoKHR* pStruct);
    170 #endif //VK_USE_PLATFORM_WIN32_KHR
    171 uint32_t vk_validate_vkwritedescriptorset(const VkWriteDescriptorSet* pStruct);
    172 #ifdef VK_USE_PLATFORM_XCB_KHR
    173 uint32_t vk_validate_vkxcbsurfacecreateinfokhr(const VkXcbSurfaceCreateInfoKHR* pStruct);
    174 #endif //VK_USE_PLATFORM_XCB_KHR
    175 #ifdef VK_USE_PLATFORM_XLIB_KHR
    176 uint32_t vk_validate_vkxlibsurfacecreateinfokhr(const VkXlibSurfaceCreateInfoKHR* pStruct);
    177 #endif //VK_USE_PLATFORM_XLIB_KHR
    178 
    179 
    180 uint32_t vk_validate_vkallocationcallbacks(const VkAllocationCallbacks* pStruct)
    181 {
    182     return 1;
    183 }
    184 #ifdef VK_USE_PLATFORM_ANDROID_KHR
    185 uint32_t vk_validate_vkandroidsurfacecreateinfokhr(const VkAndroidSurfaceCreateInfoKHR* pStruct)
    186 {
    187     if (!validate_VkStructureType(pStruct->sType))
    188         return 0;
    189     return 1;
    190 }
    191 #endif //VK_USE_PLATFORM_ANDROID_KHR
    192 uint32_t vk_validate_vkapplicationinfo(const VkApplicationInfo* pStruct)
    193 {
    194     if (!validate_VkStructureType(pStruct->sType))
    195         return 0;
    196     return 1;
    197 }
    198 uint32_t vk_validate_vkattachmentdescription(const VkAttachmentDescription* pStruct)
    199 {
    200     if (!validate_VkFormat(pStruct->format))
    201         return 0;
    202     if (!validate_VkSampleCountFlagBits(pStruct->samples))
    203         return 0;
    204     if (!validate_VkAttachmentLoadOp(pStruct->loadOp))
    205         return 0;
    206     if (!validate_VkAttachmentStoreOp(pStruct->storeOp))
    207         return 0;
    208     if (!validate_VkAttachmentLoadOp(pStruct->stencilLoadOp))
    209         return 0;
    210     if (!validate_VkAttachmentStoreOp(pStruct->stencilStoreOp))
    211         return 0;
    212     if (!validate_VkImageLayout(pStruct->initialLayout))
    213         return 0;
    214     if (!validate_VkImageLayout(pStruct->finalLayout))
    215         return 0;
    216     return 1;
    217 }
    218 uint32_t vk_validate_vkattachmentreference(const VkAttachmentReference* pStruct)
    219 {
    220     if (!validate_VkImageLayout(pStruct->layout))
    221         return 0;
    222     return 1;
    223 }
    224 uint32_t vk_validate_vkbindsparseinfo(const VkBindSparseInfo* pStruct)
    225 {
    226     if (!validate_VkStructureType(pStruct->sType))
    227         return 0;
    228     if (pStruct->pBufferBinds && !vk_validate_vksparsebuffermemorybindinfo((const VkSparseBufferMemoryBindInfo*)pStruct->pBufferBinds))
    229         return 0;
    230     if (pStruct->pImageOpaqueBinds && !vk_validate_vksparseimageopaquememorybindinfo((const VkSparseImageOpaqueMemoryBindInfo*)pStruct->pImageOpaqueBinds))
    231         return 0;
    232     if (pStruct->pImageBinds && !vk_validate_vksparseimagememorybindinfo((const VkSparseImageMemoryBindInfo*)pStruct->pImageBinds))
    233         return 0;
    234     return 1;
    235 }
    236 uint32_t vk_validate_vkbuffercopy(const VkBufferCopy* pStruct)
    237 {
    238     return 1;
    239 }
    240 uint32_t vk_validate_vkbuffercreateinfo(const VkBufferCreateInfo* pStruct)
    241 {
    242     if (!validate_VkStructureType(pStruct->sType))
    243         return 0;
    244     if (!validate_VkSharingMode(pStruct->sharingMode))
    245         return 0;
    246     return 1;
    247 }
    248 uint32_t vk_validate_vkbufferimagecopy(const VkBufferImageCopy* pStruct)
    249 {
    250     if (!vk_validate_vkimagesubresourcelayers((const VkImageSubresourceLayers*)&pStruct->imageSubresource))
    251         return 0;
    252     if (!vk_validate_vkoffset3d((const VkOffset3D*)&pStruct->imageOffset))
    253         return 0;
    254     if (!vk_validate_vkextent3d((const VkExtent3D*)&pStruct->imageExtent))
    255         return 0;
    256     return 1;
    257 }
    258 uint32_t vk_validate_vkbuffermemorybarrier(const VkBufferMemoryBarrier* pStruct)
    259 {
    260     if (!validate_VkStructureType(pStruct->sType))
    261         return 0;
    262     return 1;
    263 }
    264 uint32_t vk_validate_vkbufferviewcreateinfo(const VkBufferViewCreateInfo* pStruct)
    265 {
    266     if (!validate_VkStructureType(pStruct->sType))
    267         return 0;
    268     if (!validate_VkFormat(pStruct->format))
    269         return 0;
    270     return 1;
    271 }
    272 uint32_t vk_validate_vkclearattachment(const VkClearAttachment* pStruct)
    273 {
    274     if (!vk_validate_vkclearvalue((const VkClearValue*)&pStruct->clearValue))
    275         return 0;
    276     return 1;
    277 }
    278 uint32_t vk_validate_vkclearcolorvalue(const VkClearColorValue* pStruct)
    279 {
    280     return 1;
    281 }
    282 uint32_t vk_validate_vkcleardepthstencilvalue(const VkClearDepthStencilValue* pStruct)
    283 {
    284     return 1;
    285 }
    286 uint32_t vk_validate_vkclearrect(const VkClearRect* pStruct)
    287 {
    288     if (!vk_validate_vkrect2d((const VkRect2D*)&pStruct->rect))
    289         return 0;
    290     return 1;
    291 }
    292 uint32_t vk_validate_vkclearvalue(const VkClearValue* pStruct)
    293 {
    294     if (!vk_validate_vkclearcolorvalue((const VkClearColorValue*)&pStruct->color))
    295         return 0;
    296     if (!vk_validate_vkcleardepthstencilvalue((const VkClearDepthStencilValue*)&pStruct->depthStencil))
    297         return 0;
    298     return 1;
    299 }
    300 uint32_t vk_validate_vkcommandbufferallocateinfo(const VkCommandBufferAllocateInfo* pStruct)
    301 {
    302     if (!validate_VkStructureType(pStruct->sType))
    303         return 0;
    304     if (!validate_VkCommandBufferLevel(pStruct->level))
    305         return 0;
    306     return 1;
    307 }
    308 uint32_t vk_validate_vkcommandbufferbegininfo(const VkCommandBufferBeginInfo* pStruct)
    309 {
    310     if (!validate_VkStructureType(pStruct->sType))
    311         return 0;
    312     if (pStruct->pInheritanceInfo && !vk_validate_vkcommandbufferinheritanceinfo((const VkCommandBufferInheritanceInfo*)pStruct->pInheritanceInfo))
    313         return 0;
    314     return 1;
    315 }
    316 uint32_t vk_validate_vkcommandbufferinheritanceinfo(const VkCommandBufferInheritanceInfo* pStruct)
    317 {
    318     if (!validate_VkStructureType(pStruct->sType))
    319         return 0;
    320     return 1;
    321 }
    322 uint32_t vk_validate_vkcommandpoolcreateinfo(const VkCommandPoolCreateInfo* pStruct)
    323 {
    324     if (!validate_VkStructureType(pStruct->sType))
    325         return 0;
    326     return 1;
    327 }
    328 uint32_t vk_validate_vkcomponentmapping(const VkComponentMapping* pStruct)
    329 {
    330     if (!validate_VkComponentSwizzle(pStruct->r))
    331         return 0;
    332     if (!validate_VkComponentSwizzle(pStruct->g))
    333         return 0;
    334     if (!validate_VkComponentSwizzle(pStruct->b))
    335         return 0;
    336     if (!validate_VkComponentSwizzle(pStruct->a))
    337         return 0;
    338     return 1;
    339 }
    340 uint32_t vk_validate_vkcomputepipelinecreateinfo(const VkComputePipelineCreateInfo* pStruct)
    341 {
    342     if (!validate_VkStructureType(pStruct->sType))
    343         return 0;
    344     if (!vk_validate_vkpipelineshaderstagecreateinfo((const VkPipelineShaderStageCreateInfo*)&pStruct->stage))
    345         return 0;
    346     return 1;
    347 }
    348 uint32_t vk_validate_vkcopydescriptorset(const VkCopyDescriptorSet* pStruct)
    349 {
    350     if (!validate_VkStructureType(pStruct->sType))
    351         return 0;
    352     return 1;
    353 }
    354 uint32_t vk_validate_vkdebugmarkermarkerinfoext(const VkDebugMarkerMarkerInfoEXT* pStruct)
    355 {
    356     if (!validate_VkStructureType(pStruct->sType))
    357         return 0;
    358     return 1;
    359 }
    360 uint32_t vk_validate_vkdebugmarkerobjectnameinfoext(const VkDebugMarkerObjectNameInfoEXT* pStruct)
    361 {
    362     if (!validate_VkStructureType(pStruct->sType))
    363         return 0;
    364     if (!validate_VkDebugReportObjectTypeEXT(pStruct->objectType))
    365         return 0;
    366     return 1;
    367 }
    368 uint32_t vk_validate_vkdebugmarkerobjecttaginfoext(const VkDebugMarkerObjectTagInfoEXT* pStruct)
    369 {
    370     if (!validate_VkStructureType(pStruct->sType))
    371         return 0;
    372     if (!validate_VkDebugReportObjectTypeEXT(pStruct->objectType))
    373         return 0;
    374     return 1;
    375 }
    376 uint32_t vk_validate_vkdebugreportcallbackcreateinfoext(const VkDebugReportCallbackCreateInfoEXT* pStruct)
    377 {
    378     if (!validate_VkStructureType(pStruct->sType))
    379         return 0;
    380     return 1;
    381 }
    382 uint32_t vk_validate_vkdescriptorbufferinfo(const VkDescriptorBufferInfo* pStruct)
    383 {
    384     return 1;
    385 }
    386 uint32_t vk_validate_vkdescriptorimageinfo(const VkDescriptorImageInfo* pStruct)
    387 {
    388     if (!validate_VkImageLayout(pStruct->imageLayout))
    389         return 0;
    390     return 1;
    391 }
    392 uint32_t vk_validate_vkdescriptorpoolcreateinfo(const VkDescriptorPoolCreateInfo* pStruct)
    393 {
    394     if (!validate_VkStructureType(pStruct->sType))
    395         return 0;
    396     if (pStruct->pPoolSizes && !vk_validate_vkdescriptorpoolsize((const VkDescriptorPoolSize*)pStruct->pPoolSizes))
    397         return 0;
    398     return 1;
    399 }
    400 uint32_t vk_validate_vkdescriptorpoolsize(const VkDescriptorPoolSize* pStruct)
    401 {
    402     if (!validate_VkDescriptorType(pStruct->type))
    403         return 0;
    404     return 1;
    405 }
    406 uint32_t vk_validate_vkdescriptorsetallocateinfo(const VkDescriptorSetAllocateInfo* pStruct)
    407 {
    408     if (!validate_VkStructureType(pStruct->sType))
    409         return 0;
    410     return 1;
    411 }
    412 uint32_t vk_validate_vkdescriptorsetlayoutbinding(const VkDescriptorSetLayoutBinding* pStruct)
    413 {
    414     if (!validate_VkDescriptorType(pStruct->descriptorType))
    415         return 0;
    416     return 1;
    417 }
    418 uint32_t vk_validate_vkdescriptorsetlayoutcreateinfo(const VkDescriptorSetLayoutCreateInfo* pStruct)
    419 {
    420     if (!validate_VkStructureType(pStruct->sType))
    421         return 0;
    422     if (pStruct->pBindings && !vk_validate_vkdescriptorsetlayoutbinding((const VkDescriptorSetLayoutBinding*)pStruct->pBindings))
    423         return 0;
    424     return 1;
    425 }
    426 uint32_t vk_validate_vkdevicecreateinfo(const VkDeviceCreateInfo* pStruct)
    427 {
    428     if (!validate_VkStructureType(pStruct->sType))
    429         return 0;
    430     if (pStruct->pQueueCreateInfos && !vk_validate_vkdevicequeuecreateinfo((const VkDeviceQueueCreateInfo*)pStruct->pQueueCreateInfos))
    431         return 0;
    432     if (pStruct->pEnabledFeatures && !vk_validate_vkphysicaldevicefeatures((const VkPhysicalDeviceFeatures*)pStruct->pEnabledFeatures))
    433         return 0;
    434     return 1;
    435 }
    436 uint32_t vk_validate_vkdevicequeuecreateinfo(const VkDeviceQueueCreateInfo* pStruct)
    437 {
    438     if (!validate_VkStructureType(pStruct->sType))
    439         return 0;
    440     return 1;
    441 }
    442 uint32_t vk_validate_vkdispatchindirectcommand(const VkDispatchIndirectCommand* pStruct)
    443 {
    444     return 1;
    445 }
    446 uint32_t vk_validate_vkdisplaymodecreateinfokhr(const VkDisplayModeCreateInfoKHR* pStruct)
    447 {
    448     if (!validate_VkStructureType(pStruct->sType))
    449         return 0;
    450     if (!vk_validate_vkdisplaymodeparameterskhr((const VkDisplayModeParametersKHR*)&pStruct->parameters))
    451         return 0;
    452     return 1;
    453 }
    454 uint32_t vk_validate_vkdisplaymodeparameterskhr(const VkDisplayModeParametersKHR* pStruct)
    455 {
    456     if (!vk_validate_vkextent2d((const VkExtent2D*)&pStruct->visibleRegion))
    457         return 0;
    458     return 1;
    459 }
    460 uint32_t vk_validate_vkdisplaymodepropertieskhr(const VkDisplayModePropertiesKHR* pStruct)
    461 {
    462     if (!vk_validate_vkdisplaymodeparameterskhr((const VkDisplayModeParametersKHR*)&pStruct->parameters))
    463         return 0;
    464     return 1;
    465 }
    466 uint32_t vk_validate_vkdisplayplanecapabilitieskhr(const VkDisplayPlaneCapabilitiesKHR* pStruct)
    467 {
    468     if (!vk_validate_vkoffset2d((const VkOffset2D*)&pStruct->minSrcPosition))
    469         return 0;
    470     if (!vk_validate_vkoffset2d((const VkOffset2D*)&pStruct->maxSrcPosition))
    471         return 0;
    472     if (!vk_validate_vkextent2d((const VkExtent2D*)&pStruct->minSrcExtent))
    473         return 0;
    474     if (!vk_validate_vkextent2d((const VkExtent2D*)&pStruct->maxSrcExtent))
    475         return 0;
    476     if (!vk_validate_vkoffset2d((const VkOffset2D*)&pStruct->minDstPosition))
    477         return 0;
    478     if (!vk_validate_vkoffset2d((const VkOffset2D*)&pStruct->maxDstPosition))
    479         return 0;
    480     if (!vk_validate_vkextent2d((const VkExtent2D*)&pStruct->minDstExtent))
    481         return 0;
    482     if (!vk_validate_vkextent2d((const VkExtent2D*)&pStruct->maxDstExtent))
    483         return 0;
    484     return 1;
    485 }
    486 uint32_t vk_validate_vkdisplayplanepropertieskhr(const VkDisplayPlanePropertiesKHR* pStruct)
    487 {
    488     return 1;
    489 }
    490 uint32_t vk_validate_vkdisplaypresentinfokhr(const VkDisplayPresentInfoKHR* pStruct)
    491 {
    492     if (!validate_VkStructureType(pStruct->sType))
    493         return 0;
    494     if (!vk_validate_vkrect2d((const VkRect2D*)&pStruct->srcRect))
    495         return 0;
    496     if (!vk_validate_vkrect2d((const VkRect2D*)&pStruct->dstRect))
    497         return 0;
    498     return 1;
    499 }
    500 uint32_t vk_validate_vkdisplaypropertieskhr(const VkDisplayPropertiesKHR* pStruct)
    501 {
    502     if (!vk_validate_vkextent2d((const VkExtent2D*)&pStruct->physicalDimensions))
    503         return 0;
    504     if (!vk_validate_vkextent2d((const VkExtent2D*)&pStruct->physicalResolution))
    505         return 0;
    506     return 1;
    507 }
    508 uint32_t vk_validate_vkdisplaysurfacecreateinfokhr(const VkDisplaySurfaceCreateInfoKHR* pStruct)
    509 {
    510     if (!validate_VkStructureType(pStruct->sType))
    511         return 0;
    512     if (!validate_VkSurfaceTransformFlagBitsKHR(pStruct->transform))
    513         return 0;
    514     if (!validate_VkDisplayPlaneAlphaFlagBitsKHR(pStruct->alphaMode))
    515         return 0;
    516     if (!vk_validate_vkextent2d((const VkExtent2D*)&pStruct->imageExtent))
    517         return 0;
    518     return 1;
    519 }
    520 uint32_t vk_validate_vkdrawindexedindirectcommand(const VkDrawIndexedIndirectCommand* pStruct)
    521 {
    522     return 1;
    523 }
    524 uint32_t vk_validate_vkdrawindirectcommand(const VkDrawIndirectCommand* pStruct)
    525 {
    526     return 1;
    527 }
    528 uint32_t vk_validate_vkeventcreateinfo(const VkEventCreateInfo* pStruct)
    529 {
    530     if (!validate_VkStructureType(pStruct->sType))
    531         return 0;
    532     return 1;
    533 }
    534 uint32_t vk_validate_vkextensionproperties(const VkExtensionProperties* pStruct)
    535 {
    536     return 1;
    537 }
    538 uint32_t vk_validate_vkextent2d(const VkExtent2D* pStruct)
    539 {
    540     return 1;
    541 }
    542 uint32_t vk_validate_vkextent3d(const VkExtent3D* pStruct)
    543 {
    544     return 1;
    545 }
    546 uint32_t vk_validate_vkfencecreateinfo(const VkFenceCreateInfo* pStruct)
    547 {
    548     if (!validate_VkStructureType(pStruct->sType))
    549         return 0;
    550     return 1;
    551 }
    552 uint32_t vk_validate_vkformatproperties(const VkFormatProperties* pStruct)
    553 {
    554     return 1;
    555 }
    556 uint32_t vk_validate_vkframebuffercreateinfo(const VkFramebufferCreateInfo* pStruct)
    557 {
    558     if (!validate_VkStructureType(pStruct->sType))
    559         return 0;
    560     return 1;
    561 }
    562 uint32_t vk_validate_vkgraphicspipelinecreateinfo(const VkGraphicsPipelineCreateInfo* pStruct)
    563 {
    564     if (!validate_VkStructureType(pStruct->sType))
    565         return 0;
    566     if (pStruct->pStages && !vk_validate_vkpipelineshaderstagecreateinfo((const VkPipelineShaderStageCreateInfo*)pStruct->pStages))
    567         return 0;
    568     if (pStruct->pVertexInputState && !vk_validate_vkpipelinevertexinputstatecreateinfo((const VkPipelineVertexInputStateCreateInfo*)pStruct->pVertexInputState))
    569         return 0;
    570     if (pStruct->pInputAssemblyState && !vk_validate_vkpipelineinputassemblystatecreateinfo((const VkPipelineInputAssemblyStateCreateInfo*)pStruct->pInputAssemblyState))
    571         return 0;
    572     if (pStruct->pTessellationState && !vk_validate_vkpipelinetessellationstatecreateinfo((const VkPipelineTessellationStateCreateInfo*)pStruct->pTessellationState))
    573         return 0;
    574     if (pStruct->pViewportState && !vk_validate_vkpipelineviewportstatecreateinfo((const VkPipelineViewportStateCreateInfo*)pStruct->pViewportState))
    575         return 0;
    576     if (pStruct->pRasterizationState && !vk_validate_vkpipelinerasterizationstatecreateinfo((const VkPipelineRasterizationStateCreateInfo*)pStruct->pRasterizationState))
    577         return 0;
    578     if (pStruct->pMultisampleState && !vk_validate_vkpipelinemultisamplestatecreateinfo((const VkPipelineMultisampleStateCreateInfo*)pStruct->pMultisampleState))
    579         return 0;
    580     if (pStruct->pDepthStencilState && !vk_validate_vkpipelinedepthstencilstatecreateinfo((const VkPipelineDepthStencilStateCreateInfo*)pStruct->pDepthStencilState))
    581         return 0;
    582     if (pStruct->pColorBlendState && !vk_validate_vkpipelinecolorblendstatecreateinfo((const VkPipelineColorBlendStateCreateInfo*)pStruct->pColorBlendState))
    583         return 0;
    584     if (pStruct->pDynamicState && !vk_validate_vkpipelinedynamicstatecreateinfo((const VkPipelineDynamicStateCreateInfo*)pStruct->pDynamicState))
    585         return 0;
    586     return 1;
    587 }
    588 uint32_t vk_validate_vkimageblit(const VkImageBlit* pStruct)
    589 {
    590     if (!vk_validate_vkimagesubresourcelayers((const VkImageSubresourceLayers*)&pStruct->srcSubresource))
    591         return 0;
    592     if (!vk_validate_vkoffset3d((const VkOffset3D*)&pStruct->srcOffsets))
    593         return 0;
    594     if (!vk_validate_vkimagesubresourcelayers((const VkImageSubresourceLayers*)&pStruct->dstSubresource))
    595         return 0;
    596     if (!vk_validate_vkoffset3d((const VkOffset3D*)&pStruct->dstOffsets))
    597         return 0;
    598     return 1;
    599 }
    600 uint32_t vk_validate_vkimagecopy(const VkImageCopy* pStruct)
    601 {
    602     if (!vk_validate_vkimagesubresourcelayers((const VkImageSubresourceLayers*)&pStruct->srcSubresource))
    603         return 0;
    604     if (!vk_validate_vkoffset3d((const VkOffset3D*)&pStruct->srcOffset))
    605         return 0;
    606     if (!vk_validate_vkimagesubresourcelayers((const VkImageSubresourceLayers*)&pStruct->dstSubresource))
    607         return 0;
    608     if (!vk_validate_vkoffset3d((const VkOffset3D*)&pStruct->dstOffset))
    609         return 0;
    610     if (!vk_validate_vkextent3d((const VkExtent3D*)&pStruct->extent))
    611         return 0;
    612     return 1;
    613 }
    614 uint32_t vk_validate_vkimagecreateinfo(const VkImageCreateInfo* pStruct)
    615 {
    616     if (!validate_VkStructureType(pStruct->sType))
    617         return 0;
    618     if (!validate_VkImageType(pStruct->imageType))
    619         return 0;
    620     if (!validate_VkFormat(pStruct->format))
    621         return 0;
    622     if (!vk_validate_vkextent3d((const VkExtent3D*)&pStruct->extent))
    623         return 0;
    624     if (!validate_VkSampleCountFlagBits(pStruct->samples))
    625         return 0;
    626     if (!validate_VkImageTiling(pStruct->tiling))
    627         return 0;
    628     if (!validate_VkSharingMode(pStruct->sharingMode))
    629         return 0;
    630     if (!validate_VkImageLayout(pStruct->initialLayout))
    631         return 0;
    632     return 1;
    633 }
    634 uint32_t vk_validate_vkimageformatproperties(const VkImageFormatProperties* pStruct)
    635 {
    636     if (!vk_validate_vkextent3d((const VkExtent3D*)&pStruct->maxExtent))
    637         return 0;
    638     return 1;
    639 }
    640 uint32_t vk_validate_vkimagememorybarrier(const VkImageMemoryBarrier* pStruct)
    641 {
    642     if (!validate_VkStructureType(pStruct->sType))
    643         return 0;
    644     if (!validate_VkImageLayout(pStruct->oldLayout))
    645         return 0;
    646     if (!validate_VkImageLayout(pStruct->newLayout))
    647         return 0;
    648     if (!vk_validate_vkimagesubresourcerange((const VkImageSubresourceRange*)&pStruct->subresourceRange))
    649         return 0;
    650     return 1;
    651 }
    652 uint32_t vk_validate_vkimageresolve(const VkImageResolve* pStruct)
    653 {
    654     if (!vk_validate_vkimagesubresourcelayers((const VkImageSubresourceLayers*)&pStruct->srcSubresource))
    655         return 0;
    656     if (!vk_validate_vkoffset3d((const VkOffset3D*)&pStruct->srcOffset))
    657         return 0;
    658     if (!vk_validate_vkimagesubresourcelayers((const VkImageSubresourceLayers*)&pStruct->dstSubresource))
    659         return 0;
    660     if (!vk_validate_vkoffset3d((const VkOffset3D*)&pStruct->dstOffset))
    661         return 0;
    662     if (!vk_validate_vkextent3d((const VkExtent3D*)&pStruct->extent))
    663         return 0;
    664     return 1;
    665 }
    666 uint32_t vk_validate_vkimagesubresource(const VkImageSubresource* pStruct)
    667 {
    668     return 1;
    669 }
    670 uint32_t vk_validate_vkimagesubresourcelayers(const VkImageSubresourceLayers* pStruct)
    671 {
    672     return 1;
    673 }
    674 uint32_t vk_validate_vkimagesubresourcerange(const VkImageSubresourceRange* pStruct)
    675 {
    676     return 1;
    677 }
    678 uint32_t vk_validate_vkimageviewcreateinfo(const VkImageViewCreateInfo* pStruct)
    679 {
    680     if (!validate_VkStructureType(pStruct->sType))
    681         return 0;
    682     if (!validate_VkImageViewType(pStruct->viewType))
    683         return 0;
    684     if (!validate_VkFormat(pStruct->format))
    685         return 0;
    686     if (!vk_validate_vkcomponentmapping((const VkComponentMapping*)&pStruct->components))
    687         return 0;
    688     if (!vk_validate_vkimagesubresourcerange((const VkImageSubresourceRange*)&pStruct->subresourceRange))
    689         return 0;
    690     return 1;
    691 }
    692 uint32_t vk_validate_vkinstancecreateinfo(const VkInstanceCreateInfo* pStruct)
    693 {
    694     if (!validate_VkStructureType(pStruct->sType))
    695         return 0;
    696     if (pStruct->pApplicationInfo && !vk_validate_vkapplicationinfo((const VkApplicationInfo*)pStruct->pApplicationInfo))
    697         return 0;
    698     return 1;
    699 }
    700 uint32_t vk_validate_vklayerproperties(const VkLayerProperties* pStruct)
    701 {
    702     return 1;
    703 }
    704 uint32_t vk_validate_vkmappedmemoryrange(const VkMappedMemoryRange* pStruct)
    705 {
    706     if (!validate_VkStructureType(pStruct->sType))
    707         return 0;
    708     return 1;
    709 }
    710 uint32_t vk_validate_vkmemoryallocateinfo(const VkMemoryAllocateInfo* pStruct)
    711 {
    712     if (!validate_VkStructureType(pStruct->sType))
    713         return 0;
    714     return 1;
    715 }
    716 uint32_t vk_validate_vkmemorybarrier(const VkMemoryBarrier* pStruct)
    717 {
    718     if (!validate_VkStructureType(pStruct->sType))
    719         return 0;
    720     return 1;
    721 }
    722 uint32_t vk_validate_vkmemoryheap(const VkMemoryHeap* pStruct)
    723 {
    724     return 1;
    725 }
    726 uint32_t vk_validate_vkmemoryrequirements(const VkMemoryRequirements* pStruct)
    727 {
    728     return 1;
    729 }
    730 uint32_t vk_validate_vkmemorytype(const VkMemoryType* pStruct)
    731 {
    732     return 1;
    733 }
    734 #ifdef VK_USE_PLATFORM_MIR_KHR
    735 uint32_t vk_validate_vkmirsurfacecreateinfokhr(const VkMirSurfaceCreateInfoKHR* pStruct)
    736 {
    737     if (!validate_VkStructureType(pStruct->sType))
    738         return 0;
    739     return 1;
    740 }
    741 #endif //VK_USE_PLATFORM_MIR_KHR
    742 uint32_t vk_validate_vkoffset2d(const VkOffset2D* pStruct)
    743 {
    744     return 1;
    745 }
    746 uint32_t vk_validate_vkoffset3d(const VkOffset3D* pStruct)
    747 {
    748     return 1;
    749 }
    750 uint32_t vk_validate_vkphysicaldevicefeatures(const VkPhysicalDeviceFeatures* pStruct)
    751 {
    752     return 1;
    753 }
    754 uint32_t vk_validate_vkphysicaldevicelimits(const VkPhysicalDeviceLimits* pStruct)
    755 {
    756     return 1;
    757 }
    758 uint32_t vk_validate_vkphysicaldevicememoryproperties(const VkPhysicalDeviceMemoryProperties* pStruct)
    759 {
    760     if (!vk_validate_vkmemorytype((const VkMemoryType*)&pStruct->memoryTypes))
    761         return 0;
    762     if (!vk_validate_vkmemoryheap((const VkMemoryHeap*)&pStruct->memoryHeaps))
    763         return 0;
    764     return 1;
    765 }
    766 uint32_t vk_validate_vkphysicaldeviceproperties(const VkPhysicalDeviceProperties* pStruct)
    767 {
    768     if (!validate_VkPhysicalDeviceType(pStruct->deviceType))
    769         return 0;
    770     if (!vk_validate_vkphysicaldevicelimits((const VkPhysicalDeviceLimits*)&pStruct->limits))
    771         return 0;
    772     if (!vk_validate_vkphysicaldevicesparseproperties((const VkPhysicalDeviceSparseProperties*)&pStruct->sparseProperties))
    773         return 0;
    774     return 1;
    775 }
    776 uint32_t vk_validate_vkphysicaldevicesparseproperties(const VkPhysicalDeviceSparseProperties* pStruct)
    777 {
    778     return 1;
    779 }
    780 uint32_t vk_validate_vkpipelinecachecreateinfo(const VkPipelineCacheCreateInfo* pStruct)
    781 {
    782     if (!validate_VkStructureType(pStruct->sType))
    783         return 0;
    784     return 1;
    785 }
    786 uint32_t vk_validate_vkpipelinecolorblendattachmentstate(const VkPipelineColorBlendAttachmentState* pStruct)
    787 {
    788     if (!validate_VkBlendFactor(pStruct->srcColorBlendFactor))
    789         return 0;
    790     if (!validate_VkBlendFactor(pStruct->dstColorBlendFactor))
    791         return 0;
    792     if (!validate_VkBlendOp(pStruct->colorBlendOp))
    793         return 0;
    794     if (!validate_VkBlendFactor(pStruct->srcAlphaBlendFactor))
    795         return 0;
    796     if (!validate_VkBlendFactor(pStruct->dstAlphaBlendFactor))
    797         return 0;
    798     if (!validate_VkBlendOp(pStruct->alphaBlendOp))
    799         return 0;
    800     return 1;
    801 }
    802 uint32_t vk_validate_vkpipelinecolorblendstatecreateinfo(const VkPipelineColorBlendStateCreateInfo* pStruct)
    803 {
    804     if (!validate_VkStructureType(pStruct->sType))
    805         return 0;
    806     if (!validate_VkLogicOp(pStruct->logicOp))
    807         return 0;
    808     if (pStruct->pAttachments && !vk_validate_vkpipelinecolorblendattachmentstate((const VkPipelineColorBlendAttachmentState*)pStruct->pAttachments))
    809         return 0;
    810     return 1;
    811 }
    812 uint32_t vk_validate_vkpipelinedepthstencilstatecreateinfo(const VkPipelineDepthStencilStateCreateInfo* pStruct)
    813 {
    814     if (!validate_VkStructureType(pStruct->sType))
    815         return 0;
    816     if (!validate_VkCompareOp(pStruct->depthCompareOp))
    817         return 0;
    818     if (!vk_validate_vkstencilopstate((const VkStencilOpState*)&pStruct->front))
    819         return 0;
    820     if (!vk_validate_vkstencilopstate((const VkStencilOpState*)&pStruct->back))
    821         return 0;
    822     return 1;
    823 }
    824 uint32_t vk_validate_vkpipelinedynamicstatecreateinfo(const VkPipelineDynamicStateCreateInfo* pStruct)
    825 {
    826     if (!validate_VkStructureType(pStruct->sType))
    827         return 0;
    828     return 1;
    829 }
    830 uint32_t vk_validate_vkpipelineinputassemblystatecreateinfo(const VkPipelineInputAssemblyStateCreateInfo* pStruct)
    831 {
    832     if (!validate_VkStructureType(pStruct->sType))
    833         return 0;
    834     if (!validate_VkPrimitiveTopology(pStruct->topology))
    835         return 0;
    836     return 1;
    837 }
    838 uint32_t vk_validate_vkpipelinelayoutcreateinfo(const VkPipelineLayoutCreateInfo* pStruct)
    839 {
    840     if (!validate_VkStructureType(pStruct->sType))
    841         return 0;
    842     if (pStruct->pPushConstantRanges && !vk_validate_vkpushconstantrange((const VkPushConstantRange*)pStruct->pPushConstantRanges))
    843         return 0;
    844     return 1;
    845 }
    846 uint32_t vk_validate_vkpipelinemultisamplestatecreateinfo(const VkPipelineMultisampleStateCreateInfo* pStruct)
    847 {
    848     if (!validate_VkStructureType(pStruct->sType))
    849         return 0;
    850     if (!validate_VkSampleCountFlagBits(pStruct->rasterizationSamples))
    851         return 0;
    852     return 1;
    853 }
    854 uint32_t vk_validate_vkpipelinerasterizationstatecreateinfo(const VkPipelineRasterizationStateCreateInfo* pStruct)
    855 {
    856     if (!validate_VkStructureType(pStruct->sType))
    857         return 0;
    858     if (!validate_VkPolygonMode(pStruct->polygonMode))
    859         return 0;
    860     if (!validate_VkFrontFace(pStruct->frontFace))
    861         return 0;
    862     return 1;
    863 }
    864 uint32_t vk_validate_vkpipelinerasterizationstaterasterizationorderamd(const VkPipelineRasterizationStateRasterizationOrderAMD* pStruct)
    865 {
    866     if (!validate_VkStructureType(pStruct->sType))
    867         return 0;
    868     if (!validate_VkRasterizationOrderAMD(pStruct->rasterizationOrder))
    869         return 0;
    870     return 1;
    871 }
    872 uint32_t vk_validate_vkpipelineshaderstagecreateinfo(const VkPipelineShaderStageCreateInfo* pStruct)
    873 {
    874     if (!validate_VkStructureType(pStruct->sType))
    875         return 0;
    876     if (!validate_VkShaderStageFlagBits(pStruct->stage))
    877         return 0;
    878     if (pStruct->pSpecializationInfo && !vk_validate_vkspecializationinfo((const VkSpecializationInfo*)pStruct->pSpecializationInfo))
    879         return 0;
    880     return 1;
    881 }
    882 uint32_t vk_validate_vkpipelinetessellationstatecreateinfo(const VkPipelineTessellationStateCreateInfo* pStruct)
    883 {
    884     if (!validate_VkStructureType(pStruct->sType))
    885         return 0;
    886     return 1;
    887 }
    888 uint32_t vk_validate_vkpipelinevertexinputstatecreateinfo(const VkPipelineVertexInputStateCreateInfo* pStruct)
    889 {
    890     if (!validate_VkStructureType(pStruct->sType))
    891         return 0;
    892     if (pStruct->pVertexBindingDescriptions && !vk_validate_vkvertexinputbindingdescription((const VkVertexInputBindingDescription*)pStruct->pVertexBindingDescriptions))
    893         return 0;
    894     if (pStruct->pVertexAttributeDescriptions && !vk_validate_vkvertexinputattributedescription((const VkVertexInputAttributeDescription*)pStruct->pVertexAttributeDescriptions))
    895         return 0;
    896     return 1;
    897 }
    898 uint32_t vk_validate_vkpipelineviewportstatecreateinfo(const VkPipelineViewportStateCreateInfo* pStruct)
    899 {
    900     if (!validate_VkStructureType(pStruct->sType))
    901         return 0;
    902     if (pStruct->pViewports && !vk_validate_vkviewport((const VkViewport*)pStruct->pViewports))
    903         return 0;
    904     if (pStruct->pScissors && !vk_validate_vkrect2d((const VkRect2D*)pStruct->pScissors))
    905         return 0;
    906     return 1;
    907 }
    908 uint32_t vk_validate_vkpresentinfokhr(const VkPresentInfoKHR* pStruct)
    909 {
    910     if (!validate_VkStructureType(pStruct->sType))
    911         return 0;
    912     return 1;
    913 }
    914 uint32_t vk_validate_vkpushconstantrange(const VkPushConstantRange* pStruct)
    915 {
    916     return 1;
    917 }
    918 uint32_t vk_validate_vkquerypoolcreateinfo(const VkQueryPoolCreateInfo* pStruct)
    919 {
    920     if (!validate_VkStructureType(pStruct->sType))
    921         return 0;
    922     if (!validate_VkQueryType(pStruct->queryType))
    923         return 0;
    924     return 1;
    925 }
    926 uint32_t vk_validate_vkqueuefamilyproperties(const VkQueueFamilyProperties* pStruct)
    927 {
    928     if (!vk_validate_vkextent3d((const VkExtent3D*)&pStruct->minImageTransferGranularity))
    929         return 0;
    930     return 1;
    931 }
    932 uint32_t vk_validate_vkrect2d(const VkRect2D* pStruct)
    933 {
    934     if (!vk_validate_vkoffset2d((const VkOffset2D*)&pStruct->offset))
    935         return 0;
    936     if (!vk_validate_vkextent2d((const VkExtent2D*)&pStruct->extent))
    937         return 0;
    938     return 1;
    939 }
    940 uint32_t vk_validate_vkrenderpassbegininfo(const VkRenderPassBeginInfo* pStruct)
    941 {
    942     if (!validate_VkStructureType(pStruct->sType))
    943         return 0;
    944     if (!vk_validate_vkrect2d((const VkRect2D*)&pStruct->renderArea))
    945         return 0;
    946     if (pStruct->pClearValues && !vk_validate_vkclearvalue((const VkClearValue*)pStruct->pClearValues))
    947         return 0;
    948     return 1;
    949 }
    950 uint32_t vk_validate_vkrenderpasscreateinfo(const VkRenderPassCreateInfo* pStruct)
    951 {
    952     if (!validate_VkStructureType(pStruct->sType))
    953         return 0;
    954     if (pStruct->pAttachments && !vk_validate_vkattachmentdescription((const VkAttachmentDescription*)pStruct->pAttachments))
    955         return 0;
    956     if (pStruct->pSubpasses && !vk_validate_vksubpassdescription((const VkSubpassDescription*)pStruct->pSubpasses))
    957         return 0;
    958     if (pStruct->pDependencies && !vk_validate_vksubpassdependency((const VkSubpassDependency*)pStruct->pDependencies))
    959         return 0;
    960     return 1;
    961 }
    962 uint32_t vk_validate_vksamplercreateinfo(const VkSamplerCreateInfo* pStruct)
    963 {
    964     if (!validate_VkStructureType(pStruct->sType))
    965         return 0;
    966     if (!validate_VkFilter(pStruct->magFilter))
    967         return 0;
    968     if (!validate_VkFilter(pStruct->minFilter))
    969         return 0;
    970     if (!validate_VkSamplerMipmapMode(pStruct->mipmapMode))
    971         return 0;
    972     if (!validate_VkSamplerAddressMode(pStruct->addressModeU))
    973         return 0;
    974     if (!validate_VkSamplerAddressMode(pStruct->addressModeV))
    975         return 0;
    976     if (!validate_VkSamplerAddressMode(pStruct->addressModeW))
    977         return 0;
    978     if (!validate_VkCompareOp(pStruct->compareOp))
    979         return 0;
    980     if (!validate_VkBorderColor(pStruct->borderColor))
    981         return 0;
    982     return 1;
    983 }
    984 uint32_t vk_validate_vksemaphorecreateinfo(const VkSemaphoreCreateInfo* pStruct)
    985 {
    986     if (!validate_VkStructureType(pStruct->sType))
    987         return 0;
    988     return 1;
    989 }
    990 uint32_t vk_validate_vkshadermodulecreateinfo(const VkShaderModuleCreateInfo* pStruct)
    991 {
    992     if (!validate_VkStructureType(pStruct->sType))
    993         return 0;
    994     return 1;
    995 }
    996 uint32_t vk_validate_vksparsebuffermemorybindinfo(const VkSparseBufferMemoryBindInfo* pStruct)
    997 {
    998     if (pStruct->pBinds && !vk_validate_vksparsememorybind((const VkSparseMemoryBind*)pStruct->pBinds))
    999         return 0;
   1000     return 1;
   1001 }
   1002 uint32_t vk_validate_vksparseimageformatproperties(const VkSparseImageFormatProperties* pStruct)
   1003 {
   1004     if (!vk_validate_vkextent3d((const VkExtent3D*)&pStruct->imageGranularity))
   1005         return 0;
   1006     return 1;
   1007 }
   1008 uint32_t vk_validate_vksparseimagememorybind(const VkSparseImageMemoryBind* pStruct)
   1009 {
   1010     if (!vk_validate_vkimagesubresource((const VkImageSubresource*)&pStruct->subresource))
   1011         return 0;
   1012     if (!vk_validate_vkoffset3d((const VkOffset3D*)&pStruct->offset))
   1013         return 0;
   1014     if (!vk_validate_vkextent3d((const VkExtent3D*)&pStruct->extent))
   1015         return 0;
   1016     return 1;
   1017 }
   1018 uint32_t vk_validate_vksparseimagememorybindinfo(const VkSparseImageMemoryBindInfo* pStruct)
   1019 {
   1020     if (pStruct->pBinds && !vk_validate_vksparseimagememorybind((const VkSparseImageMemoryBind*)pStruct->pBinds))
   1021         return 0;
   1022     return 1;
   1023 }
   1024 uint32_t vk_validate_vksparseimagememoryrequirements(const VkSparseImageMemoryRequirements* pStruct)
   1025 {
   1026     if (!vk_validate_vksparseimageformatproperties((const VkSparseImageFormatProperties*)&pStruct->formatProperties))
   1027         return 0;
   1028     return 1;
   1029 }
   1030 uint32_t vk_validate_vksparseimageopaquememorybindinfo(const VkSparseImageOpaqueMemoryBindInfo* pStruct)
   1031 {
   1032     if (pStruct->pBinds && !vk_validate_vksparsememorybind((const VkSparseMemoryBind*)pStruct->pBinds))
   1033         return 0;
   1034     return 1;
   1035 }
   1036 uint32_t vk_validate_vksparsememorybind(const VkSparseMemoryBind* pStruct)
   1037 {
   1038     return 1;
   1039 }
   1040 uint32_t vk_validate_vkspecializationinfo(const VkSpecializationInfo* pStruct)
   1041 {
   1042     if (pStruct->pMapEntries && !vk_validate_vkspecializationmapentry((const VkSpecializationMapEntry*)pStruct->pMapEntries))
   1043         return 0;
   1044     return 1;
   1045 }
   1046 uint32_t vk_validate_vkspecializationmapentry(const VkSpecializationMapEntry* pStruct)
   1047 {
   1048     return 1;
   1049 }
   1050 uint32_t vk_validate_vkstencilopstate(const VkStencilOpState* pStruct)
   1051 {
   1052     if (!validate_VkStencilOp(pStruct->failOp))
   1053         return 0;
   1054     if (!validate_VkStencilOp(pStruct->passOp))
   1055         return 0;
   1056     if (!validate_VkStencilOp(pStruct->depthFailOp))
   1057         return 0;
   1058     if (!validate_VkCompareOp(pStruct->compareOp))
   1059         return 0;
   1060     return 1;
   1061 }
   1062 uint32_t vk_validate_vksubmitinfo(const VkSubmitInfo* pStruct)
   1063 {
   1064     if (!validate_VkStructureType(pStruct->sType))
   1065         return 0;
   1066     return 1;
   1067 }
   1068 uint32_t vk_validate_vksubpassdependency(const VkSubpassDependency* pStruct)
   1069 {
   1070     return 1;
   1071 }
   1072 uint32_t vk_validate_vksubpassdescription(const VkSubpassDescription* pStruct)
   1073 {
   1074     if (!validate_VkPipelineBindPoint(pStruct->pipelineBindPoint))
   1075         return 0;
   1076     if (pStruct->pInputAttachments && !vk_validate_vkattachmentreference((const VkAttachmentReference*)pStruct->pInputAttachments))
   1077         return 0;
   1078     if (pStruct->pColorAttachments && !vk_validate_vkattachmentreference((const VkAttachmentReference*)pStruct->pColorAttachments))
   1079         return 0;
   1080     if (pStruct->pResolveAttachments && !vk_validate_vkattachmentreference((const VkAttachmentReference*)pStruct->pResolveAttachments))
   1081         return 0;
   1082     if (pStruct->pDepthStencilAttachment && !vk_validate_vkattachmentreference((const VkAttachmentReference*)pStruct->pDepthStencilAttachment))
   1083         return 0;
   1084     return 1;
   1085 }
   1086 uint32_t vk_validate_vksubresourcelayout(const VkSubresourceLayout* pStruct)
   1087 {
   1088     return 1;
   1089 }
   1090 uint32_t vk_validate_vksurfacecapabilitieskhr(const VkSurfaceCapabilitiesKHR* pStruct)
   1091 {
   1092     if (!vk_validate_vkextent2d((const VkExtent2D*)&pStruct->currentExtent))
   1093         return 0;
   1094     if (!vk_validate_vkextent2d((const VkExtent2D*)&pStruct->minImageExtent))
   1095         return 0;
   1096     if (!vk_validate_vkextent2d((const VkExtent2D*)&pStruct->maxImageExtent))
   1097         return 0;
   1098     if (!validate_VkSurfaceTransformFlagBitsKHR(pStruct->currentTransform))
   1099         return 0;
   1100     return 1;
   1101 }
   1102 uint32_t vk_validate_vksurfaceformatkhr(const VkSurfaceFormatKHR* pStruct)
   1103 {
   1104     if (!validate_VkFormat(pStruct->format))
   1105         return 0;
   1106     if (!validate_VkColorSpaceKHR(pStruct->colorSpace))
   1107         return 0;
   1108     return 1;
   1109 }
   1110 uint32_t vk_validate_vkswapchaincreateinfokhr(const VkSwapchainCreateInfoKHR* pStruct)
   1111 {
   1112     if (!validate_VkStructureType(pStruct->sType))
   1113         return 0;
   1114     if (!validate_VkFormat(pStruct->imageFormat))
   1115         return 0;
   1116     if (!validate_VkColorSpaceKHR(pStruct->imageColorSpace))
   1117         return 0;
   1118     if (!vk_validate_vkextent2d((const VkExtent2D*)&pStruct->imageExtent))
   1119         return 0;
   1120     if (!validate_VkSharingMode(pStruct->imageSharingMode))
   1121         return 0;
   1122     if (!validate_VkSurfaceTransformFlagBitsKHR(pStruct->preTransform))
   1123         return 0;
   1124     if (!validate_VkCompositeAlphaFlagBitsKHR(pStruct->compositeAlpha))
   1125         return 0;
   1126     if (!validate_VkPresentModeKHR(pStruct->presentMode))
   1127         return 0;
   1128     return 1;
   1129 }
   1130 uint32_t vk_validate_vkvertexinputattributedescription(const VkVertexInputAttributeDescription* pStruct)
   1131 {
   1132     if (!validate_VkFormat(pStruct->format))
   1133         return 0;
   1134     return 1;
   1135 }
   1136 uint32_t vk_validate_vkvertexinputbindingdescription(const VkVertexInputBindingDescription* pStruct)
   1137 {
   1138     if (!validate_VkVertexInputRate(pStruct->inputRate))
   1139         return 0;
   1140     return 1;
   1141 }
   1142 uint32_t vk_validate_vkviewport(const VkViewport* pStruct)
   1143 {
   1144     return 1;
   1145 }
   1146 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
   1147 uint32_t vk_validate_vkwaylandsurfacecreateinfokhr(const VkWaylandSurfaceCreateInfoKHR* pStruct)
   1148 {
   1149     if (!validate_VkStructureType(pStruct->sType))
   1150         return 0;
   1151     return 1;
   1152 }
   1153 #endif //VK_USE_PLATFORM_WAYLAND_KHR
   1154 #ifdef VK_USE_PLATFORM_WIN32_KHR
   1155 uint32_t vk_validate_vkwin32surfacecreateinfokhr(const VkWin32SurfaceCreateInfoKHR* pStruct)
   1156 {
   1157     if (!validate_VkStructureType(pStruct->sType))
   1158         return 0;
   1159     return 1;
   1160 }
   1161 #endif //VK_USE_PLATFORM_WIN32_KHR
   1162 uint32_t vk_validate_vkwritedescriptorset(const VkWriteDescriptorSet* pStruct)
   1163 {
   1164     if (!validate_VkStructureType(pStruct->sType))
   1165         return 0;
   1166     if (!validate_VkDescriptorType(pStruct->descriptorType))
   1167         return 0;
   1168     if (pStruct->pImageInfo && !vk_validate_vkdescriptorimageinfo((const VkDescriptorImageInfo*)pStruct->pImageInfo))
   1169         return 0;
   1170     if (pStruct->pBufferInfo && !vk_validate_vkdescriptorbufferinfo((const VkDescriptorBufferInfo*)pStruct->pBufferInfo))
   1171         return 0;
   1172     return 1;
   1173 }
   1174 #ifdef VK_USE_PLATFORM_XCB_KHR
   1175 uint32_t vk_validate_vkxcbsurfacecreateinfokhr(const VkXcbSurfaceCreateInfoKHR* pStruct)
   1176 {
   1177     if (!validate_VkStructureType(pStruct->sType))
   1178         return 0;
   1179     return 1;
   1180 }
   1181 #endif //VK_USE_PLATFORM_XCB_KHR
   1182 #ifdef VK_USE_PLATFORM_XLIB_KHR
   1183 uint32_t vk_validate_vkxlibsurfacecreateinfokhr(const VkXlibSurfaceCreateInfoKHR* pStruct)
   1184 {
   1185     if (!validate_VkStructureType(pStruct->sType))
   1186         return 0;
   1187     return 1;
   1188 }
   1189 #endif //VK_USE_PLATFORM_XLIB_KHR