111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* THIS FILE IS GENERATED.  DO NOT EDIT. */
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Vulkan
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 2015-2016 The Khronos Group Inc.
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 2015-2016 Valve Corporation.
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 2015-2016 LunarG, Inc.
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 2015-2016 Google Inc.
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Licensed under the Apache License, Version 2.0 (the "License");
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * you may not use this file except in compliance with the License.
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * You may obtain a copy of the License at
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *     http://www.apache.org/licenses/LICENSE-2.0
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Unless required by applicable law or agreed to in writing, software
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * distributed under the License is distributed on an "AS IS" BASIS,
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * See the License for the specific language governing permissions and
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * limitations under the License.
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Author: Courtney Goeltzenleuchter <courtney@LunarG.com>
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Author: Tobin Ehlis <tobin@lunarg.com>
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert//#includes, #defines, globals and such...
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <vulkan/vulkan.h>
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <stdint.h>
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <cinttypes>
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <stdio.h>
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <stdlib.h>
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include "vk_enum_string_helper.h"
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Function Prototypes
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* dynamic_display(const void* pStruct, const char* prefix);
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkallocationcallbacks(const VkAllocationCallbacks* pStruct, const char* prefix);
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkandroidsurfacecreateinfokhr(const VkAndroidSurfaceCreateInfoKHR* pStruct, const char* prefix);
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkapplicationinfo(const VkApplicationInfo* pStruct, const char* prefix);
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkattachmentdescription(const VkAttachmentDescription* pStruct, const char* prefix);
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkattachmentreference(const VkAttachmentReference* pStruct, const char* prefix);
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkbindsparseinfo(const VkBindSparseInfo* pStruct, const char* prefix);
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkbuffercopy(const VkBufferCopy* pStruct, const char* prefix);
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkbuffercreateinfo(const VkBufferCreateInfo* pStruct, const char* prefix);
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkbufferimagecopy(const VkBufferImageCopy* pStruct, const char* prefix);
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkbuffermemorybarrier(const VkBufferMemoryBarrier* pStruct, const char* prefix);
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkbufferviewcreateinfo(const VkBufferViewCreateInfo* pStruct, const char* prefix);
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkclearattachment(const VkClearAttachment* pStruct, const char* prefix);
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkclearcolorvalue(const VkClearColorValue* pStruct, const char* prefix);
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkcleardepthstencilvalue(const VkClearDepthStencilValue* pStruct, const char* prefix);
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkclearrect(const VkClearRect* pStruct, const char* prefix);
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkclearvalue(const VkClearValue* pStruct, const char* prefix);
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkcommandbufferallocateinfo(const VkCommandBufferAllocateInfo* pStruct, const char* prefix);
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkcommandbufferbegininfo(const VkCommandBufferBeginInfo* pStruct, const char* prefix);
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkcommandbufferinheritanceinfo(const VkCommandBufferInheritanceInfo* pStruct, const char* prefix);
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkcommandpoolcreateinfo(const VkCommandPoolCreateInfo* pStruct, const char* prefix);
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkcomponentmapping(const VkComponentMapping* pStruct, const char* prefix);
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkcomputepipelinecreateinfo(const VkComputePipelineCreateInfo* pStruct, const char* prefix);
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkcopydescriptorset(const VkCopyDescriptorSet* pStruct, const char* prefix);
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdebugmarkermarkerinfoext(const VkDebugMarkerMarkerInfoEXT* pStruct, const char* prefix);
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdebugmarkerobjectnameinfoext(const VkDebugMarkerObjectNameInfoEXT* pStruct, const char* prefix);
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdebugmarkerobjecttaginfoext(const VkDebugMarkerObjectTagInfoEXT* pStruct, const char* prefix);
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdebugreportcallbackcreateinfoext(const VkDebugReportCallbackCreateInfoEXT* pStruct, const char* prefix);
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdescriptorbufferinfo(const VkDescriptorBufferInfo* pStruct, const char* prefix);
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdescriptorimageinfo(const VkDescriptorImageInfo* pStruct, const char* prefix);
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdescriptorpoolcreateinfo(const VkDescriptorPoolCreateInfo* pStruct, const char* prefix);
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdescriptorpoolsize(const VkDescriptorPoolSize* pStruct, const char* prefix);
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdescriptorsetallocateinfo(const VkDescriptorSetAllocateInfo* pStruct, const char* prefix);
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdescriptorsetlayoutbinding(const VkDescriptorSetLayoutBinding* pStruct, const char* prefix);
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdescriptorsetlayoutcreateinfo(const VkDescriptorSetLayoutCreateInfo* pStruct, const char* prefix);
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdevicecreateinfo(const VkDeviceCreateInfo* pStruct, const char* prefix);
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdevicequeuecreateinfo(const VkDeviceQueueCreateInfo* pStruct, const char* prefix);
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdispatchindirectcommand(const VkDispatchIndirectCommand* pStruct, const char* prefix);
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdisplaymodecreateinfokhr(const VkDisplayModeCreateInfoKHR* pStruct, const char* prefix);
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdisplaymodeparameterskhr(const VkDisplayModeParametersKHR* pStruct, const char* prefix);
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdisplaymodepropertieskhr(const VkDisplayModePropertiesKHR* pStruct, const char* prefix);
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdisplayplanecapabilitieskhr(const VkDisplayPlaneCapabilitiesKHR* pStruct, const char* prefix);
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdisplayplanepropertieskhr(const VkDisplayPlanePropertiesKHR* pStruct, const char* prefix);
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdisplaypresentinfokhr(const VkDisplayPresentInfoKHR* pStruct, const char* prefix);
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdisplaypropertieskhr(const VkDisplayPropertiesKHR* pStruct, const char* prefix);
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdisplaysurfacecreateinfokhr(const VkDisplaySurfaceCreateInfoKHR* pStruct, const char* prefix);
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdrawindexedindirectcommand(const VkDrawIndexedIndirectCommand* pStruct, const char* prefix);
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdrawindirectcommand(const VkDrawIndirectCommand* pStruct, const char* prefix);
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkeventcreateinfo(const VkEventCreateInfo* pStruct, const char* prefix);
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkextensionproperties(const VkExtensionProperties* pStruct, const char* prefix);
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkextent2d(const VkExtent2D* pStruct, const char* prefix);
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkextent3d(const VkExtent3D* pStruct, const char* prefix);
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkfencecreateinfo(const VkFenceCreateInfo* pStruct, const char* prefix);
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkformatproperties(const VkFormatProperties* pStruct, const char* prefix);
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkframebuffercreateinfo(const VkFramebufferCreateInfo* pStruct, const char* prefix);
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkgraphicspipelinecreateinfo(const VkGraphicsPipelineCreateInfo* pStruct, const char* prefix);
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkimageblit(const VkImageBlit* pStruct, const char* prefix);
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkimagecopy(const VkImageCopy* pStruct, const char* prefix);
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkimagecreateinfo(const VkImageCreateInfo* pStruct, const char* prefix);
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkimageformatproperties(const VkImageFormatProperties* pStruct, const char* prefix);
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkimagememorybarrier(const VkImageMemoryBarrier* pStruct, const char* prefix);
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkimageresolve(const VkImageResolve* pStruct, const char* prefix);
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkimagesubresource(const VkImageSubresource* pStruct, const char* prefix);
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkimagesubresourcelayers(const VkImageSubresourceLayers* pStruct, const char* prefix);
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkimagesubresourcerange(const VkImageSubresourceRange* pStruct, const char* prefix);
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkimageviewcreateinfo(const VkImageViewCreateInfo* pStruct, const char* prefix);
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkinstancecreateinfo(const VkInstanceCreateInfo* pStruct, const char* prefix);
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vklayerproperties(const VkLayerProperties* pStruct, const char* prefix);
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkmappedmemoryrange(const VkMappedMemoryRange* pStruct, const char* prefix);
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkmemoryallocateinfo(const VkMemoryAllocateInfo* pStruct, const char* prefix);
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkmemorybarrier(const VkMemoryBarrier* pStruct, const char* prefix);
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkmemoryheap(const VkMemoryHeap* pStruct, const char* prefix);
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkmemoryrequirements(const VkMemoryRequirements* pStruct, const char* prefix);
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkmemorytype(const VkMemoryType* pStruct, const char* prefix);
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkmirsurfacecreateinfokhr(const VkMirSurfaceCreateInfoKHR* pStruct, const char* prefix);
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkoffset2d(const VkOffset2D* pStruct, const char* prefix);
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkoffset3d(const VkOffset3D* pStruct, const char* prefix);
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkphysicaldevicefeatures(const VkPhysicalDeviceFeatures* pStruct, const char* prefix);
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkphysicaldevicelimits(const VkPhysicalDeviceLimits* pStruct, const char* prefix);
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkphysicaldevicememoryproperties(const VkPhysicalDeviceMemoryProperties* pStruct, const char* prefix);
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkphysicaldeviceproperties(const VkPhysicalDeviceProperties* pStruct, const char* prefix);
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkphysicaldevicesparseproperties(const VkPhysicalDeviceSparseProperties* pStruct, const char* prefix);
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinecachecreateinfo(const VkPipelineCacheCreateInfo* pStruct, const char* prefix);
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinecolorblendattachmentstate(const VkPipelineColorBlendAttachmentState* pStruct, const char* prefix);
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinecolorblendstatecreateinfo(const VkPipelineColorBlendStateCreateInfo* pStruct, const char* prefix);
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinedepthstencilstatecreateinfo(const VkPipelineDepthStencilStateCreateInfo* pStruct, const char* prefix);
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinedynamicstatecreateinfo(const VkPipelineDynamicStateCreateInfo* pStruct, const char* prefix);
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelineinputassemblystatecreateinfo(const VkPipelineInputAssemblyStateCreateInfo* pStruct, const char* prefix);
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinelayoutcreateinfo(const VkPipelineLayoutCreateInfo* pStruct, const char* prefix);
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinemultisamplestatecreateinfo(const VkPipelineMultisampleStateCreateInfo* pStruct, const char* prefix);
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinerasterizationstatecreateinfo(const VkPipelineRasterizationStateCreateInfo* pStruct, const char* prefix);
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinerasterizationstaterasterizationorderamd(const VkPipelineRasterizationStateRasterizationOrderAMD* pStruct, const char* prefix);
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelineshaderstagecreateinfo(const VkPipelineShaderStageCreateInfo* pStruct, const char* prefix);
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinetessellationstatecreateinfo(const VkPipelineTessellationStateCreateInfo* pStruct, const char* prefix);
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinevertexinputstatecreateinfo(const VkPipelineVertexInputStateCreateInfo* pStruct, const char* prefix);
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelineviewportstatecreateinfo(const VkPipelineViewportStateCreateInfo* pStruct, const char* prefix);
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpresentinfokhr(const VkPresentInfoKHR* pStruct, const char* prefix);
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpushconstantrange(const VkPushConstantRange* pStruct, const char* prefix);
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkquerypoolcreateinfo(const VkQueryPoolCreateInfo* pStruct, const char* prefix);
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkqueuefamilyproperties(const VkQueueFamilyProperties* pStruct, const char* prefix);
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkrect2d(const VkRect2D* pStruct, const char* prefix);
13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkrenderpassbegininfo(const VkRenderPassBeginInfo* pStruct, const char* prefix);
13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkrenderpasscreateinfo(const VkRenderPassCreateInfo* pStruct, const char* prefix);
13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksamplercreateinfo(const VkSamplerCreateInfo* pStruct, const char* prefix);
13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksemaphorecreateinfo(const VkSemaphoreCreateInfo* pStruct, const char* prefix);
14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkshadermodulecreateinfo(const VkShaderModuleCreateInfo* pStruct, const char* prefix);
14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksparsebuffermemorybindinfo(const VkSparseBufferMemoryBindInfo* pStruct, const char* prefix);
14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksparseimageformatproperties(const VkSparseImageFormatProperties* pStruct, const char* prefix);
14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksparseimagememorybind(const VkSparseImageMemoryBind* pStruct, const char* prefix);
14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksparseimagememorybindinfo(const VkSparseImageMemoryBindInfo* pStruct, const char* prefix);
14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksparseimagememoryrequirements(const VkSparseImageMemoryRequirements* pStruct, const char* prefix);
14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksparseimageopaquememorybindinfo(const VkSparseImageOpaqueMemoryBindInfo* pStruct, const char* prefix);
14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksparsememorybind(const VkSparseMemoryBind* pStruct, const char* prefix);
14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkspecializationinfo(const VkSpecializationInfo* pStruct, const char* prefix);
14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkspecializationmapentry(const VkSpecializationMapEntry* pStruct, const char* prefix);
15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkstencilopstate(const VkStencilOpState* pStruct, const char* prefix);
15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksubmitinfo(const VkSubmitInfo* pStruct, const char* prefix);
15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksubpassdependency(const VkSubpassDependency* pStruct, const char* prefix);
15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksubpassdescription(const VkSubpassDescription* pStruct, const char* prefix);
15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksubresourcelayout(const VkSubresourceLayout* pStruct, const char* prefix);
15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksurfacecapabilitieskhr(const VkSurfaceCapabilitiesKHR* pStruct, const char* prefix);
15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksurfaceformatkhr(const VkSurfaceFormatKHR* pStruct, const char* prefix);
15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkswapchaincreateinfokhr(const VkSwapchainCreateInfoKHR* pStruct, const char* prefix);
15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkvertexinputattributedescription(const VkVertexInputAttributeDescription* pStruct, const char* prefix);
15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkvertexinputbindingdescription(const VkVertexInputBindingDescription* pStruct, const char* prefix);
16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkviewport(const VkViewport* pStruct, const char* prefix);
16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkwaylandsurfacecreateinfokhr(const VkWaylandSurfaceCreateInfoKHR* pStruct, const char* prefix);
16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkwin32surfacecreateinfokhr(const VkWin32SurfaceCreateInfoKHR* pStruct, const char* prefix);
16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkwritedescriptorset(const VkWriteDescriptorSet* pStruct, const char* prefix);
16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkxcbsurfacecreateinfokhr(const VkXcbSurfaceCreateInfoKHR* pStruct, const char* prefix);
16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkxlibsurfacecreateinfokhr(const VkXlibSurfaceCreateInfoKHR* pStruct, const char* prefix);
16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined(_WIN32)
16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Microsoft did not implement C99 in Visual Studio; but started adding it with
16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// VS2013.  However, VS2013 still did not have snprintf().  The following is a
17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// work-around.
17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define snprintf _snprintf
17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif // _WIN32
17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkallocationcallbacks(const VkAllocationCallbacks* pStruct, const char* prefix)
17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%spUserData = addr\n%spfnAllocation = addr\n%spfnReallocation = addr\n%spfnFree = addr\n%spfnInternalAllocation = addr\n%spfnInternalFree = addr\n", prefix, prefix, prefix, prefix, prefix, prefix);
18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkandroidsurfacecreateinfokhr(const VkAndroidSurfaceCreateInfoKHR* pStruct, const char* prefix)
18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
18911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
19011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
20011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
20111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
20211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
20311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%swindow = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix);
20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
21311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkapplicationinfo(const VkApplicationInfo* pStruct, const char* prefix)
21411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
21511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
21611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
21711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
21811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
21911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
22011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
22111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
22211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
22311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
22411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
22511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
22611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
22711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
22811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
22911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
23011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
23111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
23211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
23311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%spApplicationName = addr\n%sapplicationVersion = %u\n%spEngineName = addr\n%sengineVersion = %u\n%sapiVersion = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix, (pStruct->applicationVersion), prefix, prefix, (pStruct->engineVersion), prefix, (pStruct->apiVersion));
23411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
23511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
23611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
23711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
23811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
23911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
24011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
24111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
24211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
24311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkattachmentdescription(const VkAttachmentDescription* pStruct, const char* prefix)
24411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
24511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
24611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
24711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
24811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
24911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    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));
25011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
25111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
25211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkattachmentreference(const VkAttachmentReference* pStruct, const char* prefix)
25311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
25411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
25511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
25611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
25711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
25811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sattachment = %u\n%slayout = %s\n", prefix, (pStruct->attachment), prefix, string_VkImageLayout(pStruct->layout));
25911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
26011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
26111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkbindsparseinfo(const VkBindSparseInfo* pStruct, const char* prefix)
26211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
26311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
26411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
26511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
26611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
26711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
26811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
26911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[4];
27011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
27111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
27211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
27311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
27411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
27511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
27611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
27711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
27811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
27911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pBufferBinds) {
28011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vksparsebuffermemorybindinfo(pStruct->pBufferBinds, extra_indent);
28111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
28211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = (char*)malloc(len);
28311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[1], len, " %spBufferBinds (addr)\n%s", prefix, tmpStr);
28411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
28511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
28611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = "";
28711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pImageOpaqueBinds) {
28811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vksparseimageopaquememorybindinfo(pStruct->pImageOpaqueBinds, extra_indent);
28911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
29011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[2] = (char*)malloc(len);
29111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[2], len, " %spImageOpaqueBinds (addr)\n%s", prefix, tmpStr);
29211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
29311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
29411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[2] = "";
29511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pImageBinds) {
29611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vksparseimagememorybindinfo(pStruct->pImageBinds, extra_indent);
29711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
29811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[3] = (char*)malloc(len);
29911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[3], len, " %spImageBinds (addr)\n%s", prefix, tmpStr);
30011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
30111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
30211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[3] = "";
30311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + strlen(stp_strs[3]) + sizeof(char)*1024;
30411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
30511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%swaitSemaphoreCount = %u\n%spWaitSemaphores = addr\n%sbufferBindCount = %u\n%spBufferBinds = addr\n%simageOpaqueBindCount = %u\n%spImageOpaqueBinds = addr\n%simageBindCount = %u\n%spImageBinds = addr\n%ssignalSemaphoreCount = %u\n%spSignalSemaphores = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->waitSemaphoreCount), prefix, prefix, (pStruct->bufferBindCount), prefix, prefix, (pStruct->imageOpaqueBindCount), prefix, prefix, (pStruct->imageBindCount), prefix, prefix, (pStruct->signalSemaphoreCount), prefix);
30611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 3; stp_index >= 0; stp_index--) {
30711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
30811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
30911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
31011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
31111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
31211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
31311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
31411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
31511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkbuffercopy(const VkBufferCopy* pStruct, const char* prefix)
31611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
31711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
31811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
31911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
32011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
32111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    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));
32211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
32311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
32411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkbuffercreateinfo(const VkBufferCreateInfo* pStruct, const char* prefix)
32511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
32611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
32711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
32811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
32911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
33011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
33111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
33211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
33311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
33411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
33511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
33611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
33711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
33811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
33911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
34011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
34111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
34211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
34311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
34411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%ssize = " PRINTF_SIZE_T_SPECIFIER "\n%susage = %u\n%ssharingMode = %s\n%squeueFamilyIndexCount = %u\n%spQueueFamilyIndices = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->size), prefix, (pStruct->usage), prefix, string_VkSharingMode(pStruct->sharingMode), prefix, (pStruct->queueFamilyIndexCount), prefix);
34511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
34611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
34711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
34811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
34911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
35011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
35111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
35211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
35311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
35411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkbufferimagecopy(const VkBufferImageCopy* pStruct, const char* prefix)
35511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
35611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
35711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
35811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
35911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
36011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
36111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
36211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[3];
36311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkimagesubresourcelayers(&pStruct->imageSubresource, extra_indent);
36411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
36511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[0] = (char*)malloc(len);
36611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[0], len, " %simageSubresource (addr)\n%s", prefix, tmpStr);
36711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkoffset3d(&pStruct->imageOffset, extra_indent);
36811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
36911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
37011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %simageOffset (addr)\n%s", prefix, tmpStr);
37111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkextent3d(&pStruct->imageExtent, extra_indent);
37211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
37311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[2] = (char*)malloc(len);
37411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[2], len, " %simageExtent (addr)\n%s", prefix, tmpStr);
37511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
37611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
37711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sbufferOffset = " PRINTF_SIZE_T_SPECIFIER "\n%sbufferRowLength = %u\n%sbufferImageHeight = %u\n%simageSubresource = addr\n%simageOffset = addr\n%simageExtent = addr\n", prefix, (pStruct->bufferOffset), prefix, (pStruct->bufferRowLength), prefix, (pStruct->bufferImageHeight), prefix, prefix, prefix);
37811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
37911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
38011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
38111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
38211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
38311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
38411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
38511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
38611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
38711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkbuffermemorybarrier(const VkBufferMemoryBarrier* pStruct, const char* prefix)
38811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
38911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
39011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
39111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
39211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
39311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
39411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
39511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
39611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
39711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
39811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
39911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
40011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
40111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
40211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
40311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
40411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
40511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
40611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
40711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%ssrcAccessMask = %u\n%sdstAccessMask = %u\n%ssrcQueueFamilyIndex = %u\n%sdstQueueFamilyIndex = %u\n%sbuffer = addr\n%soffset = " PRINTF_SIZE_T_SPECIFIER "\n%ssize = " PRINTF_SIZE_T_SPECIFIER "\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->srcAccessMask), prefix, (pStruct->dstAccessMask), prefix, (pStruct->srcQueueFamilyIndex), prefix, (pStruct->dstQueueFamilyIndex), prefix, prefix, (pStruct->offset), prefix, (pStruct->size));
40811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
40911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
41011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
41111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
41211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
41311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
41411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
41511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
41611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
41711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkbufferviewcreateinfo(const VkBufferViewCreateInfo* pStruct, const char* prefix)
41811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
41911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
42011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
42111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
42211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
42311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
42411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
42511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
42611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
42711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
42811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
42911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
43011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
43111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
43211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
43311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
43411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
43511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
43611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
43711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sbuffer = addr\n%sformat = %s\n%soffset = " PRINTF_SIZE_T_SPECIFIER "\n%srange = " PRINTF_SIZE_T_SPECIFIER "\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix, string_VkFormat(pStruct->format), prefix, (pStruct->offset), prefix, (pStruct->range));
43811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
43911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
44011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
44111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
44211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
44311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
44411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
44511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
44611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
44711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkclearattachment(const VkClearAttachment* pStruct, const char* prefix)
44811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
44911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
45011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
45111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
45211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
45311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
45411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
45511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
45611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkclearvalue(&pStruct->clearValue, extra_indent);
45711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
45811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[0] = (char*)malloc(len);
45911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[0], len, " %sclearValue (addr)\n%s", prefix, tmpStr);
46011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
46111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
46211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%saspectMask = %u\n%scolorAttachment = %u\n%sclearValue = addr\n", prefix, (pStruct->aspectMask), prefix, (pStruct->colorAttachment), prefix);
46311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
46411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
46511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
46611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
46711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
46811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
46911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
47011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
47111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
47211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkclearcolorvalue(const VkClearColorValue* pStruct, const char* prefix)
47311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
47411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
47511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
47611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
47711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
47811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sfloat32 = addr\n%sint32 = addr\n%suint32 = addr\n", prefix, prefix, prefix);
47911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
48011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
48111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkcleardepthstencilvalue(const VkClearDepthStencilValue* pStruct, const char* prefix)
48211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
48311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
48411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
48511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
48611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
48711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sdepth = %f\n%sstencil = %u\n", prefix, (pStruct->depth), prefix, (pStruct->stencil));
48811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
48911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
49011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkclearrect(const VkClearRect* pStruct, const char* prefix)
49111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
49211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
49311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
49411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
49511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
49611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
49711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
49811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
49911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkrect2d(&pStruct->rect, extra_indent);
50011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
50111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[0] = (char*)malloc(len);
50211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[0], len, " %srect (addr)\n%s", prefix, tmpStr);
50311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
50411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
50511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%srect = addr\n%sbaseArrayLayer = %u\n%slayerCount = %u\n", prefix, prefix, (pStruct->baseArrayLayer), prefix, (pStruct->layerCount));
50611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
50711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
50811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
50911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
51011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
51111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
51211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
51311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
51411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
51511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkclearvalue(const VkClearValue* pStruct, const char* prefix)
51611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
51711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
51811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
51911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
52011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
52111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
52211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
52311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[2];
52411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkclearcolorvalue(&pStruct->color, extra_indent);
52511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
52611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[0] = (char*)malloc(len);
52711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[0], len, " %scolor (addr)\n%s", prefix, tmpStr);
52811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkcleardepthstencilvalue(&pStruct->depthStencil, extra_indent);
52911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
53011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
53111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %sdepthStencil (addr)\n%s", prefix, tmpStr);
53211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
53311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
53411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%scolor = addr\n%sdepthStencil = addr\n", prefix, prefix);
53511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
53611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
53711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
53811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
53911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
54011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
54111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
54211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
54311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
54411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkcommandbufferallocateinfo(const VkCommandBufferAllocateInfo* pStruct, const char* prefix)
54511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
54611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
54711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
54811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
54911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
55011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
55111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
55211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
55311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
55411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
55511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
55611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
55711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
55811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
55911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
56011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
56111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
56211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
56311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
56411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%scommandPool = addr\n%slevel = %s\n%scommandBufferCount = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix, string_VkCommandBufferLevel(pStruct->level), prefix, (pStruct->commandBufferCount));
56511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
56611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
56711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
56811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
56911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
57011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
57111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
57211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
57311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
57411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkcommandbufferbegininfo(const VkCommandBufferBeginInfo* pStruct, const char* prefix)
57511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
57611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
57711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
57811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
57911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
58011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
58111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
58211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[2];
58311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
58411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
58511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
58611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
58711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
58811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
58911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
59011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
59111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
59211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pInheritanceInfo) {
59311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkcommandbufferinheritanceinfo(pStruct->pInheritanceInfo, extra_indent);
59411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
59511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = (char*)malloc(len);
59611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[1], len, " %spInheritanceInfo (addr)\n%s", prefix, tmpStr);
59711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
59811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
59911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = "";
60011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
60111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
60211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%spInheritanceInfo = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix);
60311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
60411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
60511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
60611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
60711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
60811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
60911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
61011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
61111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
61211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkcommandbufferinheritanceinfo(const VkCommandBufferInheritanceInfo* pStruct, const char* prefix)
61311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
61411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
61511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
61611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
61711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
61811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
61911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
62011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
62111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
62211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
62311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
62411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
62511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
62611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
62711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
62811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
62911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
63011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
63111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
63211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%srenderPass = addr\n%ssubpass = %u\n%sframebuffer = addr\n%socclusionQueryEnable = %s\n%squeryFlags = %u\n%spipelineStatistics = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix, (pStruct->subpass), prefix, prefix, (pStruct->occlusionQueryEnable) ? "TRUE" : "FALSE", prefix, (pStruct->queryFlags), prefix, (pStruct->pipelineStatistics));
63311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
63411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
63511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
63611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
63711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
63811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
63911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
64011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
64111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
64211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkcommandpoolcreateinfo(const VkCommandPoolCreateInfo* pStruct, const char* prefix)
64311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
64411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
64511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
64611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
64711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
64811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
64911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
65011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
65111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
65211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
65311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
65411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
65511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
65611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
65711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
65811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
65911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
66011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
66111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
66211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%squeueFamilyIndex = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->queueFamilyIndex));
66311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
66411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
66511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
66611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
66711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
66811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
66911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
67011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
67111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
67211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkcomponentmapping(const VkComponentMapping* pStruct, const char* prefix)
67311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
67411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
67511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
67611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
67711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
67811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    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));
67911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
68011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
68111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkcomputepipelinecreateinfo(const VkComputePipelineCreateInfo* pStruct, const char* prefix)
68211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
68311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
68411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
68511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
68611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
68711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
68811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
68911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[2];
69011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
69111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
69211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
69311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
69411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
69511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
69611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
69711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
69811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
69911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkpipelineshaderstagecreateinfo(&pStruct->stage, extra_indent);
70011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
70111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
70211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %sstage (addr)\n%s", prefix, tmpStr);
70311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
70411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
70511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sstage = addr\n%slayout = addr\n%sbasePipelineHandle = addr\n%sbasePipelineIndex = %i\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix, prefix, prefix, (pStruct->basePipelineIndex));
70611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
70711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
70811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
70911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
71011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
71111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
71211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
71311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
71411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
71511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkcopydescriptorset(const VkCopyDescriptorSet* pStruct, const char* prefix)
71611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
71711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
71811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
71911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
72011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
72111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
72211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
72311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
72411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
72511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
72611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
72711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
72811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
72911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
73011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
73111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
73211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
73311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
73411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
73511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%ssrcSet = addr\n%ssrcBinding = %u\n%ssrcArrayElement = %u\n%sdstSet = addr\n%sdstBinding = %u\n%sdstArrayElement = %u\n%sdescriptorCount = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix, (pStruct->srcBinding), prefix, (pStruct->srcArrayElement), prefix, prefix, (pStruct->dstBinding), prefix, (pStruct->dstArrayElement), prefix, (pStruct->descriptorCount));
73611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
73711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
73811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
73911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
74011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
74111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
74211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
74311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
74411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
74511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdebugmarkermarkerinfoext(const VkDebugMarkerMarkerInfoEXT* pStruct, const char* prefix)
74611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
74711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
74811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
74911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
75011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
75111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
75211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
75311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
75411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
75511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
75611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
75711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
75811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
75911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
76011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
76111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
76211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
76311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
76411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
76511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%spMarkerName = addr\n%scolor = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix);
76611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
76711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
76811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
76911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
77011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
77111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
77211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
77311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
77411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
77511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdebugmarkerobjectnameinfoext(const VkDebugMarkerObjectNameInfoEXT* pStruct, const char* prefix)
77611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
77711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
77811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
77911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
78011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
78111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
78211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
78311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
78411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
78511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
78611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
78711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
78811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
78911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
79011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
79111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
79211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
79311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
79411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
79511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sobjectType = %s\n%sobject = %" PRId64 "\n%spObjectName = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, string_VkDebugReportObjectTypeEXT(pStruct->objectType), prefix, (pStruct->object), prefix);
79611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
79711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
79811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
79911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
80011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
80111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
80211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
80311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
80411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
80511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdebugmarkerobjecttaginfoext(const VkDebugMarkerObjectTagInfoEXT* pStruct, const char* prefix)
80611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
80711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
80811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
80911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
81011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
81111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
81211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
81311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
81411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
81511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
81611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
81711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
81811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
81911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
82011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
82111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
82211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
82311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
82411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
82511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sobjectType = %s\n%sobject = %" PRId64 "\n%stagName = %" PRId64 "\n%stagSize = " PRINTF_SIZE_T_SPECIFIER "\n%spTag = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, string_VkDebugReportObjectTypeEXT(pStruct->objectType), prefix, (pStruct->object), prefix, (pStruct->tagName), prefix, (pStruct->tagSize), prefix);
82611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
82711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
82811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
82911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
83011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
83111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
83211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
83311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
83411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
83511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdebugreportcallbackcreateinfoext(const VkDebugReportCallbackCreateInfoEXT* pStruct, const char* prefix)
83611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
83711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
83811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
83911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
84011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
84111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
84211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
84311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
84411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
84511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
84611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
84711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
84811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
84911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
85011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
85111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
85211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
85311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
85411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
85511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%spfnCallback = addr\n%spUserData = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix);
85611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
85711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
85811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
85911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
86011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
86111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
86211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
86311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
86411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
86511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdescriptorbufferinfo(const VkDescriptorBufferInfo* pStruct, const char* prefix)
86611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
86711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
86811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
86911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
87011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
87111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sbuffer = addr\n%soffset = " PRINTF_SIZE_T_SPECIFIER "\n%srange = " PRINTF_SIZE_T_SPECIFIER "\n", prefix, prefix, (pStruct->offset), prefix, (pStruct->range));
87211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
87311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
87411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdescriptorimageinfo(const VkDescriptorImageInfo* pStruct, const char* prefix)
87511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
87611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
87711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
87811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
87911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
88011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssampler = addr\n%simageView = addr\n%simageLayout = %s\n", prefix, prefix, prefix, string_VkImageLayout(pStruct->imageLayout));
88111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
88211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
88311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdescriptorpoolcreateinfo(const VkDescriptorPoolCreateInfo* pStruct, const char* prefix)
88411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
88511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
88611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
88711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
88811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
88911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
89011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
89111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[2];
89211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
89311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
89411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
89511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
89611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
89711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
89811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
89911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
90011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
90111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pPoolSizes) {
90211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkdescriptorpoolsize(pStruct->pPoolSizes, extra_indent);
90311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
90411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = (char*)malloc(len);
90511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[1], len, " %spPoolSizes (addr)\n%s", prefix, tmpStr);
90611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
90711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
90811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = "";
90911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
91011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
91111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%smaxSets = %u\n%spoolSizeCount = %u\n%spPoolSizes = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->maxSets), prefix, (pStruct->poolSizeCount), prefix);
91211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
91311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
91411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
91511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
91611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
91711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
91811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
91911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
92011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
92111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdescriptorpoolsize(const VkDescriptorPoolSize* pStruct, const char* prefix)
92211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
92311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
92411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
92511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
92611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
92711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%stype = %s\n%sdescriptorCount = %u\n", prefix, string_VkDescriptorType(pStruct->type), prefix, (pStruct->descriptorCount));
92811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
92911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
93011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdescriptorsetallocateinfo(const VkDescriptorSetAllocateInfo* pStruct, const char* prefix)
93111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
93211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
93311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
93411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
93511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
93611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
93711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
93811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
93911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
94011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
94111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
94211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
94311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
94411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
94511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
94611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
94711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
94811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
94911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
95011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sdescriptorPool = addr\n%sdescriptorSetCount = %u\n%spSetLayouts = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix, (pStruct->descriptorSetCount), prefix);
95111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
95211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
95311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
95411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
95511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
95611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
95711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
95811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
95911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
96011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdescriptorsetlayoutbinding(const VkDescriptorSetLayoutBinding* pStruct, const char* prefix)
96111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
96211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
96311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
96411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
96511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
96611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sbinding = %u\n%sdescriptorType = %s\n%sdescriptorCount = %u\n%sstageFlags = %u\n%spImmutableSamplers = addr\n", prefix, (pStruct->binding), prefix, string_VkDescriptorType(pStruct->descriptorType), prefix, (pStruct->descriptorCount), prefix, (pStruct->stageFlags), prefix);
96711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
96811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
96911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdescriptorsetlayoutcreateinfo(const VkDescriptorSetLayoutCreateInfo* pStruct, const char* prefix)
97011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
97111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
97211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
97311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
97411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
97511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
97611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
97711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[2];
97811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
97911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
98011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
98111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
98211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
98311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
98411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
98511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
98611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
98711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pBindings) {
98811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkdescriptorsetlayoutbinding(pStruct->pBindings, extra_indent);
98911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
99011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = (char*)malloc(len);
99111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[1], len, " %spBindings (addr)\n%s", prefix, tmpStr);
99211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
99311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
99411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = "";
99511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
99611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
99711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sbindingCount = %u\n%spBindings = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->bindingCount), prefix);
99811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
99911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
100011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
100111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
100211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
100311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
100411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
100511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
100611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
100711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdevicecreateinfo(const VkDeviceCreateInfo* pStruct, const char* prefix)
100811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
100911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
101011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
101111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
101211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
101311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
101411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
101511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[3];
101611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
101711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
101811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
101911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
102011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
102111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
102211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
102311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
102411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
102511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pQueueCreateInfos) {
102611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkdevicequeuecreateinfo(pStruct->pQueueCreateInfos, extra_indent);
102711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
102811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = (char*)malloc(len);
102911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[1], len, " %spQueueCreateInfos (addr)\n%s", prefix, tmpStr);
103011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
103111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
103211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = "";
103311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pEnabledFeatures) {
103411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkphysicaldevicefeatures(pStruct->pEnabledFeatures, extra_indent);
103511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
103611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[2] = (char*)malloc(len);
103711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[2], len, " %spEnabledFeatures (addr)\n%s", prefix, tmpStr);
103811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
103911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
104011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[2] = "";
104111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
104211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
104311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%squeueCreateInfoCount = %u\n%spQueueCreateInfos = addr\n%senabledLayerCount = %u\n%sppEnabledLayerNames = %s\n%senabledExtensionCount = %u\n%sppEnabledExtensionNames = %s\n%spEnabledFeatures = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->queueCreateInfoCount), prefix, prefix, (pStruct->enabledLayerCount), prefix, (pStruct->ppEnabledLayerNames)[0], prefix, (pStruct->enabledExtensionCount), prefix, (pStruct->ppEnabledExtensionNames)[0], prefix);
104411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
104511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
104611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
104711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
104811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
104911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
105011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
105111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
105211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
105311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdevicequeuecreateinfo(const VkDeviceQueueCreateInfo* pStruct, const char* prefix)
105411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
105511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
105611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
105711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
105811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
105911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
106011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
106111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
106211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
106311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
106411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
106511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
106611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
106711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
106811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
106911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
107011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
107111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
107211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
107311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%squeueFamilyIndex = %u\n%squeueCount = %u\n%spQueuePriorities = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->queueFamilyIndex), prefix, (pStruct->queueCount), prefix);
107411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
107511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
107611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
107711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
107811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
107911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
108011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
108111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
108211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
108311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdispatchindirectcommand(const VkDispatchIndirectCommand* pStruct, const char* prefix)
108411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
108511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
108611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
108711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
108811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
108911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sx = %u\n%sy = %u\n%sz = %u\n", prefix, (pStruct->x), prefix, (pStruct->y), prefix, (pStruct->z));
109011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
109111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
109211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdisplaymodecreateinfokhr(const VkDisplayModeCreateInfoKHR* pStruct, const char* prefix)
109311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
109411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
109511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
109611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
109711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
109811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
109911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
110011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[2];
110111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
110211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
110311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
110411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
110511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
110611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
110711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
110811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
110911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
111011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkdisplaymodeparameterskhr(&pStruct->parameters, extra_indent);
111111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
111211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
111311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %sparameters (addr)\n%s", prefix, tmpStr);
111411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
111511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
111611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sparameters = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix);
111711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
111811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
111911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
112011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
112111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
112211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
112311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
112411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
112511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
112611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdisplaymodeparameterskhr(const VkDisplayModeParametersKHR* pStruct, const char* prefix)
112711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
112811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
112911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
113011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
113111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
113211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
113311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
113411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
113511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkextent2d(&pStruct->visibleRegion, extra_indent);
113611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
113711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[0] = (char*)malloc(len);
113811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[0], len, " %svisibleRegion (addr)\n%s", prefix, tmpStr);
113911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
114011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
114111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%svisibleRegion = addr\n%srefreshRate = %u\n", prefix, prefix, (pStruct->refreshRate));
114211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
114311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
114411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
114511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
114611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
114711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
114811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
114911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
115011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
115111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdisplaymodepropertieskhr(const VkDisplayModePropertiesKHR* pStruct, const char* prefix)
115211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
115311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
115411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
115511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
115611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
115711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
115811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
115911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
116011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkdisplaymodeparameterskhr(&pStruct->parameters, extra_indent);
116111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
116211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[0] = (char*)malloc(len);
116311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[0], len, " %sparameters (addr)\n%s", prefix, tmpStr);
116411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
116511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
116611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sdisplayMode = addr\n%sparameters = addr\n", prefix, prefix);
116711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
116811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
116911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
117011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
117111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
117211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
117311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
117411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
117511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
117611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdisplayplanecapabilitieskhr(const VkDisplayPlaneCapabilitiesKHR* pStruct, const char* prefix)
117711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
117811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
117911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
118011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
118111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
118211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
118311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
118411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[8];
118511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkoffset2d(&pStruct->minSrcPosition, extra_indent);
118611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
118711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[0] = (char*)malloc(len);
118811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[0], len, " %sminSrcPosition (addr)\n%s", prefix, tmpStr);
118911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkoffset2d(&pStruct->maxSrcPosition, extra_indent);
119011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
119111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
119211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %smaxSrcPosition (addr)\n%s", prefix, tmpStr);
119311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkextent2d(&pStruct->minSrcExtent, extra_indent);
119411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
119511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[2] = (char*)malloc(len);
119611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[2], len, " %sminSrcExtent (addr)\n%s", prefix, tmpStr);
119711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkextent2d(&pStruct->maxSrcExtent, extra_indent);
119811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
119911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[3] = (char*)malloc(len);
120011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[3], len, " %smaxSrcExtent (addr)\n%s", prefix, tmpStr);
120111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkoffset2d(&pStruct->minDstPosition, extra_indent);
120211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
120311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[4] = (char*)malloc(len);
120411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[4], len, " %sminDstPosition (addr)\n%s", prefix, tmpStr);
120511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkoffset2d(&pStruct->maxDstPosition, extra_indent);
120611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
120711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[5] = (char*)malloc(len);
120811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[5], len, " %smaxDstPosition (addr)\n%s", prefix, tmpStr);
120911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkextent2d(&pStruct->minDstExtent, extra_indent);
121011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
121111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[6] = (char*)malloc(len);
121211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[6], len, " %sminDstExtent (addr)\n%s", prefix, tmpStr);
121311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkextent2d(&pStruct->maxDstExtent, extra_indent);
121411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
121511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[7] = (char*)malloc(len);
121611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[7], len, " %smaxDstExtent (addr)\n%s", prefix, tmpStr);
121711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    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;
121811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
121911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssupportedAlpha = %u\n%sminSrcPosition = addr\n%smaxSrcPosition = addr\n%sminSrcExtent = addr\n%smaxSrcExtent = addr\n%sminDstPosition = addr\n%smaxDstPosition = addr\n%sminDstExtent = addr\n%smaxDstExtent = addr\n", prefix, (pStruct->supportedAlpha), prefix, prefix, prefix, prefix, prefix, prefix, prefix, prefix);
122011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 7; stp_index >= 0; stp_index--) {
122111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
122211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
122311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
122411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
122511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
122611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
122711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
122811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
122911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdisplayplanepropertieskhr(const VkDisplayPlanePropertiesKHR* pStruct, const char* prefix)
123011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
123111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
123211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
123311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
123411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
123511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%scurrentDisplay = addr\n%scurrentStackIndex = %u\n", prefix, prefix, (pStruct->currentStackIndex));
123611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
123711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
123811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdisplaypresentinfokhr(const VkDisplayPresentInfoKHR* pStruct, const char* prefix)
123911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
124011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
124111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
124211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
124311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
124411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
124511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
124611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[3];
124711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
124811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
124911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
125011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
125111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
125211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
125311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
125411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
125511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
125611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkrect2d(&pStruct->srcRect, extra_indent);
125711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
125811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
125911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %ssrcRect (addr)\n%s", prefix, tmpStr);
126011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkrect2d(&pStruct->dstRect, extra_indent);
126111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
126211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[2] = (char*)malloc(len);
126311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[2], len, " %sdstRect (addr)\n%s", prefix, tmpStr);
126411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
126511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
126611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%ssrcRect = addr\n%sdstRect = addr\n%spersistent = %s\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix, prefix, (pStruct->persistent) ? "TRUE" : "FALSE");
126711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
126811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
126911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
127011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
127111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
127211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
127311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
127411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
127511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
127611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdisplaypropertieskhr(const VkDisplayPropertiesKHR* pStruct, const char* prefix)
127711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
127811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
127911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
128011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
128111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
128211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
128311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
128411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[2];
128511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkextent2d(&pStruct->physicalDimensions, extra_indent);
128611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
128711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[0] = (char*)malloc(len);
128811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[0], len, " %sphysicalDimensions (addr)\n%s", prefix, tmpStr);
128911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkextent2d(&pStruct->physicalResolution, extra_indent);
129011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
129111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
129211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %sphysicalResolution (addr)\n%s", prefix, tmpStr);
129311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
129411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
129511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sdisplay = addr\n%sdisplayName = addr\n%sphysicalDimensions = addr\n%sphysicalResolution = addr\n%ssupportedTransforms = %u\n%splaneReorderPossible = %s\n%spersistentContent = %s\n", prefix, prefix, prefix, prefix, prefix, (pStruct->supportedTransforms), prefix, (pStruct->planeReorderPossible) ? "TRUE" : "FALSE", prefix, (pStruct->persistentContent) ? "TRUE" : "FALSE");
129611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
129711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
129811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
129911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
130011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
130111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
130211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
130311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
130411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
130511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdisplaysurfacecreateinfokhr(const VkDisplaySurfaceCreateInfoKHR* pStruct, const char* prefix)
130611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
130711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
130811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
130911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
131011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
131111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
131211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
131311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[2];
131411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
131511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
131611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
131711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
131811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
131911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
132011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
132111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
132211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
132311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkextent2d(&pStruct->imageExtent, extra_indent);
132411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
132511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
132611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %simageExtent (addr)\n%s", prefix, tmpStr);
132711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
132811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
132911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sdisplayMode = addr\n%splaneIndex = %u\n%splaneStackIndex = %u\n%stransform = %s\n%sglobalAlpha = %f\n%salphaMode = %s\n%simageExtent = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix, (pStruct->planeIndex), prefix, (pStruct->planeStackIndex), prefix, string_VkSurfaceTransformFlagBitsKHR(pStruct->transform), prefix, (pStruct->globalAlpha), prefix, string_VkDisplayPlaneAlphaFlagBitsKHR(pStruct->alphaMode), prefix);
133011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
133111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
133211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
133311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
133411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
133511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
133611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
133711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
133811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
133911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdrawindexedindirectcommand(const VkDrawIndexedIndirectCommand* pStruct, const char* prefix)
134011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
134111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
134211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
134311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
134411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
134511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    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));
134611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
134711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
134811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkdrawindirectcommand(const VkDrawIndirectCommand* pStruct, const char* prefix)
134911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
135011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
135111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
135211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
135311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
135411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    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));
135511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
135611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
135711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkeventcreateinfo(const VkEventCreateInfo* pStruct, const char* prefix)
135811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
135911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
136011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
136111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
136211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
136311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
136411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
136511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
136611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
136711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
136811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
136911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
137011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
137111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
137211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
137311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
137411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
137511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
137611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
137711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags));
137811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
137911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
138011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
138111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
138211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
138311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
138411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
138511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
138611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
138711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkextensionproperties(const VkExtensionProperties* pStruct, const char* prefix)
138811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
138911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
139011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
139111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
139211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
139311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sextensionName = %s\n%sspecVersion = %u\n", prefix, (pStruct->extensionName), prefix, (pStruct->specVersion));
139411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
139511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
139611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkextent2d(const VkExtent2D* pStruct, const char* prefix)
139711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
139811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
139911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
140011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
140111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
140211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%swidth = %u\n%sheight = %u\n", prefix, (pStruct->width), prefix, (pStruct->height));
140311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
140411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
140511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkextent3d(const VkExtent3D* pStruct, const char* prefix)
140611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
140711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
140811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
140911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
141011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
141111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%swidth = %u\n%sheight = %u\n%sdepth = %u\n", prefix, (pStruct->width), prefix, (pStruct->height), prefix, (pStruct->depth));
141211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
141311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
141411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkfencecreateinfo(const VkFenceCreateInfo* pStruct, const char* prefix)
141511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
141611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
141711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
141811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
141911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
142011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
142111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
142211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
142311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
142411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
142511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
142611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
142711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
142811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
142911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
143011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
143111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
143211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
143311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
143411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags));
143511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
143611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
143711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
143811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
143911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
144011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
144111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
144211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
144311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
144411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkformatproperties(const VkFormatProperties* pStruct, const char* prefix)
144511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
144611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
144711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
144811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
144911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
145011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%slinearTilingFeatures = %u\n%soptimalTilingFeatures = %u\n%sbufferFeatures = %u\n", prefix, (pStruct->linearTilingFeatures), prefix, (pStruct->optimalTilingFeatures), prefix, (pStruct->bufferFeatures));
145111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
145211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
145311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkframebuffercreateinfo(const VkFramebufferCreateInfo* pStruct, const char* prefix)
145411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
145511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
145611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
145711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
145811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
145911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
146011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
146111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
146211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
146311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
146411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
146511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
146611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
146711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
146811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
146911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
147011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
147111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
147211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
147311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%srenderPass = addr\n%sattachmentCount = %u\n%spAttachments = addr\n%swidth = %u\n%sheight = %u\n%slayers = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix, (pStruct->attachmentCount), prefix, prefix, (pStruct->width), prefix, (pStruct->height), prefix, (pStruct->layers));
147411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
147511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
147611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
147711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
147811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
147911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
148011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
148111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
148211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
148311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkgraphicspipelinecreateinfo(const VkGraphicsPipelineCreateInfo* pStruct, const char* prefix)
148411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
148511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
148611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
148711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
148811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
148911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
149011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
149111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[11];
149211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
149311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
149411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
149511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
149611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
149711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
149811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
149911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
150011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
150111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pStages) {
150211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkpipelineshaderstagecreateinfo(pStruct->pStages, extra_indent);
150311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
150411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = (char*)malloc(len);
150511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[1], len, " %spStages (addr)\n%s", prefix, tmpStr);
150611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
150711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
150811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = "";
150911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pVertexInputState) {
151011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkpipelinevertexinputstatecreateinfo(pStruct->pVertexInputState, extra_indent);
151111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
151211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[2] = (char*)malloc(len);
151311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[2], len, " %spVertexInputState (addr)\n%s", prefix, tmpStr);
151411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
151511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
151611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[2] = "";
151711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pInputAssemblyState) {
151811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkpipelineinputassemblystatecreateinfo(pStruct->pInputAssemblyState, extra_indent);
151911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
152011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[3] = (char*)malloc(len);
152111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[3], len, " %spInputAssemblyState (addr)\n%s", prefix, tmpStr);
152211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
152311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
152411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[3] = "";
152511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pTessellationState) {
152611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkpipelinetessellationstatecreateinfo(pStruct->pTessellationState, extra_indent);
152711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
152811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[4] = (char*)malloc(len);
152911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[4], len, " %spTessellationState (addr)\n%s", prefix, tmpStr);
153011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
153111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
153211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[4] = "";
153311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pViewportState) {
153411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkpipelineviewportstatecreateinfo(pStruct->pViewportState, extra_indent);
153511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
153611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[5] = (char*)malloc(len);
153711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[5], len, " %spViewportState (addr)\n%s", prefix, tmpStr);
153811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
153911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
154011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[5] = "";
154111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pRasterizationState) {
154211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkpipelinerasterizationstatecreateinfo(pStruct->pRasterizationState, extra_indent);
154311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
154411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[6] = (char*)malloc(len);
154511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[6], len, " %spRasterizationState (addr)\n%s", prefix, tmpStr);
154611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
154711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
154811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[6] = "";
154911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pMultisampleState) {
155011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkpipelinemultisamplestatecreateinfo(pStruct->pMultisampleState, extra_indent);
155111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
155211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[7] = (char*)malloc(len);
155311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[7], len, " %spMultisampleState (addr)\n%s", prefix, tmpStr);
155411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
155511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
155611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[7] = "";
155711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pDepthStencilState) {
155811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkpipelinedepthstencilstatecreateinfo(pStruct->pDepthStencilState, extra_indent);
155911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
156011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[8] = (char*)malloc(len);
156111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[8], len, " %spDepthStencilState (addr)\n%s", prefix, tmpStr);
156211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
156311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
156411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[8] = "";
156511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pColorBlendState) {
156611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkpipelinecolorblendstatecreateinfo(pStruct->pColorBlendState, extra_indent);
156711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
156811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[9] = (char*)malloc(len);
156911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[9], len, " %spColorBlendState (addr)\n%s", prefix, tmpStr);
157011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
157111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
157211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[9] = "";
157311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pDynamicState) {
157411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkpipelinedynamicstatecreateinfo(pStruct->pDynamicState, extra_indent);
157511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
157611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[10] = (char*)malloc(len);
157711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[10], len, " %spDynamicState (addr)\n%s", prefix, tmpStr);
157811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
157911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
158011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[10] = "";
158111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    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;
158211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
158311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sstageCount = %u\n%spStages = addr\n%spVertexInputState = addr\n%spInputAssemblyState = addr\n%spTessellationState = addr\n%spViewportState = addr\n%spRasterizationState = addr\n%spMultisampleState = addr\n%spDepthStencilState = addr\n%spColorBlendState = addr\n%spDynamicState = addr\n%slayout = addr\n%srenderPass = addr\n%ssubpass = %u\n%sbasePipelineHandle = addr\n%sbasePipelineIndex = %i\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->stageCount), prefix, prefix, prefix, prefix, prefix, prefix, prefix, prefix, prefix, prefix, prefix, prefix, prefix, (pStruct->subpass), prefix, prefix, (pStruct->basePipelineIndex));
158411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 10; stp_index >= 0; stp_index--) {
158511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
158611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
158711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
158811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
158911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
159011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
159111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
159211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
159311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkimageblit(const VkImageBlit* pStruct, const char* prefix)
159411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
159511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
159611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
159711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
159811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
159911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
160011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
160111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[4];
160211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkimagesubresourcelayers(&pStruct->srcSubresource, extra_indent);
160311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
160411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[0] = (char*)malloc(len);
160511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[0], len, " %ssrcSubresource (addr)\n%s", prefix, tmpStr);
160611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkoffset3d(&pStruct->srcOffsets[0], extra_indent);
160711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
160811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
160911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %ssrcOffsets[0] (addr)\n%s", prefix, tmpStr);
161011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkimagesubresourcelayers(&pStruct->dstSubresource, extra_indent);
161111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
161211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[2] = (char*)malloc(len);
161311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[2], len, " %sdstSubresource (addr)\n%s", prefix, tmpStr);
161411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkoffset3d(&pStruct->dstOffsets[0], extra_indent);
161511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
161611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[3] = (char*)malloc(len);
161711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[3], len, " %sdstOffsets[0] (addr)\n%s", prefix, tmpStr);
161811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + strlen(stp_strs[3]) + sizeof(char)*1024;
161911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
162011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssrcSubresource = addr\n%ssrcOffsets = addr\n%sdstSubresource = addr\n%sdstOffsets = addr\n", prefix, prefix, prefix, prefix);
162111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 3; stp_index >= 0; stp_index--) {
162211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
162311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
162411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
162511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
162611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
162711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
162811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
162911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
163011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkimagecopy(const VkImageCopy* pStruct, const char* prefix)
163111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
163211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
163311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
163411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
163511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
163611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
163711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
163811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[5];
163911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkimagesubresourcelayers(&pStruct->srcSubresource, extra_indent);
164011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
164111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[0] = (char*)malloc(len);
164211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[0], len, " %ssrcSubresource (addr)\n%s", prefix, tmpStr);
164311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkoffset3d(&pStruct->srcOffset, extra_indent);
164411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
164511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
164611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %ssrcOffset (addr)\n%s", prefix, tmpStr);
164711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkimagesubresourcelayers(&pStruct->dstSubresource, extra_indent);
164811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
164911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[2] = (char*)malloc(len);
165011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[2], len, " %sdstSubresource (addr)\n%s", prefix, tmpStr);
165111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkoffset3d(&pStruct->dstOffset, extra_indent);
165211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
165311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[3] = (char*)malloc(len);
165411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[3], len, " %sdstOffset (addr)\n%s", prefix, tmpStr);
165511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkextent3d(&pStruct->extent, extra_indent);
165611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
165711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[4] = (char*)malloc(len);
165811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[4], len, " %sextent (addr)\n%s", prefix, tmpStr);
165911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + strlen(stp_strs[3]) + strlen(stp_strs[4]) + sizeof(char)*1024;
166011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
166111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssrcSubresource = addr\n%ssrcOffset = addr\n%sdstSubresource = addr\n%sdstOffset = addr\n%sextent = addr\n", prefix, prefix, prefix, prefix, prefix);
166211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 4; stp_index >= 0; stp_index--) {
166311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
166411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
166511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
166611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
166711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
166811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
166911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
167011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
167111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkimagecreateinfo(const VkImageCreateInfo* pStruct, const char* prefix)
167211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
167311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
167411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
167511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
167611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
167711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
167811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
167911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[2];
168011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
168111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
168211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
168311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
168411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
168511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
168611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
168711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
168811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
168911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkextent3d(&pStruct->extent, extra_indent);
169011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
169111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
169211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %sextent (addr)\n%s", prefix, tmpStr);
169311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
169411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
169511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%simageType = %s\n%sformat = %s\n%sextent = addr\n%smipLevels = %u\n%sarrayLayers = %u\n%ssamples = %s\n%stiling = %s\n%susage = %u\n%ssharingMode = %s\n%squeueFamilyIndexCount = %u\n%spQueueFamilyIndices = addr\n%sinitialLayout = %s\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, string_VkImageType(pStruct->imageType), prefix, string_VkFormat(pStruct->format), prefix, prefix, (pStruct->mipLevels), prefix, (pStruct->arrayLayers), prefix, string_VkSampleCountFlagBits(pStruct->samples), prefix, string_VkImageTiling(pStruct->tiling), prefix, (pStruct->usage), prefix, string_VkSharingMode(pStruct->sharingMode), prefix, (pStruct->queueFamilyIndexCount), prefix, prefix, string_VkImageLayout(pStruct->initialLayout));
169611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
169711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
169811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
169911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
170011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
170111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
170211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
170311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
170411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
170511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkimageformatproperties(const VkImageFormatProperties* pStruct, const char* prefix)
170611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
170711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
170811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
170911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
171011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
171111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
171211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
171311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
171411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkextent3d(&pStruct->maxExtent, extra_indent);
171511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
171611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[0] = (char*)malloc(len);
171711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[0], len, " %smaxExtent (addr)\n%s", prefix, tmpStr);
171811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
171911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
172011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%smaxExtent = addr\n%smaxMipLevels = %u\n%smaxArrayLayers = %u\n%ssampleCounts = %u\n%smaxResourceSize = " PRINTF_SIZE_T_SPECIFIER "\n", prefix, prefix, (pStruct->maxMipLevels), prefix, (pStruct->maxArrayLayers), prefix, (pStruct->sampleCounts), prefix, (pStruct->maxResourceSize));
172111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
172211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
172311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
172411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
172511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
172611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
172711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
172811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
172911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
173011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkimagememorybarrier(const VkImageMemoryBarrier* pStruct, const char* prefix)
173111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
173211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
173311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
173411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
173511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
173611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
173711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
173811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[2];
173911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
174011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
174111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
174211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
174311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
174411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
174511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
174611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
174711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
174811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkimagesubresourcerange(&pStruct->subresourceRange, extra_indent);
174911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
175011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
175111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %ssubresourceRange (addr)\n%s", prefix, tmpStr);
175211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
175311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
175411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%ssrcAccessMask = %u\n%sdstAccessMask = %u\n%soldLayout = %s\n%snewLayout = %s\n%ssrcQueueFamilyIndex = %u\n%sdstQueueFamilyIndex = %u\n%simage = addr\n%ssubresourceRange = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->srcAccessMask), prefix, (pStruct->dstAccessMask), prefix, string_VkImageLayout(pStruct->oldLayout), prefix, string_VkImageLayout(pStruct->newLayout), prefix, (pStruct->srcQueueFamilyIndex), prefix, (pStruct->dstQueueFamilyIndex), prefix, prefix);
175511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
175611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
175711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
175811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
175911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
176011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
176111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
176211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
176311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
176411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkimageresolve(const VkImageResolve* pStruct, const char* prefix)
176511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
176611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
176711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
176811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
176911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
177011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
177111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
177211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[5];
177311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkimagesubresourcelayers(&pStruct->srcSubresource, extra_indent);
177411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
177511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[0] = (char*)malloc(len);
177611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[0], len, " %ssrcSubresource (addr)\n%s", prefix, tmpStr);
177711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkoffset3d(&pStruct->srcOffset, extra_indent);
177811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
177911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
178011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %ssrcOffset (addr)\n%s", prefix, tmpStr);
178111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkimagesubresourcelayers(&pStruct->dstSubresource, extra_indent);
178211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
178311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[2] = (char*)malloc(len);
178411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[2], len, " %sdstSubresource (addr)\n%s", prefix, tmpStr);
178511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkoffset3d(&pStruct->dstOffset, extra_indent);
178611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
178711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[3] = (char*)malloc(len);
178811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[3], len, " %sdstOffset (addr)\n%s", prefix, tmpStr);
178911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkextent3d(&pStruct->extent, extra_indent);
179011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
179111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[4] = (char*)malloc(len);
179211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[4], len, " %sextent (addr)\n%s", prefix, tmpStr);
179311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + strlen(stp_strs[3]) + strlen(stp_strs[4]) + sizeof(char)*1024;
179411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
179511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssrcSubresource = addr\n%ssrcOffset = addr\n%sdstSubresource = addr\n%sdstOffset = addr\n%sextent = addr\n", prefix, prefix, prefix, prefix, prefix);
179611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 4; stp_index >= 0; stp_index--) {
179711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
179811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
179911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
180011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
180111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
180211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
180311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
180411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
180511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkimagesubresource(const VkImageSubresource* pStruct, const char* prefix)
180611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
180711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
180811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
180911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
181011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
181111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%saspectMask = %u\n%smipLevel = %u\n%sarrayLayer = %u\n", prefix, (pStruct->aspectMask), prefix, (pStruct->mipLevel), prefix, (pStruct->arrayLayer));
181211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
181311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
181411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkimagesubresourcelayers(const VkImageSubresourceLayers* pStruct, const char* prefix)
181511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
181611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
181711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
181811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
181911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
182011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    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));
182111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
182211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
182311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkimagesubresourcerange(const VkImageSubresourceRange* pStruct, const char* prefix)
182411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
182511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
182611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
182711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
182811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
182911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    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));
183011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
183111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
183211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkimageviewcreateinfo(const VkImageViewCreateInfo* pStruct, const char* prefix)
183311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
183411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
183511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
183611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
183711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
183811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
183911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
184011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[3];
184111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
184211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
184311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
184411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
184511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
184611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
184711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
184811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
184911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
185011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkcomponentmapping(&pStruct->components, extra_indent);
185111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
185211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
185311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %scomponents (addr)\n%s", prefix, tmpStr);
185411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkimagesubresourcerange(&pStruct->subresourceRange, extra_indent);
185511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
185611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[2] = (char*)malloc(len);
185711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[2], len, " %ssubresourceRange (addr)\n%s", prefix, tmpStr);
185811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
185911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
186011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%simage = addr\n%sviewType = %s\n%sformat = %s\n%scomponents = addr\n%ssubresourceRange = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix, string_VkImageViewType(pStruct->viewType), prefix, string_VkFormat(pStruct->format), prefix, prefix);
186111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
186211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
186311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
186411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
186511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
186611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
186711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
186811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
186911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
187011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkinstancecreateinfo(const VkInstanceCreateInfo* pStruct, const char* prefix)
187111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
187211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
187311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
187411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
187511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
187611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
187711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
187811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[2];
187911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
188011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
188111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
188211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
188311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
188411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
188511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
188611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
188711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
188811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pApplicationInfo) {
188911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkapplicationinfo(pStruct->pApplicationInfo, extra_indent);
189011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
189111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = (char*)malloc(len);
189211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[1], len, " %spApplicationInfo (addr)\n%s", prefix, tmpStr);
189311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
189411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
189511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = "";
189611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
189711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
189811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%spApplicationInfo = addr\n%senabledLayerCount = %u\n%sppEnabledLayerNames = %s\n%senabledExtensionCount = %u\n%sppEnabledExtensionNames = %s\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix, (pStruct->enabledLayerCount), prefix, (pStruct->ppEnabledLayerNames)[0], prefix, (pStruct->enabledExtensionCount), prefix, (pStruct->ppEnabledExtensionNames)[0]);
189911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
190011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
190111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
190211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
190311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
190411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
190511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
190611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
190711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
190811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vklayerproperties(const VkLayerProperties* pStruct, const char* prefix)
190911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
191011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
191111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
191211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
191311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
191411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    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));
191511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
191611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
191711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkmappedmemoryrange(const VkMappedMemoryRange* pStruct, const char* prefix)
191811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
191911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
192011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
192111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
192211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
192311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
192411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
192511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
192611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
192711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
192811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
192911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
193011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
193111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
193211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
193311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
193411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
193511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
193611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
193711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%smemory = addr\n%soffset = " PRINTF_SIZE_T_SPECIFIER "\n%ssize = " PRINTF_SIZE_T_SPECIFIER "\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix, (pStruct->offset), prefix, (pStruct->size));
193811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
193911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
194011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
194111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
194211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
194311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
194411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
194511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
194611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
194711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkmemoryallocateinfo(const VkMemoryAllocateInfo* pStruct, const char* prefix)
194811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
194911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
195011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
195111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
195211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
195311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
195411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
195511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
195611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
195711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
195811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
195911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
196011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
196111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
196211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
196311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
196411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
196511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
196611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
196711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sallocationSize = " PRINTF_SIZE_T_SPECIFIER "\n%smemoryTypeIndex = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->allocationSize), prefix, (pStruct->memoryTypeIndex));
196811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
196911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
197011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
197111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
197211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
197311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
197411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
197511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
197611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
197711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkmemorybarrier(const VkMemoryBarrier* pStruct, const char* prefix)
197811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
197911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
198011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
198111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
198211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
198311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
198411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
198511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
198611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
198711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
198811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
198911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
199011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
199111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
199211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
199311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
199411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
199511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
199611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
199711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%ssrcAccessMask = %u\n%sdstAccessMask = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->srcAccessMask), prefix, (pStruct->dstAccessMask));
199811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
199911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
200011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
200111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
200211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
200311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
200411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
200511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
200611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
200711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkmemoryheap(const VkMemoryHeap* pStruct, const char* prefix)
200811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
200911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
201011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
201111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
201211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
201311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssize = " PRINTF_SIZE_T_SPECIFIER "\n%sflags = %u\n", prefix, (pStruct->size), prefix, (pStruct->flags));
201411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
201511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
201611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkmemoryrequirements(const VkMemoryRequirements* pStruct, const char* prefix)
201711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
201811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
201911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
202011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
202111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
202211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    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));
202311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
202411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
202511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkmemorytype(const VkMemoryType* pStruct, const char* prefix)
202611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
202711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
202811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
202911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
203011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
203111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%spropertyFlags = %u\n%sheapIndex = %u\n", prefix, (pStruct->propertyFlags), prefix, (pStruct->heapIndex));
203211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
203311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
203411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkmirsurfacecreateinfokhr(const VkMirSurfaceCreateInfoKHR* pStruct, const char* prefix)
203511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
203611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
203711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
203811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
203911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
204011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
204111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
204211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
204311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
204411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
204511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
204611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
204711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
204811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
204911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
205011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
205111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
205211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
205311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
205411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sconnection = addr\n%smirSurface = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix);
205511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
205611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
205711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
205811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
205911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
206011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
206111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
206211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
206311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
206411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkoffset2d(const VkOffset2D* pStruct, const char* prefix)
206511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
206611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
206711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
206811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
206911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
207011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sx = %i\n%sy = %i\n", prefix, (pStruct->x), prefix, (pStruct->y));
207111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
207211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
207311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkoffset3d(const VkOffset3D* pStruct, const char* prefix)
207411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
207511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
207611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
207711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
207811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
207911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sx = %i\n%sy = %i\n%sz = %i\n", prefix, (pStruct->x), prefix, (pStruct->y), prefix, (pStruct->z));
208011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
208111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
208211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkphysicaldevicefeatures(const VkPhysicalDeviceFeatures* pStruct, const char* prefix)
208311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
208411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
208511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
208611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
208711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
208811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    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");
208911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
209011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
209111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkphysicaldevicelimits(const VkPhysicalDeviceLimits* pStruct, const char* prefix)
209211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
209311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
209411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
209511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
209611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
209711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%smaxImageDimension1D = %u\n%smaxImageDimension2D = %u\n%smaxImageDimension3D = %u\n%smaxImageDimensionCube = %u\n%smaxImageArrayLayers = %u\n%smaxTexelBufferElements = %u\n%smaxUniformBufferRange = %u\n%smaxStorageBufferRange = %u\n%smaxPushConstantsSize = %u\n%smaxMemoryAllocationCount = %u\n%smaxSamplerAllocationCount = %u\n%sbufferImageGranularity = " PRINTF_SIZE_T_SPECIFIER "\n%ssparseAddressSpaceSize = " PRINTF_SIZE_T_SPECIFIER "\n%smaxBoundDescriptorSets = %u\n%smaxPerStageDescriptorSamplers = %u\n%smaxPerStageDescriptorUniformBuffers = %u\n%smaxPerStageDescriptorStorageBuffers = %u\n%smaxPerStageDescriptorSampledImages = %u\n%smaxPerStageDescriptorStorageImages = %u\n%smaxPerStageDescriptorInputAttachments = %u\n%smaxPerStageResources = %u\n%smaxDescriptorSetSamplers = %u\n%smaxDescriptorSetUniformBuffers = %u\n%smaxDescriptorSetUniformBuffersDynamic = %u\n%smaxDescriptorSetStorageBuffers = %u\n%smaxDescriptorSetStorageBuffersDynamic = %u\n%smaxDescriptorSetSampledImages = %u\n%smaxDescriptorSetStorageImages = %u\n%smaxDescriptorSetInputAttachments = %u\n%smaxVertexInputAttributes = %u\n%smaxVertexInputBindings = %u\n%smaxVertexInputAttributeOffset = %u\n%smaxVertexInputBindingStride = %u\n%smaxVertexOutputComponents = %u\n%smaxTessellationGenerationLevel = %u\n%smaxTessellationPatchSize = %u\n%smaxTessellationControlPerVertexInputComponents = %u\n%smaxTessellationControlPerVertexOutputComponents = %u\n%smaxTessellationControlPerPatchOutputComponents = %u\n%smaxTessellationControlTotalOutputComponents = %u\n%smaxTessellationEvaluationInputComponents = %u\n%smaxTessellationEvaluationOutputComponents = %u\n%smaxGeometryShaderInvocations = %u\n%smaxGeometryInputComponents = %u\n%smaxGeometryOutputComponents = %u\n%smaxGeometryOutputVertices = %u\n%smaxGeometryTotalOutputComponents = %u\n%smaxFragmentInputComponents = %u\n%smaxFragmentOutputAttachments = %u\n%smaxFragmentDualSrcAttachments = %u\n%smaxFragmentCombinedOutputResources = %u\n%smaxComputeSharedMemorySize = %u\n%smaxComputeWorkGroupCount = addr\n%smaxComputeWorkGroupInvocations = %u\n%smaxComputeWorkGroupSize = addr\n%ssubPixelPrecisionBits = %u\n%ssubTexelPrecisionBits = %u\n%smipmapPrecisionBits = %u\n%smaxDrawIndexedIndexValue = %u\n%smaxDrawIndirectCount = %u\n%smaxSamplerLodBias = %f\n%smaxSamplerAnisotropy = %f\n%smaxViewports = %u\n%smaxViewportDimensions = addr\n%sviewportBoundsRange = addr\n%sviewportSubPixelBits = %u\n%sminMemoryMapAlignment = " PRINTF_SIZE_T_SPECIFIER "\n%sminTexelBufferOffsetAlignment = " PRINTF_SIZE_T_SPECIFIER "\n%sminUniformBufferOffsetAlignment = " PRINTF_SIZE_T_SPECIFIER "\n%sminStorageBufferOffsetAlignment = " PRINTF_SIZE_T_SPECIFIER "\n%sminTexelOffset = %i\n%smaxTexelOffset = %u\n%sminTexelGatherOffset = %i\n%smaxTexelGatherOffset = %u\n%sminInterpolationOffset = %f\n%smaxInterpolationOffset = %f\n%ssubPixelInterpolationOffsetBits = %u\n%smaxFramebufferWidth = %u\n%smaxFramebufferHeight = %u\n%smaxFramebufferLayers = %u\n%sframebufferColorSampleCounts = %u\n%sframebufferDepthSampleCounts = %u\n%sframebufferStencilSampleCounts = %u\n%sframebufferNoAttachmentsSampleCounts = %u\n%smaxColorAttachments = %u\n%ssampledImageColorSampleCounts = %u\n%ssampledImageIntegerSampleCounts = %u\n%ssampledImageDepthSampleCounts = %u\n%ssampledImageStencilSampleCounts = %u\n%sstorageImageSampleCounts = %u\n%smaxSampleMaskWords = %u\n%stimestampComputeAndGraphics = %s\n%stimestampPeriod = %f\n%smaxClipDistances = %u\n%smaxCullDistances = %u\n%smaxCombinedClipAndCullDistances = %u\n%sdiscreteQueuePriorities = %u\n%spointSizeRange = addr\n%slineWidthRange = addr\n%spointSizeGranularity = %f\n%slineWidthGranularity = %f\n%sstrictLines = %s\n%sstandardSampleLocations = %s\n%soptimalBufferCopyOffsetAlignment = " PRINTF_SIZE_T_SPECIFIER "\n%soptimalBufferCopyRowPitchAlignment = " PRINTF_SIZE_T_SPECIFIER "\n%snonCoherentAtomSize = " PRINTF_SIZE_T_SPECIFIER "\n", prefix, (pStruct->maxImageDimension1D), prefix, (pStruct->maxImageDimension2D), prefix, (pStruct->maxImageDimension3D), prefix, (pStruct->maxImageDimensionCube), prefix, (pStruct->maxImageArrayLayers), prefix, (pStruct->maxTexelBufferElements), prefix, (pStruct->maxUniformBufferRange), prefix, (pStruct->maxStorageBufferRange), prefix, (pStruct->maxPushConstantsSize), prefix, (pStruct->maxMemoryAllocationCount), prefix, (pStruct->maxSamplerAllocationCount), prefix, (pStruct->bufferImageGranularity), prefix, (pStruct->sparseAddressSpaceSize), prefix, (pStruct->maxBoundDescriptorSets), prefix, (pStruct->maxPerStageDescriptorSamplers), prefix, (pStruct->maxPerStageDescriptorUniformBuffers), prefix, (pStruct->maxPerStageDescriptorStorageBuffers), prefix, (pStruct->maxPerStageDescriptorSampledImages), prefix, (pStruct->maxPerStageDescriptorStorageImages), prefix, (pStruct->maxPerStageDescriptorInputAttachments), prefix, (pStruct->maxPerStageResources), prefix, (pStruct->maxDescriptorSetSamplers), prefix, (pStruct->maxDescriptorSetUniformBuffers), prefix, (pStruct->maxDescriptorSetUniformBuffersDynamic), prefix, (pStruct->maxDescriptorSetStorageBuffers), prefix, (pStruct->maxDescriptorSetStorageBuffersDynamic), prefix, (pStruct->maxDescriptorSetSampledImages), prefix, (pStruct->maxDescriptorSetStorageImages), prefix, (pStruct->maxDescriptorSetInputAttachments), prefix, (pStruct->maxVertexInputAttributes), prefix, (pStruct->maxVertexInputBindings), prefix, (pStruct->maxVertexInputAttributeOffset), prefix, (pStruct->maxVertexInputBindingStride), prefix, (pStruct->maxVertexOutputComponents), prefix, (pStruct->maxTessellationGenerationLevel), prefix, (pStruct->maxTessellationPatchSize), prefix, (pStruct->maxTessellationControlPerVertexInputComponents), prefix, (pStruct->maxTessellationControlPerVertexOutputComponents), prefix, (pStruct->maxTessellationControlPerPatchOutputComponents), prefix, (pStruct->maxTessellationControlTotalOutputComponents), prefix, (pStruct->maxTessellationEvaluationInputComponents), prefix, (pStruct->maxTessellationEvaluationOutputComponents), prefix, (pStruct->maxGeometryShaderInvocations), prefix, (pStruct->maxGeometryInputComponents), prefix, (pStruct->maxGeometryOutputComponents), prefix, (pStruct->maxGeometryOutputVertices), prefix, (pStruct->maxGeometryTotalOutputComponents), prefix, (pStruct->maxFragmentInputComponents), prefix, (pStruct->maxFragmentOutputAttachments), prefix, (pStruct->maxFragmentDualSrcAttachments), prefix, (pStruct->maxFragmentCombinedOutputResources), prefix, (pStruct->maxComputeSharedMemorySize), prefix, prefix, (pStruct->maxComputeWorkGroupInvocations), prefix, prefix, (pStruct->subPixelPrecisionBits), prefix, (pStruct->subTexelPrecisionBits), prefix, (pStruct->mipmapPrecisionBits), prefix, (pStruct->maxDrawIndexedIndexValue), prefix, (pStruct->maxDrawIndirectCount), prefix, (pStruct->maxSamplerLodBias), prefix, (pStruct->maxSamplerAnisotropy), prefix, (pStruct->maxViewports), prefix, prefix, prefix, (pStruct->viewportSubPixelBits), prefix, (pStruct->minMemoryMapAlignment), prefix, (pStruct->minTexelBufferOffsetAlignment), prefix, (pStruct->minUniformBufferOffsetAlignment), prefix, (pStruct->minStorageBufferOffsetAlignment), prefix, (pStruct->minTexelOffset), prefix, (pStruct->maxTexelOffset), prefix, (pStruct->minTexelGatherOffset), prefix, (pStruct->maxTexelGatherOffset), prefix, (pStruct->minInterpolationOffset), prefix, (pStruct->maxInterpolationOffset), prefix, (pStruct->subPixelInterpolationOffsetBits), prefix, (pStruct->maxFramebufferWidth), prefix, (pStruct->maxFramebufferHeight), prefix, (pStruct->maxFramebufferLayers), prefix, (pStruct->framebufferColorSampleCounts), prefix, (pStruct->framebufferDepthSampleCounts), prefix, (pStruct->framebufferStencilSampleCounts), prefix, (pStruct->framebufferNoAttachmentsSampleCounts), prefix, (pStruct->maxColorAttachments), prefix, (pStruct->sampledImageColorSampleCounts), prefix, (pStruct->sampledImageIntegerSampleCounts), prefix, (pStruct->sampledImageDepthSampleCounts), prefix, (pStruct->sampledImageStencilSampleCounts), prefix, (pStruct->storageImageSampleCounts), prefix, (pStruct->maxSampleMaskWords), prefix, (pStruct->timestampComputeAndGraphics) ? "TRUE" : "FALSE", prefix, (pStruct->timestampPeriod), prefix, (pStruct->maxClipDistances), prefix, (pStruct->maxCullDistances), prefix, (pStruct->maxCombinedClipAndCullDistances), prefix, (pStruct->discreteQueuePriorities), prefix, prefix, prefix, (pStruct->pointSizeGranularity), prefix, (pStruct->lineWidthGranularity), prefix, (pStruct->strictLines) ? "TRUE" : "FALSE", prefix, (pStruct->standardSampleLocations) ? "TRUE" : "FALSE", prefix, (pStruct->optimalBufferCopyOffsetAlignment), prefix, (pStruct->optimalBufferCopyRowPitchAlignment), prefix, (pStruct->nonCoherentAtomSize));
209811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
209911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
210011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkphysicaldevicememoryproperties(const VkPhysicalDeviceMemoryProperties* pStruct, const char* prefix)
210111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
210211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
210311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
210411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
210511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
210611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
210711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
210811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[2];
210911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkmemorytype(&pStruct->memoryTypes[0], extra_indent);
211011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
211111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[0] = (char*)malloc(len);
211211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[0], len, " %smemoryTypes[0] (addr)\n%s", prefix, tmpStr);
211311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkmemoryheap(&pStruct->memoryHeaps[0], extra_indent);
211411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
211511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
211611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %smemoryHeaps[0] (addr)\n%s", prefix, tmpStr);
211711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
211811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
211911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%smemoryTypeCount = %u\n%smemoryTypes = addr\n%smemoryHeapCount = %u\n%smemoryHeaps = addr\n", prefix, (pStruct->memoryTypeCount), prefix, prefix, (pStruct->memoryHeapCount), prefix);
212011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
212111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
212211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
212311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
212411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
212511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
212611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
212711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
212811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
212911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkphysicaldeviceproperties(const VkPhysicalDeviceProperties* pStruct, const char* prefix)
213011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
213111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
213211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
213311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
213411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
213511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
213611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
213711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[2];
213811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkphysicaldevicelimits(&pStruct->limits, extra_indent);
213911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
214011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[0] = (char*)malloc(len);
214111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[0], len, " %slimits (addr)\n%s", prefix, tmpStr);
214211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkphysicaldevicesparseproperties(&pStruct->sparseProperties, extra_indent);
214311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
214411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
214511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %ssparseProperties (addr)\n%s", prefix, tmpStr);
214611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
214711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
214811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sapiVersion = %u\n%sdriverVersion = %u\n%svendorID = %u\n%sdeviceID = %u\n%sdeviceType = %s\n%sdeviceName = %s\n%spipelineCacheUUID = addr\n%slimits = addr\n%ssparseProperties = addr\n", prefix, (pStruct->apiVersion), prefix, (pStruct->driverVersion), prefix, (pStruct->vendorID), prefix, (pStruct->deviceID), prefix, string_VkPhysicalDeviceType(pStruct->deviceType), prefix, (pStruct->deviceName), prefix, prefix, prefix);
214911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
215011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
215111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
215211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
215311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
215411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
215511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
215611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
215711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
215811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkphysicaldevicesparseproperties(const VkPhysicalDeviceSparseProperties* pStruct, const char* prefix)
215911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
216011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
216111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
216211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
216311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
216411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    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");
216511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
216611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
216711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinecachecreateinfo(const VkPipelineCacheCreateInfo* pStruct, const char* prefix)
216811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
216911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
217011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
217111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
217211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
217311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
217411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
217511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
217611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
217711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
217811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
217911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
218011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
218111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
218211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
218311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
218411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
218511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
218611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
218711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sinitialDataSize = " PRINTF_SIZE_T_SPECIFIER "\n%spInitialData = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->initialDataSize), prefix);
218811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
218911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
219011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
219111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
219211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
219311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
219411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
219511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
219611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
219711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinecolorblendattachmentstate(const VkPipelineColorBlendAttachmentState* pStruct, const char* prefix)
219811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
219911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
220011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
220111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
220211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
220311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    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));
220411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
220511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
220611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinecolorblendstatecreateinfo(const VkPipelineColorBlendStateCreateInfo* pStruct, const char* prefix)
220711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
220811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
220911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
221011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
221111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
221211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
221311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
221411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[2];
221511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
221611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
221711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
221811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
221911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
222011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
222111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
222211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
222311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
222411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pAttachments) {
222511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkpipelinecolorblendattachmentstate(pStruct->pAttachments, extra_indent);
222611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
222711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = (char*)malloc(len);
222811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[1], len, " %spAttachments (addr)\n%s", prefix, tmpStr);
222911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
223011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
223111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = "";
223211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
223311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
223411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%slogicOpEnable = %s\n%slogicOp = %s\n%sattachmentCount = %u\n%spAttachments = addr\n%sblendConstants = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->logicOpEnable) ? "TRUE" : "FALSE", prefix, string_VkLogicOp(pStruct->logicOp), prefix, (pStruct->attachmentCount), prefix, prefix);
223511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
223611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
223711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
223811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
223911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
224011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
224111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
224211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
224311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
224411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinedepthstencilstatecreateinfo(const VkPipelineDepthStencilStateCreateInfo* pStruct, const char* prefix)
224511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
224611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
224711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
224811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
224911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
225011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
225111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
225211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[3];
225311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
225411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
225511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
225611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
225711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
225811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
225911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
226011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
226111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
226211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkstencilopstate(&pStruct->front, extra_indent);
226311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
226411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
226511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %sfront (addr)\n%s", prefix, tmpStr);
226611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkstencilopstate(&pStruct->back, extra_indent);
226711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
226811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[2] = (char*)malloc(len);
226911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[2], len, " %sback (addr)\n%s", prefix, tmpStr);
227011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
227111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
227211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sdepthTestEnable = %s\n%sdepthWriteEnable = %s\n%sdepthCompareOp = %s\n%sdepthBoundsTestEnable = %s\n%sstencilTestEnable = %s\n%sfront = addr\n%sback = addr\n%sminDepthBounds = %f\n%smaxDepthBounds = %f\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->depthTestEnable) ? "TRUE" : "FALSE", prefix, (pStruct->depthWriteEnable) ? "TRUE" : "FALSE", prefix, string_VkCompareOp(pStruct->depthCompareOp), prefix, (pStruct->depthBoundsTestEnable) ? "TRUE" : "FALSE", prefix, (pStruct->stencilTestEnable) ? "TRUE" : "FALSE", prefix, prefix, prefix, (pStruct->minDepthBounds), prefix, (pStruct->maxDepthBounds));
227311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
227411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
227511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
227611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
227711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
227811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
227911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
228011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
228111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
228211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinedynamicstatecreateinfo(const VkPipelineDynamicStateCreateInfo* pStruct, const char* prefix)
228311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
228411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
228511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
228611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
228711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
228811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
228911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
229011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
229111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
229211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
229311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
229411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
229511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
229611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
229711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
229811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
229911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
230011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
230111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
230211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sdynamicStateCount = %u\n%spDynamicStates = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->dynamicStateCount), prefix);
230311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
230411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
230511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
230611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
230711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
230811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
230911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
231011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
231111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
231211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelineinputassemblystatecreateinfo(const VkPipelineInputAssemblyStateCreateInfo* pStruct, const char* prefix)
231311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
231411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
231511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
231611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
231711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
231811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
231911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
232011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
232111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
232211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
232311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
232411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
232511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
232611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
232711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
232811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
232911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
233011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
233111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
233211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%stopology = %s\n%sprimitiveRestartEnable = %s\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, string_VkPrimitiveTopology(pStruct->topology), prefix, (pStruct->primitiveRestartEnable) ? "TRUE" : "FALSE");
233311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
233411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
233511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
233611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
233711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
233811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
233911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
234011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
234111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
234211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinelayoutcreateinfo(const VkPipelineLayoutCreateInfo* pStruct, const char* prefix)
234311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
234411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
234511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
234611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
234711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
234811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
234911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
235011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[2];
235111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
235211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
235311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
235411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
235511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
235611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
235711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
235811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
235911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
236011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pPushConstantRanges) {
236111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkpushconstantrange(pStruct->pPushConstantRanges, extra_indent);
236211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
236311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = (char*)malloc(len);
236411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[1], len, " %spPushConstantRanges (addr)\n%s", prefix, tmpStr);
236511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
236611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
236711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = "";
236811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
236911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
237011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%ssetLayoutCount = %u\n%spSetLayouts = addr\n%spushConstantRangeCount = %u\n%spPushConstantRanges = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->setLayoutCount), prefix, prefix, (pStruct->pushConstantRangeCount), prefix);
237111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
237211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
237311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
237411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
237511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
237611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
237711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
237811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
237911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
238011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinemultisamplestatecreateinfo(const VkPipelineMultisampleStateCreateInfo* pStruct, const char* prefix)
238111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
238211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
238311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
238411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
238511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
238611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
238711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
238811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
238911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
239011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
239111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
239211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
239311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
239411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
239511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
239611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
239711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
239811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
239911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
240011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%srasterizationSamples = %s\n%ssampleShadingEnable = %s\n%sminSampleShading = %f\n%spSampleMask = %u\n%salphaToCoverageEnable = %s\n%salphaToOneEnable = %s\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, string_VkSampleCountFlagBits(pStruct->rasterizationSamples), prefix, (pStruct->sampleShadingEnable) ? "TRUE" : "FALSE", prefix, (pStruct->minSampleShading), prefix, (pStruct->pSampleMask), prefix, (pStruct->alphaToCoverageEnable) ? "TRUE" : "FALSE", prefix, (pStruct->alphaToOneEnable) ? "TRUE" : "FALSE");
240111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
240211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
240311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
240411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
240511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
240611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
240711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
240811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
240911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
241011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinerasterizationstatecreateinfo(const VkPipelineRasterizationStateCreateInfo* pStruct, const char* prefix)
241111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
241211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
241311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
241411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
241511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
241611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
241711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
241811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
241911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
242011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
242111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
242211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
242311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
242411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
242511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
242611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
242711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
242811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
242911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
243011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sdepthClampEnable = %s\n%srasterizerDiscardEnable = %s\n%spolygonMode = %s\n%scullMode = %u\n%sfrontFace = %s\n%sdepthBiasEnable = %s\n%sdepthBiasConstantFactor = %f\n%sdepthBiasClamp = %f\n%sdepthBiasSlopeFactor = %f\n%slineWidth = %f\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->depthClampEnable) ? "TRUE" : "FALSE", prefix, (pStruct->rasterizerDiscardEnable) ? "TRUE" : "FALSE", prefix, string_VkPolygonMode(pStruct->polygonMode), prefix, (pStruct->cullMode), prefix, string_VkFrontFace(pStruct->frontFace), prefix, (pStruct->depthBiasEnable) ? "TRUE" : "FALSE", prefix, (pStruct->depthBiasConstantFactor), prefix, (pStruct->depthBiasClamp), prefix, (pStruct->depthBiasSlopeFactor), prefix, (pStruct->lineWidth));
243111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
243211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
243311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
243411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
243511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
243611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
243711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
243811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
243911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
244011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinerasterizationstaterasterizationorderamd(const VkPipelineRasterizationStateRasterizationOrderAMD* pStruct, const char* prefix)
244111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
244211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
244311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
244411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
244511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
244611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
244711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
244811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
244911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
245011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
245111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
245211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
245311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
245411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
245511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
245611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
245711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
245811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
245911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
246011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%srasterizationOrder = %s\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, string_VkRasterizationOrderAMD(pStruct->rasterizationOrder));
246111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
246211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
246311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
246411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
246511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
246611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
246711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
246811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
246911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
247011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelineshaderstagecreateinfo(const VkPipelineShaderStageCreateInfo* pStruct, const char* prefix)
247111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
247211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
247311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
247411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
247511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
247611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
247711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
247811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[2];
247911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
248011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
248111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
248211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
248311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
248411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
248511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
248611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
248711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
248811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pSpecializationInfo) {
248911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkspecializationinfo(pStruct->pSpecializationInfo, extra_indent);
249011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
249111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = (char*)malloc(len);
249211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[1], len, " %spSpecializationInfo (addr)\n%s", prefix, tmpStr);
249311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
249411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
249511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = "";
249611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
249711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
249811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sstage = %s\n%smodule = addr\n%spName = addr\n%spSpecializationInfo = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, string_VkShaderStageFlagBits(pStruct->stage), prefix, prefix, prefix);
249911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
250011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
250111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
250211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
250311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
250411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
250511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
250611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
250711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
250811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinetessellationstatecreateinfo(const VkPipelineTessellationStateCreateInfo* pStruct, const char* prefix)
250911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
251011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
251111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
251211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
251311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
251411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
251511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
251611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
251711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
251811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
251911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
252011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
252111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
252211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
252311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
252411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
252511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
252611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
252711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
252811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%spatchControlPoints = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->patchControlPoints));
252911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
253011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
253111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
253211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
253311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
253411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
253511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
253611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
253711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
253811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelinevertexinputstatecreateinfo(const VkPipelineVertexInputStateCreateInfo* pStruct, const char* prefix)
253911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
254011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
254111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
254211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
254311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
254411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
254511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
254611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[3];
254711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
254811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
254911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
255011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
255111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
255211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
255311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
255411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
255511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
255611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pVertexBindingDescriptions) {
255711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkvertexinputbindingdescription(pStruct->pVertexBindingDescriptions, extra_indent);
255811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
255911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = (char*)malloc(len);
256011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[1], len, " %spVertexBindingDescriptions (addr)\n%s", prefix, tmpStr);
256111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
256211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
256311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = "";
256411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pVertexAttributeDescriptions) {
256511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkvertexinputattributedescription(pStruct->pVertexAttributeDescriptions, extra_indent);
256611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
256711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[2] = (char*)malloc(len);
256811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[2], len, " %spVertexAttributeDescriptions (addr)\n%s", prefix, tmpStr);
256911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
257011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
257111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[2] = "";
257211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
257311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
257411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%svertexBindingDescriptionCount = %u\n%spVertexBindingDescriptions = addr\n%svertexAttributeDescriptionCount = %u\n%spVertexAttributeDescriptions = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->vertexBindingDescriptionCount), prefix, prefix, (pStruct->vertexAttributeDescriptionCount), prefix);
257511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
257611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
257711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
257811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
257911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
258011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
258111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
258211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
258311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
258411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpipelineviewportstatecreateinfo(const VkPipelineViewportStateCreateInfo* pStruct, const char* prefix)
258511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
258611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
258711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
258811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
258911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
259011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
259111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
259211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[3];
259311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
259411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
259511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
259611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
259711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
259811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
259911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
260011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
260111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
260211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pViewports) {
260311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkviewport(pStruct->pViewports, extra_indent);
260411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
260511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = (char*)malloc(len);
260611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[1], len, " %spViewports (addr)\n%s", prefix, tmpStr);
260711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
260811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
260911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = "";
261011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pScissors) {
261111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkrect2d(pStruct->pScissors, extra_indent);
261211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
261311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[2] = (char*)malloc(len);
261411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[2], len, " %spScissors (addr)\n%s", prefix, tmpStr);
261511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
261611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
261711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[2] = "";
261811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
261911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
262011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sviewportCount = %u\n%spViewports = addr\n%sscissorCount = %u\n%spScissors = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->viewportCount), prefix, prefix, (pStruct->scissorCount), prefix);
262111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
262211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
262311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
262411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
262511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
262611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
262711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
262811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
262911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
263011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpresentinfokhr(const VkPresentInfoKHR* pStruct, const char* prefix)
263111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
263211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
263311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
263411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
263511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
263611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
263711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
263811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
263911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
264011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
264111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
264211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
264311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
264411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
264511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
264611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
264711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
264811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
264911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
265011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%swaitSemaphoreCount = %u\n%spWaitSemaphores = addr\n%sswapchainCount = %u\n%spSwapchains = addr\n%spImageIndices = addr\n%spResults = 0x%s\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->waitSemaphoreCount), prefix, prefix, (pStruct->swapchainCount), prefix, prefix, prefix, string_VkResult(*pStruct->pResults));
265111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
265211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
265311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
265411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
265511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
265611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
265711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
265811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
265911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
266011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkpushconstantrange(const VkPushConstantRange* pStruct, const char* prefix)
266111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
266211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
266311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
266411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
266511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
266611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sstageFlags = %u\n%soffset = %u\n%ssize = %u\n", prefix, (pStruct->stageFlags), prefix, (pStruct->offset), prefix, (pStruct->size));
266711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
266811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
266911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkquerypoolcreateinfo(const VkQueryPoolCreateInfo* pStruct, const char* prefix)
267011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
267111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
267211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
267311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
267411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
267511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
267611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
267711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
267811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
267911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
268011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
268111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
268211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
268311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
268411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
268511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
268611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
268711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
268811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
268911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%squeryType = %s\n%squeryCount = %u\n%spipelineStatistics = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, string_VkQueryType(pStruct->queryType), prefix, (pStruct->queryCount), prefix, (pStruct->pipelineStatistics));
269011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
269111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
269211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
269311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
269411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
269511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
269611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
269711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
269811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
269911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkqueuefamilyproperties(const VkQueueFamilyProperties* pStruct, const char* prefix)
270011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
270111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
270211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
270311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
270411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
270511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
270611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
270711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
270811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkextent3d(&pStruct->minImageTransferGranularity, extra_indent);
270911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
271011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[0] = (char*)malloc(len);
271111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[0], len, " %sminImageTransferGranularity (addr)\n%s", prefix, tmpStr);
271211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
271311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
271411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%squeueFlags = %u\n%squeueCount = %u\n%stimestampValidBits = %u\n%sminImageTransferGranularity = addr\n", prefix, (pStruct->queueFlags), prefix, (pStruct->queueCount), prefix, (pStruct->timestampValidBits), prefix);
271511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
271611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
271711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
271811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
271911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
272011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
272111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
272211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
272311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
272411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkrect2d(const VkRect2D* pStruct, const char* prefix)
272511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
272611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
272711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
272811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
272911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
273011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
273111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
273211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[2];
273311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkoffset2d(&pStruct->offset, extra_indent);
273411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
273511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[0] = (char*)malloc(len);
273611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[0], len, " %soffset (addr)\n%s", prefix, tmpStr);
273711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkextent2d(&pStruct->extent, extra_indent);
273811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
273911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
274011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %sextent (addr)\n%s", prefix, tmpStr);
274111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
274211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
274311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%soffset = addr\n%sextent = addr\n", prefix, prefix);
274411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
274511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
274611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
274711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
274811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
274911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
275011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
275111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
275211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
275311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkrenderpassbegininfo(const VkRenderPassBeginInfo* pStruct, const char* prefix)
275411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
275511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
275611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
275711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
275811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
275911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
276011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
276111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[3];
276211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
276311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
276411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
276511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
276611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
276711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
276811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
276911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
277011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
277111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkrect2d(&pStruct->renderArea, extra_indent);
277211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
277311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
277411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %srenderArea (addr)\n%s", prefix, tmpStr);
277511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pClearValues) {
277611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkclearvalue(pStruct->pClearValues, extra_indent);
277711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
277811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[2] = (char*)malloc(len);
277911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[2], len, " %spClearValues (addr)\n%s", prefix, tmpStr);
278011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
278111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
278211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[2] = "";
278311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
278411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
278511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%srenderPass = addr\n%sframebuffer = addr\n%srenderArea = addr\n%sclearValueCount = %u\n%spClearValues = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix, prefix, prefix, (pStruct->clearValueCount), prefix);
278611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
278711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
278811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
278911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
279011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
279111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
279211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
279311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
279411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
279511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkrenderpasscreateinfo(const VkRenderPassCreateInfo* pStruct, const char* prefix)
279611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
279711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
279811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
279911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
280011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
280111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
280211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
280311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[4];
280411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
280511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
280611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
280711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
280811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
280911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
281011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
281111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
281211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
281311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pAttachments) {
281411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkattachmentdescription(pStruct->pAttachments, extra_indent);
281511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
281611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = (char*)malloc(len);
281711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[1], len, " %spAttachments (addr)\n%s", prefix, tmpStr);
281811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
281911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
282011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = "";
282111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pSubpasses) {
282211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vksubpassdescription(pStruct->pSubpasses, extra_indent);
282311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
282411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[2] = (char*)malloc(len);
282511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[2], len, " %spSubpasses (addr)\n%s", prefix, tmpStr);
282611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
282711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
282811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[2] = "";
282911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pDependencies) {
283011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vksubpassdependency(pStruct->pDependencies, extra_indent);
283111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
283211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[3] = (char*)malloc(len);
283311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[3], len, " %spDependencies (addr)\n%s", prefix, tmpStr);
283411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
283511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
283611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[3] = "";
283711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + strlen(stp_strs[3]) + sizeof(char)*1024;
283811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
283911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sattachmentCount = %u\n%spAttachments = addr\n%ssubpassCount = %u\n%spSubpasses = addr\n%sdependencyCount = %u\n%spDependencies = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->attachmentCount), prefix, prefix, (pStruct->subpassCount), prefix, prefix, (pStruct->dependencyCount), prefix);
284011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 3; stp_index >= 0; stp_index--) {
284111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
284211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
284311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
284411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
284511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
284611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
284711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
284811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
284911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksamplercreateinfo(const VkSamplerCreateInfo* pStruct, const char* prefix)
285011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
285111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
285211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
285311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
285411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
285511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
285611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
285711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
285811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
285911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
286011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
286111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
286211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
286311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
286411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
286511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
286611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
286711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
286811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
286911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%smagFilter = %s\n%sminFilter = %s\n%smipmapMode = %s\n%saddressModeU = %s\n%saddressModeV = %s\n%saddressModeW = %s\n%smipLodBias = %f\n%sanisotropyEnable = %s\n%smaxAnisotropy = %f\n%scompareEnable = %s\n%scompareOp = %s\n%sminLod = %f\n%smaxLod = %f\n%sborderColor = %s\n%sunnormalizedCoordinates = %s\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, string_VkFilter(pStruct->magFilter), prefix, string_VkFilter(pStruct->minFilter), prefix, string_VkSamplerMipmapMode(pStruct->mipmapMode), prefix, string_VkSamplerAddressMode(pStruct->addressModeU), prefix, string_VkSamplerAddressMode(pStruct->addressModeV), prefix, string_VkSamplerAddressMode(pStruct->addressModeW), prefix, (pStruct->mipLodBias), prefix, (pStruct->anisotropyEnable) ? "TRUE" : "FALSE", prefix, (pStruct->maxAnisotropy), prefix, (pStruct->compareEnable) ? "TRUE" : "FALSE", prefix, string_VkCompareOp(pStruct->compareOp), prefix, (pStruct->minLod), prefix, (pStruct->maxLod), prefix, string_VkBorderColor(pStruct->borderColor), prefix, (pStruct->unnormalizedCoordinates) ? "TRUE" : "FALSE");
287011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
287111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
287211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
287311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
287411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
287511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
287611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
287711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
287811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
287911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksemaphorecreateinfo(const VkSemaphoreCreateInfo* pStruct, const char* prefix)
288011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
288111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
288211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
288311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
288411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
288511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
288611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
288711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
288811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
288911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
289011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
289111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
289211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
289311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
289411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
289511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
289611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
289711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
289811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
289911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags));
290011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
290111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
290211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
290311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
290411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
290511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
290611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
290711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
290811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
290911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkshadermodulecreateinfo(const VkShaderModuleCreateInfo* pStruct, const char* prefix)
291011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
291111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
291211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
291311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
291411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
291511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
291611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
291711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
291811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
291911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
292011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
292111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
292211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
292311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
292411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
292511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
292611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
292711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
292811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
292911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%scodeSize = " PRINTF_SIZE_T_SPECIFIER "\n%spCode = %u\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, (pStruct->codeSize), prefix, (pStruct->pCode));
293011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
293111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
293211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
293311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
293411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
293511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
293611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
293711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
293811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
293911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksparsebuffermemorybindinfo(const VkSparseBufferMemoryBindInfo* pStruct, const char* prefix)
294011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
294111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
294211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
294311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
294411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
294511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
294611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
294711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
294811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pBinds) {
294911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vksparsememorybind(pStruct->pBinds, extra_indent);
295011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
295111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
295211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spBinds (addr)\n%s", prefix, tmpStr);
295311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
295411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
295511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
295611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
295711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
295811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sbuffer = addr\n%sbindCount = %u\n%spBinds = addr\n", prefix, prefix, (pStruct->bindCount), prefix);
295911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
296011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
296111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
296211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
296311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
296411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
296511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
296611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
296711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
296811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksparseimageformatproperties(const VkSparseImageFormatProperties* pStruct, const char* prefix)
296911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
297011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
297111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
297211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
297311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
297411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
297511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
297611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
297711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkextent3d(&pStruct->imageGranularity, extra_indent);
297811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
297911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[0] = (char*)malloc(len);
298011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[0], len, " %simageGranularity (addr)\n%s", prefix, tmpStr);
298111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
298211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
298311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%saspectMask = %u\n%simageGranularity = addr\n%sflags = %u\n", prefix, (pStruct->aspectMask), prefix, prefix, (pStruct->flags));
298411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
298511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
298611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
298711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
298811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
298911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
299011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
299111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
299211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
299311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksparseimagememorybind(const VkSparseImageMemoryBind* pStruct, const char* prefix)
299411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
299511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
299611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
299711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
299811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
299911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
300011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
300111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[3];
300211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkimagesubresource(&pStruct->subresource, extra_indent);
300311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
300411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[0] = (char*)malloc(len);
300511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[0], len, " %ssubresource (addr)\n%s", prefix, tmpStr);
300611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkoffset3d(&pStruct->offset, extra_indent);
300711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
300811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
300911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %soffset (addr)\n%s", prefix, tmpStr);
301011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkextent3d(&pStruct->extent, extra_indent);
301111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
301211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[2] = (char*)malloc(len);
301311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[2], len, " %sextent (addr)\n%s", prefix, tmpStr);
301411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
301511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
301611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssubresource = addr\n%soffset = addr\n%sextent = addr\n%smemory = addr\n%smemoryOffset = " PRINTF_SIZE_T_SPECIFIER "\n%sflags = %u\n", prefix, prefix, prefix, prefix, prefix, (pStruct->memoryOffset), prefix, (pStruct->flags));
301711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
301811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
301911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
302011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
302111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
302211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
302311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
302411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
302511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
302611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksparseimagememorybindinfo(const VkSparseImageMemoryBindInfo* pStruct, const char* prefix)
302711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
302811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
302911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
303011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
303111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
303211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
303311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
303411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
303511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pBinds) {
303611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vksparseimagememorybind(pStruct->pBinds, extra_indent);
303711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
303811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
303911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spBinds (addr)\n%s", prefix, tmpStr);
304011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
304111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
304211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
304311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
304411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
304511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%simage = addr\n%sbindCount = %u\n%spBinds = addr\n", prefix, prefix, (pStruct->bindCount), prefix);
304611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
304711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
304811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
304911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
305011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
305111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
305211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
305311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
305411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
305511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksparseimagememoryrequirements(const VkSparseImageMemoryRequirements* pStruct, const char* prefix)
305611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
305711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
305811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
305911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
306011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
306111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
306211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
306311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
306411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vksparseimageformatproperties(&pStruct->formatProperties, extra_indent);
306511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
306611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[0] = (char*)malloc(len);
306711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[0], len, " %sformatProperties (addr)\n%s", prefix, tmpStr);
306811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
306911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
307011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sformatProperties = addr\n%simageMipTailFirstLod = %u\n%simageMipTailSize = " PRINTF_SIZE_T_SPECIFIER "\n%simageMipTailOffset = " PRINTF_SIZE_T_SPECIFIER "\n%simageMipTailStride = " PRINTF_SIZE_T_SPECIFIER "\n", prefix, prefix, (pStruct->imageMipTailFirstLod), prefix, (pStruct->imageMipTailSize), prefix, (pStruct->imageMipTailOffset), prefix, (pStruct->imageMipTailStride));
307111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
307211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
307311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
307411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
307511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
307611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
307711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
307811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
307911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
308011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksparseimageopaquememorybindinfo(const VkSparseImageOpaqueMemoryBindInfo* pStruct, const char* prefix)
308111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
308211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
308311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
308411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
308511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
308611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
308711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
308811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
308911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pBinds) {
309011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vksparsememorybind(pStruct->pBinds, extra_indent);
309111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
309211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
309311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spBinds (addr)\n%s", prefix, tmpStr);
309411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
309511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
309611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
309711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
309811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
309911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%simage = addr\n%sbindCount = %u\n%spBinds = addr\n", prefix, prefix, (pStruct->bindCount), prefix);
310011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
310111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
310211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
310311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
310411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
310511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
310611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
310711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
310811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
310911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksparsememorybind(const VkSparseMemoryBind* pStruct, const char* prefix)
311011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
311111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
311211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
311311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
311411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
311511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sresourceOffset = " PRINTF_SIZE_T_SPECIFIER "\n%ssize = " PRINTF_SIZE_T_SPECIFIER "\n%smemory = addr\n%smemoryOffset = " PRINTF_SIZE_T_SPECIFIER "\n%sflags = %u\n", prefix, (pStruct->resourceOffset), prefix, (pStruct->size), prefix, prefix, (pStruct->memoryOffset), prefix, (pStruct->flags));
311611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
311711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
311811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkspecializationinfo(const VkSpecializationInfo* pStruct, const char* prefix)
311911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
312011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
312111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
312211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
312311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
312411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
312511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
312611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
312711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pMapEntries) {
312811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkspecializationmapentry(pStruct->pMapEntries, extra_indent);
312911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
313011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
313111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spMapEntries (addr)\n%s", prefix, tmpStr);
313211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
313311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
313411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
313511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
313611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
313711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%smapEntryCount = %u\n%spMapEntries = addr\n%sdataSize = " PRINTF_SIZE_T_SPECIFIER "\n%spData = addr\n", prefix, (pStruct->mapEntryCount), prefix, prefix, (pStruct->dataSize), prefix);
313811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
313911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
314011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
314111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
314211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
314311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
314411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
314511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
314611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
314711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkspecializationmapentry(const VkSpecializationMapEntry* pStruct, const char* prefix)
314811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
314911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
315011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
315111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
315211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
315311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sconstantID = %u\n%soffset = %u\n%ssize = " PRINTF_SIZE_T_SPECIFIER "\n", prefix, (pStruct->constantID), prefix, (pStruct->offset), prefix, (pStruct->size));
315411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
315511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
315611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkstencilopstate(const VkStencilOpState* pStruct, const char* prefix)
315711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
315811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
315911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
316011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
316111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
316211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    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));
316311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
316411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
316511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksubmitinfo(const VkSubmitInfo* pStruct, const char* prefix)
316611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
316711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
316811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
316911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
317011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
317111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
317211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
317311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
317411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
317511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
317611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
317711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
317811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
317911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
318011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
318111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
318211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
318311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
318411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
318511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%swaitSemaphoreCount = %u\n%spWaitSemaphores = addr\n%spWaitDstStageMask = %u\n%scommandBufferCount = %u\n%spCommandBuffers = addr\n%ssignalSemaphoreCount = %u\n%spSignalSemaphores = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->waitSemaphoreCount), prefix, prefix, (pStruct->pWaitDstStageMask), prefix, (pStruct->commandBufferCount), prefix, prefix, (pStruct->signalSemaphoreCount), prefix);
318611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
318711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
318811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
318911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
319011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
319111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
319211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
319311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
319411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
319511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksubpassdependency(const VkSubpassDependency* pStruct, const char* prefix)
319611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
319711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
319811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
319911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
320011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
320111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    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));
320211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
320311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
320411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksubpassdescription(const VkSubpassDescription* pStruct, const char* prefix)
320511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
320611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
320711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
320811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
320911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
321011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
321111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
321211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[4];
321311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pInputAttachments) {
321411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkattachmentreference(pStruct->pInputAttachments, extra_indent);
321511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
321611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
321711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spInputAttachments (addr)\n%s", prefix, tmpStr);
321811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
321911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
322011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
322111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pColorAttachments) {
322211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkattachmentreference(pStruct->pColorAttachments, extra_indent);
322311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
322411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = (char*)malloc(len);
322511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[1], len, " %spColorAttachments (addr)\n%s", prefix, tmpStr);
322611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
322711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
322811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = "";
322911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pResolveAttachments) {
323011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkattachmentreference(pStruct->pResolveAttachments, extra_indent);
323111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
323211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[2] = (char*)malloc(len);
323311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[2], len, " %spResolveAttachments (addr)\n%s", prefix, tmpStr);
323411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
323511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
323611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[2] = "";
323711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pDepthStencilAttachment) {
323811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkattachmentreference(pStruct->pDepthStencilAttachment, extra_indent);
323911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
324011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[3] = (char*)malloc(len);
324111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[3], len, " %spDepthStencilAttachment (addr)\n%s", prefix, tmpStr);
324211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
324311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
324411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[3] = "";
324511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + strlen(stp_strs[3]) + sizeof(char)*1024;
324611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
324711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sflags = %u\n%spipelineBindPoint = %s\n%sinputAttachmentCount = %u\n%spInputAttachments = addr\n%scolorAttachmentCount = %u\n%spColorAttachments = addr\n%spResolveAttachments = addr\n%spDepthStencilAttachment = addr\n%spreserveAttachmentCount = %u\n%spPreserveAttachments = addr\n", prefix, (pStruct->flags), prefix, string_VkPipelineBindPoint(pStruct->pipelineBindPoint), prefix, (pStruct->inputAttachmentCount), prefix, prefix, (pStruct->colorAttachmentCount), prefix, prefix, prefix, prefix, (pStruct->preserveAttachmentCount), prefix);
324811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 3; stp_index >= 0; stp_index--) {
324911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
325011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
325111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
325211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
325311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
325411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
325511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
325611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
325711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksubresourcelayout(const VkSubresourceLayout* pStruct, const char* prefix)
325811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
325911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
326011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
326111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
326211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
326311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    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));
326411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
326511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
326611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksurfacecapabilitieskhr(const VkSurfaceCapabilitiesKHR* pStruct, const char* prefix)
326711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
326811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
326911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
327011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
327111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
327211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
327311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
327411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[3];
327511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkextent2d(&pStruct->currentExtent, extra_indent);
327611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
327711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[0] = (char*)malloc(len);
327811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[0], len, " %scurrentExtent (addr)\n%s", prefix, tmpStr);
327911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkextent2d(&pStruct->minImageExtent, extra_indent);
328011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
328111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
328211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %sminImageExtent (addr)\n%s", prefix, tmpStr);
328311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkextent2d(&pStruct->maxImageExtent, extra_indent);
328411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
328511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[2] = (char*)malloc(len);
328611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[2], len, " %smaxImageExtent (addr)\n%s", prefix, tmpStr);
328711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
328811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
328911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sminImageCount = %u\n%smaxImageCount = %u\n%scurrentExtent = addr\n%sminImageExtent = addr\n%smaxImageExtent = addr\n%smaxImageArrayLayers = %u\n%ssupportedTransforms = %u\n%scurrentTransform = %s\n%ssupportedCompositeAlpha = %u\n%ssupportedUsageFlags = %u\n", prefix, (pStruct->minImageCount), prefix, (pStruct->maxImageCount), prefix, prefix, prefix, prefix, (pStruct->maxImageArrayLayers), prefix, (pStruct->supportedTransforms), prefix, string_VkSurfaceTransformFlagBitsKHR(pStruct->currentTransform), prefix, (pStruct->supportedCompositeAlpha), prefix, (pStruct->supportedUsageFlags));
329011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
329111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
329211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
329311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
329411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
329511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
329611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
329711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
329811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
329911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vksurfaceformatkhr(const VkSurfaceFormatKHR* pStruct, const char* prefix)
330011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
330111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
330211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
330311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
330411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
330511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sformat = %s\n%scolorSpace = %s\n", prefix, string_VkFormat(pStruct->format), prefix, string_VkColorSpaceKHR(pStruct->colorSpace));
330611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
330711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
330811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkswapchaincreateinfokhr(const VkSwapchainCreateInfoKHR* pStruct, const char* prefix)
330911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
331011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
331111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
331211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
331311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
331411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
331511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
331611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[2];
331711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
331811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
331911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
332011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
332111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
332211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
332311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
332411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
332511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
332611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    tmpStr = vk_print_vkextent2d(&pStruct->imageExtent, extra_indent);
332711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = 256+strlen(tmpStr);
332811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    stp_strs[1] = (char*)malloc(len);
332911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(stp_strs[1], len, " %simageExtent (addr)\n%s", prefix, tmpStr);
333011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + sizeof(char)*1024;
333111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
333211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%ssurface = addr\n%sminImageCount = %u\n%simageFormat = %s\n%simageColorSpace = %s\n%simageExtent = addr\n%simageArrayLayers = %u\n%simageUsage = %u\n%simageSharingMode = %s\n%squeueFamilyIndexCount = %u\n%spQueueFamilyIndices = addr\n%spreTransform = %s\n%scompositeAlpha = %s\n%spresentMode = %s\n%sclipped = %s\n%soldSwapchain = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix, (pStruct->minImageCount), prefix, string_VkFormat(pStruct->imageFormat), prefix, string_VkColorSpaceKHR(pStruct->imageColorSpace), prefix, prefix, (pStruct->imageArrayLayers), prefix, (pStruct->imageUsage), prefix, string_VkSharingMode(pStruct->imageSharingMode), prefix, (pStruct->queueFamilyIndexCount), prefix, prefix, string_VkSurfaceTransformFlagBitsKHR(pStruct->preTransform), prefix, string_VkCompositeAlphaFlagBitsKHR(pStruct->compositeAlpha), prefix, string_VkPresentModeKHR(pStruct->presentMode), prefix, (pStruct->clipped) ? "TRUE" : "FALSE", prefix);
333311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 1; stp_index >= 0; stp_index--) {
333411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
333511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
333611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
333711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
333811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
333911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
334011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
334111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
334211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkvertexinputattributedescription(const VkVertexInputAttributeDescription* pStruct, const char* prefix)
334311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
334411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
334511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
334611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
334711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
334811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    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));
334911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
335011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
335111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkvertexinputbindingdescription(const VkVertexInputBindingDescription* pStruct, const char* prefix)
335211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
335311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
335411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
335511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
335611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
335711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%sbinding = %u\n%sstride = %u\n%sinputRate = %s\n", prefix, (pStruct->binding), prefix, (pStruct->stride), prefix, string_VkVertexInputRate(pStruct->inputRate));
335811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
335911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
336011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkviewport(const VkViewport* pStruct, const char* prefix)
336111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
336211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
336311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
336411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = sizeof(char)*1024;
336511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
336611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    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));
336711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
336811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
336911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkwaylandsurfacecreateinfokhr(const VkWaylandSurfaceCreateInfoKHR* pStruct, const char* prefix)
337011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
337111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
337211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
337311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
337411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
337511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
337611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
337711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
337811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
337911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
338011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
338111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
338211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
338311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
338411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
338511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
338611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
338711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
338811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
338911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sdisplay = addr\n%ssurface = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix);
339011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
339111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
339211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
339311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
339411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
339511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
339611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
339711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
339811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
339911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkwin32surfacecreateinfokhr(const VkWin32SurfaceCreateInfoKHR* pStruct, const char* prefix)
340011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
340111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
340211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
340311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
340411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
340511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
340611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
340711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
340811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
340911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
341011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
341111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
341211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
341311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
341411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
341511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
341611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
341711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
341811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
341911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%shinstance = addr\n%shwnd = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix);
342011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
342111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
342211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
342311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
342411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
342511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
342611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
342711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
342811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
342911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkwritedescriptorset(const VkWriteDescriptorSet* pStruct, const char* prefix)
343011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
343111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
343211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
343311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
343411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
343511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
343611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
343711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[3];
343811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
343911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
344011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
344111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
344211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
344311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
344411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
344511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
344611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
344711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pImageInfo) {
344811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkdescriptorimageinfo(pStruct->pImageInfo, extra_indent);
344911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
345011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = (char*)malloc(len);
345111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[1], len, " %spImageInfo (addr)\n%s", prefix, tmpStr);
345211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
345311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
345411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[1] = "";
345511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pBufferInfo) {
345611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = vk_print_vkdescriptorbufferinfo(pStruct->pBufferInfo, extra_indent);
345711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr)+strlen(prefix);
345811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[2] = (char*)malloc(len);
345911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[2], len, " %spBufferInfo (addr)\n%s", prefix, tmpStr);
346011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
346111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
346211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[2] = "";
346311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + strlen(stp_strs[1]) + strlen(stp_strs[2]) + sizeof(char)*1024;
346411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
346511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sdstSet = addr\n%sdstBinding = %u\n%sdstArrayElement = %u\n%sdescriptorCount = %u\n%sdescriptorType = %s\n%spImageInfo = addr\n%spBufferInfo = addr\n%spTexelBufferView = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, prefix, (pStruct->dstBinding), prefix, (pStruct->dstArrayElement), prefix, (pStruct->descriptorCount), prefix, string_VkDescriptorType(pStruct->descriptorType), prefix, prefix, prefix);
346611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 2; stp_index >= 0; stp_index--) {
346711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
346811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
346911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
347011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
347111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
347211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
347311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
347411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
347511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkxcbsurfacecreateinfokhr(const VkXcbSurfaceCreateInfoKHR* pStruct, const char* prefix)
347611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
347711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
347811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
347911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
348011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
348111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
348211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
348311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
348411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
348511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
348611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
348711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
348811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
348911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
349011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
349111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
349211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
349311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
349411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
349511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sconnection = addr\n%swindow = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix);
349611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
349711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
349811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
349911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
350011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
350111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
350211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
350311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
350411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
350511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* vk_print_vkxlibsurfacecreateinfokhr(const VkXlibSurfaceCreateInfoKHR* pStruct, const char* prefix)
350611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
350711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* str;
350811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    size_t len;
350911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* tmpStr;
351011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* extra_indent = (char*)malloc(strlen(prefix) + 3);
351111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(extra_indent, "  ");
351211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strncat(extra_indent, prefix, strlen(prefix));
351311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char* stp_strs[1];
351411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct->pNext) {
351511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        tmpStr = dynamic_display((void*)pStruct->pNext, prefix);
351611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        len = 256+strlen(tmpStr);
351711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = (char*)malloc(len);
351811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        snprintf(stp_strs[0], len, " %spNext (addr)\n%s", prefix, tmpStr);
351911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        free(tmpStr);
352011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
352111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    else
352211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        stp_strs[0] = "";
352311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    len = strlen(stp_strs[0]) + sizeof(char)*1024;
352411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    str = (char*)malloc(len);
352511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    snprintf(str, len, "%ssType = %s\n%spNext = addr\n%sflags = %u\n%sdpy = addr\n%swindow = addr\n", prefix, string_VkStructureType(pStruct->sType), prefix, prefix, (pStruct->flags), prefix, prefix);
352611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    for (int32_t stp_index = 0; stp_index >= 0; stp_index--) {
352711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        if (0 < strlen(stp_strs[stp_index])) {
352811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            strncat(str, stp_strs[stp_index], strlen(stp_strs[stp_index]));
352911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            free(stp_strs[stp_index]);
353011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
353111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
353211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    free(extra_indent);
353311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return str;
353411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
353511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertchar* dynamic_display(const void* pStruct, const char* prefix)
353611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
353711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    // Cast to APP_INFO ptr initially just to pull sType off struct
353811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if (pStruct == NULL) {
353911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        return NULL;
354011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
354111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    VkStructureType sType = ((VkApplicationInfo*)pStruct)->sType;
354211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    char indent[100];
354311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcpy(indent, "    ");
354411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    strcat(indent, prefix);
354511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    switch (sType)
354611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    {
354711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_APPLICATION_INFO:
354811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
354911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkapplicationinfo((VkApplicationInfo*)pStruct, indent);
355011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
355111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
355211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_BIND_SPARSE_INFO:
355311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
355411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkbindsparseinfo((VkBindSparseInfo*)pStruct, indent);
355511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
355611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
355711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO:
355811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
355911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkbuffercreateinfo((VkBufferCreateInfo*)pStruct, indent);
356011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
356111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
356211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER:
356311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
356411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkbuffermemorybarrier((VkBufferMemoryBarrier*)pStruct, indent);
356511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
356611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
356711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO:
356811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
356911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkbufferviewcreateinfo((VkBufferViewCreateInfo*)pStruct, indent);
357011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
357111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
357211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO:
357311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
357411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkcommandbufferallocateinfo((VkCommandBufferAllocateInfo*)pStruct, indent);
357511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
357611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
357711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO:
357811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
357911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkcommandbufferbegininfo((VkCommandBufferBeginInfo*)pStruct, indent);
358011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
358111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
358211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO:
358311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
358411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkcommandbufferinheritanceinfo((VkCommandBufferInheritanceInfo*)pStruct, indent);
358511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
358611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
358711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO:
358811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
358911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkcommandpoolcreateinfo((VkCommandPoolCreateInfo*)pStruct, indent);
359011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
359111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
359211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO:
359311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
359411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkcomputepipelinecreateinfo((VkComputePipelineCreateInfo*)pStruct, indent);
359511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
359611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
359711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET:
359811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
359911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkcopydescriptorset((VkCopyDescriptorSet*)pStruct, indent);
360011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
360111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
360211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO:
360311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
360411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkdescriptorpoolcreateinfo((VkDescriptorPoolCreateInfo*)pStruct, indent);
360511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
360611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
360711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO:
360811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
360911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkdescriptorsetallocateinfo((VkDescriptorSetAllocateInfo*)pStruct, indent);
361011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
361111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
361211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO:
361311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
361411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkdescriptorsetlayoutcreateinfo((VkDescriptorSetLayoutCreateInfo*)pStruct, indent);
361511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
361611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
361711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO:
361811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
361911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkdevicecreateinfo((VkDeviceCreateInfo*)pStruct, indent);
362011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
362111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
362211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO:
362311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
362411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkdevicequeuecreateinfo((VkDeviceQueueCreateInfo*)pStruct, indent);
362511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
362611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
362711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO:
362811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
362911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkeventcreateinfo((VkEventCreateInfo*)pStruct, indent);
363011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
363111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
363211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_FENCE_CREATE_INFO:
363311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
363411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkfencecreateinfo((VkFenceCreateInfo*)pStruct, indent);
363511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
363611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
363711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO:
363811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
363911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkframebuffercreateinfo((VkFramebufferCreateInfo*)pStruct, indent);
364011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
364111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
364211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO:
364311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
364411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkgraphicspipelinecreateinfo((VkGraphicsPipelineCreateInfo*)pStruct, indent);
364511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
364611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
364711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO:
364811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
364911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkimagecreateinfo((VkImageCreateInfo*)pStruct, indent);
365011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
365111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
365211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER:
365311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
365411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkimagememorybarrier((VkImageMemoryBarrier*)pStruct, indent);
365511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
365611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
365711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO:
365811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
365911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkimageviewcreateinfo((VkImageViewCreateInfo*)pStruct, indent);
366011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
366111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
366211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO:
366311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
366411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkinstancecreateinfo((VkInstanceCreateInfo*)pStruct, indent);
366511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
366611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
366711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE:
366811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
366911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkmappedmemoryrange((VkMappedMemoryRange*)pStruct, indent);
367011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
367111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
367211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO:
367311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
367411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkmemoryallocateinfo((VkMemoryAllocateInfo*)pStruct, indent);
367511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
367611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
367711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_MEMORY_BARRIER:
367811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
367911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkmemorybarrier((VkMemoryBarrier*)pStruct, indent);
368011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
368111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
368211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO:
368311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
368411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkpipelinecachecreateinfo((VkPipelineCacheCreateInfo*)pStruct, indent);
368511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
368611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
368711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO:
368811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
368911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkpipelinecolorblendstatecreateinfo((VkPipelineColorBlendStateCreateInfo*)pStruct, indent);
369011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
369111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
369211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO:
369311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
369411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkpipelinedepthstencilstatecreateinfo((VkPipelineDepthStencilStateCreateInfo*)pStruct, indent);
369511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
369611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
369711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO:
369811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
369911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkpipelinedynamicstatecreateinfo((VkPipelineDynamicStateCreateInfo*)pStruct, indent);
370011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
370111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
370211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO:
370311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
370411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkpipelineinputassemblystatecreateinfo((VkPipelineInputAssemblyStateCreateInfo*)pStruct, indent);
370511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
370611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
370711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO:
370811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
370911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkpipelinelayoutcreateinfo((VkPipelineLayoutCreateInfo*)pStruct, indent);
371011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
371111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
371211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO:
371311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
371411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkpipelinemultisamplestatecreateinfo((VkPipelineMultisampleStateCreateInfo*)pStruct, indent);
371511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
371611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
371711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO:
371811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
371911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkpipelinerasterizationstatecreateinfo((VkPipelineRasterizationStateCreateInfo*)pStruct, indent);
372011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
372111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
372211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO:
372311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
372411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkpipelineshaderstagecreateinfo((VkPipelineShaderStageCreateInfo*)pStruct, indent);
372511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
372611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
372711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO:
372811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
372911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkpipelinetessellationstatecreateinfo((VkPipelineTessellationStateCreateInfo*)pStruct, indent);
373011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
373111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
373211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO:
373311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
373411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkpipelinevertexinputstatecreateinfo((VkPipelineVertexInputStateCreateInfo*)pStruct, indent);
373511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
373611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
373711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO:
373811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
373911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkpipelineviewportstatecreateinfo((VkPipelineViewportStateCreateInfo*)pStruct, indent);
374011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
374111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
374211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO:
374311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
374411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkquerypoolcreateinfo((VkQueryPoolCreateInfo*)pStruct, indent);
374511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
374611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
374711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO:
374811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
374911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkrenderpassbegininfo((VkRenderPassBeginInfo*)pStruct, indent);
375011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
375111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
375211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO:
375311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
375411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkrenderpasscreateinfo((VkRenderPassCreateInfo*)pStruct, indent);
375511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
375611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
375711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO:
375811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
375911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vksamplercreateinfo((VkSamplerCreateInfo*)pStruct, indent);
376011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
376111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
376211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO:
376311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
376411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vksemaphorecreateinfo((VkSemaphoreCreateInfo*)pStruct, indent);
376511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
376611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
376711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO:
376811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
376911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkshadermodulecreateinfo((VkShaderModuleCreateInfo*)pStruct, indent);
377011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
377111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
377211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_SUBMIT_INFO:
377311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
377411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vksubmitinfo((VkSubmitInfo*)pStruct, indent);
377511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
377611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
377711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET:
377811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        {
377911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            return vk_print_vkwritedescriptorset((VkWriteDescriptorSet*)pStruct, indent);
378011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        }
378111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        break;
378211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        default:
378311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        return NULL;
378411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
378511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}