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 <stdint.h>
     29 #include <cinttypes>
     30 #include <stdio.h>
     31 #include <stdlib.h>
     32 #include "vk_enum_string_helper.h"
     33 
     34 // Function Prototypes
     35 char* dynamic_display(const void* pStruct, const char* prefix);
     36 char* vk_print_vkallocationcallbacks(const VkAllocationCallbacks* pStruct, const char* prefix);
     37 char* vk_print_vkandroidsurfacecreateinfokhr(const VkAndroidSurfaceCreateInfoKHR* pStruct, const char* prefix);
     38 char* vk_print_vkapplicationinfo(const VkApplicationInfo* pStruct, const char* prefix);
     39 char* vk_print_vkattachmentdescription(const VkAttachmentDescription* pStruct, const char* prefix);
     40 char* vk_print_vkattachmentreference(const VkAttachmentReference* pStruct, const char* prefix);
     41 char* vk_print_vkbindsparseinfo(const VkBindSparseInfo* pStruct, const char* prefix);
     42 char* vk_print_vkbuffercopy(const VkBufferCopy* pStruct, const char* prefix);
     43 char* vk_print_vkbuffercreateinfo(const VkBufferCreateInfo* pStruct, const char* prefix);
     44 char* vk_print_vkbufferimagecopy(const VkBufferImageCopy* pStruct, const char* prefix);
     45 char* vk_print_vkbuffermemorybarrier(const VkBufferMemoryBarrier* pStruct, const char* prefix);
     46 char* vk_print_vkbufferviewcreateinfo(const VkBufferViewCreateInfo* pStruct, const char* prefix);
     47 char* vk_print_vkclearattachment(const VkClearAttachment* pStruct, const char* prefix);
     48 char* vk_print_vkclearcolorvalue(const VkClearColorValue* pStruct, const char* prefix);
     49 char* vk_print_vkcleardepthstencilvalue(const VkClearDepthStencilValue* pStruct, const char* prefix);
     50 char* vk_print_vkclearrect(const VkClearRect* pStruct, const char* prefix);
     51 char* vk_print_vkclearvalue(const VkClearValue* pStruct, const char* prefix);
     52 char* vk_print_vkcommandbufferallocateinfo(const VkCommandBufferAllocateInfo* pStruct, const char* prefix);
     53 char* vk_print_vkcommandbufferbegininfo(const VkCommandBufferBeginInfo* pStruct, const char* prefix);
     54 char* vk_print_vkcommandbufferinheritanceinfo(const VkCommandBufferInheritanceInfo* pStruct, const char* prefix);
     55 char* vk_print_vkcommandpoolcreateinfo(const VkCommandPoolCreateInfo* pStruct, const char* prefix);
     56 char* vk_print_vkcomponentmapping(const VkComponentMapping* pStruct, const char* prefix);
     57 char* vk_print_vkcomputepipelinecreateinfo(const VkComputePipelineCreateInfo* pStruct, const char* prefix);
     58 char* vk_print_vkcopydescriptorset(const VkCopyDescriptorSet* pStruct, const char* prefix);
     59 char* vk_print_vkdebugmarkermarkerinfoext(const VkDebugMarkerMarkerInfoEXT* pStruct, const char* prefix);
     60 char* vk_print_vkdebugmarkerobjectnameinfoext(const VkDebugMarkerObjectNameInfoEXT* pStruct, const char* prefix);
     61 char* vk_print_vkdebugmarkerobjecttaginfoext(const VkDebugMarkerObjectTagInfoEXT* pStruct, const char* prefix);
     62 char* vk_print_vkdebugreportcallbackcreateinfoext(const VkDebugReportCallbackCreateInfoEXT* pStruct, const char* prefix);
     63 char* vk_print_vkdedicatedallocationbuffercreateinfonv(const VkDedicatedAllocationBufferCreateInfoNV* pStruct, const char* prefix);
     64 char* vk_print_vkdedicatedallocationimagecreateinfonv(const VkDedicatedAllocationImageCreateInfoNV* pStruct, const char* prefix);
     65 char* vk_print_vkdedicatedallocationmemoryallocateinfonv(const VkDedicatedAllocationMemoryAllocateInfoNV* pStruct, const char* prefix);
     66 char* vk_print_vkdescriptorbufferinfo(const VkDescriptorBufferInfo* pStruct, const char* prefix);
     67 char* vk_print_vkdescriptorimageinfo(const VkDescriptorImageInfo* pStruct, const char* prefix);
     68 char* vk_print_vkdescriptorpoolcreateinfo(const VkDescriptorPoolCreateInfo* pStruct, const char* prefix);
     69 char* vk_print_vkdescriptorpoolsize(const VkDescriptorPoolSize* pStruct, const char* prefix);
     70 char* vk_print_vkdescriptorsetallocateinfo(const VkDescriptorSetAllocateInfo* pStruct, const char* prefix);
     71 char* vk_print_vkdescriptorsetlayoutbinding(const VkDescriptorSetLayoutBinding* pStruct, const char* prefix);
     72 char* vk_print_vkdescriptorsetlayoutcreateinfo(const VkDescriptorSetLayoutCreateInfo* pStruct, const char* prefix);
     73 char* vk_print_vkdevicecreateinfo(const VkDeviceCreateInfo* pStruct, const char* prefix);
     74 char* vk_print_vkdevicequeuecreateinfo(const VkDeviceQueueCreateInfo* pStruct, const char* prefix);
     75 char* vk_print_vkdispatchindirectcommand(const VkDispatchIndirectCommand* pStruct, const char* prefix);
     76 char* vk_print_vkdisplaymodecreateinfokhr(const VkDisplayModeCreateInfoKHR* pStruct, const char* prefix);
     77 char* vk_print_vkdisplaymodeparameterskhr(const VkDisplayModeParametersKHR* pStruct, const char* prefix);
     78 char* vk_print_vkdisplaymodepropertieskhr(const VkDisplayModePropertiesKHR* pStruct, const char* prefix);
     79 char* vk_print_vkdisplayplanecapabilitieskhr(const VkDisplayPlaneCapabilitiesKHR* pStruct, const char* prefix);
     80 char* vk_print_vkdisplayplanepropertieskhr(const VkDisplayPlanePropertiesKHR* pStruct, const char* prefix);
     81 char* vk_print_vkdisplaypresentinfokhr(const VkDisplayPresentInfoKHR* pStruct, const char* prefix);
     82 char* vk_print_vkdisplaypropertieskhr(const VkDisplayPropertiesKHR* pStruct, const char* prefix);
     83 char* vk_print_vkdisplaysurfacecreateinfokhr(const VkDisplaySurfaceCreateInfoKHR* pStruct, const char* prefix);
     84 char* vk_print_vkdrawindexedindirectcommand(const VkDrawIndexedIndirectCommand* pStruct, const char* prefix);
     85 char* vk_print_vkdrawindirectcommand(const VkDrawIndirectCommand* pStruct, const char* prefix);
     86 char* vk_print_vkeventcreateinfo(const VkEventCreateInfo* pStruct, const char* prefix);
     87 char* vk_print_vkexportmemoryallocateinfonv(const VkExportMemoryAllocateInfoNV* pStruct, const char* prefix);
     88 char* vk_print_vkexportmemorywin32handleinfonv(const VkExportMemoryWin32HandleInfoNV* pStruct, const char* prefix);
     89 char* vk_print_vkextensionproperties(const VkExtensionProperties* pStruct, const char* prefix);
     90 char* vk_print_vkextent2d(const VkExtent2D* pStruct, const char* prefix);
     91 char* vk_print_vkextent3d(const VkExtent3D* pStruct, const char* prefix);
     92 char* vk_print_vkexternalimageformatpropertiesnv(const VkExternalImageFormatPropertiesNV* pStruct, const char* prefix);
     93 char* vk_print_vkexternalmemoryimagecreateinfonv(const VkExternalMemoryImageCreateInfoNV* pStruct, const char* prefix);
     94 char* vk_print_vkfencecreateinfo(const VkFenceCreateInfo* pStruct, const char* prefix);
     95 char* vk_print_vkformatproperties(const VkFormatProperties* pStruct, const char* prefix);
     96 char* vk_print_vkframebuffercreateinfo(const VkFramebufferCreateInfo* pStruct, const char* prefix);
     97 char* vk_print_vkgraphicspipelinecreateinfo(const VkGraphicsPipelineCreateInfo* pStruct, const char* prefix);
     98 char* vk_print_vkimageblit(const VkImageBlit* pStruct, const char* prefix);
     99 char* vk_print_vkimagecopy(const VkImageCopy* pStruct, const char* prefix);
    100 char* vk_print_vkimagecreateinfo(const VkImageCreateInfo* pStruct, const char* prefix);
    101 char* vk_print_vkimageformatproperties(const VkImageFormatProperties* pStruct, const char* prefix);
    102 char* vk_print_vkimagememorybarrier(const VkImageMemoryBarrier* pStruct, const char* prefix);
    103 char* vk_print_vkimageresolve(const VkImageResolve* pStruct, const char* prefix);
    104 char* vk_print_vkimagesubresource(const VkImageSubresource* pStruct, const char* prefix);
    105 char* vk_print_vkimagesubresourcelayers(const VkImageSubresourceLayers* pStruct, const char* prefix);
    106 char* vk_print_vkimagesubresourcerange(const VkImageSubresourceRange* pStruct, const char* prefix);
    107 char* vk_print_vkimageviewcreateinfo(const VkImageViewCreateInfo* pStruct, const char* prefix);
    108 char* vk_print_vkimportmemorywin32handleinfonv(const VkImportMemoryWin32HandleInfoNV* pStruct, const char* prefix);
    109 char* vk_print_vkinstancecreateinfo(const VkInstanceCreateInfo* pStruct, const char* prefix);
    110 char* vk_print_vklayerproperties(const VkLayerProperties* pStruct, const char* prefix);
    111 char* vk_print_vkmappedmemoryrange(const VkMappedMemoryRange* pStruct, const char* prefix);
    112 char* vk_print_vkmemoryallocateinfo(const VkMemoryAllocateInfo* pStruct, const char* prefix);
    113 char* vk_print_vkmemorybarrier(const VkMemoryBarrier* pStruct, const char* prefix);
    114 char* vk_print_vkmemoryheap(const VkMemoryHeap* pStruct, const char* prefix);
    115 char* vk_print_vkmemoryrequirements(const VkMemoryRequirements* pStruct, const char* prefix);
    116 char* vk_print_vkmemorytype(const VkMemoryType* pStruct, const char* prefix);
    117 char* vk_print_vkmirsurfacecreateinfokhr(const VkMirSurfaceCreateInfoKHR* pStruct, const char* prefix);
    118 char* vk_print_vkoffset2d(const VkOffset2D* pStruct, const char* prefix);
    119 char* vk_print_vkoffset3d(const VkOffset3D* pStruct, const char* prefix);
    120 char* vk_print_vkphysicaldevicefeatures(const VkPhysicalDeviceFeatures* pStruct, const char* prefix);
    121 char* vk_print_vkphysicaldevicelimits(const VkPhysicalDeviceLimits* pStruct, const char* prefix);
    122 char* vk_print_vkphysicaldevicememoryproperties(const VkPhysicalDeviceMemoryProperties* pStruct, const char* prefix);
    123 char* vk_print_vkphysicaldeviceproperties(const VkPhysicalDeviceProperties* pStruct, const char* prefix);
    124 char* vk_print_vkphysicaldevicesparseproperties(const VkPhysicalDeviceSparseProperties* pStruct, const char* prefix);
    125 char* vk_print_vkpipelinecachecreateinfo(const VkPipelineCacheCreateInfo* pStruct, const char* prefix);
    126 char* vk_print_vkpipelinecolorblendattachmentstate(const VkPipelineColorBlendAttachmentState* pStruct, const char* prefix);
    127 char* vk_print_vkpipelinecolorblendstatecreateinfo(const VkPipelineColorBlendStateCreateInfo* pStruct, const char* prefix);
    128 char* vk_print_vkpipelinedepthstencilstatecreateinfo(const VkPipelineDepthStencilStateCreateInfo* pStruct, const char* prefix);
    129 char* vk_print_vkpipelinedynamicstatecreateinfo(const VkPipelineDynamicStateCreateInfo* pStruct, const char* prefix);
    130 char* vk_print_vkpipelineinputassemblystatecreateinfo(const VkPipelineInputAssemblyStateCreateInfo* pStruct, const char* prefix);
    131 char* vk_print_vkpipelinelayoutcreateinfo(const VkPipelineLayoutCreateInfo* pStruct, const char* prefix);
    132 char* vk_print_vkpipelinemultisamplestatecreateinfo(const VkPipelineMultisampleStateCreateInfo* pStruct, const char* prefix);
    133 char* vk_print_vkpipelinerasterizationstatecreateinfo(const VkPipelineRasterizationStateCreateInfo* pStruct, const char* prefix);
    134 char* vk_print_vkpipelinerasterizationstaterasterizationorderamd(const VkPipelineRasterizationStateRasterizationOrderAMD* pStruct, const char* prefix);
    135 char* vk_print_vkpipelineshaderstagecreateinfo(const VkPipelineShaderStageCreateInfo* pStruct, const char* prefix);
    136 char* vk_print_vkpipelinetessellationstatecreateinfo(const VkPipelineTessellationStateCreateInfo* pStruct, const char* prefix);
    137 char* vk_print_vkpipelinevertexinputstatecreateinfo(const VkPipelineVertexInputStateCreateInfo* pStruct, const char* prefix);
    138 char* vk_print_vkpipelineviewportstatecreateinfo(const VkPipelineViewportStateCreateInfo* pStruct, const char* prefix);
    139 char* vk_print_vkpresentinfokhr(const VkPresentInfoKHR* pStruct, const char* prefix);
    140 char* vk_print_vkpushconstantrange(const VkPushConstantRange* pStruct, const char* prefix);
    141 char* vk_print_vkquerypoolcreateinfo(const VkQueryPoolCreateInfo* pStruct, const char* prefix);
    142 char* vk_print_vkqueuefamilyproperties(const VkQueueFamilyProperties* pStruct, const char* prefix);
    143 char* vk_print_vkrect2d(const VkRect2D* pStruct, const char* prefix);
    144 char* vk_print_vkrenderpassbegininfo(const VkRenderPassBeginInfo* pStruct, const char* prefix);
    145 char* vk_print_vkrenderpasscreateinfo(const VkRenderPassCreateInfo* pStruct, const char* prefix);
    146 char* vk_print_vksamplercreateinfo(const VkSamplerCreateInfo* pStruct, const char* prefix);
    147 char* vk_print_vksemaphorecreateinfo(const VkSemaphoreCreateInfo* pStruct, const char* prefix);
    148 char* vk_print_vkshadermodulecreateinfo(const VkShaderModuleCreateInfo* pStruct, const char* prefix);
    149 char* vk_print_vksparsebuffermemorybindinfo(const VkSparseBufferMemoryBindInfo* pStruct, const char* prefix);
    150 char* vk_print_vksparseimageformatproperties(const VkSparseImageFormatProperties* pStruct, const char* prefix);
    151 char* vk_print_vksparseimagememorybind(const VkSparseImageMemoryBind* pStruct, const char* prefix);
    152 char* vk_print_vksparseimagememorybindinfo(const VkSparseImageMemoryBindInfo* pStruct, const char* prefix);
    153 char* vk_print_vksparseimagememoryrequirements(const VkSparseImageMemoryRequirements* pStruct, const char* prefix);
    154 char* vk_print_vksparseimageopaquememorybindinfo(const VkSparseImageOpaqueMemoryBindInfo* pStruct, const char* prefix);
    155 char* vk_print_vksparsememorybind(const VkSparseMemoryBind* pStruct, const char* prefix);
    156 char* vk_print_vkspecializationinfo(const VkSpecializationInfo* pStruct, const char* prefix);
    157 char* vk_print_vkspecializationmapentry(const VkSpecializationMapEntry* pStruct, const char* prefix);
    158 char* vk_print_vkstencilopstate(const VkStencilOpState* pStruct, const char* prefix);
    159 char* vk_print_vksubmitinfo(const VkSubmitInfo* pStruct, const char* prefix);
    160 char* vk_print_vksubpassdependency(const VkSubpassDependency* pStruct, const char* prefix);
    161 char* vk_print_vksubpassdescription(const VkSubpassDescription* pStruct, const char* prefix);
    162 char* vk_print_vksubresourcelayout(const VkSubresourceLayout* pStruct, const char* prefix);
    163 char* vk_print_vksurfacecapabilitieskhr(const VkSurfaceCapabilitiesKHR* pStruct, const char* prefix);
    164 char* vk_print_vksurfaceformatkhr(const VkSurfaceFormatKHR* pStruct, const char* prefix);
    165 char* vk_print_vkswapchaincreateinfokhr(const VkSwapchainCreateInfoKHR* pStruct, const char* prefix);
    166 char* vk_print_vkvalidationflagsext(const VkValidationFlagsEXT* pStruct, const char* prefix);
    167 char* vk_print_vkvertexinputattributedescription(const VkVertexInputAttributeDescription* pStruct, const char* prefix);
    168 char* vk_print_vkvertexinputbindingdescription(const VkVertexInputBindingDescription* pStruct, const char* prefix);
    169 char* vk_print_vkviewport(const VkViewport* pStruct, const char* prefix);
    170 char* vk_print_vkwaylandsurfacecreateinfokhr(const VkWaylandSurfaceCreateInfoKHR* pStruct, const char* prefix);
    171 char* vk_print_vkwin32keyedmutexacquirereleaseinfonv(const VkWin32KeyedMutexAcquireReleaseInfoNV* pStruct, const char* prefix);
    172 char* vk_print_vkwin32surfacecreateinfokhr(const VkWin32SurfaceCreateInfoKHR* pStruct, const char* prefix);
    173 char* vk_print_vkwritedescriptorset(const VkWriteDescriptorSet* pStruct, const char* prefix);
    174 char* vk_print_vkxcbsurfacecreateinfokhr(const VkXcbSurfaceCreateInfoKHR* pStruct, const char* prefix);
    175 char* vk_print_vkxlibsurfacecreateinfokhr(const VkXlibSurfaceCreateInfoKHR* pStruct, const char* prefix);
    176 
    177 #if defined(_WIN32)
    178 // Microsoft did not implement C99 in Visual Studio; but started adding it with
    179 // VS2013.  However, VS2013 still did not have snprintf().  The following is a
    180 // work-around.
    181 #define snprintf _snprintf
    182 #endif // _WIN32
    183 
    184 char* vk_print_vkallocationcallbacks(const VkAllocationCallbacks* pStruct, const char* prefix)
    185 {
    186     char* str;
    187     size_t len;
    188     len = sizeof(char)*1024;
    189     str = (char*)malloc(len);
    190     snprintf(str, len, "%spUserData = addr\n%spfnAllocation = addr\n%spfnReallocation = addr\n%spfnFree = addr\n%spfnInternalAllocation = addr\n%spfnInternalFree = addr\n", prefix, prefix, prefix, prefix, prefix, prefix);
    191     return str;
    192 }
    193 char* vk_print_vkandroidsurfacecreateinfokhr(const VkAndroidSurfaceCreateInfoKHR* pStruct, const char* prefix)
    194 {
    195     char* str;
    196     size_t len;
    197     char* tmpStr;
    198     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    199     strcpy(extra_indent, "  ");
    200     strncat(extra_indent, prefix, strlen(prefix));
    201     char* stp_strs[1];
    202     if (pStruct->pNext) {
    203         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
    204         len = 256+strlen(tmpStr);
    205         stp_strs[0] = (char*)malloc(len);
    206         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
    207         free(tmpStr);
    208     }
    209     else
    210         stp_strs[0] = "";
    211     len = strlen(stp_strs[0]) + sizeof(char)*1024;
    212     str = (char*)malloc(len);
    213     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%swindow = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix);
    214     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
    215         if (0 < strlen(stp_strs[stp_index])) {
    216             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    217             free(stp_strs[stp_index]);
    218         }
    219     }
    220     free(extra_indent);
    221     return str;
    222 }
    223 char* vk_print_vkapplicationinfo(const VkApplicationInfo* pStruct, const char* prefix)
    224 {
    225     char* str;
    226     size_t len;
    227     char* tmpStr;
    228     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    229     strcpy(extra_indent, "  ");
    230     strncat(extra_indent, prefix, strlen(prefix));
    231     char* stp_strs[1];
    232     if (pStruct->pNext) {
    233         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
    234         len = 256+strlen(tmpStr);
    235         stp_strs[0] = (char*)malloc(len);
    236         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
    237         free(tmpStr);
    238     }
    239     else
    240         stp_strs[0] = "";
    241     len = strlen(stp_strs[0]) + sizeof(char)*1024;
    242     str = (char*)malloc(len);
    243     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%spApplicationName = addr\n%sapplicationVersion = %u\n%spEngineName = addr\n%sengineVersion = %u\n%sapiVersion = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix, (pStruct->applicationVersion), prefix, prefix, (pStruct->engineVersion), prefix, (pStruct->apiVersion));
    244     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
    245         if (0 < strlen(stp_strs[stp_index])) {
    246             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    247             free(stp_strs[stp_index]);
    248         }
    249     }
    250     free(extra_indent);
    251     return str;
    252 }
    253 char* vk_print_vkattachmentdescription(const VkAttachmentDescription* pStruct, const char* prefix)
    254 {
    255     char* str;
    256     size_t len;
    257     len = sizeof(char)*1024;
    258     str = (char*)malloc(len);
    259     snprintf(str, len, "%sflags = %u\n%sformat = %s\n%ssamples = %s\n%sloadOp = %s\n%sstoreOp = %s\n%sstencilLoadOp = %s\n%sstencilStoreOp = %s\n%sinitialLayout = %s\n%sfinalLayout = %s\n", prefix, (pStruct->flags), prefix, string_VkFormat(pStruct->format), prefix, string_VkSampleCountFlagBits(pStruct->samples), prefix, string_VkAttachmentLoadOp(pStruct->loadOp), prefix, string_VkAttachmentStoreOp(pStruct->storeOp), prefix, string_VkAttachmentLoadOp(pStruct->stencilLoadOp), prefix, string_VkAttachmentStoreOp(pStruct->stencilStoreOp), prefix, string_VkImageLayout(pStruct->initialLayout), prefix, string_VkImageLayout(pStruct->finalLayout));
    260     return str;
    261 }
    262 char* vk_print_vkattachmentreference(const VkAttachmentReference* pStruct, const char* prefix)
    263 {
    264     char* str;
    265     size_t len;
    266     len = sizeof(char)*1024;
    267     str = (char*)malloc(len);
    268     snprintf(str, len, "%sattachment = %u\n%slayout = %s\n", prefix, (pStruct->attachment), prefix, string_VkImageLayout(pStruct->layout));
    269     return str;
    270 }
    271 char* vk_print_vkbindsparseinfo(const VkBindSparseInfo* pStruct, const char* prefix)
    272 {
    273     char* str;
    274     size_t len;
    275     char* tmpStr;
    276     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    277     strcpy(extra_indent, "  ");
    278     strncat(extra_indent, prefix, strlen(prefix));
    279     char* stp_strs[4];
    280     if (pStruct->pNext) {
    281         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
    282         len = 256+strlen(tmpStr);
    283         stp_strs[0] = (char*)malloc(len);
    284         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
    285         free(tmpStr);
    286     }
    287     else
    288         stp_strs[0] = "";
    289     if (pStruct->pBufferBinds) {
    290         tmpStr = vk_print_vksparsebuffermemorybindinfo(pStruct->pBufferBinds, extra_indent);
    291         len = 256+strlen(tmpStr)+strlen(prefix);
    292         stp_strs[1] = (char*)malloc(len);
    293         snprintf(stp_strs[1], len, " %spBufferBinds (addr)\n%s", prefix, tmpStr);
    294     }
    295     else
    296         stp_strs[1] = "";
    297     if (pStruct->pImageOpaqueBinds) {
    298         tmpStr = vk_print_vksparseimageopaquememorybindinfo(pStruct->pImageOpaqueBinds, extra_indent);
    299         len = 256+strlen(tmpStr)+strlen(prefix);
    300         stp_strs[2] = (char*)malloc(len);
    301         snprintf(stp_strs[2], len, " %spImageOpaqueBinds (addr)\n%s", prefix, tmpStr);
    302     }
    303     else
    304         stp_strs[2] = "";
    305     if (pStruct->pImageBinds) {
    306         tmpStr = vk_print_vksparseimagememorybindinfo(pStruct->pImageBinds, extra_indent);
    307         len = 256+strlen(tmpStr)+strlen(prefix);
    308         stp_strs[3] = (char*)malloc(len);
    309         snprintf(stp_strs[3], len, " %spImageBinds (addr)\n%s", prefix, tmpStr);
    310     }
    311     else
    312         stp_strs[3] = "";
    313     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + strlen(stp_strs[3]) + sizeof(char)*1024;
    314     str = (char*)malloc(len);
    315     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%swaitSemaphoreCount = %u\n%spWaitSemaphores = addr\n%sbufferBindCount = %u\n%spBufferBinds = addr\n%simageOpaqueBindCount = %u\n%spImageOpaqueBinds = addr\n%simageBindCount = %u\n%spImageBinds = addr\n%ssignalSemaphoreCount = %u\n%spSignalSemaphores = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->waitSemaphoreCount), prefix, prefix, (pStruct->bufferBindCount), prefix, prefix, (pStruct->imageOpaqueBindCount), prefix, prefix, (pStruct->imageBindCount), prefix, prefix, (pStruct->signalSemaphoreCount), prefix);
    316     for (int32_t stp_index = 3; stp_index >= 0; stp_index--) {
    317         if (0 < strlen(stp_strs[stp_index])) {
    318             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    319             free(stp_strs[stp_index]);
    320         }
    321     }
    322     free(extra_indent);
    323     return str;
    324 }
    325 char* vk_print_vkbuffercopy(const VkBufferCopy* pStruct, const char* prefix)
    326 {
    327     char* str;
    328     size_t len;
    329     len = sizeof(char)*1024;
    330     str = (char*)malloc(len);
    331     snprintf(str, len, "%ssrcOffset = " PRINTF_SIZE_T_SPECIFIER "\n%sdstOffset = " PRINTF_SIZE_T_SPECIFIER "\n%ssize = " PRINTF_SIZE_T_SPECIFIER "\n", prefix, (pStruct->srcOffset), prefix, (pStruct->dstOffset), prefix, (pStruct->size));
    332     return str;
    333 }
    334 char* vk_print_vkbuffercreateinfo(const VkBufferCreateInfo* pStruct, const char* prefix)
    335 {
    336     char* str;
    337     size_t len;
    338     char* tmpStr;
    339     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    340     strcpy(extra_indent, "  ");
    341     strncat(extra_indent, prefix, strlen(prefix));
    342     char* stp_strs[1];
    343     if (pStruct->pNext) {
    344         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
    345         len = 256+strlen(tmpStr);
    346         stp_strs[0] = (char*)malloc(len);
    347         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
    348         free(tmpStr);
    349     }
    350     else
    351         stp_strs[0] = "";
    352     len = strlen(stp_strs[0]) + sizeof(char)*1024;
    353     str = (char*)malloc(len);
    354     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%ssize = " PRINTF_SIZE_T_SPECIFIER "\n%susage = %u\n%ssharingMode = %s\n%squeueFamilyIndexCount = %u\n%spQueueFamilyIndices = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->size), prefix, (pStruct->usage), prefix, string_VkSharingMode(pStruct->sharingMode), prefix, (pStruct->queueFamilyIndexCount), prefix);
    355     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
    356         if (0 < strlen(stp_strs[stp_index])) {
    357             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    358             free(stp_strs[stp_index]);
    359         }
    360     }
    361     free(extra_indent);
    362     return str;
    363 }
    364 char* vk_print_vkbufferimagecopy(const VkBufferImageCopy* pStruct, const char* prefix)
    365 {
    366     char* str;
    367     size_t len;
    368     char* tmpStr;
    369     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    370     strcpy(extra_indent, "  ");
    371     strncat(extra_indent, prefix, strlen(prefix));
    372     char* stp_strs[3];
    373     tmpStr = vk_print_vkimagesubresourcelayers(&pStruct->imageSubresource, extra_indent);
    374     len = 256+strlen(tmpStr);
    375     stp_strs[0] = (char*)malloc(len);
    376     snprintf(stp_strs[0], len, " %simageSubresource (addr)\n%s", prefix, tmpStr);
    377     tmpStr = vk_print_vkoffset3d(&pStruct->imageOffset, extra_indent);
    378     len = 256+strlen(tmpStr);
    379     stp_strs[1] = (char*)malloc(len);
    380     snprintf(stp_strs[1], len, " %simageOffset (addr)\n%s", prefix, tmpStr);
    381     tmpStr = vk_print_vkextent3d(&pStruct->imageExtent, extra_indent);
    382     len = 256+strlen(tmpStr);
    383     stp_strs[2] = (char*)malloc(len);
    384     snprintf(stp_strs[2], len, " %simageExtent (addr)\n%s", prefix, tmpStr);
    385     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
    386     str = (char*)malloc(len);
    387     snprintf(str, len, "%sbufferOffset = " PRINTF_SIZE_T_SPECIFIER "\n%sbufferRowLength = %u\n%sbufferImageHeight = %u\n%simageSubresource = addr\n%simageOffset = addr\n%simageExtent = addr\n", prefix, (pStruct->bufferOffset), prefix, (pStruct->bufferRowLength), prefix, (pStruct->bufferImageHeight), prefix, prefix, prefix);
    388     for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
    389         if (0 < strlen(stp_strs[stp_index])) {
    390             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    391             free(stp_strs[stp_index]);
    392         }
    393     }
    394     free(extra_indent);
    395     return str;
    396 }
    397 char* vk_print_vkbuffermemorybarrier(const VkBufferMemoryBarrier* pStruct, const char* prefix)
    398 {
    399     char* str;
    400     size_t len;
    401     char* tmpStr;
    402     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    403     strcpy(extra_indent, "  ");
    404     strncat(extra_indent, prefix, strlen(prefix));
    405     char* stp_strs[1];
    406     if (pStruct->pNext) {
    407         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
    408         len = 256+strlen(tmpStr);
    409         stp_strs[0] = (char*)malloc(len);
    410         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
    411         free(tmpStr);
    412     }
    413     else
    414         stp_strs[0] = "";
    415     len = strlen(stp_strs[0]) + sizeof(char)*1024;
    416     str = (char*)malloc(len);
    417     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%ssrcAccessMask = %u\n%sdstAccessMask = %u\n%ssrcQueueFamilyIndex = %u\n%sdstQueueFamilyIndex = %u\n%sbuffer = addr\n%soffset = " PRINTF_SIZE_T_SPECIFIER "\n%ssize = " PRINTF_SIZE_T_SPECIFIER "\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->srcAccessMask), prefix, (pStruct->dstAccessMask), prefix, (pStruct->srcQueueFamilyIndex), prefix, (pStruct->dstQueueFamilyIndex), prefix, prefix, (pStruct->offset), prefix, (pStruct->size));
    418     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
    419         if (0 < strlen(stp_strs[stp_index])) {
    420             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    421             free(stp_strs[stp_index]);
    422         }
    423     }
    424     free(extra_indent);
    425     return str;
    426 }
    427 char* vk_print_vkbufferviewcreateinfo(const VkBufferViewCreateInfo* pStruct, const char* prefix)
    428 {
    429     char* str;
    430     size_t len;
    431     char* tmpStr;
    432     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    433     strcpy(extra_indent, "  ");
    434     strncat(extra_indent, prefix, strlen(prefix));
    435     char* stp_strs[1];
    436     if (pStruct->pNext) {
    437         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
    438         len = 256+strlen(tmpStr);
    439         stp_strs[0] = (char*)malloc(len);
    440         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
    441         free(tmpStr);
    442     }
    443     else
    444         stp_strs[0] = "";
    445     len = strlen(stp_strs[0]) + sizeof(char)*1024;
    446     str = (char*)malloc(len);
    447     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sbuffer = addr\n%sformat = %s\n%soffset = " PRINTF_SIZE_T_SPECIFIER "\n%srange = " PRINTF_SIZE_T_SPECIFIER "\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix, string_VkFormat(pStruct->format), prefix, (pStruct->offset), prefix, (pStruct->range));
    448     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
    449         if (0 < strlen(stp_strs[stp_index])) {
    450             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    451             free(stp_strs[stp_index]);
    452         }
    453     }
    454     free(extra_indent);
    455     return str;
    456 }
    457 char* vk_print_vkclearattachment(const VkClearAttachment* pStruct, const char* prefix)
    458 {
    459     char* str;
    460     size_t len;
    461     char* tmpStr;
    462     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    463     strcpy(extra_indent, "  ");
    464     strncat(extra_indent, prefix, strlen(prefix));
    465     char* stp_strs[1];
    466     tmpStr = vk_print_vkclearvalue(&pStruct->clearValue, extra_indent);
    467     len = 256+strlen(tmpStr);
    468     stp_strs[0] = (char*)malloc(len);
    469     snprintf(stp_strs[0], len, " %sclearValue (addr)\n%s", prefix, tmpStr);
    470     len = strlen(stp_strs[0]) + sizeof(char)*1024;
    471     str = (char*)malloc(len);
    472     snprintf(str, len, "%saspectMask = %u\n%scolorAttachment = %u\n%sclearValue = addr\n", prefix, (pStruct->aspectMask), prefix, (pStruct->colorAttachment), prefix);
    473     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
    474         if (0 < strlen(stp_strs[stp_index])) {
    475             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    476             free(stp_strs[stp_index]);
    477         }
    478     }
    479     free(extra_indent);
    480     return str;
    481 }
    482 char* vk_print_vkclearcolorvalue(const VkClearColorValue* pStruct, const char* prefix)
    483 {
    484     char* str;
    485     size_t len;
    486     len = sizeof(char)*1024;
    487     str = (char*)malloc(len);
    488     snprintf(str, len, "%sfloat32 = addr\n%sint32 = addr\n%suint32 = addr\n", prefix, prefix, prefix);
    489     return str;
    490 }
    491 char* vk_print_vkcleardepthstencilvalue(const VkClearDepthStencilValue* pStruct, const char* prefix)
    492 {
    493     char* str;
    494     size_t len;
    495     len = sizeof(char)*1024;
    496     str = (char*)malloc(len);
    497     snprintf(str, len, "%sdepth = %f\n%sstencil = %u\n", prefix, (pStruct->depth), prefix, (pStruct->stencil));
    498     return str;
    499 }
    500 char* vk_print_vkclearrect(const VkClearRect* pStruct, const char* prefix)
    501 {
    502     char* str;
    503     size_t len;
    504     char* tmpStr;
    505     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    506     strcpy(extra_indent, "  ");
    507     strncat(extra_indent, prefix, strlen(prefix));
    508     char* stp_strs[1];
    509     tmpStr = vk_print_vkrect2d(&pStruct->rect, extra_indent);
    510     len = 256+strlen(tmpStr);
    511     stp_strs[0] = (char*)malloc(len);
    512     snprintf(stp_strs[0], len, " %srect (addr)\n%s", prefix, tmpStr);
    513     len = strlen(stp_strs[0]) + sizeof(char)*1024;
    514     str = (char*)malloc(len);
    515     snprintf(str, len, "%srect = addr\n%sbaseArrayLayer = %u\n%slayerCount = %u\n", prefix, prefix, (pStruct->baseArrayLayer), prefix, (pStruct->layerCount));
    516     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
    517         if (0 < strlen(stp_strs[stp_index])) {
    518             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    519             free(stp_strs[stp_index]);
    520         }
    521     }
    522     free(extra_indent);
    523     return str;
    524 }
    525 char* vk_print_vkclearvalue(const VkClearValue* pStruct, const char* prefix)
    526 {
    527     char* str;
    528     size_t len;
    529     char* tmpStr;
    530     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    531     strcpy(extra_indent, "  ");
    532     strncat(extra_indent, prefix, strlen(prefix));
    533     char* stp_strs[2];
    534     tmpStr = vk_print_vkclearcolorvalue(&pStruct->color, extra_indent);
    535     len = 256+strlen(tmpStr);
    536     stp_strs[0] = (char*)malloc(len);
    537     snprintf(stp_strs[0], len, " %scolor (addr)\n%s", prefix, tmpStr);
    538     tmpStr = vk_print_vkcleardepthstencilvalue(&pStruct->depthStencil, extra_indent);
    539     len = 256+strlen(tmpStr);
    540     stp_strs[1] = (char*)malloc(len);
    541     snprintf(stp_strs[1], len, " %sdepthStencil (addr)\n%s", prefix, tmpStr);
    542     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
    543     str = (char*)malloc(len);
    544     snprintf(str, len, "%scolor = addr\n%sdepthStencil = addr\n", prefix, prefix);
    545     for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
    546         if (0 < strlen(stp_strs[stp_index])) {
    547             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    548             free(stp_strs[stp_index]);
    549         }
    550     }
    551     free(extra_indent);
    552     return str;
    553 }
    554 char* vk_print_vkcommandbufferallocateinfo(const VkCommandBufferAllocateInfo* pStruct, const char* prefix)
    555 {
    556     char* str;
    557     size_t len;
    558     char* tmpStr;
    559     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    560     strcpy(extra_indent, "  ");
    561     strncat(extra_indent, prefix, strlen(prefix));
    562     char* stp_strs[1];
    563     if (pStruct->pNext) {
    564         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
    565         len = 256+strlen(tmpStr);
    566         stp_strs[0] = (char*)malloc(len);
    567         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
    568         free(tmpStr);
    569     }
    570     else
    571         stp_strs[0] = "";
    572     len = strlen(stp_strs[0]) + sizeof(char)*1024;
    573     str = (char*)malloc(len);
    574     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%scommandPool = addr\n%slevel = %s\n%scommandBufferCount = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix, string_VkCommandBufferLevel(pStruct->level), prefix, (pStruct->commandBufferCount));
    575     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
    576         if (0 < strlen(stp_strs[stp_index])) {
    577             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    578             free(stp_strs[stp_index]);
    579         }
    580     }
    581     free(extra_indent);
    582     return str;
    583 }
    584 char* vk_print_vkcommandbufferbegininfo(const VkCommandBufferBeginInfo* pStruct, const char* prefix)
    585 {
    586     char* str;
    587     size_t len;
    588     char* tmpStr;
    589     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    590     strcpy(extra_indent, "  ");
    591     strncat(extra_indent, prefix, strlen(prefix));
    592     char* stp_strs[2];
    593     if (pStruct->pNext) {
    594         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
    595         len = 256+strlen(tmpStr);
    596         stp_strs[0] = (char*)malloc(len);
    597         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
    598         free(tmpStr);
    599     }
    600     else
    601         stp_strs[0] = "";
    602     if (pStruct->pInheritanceInfo) {
    603         tmpStr = vk_print_vkcommandbufferinheritanceinfo(pStruct->pInheritanceInfo, extra_indent);
    604         len = 256+strlen(tmpStr)+strlen(prefix);
    605         stp_strs[1] = (char*)malloc(len);
    606         snprintf(stp_strs[1], len, " %spInheritanceInfo (addr)\n%s", prefix, tmpStr);
    607     }
    608     else
    609         stp_strs[1] = "";
    610     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
    611     str = (char*)malloc(len);
    612     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%spInheritanceInfo = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix);
    613     for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
    614         if (0 < strlen(stp_strs[stp_index])) {
    615             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    616             free(stp_strs[stp_index]);
    617         }
    618     }
    619     free(extra_indent);
    620     return str;
    621 }
    622 char* vk_print_vkcommandbufferinheritanceinfo(const VkCommandBufferInheritanceInfo* pStruct, const char* prefix)
    623 {
    624     char* str;
    625     size_t len;
    626     char* tmpStr;
    627     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    628     strcpy(extra_indent, "  ");
    629     strncat(extra_indent, prefix, strlen(prefix));
    630     char* stp_strs[1];
    631     if (pStruct->pNext) {
    632         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
    633         len = 256+strlen(tmpStr);
    634         stp_strs[0] = (char*)malloc(len);
    635         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
    636         free(tmpStr);
    637     }
    638     else
    639         stp_strs[0] = "";
    640     len = strlen(stp_strs[0]) + sizeof(char)*1024;
    641     str = (char*)malloc(len);
    642     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%srenderPass = addr\n%ssubpass = %u\n%sframebuffer = addr\n%socclusionQueryEnable = %s\n%squeryFlags = %u\n%spipelineStatistics = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix, (pStruct->subpass), prefix, prefix, (pStruct->occlusionQueryEnable) ? "TRUE" : "FALSE", prefix, (pStruct->queryFlags), prefix, (pStruct->pipelineStatistics));
    643     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
    644         if (0 < strlen(stp_strs[stp_index])) {
    645             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    646             free(stp_strs[stp_index]);
    647         }
    648     }
    649     free(extra_indent);
    650     return str;
    651 }
    652 char* vk_print_vkcommandpoolcreateinfo(const VkCommandPoolCreateInfo* pStruct, const char* prefix)
    653 {
    654     char* str;
    655     size_t len;
    656     char* tmpStr;
    657     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    658     strcpy(extra_indent, "  ");
    659     strncat(extra_indent, prefix, strlen(prefix));
    660     char* stp_strs[1];
    661     if (pStruct->pNext) {
    662         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
    663         len = 256+strlen(tmpStr);
    664         stp_strs[0] = (char*)malloc(len);
    665         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
    666         free(tmpStr);
    667     }
    668     else
    669         stp_strs[0] = "";
    670     len = strlen(stp_strs[0]) + sizeof(char)*1024;
    671     str = (char*)malloc(len);
    672     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%squeueFamilyIndex = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->queueFamilyIndex));
    673     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
    674         if (0 < strlen(stp_strs[stp_index])) {
    675             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    676             free(stp_strs[stp_index]);
    677         }
    678     }
    679     free(extra_indent);
    680     return str;
    681 }
    682 char* vk_print_vkcomponentmapping(const VkComponentMapping* pStruct, const char* prefix)
    683 {
    684     char* str;
    685     size_t len;
    686     len = sizeof(char)*1024;
    687     str = (char*)malloc(len);
    688     snprintf(str, len, "%sr = %s\n%sg = %s\n%sb = %s\n%sa = %s\n", prefix, string_VkComponentSwizzle(pStruct->r), prefix, string_VkComponentSwizzle(pStruct->g), prefix, string_VkComponentSwizzle(pStruct->b), prefix, string_VkComponentSwizzle(pStruct->a));
    689     return str;
    690 }
    691 char* vk_print_vkcomputepipelinecreateinfo(const VkComputePipelineCreateInfo* pStruct, const char* prefix)
    692 {
    693     char* str;
    694     size_t len;
    695     char* tmpStr;
    696     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    697     strcpy(extra_indent, "  ");
    698     strncat(extra_indent, prefix, strlen(prefix));
    699     char* stp_strs[2];
    700     if (pStruct->pNext) {
    701         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
    702         len = 256+strlen(tmpStr);
    703         stp_strs[0] = (char*)malloc(len);
    704         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
    705         free(tmpStr);
    706     }
    707     else
    708         stp_strs[0] = "";
    709     tmpStr = vk_print_vkpipelineshaderstagecreateinfo(&pStruct->stage, extra_indent);
    710     len = 256+strlen(tmpStr);
    711     stp_strs[1] = (char*)malloc(len);
    712     snprintf(stp_strs[1], len, " %sstage (addr)\n%s", prefix, tmpStr);
    713     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
    714     str = (char*)malloc(len);
    715     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sstage = addr\n%slayout = addr\n%sbasePipelineHandle = addr\n%sbasePipelineIndex = %i\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix, prefix, prefix, (pStruct->basePipelineIndex));
    716     for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
    717         if (0 < strlen(stp_strs[stp_index])) {
    718             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    719             free(stp_strs[stp_index]);
    720         }
    721     }
    722     free(extra_indent);
    723     return str;
    724 }
    725 char* vk_print_vkcopydescriptorset(const VkCopyDescriptorSet* pStruct, const char* prefix)
    726 {
    727     char* str;
    728     size_t len;
    729     char* tmpStr;
    730     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    731     strcpy(extra_indent, "  ");
    732     strncat(extra_indent, prefix, strlen(prefix));
    733     char* stp_strs[1];
    734     if (pStruct->pNext) {
    735         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
    736         len = 256+strlen(tmpStr);
    737         stp_strs[0] = (char*)malloc(len);
    738         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
    739         free(tmpStr);
    740     }
    741     else
    742         stp_strs[0] = "";
    743     len = strlen(stp_strs[0]) + sizeof(char)*1024;
    744     str = (char*)malloc(len);
    745     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%ssrcSet = addr\n%ssrcBinding = %u\n%ssrcArrayElement = %u\n%sdstSet = addr\n%sdstBinding = %u\n%sdstArrayElement = %u\n%sdescriptorCount = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix, (pStruct->srcBinding), prefix, (pStruct->srcArrayElement), prefix, prefix, (pStruct->dstBinding), prefix, (pStruct->dstArrayElement), prefix, (pStruct->descriptorCount));
    746     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
    747         if (0 < strlen(stp_strs[stp_index])) {
    748             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    749             free(stp_strs[stp_index]);
    750         }
    751     }
    752     free(extra_indent);
    753     return str;
    754 }
    755 char* vk_print_vkdebugmarkermarkerinfoext(const VkDebugMarkerMarkerInfoEXT* pStruct, const char* prefix)
    756 {
    757     char* str;
    758     size_t len;
    759     char* tmpStr;
    760     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    761     strcpy(extra_indent, "  ");
    762     strncat(extra_indent, prefix, strlen(prefix));
    763     char* stp_strs[1];
    764     if (pStruct->pNext) {
    765         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
    766         len = 256+strlen(tmpStr);
    767         stp_strs[0] = (char*)malloc(len);
    768         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
    769         free(tmpStr);
    770     }
    771     else
    772         stp_strs[0] = "";
    773     len = strlen(stp_strs[0]) + sizeof(char)*1024;
    774     str = (char*)malloc(len);
    775     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%spMarkerName = addr\n%scolor = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix);
    776     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
    777         if (0 < strlen(stp_strs[stp_index])) {
    778             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    779             free(stp_strs[stp_index]);
    780         }
    781     }
    782     free(extra_indent);
    783     return str;
    784 }
    785 char* vk_print_vkdebugmarkerobjectnameinfoext(const VkDebugMarkerObjectNameInfoEXT* pStruct, const char* prefix)
    786 {
    787     char* str;
    788     size_t len;
    789     char* tmpStr;
    790     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    791     strcpy(extra_indent, "  ");
    792     strncat(extra_indent, prefix, strlen(prefix));
    793     char* stp_strs[1];
    794     if (pStruct->pNext) {
    795         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
    796         len = 256+strlen(tmpStr);
    797         stp_strs[0] = (char*)malloc(len);
    798         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
    799         free(tmpStr);
    800     }
    801     else
    802         stp_strs[0] = "";
    803     len = strlen(stp_strs[0]) + sizeof(char)*1024;
    804     str = (char*)malloc(len);
    805     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sobjectType = %s\n%sobject = %" PRId64 "\n%spObjectName = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, string_VkDebugReportObjectTypeEXT(pStruct->objectType), prefix, (pStruct->object), prefix);
    806     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
    807         if (0 < strlen(stp_strs[stp_index])) {
    808             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    809             free(stp_strs[stp_index]);
    810         }
    811     }
    812     free(extra_indent);
    813     return str;
    814 }
    815 char* vk_print_vkdebugmarkerobjecttaginfoext(const VkDebugMarkerObjectTagInfoEXT* pStruct, const char* prefix)
    816 {
    817     char* str;
    818     size_t len;
    819     char* tmpStr;
    820     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    821     strcpy(extra_indent, "  ");
    822     strncat(extra_indent, prefix, strlen(prefix));
    823     char* stp_strs[1];
    824     if (pStruct->pNext) {
    825         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
    826         len = 256+strlen(tmpStr);
    827         stp_strs[0] = (char*)malloc(len);
    828         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
    829         free(tmpStr);
    830     }
    831     else
    832         stp_strs[0] = "";
    833     len = strlen(stp_strs[0]) + sizeof(char)*1024;
    834     str = (char*)malloc(len);
    835     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sobjectType = %s\n%sobject = %" PRId64 "\n%stagName = %" PRId64 "\n%stagSize = " PRINTF_SIZE_T_SPECIFIER "\n%spTag = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, string_VkDebugReportObjectTypeEXT(pStruct->objectType), prefix, (pStruct->object), prefix, (pStruct->tagName), prefix, (pStruct->tagSize), prefix);
    836     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
    837         if (0 < strlen(stp_strs[stp_index])) {
    838             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    839             free(stp_strs[stp_index]);
    840         }
    841     }
    842     free(extra_indent);
    843     return str;
    844 }
    845 char* vk_print_vkdebugreportcallbackcreateinfoext(const VkDebugReportCallbackCreateInfoEXT* pStruct, const char* prefix)
    846 {
    847     char* str;
    848     size_t len;
    849     char* tmpStr;
    850     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    851     strcpy(extra_indent, "  ");
    852     strncat(extra_indent, prefix, strlen(prefix));
    853     char* stp_strs[1];
    854     if (pStruct->pNext) {
    855         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
    856         len = 256+strlen(tmpStr);
    857         stp_strs[0] = (char*)malloc(len);
    858         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
    859         free(tmpStr);
    860     }
    861     else
    862         stp_strs[0] = "";
    863     len = strlen(stp_strs[0]) + sizeof(char)*1024;
    864     str = (char*)malloc(len);
    865     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%spfnCallback = addr\n%spUserData = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix);
    866     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
    867         if (0 < strlen(stp_strs[stp_index])) {
    868             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    869             free(stp_strs[stp_index]);
    870         }
    871     }
    872     free(extra_indent);
    873     return str;
    874 }
    875 char* vk_print_vkdedicatedallocationbuffercreateinfonv(const VkDedicatedAllocationBufferCreateInfoNV* pStruct, const char* prefix)
    876 {
    877     char* str;
    878     size_t len;
    879     char* tmpStr;
    880     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    881     strcpy(extra_indent, "  ");
    882     strncat(extra_indent, prefix, strlen(prefix));
    883     char* stp_strs[1];
    884     if (pStruct->pNext) {
    885         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
    886         len = 256+strlen(tmpStr);
    887         stp_strs[0] = (char*)malloc(len);
    888         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
    889         free(tmpStr);
    890     }
    891     else
    892         stp_strs[0] = "";
    893     len = strlen(stp_strs[0]) + sizeof(char)*1024;
    894     str = (char*)malloc(len);
    895     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sdedicatedAllocation = %s\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->dedicatedAllocation) ? "TRUE" : "FALSE");
    896     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
    897         if (0 < strlen(stp_strs[stp_index])) {
    898             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    899             free(stp_strs[stp_index]);
    900         }
    901     }
    902     free(extra_indent);
    903     return str;
    904 }
    905 char* vk_print_vkdedicatedallocationimagecreateinfonv(const VkDedicatedAllocationImageCreateInfoNV* pStruct, const char* prefix)
    906 {
    907     char* str;
    908     size_t len;
    909     char* tmpStr;
    910     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    911     strcpy(extra_indent, "  ");
    912     strncat(extra_indent, prefix, strlen(prefix));
    913     char* stp_strs[1];
    914     if (pStruct->pNext) {
    915         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
    916         len = 256+strlen(tmpStr);
    917         stp_strs[0] = (char*)malloc(len);
    918         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
    919         free(tmpStr);
    920     }
    921     else
    922         stp_strs[0] = "";
    923     len = strlen(stp_strs[0]) + sizeof(char)*1024;
    924     str = (char*)malloc(len);
    925     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sdedicatedAllocation = %s\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->dedicatedAllocation) ? "TRUE" : "FALSE");
    926     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
    927         if (0 < strlen(stp_strs[stp_index])) {
    928             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    929             free(stp_strs[stp_index]);
    930         }
    931     }
    932     free(extra_indent);
    933     return str;
    934 }
    935 char* vk_print_vkdedicatedallocationmemoryallocateinfonv(const VkDedicatedAllocationMemoryAllocateInfoNV* pStruct, const char* prefix)
    936 {
    937     char* str;
    938     size_t len;
    939     char* tmpStr;
    940     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    941     strcpy(extra_indent, "  ");
    942     strncat(extra_indent, prefix, strlen(prefix));
    943     char* stp_strs[1];
    944     if (pStruct->pNext) {
    945         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
    946         len = 256+strlen(tmpStr);
    947         stp_strs[0] = (char*)malloc(len);
    948         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
    949         free(tmpStr);
    950     }
    951     else
    952         stp_strs[0] = "";
    953     len = strlen(stp_strs[0]) + sizeof(char)*1024;
    954     str = (char*)malloc(len);
    955     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%simage = addr\n%sbuffer = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix);
    956     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
    957         if (0 < strlen(stp_strs[stp_index])) {
    958             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
    959             free(stp_strs[stp_index]);
    960         }
    961     }
    962     free(extra_indent);
    963     return str;
    964 }
    965 char* vk_print_vkdescriptorbufferinfo(const VkDescriptorBufferInfo* pStruct, const char* prefix)
    966 {
    967     char* str;
    968     size_t len;
    969     len = sizeof(char)*1024;
    970     str = (char*)malloc(len);
    971     snprintf(str, len, "%sbuffer = addr\n%soffset = " PRINTF_SIZE_T_SPECIFIER "\n%srange = " PRINTF_SIZE_T_SPECIFIER "\n", prefix, prefix, (pStruct->offset), prefix, (pStruct->range));
    972     return str;
    973 }
    974 char* vk_print_vkdescriptorimageinfo(const VkDescriptorImageInfo* pStruct, const char* prefix)
    975 {
    976     char* str;
    977     size_t len;
    978     len = sizeof(char)*1024;
    979     str = (char*)malloc(len);
    980     snprintf(str, len, "%ssampler = addr\n%simageView = addr\n%simageLayout = %s\n", prefix, prefix, prefix, string_VkImageLayout(pStruct->imageLayout));
    981     return str;
    982 }
    983 char* vk_print_vkdescriptorpoolcreateinfo(const VkDescriptorPoolCreateInfo* pStruct, const char* prefix)
    984 {
    985     char* str;
    986     size_t len;
    987     char* tmpStr;
    988     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
    989     strcpy(extra_indent, "  ");
    990     strncat(extra_indent, prefix, strlen(prefix));
    991     char* stp_strs[2];
    992     if (pStruct->pNext) {
    993         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
    994         len = 256+strlen(tmpStr);
    995         stp_strs[0] = (char*)malloc(len);
    996         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
    997         free(tmpStr);
    998     }
    999     else
   1000         stp_strs[0] = "";
   1001     if (pStruct->pPoolSizes) {
   1002         tmpStr = vk_print_vkdescriptorpoolsize(pStruct->pPoolSizes, extra_indent);
   1003         len = 256+strlen(tmpStr)+strlen(prefix);
   1004         stp_strs[1] = (char*)malloc(len);
   1005         snprintf(stp_strs[1], len, " %spPoolSizes (addr)\n%s", prefix, tmpStr);
   1006     }
   1007     else
   1008         stp_strs[1] = "";
   1009     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
   1010     str = (char*)malloc(len);
   1011     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%smaxSets = %u\n%spoolSizeCount = %u\n%spPoolSizes = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->maxSets), prefix, (pStruct->poolSizeCount), prefix);
   1012     for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
   1013         if (0 < strlen(stp_strs[stp_index])) {
   1014             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1015             free(stp_strs[stp_index]);
   1016         }
   1017     }
   1018     free(extra_indent);
   1019     return str;
   1020 }
   1021 char* vk_print_vkdescriptorpoolsize(const VkDescriptorPoolSize* pStruct, const char* prefix)
   1022 {
   1023     char* str;
   1024     size_t len;
   1025     len = sizeof(char)*1024;
   1026     str = (char*)malloc(len);
   1027     snprintf(str, len, "%stype = %s\n%sdescriptorCount = %u\n", prefix, string_VkDescriptorType(pStruct->type), prefix, (pStruct->descriptorCount));
   1028     return str;
   1029 }
   1030 char* vk_print_vkdescriptorsetallocateinfo(const VkDescriptorSetAllocateInfo* pStruct, const char* prefix)
   1031 {
   1032     char* str;
   1033     size_t len;
   1034     char* tmpStr;
   1035     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1036     strcpy(extra_indent, "  ");
   1037     strncat(extra_indent, prefix, strlen(prefix));
   1038     char* stp_strs[1];
   1039     if (pStruct->pNext) {
   1040         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   1041         len = 256+strlen(tmpStr);
   1042         stp_strs[0] = (char*)malloc(len);
   1043         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   1044         free(tmpStr);
   1045     }
   1046     else
   1047         stp_strs[0] = "";
   1048     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   1049     str = (char*)malloc(len);
   1050     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sdescriptorPool = addr\n%sdescriptorSetCount = %u\n%spSetLayouts = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix, (pStruct->descriptorSetCount), prefix);
   1051     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   1052         if (0 < strlen(stp_strs[stp_index])) {
   1053             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1054             free(stp_strs[stp_index]);
   1055         }
   1056     }
   1057     free(extra_indent);
   1058     return str;
   1059 }
   1060 char* vk_print_vkdescriptorsetlayoutbinding(const VkDescriptorSetLayoutBinding* pStruct, const char* prefix)
   1061 {
   1062     char* str;
   1063     size_t len;
   1064     len = sizeof(char)*1024;
   1065     str = (char*)malloc(len);
   1066     snprintf(str, len, "%sbinding = %u\n%sdescriptorType = %s\n%sdescriptorCount = %u\n%sstageFlags = %u\n%spImmutableSamplers = addr\n", prefix, (pStruct->binding), prefix, string_VkDescriptorType(pStruct->descriptorType), prefix, (pStruct->descriptorCount), prefix, (pStruct->stageFlags), prefix);
   1067     return str;
   1068 }
   1069 char* vk_print_vkdescriptorsetlayoutcreateinfo(const VkDescriptorSetLayoutCreateInfo* pStruct, const char* prefix)
   1070 {
   1071     char* str;
   1072     size_t len;
   1073     char* tmpStr;
   1074     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1075     strcpy(extra_indent, "  ");
   1076     strncat(extra_indent, prefix, strlen(prefix));
   1077     char* stp_strs[2];
   1078     if (pStruct->pNext) {
   1079         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   1080         len = 256+strlen(tmpStr);
   1081         stp_strs[0] = (char*)malloc(len);
   1082         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   1083         free(tmpStr);
   1084     }
   1085     else
   1086         stp_strs[0] = "";
   1087     if (pStruct->pBindings) {
   1088         tmpStr = vk_print_vkdescriptorsetlayoutbinding(pStruct->pBindings, extra_indent);
   1089         len = 256+strlen(tmpStr)+strlen(prefix);
   1090         stp_strs[1] = (char*)malloc(len);
   1091         snprintf(stp_strs[1], len, " %spBindings (addr)\n%s", prefix, tmpStr);
   1092     }
   1093     else
   1094         stp_strs[1] = "";
   1095     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
   1096     str = (char*)malloc(len);
   1097     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sbindingCount = %u\n%spBindings = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->bindingCount), prefix);
   1098     for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
   1099         if (0 < strlen(stp_strs[stp_index])) {
   1100             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1101             free(stp_strs[stp_index]);
   1102         }
   1103     }
   1104     free(extra_indent);
   1105     return str;
   1106 }
   1107 char* vk_print_vkdevicecreateinfo(const VkDeviceCreateInfo* pStruct, const char* prefix)
   1108 {
   1109     char* str;
   1110     size_t len;
   1111     char* tmpStr;
   1112     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1113     strcpy(extra_indent, "  ");
   1114     strncat(extra_indent, prefix, strlen(prefix));
   1115     char* stp_strs[3];
   1116     if (pStruct->pNext) {
   1117         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   1118         len = 256+strlen(tmpStr);
   1119         stp_strs[0] = (char*)malloc(len);
   1120         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   1121         free(tmpStr);
   1122     }
   1123     else
   1124         stp_strs[0] = "";
   1125     if (pStruct->pQueueCreateInfos) {
   1126         tmpStr = vk_print_vkdevicequeuecreateinfo(pStruct->pQueueCreateInfos, extra_indent);
   1127         len = 256+strlen(tmpStr)+strlen(prefix);
   1128         stp_strs[1] = (char*)malloc(len);
   1129         snprintf(stp_strs[1], len, " %spQueueCreateInfos (addr)\n%s", prefix, tmpStr);
   1130     }
   1131     else
   1132         stp_strs[1] = "";
   1133     if (pStruct->pEnabledFeatures) {
   1134         tmpStr = vk_print_vkphysicaldevicefeatures(pStruct->pEnabledFeatures, extra_indent);
   1135         len = 256+strlen(tmpStr)+strlen(prefix);
   1136         stp_strs[2] = (char*)malloc(len);
   1137         snprintf(stp_strs[2], len, " %spEnabledFeatures (addr)\n%s", prefix, tmpStr);
   1138     }
   1139     else
   1140         stp_strs[2] = "";
   1141     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
   1142     str = (char*)malloc(len);
   1143     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%squeueCreateInfoCount = %u\n%spQueueCreateInfos = addr\n%senabledLayerCount = %u\n%sppEnabledLayerNames = %s\n%senabledExtensionCount = %u\n%sppEnabledExtensionNames = %s\n%spEnabledFeatures = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->queueCreateInfoCount), prefix, prefix, (pStruct->enabledLayerCount), prefix, (pStruct->ppEnabledLayerNames)[0], prefix, (pStruct->enabledExtensionCount), prefix, (pStruct->ppEnabledExtensionNames)[0], prefix);
   1144     for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
   1145         if (0 < strlen(stp_strs[stp_index])) {
   1146             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1147             free(stp_strs[stp_index]);
   1148         }
   1149     }
   1150     free(extra_indent);
   1151     return str;
   1152 }
   1153 char* vk_print_vkdevicequeuecreateinfo(const VkDeviceQueueCreateInfo* pStruct, const char* prefix)
   1154 {
   1155     char* str;
   1156     size_t len;
   1157     char* tmpStr;
   1158     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1159     strcpy(extra_indent, "  ");
   1160     strncat(extra_indent, prefix, strlen(prefix));
   1161     char* stp_strs[1];
   1162     if (pStruct->pNext) {
   1163         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   1164         len = 256+strlen(tmpStr);
   1165         stp_strs[0] = (char*)malloc(len);
   1166         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   1167         free(tmpStr);
   1168     }
   1169     else
   1170         stp_strs[0] = "";
   1171     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   1172     str = (char*)malloc(len);
   1173     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%squeueFamilyIndex = %u\n%squeueCount = %u\n%spQueuePriorities = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->queueFamilyIndex), prefix, (pStruct->queueCount), prefix);
   1174     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   1175         if (0 < strlen(stp_strs[stp_index])) {
   1176             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1177             free(stp_strs[stp_index]);
   1178         }
   1179     }
   1180     free(extra_indent);
   1181     return str;
   1182 }
   1183 char* vk_print_vkdispatchindirectcommand(const VkDispatchIndirectCommand* pStruct, const char* prefix)
   1184 {
   1185     char* str;
   1186     size_t len;
   1187     len = sizeof(char)*1024;
   1188     str = (char*)malloc(len);
   1189     snprintf(str, len, "%sx = %u\n%sy = %u\n%sz = %u\n", prefix, (pStruct->x), prefix, (pStruct->y), prefix, (pStruct->z));
   1190     return str;
   1191 }
   1192 char* vk_print_vkdisplaymodecreateinfokhr(const VkDisplayModeCreateInfoKHR* pStruct, const char* prefix)
   1193 {
   1194     char* str;
   1195     size_t len;
   1196     char* tmpStr;
   1197     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1198     strcpy(extra_indent, "  ");
   1199     strncat(extra_indent, prefix, strlen(prefix));
   1200     char* stp_strs[2];
   1201     if (pStruct->pNext) {
   1202         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   1203         len = 256+strlen(tmpStr);
   1204         stp_strs[0] = (char*)malloc(len);
   1205         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   1206         free(tmpStr);
   1207     }
   1208     else
   1209         stp_strs[0] = "";
   1210     tmpStr = vk_print_vkdisplaymodeparameterskhr(&pStruct->parameters, extra_indent);
   1211     len = 256+strlen(tmpStr);
   1212     stp_strs[1] = (char*)malloc(len);
   1213     snprintf(stp_strs[1], len, " %sparameters (addr)\n%s", prefix, tmpStr);
   1214     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
   1215     str = (char*)malloc(len);
   1216     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sparameters = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix);
   1217     for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
   1218         if (0 < strlen(stp_strs[stp_index])) {
   1219             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1220             free(stp_strs[stp_index]);
   1221         }
   1222     }
   1223     free(extra_indent);
   1224     return str;
   1225 }
   1226 char* vk_print_vkdisplaymodeparameterskhr(const VkDisplayModeParametersKHR* pStruct, const char* prefix)
   1227 {
   1228     char* str;
   1229     size_t len;
   1230     char* tmpStr;
   1231     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1232     strcpy(extra_indent, "  ");
   1233     strncat(extra_indent, prefix, strlen(prefix));
   1234     char* stp_strs[1];
   1235     tmpStr = vk_print_vkextent2d(&pStruct->visibleRegion, extra_indent);
   1236     len = 256+strlen(tmpStr);
   1237     stp_strs[0] = (char*)malloc(len);
   1238     snprintf(stp_strs[0], len, " %svisibleRegion (addr)\n%s", prefix, tmpStr);
   1239     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   1240     str = (char*)malloc(len);
   1241     snprintf(str, len, "%svisibleRegion = addr\n%srefreshRate = %u\n", prefix, prefix, (pStruct->refreshRate));
   1242     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   1243         if (0 < strlen(stp_strs[stp_index])) {
   1244             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1245             free(stp_strs[stp_index]);
   1246         }
   1247     }
   1248     free(extra_indent);
   1249     return str;
   1250 }
   1251 char* vk_print_vkdisplaymodepropertieskhr(const VkDisplayModePropertiesKHR* pStruct, const char* prefix)
   1252 {
   1253     char* str;
   1254     size_t len;
   1255     char* tmpStr;
   1256     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1257     strcpy(extra_indent, "  ");
   1258     strncat(extra_indent, prefix, strlen(prefix));
   1259     char* stp_strs[1];
   1260     tmpStr = vk_print_vkdisplaymodeparameterskhr(&pStruct->parameters, extra_indent);
   1261     len = 256+strlen(tmpStr);
   1262     stp_strs[0] = (char*)malloc(len);
   1263     snprintf(stp_strs[0], len, " %sparameters (addr)\n%s", prefix, tmpStr);
   1264     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   1265     str = (char*)malloc(len);
   1266     snprintf(str, len, "%sdisplayMode = addr\n%sparameters = addr\n", prefix, prefix);
   1267     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   1268         if (0 < strlen(stp_strs[stp_index])) {
   1269             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1270             free(stp_strs[stp_index]);
   1271         }
   1272     }
   1273     free(extra_indent);
   1274     return str;
   1275 }
   1276 char* vk_print_vkdisplayplanecapabilitieskhr(const VkDisplayPlaneCapabilitiesKHR* pStruct, const char* prefix)
   1277 {
   1278     char* str;
   1279     size_t len;
   1280     char* tmpStr;
   1281     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1282     strcpy(extra_indent, "  ");
   1283     strncat(extra_indent, prefix, strlen(prefix));
   1284     char* stp_strs[8];
   1285     tmpStr = vk_print_vkoffset2d(&pStruct->minSrcPosition, extra_indent);
   1286     len = 256+strlen(tmpStr);
   1287     stp_strs[0] = (char*)malloc(len);
   1288     snprintf(stp_strs[0], len, " %sminSrcPosition (addr)\n%s", prefix, tmpStr);
   1289     tmpStr = vk_print_vkoffset2d(&pStruct->maxSrcPosition, extra_indent);
   1290     len = 256+strlen(tmpStr);
   1291     stp_strs[1] = (char*)malloc(len);
   1292     snprintf(stp_strs[1], len, " %smaxSrcPosition (addr)\n%s", prefix, tmpStr);
   1293     tmpStr = vk_print_vkextent2d(&pStruct->minSrcExtent, extra_indent);
   1294     len = 256+strlen(tmpStr);
   1295     stp_strs[2] = (char*)malloc(len);
   1296     snprintf(stp_strs[2], len, " %sminSrcExtent (addr)\n%s", prefix, tmpStr);
   1297     tmpStr = vk_print_vkextent2d(&pStruct->maxSrcExtent, extra_indent);
   1298     len = 256+strlen(tmpStr);
   1299     stp_strs[3] = (char*)malloc(len);
   1300     snprintf(stp_strs[3], len, " %smaxSrcExtent (addr)\n%s", prefix, tmpStr);
   1301     tmpStr = vk_print_vkoffset2d(&pStruct->minDstPosition, extra_indent);
   1302     len = 256+strlen(tmpStr);
   1303     stp_strs[4] = (char*)malloc(len);
   1304     snprintf(stp_strs[4], len, " %sminDstPosition (addr)\n%s", prefix, tmpStr);
   1305     tmpStr = vk_print_vkoffset2d(&pStruct->maxDstPosition, extra_indent);
   1306     len = 256+strlen(tmpStr);
   1307     stp_strs[5] = (char*)malloc(len);
   1308     snprintf(stp_strs[5], len, " %smaxDstPosition (addr)\n%s", prefix, tmpStr);
   1309     tmpStr = vk_print_vkextent2d(&pStruct->minDstExtent, extra_indent);
   1310     len = 256+strlen(tmpStr);
   1311     stp_strs[6] = (char*)malloc(len);
   1312     snprintf(stp_strs[6], len, " %sminDstExtent (addr)\n%s", prefix, tmpStr);
   1313     tmpStr = vk_print_vkextent2d(&pStruct->maxDstExtent, extra_indent);
   1314     len = 256+strlen(tmpStr);
   1315     stp_strs[7] = (char*)malloc(len);
   1316     snprintf(stp_strs[7], len, " %smaxDstExtent (addr)\n%s", prefix, tmpStr);
   1317     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + strlen(stp_strs[3]) + strlen(stp_strs[4]) + strlen(stp_strs[5]) + strlen(stp_strs[6]) + strlen(stp_strs[7]) + sizeof(char)*1024;
   1318     str = (char*)malloc(len);
   1319     snprintf(str, len, "%ssupportedAlpha = %u\n%sminSrcPosition = addr\n%smaxSrcPosition = addr\n%sminSrcExtent = addr\n%smaxSrcExtent = addr\n%sminDstPosition = addr\n%smaxDstPosition = addr\n%sminDstExtent = addr\n%smaxDstExtent = addr\n", prefix, (pStruct->supportedAlpha), prefix, prefix, prefix, prefix, prefix, prefix, prefix, prefix);
   1320     for (int32_t stp_index = 7; stp_index >= 0; stp_index--) {
   1321         if (0 < strlen(stp_strs[stp_index])) {
   1322             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1323             free(stp_strs[stp_index]);
   1324         }
   1325     }
   1326     free(extra_indent);
   1327     return str;
   1328 }
   1329 char* vk_print_vkdisplayplanepropertieskhr(const VkDisplayPlanePropertiesKHR* pStruct, const char* prefix)
   1330 {
   1331     char* str;
   1332     size_t len;
   1333     len = sizeof(char)*1024;
   1334     str = (char*)malloc(len);
   1335     snprintf(str, len, "%scurrentDisplay = addr\n%scurrentStackIndex = %u\n", prefix, prefix, (pStruct->currentStackIndex));
   1336     return str;
   1337 }
   1338 char* vk_print_vkdisplaypresentinfokhr(const VkDisplayPresentInfoKHR* pStruct, const char* prefix)
   1339 {
   1340     char* str;
   1341     size_t len;
   1342     char* tmpStr;
   1343     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1344     strcpy(extra_indent, "  ");
   1345     strncat(extra_indent, prefix, strlen(prefix));
   1346     char* stp_strs[3];
   1347     if (pStruct->pNext) {
   1348         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   1349         len = 256+strlen(tmpStr);
   1350         stp_strs[0] = (char*)malloc(len);
   1351         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   1352         free(tmpStr);
   1353     }
   1354     else
   1355         stp_strs[0] = "";
   1356     tmpStr = vk_print_vkrect2d(&pStruct->srcRect, extra_indent);
   1357     len = 256+strlen(tmpStr);
   1358     stp_strs[1] = (char*)malloc(len);
   1359     snprintf(stp_strs[1], len, " %ssrcRect (addr)\n%s", prefix, tmpStr);
   1360     tmpStr = vk_print_vkrect2d(&pStruct->dstRect, extra_indent);
   1361     len = 256+strlen(tmpStr);
   1362     stp_strs[2] = (char*)malloc(len);
   1363     snprintf(stp_strs[2], len, " %sdstRect (addr)\n%s", prefix, tmpStr);
   1364     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
   1365     str = (char*)malloc(len);
   1366     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%ssrcRect = addr\n%sdstRect = addr\n%spersistent = %s\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix, prefix, (pStruct->persistent) ? "TRUE" : "FALSE");
   1367     for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
   1368         if (0 < strlen(stp_strs[stp_index])) {
   1369             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1370             free(stp_strs[stp_index]);
   1371         }
   1372     }
   1373     free(extra_indent);
   1374     return str;
   1375 }
   1376 char* vk_print_vkdisplaypropertieskhr(const VkDisplayPropertiesKHR* pStruct, const char* prefix)
   1377 {
   1378     char* str;
   1379     size_t len;
   1380     char* tmpStr;
   1381     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1382     strcpy(extra_indent, "  ");
   1383     strncat(extra_indent, prefix, strlen(prefix));
   1384     char* stp_strs[2];
   1385     tmpStr = vk_print_vkextent2d(&pStruct->physicalDimensions, extra_indent);
   1386     len = 256+strlen(tmpStr);
   1387     stp_strs[0] = (char*)malloc(len);
   1388     snprintf(stp_strs[0], len, " %sphysicalDimensions (addr)\n%s", prefix, tmpStr);
   1389     tmpStr = vk_print_vkextent2d(&pStruct->physicalResolution, extra_indent);
   1390     len = 256+strlen(tmpStr);
   1391     stp_strs[1] = (char*)malloc(len);
   1392     snprintf(stp_strs[1], len, " %sphysicalResolution (addr)\n%s", prefix, tmpStr);
   1393     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
   1394     str = (char*)malloc(len);
   1395     snprintf(str, len, "%sdisplay = addr\n%sdisplayName = addr\n%sphysicalDimensions = addr\n%sphysicalResolution = addr\n%ssupportedTransforms = %u\n%splaneReorderPossible = %s\n%spersistentContent = %s\n", prefix, prefix, prefix, prefix, prefix, (pStruct->supportedTransforms), prefix, (pStruct->planeReorderPossible) ? "TRUE" : "FALSE", prefix, (pStruct->persistentContent) ? "TRUE" : "FALSE");
   1396     for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
   1397         if (0 < strlen(stp_strs[stp_index])) {
   1398             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1399             free(stp_strs[stp_index]);
   1400         }
   1401     }
   1402     free(extra_indent);
   1403     return str;
   1404 }
   1405 char* vk_print_vkdisplaysurfacecreateinfokhr(const VkDisplaySurfaceCreateInfoKHR* pStruct, const char* prefix)
   1406 {
   1407     char* str;
   1408     size_t len;
   1409     char* tmpStr;
   1410     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1411     strcpy(extra_indent, "  ");
   1412     strncat(extra_indent, prefix, strlen(prefix));
   1413     char* stp_strs[2];
   1414     if (pStruct->pNext) {
   1415         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   1416         len = 256+strlen(tmpStr);
   1417         stp_strs[0] = (char*)malloc(len);
   1418         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   1419         free(tmpStr);
   1420     }
   1421     else
   1422         stp_strs[0] = "";
   1423     tmpStr = vk_print_vkextent2d(&pStruct->imageExtent, extra_indent);
   1424     len = 256+strlen(tmpStr);
   1425     stp_strs[1] = (char*)malloc(len);
   1426     snprintf(stp_strs[1], len, " %simageExtent (addr)\n%s", prefix, tmpStr);
   1427     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
   1428     str = (char*)malloc(len);
   1429     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sdisplayMode = addr\n%splaneIndex = %u\n%splaneStackIndex = %u\n%stransform = %s\n%sglobalAlpha = %f\n%salphaMode = %s\n%simageExtent = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix, (pStruct->planeIndex), prefix, (pStruct->planeStackIndex), prefix, string_VkSurfaceTransformFlagBitsKHR(pStruct->transform), prefix, (pStruct->globalAlpha), prefix, string_VkDisplayPlaneAlphaFlagBitsKHR(pStruct->alphaMode), prefix);
   1430     for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
   1431         if (0 < strlen(stp_strs[stp_index])) {
   1432             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1433             free(stp_strs[stp_index]);
   1434         }
   1435     }
   1436     free(extra_indent);
   1437     return str;
   1438 }
   1439 char* vk_print_vkdrawindexedindirectcommand(const VkDrawIndexedIndirectCommand* pStruct, const char* prefix)
   1440 {
   1441     char* str;
   1442     size_t len;
   1443     len = sizeof(char)*1024;
   1444     str = (char*)malloc(len);
   1445     snprintf(str, len, "%sindexCount = %u\n%sinstanceCount = %u\n%sfirstIndex = %u\n%svertexOffset = %i\n%sfirstInstance = %u\n", prefix, (pStruct->indexCount), prefix, (pStruct->instanceCount), prefix, (pStruct->firstIndex), prefix, (pStruct->vertexOffset), prefix, (pStruct->firstInstance));
   1446     return str;
   1447 }
   1448 char* vk_print_vkdrawindirectcommand(const VkDrawIndirectCommand* pStruct, const char* prefix)
   1449 {
   1450     char* str;
   1451     size_t len;
   1452     len = sizeof(char)*1024;
   1453     str = (char*)malloc(len);
   1454     snprintf(str, len, "%svertexCount = %u\n%sinstanceCount = %u\n%sfirstVertex = %u\n%sfirstInstance = %u\n", prefix, (pStruct->vertexCount), prefix, (pStruct->instanceCount), prefix, (pStruct->firstVertex), prefix, (pStruct->firstInstance));
   1455     return str;
   1456 }
   1457 char* vk_print_vkeventcreateinfo(const VkEventCreateInfo* pStruct, const char* prefix)
   1458 {
   1459     char* str;
   1460     size_t len;
   1461     char* tmpStr;
   1462     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1463     strcpy(extra_indent, "  ");
   1464     strncat(extra_indent, prefix, strlen(prefix));
   1465     char* stp_strs[1];
   1466     if (pStruct->pNext) {
   1467         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   1468         len = 256+strlen(tmpStr);
   1469         stp_strs[0] = (char*)malloc(len);
   1470         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   1471         free(tmpStr);
   1472     }
   1473     else
   1474         stp_strs[0] = "";
   1475     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   1476     str = (char*)malloc(len);
   1477     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags));
   1478     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   1479         if (0 < strlen(stp_strs[stp_index])) {
   1480             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1481             free(stp_strs[stp_index]);
   1482         }
   1483     }
   1484     free(extra_indent);
   1485     return str;
   1486 }
   1487 char* vk_print_vkexportmemoryallocateinfonv(const VkExportMemoryAllocateInfoNV* pStruct, const char* prefix)
   1488 {
   1489     char* str;
   1490     size_t len;
   1491     char* tmpStr;
   1492     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1493     strcpy(extra_indent, "  ");
   1494     strncat(extra_indent, prefix, strlen(prefix));
   1495     char* stp_strs[1];
   1496     if (pStruct->pNext) {
   1497         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   1498         len = 256+strlen(tmpStr);
   1499         stp_strs[0] = (char*)malloc(len);
   1500         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   1501         free(tmpStr);
   1502     }
   1503     else
   1504         stp_strs[0] = "";
   1505     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   1506     str = (char*)malloc(len);
   1507     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%shandleTypes = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->handleTypes));
   1508     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   1509         if (0 < strlen(stp_strs[stp_index])) {
   1510             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1511             free(stp_strs[stp_index]);
   1512         }
   1513     }
   1514     free(extra_indent);
   1515     return str;
   1516 }
   1517 char* vk_print_vkexportmemorywin32handleinfonv(const VkExportMemoryWin32HandleInfoNV* pStruct, const char* prefix)
   1518 {
   1519     char* str;
   1520     size_t len;
   1521     char* tmpStr;
   1522     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1523     strcpy(extra_indent, "  ");
   1524     strncat(extra_indent, prefix, strlen(prefix));
   1525     char* stp_strs[1];
   1526     if (pStruct->pNext) {
   1527         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   1528         len = 256+strlen(tmpStr);
   1529         stp_strs[0] = (char*)malloc(len);
   1530         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   1531         free(tmpStr);
   1532     }
   1533     else
   1534         stp_strs[0] = "";
   1535     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   1536     str = (char*)malloc(len);
   1537     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%spAttributes = addr\n%sdwAccess = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix);
   1538     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   1539         if (0 < strlen(stp_strs[stp_index])) {
   1540             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1541             free(stp_strs[stp_index]);
   1542         }
   1543     }
   1544     free(extra_indent);
   1545     return str;
   1546 }
   1547 char* vk_print_vkextensionproperties(const VkExtensionProperties* pStruct, const char* prefix)
   1548 {
   1549     char* str;
   1550     size_t len;
   1551     len = sizeof(char)*1024;
   1552     str = (char*)malloc(len);
   1553     snprintf(str, len, "%sextensionName = %s\n%sspecVersion = %u\n", prefix, (pStruct->extensionName), prefix, (pStruct->specVersion));
   1554     return str;
   1555 }
   1556 char* vk_print_vkextent2d(const VkExtent2D* pStruct, const char* prefix)
   1557 {
   1558     char* str;
   1559     size_t len;
   1560     len = sizeof(char)*1024;
   1561     str = (char*)malloc(len);
   1562     snprintf(str, len, "%swidth = %u\n%sheight = %u\n", prefix, (pStruct->width), prefix, (pStruct->height));
   1563     return str;
   1564 }
   1565 char* vk_print_vkextent3d(const VkExtent3D* pStruct, const char* prefix)
   1566 {
   1567     char* str;
   1568     size_t len;
   1569     len = sizeof(char)*1024;
   1570     str = (char*)malloc(len);
   1571     snprintf(str, len, "%swidth = %u\n%sheight = %u\n%sdepth = %u\n", prefix, (pStruct->width), prefix, (pStruct->height), prefix, (pStruct->depth));
   1572     return str;
   1573 }
   1574 char* vk_print_vkexternalimageformatpropertiesnv(const VkExternalImageFormatPropertiesNV* pStruct, const char* prefix)
   1575 {
   1576     char* str;
   1577     size_t len;
   1578     char* tmpStr;
   1579     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1580     strcpy(extra_indent, "  ");
   1581     strncat(extra_indent, prefix, strlen(prefix));
   1582     char* stp_strs[1];
   1583     tmpStr = vk_print_vkimageformatproperties(&pStruct->imageFormatProperties, extra_indent);
   1584     len = 256+strlen(tmpStr);
   1585     stp_strs[0] = (char*)malloc(len);
   1586     snprintf(stp_strs[0], len, " %simageFormatProperties (addr)\n%s", prefix, tmpStr);
   1587     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   1588     str = (char*)malloc(len);
   1589     snprintf(str, len, "%simageFormatProperties = addr\n%sexternalMemoryFeatures = %u\n%sexportFromImportedHandleTypes = %u\n%scompatibleHandleTypes = %u\n", prefix, prefix, (pStruct->externalMemoryFeatures), prefix, (pStruct->exportFromImportedHandleTypes), prefix, (pStruct->compatibleHandleTypes));
   1590     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   1591         if (0 < strlen(stp_strs[stp_index])) {
   1592             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1593             free(stp_strs[stp_index]);
   1594         }
   1595     }
   1596     free(extra_indent);
   1597     return str;
   1598 }
   1599 char* vk_print_vkexternalmemoryimagecreateinfonv(const VkExternalMemoryImageCreateInfoNV* pStruct, const char* prefix)
   1600 {
   1601     char* str;
   1602     size_t len;
   1603     char* tmpStr;
   1604     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1605     strcpy(extra_indent, "  ");
   1606     strncat(extra_indent, prefix, strlen(prefix));
   1607     char* stp_strs[1];
   1608     if (pStruct->pNext) {
   1609         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   1610         len = 256+strlen(tmpStr);
   1611         stp_strs[0] = (char*)malloc(len);
   1612         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   1613         free(tmpStr);
   1614     }
   1615     else
   1616         stp_strs[0] = "";
   1617     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   1618     str = (char*)malloc(len);
   1619     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%shandleTypes = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->handleTypes));
   1620     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   1621         if (0 < strlen(stp_strs[stp_index])) {
   1622             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1623             free(stp_strs[stp_index]);
   1624         }
   1625     }
   1626     free(extra_indent);
   1627     return str;
   1628 }
   1629 char* vk_print_vkfencecreateinfo(const VkFenceCreateInfo* pStruct, const char* prefix)
   1630 {
   1631     char* str;
   1632     size_t len;
   1633     char* tmpStr;
   1634     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1635     strcpy(extra_indent, "  ");
   1636     strncat(extra_indent, prefix, strlen(prefix));
   1637     char* stp_strs[1];
   1638     if (pStruct->pNext) {
   1639         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   1640         len = 256+strlen(tmpStr);
   1641         stp_strs[0] = (char*)malloc(len);
   1642         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   1643         free(tmpStr);
   1644     }
   1645     else
   1646         stp_strs[0] = "";
   1647     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   1648     str = (char*)malloc(len);
   1649     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags));
   1650     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   1651         if (0 < strlen(stp_strs[stp_index])) {
   1652             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1653             free(stp_strs[stp_index]);
   1654         }
   1655     }
   1656     free(extra_indent);
   1657     return str;
   1658 }
   1659 char* vk_print_vkformatproperties(const VkFormatProperties* pStruct, const char* prefix)
   1660 {
   1661     char* str;
   1662     size_t len;
   1663     len = sizeof(char)*1024;
   1664     str = (char*)malloc(len);
   1665     snprintf(str, len, "%slinearTilingFeatures = %u\n%soptimalTilingFeatures = %u\n%sbufferFeatures = %u\n", prefix, (pStruct->linearTilingFeatures), prefix, (pStruct->optimalTilingFeatures), prefix, (pStruct->bufferFeatures));
   1666     return str;
   1667 }
   1668 char* vk_print_vkframebuffercreateinfo(const VkFramebufferCreateInfo* pStruct, const char* prefix)
   1669 {
   1670     char* str;
   1671     size_t len;
   1672     char* tmpStr;
   1673     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1674     strcpy(extra_indent, "  ");
   1675     strncat(extra_indent, prefix, strlen(prefix));
   1676     char* stp_strs[1];
   1677     if (pStruct->pNext) {
   1678         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   1679         len = 256+strlen(tmpStr);
   1680         stp_strs[0] = (char*)malloc(len);
   1681         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   1682         free(tmpStr);
   1683     }
   1684     else
   1685         stp_strs[0] = "";
   1686     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   1687     str = (char*)malloc(len);
   1688     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%srenderPass = addr\n%sattachmentCount = %u\n%spAttachments = addr\n%swidth = %u\n%sheight = %u\n%slayers = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix, (pStruct->attachmentCount), prefix, prefix, (pStruct->width), prefix, (pStruct->height), prefix, (pStruct->layers));
   1689     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   1690         if (0 < strlen(stp_strs[stp_index])) {
   1691             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1692             free(stp_strs[stp_index]);
   1693         }
   1694     }
   1695     free(extra_indent);
   1696     return str;
   1697 }
   1698 char* vk_print_vkgraphicspipelinecreateinfo(const VkGraphicsPipelineCreateInfo* pStruct, const char* prefix)
   1699 {
   1700     char* str;
   1701     size_t len;
   1702     char* tmpStr;
   1703     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1704     strcpy(extra_indent, "  ");
   1705     strncat(extra_indent, prefix, strlen(prefix));
   1706     char* stp_strs[11];
   1707     if (pStruct->pNext) {
   1708         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   1709         len = 256+strlen(tmpStr);
   1710         stp_strs[0] = (char*)malloc(len);
   1711         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   1712         free(tmpStr);
   1713     }
   1714     else
   1715         stp_strs[0] = "";
   1716     if (pStruct->pStages) {
   1717         tmpStr = vk_print_vkpipelineshaderstagecreateinfo(pStruct->pStages, extra_indent);
   1718         len = 256+strlen(tmpStr)+strlen(prefix);
   1719         stp_strs[1] = (char*)malloc(len);
   1720         snprintf(stp_strs[1], len, " %spStages (addr)\n%s", prefix, tmpStr);
   1721     }
   1722     else
   1723         stp_strs[1] = "";
   1724     if (pStruct->pVertexInputState) {
   1725         tmpStr = vk_print_vkpipelinevertexinputstatecreateinfo(pStruct->pVertexInputState, extra_indent);
   1726         len = 256+strlen(tmpStr)+strlen(prefix);
   1727         stp_strs[2] = (char*)malloc(len);
   1728         snprintf(stp_strs[2], len, " %spVertexInputState (addr)\n%s", prefix, tmpStr);
   1729     }
   1730     else
   1731         stp_strs[2] = "";
   1732     if (pStruct->pInputAssemblyState) {
   1733         tmpStr = vk_print_vkpipelineinputassemblystatecreateinfo(pStruct->pInputAssemblyState, extra_indent);
   1734         len = 256+strlen(tmpStr)+strlen(prefix);
   1735         stp_strs[3] = (char*)malloc(len);
   1736         snprintf(stp_strs[3], len, " %spInputAssemblyState (addr)\n%s", prefix, tmpStr);
   1737     }
   1738     else
   1739         stp_strs[3] = "";
   1740     if (pStruct->pTessellationState) {
   1741         tmpStr = vk_print_vkpipelinetessellationstatecreateinfo(pStruct->pTessellationState, extra_indent);
   1742         len = 256+strlen(tmpStr)+strlen(prefix);
   1743         stp_strs[4] = (char*)malloc(len);
   1744         snprintf(stp_strs[4], len, " %spTessellationState (addr)\n%s", prefix, tmpStr);
   1745     }
   1746     else
   1747         stp_strs[4] = "";
   1748     if (pStruct->pViewportState) {
   1749         tmpStr = vk_print_vkpipelineviewportstatecreateinfo(pStruct->pViewportState, extra_indent);
   1750         len = 256+strlen(tmpStr)+strlen(prefix);
   1751         stp_strs[5] = (char*)malloc(len);
   1752         snprintf(stp_strs[5], len, " %spViewportState (addr)\n%s", prefix, tmpStr);
   1753     }
   1754     else
   1755         stp_strs[5] = "";
   1756     if (pStruct->pRasterizationState) {
   1757         tmpStr = vk_print_vkpipelinerasterizationstatecreateinfo(pStruct->pRasterizationState, extra_indent);
   1758         len = 256+strlen(tmpStr)+strlen(prefix);
   1759         stp_strs[6] = (char*)malloc(len);
   1760         snprintf(stp_strs[6], len, " %spRasterizationState (addr)\n%s", prefix, tmpStr);
   1761     }
   1762     else
   1763         stp_strs[6] = "";
   1764     if (pStruct->pMultisampleState) {
   1765         tmpStr = vk_print_vkpipelinemultisamplestatecreateinfo(pStruct->pMultisampleState, extra_indent);
   1766         len = 256+strlen(tmpStr)+strlen(prefix);
   1767         stp_strs[7] = (char*)malloc(len);
   1768         snprintf(stp_strs[7], len, " %spMultisampleState (addr)\n%s", prefix, tmpStr);
   1769     }
   1770     else
   1771         stp_strs[7] = "";
   1772     if (pStruct->pDepthStencilState) {
   1773         tmpStr = vk_print_vkpipelinedepthstencilstatecreateinfo(pStruct->pDepthStencilState, extra_indent);
   1774         len = 256+strlen(tmpStr)+strlen(prefix);
   1775         stp_strs[8] = (char*)malloc(len);
   1776         snprintf(stp_strs[8], len, " %spDepthStencilState (addr)\n%s", prefix, tmpStr);
   1777     }
   1778     else
   1779         stp_strs[8] = "";
   1780     if (pStruct->pColorBlendState) {
   1781         tmpStr = vk_print_vkpipelinecolorblendstatecreateinfo(pStruct->pColorBlendState, extra_indent);
   1782         len = 256+strlen(tmpStr)+strlen(prefix);
   1783         stp_strs[9] = (char*)malloc(len);
   1784         snprintf(stp_strs[9], len, " %spColorBlendState (addr)\n%s", prefix, tmpStr);
   1785     }
   1786     else
   1787         stp_strs[9] = "";
   1788     if (pStruct->pDynamicState) {
   1789         tmpStr = vk_print_vkpipelinedynamicstatecreateinfo(pStruct->pDynamicState, extra_indent);
   1790         len = 256+strlen(tmpStr)+strlen(prefix);
   1791         stp_strs[10] = (char*)malloc(len);
   1792         snprintf(stp_strs[10], len, " %spDynamicState (addr)\n%s", prefix, tmpStr);
   1793     }
   1794     else
   1795         stp_strs[10] = "";
   1796     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + strlen(stp_strs[3]) + strlen(stp_strs[4]) + strlen(stp_strs[5]) + strlen(stp_strs[6]) + strlen(stp_strs[7]) + strlen(stp_strs[8]) + strlen(stp_strs[9]) + strlen(stp_strs[10]) + sizeof(char)*1024;
   1797     str = (char*)malloc(len);
   1798     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sstageCount = %u\n%spStages = addr\n%spVertexInputState = addr\n%spInputAssemblyState = addr\n%spTessellationState = addr\n%spViewportState = addr\n%spRasterizationState = addr\n%spMultisampleState = addr\n%spDepthStencilState = addr\n%spColorBlendState = addr\n%spDynamicState = addr\n%slayout = addr\n%srenderPass = addr\n%ssubpass = %u\n%sbasePipelineHandle = addr\n%sbasePipelineIndex = %i\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->stageCount), prefix, prefix, prefix, prefix, prefix, prefix, prefix, prefix, prefix, prefix, prefix, prefix, prefix, (pStruct->subpass), prefix, prefix, (pStruct->basePipelineIndex));
   1799     for (int32_t stp_index = 10; stp_index >= 0; stp_index--) {
   1800         if (0 < strlen(stp_strs[stp_index])) {
   1801             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1802             free(stp_strs[stp_index]);
   1803         }
   1804     }
   1805     free(extra_indent);
   1806     return str;
   1807 }
   1808 char* vk_print_vkimageblit(const VkImageBlit* pStruct, const char* prefix)
   1809 {
   1810     char* str;
   1811     size_t len;
   1812     char* tmpStr;
   1813     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1814     strcpy(extra_indent, "  ");
   1815     strncat(extra_indent, prefix, strlen(prefix));
   1816     char* stp_strs[4];
   1817     tmpStr = vk_print_vkimagesubresourcelayers(&pStruct->srcSubresource, extra_indent);
   1818     len = 256+strlen(tmpStr);
   1819     stp_strs[0] = (char*)malloc(len);
   1820     snprintf(stp_strs[0], len, " %ssrcSubresource (addr)\n%s", prefix, tmpStr);
   1821     tmpStr = vk_print_vkoffset3d(&pStruct->srcOffsets[0], extra_indent);
   1822     len = 256+strlen(tmpStr);
   1823     stp_strs[1] = (char*)malloc(len);
   1824     snprintf(stp_strs[1], len, " %ssrcOffsets[0] (addr)\n%s", prefix, tmpStr);
   1825     tmpStr = vk_print_vkimagesubresourcelayers(&pStruct->dstSubresource, extra_indent);
   1826     len = 256+strlen(tmpStr);
   1827     stp_strs[2] = (char*)malloc(len);
   1828     snprintf(stp_strs[2], len, " %sdstSubresource (addr)\n%s", prefix, tmpStr);
   1829     tmpStr = vk_print_vkoffset3d(&pStruct->dstOffsets[0], extra_indent);
   1830     len = 256+strlen(tmpStr);
   1831     stp_strs[3] = (char*)malloc(len);
   1832     snprintf(stp_strs[3], len, " %sdstOffsets[0] (addr)\n%s", prefix, tmpStr);
   1833     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + strlen(stp_strs[3]) + sizeof(char)*1024;
   1834     str = (char*)malloc(len);
   1835     snprintf(str, len, "%ssrcSubresource = addr\n%ssrcOffsets = addr\n%sdstSubresource = addr\n%sdstOffsets = addr\n", prefix, prefix, prefix, prefix);
   1836     for (int32_t stp_index = 3; stp_index >= 0; stp_index--) {
   1837         if (0 < strlen(stp_strs[stp_index])) {
   1838             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1839             free(stp_strs[stp_index]);
   1840         }
   1841     }
   1842     free(extra_indent);
   1843     return str;
   1844 }
   1845 char* vk_print_vkimagecopy(const VkImageCopy* pStruct, const char* prefix)
   1846 {
   1847     char* str;
   1848     size_t len;
   1849     char* tmpStr;
   1850     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1851     strcpy(extra_indent, "  ");
   1852     strncat(extra_indent, prefix, strlen(prefix));
   1853     char* stp_strs[5];
   1854     tmpStr = vk_print_vkimagesubresourcelayers(&pStruct->srcSubresource, extra_indent);
   1855     len = 256+strlen(tmpStr);
   1856     stp_strs[0] = (char*)malloc(len);
   1857     snprintf(stp_strs[0], len, " %ssrcSubresource (addr)\n%s", prefix, tmpStr);
   1858     tmpStr = vk_print_vkoffset3d(&pStruct->srcOffset, extra_indent);
   1859     len = 256+strlen(tmpStr);
   1860     stp_strs[1] = (char*)malloc(len);
   1861     snprintf(stp_strs[1], len, " %ssrcOffset (addr)\n%s", prefix, tmpStr);
   1862     tmpStr = vk_print_vkimagesubresourcelayers(&pStruct->dstSubresource, extra_indent);
   1863     len = 256+strlen(tmpStr);
   1864     stp_strs[2] = (char*)malloc(len);
   1865     snprintf(stp_strs[2], len, " %sdstSubresource (addr)\n%s", prefix, tmpStr);
   1866     tmpStr = vk_print_vkoffset3d(&pStruct->dstOffset, extra_indent);
   1867     len = 256+strlen(tmpStr);
   1868     stp_strs[3] = (char*)malloc(len);
   1869     snprintf(stp_strs[3], len, " %sdstOffset (addr)\n%s", prefix, tmpStr);
   1870     tmpStr = vk_print_vkextent3d(&pStruct->extent, extra_indent);
   1871     len = 256+strlen(tmpStr);
   1872     stp_strs[4] = (char*)malloc(len);
   1873     snprintf(stp_strs[4], len, " %sextent (addr)\n%s", prefix, tmpStr);
   1874     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + strlen(stp_strs[3]) + strlen(stp_strs[4]) + sizeof(char)*1024;
   1875     str = (char*)malloc(len);
   1876     snprintf(str, len, "%ssrcSubresource = addr\n%ssrcOffset = addr\n%sdstSubresource = addr\n%sdstOffset = addr\n%sextent = addr\n", prefix, prefix, prefix, prefix, prefix);
   1877     for (int32_t stp_index = 4; stp_index >= 0; stp_index--) {
   1878         if (0 < strlen(stp_strs[stp_index])) {
   1879             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1880             free(stp_strs[stp_index]);
   1881         }
   1882     }
   1883     free(extra_indent);
   1884     return str;
   1885 }
   1886 char* vk_print_vkimagecreateinfo(const VkImageCreateInfo* pStruct, const char* prefix)
   1887 {
   1888     char* str;
   1889     size_t len;
   1890     char* tmpStr;
   1891     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1892     strcpy(extra_indent, "  ");
   1893     strncat(extra_indent, prefix, strlen(prefix));
   1894     char* stp_strs[2];
   1895     if (pStruct->pNext) {
   1896         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   1897         len = 256+strlen(tmpStr);
   1898         stp_strs[0] = (char*)malloc(len);
   1899         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   1900         free(tmpStr);
   1901     }
   1902     else
   1903         stp_strs[0] = "";
   1904     tmpStr = vk_print_vkextent3d(&pStruct->extent, extra_indent);
   1905     len = 256+strlen(tmpStr);
   1906     stp_strs[1] = (char*)malloc(len);
   1907     snprintf(stp_strs[1], len, " %sextent (addr)\n%s", prefix, tmpStr);
   1908     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
   1909     str = (char*)malloc(len);
   1910     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%simageType = %s\n%sformat = %s\n%sextent = addr\n%smipLevels = %u\n%sarrayLayers = %u\n%ssamples = %s\n%stiling = %s\n%susage = %u\n%ssharingMode = %s\n%squeueFamilyIndexCount = %u\n%spQueueFamilyIndices = addr\n%sinitialLayout = %s\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, string_VkImageType(pStruct->imageType), prefix, string_VkFormat(pStruct->format), prefix, prefix, (pStruct->mipLevels), prefix, (pStruct->arrayLayers), prefix, string_VkSampleCountFlagBits(pStruct->samples), prefix, string_VkImageTiling(pStruct->tiling), prefix, (pStruct->usage), prefix, string_VkSharingMode(pStruct->sharingMode), prefix, (pStruct->queueFamilyIndexCount), prefix, prefix, string_VkImageLayout(pStruct->initialLayout));
   1911     for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
   1912         if (0 < strlen(stp_strs[stp_index])) {
   1913             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1914             free(stp_strs[stp_index]);
   1915         }
   1916     }
   1917     free(extra_indent);
   1918     return str;
   1919 }
   1920 char* vk_print_vkimageformatproperties(const VkImageFormatProperties* pStruct, const char* prefix)
   1921 {
   1922     char* str;
   1923     size_t len;
   1924     char* tmpStr;
   1925     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1926     strcpy(extra_indent, "  ");
   1927     strncat(extra_indent, prefix, strlen(prefix));
   1928     char* stp_strs[1];
   1929     tmpStr = vk_print_vkextent3d(&pStruct->maxExtent, extra_indent);
   1930     len = 256+strlen(tmpStr);
   1931     stp_strs[0] = (char*)malloc(len);
   1932     snprintf(stp_strs[0], len, " %smaxExtent (addr)\n%s", prefix, tmpStr);
   1933     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   1934     str = (char*)malloc(len);
   1935     snprintf(str, len, "%smaxExtent = addr\n%smaxMipLevels = %u\n%smaxArrayLayers = %u\n%ssampleCounts = %u\n%smaxResourceSize = " PRINTF_SIZE_T_SPECIFIER "\n", prefix, prefix, (pStruct->maxMipLevels), prefix, (pStruct->maxArrayLayers), prefix, (pStruct->sampleCounts), prefix, (pStruct->maxResourceSize));
   1936     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   1937         if (0 < strlen(stp_strs[stp_index])) {
   1938             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1939             free(stp_strs[stp_index]);
   1940         }
   1941     }
   1942     free(extra_indent);
   1943     return str;
   1944 }
   1945 char* vk_print_vkimagememorybarrier(const VkImageMemoryBarrier* pStruct, const char* prefix)
   1946 {
   1947     char* str;
   1948     size_t len;
   1949     char* tmpStr;
   1950     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1951     strcpy(extra_indent, "  ");
   1952     strncat(extra_indent, prefix, strlen(prefix));
   1953     char* stp_strs[2];
   1954     if (pStruct->pNext) {
   1955         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   1956         len = 256+strlen(tmpStr);
   1957         stp_strs[0] = (char*)malloc(len);
   1958         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   1959         free(tmpStr);
   1960     }
   1961     else
   1962         stp_strs[0] = "";
   1963     tmpStr = vk_print_vkimagesubresourcerange(&pStruct->subresourceRange, extra_indent);
   1964     len = 256+strlen(tmpStr);
   1965     stp_strs[1] = (char*)malloc(len);
   1966     snprintf(stp_strs[1], len, " %ssubresourceRange (addr)\n%s", prefix, tmpStr);
   1967     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
   1968     str = (char*)malloc(len);
   1969     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%ssrcAccessMask = %u\n%sdstAccessMask = %u\n%soldLayout = %s\n%snewLayout = %s\n%ssrcQueueFamilyIndex = %u\n%sdstQueueFamilyIndex = %u\n%simage = addr\n%ssubresourceRange = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->srcAccessMask), prefix, (pStruct->dstAccessMask), prefix, string_VkImageLayout(pStruct->oldLayout), prefix, string_VkImageLayout(pStruct->newLayout), prefix, (pStruct->srcQueueFamilyIndex), prefix, (pStruct->dstQueueFamilyIndex), prefix, prefix);
   1970     for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
   1971         if (0 < strlen(stp_strs[stp_index])) {
   1972             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   1973             free(stp_strs[stp_index]);
   1974         }
   1975     }
   1976     free(extra_indent);
   1977     return str;
   1978 }
   1979 char* vk_print_vkimageresolve(const VkImageResolve* pStruct, const char* prefix)
   1980 {
   1981     char* str;
   1982     size_t len;
   1983     char* tmpStr;
   1984     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   1985     strcpy(extra_indent, "  ");
   1986     strncat(extra_indent, prefix, strlen(prefix));
   1987     char* stp_strs[5];
   1988     tmpStr = vk_print_vkimagesubresourcelayers(&pStruct->srcSubresource, extra_indent);
   1989     len = 256+strlen(tmpStr);
   1990     stp_strs[0] = (char*)malloc(len);
   1991     snprintf(stp_strs[0], len, " %ssrcSubresource (addr)\n%s", prefix, tmpStr);
   1992     tmpStr = vk_print_vkoffset3d(&pStruct->srcOffset, extra_indent);
   1993     len = 256+strlen(tmpStr);
   1994     stp_strs[1] = (char*)malloc(len);
   1995     snprintf(stp_strs[1], len, " %ssrcOffset (addr)\n%s", prefix, tmpStr);
   1996     tmpStr = vk_print_vkimagesubresourcelayers(&pStruct->dstSubresource, extra_indent);
   1997     len = 256+strlen(tmpStr);
   1998     stp_strs[2] = (char*)malloc(len);
   1999     snprintf(stp_strs[2], len, " %sdstSubresource (addr)\n%s", prefix, tmpStr);
   2000     tmpStr = vk_print_vkoffset3d(&pStruct->dstOffset, extra_indent);
   2001     len = 256+strlen(tmpStr);
   2002     stp_strs[3] = (char*)malloc(len);
   2003     snprintf(stp_strs[3], len, " %sdstOffset (addr)\n%s", prefix, tmpStr);
   2004     tmpStr = vk_print_vkextent3d(&pStruct->extent, extra_indent);
   2005     len = 256+strlen(tmpStr);
   2006     stp_strs[4] = (char*)malloc(len);
   2007     snprintf(stp_strs[4], len, " %sextent (addr)\n%s", prefix, tmpStr);
   2008     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + strlen(stp_strs[3]) + strlen(stp_strs[4]) + sizeof(char)*1024;
   2009     str = (char*)malloc(len);
   2010     snprintf(str, len, "%ssrcSubresource = addr\n%ssrcOffset = addr\n%sdstSubresource = addr\n%sdstOffset = addr\n%sextent = addr\n", prefix, prefix, prefix, prefix, prefix);
   2011     for (int32_t stp_index = 4; stp_index >= 0; stp_index--) {
   2012         if (0 < strlen(stp_strs[stp_index])) {
   2013             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2014             free(stp_strs[stp_index]);
   2015         }
   2016     }
   2017     free(extra_indent);
   2018     return str;
   2019 }
   2020 char* vk_print_vkimagesubresource(const VkImageSubresource* pStruct, const char* prefix)
   2021 {
   2022     char* str;
   2023     size_t len;
   2024     len = sizeof(char)*1024;
   2025     str = (char*)malloc(len);
   2026     snprintf(str, len, "%saspectMask = %u\n%smipLevel = %u\n%sarrayLayer = %u\n", prefix, (pStruct->aspectMask), prefix, (pStruct->mipLevel), prefix, (pStruct->arrayLayer));
   2027     return str;
   2028 }
   2029 char* vk_print_vkimagesubresourcelayers(const VkImageSubresourceLayers* pStruct, const char* prefix)
   2030 {
   2031     char* str;
   2032     size_t len;
   2033     len = sizeof(char)*1024;
   2034     str = (char*)malloc(len);
   2035     snprintf(str, len, "%saspectMask = %u\n%smipLevel = %u\n%sbaseArrayLayer = %u\n%slayerCount = %u\n", prefix, (pStruct->aspectMask), prefix, (pStruct->mipLevel), prefix, (pStruct->baseArrayLayer), prefix, (pStruct->layerCount));
   2036     return str;
   2037 }
   2038 char* vk_print_vkimagesubresourcerange(const VkImageSubresourceRange* pStruct, const char* prefix)
   2039 {
   2040     char* str;
   2041     size_t len;
   2042     len = sizeof(char)*1024;
   2043     str = (char*)malloc(len);
   2044     snprintf(str, len, "%saspectMask = %u\n%sbaseMipLevel = %u\n%slevelCount = %u\n%sbaseArrayLayer = %u\n%slayerCount = %u\n", prefix, (pStruct->aspectMask), prefix, (pStruct->baseMipLevel), prefix, (pStruct->levelCount), prefix, (pStruct->baseArrayLayer), prefix, (pStruct->layerCount));
   2045     return str;
   2046 }
   2047 char* vk_print_vkimageviewcreateinfo(const VkImageViewCreateInfo* pStruct, const char* prefix)
   2048 {
   2049     char* str;
   2050     size_t len;
   2051     char* tmpStr;
   2052     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2053     strcpy(extra_indent, "  ");
   2054     strncat(extra_indent, prefix, strlen(prefix));
   2055     char* stp_strs[3];
   2056     if (pStruct->pNext) {
   2057         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2058         len = 256+strlen(tmpStr);
   2059         stp_strs[0] = (char*)malloc(len);
   2060         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2061         free(tmpStr);
   2062     }
   2063     else
   2064         stp_strs[0] = "";
   2065     tmpStr = vk_print_vkcomponentmapping(&pStruct->components, extra_indent);
   2066     len = 256+strlen(tmpStr);
   2067     stp_strs[1] = (char*)malloc(len);
   2068     snprintf(stp_strs[1], len, " %scomponents (addr)\n%s", prefix, tmpStr);
   2069     tmpStr = vk_print_vkimagesubresourcerange(&pStruct->subresourceRange, extra_indent);
   2070     len = 256+strlen(tmpStr);
   2071     stp_strs[2] = (char*)malloc(len);
   2072     snprintf(stp_strs[2], len, " %ssubresourceRange (addr)\n%s", prefix, tmpStr);
   2073     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
   2074     str = (char*)malloc(len);
   2075     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%simage = addr\n%sviewType = %s\n%sformat = %s\n%scomponents = addr\n%ssubresourceRange = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix, string_VkImageViewType(pStruct->viewType), prefix, string_VkFormat(pStruct->format), prefix, prefix);
   2076     for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
   2077         if (0 < strlen(stp_strs[stp_index])) {
   2078             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2079             free(stp_strs[stp_index]);
   2080         }
   2081     }
   2082     free(extra_indent);
   2083     return str;
   2084 }
   2085 char* vk_print_vkimportmemorywin32handleinfonv(const VkImportMemoryWin32HandleInfoNV* pStruct, const char* prefix)
   2086 {
   2087     char* str;
   2088     size_t len;
   2089     char* tmpStr;
   2090     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2091     strcpy(extra_indent, "  ");
   2092     strncat(extra_indent, prefix, strlen(prefix));
   2093     char* stp_strs[1];
   2094     if (pStruct->pNext) {
   2095         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2096         len = 256+strlen(tmpStr);
   2097         stp_strs[0] = (char*)malloc(len);
   2098         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2099         free(tmpStr);
   2100     }
   2101     else
   2102         stp_strs[0] = "";
   2103     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   2104     str = (char*)malloc(len);
   2105     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%shandleType = %u\n%shandle = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->handleType), prefix);
   2106     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   2107         if (0 < strlen(stp_strs[stp_index])) {
   2108             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2109             free(stp_strs[stp_index]);
   2110         }
   2111     }
   2112     free(extra_indent);
   2113     return str;
   2114 }
   2115 char* vk_print_vkinstancecreateinfo(const VkInstanceCreateInfo* pStruct, const char* prefix)
   2116 {
   2117     char* str;
   2118     size_t len;
   2119     char* tmpStr;
   2120     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2121     strcpy(extra_indent, "  ");
   2122     strncat(extra_indent, prefix, strlen(prefix));
   2123     char* stp_strs[2];
   2124     if (pStruct->pNext) {
   2125         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2126         len = 256+strlen(tmpStr);
   2127         stp_strs[0] = (char*)malloc(len);
   2128         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2129         free(tmpStr);
   2130     }
   2131     else
   2132         stp_strs[0] = "";
   2133     if (pStruct->pApplicationInfo) {
   2134         tmpStr = vk_print_vkapplicationinfo(pStruct->pApplicationInfo, extra_indent);
   2135         len = 256+strlen(tmpStr)+strlen(prefix);
   2136         stp_strs[1] = (char*)malloc(len);
   2137         snprintf(stp_strs[1], len, " %spApplicationInfo (addr)\n%s", prefix, tmpStr);
   2138     }
   2139     else
   2140         stp_strs[1] = "";
   2141     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
   2142     str = (char*)malloc(len);
   2143     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%spApplicationInfo = addr\n%senabledLayerCount = %u\n%sppEnabledLayerNames = %s\n%senabledExtensionCount = %u\n%sppEnabledExtensionNames = %s\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix, (pStruct->enabledLayerCount), prefix, (pStruct->ppEnabledLayerNames)[0], prefix, (pStruct->enabledExtensionCount), prefix, (pStruct->ppEnabledExtensionNames)[0]);
   2144     for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
   2145         if (0 < strlen(stp_strs[stp_index])) {
   2146             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2147             free(stp_strs[stp_index]);
   2148         }
   2149     }
   2150     free(extra_indent);
   2151     return str;
   2152 }
   2153 char* vk_print_vklayerproperties(const VkLayerProperties* pStruct, const char* prefix)
   2154 {
   2155     char* str;
   2156     size_t len;
   2157     len = sizeof(char)*1024;
   2158     str = (char*)malloc(len);
   2159     snprintf(str, len, "%slayerName = %s\n%sspecVersion = %u\n%simplementationVersion = %u\n%sdescription = %s\n", prefix, (pStruct->layerName), prefix, (pStruct->specVersion), prefix, (pStruct->implementationVersion), prefix, (pStruct->description));
   2160     return str;
   2161 }
   2162 char* vk_print_vkmappedmemoryrange(const VkMappedMemoryRange* pStruct, const char* prefix)
   2163 {
   2164     char* str;
   2165     size_t len;
   2166     char* tmpStr;
   2167     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2168     strcpy(extra_indent, "  ");
   2169     strncat(extra_indent, prefix, strlen(prefix));
   2170     char* stp_strs[1];
   2171     if (pStruct->pNext) {
   2172         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2173         len = 256+strlen(tmpStr);
   2174         stp_strs[0] = (char*)malloc(len);
   2175         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2176         free(tmpStr);
   2177     }
   2178     else
   2179         stp_strs[0] = "";
   2180     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   2181     str = (char*)malloc(len);
   2182     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%smemory = addr\n%soffset = " PRINTF_SIZE_T_SPECIFIER "\n%ssize = " PRINTF_SIZE_T_SPECIFIER "\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix, (pStruct->offset), prefix, (pStruct->size));
   2183     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   2184         if (0 < strlen(stp_strs[stp_index])) {
   2185             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2186             free(stp_strs[stp_index]);
   2187         }
   2188     }
   2189     free(extra_indent);
   2190     return str;
   2191 }
   2192 char* vk_print_vkmemoryallocateinfo(const VkMemoryAllocateInfo* pStruct, const char* prefix)
   2193 {
   2194     char* str;
   2195     size_t len;
   2196     char* tmpStr;
   2197     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2198     strcpy(extra_indent, "  ");
   2199     strncat(extra_indent, prefix, strlen(prefix));
   2200     char* stp_strs[1];
   2201     if (pStruct->pNext) {
   2202         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2203         len = 256+strlen(tmpStr);
   2204         stp_strs[0] = (char*)malloc(len);
   2205         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2206         free(tmpStr);
   2207     }
   2208     else
   2209         stp_strs[0] = "";
   2210     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   2211     str = (char*)malloc(len);
   2212     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sallocationSize = " PRINTF_SIZE_T_SPECIFIER "\n%smemoryTypeIndex = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->allocationSize), prefix, (pStruct->memoryTypeIndex));
   2213     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   2214         if (0 < strlen(stp_strs[stp_index])) {
   2215             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2216             free(stp_strs[stp_index]);
   2217         }
   2218     }
   2219     free(extra_indent);
   2220     return str;
   2221 }
   2222 char* vk_print_vkmemorybarrier(const VkMemoryBarrier* pStruct, const char* prefix)
   2223 {
   2224     char* str;
   2225     size_t len;
   2226     char* tmpStr;
   2227     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2228     strcpy(extra_indent, "  ");
   2229     strncat(extra_indent, prefix, strlen(prefix));
   2230     char* stp_strs[1];
   2231     if (pStruct->pNext) {
   2232         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2233         len = 256+strlen(tmpStr);
   2234         stp_strs[0] = (char*)malloc(len);
   2235         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2236         free(tmpStr);
   2237     }
   2238     else
   2239         stp_strs[0] = "";
   2240     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   2241     str = (char*)malloc(len);
   2242     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%ssrcAccessMask = %u\n%sdstAccessMask = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->srcAccessMask), prefix, (pStruct->dstAccessMask));
   2243     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   2244         if (0 < strlen(stp_strs[stp_index])) {
   2245             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2246             free(stp_strs[stp_index]);
   2247         }
   2248     }
   2249     free(extra_indent);
   2250     return str;
   2251 }
   2252 char* vk_print_vkmemoryheap(const VkMemoryHeap* pStruct, const char* prefix)
   2253 {
   2254     char* str;
   2255     size_t len;
   2256     len = sizeof(char)*1024;
   2257     str = (char*)malloc(len);
   2258     snprintf(str, len, "%ssize = " PRINTF_SIZE_T_SPECIFIER "\n%sflags = %u\n", prefix, (pStruct->size), prefix, (pStruct->flags));
   2259     return str;
   2260 }
   2261 char* vk_print_vkmemoryrequirements(const VkMemoryRequirements* pStruct, const char* prefix)
   2262 {
   2263     char* str;
   2264     size_t len;
   2265     len = sizeof(char)*1024;
   2266     str = (char*)malloc(len);
   2267     snprintf(str, len, "%ssize = " PRINTF_SIZE_T_SPECIFIER "\n%salignment = " PRINTF_SIZE_T_SPECIFIER "\n%smemoryTypeBits = %u\n", prefix, (pStruct->size), prefix, (pStruct->alignment), prefix, (pStruct->memoryTypeBits));
   2268     return str;
   2269 }
   2270 char* vk_print_vkmemorytype(const VkMemoryType* pStruct, const char* prefix)
   2271 {
   2272     char* str;
   2273     size_t len;
   2274     len = sizeof(char)*1024;
   2275     str = (char*)malloc(len);
   2276     snprintf(str, len, "%spropertyFlags = %u\n%sheapIndex = %u\n", prefix, (pStruct->propertyFlags), prefix, (pStruct->heapIndex));
   2277     return str;
   2278 }
   2279 char* vk_print_vkmirsurfacecreateinfokhr(const VkMirSurfaceCreateInfoKHR* pStruct, const char* prefix)
   2280 {
   2281     char* str;
   2282     size_t len;
   2283     char* tmpStr;
   2284     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2285     strcpy(extra_indent, "  ");
   2286     strncat(extra_indent, prefix, strlen(prefix));
   2287     char* stp_strs[1];
   2288     if (pStruct->pNext) {
   2289         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2290         len = 256+strlen(tmpStr);
   2291         stp_strs[0] = (char*)malloc(len);
   2292         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2293         free(tmpStr);
   2294     }
   2295     else
   2296         stp_strs[0] = "";
   2297     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   2298     str = (char*)malloc(len);
   2299     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sconnection = addr\n%smirSurface = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix);
   2300     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   2301         if (0 < strlen(stp_strs[stp_index])) {
   2302             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2303             free(stp_strs[stp_index]);
   2304         }
   2305     }
   2306     free(extra_indent);
   2307     return str;
   2308 }
   2309 char* vk_print_vkoffset2d(const VkOffset2D* pStruct, const char* prefix)
   2310 {
   2311     char* str;
   2312     size_t len;
   2313     len = sizeof(char)*1024;
   2314     str = (char*)malloc(len);
   2315     snprintf(str, len, "%sx = %i\n%sy = %i\n", prefix, (pStruct->x), prefix, (pStruct->y));
   2316     return str;
   2317 }
   2318 char* vk_print_vkoffset3d(const VkOffset3D* pStruct, const char* prefix)
   2319 {
   2320     char* str;
   2321     size_t len;
   2322     len = sizeof(char)*1024;
   2323     str = (char*)malloc(len);
   2324     snprintf(str, len, "%sx = %i\n%sy = %i\n%sz = %i\n", prefix, (pStruct->x), prefix, (pStruct->y), prefix, (pStruct->z));
   2325     return str;
   2326 }
   2327 char* vk_print_vkphysicaldevicefeatures(const VkPhysicalDeviceFeatures* pStruct, const char* prefix)
   2328 {
   2329     char* str;
   2330     size_t len;
   2331     len = sizeof(char)*1024;
   2332     str = (char*)malloc(len);
   2333     snprintf(str, len, "%srobustBufferAccess = %s\n%sfullDrawIndexUint32 = %s\n%simageCubeArray = %s\n%sindependentBlend = %s\n%sgeometryShader = %s\n%stessellationShader = %s\n%ssampleRateShading = %s\n%sdualSrcBlend = %s\n%slogicOp = %s\n%smultiDrawIndirect = %s\n%sdrawIndirectFirstInstance = %s\n%sdepthClamp = %s\n%sdepthBiasClamp = %s\n%sfillModeNonSolid = %s\n%sdepthBounds = %s\n%swideLines = %s\n%slargePoints = %s\n%salphaToOne = %s\n%smultiViewport = %s\n%ssamplerAnisotropy = %s\n%stextureCompressionETC2 = %s\n%stextureCompressionASTC_LDR = %s\n%stextureCompressionBC = %s\n%socclusionQueryPrecise = %s\n%spipelineStatisticsQuery = %s\n%svertexPipelineStoresAndAtomics = %s\n%sfragmentStoresAndAtomics = %s\n%sshaderTessellationAndGeometryPointSize = %s\n%sshaderImageGatherExtended = %s\n%sshaderStorageImageExtendedFormats = %s\n%sshaderStorageImageMultisample = %s\n%sshaderStorageImageReadWithoutFormat = %s\n%sshaderStorageImageWriteWithoutFormat = %s\n%sshaderUniformBufferArrayDynamicIndexing = %s\n%sshaderSampledImageArrayDynamicIndexing = %s\n%sshaderStorageBufferArrayDynamicIndexing = %s\n%sshaderStorageImageArrayDynamicIndexing = %s\n%sshaderClipDistance = %s\n%sshaderCullDistance = %s\n%sshaderFloat64 = %s\n%sshaderInt64 = %s\n%sshaderInt16 = %s\n%sshaderResourceResidency = %s\n%sshaderResourceMinLod = %s\n%ssparseBinding = %s\n%ssparseResidencyBuffer = %s\n%ssparseResidencyImage2D = %s\n%ssparseResidencyImage3D = %s\n%ssparseResidency2Samples = %s\n%ssparseResidency4Samples = %s\n%ssparseResidency8Samples = %s\n%ssparseResidency16Samples = %s\n%ssparseResidencyAliased = %s\n%svariableMultisampleRate = %s\n%sinheritedQueries = %s\n", prefix, (pStruct->robustBufferAccess) ? "TRUE" : "FALSE", prefix, (pStruct->fullDrawIndexUint32) ? "TRUE" : "FALSE", prefix, (pStruct->imageCubeArray) ? "TRUE" : "FALSE", prefix, (pStruct->independentBlend) ? "TRUE" : "FALSE", prefix, (pStruct->geometryShader) ? "TRUE" : "FALSE", prefix, (pStruct->tessellationShader) ? "TRUE" : "FALSE", prefix, (pStruct->sampleRateShading) ? "TRUE" : "FALSE", prefix, (pStruct->dualSrcBlend) ? "TRUE" : "FALSE", prefix, (pStruct->logicOp) ? "TRUE" : "FALSE", prefix, (pStruct->multiDrawIndirect) ? "TRUE" : "FALSE", prefix, (pStruct->drawIndirectFirstInstance) ? "TRUE" : "FALSE", prefix, (pStruct->depthClamp) ? "TRUE" : "FALSE", prefix, (pStruct->depthBiasClamp) ? "TRUE" : "FALSE", prefix, (pStruct->fillModeNonSolid) ? "TRUE" : "FALSE", prefix, (pStruct->depthBounds) ? "TRUE" : "FALSE", prefix, (pStruct->wideLines) ? "TRUE" : "FALSE", prefix, (pStruct->largePoints) ? "TRUE" : "FALSE", prefix, (pStruct->alphaToOne) ? "TRUE" : "FALSE", prefix, (pStruct->multiViewport) ? "TRUE" : "FALSE", prefix, (pStruct->samplerAnisotropy) ? "TRUE" : "FALSE", prefix, (pStruct->textureCompressionETC2) ? "TRUE" : "FALSE", prefix, (pStruct->textureCompressionASTC_LDR) ? "TRUE" : "FALSE", prefix, (pStruct->textureCompressionBC) ? "TRUE" : "FALSE", prefix, (pStruct->occlusionQueryPrecise) ? "TRUE" : "FALSE", prefix, (pStruct->pipelineStatisticsQuery) ? "TRUE" : "FALSE", prefix, (pStruct->vertexPipelineStoresAndAtomics) ? "TRUE" : "FALSE", prefix, (pStruct->fragmentStoresAndAtomics) ? "TRUE" : "FALSE", prefix, (pStruct->shaderTessellationAndGeometryPointSize) ? "TRUE" : "FALSE", prefix, (pStruct->shaderImageGatherExtended) ? "TRUE" : "FALSE", prefix, (pStruct->shaderStorageImageExtendedFormats) ? "TRUE" : "FALSE", prefix, (pStruct->shaderStorageImageMultisample) ? "TRUE" : "FALSE", prefix, (pStruct->shaderStorageImageReadWithoutFormat) ? "TRUE" : "FALSE", prefix, (pStruct->shaderStorageImageWriteWithoutFormat) ? "TRUE" : "FALSE", prefix, (pStruct->shaderUniformBufferArrayDynamicIndexing) ? "TRUE" : "FALSE", prefix, (pStruct->shaderSampledImageArrayDynamicIndexing) ? "TRUE" : "FALSE", prefix, (pStruct->shaderStorageBufferArrayDynamicIndexing) ? "TRUE" : "FALSE", prefix, (pStruct->shaderStorageImageArrayDynamicIndexing) ? "TRUE" : "FALSE", prefix, (pStruct->shaderClipDistance) ? "TRUE" : "FALSE", prefix, (pStruct->shaderCullDistance) ? "TRUE" : "FALSE", prefix, (pStruct->shaderFloat64) ? "TRUE" : "FALSE", prefix, (pStruct->shaderInt64) ? "TRUE" : "FALSE", prefix, (pStruct->shaderInt16) ? "TRUE" : "FALSE", prefix, (pStruct->shaderResourceResidency) ? "TRUE" : "FALSE", prefix, (pStruct->shaderResourceMinLod) ? "TRUE" : "FALSE", prefix, (pStruct->sparseBinding) ? "TRUE" : "FALSE", prefix, (pStruct->sparseResidencyBuffer) ? "TRUE" : "FALSE", prefix, (pStruct->sparseResidencyImage2D) ? "TRUE" : "FALSE", prefix, (pStruct->sparseResidencyImage3D) ? "TRUE" : "FALSE", prefix, (pStruct->sparseResidency2Samples) ? "TRUE" : "FALSE", prefix, (pStruct->sparseResidency4Samples) ? "TRUE" : "FALSE", prefix, (pStruct->sparseResidency8Samples) ? "TRUE" : "FALSE", prefix, (pStruct->sparseResidency16Samples) ? "TRUE" : "FALSE", prefix, (pStruct->sparseResidencyAliased) ? "TRUE" : "FALSE", prefix, (pStruct->variableMultisampleRate) ? "TRUE" : "FALSE", prefix, (pStruct->inheritedQueries) ? "TRUE" : "FALSE");
   2334     return str;
   2335 }
   2336 char* vk_print_vkphysicaldevicelimits(const VkPhysicalDeviceLimits* pStruct, const char* prefix)
   2337 {
   2338     char* str;
   2339     size_t len;
   2340     len = sizeof(char)*1024;
   2341     str = (char*)malloc(len);
   2342     snprintf(str, len, "%smaxImageDimension1D = %u\n%smaxImageDimension2D = %u\n%smaxImageDimension3D = %u\n%smaxImageDimensionCube = %u\n%smaxImageArrayLayers = %u\n%smaxTexelBufferElements = %u\n%smaxUniformBufferRange = %u\n%smaxStorageBufferRange = %u\n%smaxPushConstantsSize = %u\n%smaxMemoryAllocationCount = %u\n%smaxSamplerAllocationCount = %u\n%sbufferImageGranularity = " PRINTF_SIZE_T_SPECIFIER "\n%ssparseAddressSpaceSize = " PRINTF_SIZE_T_SPECIFIER "\n%smaxBoundDescriptorSets = %u\n%smaxPerStageDescriptorSamplers = %u\n%smaxPerStageDescriptorUniformBuffers = %u\n%smaxPerStageDescriptorStorageBuffers = %u\n%smaxPerStageDescriptorSampledImages = %u\n%smaxPerStageDescriptorStorageImages = %u\n%smaxPerStageDescriptorInputAttachments = %u\n%smaxPerStageResources = %u\n%smaxDescriptorSetSamplers = %u\n%smaxDescriptorSetUniformBuffers = %u\n%smaxDescriptorSetUniformBuffersDynamic = %u\n%smaxDescriptorSetStorageBuffers = %u\n%smaxDescriptorSetStorageBuffersDynamic = %u\n%smaxDescriptorSetSampledImages = %u\n%smaxDescriptorSetStorageImages = %u\n%smaxDescriptorSetInputAttachments = %u\n%smaxVertexInputAttributes = %u\n%smaxVertexInputBindings = %u\n%smaxVertexInputAttributeOffset = %u\n%smaxVertexInputBindingStride = %u\n%smaxVertexOutputComponents = %u\n%smaxTessellationGenerationLevel = %u\n%smaxTessellationPatchSize = %u\n%smaxTessellationControlPerVertexInputComponents = %u\n%smaxTessellationControlPerVertexOutputComponents = %u\n%smaxTessellationControlPerPatchOutputComponents = %u\n%smaxTessellationControlTotalOutputComponents = %u\n%smaxTessellationEvaluationInputComponents = %u\n%smaxTessellationEvaluationOutputComponents = %u\n%smaxGeometryShaderInvocations = %u\n%smaxGeometryInputComponents = %u\n%smaxGeometryOutputComponents = %u\n%smaxGeometryOutputVertices = %u\n%smaxGeometryTotalOutputComponents = %u\n%smaxFragmentInputComponents = %u\n%smaxFragmentOutputAttachments = %u\n%smaxFragmentDualSrcAttachments = %u\n%smaxFragmentCombinedOutputResources = %u\n%smaxComputeSharedMemorySize = %u\n%smaxComputeWorkGroupCount = addr\n%smaxComputeWorkGroupInvocations = %u\n%smaxComputeWorkGroupSize = addr\n%ssubPixelPrecisionBits = %u\n%ssubTexelPrecisionBits = %u\n%smipmapPrecisionBits = %u\n%smaxDrawIndexedIndexValue = %u\n%smaxDrawIndirectCount = %u\n%smaxSamplerLodBias = %f\n%smaxSamplerAnisotropy = %f\n%smaxViewports = %u\n%smaxViewportDimensions = addr\n%sviewportBoundsRange = addr\n%sviewportSubPixelBits = %u\n%sminMemoryMapAlignment = " PRINTF_SIZE_T_SPECIFIER "\n%sminTexelBufferOffsetAlignment = " PRINTF_SIZE_T_SPECIFIER "\n%sminUniformBufferOffsetAlignment = " PRINTF_SIZE_T_SPECIFIER "\n%sminStorageBufferOffsetAlignment = " PRINTF_SIZE_T_SPECIFIER "\n%sminTexelOffset = %i\n%smaxTexelOffset = %u\n%sminTexelGatherOffset = %i\n%smaxTexelGatherOffset = %u\n%sminInterpolationOffset = %f\n%smaxInterpolationOffset = %f\n%ssubPixelInterpolationOffsetBits = %u\n%smaxFramebufferWidth = %u\n%smaxFramebufferHeight = %u\n%smaxFramebufferLayers = %u\n%sframebufferColorSampleCounts = %u\n%sframebufferDepthSampleCounts = %u\n%sframebufferStencilSampleCounts = %u\n%sframebufferNoAttachmentsSampleCounts = %u\n%smaxColorAttachments = %u\n%ssampledImageColorSampleCounts = %u\n%ssampledImageIntegerSampleCounts = %u\n%ssampledImageDepthSampleCounts = %u\n%ssampledImageStencilSampleCounts = %u\n%sstorageImageSampleCounts = %u\n%smaxSampleMaskWords = %u\n%stimestampComputeAndGraphics = %s\n%stimestampPeriod = %f\n%smaxClipDistances = %u\n%smaxCullDistances = %u\n%smaxCombinedClipAndCullDistances = %u\n%sdiscreteQueuePriorities = %u\n%spointSizeRange = addr\n%slineWidthRange = addr\n%spointSizeGranularity = %f\n%slineWidthGranularity = %f\n%sstrictLines = %s\n%sstandardSampleLocations = %s\n%soptimalBufferCopyOffsetAlignment = " PRINTF_SIZE_T_SPECIFIER "\n%soptimalBufferCopyRowPitchAlignment = " PRINTF_SIZE_T_SPECIFIER "\n%snonCoherentAtomSize = " PRINTF_SIZE_T_SPECIFIER "\n", prefix, (pStruct->maxImageDimension1D), prefix, (pStruct->maxImageDimension2D), prefix, (pStruct->maxImageDimension3D), prefix, (pStruct->maxImageDimensionCube), prefix, (pStruct->maxImageArrayLayers), prefix, (pStruct->maxTexelBufferElements), prefix, (pStruct->maxUniformBufferRange), prefix, (pStruct->maxStorageBufferRange), prefix, (pStruct->maxPushConstantsSize), prefix, (pStruct->maxMemoryAllocationCount), prefix, (pStruct->maxSamplerAllocationCount), prefix, (pStruct->bufferImageGranularity), prefix, (pStruct->sparseAddressSpaceSize), prefix, (pStruct->maxBoundDescriptorSets), prefix, (pStruct->maxPerStageDescriptorSamplers), prefix, (pStruct->maxPerStageDescriptorUniformBuffers), prefix, (pStruct->maxPerStageDescriptorStorageBuffers), prefix, (pStruct->maxPerStageDescriptorSampledImages), prefix, (pStruct->maxPerStageDescriptorStorageImages), prefix, (pStruct->maxPerStageDescriptorInputAttachments), prefix, (pStruct->maxPerStageResources), prefix, (pStruct->maxDescriptorSetSamplers), prefix, (pStruct->maxDescriptorSetUniformBuffers), prefix, (pStruct->maxDescriptorSetUniformBuffersDynamic), prefix, (pStruct->maxDescriptorSetStorageBuffers), prefix, (pStruct->maxDescriptorSetStorageBuffersDynamic), prefix, (pStruct->maxDescriptorSetSampledImages), prefix, (pStruct->maxDescriptorSetStorageImages), prefix, (pStruct->maxDescriptorSetInputAttachments), prefix, (pStruct->maxVertexInputAttributes), prefix, (pStruct->maxVertexInputBindings), prefix, (pStruct->maxVertexInputAttributeOffset), prefix, (pStruct->maxVertexInputBindingStride), prefix, (pStruct->maxVertexOutputComponents), prefix, (pStruct->maxTessellationGenerationLevel), prefix, (pStruct->maxTessellationPatchSize), prefix, (pStruct->maxTessellationControlPerVertexInputComponents), prefix, (pStruct->maxTessellationControlPerVertexOutputComponents), prefix, (pStruct->maxTessellationControlPerPatchOutputComponents), prefix, (pStruct->maxTessellationControlTotalOutputComponents), prefix, (pStruct->maxTessellationEvaluationInputComponents), prefix, (pStruct->maxTessellationEvaluationOutputComponents), prefix, (pStruct->maxGeometryShaderInvocations), prefix, (pStruct->maxGeometryInputComponents), prefix, (pStruct->maxGeometryOutputComponents), prefix, (pStruct->maxGeometryOutputVertices), prefix, (pStruct->maxGeometryTotalOutputComponents), prefix, (pStruct->maxFragmentInputComponents), prefix, (pStruct->maxFragmentOutputAttachments), prefix, (pStruct->maxFragmentDualSrcAttachments), prefix, (pStruct->maxFragmentCombinedOutputResources), prefix, (pStruct->maxComputeSharedMemorySize), prefix, prefix, (pStruct->maxComputeWorkGroupInvocations), prefix, prefix, (pStruct->subPixelPrecisionBits), prefix, (pStruct->subTexelPrecisionBits), prefix, (pStruct->mipmapPrecisionBits), prefix, (pStruct->maxDrawIndexedIndexValue), prefix, (pStruct->maxDrawIndirectCount), prefix, (pStruct->maxSamplerLodBias), prefix, (pStruct->maxSamplerAnisotropy), prefix, (pStruct->maxViewports), prefix, prefix, prefix, (pStruct->viewportSubPixelBits), prefix, (pStruct->minMemoryMapAlignment), prefix, (pStruct->minTexelBufferOffsetAlignment), prefix, (pStruct->minUniformBufferOffsetAlignment), prefix, (pStruct->minStorageBufferOffsetAlignment), prefix, (pStruct->minTexelOffset), prefix, (pStruct->maxTexelOffset), prefix, (pStruct->minTexelGatherOffset), prefix, (pStruct->maxTexelGatherOffset), prefix, (pStruct->minInterpolationOffset), prefix, (pStruct->maxInterpolationOffset), prefix, (pStruct->subPixelInterpolationOffsetBits), prefix, (pStruct->maxFramebufferWidth), prefix, (pStruct->maxFramebufferHeight), prefix, (pStruct->maxFramebufferLayers), prefix, (pStruct->framebufferColorSampleCounts), prefix, (pStruct->framebufferDepthSampleCounts), prefix, (pStruct->framebufferStencilSampleCounts), prefix, (pStruct->framebufferNoAttachmentsSampleCounts), prefix, (pStruct->maxColorAttachments), prefix, (pStruct->sampledImageColorSampleCounts), prefix, (pStruct->sampledImageIntegerSampleCounts), prefix, (pStruct->sampledImageDepthSampleCounts), prefix, (pStruct->sampledImageStencilSampleCounts), prefix, (pStruct->storageImageSampleCounts), prefix, (pStruct->maxSampleMaskWords), prefix, (pStruct->timestampComputeAndGraphics) ? "TRUE" : "FALSE", prefix, (pStruct->timestampPeriod), prefix, (pStruct->maxClipDistances), prefix, (pStruct->maxCullDistances), prefix, (pStruct->maxCombinedClipAndCullDistances), prefix, (pStruct->discreteQueuePriorities), prefix, prefix, prefix, (pStruct->pointSizeGranularity), prefix, (pStruct->lineWidthGranularity), prefix, (pStruct->strictLines) ? "TRUE" : "FALSE", prefix, (pStruct->standardSampleLocations) ? "TRUE" : "FALSE", prefix, (pStruct->optimalBufferCopyOffsetAlignment), prefix, (pStruct->optimalBufferCopyRowPitchAlignment), prefix, (pStruct->nonCoherentAtomSize));
   2343     return str;
   2344 }
   2345 char* vk_print_vkphysicaldevicememoryproperties(const VkPhysicalDeviceMemoryProperties* pStruct, const char* prefix)
   2346 {
   2347     char* str;
   2348     size_t len;
   2349     char* tmpStr;
   2350     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2351     strcpy(extra_indent, "  ");
   2352     strncat(extra_indent, prefix, strlen(prefix));
   2353     char* stp_strs[2];
   2354     tmpStr = vk_print_vkmemorytype(&pStruct->memoryTypes[0], extra_indent);
   2355     len = 256+strlen(tmpStr);
   2356     stp_strs[0] = (char*)malloc(len);
   2357     snprintf(stp_strs[0], len, " %smemoryTypes[0] (addr)\n%s", prefix, tmpStr);
   2358     tmpStr = vk_print_vkmemoryheap(&pStruct->memoryHeaps[0], extra_indent);
   2359     len = 256+strlen(tmpStr);
   2360     stp_strs[1] = (char*)malloc(len);
   2361     snprintf(stp_strs[1], len, " %smemoryHeaps[0] (addr)\n%s", prefix, tmpStr);
   2362     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
   2363     str = (char*)malloc(len);
   2364     snprintf(str, len, "%smemoryTypeCount = %u\n%smemoryTypes = addr\n%smemoryHeapCount = %u\n%smemoryHeaps = addr\n", prefix, (pStruct->memoryTypeCount), prefix, prefix, (pStruct->memoryHeapCount), prefix);
   2365     for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
   2366         if (0 < strlen(stp_strs[stp_index])) {
   2367             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2368             free(stp_strs[stp_index]);
   2369         }
   2370     }
   2371     free(extra_indent);
   2372     return str;
   2373 }
   2374 char* vk_print_vkphysicaldeviceproperties(const VkPhysicalDeviceProperties* pStruct, const char* prefix)
   2375 {
   2376     char* str;
   2377     size_t len;
   2378     char* tmpStr;
   2379     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2380     strcpy(extra_indent, "  ");
   2381     strncat(extra_indent, prefix, strlen(prefix));
   2382     char* stp_strs[2];
   2383     tmpStr = vk_print_vkphysicaldevicelimits(&pStruct->limits, extra_indent);
   2384     len = 256+strlen(tmpStr);
   2385     stp_strs[0] = (char*)malloc(len);
   2386     snprintf(stp_strs[0], len, " %slimits (addr)\n%s", prefix, tmpStr);
   2387     tmpStr = vk_print_vkphysicaldevicesparseproperties(&pStruct->sparseProperties, extra_indent);
   2388     len = 256+strlen(tmpStr);
   2389     stp_strs[1] = (char*)malloc(len);
   2390     snprintf(stp_strs[1], len, " %ssparseProperties (addr)\n%s", prefix, tmpStr);
   2391     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
   2392     str = (char*)malloc(len);
   2393     snprintf(str, len, "%sapiVersion = %u\n%sdriverVersion = %u\n%svendorID = %u\n%sdeviceID = %u\n%sdeviceType = %s\n%sdeviceName = %s\n%spipelineCacheUUID = addr\n%slimits = addr\n%ssparseProperties = addr\n", prefix, (pStruct->apiVersion), prefix, (pStruct->driverVersion), prefix, (pStruct->vendorID), prefix, (pStruct->deviceID), prefix, string_VkPhysicalDeviceType(pStruct->deviceType), prefix, (pStruct->deviceName), prefix, prefix, prefix);
   2394     for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
   2395         if (0 < strlen(stp_strs[stp_index])) {
   2396             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2397             free(stp_strs[stp_index]);
   2398         }
   2399     }
   2400     free(extra_indent);
   2401     return str;
   2402 }
   2403 char* vk_print_vkphysicaldevicesparseproperties(const VkPhysicalDeviceSparseProperties* pStruct, const char* prefix)
   2404 {
   2405     char* str;
   2406     size_t len;
   2407     len = sizeof(char)*1024;
   2408     str = (char*)malloc(len);
   2409     snprintf(str, len, "%sresidencyStandard2DBlockShape = %s\n%sresidencyStandard2DMultisampleBlockShape = %s\n%sresidencyStandard3DBlockShape = %s\n%sresidencyAlignedMipSize = %s\n%sresidencyNonResidentStrict = %s\n", prefix, (pStruct->residencyStandard2DBlockShape) ? "TRUE" : "FALSE", prefix, (pStruct->residencyStandard2DMultisampleBlockShape) ? "TRUE" : "FALSE", prefix, (pStruct->residencyStandard3DBlockShape) ? "TRUE" : "FALSE", prefix, (pStruct->residencyAlignedMipSize) ? "TRUE" : "FALSE", prefix, (pStruct->residencyNonResidentStrict) ? "TRUE" : "FALSE");
   2410     return str;
   2411 }
   2412 char* vk_print_vkpipelinecachecreateinfo(const VkPipelineCacheCreateInfo* pStruct, const char* prefix)
   2413 {
   2414     char* str;
   2415     size_t len;
   2416     char* tmpStr;
   2417     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2418     strcpy(extra_indent, "  ");
   2419     strncat(extra_indent, prefix, strlen(prefix));
   2420     char* stp_strs[1];
   2421     if (pStruct->pNext) {
   2422         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2423         len = 256+strlen(tmpStr);
   2424         stp_strs[0] = (char*)malloc(len);
   2425         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2426         free(tmpStr);
   2427     }
   2428     else
   2429         stp_strs[0] = "";
   2430     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   2431     str = (char*)malloc(len);
   2432     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sinitialDataSize = " PRINTF_SIZE_T_SPECIFIER "\n%spInitialData = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->initialDataSize), prefix);
   2433     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   2434         if (0 < strlen(stp_strs[stp_index])) {
   2435             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2436             free(stp_strs[stp_index]);
   2437         }
   2438     }
   2439     free(extra_indent);
   2440     return str;
   2441 }
   2442 char* vk_print_vkpipelinecolorblendattachmentstate(const VkPipelineColorBlendAttachmentState* pStruct, const char* prefix)
   2443 {
   2444     char* str;
   2445     size_t len;
   2446     len = sizeof(char)*1024;
   2447     str = (char*)malloc(len);
   2448     snprintf(str, len, "%sblendEnable = %s\n%ssrcColorBlendFactor = %s\n%sdstColorBlendFactor = %s\n%scolorBlendOp = %s\n%ssrcAlphaBlendFactor = %s\n%sdstAlphaBlendFactor = %s\n%salphaBlendOp = %s\n%scolorWriteMask = %u\n", prefix, (pStruct->blendEnable) ? "TRUE" : "FALSE", prefix, string_VkBlendFactor(pStruct->srcColorBlendFactor), prefix, string_VkBlendFactor(pStruct->dstColorBlendFactor), prefix, string_VkBlendOp(pStruct->colorBlendOp), prefix, string_VkBlendFactor(pStruct->srcAlphaBlendFactor), prefix, string_VkBlendFactor(pStruct->dstAlphaBlendFactor), prefix, string_VkBlendOp(pStruct->alphaBlendOp), prefix, (pStruct->colorWriteMask));
   2449     return str;
   2450 }
   2451 char* vk_print_vkpipelinecolorblendstatecreateinfo(const VkPipelineColorBlendStateCreateInfo* pStruct, const char* prefix)
   2452 {
   2453     char* str;
   2454     size_t len;
   2455     char* tmpStr;
   2456     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2457     strcpy(extra_indent, "  ");
   2458     strncat(extra_indent, prefix, strlen(prefix));
   2459     char* stp_strs[2];
   2460     if (pStruct->pNext) {
   2461         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2462         len = 256+strlen(tmpStr);
   2463         stp_strs[0] = (char*)malloc(len);
   2464         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2465         free(tmpStr);
   2466     }
   2467     else
   2468         stp_strs[0] = "";
   2469     if (pStruct->pAttachments) {
   2470         tmpStr = vk_print_vkpipelinecolorblendattachmentstate(pStruct->pAttachments, extra_indent);
   2471         len = 256+strlen(tmpStr)+strlen(prefix);
   2472         stp_strs[1] = (char*)malloc(len);
   2473         snprintf(stp_strs[1], len, " %spAttachments (addr)\n%s", prefix, tmpStr);
   2474     }
   2475     else
   2476         stp_strs[1] = "";
   2477     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
   2478     str = (char*)malloc(len);
   2479     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%slogicOpEnable = %s\n%slogicOp = %s\n%sattachmentCount = %u\n%spAttachments = addr\n%sblendConstants = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->logicOpEnable) ? "TRUE" : "FALSE", prefix, string_VkLogicOp(pStruct->logicOp), prefix, (pStruct->attachmentCount), prefix, prefix);
   2480     for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
   2481         if (0 < strlen(stp_strs[stp_index])) {
   2482             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2483             free(stp_strs[stp_index]);
   2484         }
   2485     }
   2486     free(extra_indent);
   2487     return str;
   2488 }
   2489 char* vk_print_vkpipelinedepthstencilstatecreateinfo(const VkPipelineDepthStencilStateCreateInfo* pStruct, const char* prefix)
   2490 {
   2491     char* str;
   2492     size_t len;
   2493     char* tmpStr;
   2494     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2495     strcpy(extra_indent, "  ");
   2496     strncat(extra_indent, prefix, strlen(prefix));
   2497     char* stp_strs[3];
   2498     if (pStruct->pNext) {
   2499         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2500         len = 256+strlen(tmpStr);
   2501         stp_strs[0] = (char*)malloc(len);
   2502         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2503         free(tmpStr);
   2504     }
   2505     else
   2506         stp_strs[0] = "";
   2507     tmpStr = vk_print_vkstencilopstate(&pStruct->front, extra_indent);
   2508     len = 256+strlen(tmpStr);
   2509     stp_strs[1] = (char*)malloc(len);
   2510     snprintf(stp_strs[1], len, " %sfront (addr)\n%s", prefix, tmpStr);
   2511     tmpStr = vk_print_vkstencilopstate(&pStruct->back, extra_indent);
   2512     len = 256+strlen(tmpStr);
   2513     stp_strs[2] = (char*)malloc(len);
   2514     snprintf(stp_strs[2], len, " %sback (addr)\n%s", prefix, tmpStr);
   2515     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
   2516     str = (char*)malloc(len);
   2517     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sdepthTestEnable = %s\n%sdepthWriteEnable = %s\n%sdepthCompareOp = %s\n%sdepthBoundsTestEnable = %s\n%sstencilTestEnable = %s\n%sfront = addr\n%sback = addr\n%sminDepthBounds = %f\n%smaxDepthBounds = %f\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->depthTestEnable) ? "TRUE" : "FALSE", prefix, (pStruct->depthWriteEnable) ? "TRUE" : "FALSE", prefix, string_VkCompareOp(pStruct->depthCompareOp), prefix, (pStruct->depthBoundsTestEnable) ? "TRUE" : "FALSE", prefix, (pStruct->stencilTestEnable) ? "TRUE" : "FALSE", prefix, prefix, prefix, (pStruct->minDepthBounds), prefix, (pStruct->maxDepthBounds));
   2518     for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
   2519         if (0 < strlen(stp_strs[stp_index])) {
   2520             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2521             free(stp_strs[stp_index]);
   2522         }
   2523     }
   2524     free(extra_indent);
   2525     return str;
   2526 }
   2527 char* vk_print_vkpipelinedynamicstatecreateinfo(const VkPipelineDynamicStateCreateInfo* pStruct, const char* prefix)
   2528 {
   2529     char* str;
   2530     size_t len;
   2531     char* tmpStr;
   2532     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2533     strcpy(extra_indent, "  ");
   2534     strncat(extra_indent, prefix, strlen(prefix));
   2535     char* stp_strs[1];
   2536     if (pStruct->pNext) {
   2537         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2538         len = 256+strlen(tmpStr);
   2539         stp_strs[0] = (char*)malloc(len);
   2540         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2541         free(tmpStr);
   2542     }
   2543     else
   2544         stp_strs[0] = "";
   2545     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   2546     str = (char*)malloc(len);
   2547     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sdynamicStateCount = %u\n%spDynamicStates = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->dynamicStateCount), prefix);
   2548     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   2549         if (0 < strlen(stp_strs[stp_index])) {
   2550             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2551             free(stp_strs[stp_index]);
   2552         }
   2553     }
   2554     free(extra_indent);
   2555     return str;
   2556 }
   2557 char* vk_print_vkpipelineinputassemblystatecreateinfo(const VkPipelineInputAssemblyStateCreateInfo* pStruct, const char* prefix)
   2558 {
   2559     char* str;
   2560     size_t len;
   2561     char* tmpStr;
   2562     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2563     strcpy(extra_indent, "  ");
   2564     strncat(extra_indent, prefix, strlen(prefix));
   2565     char* stp_strs[1];
   2566     if (pStruct->pNext) {
   2567         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2568         len = 256+strlen(tmpStr);
   2569         stp_strs[0] = (char*)malloc(len);
   2570         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2571         free(tmpStr);
   2572     }
   2573     else
   2574         stp_strs[0] = "";
   2575     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   2576     str = (char*)malloc(len);
   2577     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%stopology = %s\n%sprimitiveRestartEnable = %s\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, string_VkPrimitiveTopology(pStruct->topology), prefix, (pStruct->primitiveRestartEnable) ? "TRUE" : "FALSE");
   2578     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   2579         if (0 < strlen(stp_strs[stp_index])) {
   2580             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2581             free(stp_strs[stp_index]);
   2582         }
   2583     }
   2584     free(extra_indent);
   2585     return str;
   2586 }
   2587 char* vk_print_vkpipelinelayoutcreateinfo(const VkPipelineLayoutCreateInfo* pStruct, const char* prefix)
   2588 {
   2589     char* str;
   2590     size_t len;
   2591     char* tmpStr;
   2592     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2593     strcpy(extra_indent, "  ");
   2594     strncat(extra_indent, prefix, strlen(prefix));
   2595     char* stp_strs[2];
   2596     if (pStruct->pNext) {
   2597         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2598         len = 256+strlen(tmpStr);
   2599         stp_strs[0] = (char*)malloc(len);
   2600         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2601         free(tmpStr);
   2602     }
   2603     else
   2604         stp_strs[0] = "";
   2605     if (pStruct->pPushConstantRanges) {
   2606         tmpStr = vk_print_vkpushconstantrange(pStruct->pPushConstantRanges, extra_indent);
   2607         len = 256+strlen(tmpStr)+strlen(prefix);
   2608         stp_strs[1] = (char*)malloc(len);
   2609         snprintf(stp_strs[1], len, " %spPushConstantRanges (addr)\n%s", prefix, tmpStr);
   2610     }
   2611     else
   2612         stp_strs[1] = "";
   2613     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
   2614     str = (char*)malloc(len);
   2615     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%ssetLayoutCount = %u\n%spSetLayouts = addr\n%spushConstantRangeCount = %u\n%spPushConstantRanges = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->setLayoutCount), prefix, prefix, (pStruct->pushConstantRangeCount), prefix);
   2616     for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
   2617         if (0 < strlen(stp_strs[stp_index])) {
   2618             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2619             free(stp_strs[stp_index]);
   2620         }
   2621     }
   2622     free(extra_indent);
   2623     return str;
   2624 }
   2625 char* vk_print_vkpipelinemultisamplestatecreateinfo(const VkPipelineMultisampleStateCreateInfo* pStruct, const char* prefix)
   2626 {
   2627     char* str;
   2628     size_t len;
   2629     char* tmpStr;
   2630     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2631     strcpy(extra_indent, "  ");
   2632     strncat(extra_indent, prefix, strlen(prefix));
   2633     char* stp_strs[1];
   2634     if (pStruct->pNext) {
   2635         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2636         len = 256+strlen(tmpStr);
   2637         stp_strs[0] = (char*)malloc(len);
   2638         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2639         free(tmpStr);
   2640     }
   2641     else
   2642         stp_strs[0] = "";
   2643     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   2644     str = (char*)malloc(len);
   2645     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%srasterizationSamples = %s\n%ssampleShadingEnable = %s\n%sminSampleShading = %f\n%spSampleMask = %u\n%salphaToCoverageEnable = %s\n%salphaToOneEnable = %s\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, string_VkSampleCountFlagBits(pStruct->rasterizationSamples), prefix, (pStruct->sampleShadingEnable) ? "TRUE" : "FALSE", prefix, (pStruct->minSampleShading), prefix, (pStruct->pSampleMask), prefix, (pStruct->alphaToCoverageEnable) ? "TRUE" : "FALSE", prefix, (pStruct->alphaToOneEnable) ? "TRUE" : "FALSE");
   2646     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   2647         if (0 < strlen(stp_strs[stp_index])) {
   2648             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2649             free(stp_strs[stp_index]);
   2650         }
   2651     }
   2652     free(extra_indent);
   2653     return str;
   2654 }
   2655 char* vk_print_vkpipelinerasterizationstatecreateinfo(const VkPipelineRasterizationStateCreateInfo* pStruct, const char* prefix)
   2656 {
   2657     char* str;
   2658     size_t len;
   2659     char* tmpStr;
   2660     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2661     strcpy(extra_indent, "  ");
   2662     strncat(extra_indent, prefix, strlen(prefix));
   2663     char* stp_strs[1];
   2664     if (pStruct->pNext) {
   2665         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2666         len = 256+strlen(tmpStr);
   2667         stp_strs[0] = (char*)malloc(len);
   2668         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2669         free(tmpStr);
   2670     }
   2671     else
   2672         stp_strs[0] = "";
   2673     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   2674     str = (char*)malloc(len);
   2675     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sdepthClampEnable = %s\n%srasterizerDiscardEnable = %s\n%spolygonMode = %s\n%scullMode = %u\n%sfrontFace = %s\n%sdepthBiasEnable = %s\n%sdepthBiasConstantFactor = %f\n%sdepthBiasClamp = %f\n%sdepthBiasSlopeFactor = %f\n%slineWidth = %f\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->depthClampEnable) ? "TRUE" : "FALSE", prefix, (pStruct->rasterizerDiscardEnable) ? "TRUE" : "FALSE", prefix, string_VkPolygonMode(pStruct->polygonMode), prefix, (pStruct->cullMode), prefix, string_VkFrontFace(pStruct->frontFace), prefix, (pStruct->depthBiasEnable) ? "TRUE" : "FALSE", prefix, (pStruct->depthBiasConstantFactor), prefix, (pStruct->depthBiasClamp), prefix, (pStruct->depthBiasSlopeFactor), prefix, (pStruct->lineWidth));
   2676     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   2677         if (0 < strlen(stp_strs[stp_index])) {
   2678             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2679             free(stp_strs[stp_index]);
   2680         }
   2681     }
   2682     free(extra_indent);
   2683     return str;
   2684 }
   2685 char* vk_print_vkpipelinerasterizationstaterasterizationorderamd(const VkPipelineRasterizationStateRasterizationOrderAMD* pStruct, const char* prefix)
   2686 {
   2687     char* str;
   2688     size_t len;
   2689     char* tmpStr;
   2690     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2691     strcpy(extra_indent, "  ");
   2692     strncat(extra_indent, prefix, strlen(prefix));
   2693     char* stp_strs[1];
   2694     if (pStruct->pNext) {
   2695         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2696         len = 256+strlen(tmpStr);
   2697         stp_strs[0] = (char*)malloc(len);
   2698         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2699         free(tmpStr);
   2700     }
   2701     else
   2702         stp_strs[0] = "";
   2703     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   2704     str = (char*)malloc(len);
   2705     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%srasterizationOrder = %s\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, string_VkRasterizationOrderAMD(pStruct->rasterizationOrder));
   2706     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   2707         if (0 < strlen(stp_strs[stp_index])) {
   2708             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2709             free(stp_strs[stp_index]);
   2710         }
   2711     }
   2712     free(extra_indent);
   2713     return str;
   2714 }
   2715 char* vk_print_vkpipelineshaderstagecreateinfo(const VkPipelineShaderStageCreateInfo* pStruct, const char* prefix)
   2716 {
   2717     char* str;
   2718     size_t len;
   2719     char* tmpStr;
   2720     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2721     strcpy(extra_indent, "  ");
   2722     strncat(extra_indent, prefix, strlen(prefix));
   2723     char* stp_strs[2];
   2724     if (pStruct->pNext) {
   2725         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2726         len = 256+strlen(tmpStr);
   2727         stp_strs[0] = (char*)malloc(len);
   2728         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2729         free(tmpStr);
   2730     }
   2731     else
   2732         stp_strs[0] = "";
   2733     if (pStruct->pSpecializationInfo) {
   2734         tmpStr = vk_print_vkspecializationinfo(pStruct->pSpecializationInfo, extra_indent);
   2735         len = 256+strlen(tmpStr)+strlen(prefix);
   2736         stp_strs[1] = (char*)malloc(len);
   2737         snprintf(stp_strs[1], len, " %spSpecializationInfo (addr)\n%s", prefix, tmpStr);
   2738     }
   2739     else
   2740         stp_strs[1] = "";
   2741     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
   2742     str = (char*)malloc(len);
   2743     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sstage = %s\n%smodule = addr\n%spName = addr\n%spSpecializationInfo = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, string_VkShaderStageFlagBits(pStruct->stage), prefix, prefix, prefix);
   2744     for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
   2745         if (0 < strlen(stp_strs[stp_index])) {
   2746             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2747             free(stp_strs[stp_index]);
   2748         }
   2749     }
   2750     free(extra_indent);
   2751     return str;
   2752 }
   2753 char* vk_print_vkpipelinetessellationstatecreateinfo(const VkPipelineTessellationStateCreateInfo* pStruct, const char* prefix)
   2754 {
   2755     char* str;
   2756     size_t len;
   2757     char* tmpStr;
   2758     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2759     strcpy(extra_indent, "  ");
   2760     strncat(extra_indent, prefix, strlen(prefix));
   2761     char* stp_strs[1];
   2762     if (pStruct->pNext) {
   2763         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2764         len = 256+strlen(tmpStr);
   2765         stp_strs[0] = (char*)malloc(len);
   2766         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2767         free(tmpStr);
   2768     }
   2769     else
   2770         stp_strs[0] = "";
   2771     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   2772     str = (char*)malloc(len);
   2773     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%spatchControlPoints = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->patchControlPoints));
   2774     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   2775         if (0 < strlen(stp_strs[stp_index])) {
   2776             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2777             free(stp_strs[stp_index]);
   2778         }
   2779     }
   2780     free(extra_indent);
   2781     return str;
   2782 }
   2783 char* vk_print_vkpipelinevertexinputstatecreateinfo(const VkPipelineVertexInputStateCreateInfo* pStruct, const char* prefix)
   2784 {
   2785     char* str;
   2786     size_t len;
   2787     char* tmpStr;
   2788     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2789     strcpy(extra_indent, "  ");
   2790     strncat(extra_indent, prefix, strlen(prefix));
   2791     char* stp_strs[3];
   2792     if (pStruct->pNext) {
   2793         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2794         len = 256+strlen(tmpStr);
   2795         stp_strs[0] = (char*)malloc(len);
   2796         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2797         free(tmpStr);
   2798     }
   2799     else
   2800         stp_strs[0] = "";
   2801     if (pStruct->pVertexBindingDescriptions) {
   2802         tmpStr = vk_print_vkvertexinputbindingdescription(pStruct->pVertexBindingDescriptions, extra_indent);
   2803         len = 256+strlen(tmpStr)+strlen(prefix);
   2804         stp_strs[1] = (char*)malloc(len);
   2805         snprintf(stp_strs[1], len, " %spVertexBindingDescriptions (addr)\n%s", prefix, tmpStr);
   2806     }
   2807     else
   2808         stp_strs[1] = "";
   2809     if (pStruct->pVertexAttributeDescriptions) {
   2810         tmpStr = vk_print_vkvertexinputattributedescription(pStruct->pVertexAttributeDescriptions, extra_indent);
   2811         len = 256+strlen(tmpStr)+strlen(prefix);
   2812         stp_strs[2] = (char*)malloc(len);
   2813         snprintf(stp_strs[2], len, " %spVertexAttributeDescriptions (addr)\n%s", prefix, tmpStr);
   2814     }
   2815     else
   2816         stp_strs[2] = "";
   2817     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
   2818     str = (char*)malloc(len);
   2819     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%svertexBindingDescriptionCount = %u\n%spVertexBindingDescriptions = addr\n%svertexAttributeDescriptionCount = %u\n%spVertexAttributeDescriptions = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->vertexBindingDescriptionCount), prefix, prefix, (pStruct->vertexAttributeDescriptionCount), prefix);
   2820     for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
   2821         if (0 < strlen(stp_strs[stp_index])) {
   2822             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2823             free(stp_strs[stp_index]);
   2824         }
   2825     }
   2826     free(extra_indent);
   2827     return str;
   2828 }
   2829 char* vk_print_vkpipelineviewportstatecreateinfo(const VkPipelineViewportStateCreateInfo* pStruct, const char* prefix)
   2830 {
   2831     char* str;
   2832     size_t len;
   2833     char* tmpStr;
   2834     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2835     strcpy(extra_indent, "  ");
   2836     strncat(extra_indent, prefix, strlen(prefix));
   2837     char* stp_strs[3];
   2838     if (pStruct->pNext) {
   2839         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2840         len = 256+strlen(tmpStr);
   2841         stp_strs[0] = (char*)malloc(len);
   2842         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2843         free(tmpStr);
   2844     }
   2845     else
   2846         stp_strs[0] = "";
   2847     if (pStruct->pViewports) {
   2848         tmpStr = vk_print_vkviewport(pStruct->pViewports, extra_indent);
   2849         len = 256+strlen(tmpStr)+strlen(prefix);
   2850         stp_strs[1] = (char*)malloc(len);
   2851         snprintf(stp_strs[1], len, " %spViewports (addr)\n%s", prefix, tmpStr);
   2852     }
   2853     else
   2854         stp_strs[1] = "";
   2855     if (pStruct->pScissors) {
   2856         tmpStr = vk_print_vkrect2d(pStruct->pScissors, extra_indent);
   2857         len = 256+strlen(tmpStr)+strlen(prefix);
   2858         stp_strs[2] = (char*)malloc(len);
   2859         snprintf(stp_strs[2], len, " %spScissors (addr)\n%s", prefix, tmpStr);
   2860     }
   2861     else
   2862         stp_strs[2] = "";
   2863     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
   2864     str = (char*)malloc(len);
   2865     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sviewportCount = %u\n%spViewports = addr\n%sscissorCount = %u\n%spScissors = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->viewportCount), prefix, prefix, (pStruct->scissorCount), prefix);
   2866     for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
   2867         if (0 < strlen(stp_strs[stp_index])) {
   2868             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2869             free(stp_strs[stp_index]);
   2870         }
   2871     }
   2872     free(extra_indent);
   2873     return str;
   2874 }
   2875 char* vk_print_vkpresentinfokhr(const VkPresentInfoKHR* pStruct, const char* prefix)
   2876 {
   2877     char* str;
   2878     size_t len;
   2879     char* tmpStr;
   2880     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2881     strcpy(extra_indent, "  ");
   2882     strncat(extra_indent, prefix, strlen(prefix));
   2883     char* stp_strs[1];
   2884     if (pStruct->pNext) {
   2885         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2886         len = 256+strlen(tmpStr);
   2887         stp_strs[0] = (char*)malloc(len);
   2888         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2889         free(tmpStr);
   2890     }
   2891     else
   2892         stp_strs[0] = "";
   2893     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   2894     str = (char*)malloc(len);
   2895     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%swaitSemaphoreCount = %u\n%spWaitSemaphores = addr\n%sswapchainCount = %u\n%spSwapchains = addr\n%spImageIndices = addr\n%spResults = 0x%s\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->waitSemaphoreCount), prefix, prefix, (pStruct->swapchainCount), prefix, prefix, prefix, string_VkResult(*pStruct->pResults));
   2896     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   2897         if (0 < strlen(stp_strs[stp_index])) {
   2898             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2899             free(stp_strs[stp_index]);
   2900         }
   2901     }
   2902     free(extra_indent);
   2903     return str;
   2904 }
   2905 char* vk_print_vkpushconstantrange(const VkPushConstantRange* pStruct, const char* prefix)
   2906 {
   2907     char* str;
   2908     size_t len;
   2909     len = sizeof(char)*1024;
   2910     str = (char*)malloc(len);
   2911     snprintf(str, len, "%sstageFlags = %u\n%soffset = %u\n%ssize = %u\n", prefix, (pStruct->stageFlags), prefix, (pStruct->offset), prefix, (pStruct->size));
   2912     return str;
   2913 }
   2914 char* vk_print_vkquerypoolcreateinfo(const VkQueryPoolCreateInfo* pStruct, const char* prefix)
   2915 {
   2916     char* str;
   2917     size_t len;
   2918     char* tmpStr;
   2919     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2920     strcpy(extra_indent, "  ");
   2921     strncat(extra_indent, prefix, strlen(prefix));
   2922     char* stp_strs[1];
   2923     if (pStruct->pNext) {
   2924         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   2925         len = 256+strlen(tmpStr);
   2926         stp_strs[0] = (char*)malloc(len);
   2927         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   2928         free(tmpStr);
   2929     }
   2930     else
   2931         stp_strs[0] = "";
   2932     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   2933     str = (char*)malloc(len);
   2934     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%squeryType = %s\n%squeryCount = %u\n%spipelineStatistics = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, string_VkQueryType(pStruct->queryType), prefix, (pStruct->queryCount), prefix, (pStruct->pipelineStatistics));
   2935     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   2936         if (0 < strlen(stp_strs[stp_index])) {
   2937             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2938             free(stp_strs[stp_index]);
   2939         }
   2940     }
   2941     free(extra_indent);
   2942     return str;
   2943 }
   2944 char* vk_print_vkqueuefamilyproperties(const VkQueueFamilyProperties* pStruct, const char* prefix)
   2945 {
   2946     char* str;
   2947     size_t len;
   2948     char* tmpStr;
   2949     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2950     strcpy(extra_indent, "  ");
   2951     strncat(extra_indent, prefix, strlen(prefix));
   2952     char* stp_strs[1];
   2953     tmpStr = vk_print_vkextent3d(&pStruct->minImageTransferGranularity, extra_indent);
   2954     len = 256+strlen(tmpStr);
   2955     stp_strs[0] = (char*)malloc(len);
   2956     snprintf(stp_strs[0], len, " %sminImageTransferGranularity (addr)\n%s", prefix, tmpStr);
   2957     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   2958     str = (char*)malloc(len);
   2959     snprintf(str, len, "%squeueFlags = %u\n%squeueCount = %u\n%stimestampValidBits = %u\n%sminImageTransferGranularity = addr\n", prefix, (pStruct->queueFlags), prefix, (pStruct->queueCount), prefix, (pStruct->timestampValidBits), prefix);
   2960     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   2961         if (0 < strlen(stp_strs[stp_index])) {
   2962             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2963             free(stp_strs[stp_index]);
   2964         }
   2965     }
   2966     free(extra_indent);
   2967     return str;
   2968 }
   2969 char* vk_print_vkrect2d(const VkRect2D* pStruct, const char* prefix)
   2970 {
   2971     char* str;
   2972     size_t len;
   2973     char* tmpStr;
   2974     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   2975     strcpy(extra_indent, "  ");
   2976     strncat(extra_indent, prefix, strlen(prefix));
   2977     char* stp_strs[2];
   2978     tmpStr = vk_print_vkoffset2d(&pStruct->offset, extra_indent);
   2979     len = 256+strlen(tmpStr);
   2980     stp_strs[0] = (char*)malloc(len);
   2981     snprintf(stp_strs[0], len, " %soffset (addr)\n%s", prefix, tmpStr);
   2982     tmpStr = vk_print_vkextent2d(&pStruct->extent, extra_indent);
   2983     len = 256+strlen(tmpStr);
   2984     stp_strs[1] = (char*)malloc(len);
   2985     snprintf(stp_strs[1], len, " %sextent (addr)\n%s", prefix, tmpStr);
   2986     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
   2987     str = (char*)malloc(len);
   2988     snprintf(str, len, "%soffset = addr\n%sextent = addr\n", prefix, prefix);
   2989     for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
   2990         if (0 < strlen(stp_strs[stp_index])) {
   2991             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   2992             free(stp_strs[stp_index]);
   2993         }
   2994     }
   2995     free(extra_indent);
   2996     return str;
   2997 }
   2998 char* vk_print_vkrenderpassbegininfo(const VkRenderPassBeginInfo* pStruct, const char* prefix)
   2999 {
   3000     char* str;
   3001     size_t len;
   3002     char* tmpStr;
   3003     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3004     strcpy(extra_indent, "  ");
   3005     strncat(extra_indent, prefix, strlen(prefix));
   3006     char* stp_strs[3];
   3007     if (pStruct->pNext) {
   3008         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   3009         len = 256+strlen(tmpStr);
   3010         stp_strs[0] = (char*)malloc(len);
   3011         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   3012         free(tmpStr);
   3013     }
   3014     else
   3015         stp_strs[0] = "";
   3016     tmpStr = vk_print_vkrect2d(&pStruct->renderArea, extra_indent);
   3017     len = 256+strlen(tmpStr);
   3018     stp_strs[1] = (char*)malloc(len);
   3019     snprintf(stp_strs[1], len, " %srenderArea (addr)\n%s", prefix, tmpStr);
   3020     if (pStruct->pClearValues) {
   3021         tmpStr = vk_print_vkclearvalue(pStruct->pClearValues, extra_indent);
   3022         len = 256+strlen(tmpStr)+strlen(prefix);
   3023         stp_strs[2] = (char*)malloc(len);
   3024         snprintf(stp_strs[2], len, " %spClearValues (addr)\n%s", prefix, tmpStr);
   3025     }
   3026     else
   3027         stp_strs[2] = "";
   3028     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
   3029     str = (char*)malloc(len);
   3030     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%srenderPass = addr\n%sframebuffer = addr\n%srenderArea = addr\n%sclearValueCount = %u\n%spClearValues = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix, prefix, prefix, (pStruct->clearValueCount), prefix);
   3031     for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
   3032         if (0 < strlen(stp_strs[stp_index])) {
   3033             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3034             free(stp_strs[stp_index]);
   3035         }
   3036     }
   3037     free(extra_indent);
   3038     return str;
   3039 }
   3040 char* vk_print_vkrenderpasscreateinfo(const VkRenderPassCreateInfo* pStruct, const char* prefix)
   3041 {
   3042     char* str;
   3043     size_t len;
   3044     char* tmpStr;
   3045     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3046     strcpy(extra_indent, "  ");
   3047     strncat(extra_indent, prefix, strlen(prefix));
   3048     char* stp_strs[4];
   3049     if (pStruct->pNext) {
   3050         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   3051         len = 256+strlen(tmpStr);
   3052         stp_strs[0] = (char*)malloc(len);
   3053         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   3054         free(tmpStr);
   3055     }
   3056     else
   3057         stp_strs[0] = "";
   3058     if (pStruct->pAttachments) {
   3059         tmpStr = vk_print_vkattachmentdescription(pStruct->pAttachments, extra_indent);
   3060         len = 256+strlen(tmpStr)+strlen(prefix);
   3061         stp_strs[1] = (char*)malloc(len);
   3062         snprintf(stp_strs[1], len, " %spAttachments (addr)\n%s", prefix, tmpStr);
   3063     }
   3064     else
   3065         stp_strs[1] = "";
   3066     if (pStruct->pSubpasses) {
   3067         tmpStr = vk_print_vksubpassdescription(pStruct->pSubpasses, extra_indent);
   3068         len = 256+strlen(tmpStr)+strlen(prefix);
   3069         stp_strs[2] = (char*)malloc(len);
   3070         snprintf(stp_strs[2], len, " %spSubpasses (addr)\n%s", prefix, tmpStr);
   3071     }
   3072     else
   3073         stp_strs[2] = "";
   3074     if (pStruct->pDependencies) {
   3075         tmpStr = vk_print_vksubpassdependency(pStruct->pDependencies, extra_indent);
   3076         len = 256+strlen(tmpStr)+strlen(prefix);
   3077         stp_strs[3] = (char*)malloc(len);
   3078         snprintf(stp_strs[3], len, " %spDependencies (addr)\n%s", prefix, tmpStr);
   3079     }
   3080     else
   3081         stp_strs[3] = "";
   3082     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + strlen(stp_strs[3]) + sizeof(char)*1024;
   3083     str = (char*)malloc(len);
   3084     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sattachmentCount = %u\n%spAttachments = addr\n%ssubpassCount = %u\n%spSubpasses = addr\n%sdependencyCount = %u\n%spDependencies = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->attachmentCount), prefix, prefix, (pStruct->subpassCount), prefix, prefix, (pStruct->dependencyCount), prefix);
   3085     for (int32_t stp_index = 3; stp_index >= 0; stp_index--) {
   3086         if (0 < strlen(stp_strs[stp_index])) {
   3087             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3088             free(stp_strs[stp_index]);
   3089         }
   3090     }
   3091     free(extra_indent);
   3092     return str;
   3093 }
   3094 char* vk_print_vksamplercreateinfo(const VkSamplerCreateInfo* pStruct, const char* prefix)
   3095 {
   3096     char* str;
   3097     size_t len;
   3098     char* tmpStr;
   3099     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3100     strcpy(extra_indent, "  ");
   3101     strncat(extra_indent, prefix, strlen(prefix));
   3102     char* stp_strs[1];
   3103     if (pStruct->pNext) {
   3104         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   3105         len = 256+strlen(tmpStr);
   3106         stp_strs[0] = (char*)malloc(len);
   3107         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   3108         free(tmpStr);
   3109     }
   3110     else
   3111         stp_strs[0] = "";
   3112     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   3113     str = (char*)malloc(len);
   3114     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%smagFilter = %s\n%sminFilter = %s\n%smipmapMode = %s\n%saddressModeU = %s\n%saddressModeV = %s\n%saddressModeW = %s\n%smipLodBias = %f\n%sanisotropyEnable = %s\n%smaxAnisotropy = %f\n%scompareEnable = %s\n%scompareOp = %s\n%sminLod = %f\n%smaxLod = %f\n%sborderColor = %s\n%sunnormalizedCoordinates = %s\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, string_VkFilter(pStruct->magFilter), prefix, string_VkFilter(pStruct->minFilter), prefix, string_VkSamplerMipmapMode(pStruct->mipmapMode), prefix, string_VkSamplerAddressMode(pStruct->addressModeU), prefix, string_VkSamplerAddressMode(pStruct->addressModeV), prefix, string_VkSamplerAddressMode(pStruct->addressModeW), prefix, (pStruct->mipLodBias), prefix, (pStruct->anisotropyEnable) ? "TRUE" : "FALSE", prefix, (pStruct->maxAnisotropy), prefix, (pStruct->compareEnable) ? "TRUE" : "FALSE", prefix, string_VkCompareOp(pStruct->compareOp), prefix, (pStruct->minLod), prefix, (pStruct->maxLod), prefix, string_VkBorderColor(pStruct->borderColor), prefix, (pStruct->unnormalizedCoordinates) ? "TRUE" : "FALSE");
   3115     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   3116         if (0 < strlen(stp_strs[stp_index])) {
   3117             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3118             free(stp_strs[stp_index]);
   3119         }
   3120     }
   3121     free(extra_indent);
   3122     return str;
   3123 }
   3124 char* vk_print_vksemaphorecreateinfo(const VkSemaphoreCreateInfo* pStruct, const char* prefix)
   3125 {
   3126     char* str;
   3127     size_t len;
   3128     char* tmpStr;
   3129     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3130     strcpy(extra_indent, "  ");
   3131     strncat(extra_indent, prefix, strlen(prefix));
   3132     char* stp_strs[1];
   3133     if (pStruct->pNext) {
   3134         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   3135         len = 256+strlen(tmpStr);
   3136         stp_strs[0] = (char*)malloc(len);
   3137         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   3138         free(tmpStr);
   3139     }
   3140     else
   3141         stp_strs[0] = "";
   3142     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   3143     str = (char*)malloc(len);
   3144     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags));
   3145     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   3146         if (0 < strlen(stp_strs[stp_index])) {
   3147             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3148             free(stp_strs[stp_index]);
   3149         }
   3150     }
   3151     free(extra_indent);
   3152     return str;
   3153 }
   3154 char* vk_print_vkshadermodulecreateinfo(const VkShaderModuleCreateInfo* pStruct, const char* prefix)
   3155 {
   3156     char* str;
   3157     size_t len;
   3158     char* tmpStr;
   3159     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3160     strcpy(extra_indent, "  ");
   3161     strncat(extra_indent, prefix, strlen(prefix));
   3162     char* stp_strs[1];
   3163     if (pStruct->pNext) {
   3164         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   3165         len = 256+strlen(tmpStr);
   3166         stp_strs[0] = (char*)malloc(len);
   3167         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   3168         free(tmpStr);
   3169     }
   3170     else
   3171         stp_strs[0] = "";
   3172     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   3173     str = (char*)malloc(len);
   3174     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%scodeSize = " PRINTF_SIZE_T_SPECIFIER "\n%spCode = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->codeSize), prefix, (pStruct->pCode));
   3175     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   3176         if (0 < strlen(stp_strs[stp_index])) {
   3177             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3178             free(stp_strs[stp_index]);
   3179         }
   3180     }
   3181     free(extra_indent);
   3182     return str;
   3183 }
   3184 char* vk_print_vksparsebuffermemorybindinfo(const VkSparseBufferMemoryBindInfo* pStruct, const char* prefix)
   3185 {
   3186     char* str;
   3187     size_t len;
   3188     char* tmpStr;
   3189     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3190     strcpy(extra_indent, "  ");
   3191     strncat(extra_indent, prefix, strlen(prefix));
   3192     char* stp_strs[1];
   3193     if (pStruct->pBinds) {
   3194         tmpStr = vk_print_vksparsememorybind(pStruct->pBinds, extra_indent);
   3195         len = 256+strlen(tmpStr)+strlen(prefix);
   3196         stp_strs[0] = (char*)malloc(len);
   3197         snprintf(stp_strs[0], len, " %spBinds (addr)\n%s", prefix, tmpStr);
   3198     }
   3199     else
   3200         stp_strs[0] = "";
   3201     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   3202     str = (char*)malloc(len);
   3203     snprintf(str, len, "%sbuffer = addr\n%sbindCount = %u\n%spBinds = addr\n", prefix, prefix, (pStruct->bindCount), prefix);
   3204     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   3205         if (0 < strlen(stp_strs[stp_index])) {
   3206             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3207             free(stp_strs[stp_index]);
   3208         }
   3209     }
   3210     free(extra_indent);
   3211     return str;
   3212 }
   3213 char* vk_print_vksparseimageformatproperties(const VkSparseImageFormatProperties* pStruct, const char* prefix)
   3214 {
   3215     char* str;
   3216     size_t len;
   3217     char* tmpStr;
   3218     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3219     strcpy(extra_indent, "  ");
   3220     strncat(extra_indent, prefix, strlen(prefix));
   3221     char* stp_strs[1];
   3222     tmpStr = vk_print_vkextent3d(&pStruct->imageGranularity, extra_indent);
   3223     len = 256+strlen(tmpStr);
   3224     stp_strs[0] = (char*)malloc(len);
   3225     snprintf(stp_strs[0], len, " %simageGranularity (addr)\n%s", prefix, tmpStr);
   3226     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   3227     str = (char*)malloc(len);
   3228     snprintf(str, len, "%saspectMask = %u\n%simageGranularity = addr\n%sflags = %u\n", prefix, (pStruct->aspectMask), prefix, prefix, (pStruct->flags));
   3229     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   3230         if (0 < strlen(stp_strs[stp_index])) {
   3231             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3232             free(stp_strs[stp_index]);
   3233         }
   3234     }
   3235     free(extra_indent);
   3236     return str;
   3237 }
   3238 char* vk_print_vksparseimagememorybind(const VkSparseImageMemoryBind* pStruct, const char* prefix)
   3239 {
   3240     char* str;
   3241     size_t len;
   3242     char* tmpStr;
   3243     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3244     strcpy(extra_indent, "  ");
   3245     strncat(extra_indent, prefix, strlen(prefix));
   3246     char* stp_strs[3];
   3247     tmpStr = vk_print_vkimagesubresource(&pStruct->subresource, extra_indent);
   3248     len = 256+strlen(tmpStr);
   3249     stp_strs[0] = (char*)malloc(len);
   3250     snprintf(stp_strs[0], len, " %ssubresource (addr)\n%s", prefix, tmpStr);
   3251     tmpStr = vk_print_vkoffset3d(&pStruct->offset, extra_indent);
   3252     len = 256+strlen(tmpStr);
   3253     stp_strs[1] = (char*)malloc(len);
   3254     snprintf(stp_strs[1], len, " %soffset (addr)\n%s", prefix, tmpStr);
   3255     tmpStr = vk_print_vkextent3d(&pStruct->extent, extra_indent);
   3256     len = 256+strlen(tmpStr);
   3257     stp_strs[2] = (char*)malloc(len);
   3258     snprintf(stp_strs[2], len, " %sextent (addr)\n%s", prefix, tmpStr);
   3259     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
   3260     str = (char*)malloc(len);
   3261     snprintf(str, len, "%ssubresource = addr\n%soffset = addr\n%sextent = addr\n%smemory = addr\n%smemoryOffset = " PRINTF_SIZE_T_SPECIFIER "\n%sflags = %u\n", prefix, prefix, prefix, prefix, prefix, (pStruct->memoryOffset), prefix, (pStruct->flags));
   3262     for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
   3263         if (0 < strlen(stp_strs[stp_index])) {
   3264             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3265             free(stp_strs[stp_index]);
   3266         }
   3267     }
   3268     free(extra_indent);
   3269     return str;
   3270 }
   3271 char* vk_print_vksparseimagememorybindinfo(const VkSparseImageMemoryBindInfo* pStruct, const char* prefix)
   3272 {
   3273     char* str;
   3274     size_t len;
   3275     char* tmpStr;
   3276     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3277     strcpy(extra_indent, "  ");
   3278     strncat(extra_indent, prefix, strlen(prefix));
   3279     char* stp_strs[1];
   3280     if (pStruct->pBinds) {
   3281         tmpStr = vk_print_vksparseimagememorybind(pStruct->pBinds, extra_indent);
   3282         len = 256+strlen(tmpStr)+strlen(prefix);
   3283         stp_strs[0] = (char*)malloc(len);
   3284         snprintf(stp_strs[0], len, " %spBinds (addr)\n%s", prefix, tmpStr);
   3285     }
   3286     else
   3287         stp_strs[0] = "";
   3288     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   3289     str = (char*)malloc(len);
   3290     snprintf(str, len, "%simage = addr\n%sbindCount = %u\n%spBinds = addr\n", prefix, prefix, (pStruct->bindCount), prefix);
   3291     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   3292         if (0 < strlen(stp_strs[stp_index])) {
   3293             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3294             free(stp_strs[stp_index]);
   3295         }
   3296     }
   3297     free(extra_indent);
   3298     return str;
   3299 }
   3300 char* vk_print_vksparseimagememoryrequirements(const VkSparseImageMemoryRequirements* pStruct, const char* prefix)
   3301 {
   3302     char* str;
   3303     size_t len;
   3304     char* tmpStr;
   3305     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3306     strcpy(extra_indent, "  ");
   3307     strncat(extra_indent, prefix, strlen(prefix));
   3308     char* stp_strs[1];
   3309     tmpStr = vk_print_vksparseimageformatproperties(&pStruct->formatProperties, extra_indent);
   3310     len = 256+strlen(tmpStr);
   3311     stp_strs[0] = (char*)malloc(len);
   3312     snprintf(stp_strs[0], len, " %sformatProperties (addr)\n%s", prefix, tmpStr);
   3313     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   3314     str = (char*)malloc(len);
   3315     snprintf(str, len, "%sformatProperties = addr\n%simageMipTailFirstLod = %u\n%simageMipTailSize = " PRINTF_SIZE_T_SPECIFIER "\n%simageMipTailOffset = " PRINTF_SIZE_T_SPECIFIER "\n%simageMipTailStride = " PRINTF_SIZE_T_SPECIFIER "\n", prefix, prefix, (pStruct->imageMipTailFirstLod), prefix, (pStruct->imageMipTailSize), prefix, (pStruct->imageMipTailOffset), prefix, (pStruct->imageMipTailStride));
   3316     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   3317         if (0 < strlen(stp_strs[stp_index])) {
   3318             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3319             free(stp_strs[stp_index]);
   3320         }
   3321     }
   3322     free(extra_indent);
   3323     return str;
   3324 }
   3325 char* vk_print_vksparseimageopaquememorybindinfo(const VkSparseImageOpaqueMemoryBindInfo* pStruct, const char* prefix)
   3326 {
   3327     char* str;
   3328     size_t len;
   3329     char* tmpStr;
   3330     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3331     strcpy(extra_indent, "  ");
   3332     strncat(extra_indent, prefix, strlen(prefix));
   3333     char* stp_strs[1];
   3334     if (pStruct->pBinds) {
   3335         tmpStr = vk_print_vksparsememorybind(pStruct->pBinds, extra_indent);
   3336         len = 256+strlen(tmpStr)+strlen(prefix);
   3337         stp_strs[0] = (char*)malloc(len);
   3338         snprintf(stp_strs[0], len, " %spBinds (addr)\n%s", prefix, tmpStr);
   3339     }
   3340     else
   3341         stp_strs[0] = "";
   3342     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   3343     str = (char*)malloc(len);
   3344     snprintf(str, len, "%simage = addr\n%sbindCount = %u\n%spBinds = addr\n", prefix, prefix, (pStruct->bindCount), prefix);
   3345     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   3346         if (0 < strlen(stp_strs[stp_index])) {
   3347             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3348             free(stp_strs[stp_index]);
   3349         }
   3350     }
   3351     free(extra_indent);
   3352     return str;
   3353 }
   3354 char* vk_print_vksparsememorybind(const VkSparseMemoryBind* pStruct, const char* prefix)
   3355 {
   3356     char* str;
   3357     size_t len;
   3358     len = sizeof(char)*1024;
   3359     str = (char*)malloc(len);
   3360     snprintf(str, len, "%sresourceOffset = " PRINTF_SIZE_T_SPECIFIER "\n%ssize = " PRINTF_SIZE_T_SPECIFIER "\n%smemory = addr\n%smemoryOffset = " PRINTF_SIZE_T_SPECIFIER "\n%sflags = %u\n", prefix, (pStruct->resourceOffset), prefix, (pStruct->size), prefix, prefix, (pStruct->memoryOffset), prefix, (pStruct->flags));
   3361     return str;
   3362 }
   3363 char* vk_print_vkspecializationinfo(const VkSpecializationInfo* pStruct, const char* prefix)
   3364 {
   3365     char* str;
   3366     size_t len;
   3367     char* tmpStr;
   3368     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3369     strcpy(extra_indent, "  ");
   3370     strncat(extra_indent, prefix, strlen(prefix));
   3371     char* stp_strs[1];
   3372     if (pStruct->pMapEntries) {
   3373         tmpStr = vk_print_vkspecializationmapentry(pStruct->pMapEntries, extra_indent);
   3374         len = 256+strlen(tmpStr)+strlen(prefix);
   3375         stp_strs[0] = (char*)malloc(len);
   3376         snprintf(stp_strs[0], len, " %spMapEntries (addr)\n%s", prefix, tmpStr);
   3377     }
   3378     else
   3379         stp_strs[0] = "";
   3380     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   3381     str = (char*)malloc(len);
   3382     snprintf(str, len, "%smapEntryCount = %u\n%spMapEntries = addr\n%sdataSize = " PRINTF_SIZE_T_SPECIFIER "\n%spData = addr\n", prefix, (pStruct->mapEntryCount), prefix, prefix, (pStruct->dataSize), prefix);
   3383     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   3384         if (0 < strlen(stp_strs[stp_index])) {
   3385             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3386             free(stp_strs[stp_index]);
   3387         }
   3388     }
   3389     free(extra_indent);
   3390     return str;
   3391 }
   3392 char* vk_print_vkspecializationmapentry(const VkSpecializationMapEntry* pStruct, const char* prefix)
   3393 {
   3394     char* str;
   3395     size_t len;
   3396     len = sizeof(char)*1024;
   3397     str = (char*)malloc(len);
   3398     snprintf(str, len, "%sconstantID = %u\n%soffset = %u\n%ssize = " PRINTF_SIZE_T_SPECIFIER "\n", prefix, (pStruct->constantID), prefix, (pStruct->offset), prefix, (pStruct->size));
   3399     return str;
   3400 }
   3401 char* vk_print_vkstencilopstate(const VkStencilOpState* pStruct, const char* prefix)
   3402 {
   3403     char* str;
   3404     size_t len;
   3405     len = sizeof(char)*1024;
   3406     str = (char*)malloc(len);
   3407     snprintf(str, len, "%sfailOp = %s\n%spassOp = %s\n%sdepthFailOp = %s\n%scompareOp = %s\n%scompareMask = %u\n%swriteMask = %u\n%sreference = %u\n", prefix, string_VkStencilOp(pStruct->failOp), prefix, string_VkStencilOp(pStruct->passOp), prefix, string_VkStencilOp(pStruct->depthFailOp), prefix, string_VkCompareOp(pStruct->compareOp), prefix, (pStruct->compareMask), prefix, (pStruct->writeMask), prefix, (pStruct->reference));
   3408     return str;
   3409 }
   3410 char* vk_print_vksubmitinfo(const VkSubmitInfo* pStruct, const char* prefix)
   3411 {
   3412     char* str;
   3413     size_t len;
   3414     char* tmpStr;
   3415     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3416     strcpy(extra_indent, "  ");
   3417     strncat(extra_indent, prefix, strlen(prefix));
   3418     char* stp_strs[1];
   3419     if (pStruct->pNext) {
   3420         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   3421         len = 256+strlen(tmpStr);
   3422         stp_strs[0] = (char*)malloc(len);
   3423         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   3424         free(tmpStr);
   3425     }
   3426     else
   3427         stp_strs[0] = "";
   3428     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   3429     str = (char*)malloc(len);
   3430     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%swaitSemaphoreCount = %u\n%spWaitSemaphores = addr\n%spWaitDstStageMask = %u\n%scommandBufferCount = %u\n%spCommandBuffers = addr\n%ssignalSemaphoreCount = %u\n%spSignalSemaphores = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->waitSemaphoreCount), prefix, prefix, (pStruct->pWaitDstStageMask), prefix, (pStruct->commandBufferCount), prefix, prefix, (pStruct->signalSemaphoreCount), prefix);
   3431     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   3432         if (0 < strlen(stp_strs[stp_index])) {
   3433             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3434             free(stp_strs[stp_index]);
   3435         }
   3436     }
   3437     free(extra_indent);
   3438     return str;
   3439 }
   3440 char* vk_print_vksubpassdependency(const VkSubpassDependency* pStruct, const char* prefix)
   3441 {
   3442     char* str;
   3443     size_t len;
   3444     len = sizeof(char)*1024;
   3445     str = (char*)malloc(len);
   3446     snprintf(str, len, "%ssrcSubpass = %u\n%sdstSubpass = %u\n%ssrcStageMask = %u\n%sdstStageMask = %u\n%ssrcAccessMask = %u\n%sdstAccessMask = %u\n%sdependencyFlags = %u\n", prefix, (pStruct->srcSubpass), prefix, (pStruct->dstSubpass), prefix, (pStruct->srcStageMask), prefix, (pStruct->dstStageMask), prefix, (pStruct->srcAccessMask), prefix, (pStruct->dstAccessMask), prefix, (pStruct->dependencyFlags));
   3447     return str;
   3448 }
   3449 char* vk_print_vksubpassdescription(const VkSubpassDescription* pStruct, const char* prefix)
   3450 {
   3451     char* str;
   3452     size_t len;
   3453     char* tmpStr;
   3454     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3455     strcpy(extra_indent, "  ");
   3456     strncat(extra_indent, prefix, strlen(prefix));
   3457     char* stp_strs[4];
   3458     if (pStruct->pInputAttachments) {
   3459         tmpStr = vk_print_vkattachmentreference(pStruct->pInputAttachments, extra_indent);
   3460         len = 256+strlen(tmpStr)+strlen(prefix);
   3461         stp_strs[0] = (char*)malloc(len);
   3462         snprintf(stp_strs[0], len, " %spInputAttachments (addr)\n%s", prefix, tmpStr);
   3463     }
   3464     else
   3465         stp_strs[0] = "";
   3466     if (pStruct->pColorAttachments) {
   3467         tmpStr = vk_print_vkattachmentreference(pStruct->pColorAttachments, extra_indent);
   3468         len = 256+strlen(tmpStr)+strlen(prefix);
   3469         stp_strs[1] = (char*)malloc(len);
   3470         snprintf(stp_strs[1], len, " %spColorAttachments (addr)\n%s", prefix, tmpStr);
   3471     }
   3472     else
   3473         stp_strs[1] = "";
   3474     if (pStruct->pResolveAttachments) {
   3475         tmpStr = vk_print_vkattachmentreference(pStruct->pResolveAttachments, extra_indent);
   3476         len = 256+strlen(tmpStr)+strlen(prefix);
   3477         stp_strs[2] = (char*)malloc(len);
   3478         snprintf(stp_strs[2], len, " %spResolveAttachments (addr)\n%s", prefix, tmpStr);
   3479     }
   3480     else
   3481         stp_strs[2] = "";
   3482     if (pStruct->pDepthStencilAttachment) {
   3483         tmpStr = vk_print_vkattachmentreference(pStruct->pDepthStencilAttachment, extra_indent);
   3484         len = 256+strlen(tmpStr)+strlen(prefix);
   3485         stp_strs[3] = (char*)malloc(len);
   3486         snprintf(stp_strs[3], len, " %spDepthStencilAttachment (addr)\n%s", prefix, tmpStr);
   3487     }
   3488     else
   3489         stp_strs[3] = "";
   3490     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + strlen(stp_strs[3]) + sizeof(char)*1024;
   3491     str = (char*)malloc(len);
   3492     snprintf(str, len, "%sflags = %u\n%spipelineBindPoint = %s\n%sinputAttachmentCount = %u\n%spInputAttachments = addr\n%scolorAttachmentCount = %u\n%spColorAttachments = addr\n%spResolveAttachments = addr\n%spDepthStencilAttachment = addr\n%spreserveAttachmentCount = %u\n%spPreserveAttachments = addr\n", prefix, (pStruct->flags), prefix, string_VkPipelineBindPoint(pStruct->pipelineBindPoint), prefix, (pStruct->inputAttachmentCount), prefix, prefix, (pStruct->colorAttachmentCount), prefix, prefix, prefix, prefix, (pStruct->preserveAttachmentCount), prefix);
   3493     for (int32_t stp_index = 3; stp_index >= 0; stp_index--) {
   3494         if (0 < strlen(stp_strs[stp_index])) {
   3495             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3496             free(stp_strs[stp_index]);
   3497         }
   3498     }
   3499     free(extra_indent);
   3500     return str;
   3501 }
   3502 char* vk_print_vksubresourcelayout(const VkSubresourceLayout* pStruct, const char* prefix)
   3503 {
   3504     char* str;
   3505     size_t len;
   3506     len = sizeof(char)*1024;
   3507     str = (char*)malloc(len);
   3508     snprintf(str, len, "%soffset = " PRINTF_SIZE_T_SPECIFIER "\n%ssize = " PRINTF_SIZE_T_SPECIFIER "\n%srowPitch = " PRINTF_SIZE_T_SPECIFIER "\n%sarrayPitch = " PRINTF_SIZE_T_SPECIFIER "\n%sdepthPitch = " PRINTF_SIZE_T_SPECIFIER "\n", prefix, (pStruct->offset), prefix, (pStruct->size), prefix, (pStruct->rowPitch), prefix, (pStruct->arrayPitch), prefix, (pStruct->depthPitch));
   3509     return str;
   3510 }
   3511 char* vk_print_vksurfacecapabilitieskhr(const VkSurfaceCapabilitiesKHR* pStruct, const char* prefix)
   3512 {
   3513     char* str;
   3514     size_t len;
   3515     char* tmpStr;
   3516     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3517     strcpy(extra_indent, "  ");
   3518     strncat(extra_indent, prefix, strlen(prefix));
   3519     char* stp_strs[3];
   3520     tmpStr = vk_print_vkextent2d(&pStruct->currentExtent, extra_indent);
   3521     len = 256+strlen(tmpStr);
   3522     stp_strs[0] = (char*)malloc(len);
   3523     snprintf(stp_strs[0], len, " %scurrentExtent (addr)\n%s", prefix, tmpStr);
   3524     tmpStr = vk_print_vkextent2d(&pStruct->minImageExtent, extra_indent);
   3525     len = 256+strlen(tmpStr);
   3526     stp_strs[1] = (char*)malloc(len);
   3527     snprintf(stp_strs[1], len, " %sminImageExtent (addr)\n%s", prefix, tmpStr);
   3528     tmpStr = vk_print_vkextent2d(&pStruct->maxImageExtent, extra_indent);
   3529     len = 256+strlen(tmpStr);
   3530     stp_strs[2] = (char*)malloc(len);
   3531     snprintf(stp_strs[2], len, " %smaxImageExtent (addr)\n%s", prefix, tmpStr);
   3532     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
   3533     str = (char*)malloc(len);
   3534     snprintf(str, len, "%sminImageCount = %u\n%smaxImageCount = %u\n%scurrentExtent = addr\n%sminImageExtent = addr\n%smaxImageExtent = addr\n%smaxImageArrayLayers = %u\n%ssupportedTransforms = %u\n%scurrentTransform = %s\n%ssupportedCompositeAlpha = %u\n%ssupportedUsageFlags = %u\n", prefix, (pStruct->minImageCount), prefix, (pStruct->maxImageCount), prefix, prefix, prefix, prefix, (pStruct->maxImageArrayLayers), prefix, (pStruct->supportedTransforms), prefix, string_VkSurfaceTransformFlagBitsKHR(pStruct->currentTransform), prefix, (pStruct->supportedCompositeAlpha), prefix, (pStruct->supportedUsageFlags));
   3535     for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
   3536         if (0 < strlen(stp_strs[stp_index])) {
   3537             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3538             free(stp_strs[stp_index]);
   3539         }
   3540     }
   3541     free(extra_indent);
   3542     return str;
   3543 }
   3544 char* vk_print_vksurfaceformatkhr(const VkSurfaceFormatKHR* pStruct, const char* prefix)
   3545 {
   3546     char* str;
   3547     size_t len;
   3548     len = sizeof(char)*1024;
   3549     str = (char*)malloc(len);
   3550     snprintf(str, len, "%sformat = %s\n%scolorSpace = %s\n", prefix, string_VkFormat(pStruct->format), prefix, string_VkColorSpaceKHR(pStruct->colorSpace));
   3551     return str;
   3552 }
   3553 char* vk_print_vkswapchaincreateinfokhr(const VkSwapchainCreateInfoKHR* pStruct, const char* prefix)
   3554 {
   3555     char* str;
   3556     size_t len;
   3557     char* tmpStr;
   3558     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3559     strcpy(extra_indent, "  ");
   3560     strncat(extra_indent, prefix, strlen(prefix));
   3561     char* stp_strs[2];
   3562     if (pStruct->pNext) {
   3563         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   3564         len = 256+strlen(tmpStr);
   3565         stp_strs[0] = (char*)malloc(len);
   3566         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   3567         free(tmpStr);
   3568     }
   3569     else
   3570         stp_strs[0] = "";
   3571     tmpStr = vk_print_vkextent2d(&pStruct->imageExtent, extra_indent);
   3572     len = 256+strlen(tmpStr);
   3573     stp_strs[1] = (char*)malloc(len);
   3574     snprintf(stp_strs[1], len, " %simageExtent (addr)\n%s", prefix, tmpStr);
   3575     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
   3576     str = (char*)malloc(len);
   3577     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%ssurface = addr\n%sminImageCount = %u\n%simageFormat = %s\n%simageColorSpace = %s\n%simageExtent = addr\n%simageArrayLayers = %u\n%simageUsage = %u\n%simageSharingMode = %s\n%squeueFamilyIndexCount = %u\n%spQueueFamilyIndices = addr\n%spreTransform = %s\n%scompositeAlpha = %s\n%spresentMode = %s\n%sclipped = %s\n%soldSwapchain = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix, (pStruct->minImageCount), prefix, string_VkFormat(pStruct->imageFormat), prefix, string_VkColorSpaceKHR(pStruct->imageColorSpace), prefix, prefix, (pStruct->imageArrayLayers), prefix, (pStruct->imageUsage), prefix, string_VkSharingMode(pStruct->imageSharingMode), prefix, (pStruct->queueFamilyIndexCount), prefix, prefix, string_VkSurfaceTransformFlagBitsKHR(pStruct->preTransform), prefix, string_VkCompositeAlphaFlagBitsKHR(pStruct->compositeAlpha), prefix, string_VkPresentModeKHR(pStruct->presentMode), prefix, (pStruct->clipped) ? "TRUE" : "FALSE", prefix);
   3578     for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
   3579         if (0 < strlen(stp_strs[stp_index])) {
   3580             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3581             free(stp_strs[stp_index]);
   3582         }
   3583     }
   3584     free(extra_indent);
   3585     return str;
   3586 }
   3587 char* vk_print_vkvalidationflagsext(const VkValidationFlagsEXT* pStruct, const char* prefix)
   3588 {
   3589     char* str;
   3590     size_t len;
   3591     char* tmpStr;
   3592     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3593     strcpy(extra_indent, "  ");
   3594     strncat(extra_indent, prefix, strlen(prefix));
   3595     char* stp_strs[1];
   3596     if (pStruct->pNext) {
   3597         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   3598         len = 256+strlen(tmpStr);
   3599         stp_strs[0] = (char*)malloc(len);
   3600         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   3601         free(tmpStr);
   3602     }
   3603     else
   3604         stp_strs[0] = "";
   3605     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   3606     str = (char*)malloc(len);
   3607     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sdisabledValidationCheckCount = %u\n%spDisabledValidationChecks = 0x%s\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->disabledValidationCheckCount), prefix, string_VkValidationCheckEXT(*pStruct->pDisabledValidationChecks));
   3608     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   3609         if (0 < strlen(stp_strs[stp_index])) {
   3610             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3611             free(stp_strs[stp_index]);
   3612         }
   3613     }
   3614     free(extra_indent);
   3615     return str;
   3616 }
   3617 char* vk_print_vkvertexinputattributedescription(const VkVertexInputAttributeDescription* pStruct, const char* prefix)
   3618 {
   3619     char* str;
   3620     size_t len;
   3621     len = sizeof(char)*1024;
   3622     str = (char*)malloc(len);
   3623     snprintf(str, len, "%slocation = %u\n%sbinding = %u\n%sformat = %s\n%soffset = %u\n", prefix, (pStruct->location), prefix, (pStruct->binding), prefix, string_VkFormat(pStruct->format), prefix, (pStruct->offset));
   3624     return str;
   3625 }
   3626 char* vk_print_vkvertexinputbindingdescription(const VkVertexInputBindingDescription* pStruct, const char* prefix)
   3627 {
   3628     char* str;
   3629     size_t len;
   3630     len = sizeof(char)*1024;
   3631     str = (char*)malloc(len);
   3632     snprintf(str, len, "%sbinding = %u\n%sstride = %u\n%sinputRate = %s\n", prefix, (pStruct->binding), prefix, (pStruct->stride), prefix, string_VkVertexInputRate(pStruct->inputRate));
   3633     return str;
   3634 }
   3635 char* vk_print_vkviewport(const VkViewport* pStruct, const char* prefix)
   3636 {
   3637     char* str;
   3638     size_t len;
   3639     len = sizeof(char)*1024;
   3640     str = (char*)malloc(len);
   3641     snprintf(str, len, "%sx = %f\n%sy = %f\n%swidth = %f\n%sheight = %f\n%sminDepth = %f\n%smaxDepth = %f\n", prefix, (pStruct->x), prefix, (pStruct->y), prefix, (pStruct->width), prefix, (pStruct->height), prefix, (pStruct->minDepth), prefix, (pStruct->maxDepth));
   3642     return str;
   3643 }
   3644 char* vk_print_vkwaylandsurfacecreateinfokhr(const VkWaylandSurfaceCreateInfoKHR* pStruct, const char* prefix)
   3645 {
   3646     char* str;
   3647     size_t len;
   3648     char* tmpStr;
   3649     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3650     strcpy(extra_indent, "  ");
   3651     strncat(extra_indent, prefix, strlen(prefix));
   3652     char* stp_strs[1];
   3653     if (pStruct->pNext) {
   3654         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   3655         len = 256+strlen(tmpStr);
   3656         stp_strs[0] = (char*)malloc(len);
   3657         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   3658         free(tmpStr);
   3659     }
   3660     else
   3661         stp_strs[0] = "";
   3662     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   3663     str = (char*)malloc(len);
   3664     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sdisplay = addr\n%ssurface = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix);
   3665     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   3666         if (0 < strlen(stp_strs[stp_index])) {
   3667             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3668             free(stp_strs[stp_index]);
   3669         }
   3670     }
   3671     free(extra_indent);
   3672     return str;
   3673 }
   3674 char* vk_print_vkwin32keyedmutexacquirereleaseinfonv(const VkWin32KeyedMutexAcquireReleaseInfoNV* pStruct, const char* prefix)
   3675 {
   3676     char* str;
   3677     size_t len;
   3678     char* tmpStr;
   3679     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3680     strcpy(extra_indent, "  ");
   3681     strncat(extra_indent, prefix, strlen(prefix));
   3682     char* stp_strs[1];
   3683     if (pStruct->pNext) {
   3684         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   3685         len = 256+strlen(tmpStr);
   3686         stp_strs[0] = (char*)malloc(len);
   3687         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   3688         free(tmpStr);
   3689     }
   3690     else
   3691         stp_strs[0] = "";
   3692     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   3693     str = (char*)malloc(len);
   3694     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sacquireCount = %u\n%spAcquireSyncs = addr\n%spAcquireKeys = addr\n%spAcquireTimeoutMilliseconds = addr\n%sreleaseCount = %u\n%spReleaseSyncs = addr\n%spReleaseKeys = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->acquireCount), prefix, prefix, prefix, prefix, (pStruct->releaseCount), prefix, prefix);
   3695     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   3696         if (0 < strlen(stp_strs[stp_index])) {
   3697             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3698             free(stp_strs[stp_index]);
   3699         }
   3700     }
   3701     free(extra_indent);
   3702     return str;
   3703 }
   3704 char* vk_print_vkwin32surfacecreateinfokhr(const VkWin32SurfaceCreateInfoKHR* pStruct, const char* prefix)
   3705 {
   3706     char* str;
   3707     size_t len;
   3708     char* tmpStr;
   3709     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3710     strcpy(extra_indent, "  ");
   3711     strncat(extra_indent, prefix, strlen(prefix));
   3712     char* stp_strs[1];
   3713     if (pStruct->pNext) {
   3714         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   3715         len = 256+strlen(tmpStr);
   3716         stp_strs[0] = (char*)malloc(len);
   3717         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   3718         free(tmpStr);
   3719     }
   3720     else
   3721         stp_strs[0] = "";
   3722     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   3723     str = (char*)malloc(len);
   3724     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%shinstance = addr\n%shwnd = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix);
   3725     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   3726         if (0 < strlen(stp_strs[stp_index])) {
   3727             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3728             free(stp_strs[stp_index]);
   3729         }
   3730     }
   3731     free(extra_indent);
   3732     return str;
   3733 }
   3734 char* vk_print_vkwritedescriptorset(const VkWriteDescriptorSet* pStruct, const char* prefix)
   3735 {
   3736     char* str;
   3737     size_t len;
   3738     char* tmpStr;
   3739     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3740     strcpy(extra_indent, "  ");
   3741     strncat(extra_indent, prefix, strlen(prefix));
   3742     char* stp_strs[3];
   3743     if (pStruct->pNext) {
   3744         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   3745         len = 256+strlen(tmpStr);
   3746         stp_strs[0] = (char*)malloc(len);
   3747         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   3748         free(tmpStr);
   3749     }
   3750     else
   3751         stp_strs[0] = "";
   3752     if (pStruct->pImageInfo) {
   3753         tmpStr = vk_print_vkdescriptorimageinfo(pStruct->pImageInfo, extra_indent);
   3754         len = 256+strlen(tmpStr)+strlen(prefix);
   3755         stp_strs[1] = (char*)malloc(len);
   3756         snprintf(stp_strs[1], len, " %spImageInfo (addr)\n%s", prefix, tmpStr);
   3757     }
   3758     else
   3759         stp_strs[1] = "";
   3760     if (pStruct->pBufferInfo) {
   3761         tmpStr = vk_print_vkdescriptorbufferinfo(pStruct->pBufferInfo, extra_indent);
   3762         len = 256+strlen(tmpStr)+strlen(prefix);
   3763         stp_strs[2] = (char*)malloc(len);
   3764         snprintf(stp_strs[2], len, " %spBufferInfo (addr)\n%s", prefix, tmpStr);
   3765     }
   3766     else
   3767         stp_strs[2] = "";
   3768     len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
   3769     str = (char*)malloc(len);
   3770     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sdstSet = addr\n%sdstBinding = %u\n%sdstArrayElement = %u\n%sdescriptorCount = %u\n%sdescriptorType = %s\n%spImageInfo = addr\n%spBufferInfo = addr\n%spTexelBufferView = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix, (pStruct->dstBinding), prefix, (pStruct->dstArrayElement), prefix, (pStruct->descriptorCount), prefix, string_VkDescriptorType(pStruct->descriptorType), prefix, prefix, prefix);
   3771     for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
   3772         if (0 < strlen(stp_strs[stp_index])) {
   3773             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3774             free(stp_strs[stp_index]);
   3775         }
   3776     }
   3777     free(extra_indent);
   3778     return str;
   3779 }
   3780 char* vk_print_vkxcbsurfacecreateinfokhr(const VkXcbSurfaceCreateInfoKHR* pStruct, const char* prefix)
   3781 {
   3782     char* str;
   3783     size_t len;
   3784     char* tmpStr;
   3785     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3786     strcpy(extra_indent, "  ");
   3787     strncat(extra_indent, prefix, strlen(prefix));
   3788     char* stp_strs[1];
   3789     if (pStruct->pNext) {
   3790         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   3791         len = 256+strlen(tmpStr);
   3792         stp_strs[0] = (char*)malloc(len);
   3793         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   3794         free(tmpStr);
   3795     }
   3796     else
   3797         stp_strs[0] = "";
   3798     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   3799     str = (char*)malloc(len);
   3800     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sconnection = addr\n%swindow = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix);
   3801     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   3802         if (0 < strlen(stp_strs[stp_index])) {
   3803             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3804             free(stp_strs[stp_index]);
   3805         }
   3806     }
   3807     free(extra_indent);
   3808     return str;
   3809 }
   3810 char* vk_print_vkxlibsurfacecreateinfokhr(const VkXlibSurfaceCreateInfoKHR* pStruct, const char* prefix)
   3811 {
   3812     char* str;
   3813     size_t len;
   3814     char* tmpStr;
   3815     char* extra_indent = (char*)malloc(strlen(prefix) + 3);
   3816     strcpy(extra_indent, "  ");
   3817     strncat(extra_indent, prefix, strlen(prefix));
   3818     char* stp_strs[1];
   3819     if (pStruct->pNext) {
   3820         tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
   3821         len = 256+strlen(tmpStr);
   3822         stp_strs[0] = (char*)malloc(len);
   3823         snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
   3824         free(tmpStr);
   3825     }
   3826     else
   3827         stp_strs[0] = "";
   3828     len = strlen(stp_strs[0]) + sizeof(char)*1024;
   3829     str = (char*)malloc(len);
   3830     snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sdpy = addr\n%swindow = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix);
   3831     for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
   3832         if (0 < strlen(stp_strs[stp_index])) {
   3833             strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
   3834             free(stp_strs[stp_index]);
   3835         }
   3836     }
   3837     free(extra_indent);
   3838     return str;
   3839 }
   3840 char* dynamic_display(const void* pStruct, const char* prefix)
   3841 {
   3842     // Cast to APP_INFO ptr initially just to pull sType off struct
   3843     if (pStruct == NULL) {
   3844         return NULL;
   3845     }
   3846     VkStructureType sType = ((VkApplicationInfo*)pStruct)->sType;
   3847     char indent[100];
   3848     strcpy(indent, "    ");
   3849     strcat(indent, prefix);
   3850     switch (sType)
   3851     {
   3852         case VK_STRUCTURE_TYPE_APPLICATION_INFO:
   3853         {
   3854             return vk_print_vkapplicationinfo((VkApplicationInfo*)pStruct, indent);
   3855         }
   3856         break;
   3857         case VK_STRUCTURE_TYPE_BIND_SPARSE_INFO:
   3858         {
   3859             return vk_print_vkbindsparseinfo((VkBindSparseInfo*)pStruct, indent);
   3860         }
   3861         break;
   3862         case VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO:
   3863         {
   3864             return vk_print_vkbuffercreateinfo((VkBufferCreateInfo*)pStruct, indent);
   3865         }
   3866         break;
   3867         case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER:
   3868         {
   3869             return vk_print_vkbuffermemorybarrier((VkBufferMemoryBarrier*)pStruct, indent);
   3870         }
   3871         break;
   3872         case VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO:
   3873         {
   3874             return vk_print_vkbufferviewcreateinfo((VkBufferViewCreateInfo*)pStruct, indent);
   3875         }
   3876         break;
   3877         case VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO:
   3878         {
   3879             return vk_print_vkcommandbufferallocateinfo((VkCommandBufferAllocateInfo*)pStruct, indent);
   3880         }
   3881         break;
   3882         case VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO:
   3883         {
   3884             return vk_print_vkcommandbufferbegininfo((VkCommandBufferBeginInfo*)pStruct, indent);
   3885         }
   3886         break;
   3887         case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO:
   3888         {
   3889             return vk_print_vkcommandbufferinheritanceinfo((VkCommandBufferInheritanceInfo*)pStruct, indent);
   3890         }
   3891         break;
   3892         case VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO:
   3893         {
   3894             return vk_print_vkcommandpoolcreateinfo((VkCommandPoolCreateInfo*)pStruct, indent);
   3895         }
   3896         break;
   3897         case VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO:
   3898         {
   3899             return vk_print_vkcomputepipelinecreateinfo((VkComputePipelineCreateInfo*)pStruct, indent);
   3900         }
   3901         break;
   3902         case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET:
   3903         {
   3904             return vk_print_vkcopydescriptorset((VkCopyDescriptorSet*)pStruct, indent);
   3905         }
   3906         break;
   3907         case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO:
   3908         {
   3909             return vk_print_vkdescriptorpoolcreateinfo((VkDescriptorPoolCreateInfo*)pStruct, indent);
   3910         }
   3911         break;
   3912         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO:
   3913         {
   3914             return vk_print_vkdescriptorsetallocateinfo((VkDescriptorSetAllocateInfo*)pStruct, indent);
   3915         }
   3916         break;
   3917         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO:
   3918         {
   3919             return vk_print_vkdescriptorsetlayoutcreateinfo((VkDescriptorSetLayoutCreateInfo*)pStruct, indent);
   3920         }
   3921         break;
   3922         case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO:
   3923         {
   3924             return vk_print_vkdevicecreateinfo((VkDeviceCreateInfo*)pStruct, indent);
   3925         }
   3926         break;
   3927         case VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO:
   3928         {
   3929             return vk_print_vkdevicequeuecreateinfo((VkDeviceQueueCreateInfo*)pStruct, indent);
   3930         }
   3931         break;
   3932         case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO:
   3933         {
   3934             return vk_print_vkeventcreateinfo((VkEventCreateInfo*)pStruct, indent);
   3935         }
   3936         break;
   3937         case VK_STRUCTURE_TYPE_FENCE_CREATE_INFO:
   3938         {
   3939             return vk_print_vkfencecreateinfo((VkFenceCreateInfo*)pStruct, indent);
   3940         }
   3941         break;
   3942         case VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO:
   3943         {
   3944             return vk_print_vkframebuffercreateinfo((VkFramebufferCreateInfo*)pStruct, indent);
   3945         }
   3946         break;
   3947         case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO:
   3948         {
   3949             return vk_print_vkgraphicspipelinecreateinfo((VkGraphicsPipelineCreateInfo*)pStruct, indent);
   3950         }
   3951         break;
   3952         case VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO:
   3953         {
   3954             return vk_print_vkimagecreateinfo((VkImageCreateInfo*)pStruct, indent);
   3955         }
   3956         break;
   3957         case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER:
   3958         {
   3959             return vk_print_vkimagememorybarrier((VkImageMemoryBarrier*)pStruct, indent);
   3960         }
   3961         break;
   3962         case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO:
   3963         {
   3964             return vk_print_vkimageviewcreateinfo((VkImageViewCreateInfo*)pStruct, indent);
   3965         }
   3966         break;
   3967         case VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO:
   3968         {
   3969             return vk_print_vkinstancecreateinfo((VkInstanceCreateInfo*)pStruct, indent);
   3970         }
   3971         break;
   3972         case VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE:
   3973         {
   3974             return vk_print_vkmappedmemoryrange((VkMappedMemoryRange*)pStruct, indent);
   3975         }
   3976         break;
   3977         case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO:
   3978         {
   3979             return vk_print_vkmemoryallocateinfo((VkMemoryAllocateInfo*)pStruct, indent);
   3980         }
   3981         break;
   3982         case VK_STRUCTURE_TYPE_MEMORY_BARRIER:
   3983         {
   3984             return vk_print_vkmemorybarrier((VkMemoryBarrier*)pStruct, indent);
   3985         }
   3986         break;
   3987         case VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO:
   3988         {
   3989             return vk_print_vkpipelinecachecreateinfo((VkPipelineCacheCreateInfo*)pStruct, indent);
   3990         }
   3991         break;
   3992         case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO:
   3993         {
   3994             return vk_print_vkpipelinecolorblendstatecreateinfo((VkPipelineColorBlendStateCreateInfo*)pStruct, indent);
   3995         }
   3996         break;
   3997         case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO:
   3998         {
   3999             return vk_print_vkpipelinedepthstencilstatecreateinfo((VkPipelineDepthStencilStateCreateInfo*)pStruct, indent);
   4000         }
   4001         break;
   4002         case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO:
   4003         {
   4004             return vk_print_vkpipelinedynamicstatecreateinfo((VkPipelineDynamicStateCreateInfo*)pStruct, indent);
   4005         }
   4006         break;
   4007         case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO:
   4008         {
   4009             return vk_print_vkpipelineinputassemblystatecreateinfo((VkPipelineInputAssemblyStateCreateInfo*)pStruct, indent);
   4010         }
   4011         break;
   4012         case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO:
   4013         {
   4014             return vk_print_vkpipelinelayoutcreateinfo((VkPipelineLayoutCreateInfo*)pStruct, indent);
   4015         }
   4016         break;
   4017         case VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO:
   4018         {
   4019             return vk_print_vkpipelinemultisamplestatecreateinfo((VkPipelineMultisampleStateCreateInfo*)pStruct, indent);
   4020         }
   4021         break;
   4022         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO:
   4023         {
   4024             return vk_print_vkpipelinerasterizationstatecreateinfo((VkPipelineRasterizationStateCreateInfo*)pStruct, indent);
   4025         }
   4026         break;
   4027         case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO:
   4028         {
   4029             return vk_print_vkpipelineshaderstagecreateinfo((VkPipelineShaderStageCreateInfo*)pStruct, indent);
   4030         }
   4031         break;
   4032         case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO:
   4033         {
   4034             return vk_print_vkpipelinetessellationstatecreateinfo((VkPipelineTessellationStateCreateInfo*)pStruct, indent);
   4035         }
   4036         break;
   4037         case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO:
   4038         {
   4039             return vk_print_vkpipelinevertexinputstatecreateinfo((VkPipelineVertexInputStateCreateInfo*)pStruct, indent);
   4040         }
   4041         break;
   4042         case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO:
   4043         {
   4044             return vk_print_vkpipelineviewportstatecreateinfo((VkPipelineViewportStateCreateInfo*)pStruct, indent);
   4045         }
   4046         break;
   4047         case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO:
   4048         {
   4049             return vk_print_vkquerypoolcreateinfo((VkQueryPoolCreateInfo*)pStruct, indent);
   4050         }
   4051         break;
   4052         case VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO:
   4053         {
   4054             return vk_print_vkrenderpassbegininfo((VkRenderPassBeginInfo*)pStruct, indent);
   4055         }
   4056         break;
   4057         case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO:
   4058         {
   4059             return vk_print_vkrenderpasscreateinfo((VkRenderPassCreateInfo*)pStruct, indent);
   4060         }
   4061         break;
   4062         case VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO:
   4063         {
   4064             return vk_print_vksamplercreateinfo((VkSamplerCreateInfo*)pStruct, indent);
   4065         }
   4066         break;
   4067         case VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO:
   4068         {
   4069             return vk_print_vksemaphorecreateinfo((VkSemaphoreCreateInfo*)pStruct, indent);
   4070         }
   4071         break;
   4072         case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO:
   4073         {
   4074             return vk_print_vkshadermodulecreateinfo((VkShaderModuleCreateInfo*)pStruct, indent);
   4075         }
   4076         break;
   4077         case VK_STRUCTURE_TYPE_SUBMIT_INFO:
   4078         {
   4079             return vk_print_vksubmitinfo((VkSubmitInfo*)pStruct, indent);
   4080         }
   4081         break;
   4082         case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET:
   4083         {
   4084             return vk_print_vkwritedescriptorset((VkWriteDescriptorSet*)pStruct, indent);
   4085         }
   4086         break;
   4087         default:
   4088         return NULL;
   4089     }
   4090 }