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