• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/* WARNING: This is auto-generated file. Do not modify, since changes will
2 * be lost! Modify the generating script instead.
3 */
4template<> const char*	getTypeName<VkInstance>						(void) { return "VkInstance";						}
5template<> const char*	getTypeName<VkPhysicalDevice>				(void) { return "VkPhysicalDevice";					}
6template<> const char*	getTypeName<VkDevice>						(void) { return "VkDevice";							}
7template<> const char*	getTypeName<VkQueue>						(void) { return "VkQueue";							}
8template<> const char*	getTypeName<VkSemaphore>					(void) { return "VkSemaphore";						}
9template<> const char*	getTypeName<VkCommandBuffer>				(void) { return "VkCommandBuffer";					}
10template<> const char*	getTypeName<VkFence>						(void) { return "VkFence";							}
11template<> const char*	getTypeName<VkDeviceMemory>					(void) { return "VkDeviceMemory";					}
12template<> const char*	getTypeName<VkBuffer>						(void) { return "VkBuffer";							}
13template<> const char*	getTypeName<VkImage>						(void) { return "VkImage";							}
14template<> const char*	getTypeName<VkEvent>						(void) { return "VkEvent";							}
15template<> const char*	getTypeName<VkQueryPool>					(void) { return "VkQueryPool";						}
16template<> const char*	getTypeName<VkBufferView>					(void) { return "VkBufferView";						}
17template<> const char*	getTypeName<VkImageView>					(void) { return "VkImageView";						}
18template<> const char*	getTypeName<VkShaderModule>					(void) { return "VkShaderModule";					}
19template<> const char*	getTypeName<VkPipelineCache>				(void) { return "VkPipelineCache";					}
20template<> const char*	getTypeName<VkPipelineLayout>				(void) { return "VkPipelineLayout";					}
21template<> const char*	getTypeName<VkRenderPass>					(void) { return "VkRenderPass";						}
22template<> const char*	getTypeName<VkPipeline>						(void) { return "VkPipeline";						}
23template<> const char*	getTypeName<VkDescriptorSetLayout>			(void) { return "VkDescriptorSetLayout";			}
24template<> const char*	getTypeName<VkSampler>						(void) { return "VkSampler";						}
25template<> const char*	getTypeName<VkDescriptorPool>				(void) { return "VkDescriptorPool";					}
26template<> const char*	getTypeName<VkDescriptorSet>				(void) { return "VkDescriptorSet";					}
27template<> const char*	getTypeName<VkFramebuffer>					(void) { return "VkFramebuffer";					}
28template<> const char*	getTypeName<VkCommandPool>					(void) { return "VkCommandPool";					}
29template<> const char*	getTypeName<VkSurfaceKHR>					(void) { return "VkSurfaceKHR";						}
30template<> const char*	getTypeName<VkSwapchainKHR>					(void) { return "VkSwapchainKHR";					}
31template<> const char*	getTypeName<VkDisplayKHR>					(void) { return "VkDisplayKHR";						}
32template<> const char*	getTypeName<VkDisplayModeKHR>				(void) { return "VkDisplayModeKHR";					}
33template<> const char*	getTypeName<VkDescriptorUpdateTemplateKHR>	(void) { return "VkDescriptorUpdateTemplateKHR";	}
34template<> const char*	getTypeName<VkSamplerYcbcrConversionKHR>	(void) { return "VkSamplerYcbcrConversionKHR";		}
35template<> const char*	getTypeName<VkDebugReportCallbackEXT>		(void) { return "VkDebugReportCallbackEXT";			}
36
37namespace pt
38{
39std::ostream& operator<< (std::ostream& s, XlibDisplayPtr				v) { return s << tcu::toHex(v.internal); }
40std::ostream& operator<< (std::ostream& s, XlibWindow					v) { return s << tcu::toHex(v.internal); }
41std::ostream& operator<< (std::ostream& s, XlibVisualID					v) { return s << tcu::toHex(v.internal); }
42std::ostream& operator<< (std::ostream& s, XcbConnectionPtr				v) { return s << tcu::toHex(v.internal); }
43std::ostream& operator<< (std::ostream& s, XcbWindow					v) { return s << tcu::toHex(v.internal); }
44std::ostream& operator<< (std::ostream& s, XcbVisualid					v) { return s << tcu::toHex(v.internal); }
45std::ostream& operator<< (std::ostream& s, WaylandDisplayPtr			v) { return s << tcu::toHex(v.internal); }
46std::ostream& operator<< (std::ostream& s, WaylandSurfacePtr			v) { return s << tcu::toHex(v.internal); }
47std::ostream& operator<< (std::ostream& s, MirConnectionPtr				v) { return s << tcu::toHex(v.internal); }
48std::ostream& operator<< (std::ostream& s, MirSurfacePtr				v) { return s << tcu::toHex(v.internal); }
49std::ostream& operator<< (std::ostream& s, AndroidNativeWindowPtr		v) { return s << tcu::toHex(v.internal); }
50std::ostream& operator<< (std::ostream& s, Win32InstanceHandle			v) { return s << tcu::toHex(v.internal); }
51std::ostream& operator<< (std::ostream& s, Win32WindowHandle			v) { return s << tcu::toHex(v.internal); }
52std::ostream& operator<< (std::ostream& s, Win32Handle					v) { return s << tcu::toHex(v.internal); }
53std::ostream& operator<< (std::ostream& s, Win32SecurityAttributesPtr	v) { return s << tcu::toHex(v.internal); }
54}
55
56const char* getPipelineCacheHeaderVersionName (VkPipelineCacheHeaderVersion value)
57{
58	switch (value)
59	{
60		case VK_PIPELINE_CACHE_HEADER_VERSION_ONE:	return "VK_PIPELINE_CACHE_HEADER_VERSION_ONE";
61		default:									return DE_NULL;
62	}
63}
64
65const char* getResultName (VkResult value)
66{
67	switch (value)
68	{
69		case VK_SUCCESS:							return "VK_SUCCESS";
70		case VK_NOT_READY:							return "VK_NOT_READY";
71		case VK_TIMEOUT:							return "VK_TIMEOUT";
72		case VK_EVENT_SET:							return "VK_EVENT_SET";
73		case VK_EVENT_RESET:						return "VK_EVENT_RESET";
74		case VK_INCOMPLETE:							return "VK_INCOMPLETE";
75		case VK_ERROR_OUT_OF_HOST_MEMORY:			return "VK_ERROR_OUT_OF_HOST_MEMORY";
76		case VK_ERROR_OUT_OF_DEVICE_MEMORY:			return "VK_ERROR_OUT_OF_DEVICE_MEMORY";
77		case VK_ERROR_INITIALIZATION_FAILED:		return "VK_ERROR_INITIALIZATION_FAILED";
78		case VK_ERROR_DEVICE_LOST:					return "VK_ERROR_DEVICE_LOST";
79		case VK_ERROR_MEMORY_MAP_FAILED:			return "VK_ERROR_MEMORY_MAP_FAILED";
80		case VK_ERROR_LAYER_NOT_PRESENT:			return "VK_ERROR_LAYER_NOT_PRESENT";
81		case VK_ERROR_EXTENSION_NOT_PRESENT:		return "VK_ERROR_EXTENSION_NOT_PRESENT";
82		case VK_ERROR_FEATURE_NOT_PRESENT:			return "VK_ERROR_FEATURE_NOT_PRESENT";
83		case VK_ERROR_INCOMPATIBLE_DRIVER:			return "VK_ERROR_INCOMPATIBLE_DRIVER";
84		case VK_ERROR_TOO_MANY_OBJECTS:				return "VK_ERROR_TOO_MANY_OBJECTS";
85		case VK_ERROR_FORMAT_NOT_SUPPORTED:			return "VK_ERROR_FORMAT_NOT_SUPPORTED";
86		case VK_ERROR_FRAGMENTED_POOL:				return "VK_ERROR_FRAGMENTED_POOL";
87		case VK_ERROR_SURFACE_LOST_KHR:				return "VK_ERROR_SURFACE_LOST_KHR";
88		case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR:		return "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR";
89		case VK_SUBOPTIMAL_KHR:						return "VK_SUBOPTIMAL_KHR";
90		case VK_ERROR_OUT_OF_DATE_KHR:				return "VK_ERROR_OUT_OF_DATE_KHR";
91		case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR:		return "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR";
92		case VK_ERROR_VALIDATION_FAILED_EXT:		return "VK_ERROR_VALIDATION_FAILED_EXT";
93		case VK_ERROR_INVALID_SHADER_NV:			return "VK_ERROR_INVALID_SHADER_NV";
94		case VK_ERROR_OUT_OF_POOL_MEMORY_KHR:		return "VK_ERROR_OUT_OF_POOL_MEMORY_KHR";
95		case VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR:	return "VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR";
96		default:									return DE_NULL;
97	}
98}
99
100const char* getStructureTypeName (VkStructureType value)
101{
102	switch (value)
103	{
104		case VK_STRUCTURE_TYPE_APPLICATION_INFO:											return "VK_STRUCTURE_TYPE_APPLICATION_INFO";
105		case VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO:										return "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO";
106		case VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO";
107		case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO:											return "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO";
108		case VK_STRUCTURE_TYPE_SUBMIT_INFO:													return "VK_STRUCTURE_TYPE_SUBMIT_INFO";
109		case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO:										return "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO";
110		case VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE:											return "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE";
111		case VK_STRUCTURE_TYPE_BIND_SPARSE_INFO:											return "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO";
112		case VK_STRUCTURE_TYPE_FENCE_CREATE_INFO:											return "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO";
113		case VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO:										return "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO";
114		case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO:											return "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO";
115		case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO:										return "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO";
116		case VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO:											return "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO";
117		case VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO:										return "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO";
118		case VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO:											return "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO";
119		case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO:										return "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO";
120		case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO";
121		case VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO";
122		case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO:							return "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO";
123		case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO:						return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO";
124		case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO:					return "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO";
125		case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO:						return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO";
126		case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO:							return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO";
127		case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO:					return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO";
128		case VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO:						return "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO";
129		case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO:					return "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO";
130		case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO:						return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO";
131		case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO:							return "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO";
132		case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO:								return "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO";
133		case VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO:								return "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO";
134		case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO:									return "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO";
135		case VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO:											return "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO";
136		case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO:							return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO";
137		case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO:									return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO";
138		case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO:								return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO";
139		case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET:										return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET";
140		case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET:											return "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET";
141		case VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO:										return "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO";
142		case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO:										return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO";
143		case VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO:									return "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO";
144		case VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO:								return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO";
145		case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO:								return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO";
146		case VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO:									return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO";
147		case VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO:										return "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO";
148		case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER:										return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER";
149		case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER:										return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER";
150		case VK_STRUCTURE_TYPE_MEMORY_BARRIER:												return "VK_STRUCTURE_TYPE_MEMORY_BARRIER";
151		case VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO";
152		case VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO";
153		case VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR:									return "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR";
154		case VK_STRUCTURE_TYPE_PRESENT_INFO_KHR:											return "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR";
155		case VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR:								return "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR";
156		case VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR:								return "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR";
157		case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR:									return "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR";
158		case VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR:								return "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR";
159		case VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR:									return "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR";
160		case VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR:								return "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR";
161		case VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR:									return "VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR";
162		case VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR:								return "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR";
163		case VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR:								return "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR";
164		case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT:						return "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT";
165		case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX:						return "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX";
166		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX";
167		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX";
168		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR";
169		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR";
170		case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR:										return "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR";
171		case VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR:								return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR";
172		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR";
173		case VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR:								return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR";
174		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR";
175		case VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR:						return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR";
176		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR";
177		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR";
178		case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR:						return "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR";
179		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR";
180		case VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR:								return "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR";
181		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR";
182		case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR:						return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR";
183		case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR:						return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR";
184		case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR:								return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR";
185		case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR:							return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR";
186		case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR:							return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR";
187		case VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR:							return "VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR";
188		case VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR:							return "VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR";
189		case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR:									return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR";
190		case VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR:									return "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR";
191		case VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR:										return "VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR";
192		case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR:					return "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR";
193		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR";
194		case VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR:							return "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR";
195		case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR:							return "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR";
196		case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR:						return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR";
197		case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR:						return "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR";
198		case VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR:									return "VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR";
199		case VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR:							return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR";
200		case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR:								return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR";
201		case VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR:									return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR";
202		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR";
203		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR";
204		case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR:											return "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR";
205		case VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR:					return "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR";
206		case VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE:									return "VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE";
207		case VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR:						return "VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR";
208		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR";
209		case VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR:								return "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR";
210		case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR:								return "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR";
211		case VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR:							return "VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR";
212		case VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR:							return "VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR";
213		case VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR:								return "VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR";
214		case VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR:									return "VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR";
215		case VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR:										return "VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR";
216		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR";
217		case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR:			return "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR";
218		case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR:							return "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR";
219		case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR:	return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR";
220		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR";
221		case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR:									return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR";
222		case VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR:										return "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR";
223		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR";
224		case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR:							return "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR";
225		case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR:							return "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR";
226		case VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR:						return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR";
227		case VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR:						return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR";
228		case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR:							return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR";
229		case VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR:					return "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR";
230		case VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR:									return "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR";
231		case VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR:						return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR";
232		case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR:					return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR";
233		case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR:							return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR";
234		case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR:							return "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR";
235		case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR:					return "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR";
236		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR:		return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR";
237		case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR:		return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR";
238		case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR:									return "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR";
239		case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR:									return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR";
240		default:																			return DE_NULL;
241	}
242}
243
244const char* getSystemAllocationScopeName (VkSystemAllocationScope value)
245{
246	switch (value)
247	{
248		case VK_SYSTEM_ALLOCATION_SCOPE_COMMAND:	return "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND";
249		case VK_SYSTEM_ALLOCATION_SCOPE_OBJECT:		return "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT";
250		case VK_SYSTEM_ALLOCATION_SCOPE_CACHE:		return "VK_SYSTEM_ALLOCATION_SCOPE_CACHE";
251		case VK_SYSTEM_ALLOCATION_SCOPE_DEVICE:		return "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE";
252		case VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE:	return "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE";
253		default:									return DE_NULL;
254	}
255}
256
257const char* getInternalAllocationTypeName (VkInternalAllocationType value)
258{
259	switch (value)
260	{
261		case VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE:	return "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE";
262		default:										return DE_NULL;
263	}
264}
265
266const char* getFormatName (VkFormat value)
267{
268	switch (value)
269	{
270		case VK_FORMAT_UNDEFINED:										return "VK_FORMAT_UNDEFINED";
271		case VK_FORMAT_R4G4_UNORM_PACK8:								return "VK_FORMAT_R4G4_UNORM_PACK8";
272		case VK_FORMAT_R4G4B4A4_UNORM_PACK16:							return "VK_FORMAT_R4G4B4A4_UNORM_PACK16";
273		case VK_FORMAT_B4G4R4A4_UNORM_PACK16:							return "VK_FORMAT_B4G4R4A4_UNORM_PACK16";
274		case VK_FORMAT_R5G6B5_UNORM_PACK16:								return "VK_FORMAT_R5G6B5_UNORM_PACK16";
275		case VK_FORMAT_B5G6R5_UNORM_PACK16:								return "VK_FORMAT_B5G6R5_UNORM_PACK16";
276		case VK_FORMAT_R5G5B5A1_UNORM_PACK16:							return "VK_FORMAT_R5G5B5A1_UNORM_PACK16";
277		case VK_FORMAT_B5G5R5A1_UNORM_PACK16:							return "VK_FORMAT_B5G5R5A1_UNORM_PACK16";
278		case VK_FORMAT_A1R5G5B5_UNORM_PACK16:							return "VK_FORMAT_A1R5G5B5_UNORM_PACK16";
279		case VK_FORMAT_R8_UNORM:										return "VK_FORMAT_R8_UNORM";
280		case VK_FORMAT_R8_SNORM:										return "VK_FORMAT_R8_SNORM";
281		case VK_FORMAT_R8_USCALED:										return "VK_FORMAT_R8_USCALED";
282		case VK_FORMAT_R8_SSCALED:										return "VK_FORMAT_R8_SSCALED";
283		case VK_FORMAT_R8_UINT:											return "VK_FORMAT_R8_UINT";
284		case VK_FORMAT_R8_SINT:											return "VK_FORMAT_R8_SINT";
285		case VK_FORMAT_R8_SRGB:											return "VK_FORMAT_R8_SRGB";
286		case VK_FORMAT_R8G8_UNORM:										return "VK_FORMAT_R8G8_UNORM";
287		case VK_FORMAT_R8G8_SNORM:										return "VK_FORMAT_R8G8_SNORM";
288		case VK_FORMAT_R8G8_USCALED:									return "VK_FORMAT_R8G8_USCALED";
289		case VK_FORMAT_R8G8_SSCALED:									return "VK_FORMAT_R8G8_SSCALED";
290		case VK_FORMAT_R8G8_UINT:										return "VK_FORMAT_R8G8_UINT";
291		case VK_FORMAT_R8G8_SINT:										return "VK_FORMAT_R8G8_SINT";
292		case VK_FORMAT_R8G8_SRGB:										return "VK_FORMAT_R8G8_SRGB";
293		case VK_FORMAT_R8G8B8_UNORM:									return "VK_FORMAT_R8G8B8_UNORM";
294		case VK_FORMAT_R8G8B8_SNORM:									return "VK_FORMAT_R8G8B8_SNORM";
295		case VK_FORMAT_R8G8B8_USCALED:									return "VK_FORMAT_R8G8B8_USCALED";
296		case VK_FORMAT_R8G8B8_SSCALED:									return "VK_FORMAT_R8G8B8_SSCALED";
297		case VK_FORMAT_R8G8B8_UINT:										return "VK_FORMAT_R8G8B8_UINT";
298		case VK_FORMAT_R8G8B8_SINT:										return "VK_FORMAT_R8G8B8_SINT";
299		case VK_FORMAT_R8G8B8_SRGB:										return "VK_FORMAT_R8G8B8_SRGB";
300		case VK_FORMAT_B8G8R8_UNORM:									return "VK_FORMAT_B8G8R8_UNORM";
301		case VK_FORMAT_B8G8R8_SNORM:									return "VK_FORMAT_B8G8R8_SNORM";
302		case VK_FORMAT_B8G8R8_USCALED:									return "VK_FORMAT_B8G8R8_USCALED";
303		case VK_FORMAT_B8G8R8_SSCALED:									return "VK_FORMAT_B8G8R8_SSCALED";
304		case VK_FORMAT_B8G8R8_UINT:										return "VK_FORMAT_B8G8R8_UINT";
305		case VK_FORMAT_B8G8R8_SINT:										return "VK_FORMAT_B8G8R8_SINT";
306		case VK_FORMAT_B8G8R8_SRGB:										return "VK_FORMAT_B8G8R8_SRGB";
307		case VK_FORMAT_R8G8B8A8_UNORM:									return "VK_FORMAT_R8G8B8A8_UNORM";
308		case VK_FORMAT_R8G8B8A8_SNORM:									return "VK_FORMAT_R8G8B8A8_SNORM";
309		case VK_FORMAT_R8G8B8A8_USCALED:								return "VK_FORMAT_R8G8B8A8_USCALED";
310		case VK_FORMAT_R8G8B8A8_SSCALED:								return "VK_FORMAT_R8G8B8A8_SSCALED";
311		case VK_FORMAT_R8G8B8A8_UINT:									return "VK_FORMAT_R8G8B8A8_UINT";
312		case VK_FORMAT_R8G8B8A8_SINT:									return "VK_FORMAT_R8G8B8A8_SINT";
313		case VK_FORMAT_R8G8B8A8_SRGB:									return "VK_FORMAT_R8G8B8A8_SRGB";
314		case VK_FORMAT_B8G8R8A8_UNORM:									return "VK_FORMAT_B8G8R8A8_UNORM";
315		case VK_FORMAT_B8G8R8A8_SNORM:									return "VK_FORMAT_B8G8R8A8_SNORM";
316		case VK_FORMAT_B8G8R8A8_USCALED:								return "VK_FORMAT_B8G8R8A8_USCALED";
317		case VK_FORMAT_B8G8R8A8_SSCALED:								return "VK_FORMAT_B8G8R8A8_SSCALED";
318		case VK_FORMAT_B8G8R8A8_UINT:									return "VK_FORMAT_B8G8R8A8_UINT";
319		case VK_FORMAT_B8G8R8A8_SINT:									return "VK_FORMAT_B8G8R8A8_SINT";
320		case VK_FORMAT_B8G8R8A8_SRGB:									return "VK_FORMAT_B8G8R8A8_SRGB";
321		case VK_FORMAT_A8B8G8R8_UNORM_PACK32:							return "VK_FORMAT_A8B8G8R8_UNORM_PACK32";
322		case VK_FORMAT_A8B8G8R8_SNORM_PACK32:							return "VK_FORMAT_A8B8G8R8_SNORM_PACK32";
323		case VK_FORMAT_A8B8G8R8_USCALED_PACK32:							return "VK_FORMAT_A8B8G8R8_USCALED_PACK32";
324		case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:							return "VK_FORMAT_A8B8G8R8_SSCALED_PACK32";
325		case VK_FORMAT_A8B8G8R8_UINT_PACK32:							return "VK_FORMAT_A8B8G8R8_UINT_PACK32";
326		case VK_FORMAT_A8B8G8R8_SINT_PACK32:							return "VK_FORMAT_A8B8G8R8_SINT_PACK32";
327		case VK_FORMAT_A8B8G8R8_SRGB_PACK32:							return "VK_FORMAT_A8B8G8R8_SRGB_PACK32";
328		case VK_FORMAT_A2R10G10B10_UNORM_PACK32:						return "VK_FORMAT_A2R10G10B10_UNORM_PACK32";
329		case VK_FORMAT_A2R10G10B10_SNORM_PACK32:						return "VK_FORMAT_A2R10G10B10_SNORM_PACK32";
330		case VK_FORMAT_A2R10G10B10_USCALED_PACK32:						return "VK_FORMAT_A2R10G10B10_USCALED_PACK32";
331		case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:						return "VK_FORMAT_A2R10G10B10_SSCALED_PACK32";
332		case VK_FORMAT_A2R10G10B10_UINT_PACK32:							return "VK_FORMAT_A2R10G10B10_UINT_PACK32";
333		case VK_FORMAT_A2R10G10B10_SINT_PACK32:							return "VK_FORMAT_A2R10G10B10_SINT_PACK32";
334		case VK_FORMAT_A2B10G10R10_UNORM_PACK32:						return "VK_FORMAT_A2B10G10R10_UNORM_PACK32";
335		case VK_FORMAT_A2B10G10R10_SNORM_PACK32:						return "VK_FORMAT_A2B10G10R10_SNORM_PACK32";
336		case VK_FORMAT_A2B10G10R10_USCALED_PACK32:						return "VK_FORMAT_A2B10G10R10_USCALED_PACK32";
337		case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:						return "VK_FORMAT_A2B10G10R10_SSCALED_PACK32";
338		case VK_FORMAT_A2B10G10R10_UINT_PACK32:							return "VK_FORMAT_A2B10G10R10_UINT_PACK32";
339		case VK_FORMAT_A2B10G10R10_SINT_PACK32:							return "VK_FORMAT_A2B10G10R10_SINT_PACK32";
340		case VK_FORMAT_R16_UNORM:										return "VK_FORMAT_R16_UNORM";
341		case VK_FORMAT_R16_SNORM:										return "VK_FORMAT_R16_SNORM";
342		case VK_FORMAT_R16_USCALED:										return "VK_FORMAT_R16_USCALED";
343		case VK_FORMAT_R16_SSCALED:										return "VK_FORMAT_R16_SSCALED";
344		case VK_FORMAT_R16_UINT:										return "VK_FORMAT_R16_UINT";
345		case VK_FORMAT_R16_SINT:										return "VK_FORMAT_R16_SINT";
346		case VK_FORMAT_R16_SFLOAT:										return "VK_FORMAT_R16_SFLOAT";
347		case VK_FORMAT_R16G16_UNORM:									return "VK_FORMAT_R16G16_UNORM";
348		case VK_FORMAT_R16G16_SNORM:									return "VK_FORMAT_R16G16_SNORM";
349		case VK_FORMAT_R16G16_USCALED:									return "VK_FORMAT_R16G16_USCALED";
350		case VK_FORMAT_R16G16_SSCALED:									return "VK_FORMAT_R16G16_SSCALED";
351		case VK_FORMAT_R16G16_UINT:										return "VK_FORMAT_R16G16_UINT";
352		case VK_FORMAT_R16G16_SINT:										return "VK_FORMAT_R16G16_SINT";
353		case VK_FORMAT_R16G16_SFLOAT:									return "VK_FORMAT_R16G16_SFLOAT";
354		case VK_FORMAT_R16G16B16_UNORM:									return "VK_FORMAT_R16G16B16_UNORM";
355		case VK_FORMAT_R16G16B16_SNORM:									return "VK_FORMAT_R16G16B16_SNORM";
356		case VK_FORMAT_R16G16B16_USCALED:								return "VK_FORMAT_R16G16B16_USCALED";
357		case VK_FORMAT_R16G16B16_SSCALED:								return "VK_FORMAT_R16G16B16_SSCALED";
358		case VK_FORMAT_R16G16B16_UINT:									return "VK_FORMAT_R16G16B16_UINT";
359		case VK_FORMAT_R16G16B16_SINT:									return "VK_FORMAT_R16G16B16_SINT";
360		case VK_FORMAT_R16G16B16_SFLOAT:								return "VK_FORMAT_R16G16B16_SFLOAT";
361		case VK_FORMAT_R16G16B16A16_UNORM:								return "VK_FORMAT_R16G16B16A16_UNORM";
362		case VK_FORMAT_R16G16B16A16_SNORM:								return "VK_FORMAT_R16G16B16A16_SNORM";
363		case VK_FORMAT_R16G16B16A16_USCALED:							return "VK_FORMAT_R16G16B16A16_USCALED";
364		case VK_FORMAT_R16G16B16A16_SSCALED:							return "VK_FORMAT_R16G16B16A16_SSCALED";
365		case VK_FORMAT_R16G16B16A16_UINT:								return "VK_FORMAT_R16G16B16A16_UINT";
366		case VK_FORMAT_R16G16B16A16_SINT:								return "VK_FORMAT_R16G16B16A16_SINT";
367		case VK_FORMAT_R16G16B16A16_SFLOAT:								return "VK_FORMAT_R16G16B16A16_SFLOAT";
368		case VK_FORMAT_R32_UINT:										return "VK_FORMAT_R32_UINT";
369		case VK_FORMAT_R32_SINT:										return "VK_FORMAT_R32_SINT";
370		case VK_FORMAT_R32_SFLOAT:										return "VK_FORMAT_R32_SFLOAT";
371		case VK_FORMAT_R32G32_UINT:										return "VK_FORMAT_R32G32_UINT";
372		case VK_FORMAT_R32G32_SINT:										return "VK_FORMAT_R32G32_SINT";
373		case VK_FORMAT_R32G32_SFLOAT:									return "VK_FORMAT_R32G32_SFLOAT";
374		case VK_FORMAT_R32G32B32_UINT:									return "VK_FORMAT_R32G32B32_UINT";
375		case VK_FORMAT_R32G32B32_SINT:									return "VK_FORMAT_R32G32B32_SINT";
376		case VK_FORMAT_R32G32B32_SFLOAT:								return "VK_FORMAT_R32G32B32_SFLOAT";
377		case VK_FORMAT_R32G32B32A32_UINT:								return "VK_FORMAT_R32G32B32A32_UINT";
378		case VK_FORMAT_R32G32B32A32_SINT:								return "VK_FORMAT_R32G32B32A32_SINT";
379		case VK_FORMAT_R32G32B32A32_SFLOAT:								return "VK_FORMAT_R32G32B32A32_SFLOAT";
380		case VK_FORMAT_R64_UINT:										return "VK_FORMAT_R64_UINT";
381		case VK_FORMAT_R64_SINT:										return "VK_FORMAT_R64_SINT";
382		case VK_FORMAT_R64_SFLOAT:										return "VK_FORMAT_R64_SFLOAT";
383		case VK_FORMAT_R64G64_UINT:										return "VK_FORMAT_R64G64_UINT";
384		case VK_FORMAT_R64G64_SINT:										return "VK_FORMAT_R64G64_SINT";
385		case VK_FORMAT_R64G64_SFLOAT:									return "VK_FORMAT_R64G64_SFLOAT";
386		case VK_FORMAT_R64G64B64_UINT:									return "VK_FORMAT_R64G64B64_UINT";
387		case VK_FORMAT_R64G64B64_SINT:									return "VK_FORMAT_R64G64B64_SINT";
388		case VK_FORMAT_R64G64B64_SFLOAT:								return "VK_FORMAT_R64G64B64_SFLOAT";
389		case VK_FORMAT_R64G64B64A64_UINT:								return "VK_FORMAT_R64G64B64A64_UINT";
390		case VK_FORMAT_R64G64B64A64_SINT:								return "VK_FORMAT_R64G64B64A64_SINT";
391		case VK_FORMAT_R64G64B64A64_SFLOAT:								return "VK_FORMAT_R64G64B64A64_SFLOAT";
392		case VK_FORMAT_B10G11R11_UFLOAT_PACK32:							return "VK_FORMAT_B10G11R11_UFLOAT_PACK32";
393		case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:							return "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32";
394		case VK_FORMAT_D16_UNORM:										return "VK_FORMAT_D16_UNORM";
395		case VK_FORMAT_X8_D24_UNORM_PACK32:								return "VK_FORMAT_X8_D24_UNORM_PACK32";
396		case VK_FORMAT_D32_SFLOAT:										return "VK_FORMAT_D32_SFLOAT";
397		case VK_FORMAT_S8_UINT:											return "VK_FORMAT_S8_UINT";
398		case VK_FORMAT_D16_UNORM_S8_UINT:								return "VK_FORMAT_D16_UNORM_S8_UINT";
399		case VK_FORMAT_D24_UNORM_S8_UINT:								return "VK_FORMAT_D24_UNORM_S8_UINT";
400		case VK_FORMAT_D32_SFLOAT_S8_UINT:								return "VK_FORMAT_D32_SFLOAT_S8_UINT";
401		case VK_FORMAT_BC1_RGB_UNORM_BLOCK:								return "VK_FORMAT_BC1_RGB_UNORM_BLOCK";
402		case VK_FORMAT_BC1_RGB_SRGB_BLOCK:								return "VK_FORMAT_BC1_RGB_SRGB_BLOCK";
403		case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:							return "VK_FORMAT_BC1_RGBA_UNORM_BLOCK";
404		case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:								return "VK_FORMAT_BC1_RGBA_SRGB_BLOCK";
405		case VK_FORMAT_BC2_UNORM_BLOCK:									return "VK_FORMAT_BC2_UNORM_BLOCK";
406		case VK_FORMAT_BC2_SRGB_BLOCK:									return "VK_FORMAT_BC2_SRGB_BLOCK";
407		case VK_FORMAT_BC3_UNORM_BLOCK:									return "VK_FORMAT_BC3_UNORM_BLOCK";
408		case VK_FORMAT_BC3_SRGB_BLOCK:									return "VK_FORMAT_BC3_SRGB_BLOCK";
409		case VK_FORMAT_BC4_UNORM_BLOCK:									return "VK_FORMAT_BC4_UNORM_BLOCK";
410		case VK_FORMAT_BC4_SNORM_BLOCK:									return "VK_FORMAT_BC4_SNORM_BLOCK";
411		case VK_FORMAT_BC5_UNORM_BLOCK:									return "VK_FORMAT_BC5_UNORM_BLOCK";
412		case VK_FORMAT_BC5_SNORM_BLOCK:									return "VK_FORMAT_BC5_SNORM_BLOCK";
413		case VK_FORMAT_BC6H_UFLOAT_BLOCK:								return "VK_FORMAT_BC6H_UFLOAT_BLOCK";
414		case VK_FORMAT_BC6H_SFLOAT_BLOCK:								return "VK_FORMAT_BC6H_SFLOAT_BLOCK";
415		case VK_FORMAT_BC7_UNORM_BLOCK:									return "VK_FORMAT_BC7_UNORM_BLOCK";
416		case VK_FORMAT_BC7_SRGB_BLOCK:									return "VK_FORMAT_BC7_SRGB_BLOCK";
417		case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:							return "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK";
418		case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:							return "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK";
419		case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:						return "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK";
420		case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:						return "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK";
421		case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:						return "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK";
422		case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:						return "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK";
423		case VK_FORMAT_EAC_R11_UNORM_BLOCK:								return "VK_FORMAT_EAC_R11_UNORM_BLOCK";
424		case VK_FORMAT_EAC_R11_SNORM_BLOCK:								return "VK_FORMAT_EAC_R11_SNORM_BLOCK";
425		case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:							return "VK_FORMAT_EAC_R11G11_UNORM_BLOCK";
426		case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:							return "VK_FORMAT_EAC_R11G11_SNORM_BLOCK";
427		case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:							return "VK_FORMAT_ASTC_4x4_UNORM_BLOCK";
428		case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:								return "VK_FORMAT_ASTC_4x4_SRGB_BLOCK";
429		case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:							return "VK_FORMAT_ASTC_5x4_UNORM_BLOCK";
430		case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:								return "VK_FORMAT_ASTC_5x4_SRGB_BLOCK";
431		case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:							return "VK_FORMAT_ASTC_5x5_UNORM_BLOCK";
432		case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:								return "VK_FORMAT_ASTC_5x5_SRGB_BLOCK";
433		case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:							return "VK_FORMAT_ASTC_6x5_UNORM_BLOCK";
434		case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:								return "VK_FORMAT_ASTC_6x5_SRGB_BLOCK";
435		case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:							return "VK_FORMAT_ASTC_6x6_UNORM_BLOCK";
436		case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:								return "VK_FORMAT_ASTC_6x6_SRGB_BLOCK";
437		case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:							return "VK_FORMAT_ASTC_8x5_UNORM_BLOCK";
438		case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:								return "VK_FORMAT_ASTC_8x5_SRGB_BLOCK";
439		case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:							return "VK_FORMAT_ASTC_8x6_UNORM_BLOCK";
440		case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:								return "VK_FORMAT_ASTC_8x6_SRGB_BLOCK";
441		case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:							return "VK_FORMAT_ASTC_8x8_UNORM_BLOCK";
442		case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:								return "VK_FORMAT_ASTC_8x8_SRGB_BLOCK";
443		case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:							return "VK_FORMAT_ASTC_10x5_UNORM_BLOCK";
444		case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:							return "VK_FORMAT_ASTC_10x5_SRGB_BLOCK";
445		case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:							return "VK_FORMAT_ASTC_10x6_UNORM_BLOCK";
446		case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:							return "VK_FORMAT_ASTC_10x6_SRGB_BLOCK";
447		case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:							return "VK_FORMAT_ASTC_10x8_UNORM_BLOCK";
448		case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:							return "VK_FORMAT_ASTC_10x8_SRGB_BLOCK";
449		case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:							return "VK_FORMAT_ASTC_10x10_UNORM_BLOCK";
450		case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:							return "VK_FORMAT_ASTC_10x10_SRGB_BLOCK";
451		case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:							return "VK_FORMAT_ASTC_12x10_UNORM_BLOCK";
452		case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:							return "VK_FORMAT_ASTC_12x10_SRGB_BLOCK";
453		case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:							return "VK_FORMAT_ASTC_12x12_UNORM_BLOCK";
454		case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:							return "VK_FORMAT_ASTC_12x12_SRGB_BLOCK";
455		case VK_FORMAT_G8B8G8R8_422_UNORM_KHR:							return "VK_FORMAT_G8B8G8R8_422_UNORM_KHR";
456		case VK_FORMAT_B8G8R8G8_422_UNORM_KHR:							return "VK_FORMAT_B8G8R8G8_422_UNORM_KHR";
457		case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR:					return "VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR";
458		case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR:					return "VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR";
459		case VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR:					return "VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR";
460		case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR:					return "VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR";
461		case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR:					return "VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR";
462		case VK_FORMAT_R10X6_UNORM_PACK16_KHR:							return "VK_FORMAT_R10X6_UNORM_PACK16_KHR";
463		case VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR:					return "VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR";
464		case VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR:			return "VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR";
465		case VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR:		return "VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR";
466		case VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR:		return "VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR";
467		case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR:	return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR";
468		case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR:	return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR";
469		case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR:	return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR";
470		case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR:	return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR";
471		case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR:	return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR";
472		case VK_FORMAT_R12X4_UNORM_PACK16_KHR:							return "VK_FORMAT_R12X4_UNORM_PACK16_KHR";
473		case VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR:					return "VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR";
474		case VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR:			return "VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR";
475		case VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR:		return "VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR";
476		case VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR:		return "VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR";
477		case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR:	return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR";
478		case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR:	return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR";
479		case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR:	return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR";
480		case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR:	return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR";
481		case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR:	return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR";
482		case VK_FORMAT_G16B16G16R16_422_UNORM_KHR:						return "VK_FORMAT_G16B16G16R16_422_UNORM_KHR";
483		case VK_FORMAT_B16G16R16G16_422_UNORM_KHR:						return "VK_FORMAT_B16G16R16G16_422_UNORM_KHR";
484		case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR:				return "VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR";
485		case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR:					return "VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR";
486		case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR:				return "VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR";
487		case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR:					return "VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR";
488		case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR:				return "VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR";
489		default:														return DE_NULL;
490	}
491}
492
493const char* getImageTypeName (VkImageType value)
494{
495	switch (value)
496	{
497		case VK_IMAGE_TYPE_1D:	return "VK_IMAGE_TYPE_1D";
498		case VK_IMAGE_TYPE_2D:	return "VK_IMAGE_TYPE_2D";
499		case VK_IMAGE_TYPE_3D:	return "VK_IMAGE_TYPE_3D";
500		default:				return DE_NULL;
501	}
502}
503
504const char* getImageTilingName (VkImageTiling value)
505{
506	switch (value)
507	{
508		case VK_IMAGE_TILING_OPTIMAL:	return "VK_IMAGE_TILING_OPTIMAL";
509		case VK_IMAGE_TILING_LINEAR:	return "VK_IMAGE_TILING_LINEAR";
510		default:						return DE_NULL;
511	}
512}
513
514const char* getPhysicalDeviceTypeName (VkPhysicalDeviceType value)
515{
516	switch (value)
517	{
518		case VK_PHYSICAL_DEVICE_TYPE_OTHER:				return "VK_PHYSICAL_DEVICE_TYPE_OTHER";
519		case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU:	return "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU";
520		case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU:		return "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU";
521		case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU:		return "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU";
522		case VK_PHYSICAL_DEVICE_TYPE_CPU:				return "VK_PHYSICAL_DEVICE_TYPE_CPU";
523		default:										return DE_NULL;
524	}
525}
526
527const char* getQueryTypeName (VkQueryType value)
528{
529	switch (value)
530	{
531		case VK_QUERY_TYPE_OCCLUSION:			return "VK_QUERY_TYPE_OCCLUSION";
532		case VK_QUERY_TYPE_PIPELINE_STATISTICS:	return "VK_QUERY_TYPE_PIPELINE_STATISTICS";
533		case VK_QUERY_TYPE_TIMESTAMP:			return "VK_QUERY_TYPE_TIMESTAMP";
534		default:								return DE_NULL;
535	}
536}
537
538const char* getSharingModeName (VkSharingMode value)
539{
540	switch (value)
541	{
542		case VK_SHARING_MODE_EXCLUSIVE:		return "VK_SHARING_MODE_EXCLUSIVE";
543		case VK_SHARING_MODE_CONCURRENT:	return "VK_SHARING_MODE_CONCURRENT";
544		default:							return DE_NULL;
545	}
546}
547
548const char* getImageLayoutName (VkImageLayout value)
549{
550	switch (value)
551	{
552		case VK_IMAGE_LAYOUT_UNDEFINED:											return "VK_IMAGE_LAYOUT_UNDEFINED";
553		case VK_IMAGE_LAYOUT_GENERAL:											return "VK_IMAGE_LAYOUT_GENERAL";
554		case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:							return "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL";
555		case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:					return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL";
556		case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL:					return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL";
557		case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:							return "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL";
558		case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:								return "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL";
559		case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:								return "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL";
560		case VK_IMAGE_LAYOUT_PREINITIALIZED:									return "VK_IMAGE_LAYOUT_PREINITIALIZED";
561		case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR:									return "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR";
562		case VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR:								return "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR";
563		case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR:	return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR";
564		case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR:	return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR";
565		default:																return DE_NULL;
566	}
567}
568
569const char* getImageViewTypeName (VkImageViewType value)
570{
571	switch (value)
572	{
573		case VK_IMAGE_VIEW_TYPE_1D:			return "VK_IMAGE_VIEW_TYPE_1D";
574		case VK_IMAGE_VIEW_TYPE_2D:			return "VK_IMAGE_VIEW_TYPE_2D";
575		case VK_IMAGE_VIEW_TYPE_3D:			return "VK_IMAGE_VIEW_TYPE_3D";
576		case VK_IMAGE_VIEW_TYPE_CUBE:		return "VK_IMAGE_VIEW_TYPE_CUBE";
577		case VK_IMAGE_VIEW_TYPE_1D_ARRAY:	return "VK_IMAGE_VIEW_TYPE_1D_ARRAY";
578		case VK_IMAGE_VIEW_TYPE_2D_ARRAY:	return "VK_IMAGE_VIEW_TYPE_2D_ARRAY";
579		case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY:	return "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY";
580		default:							return DE_NULL;
581	}
582}
583
584const char* getComponentSwizzleName (VkComponentSwizzle value)
585{
586	switch (value)
587	{
588		case VK_COMPONENT_SWIZZLE_IDENTITY:	return "VK_COMPONENT_SWIZZLE_IDENTITY";
589		case VK_COMPONENT_SWIZZLE_ZERO:		return "VK_COMPONENT_SWIZZLE_ZERO";
590		case VK_COMPONENT_SWIZZLE_ONE:		return "VK_COMPONENT_SWIZZLE_ONE";
591		case VK_COMPONENT_SWIZZLE_R:		return "VK_COMPONENT_SWIZZLE_R";
592		case VK_COMPONENT_SWIZZLE_G:		return "VK_COMPONENT_SWIZZLE_G";
593		case VK_COMPONENT_SWIZZLE_B:		return "VK_COMPONENT_SWIZZLE_B";
594		case VK_COMPONENT_SWIZZLE_A:		return "VK_COMPONENT_SWIZZLE_A";
595		default:							return DE_NULL;
596	}
597}
598
599const char* getVertexInputRateName (VkVertexInputRate value)
600{
601	switch (value)
602	{
603		case VK_VERTEX_INPUT_RATE_VERTEX:	return "VK_VERTEX_INPUT_RATE_VERTEX";
604		case VK_VERTEX_INPUT_RATE_INSTANCE:	return "VK_VERTEX_INPUT_RATE_INSTANCE";
605		default:							return DE_NULL;
606	}
607}
608
609const char* getPrimitiveTopologyName (VkPrimitiveTopology value)
610{
611	switch (value)
612	{
613		case VK_PRIMITIVE_TOPOLOGY_POINT_LIST:						return "VK_PRIMITIVE_TOPOLOGY_POINT_LIST";
614		case VK_PRIMITIVE_TOPOLOGY_LINE_LIST:						return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST";
615		case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:						return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP";
616		case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:					return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST";
617		case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:					return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP";
618		case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:					return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN";
619		case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY:		return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY";
620		case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY:		return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY";
621		case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY:	return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY";
622		case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY:	return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY";
623		case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST:						return "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST";
624		default:													return DE_NULL;
625	}
626}
627
628const char* getPolygonModeName (VkPolygonMode value)
629{
630	switch (value)
631	{
632		case VK_POLYGON_MODE_FILL:	return "VK_POLYGON_MODE_FILL";
633		case VK_POLYGON_MODE_LINE:	return "VK_POLYGON_MODE_LINE";
634		case VK_POLYGON_MODE_POINT:	return "VK_POLYGON_MODE_POINT";
635		default:					return DE_NULL;
636	}
637}
638
639const char* getFrontFaceName (VkFrontFace value)
640{
641	switch (value)
642	{
643		case VK_FRONT_FACE_COUNTER_CLOCKWISE:	return "VK_FRONT_FACE_COUNTER_CLOCKWISE";
644		case VK_FRONT_FACE_CLOCKWISE:			return "VK_FRONT_FACE_CLOCKWISE";
645		default:								return DE_NULL;
646	}
647}
648
649const char* getCompareOpName (VkCompareOp value)
650{
651	switch (value)
652	{
653		case VK_COMPARE_OP_NEVER:				return "VK_COMPARE_OP_NEVER";
654		case VK_COMPARE_OP_LESS:				return "VK_COMPARE_OP_LESS";
655		case VK_COMPARE_OP_EQUAL:				return "VK_COMPARE_OP_EQUAL";
656		case VK_COMPARE_OP_LESS_OR_EQUAL:		return "VK_COMPARE_OP_LESS_OR_EQUAL";
657		case VK_COMPARE_OP_GREATER:				return "VK_COMPARE_OP_GREATER";
658		case VK_COMPARE_OP_NOT_EQUAL:			return "VK_COMPARE_OP_NOT_EQUAL";
659		case VK_COMPARE_OP_GREATER_OR_EQUAL:	return "VK_COMPARE_OP_GREATER_OR_EQUAL";
660		case VK_COMPARE_OP_ALWAYS:				return "VK_COMPARE_OP_ALWAYS";
661		default:								return DE_NULL;
662	}
663}
664
665const char* getStencilOpName (VkStencilOp value)
666{
667	switch (value)
668	{
669		case VK_STENCIL_OP_KEEP:				return "VK_STENCIL_OP_KEEP";
670		case VK_STENCIL_OP_ZERO:				return "VK_STENCIL_OP_ZERO";
671		case VK_STENCIL_OP_REPLACE:				return "VK_STENCIL_OP_REPLACE";
672		case VK_STENCIL_OP_INCREMENT_AND_CLAMP:	return "VK_STENCIL_OP_INCREMENT_AND_CLAMP";
673		case VK_STENCIL_OP_DECREMENT_AND_CLAMP:	return "VK_STENCIL_OP_DECREMENT_AND_CLAMP";
674		case VK_STENCIL_OP_INVERT:				return "VK_STENCIL_OP_INVERT";
675		case VK_STENCIL_OP_INCREMENT_AND_WRAP:	return "VK_STENCIL_OP_INCREMENT_AND_WRAP";
676		case VK_STENCIL_OP_DECREMENT_AND_WRAP:	return "VK_STENCIL_OP_DECREMENT_AND_WRAP";
677		default:								return DE_NULL;
678	}
679}
680
681const char* getLogicOpName (VkLogicOp value)
682{
683	switch (value)
684	{
685		case VK_LOGIC_OP_CLEAR:			return "VK_LOGIC_OP_CLEAR";
686		case VK_LOGIC_OP_AND:			return "VK_LOGIC_OP_AND";
687		case VK_LOGIC_OP_AND_REVERSE:	return "VK_LOGIC_OP_AND_REVERSE";
688		case VK_LOGIC_OP_COPY:			return "VK_LOGIC_OP_COPY";
689		case VK_LOGIC_OP_AND_INVERTED:	return "VK_LOGIC_OP_AND_INVERTED";
690		case VK_LOGIC_OP_NO_OP:			return "VK_LOGIC_OP_NO_OP";
691		case VK_LOGIC_OP_XOR:			return "VK_LOGIC_OP_XOR";
692		case VK_LOGIC_OP_OR:			return "VK_LOGIC_OP_OR";
693		case VK_LOGIC_OP_NOR:			return "VK_LOGIC_OP_NOR";
694		case VK_LOGIC_OP_EQUIVALENT:	return "VK_LOGIC_OP_EQUIVALENT";
695		case VK_LOGIC_OP_INVERT:		return "VK_LOGIC_OP_INVERT";
696		case VK_LOGIC_OP_OR_REVERSE:	return "VK_LOGIC_OP_OR_REVERSE";
697		case VK_LOGIC_OP_COPY_INVERTED:	return "VK_LOGIC_OP_COPY_INVERTED";
698		case VK_LOGIC_OP_OR_INVERTED:	return "VK_LOGIC_OP_OR_INVERTED";
699		case VK_LOGIC_OP_NAND:			return "VK_LOGIC_OP_NAND";
700		case VK_LOGIC_OP_SET:			return "VK_LOGIC_OP_SET";
701		default:						return DE_NULL;
702	}
703}
704
705const char* getBlendFactorName (VkBlendFactor value)
706{
707	switch (value)
708	{
709		case VK_BLEND_FACTOR_ZERO:						return "VK_BLEND_FACTOR_ZERO";
710		case VK_BLEND_FACTOR_ONE:						return "VK_BLEND_FACTOR_ONE";
711		case VK_BLEND_FACTOR_SRC_COLOR:					return "VK_BLEND_FACTOR_SRC_COLOR";
712		case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR:		return "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR";
713		case VK_BLEND_FACTOR_DST_COLOR:					return "VK_BLEND_FACTOR_DST_COLOR";
714		case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR:		return "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR";
715		case VK_BLEND_FACTOR_SRC_ALPHA:					return "VK_BLEND_FACTOR_SRC_ALPHA";
716		case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA:		return "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA";
717		case VK_BLEND_FACTOR_DST_ALPHA:					return "VK_BLEND_FACTOR_DST_ALPHA";
718		case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA:		return "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA";
719		case VK_BLEND_FACTOR_CONSTANT_COLOR:			return "VK_BLEND_FACTOR_CONSTANT_COLOR";
720		case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR:	return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR";
721		case VK_BLEND_FACTOR_CONSTANT_ALPHA:			return "VK_BLEND_FACTOR_CONSTANT_ALPHA";
722		case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA:	return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA";
723		case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE:		return "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE";
724		case VK_BLEND_FACTOR_SRC1_COLOR:				return "VK_BLEND_FACTOR_SRC1_COLOR";
725		case VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR:		return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR";
726		case VK_BLEND_FACTOR_SRC1_ALPHA:				return "VK_BLEND_FACTOR_SRC1_ALPHA";
727		case VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA:		return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA";
728		default:										return DE_NULL;
729	}
730}
731
732const char* getBlendOpName (VkBlendOp value)
733{
734	switch (value)
735	{
736		case VK_BLEND_OP_ADD:				return "VK_BLEND_OP_ADD";
737		case VK_BLEND_OP_SUBTRACT:			return "VK_BLEND_OP_SUBTRACT";
738		case VK_BLEND_OP_REVERSE_SUBTRACT:	return "VK_BLEND_OP_REVERSE_SUBTRACT";
739		case VK_BLEND_OP_MIN:				return "VK_BLEND_OP_MIN";
740		case VK_BLEND_OP_MAX:				return "VK_BLEND_OP_MAX";
741		default:							return DE_NULL;
742	}
743}
744
745const char* getDynamicStateName (VkDynamicState value)
746{
747	switch (value)
748	{
749		case VK_DYNAMIC_STATE_VIEWPORT:				return "VK_DYNAMIC_STATE_VIEWPORT";
750		case VK_DYNAMIC_STATE_SCISSOR:				return "VK_DYNAMIC_STATE_SCISSOR";
751		case VK_DYNAMIC_STATE_LINE_WIDTH:			return "VK_DYNAMIC_STATE_LINE_WIDTH";
752		case VK_DYNAMIC_STATE_DEPTH_BIAS:			return "VK_DYNAMIC_STATE_DEPTH_BIAS";
753		case VK_DYNAMIC_STATE_BLEND_CONSTANTS:		return "VK_DYNAMIC_STATE_BLEND_CONSTANTS";
754		case VK_DYNAMIC_STATE_DEPTH_BOUNDS:			return "VK_DYNAMIC_STATE_DEPTH_BOUNDS";
755		case VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK:	return "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK";
756		case VK_DYNAMIC_STATE_STENCIL_WRITE_MASK:	return "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK";
757		case VK_DYNAMIC_STATE_STENCIL_REFERENCE:	return "VK_DYNAMIC_STATE_STENCIL_REFERENCE";
758		default:									return DE_NULL;
759	}
760}
761
762const char* getFilterName (VkFilter value)
763{
764	switch (value)
765	{
766		case VK_FILTER_NEAREST:	return "VK_FILTER_NEAREST";
767		case VK_FILTER_LINEAR:	return "VK_FILTER_LINEAR";
768		default:				return DE_NULL;
769	}
770}
771
772const char* getSamplerMipmapModeName (VkSamplerMipmapMode value)
773{
774	switch (value)
775	{
776		case VK_SAMPLER_MIPMAP_MODE_NEAREST:	return "VK_SAMPLER_MIPMAP_MODE_NEAREST";
777		case VK_SAMPLER_MIPMAP_MODE_LINEAR:		return "VK_SAMPLER_MIPMAP_MODE_LINEAR";
778		default:								return DE_NULL;
779	}
780}
781
782const char* getSamplerAddressModeName (VkSamplerAddressMode value)
783{
784	switch (value)
785	{
786		case VK_SAMPLER_ADDRESS_MODE_REPEAT:				return "VK_SAMPLER_ADDRESS_MODE_REPEAT";
787		case VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT:		return "VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT";
788		case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE:			return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE";
789		case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER:		return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER";
790		case VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE:	return "VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE";
791		default:											return DE_NULL;
792	}
793}
794
795const char* getBorderColorName (VkBorderColor value)
796{
797	switch (value)
798	{
799		case VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK:	return "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK";
800		case VK_BORDER_COLOR_INT_TRANSPARENT_BLACK:		return "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK";
801		case VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK:		return "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK";
802		case VK_BORDER_COLOR_INT_OPAQUE_BLACK:			return "VK_BORDER_COLOR_INT_OPAQUE_BLACK";
803		case VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE:		return "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE";
804		case VK_BORDER_COLOR_INT_OPAQUE_WHITE:			return "VK_BORDER_COLOR_INT_OPAQUE_WHITE";
805		default:										return DE_NULL;
806	}
807}
808
809const char* getDescriptorTypeName (VkDescriptorType value)
810{
811	switch (value)
812	{
813		case VK_DESCRIPTOR_TYPE_SAMPLER:				return "VK_DESCRIPTOR_TYPE_SAMPLER";
814		case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:	return "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER";
815		case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:			return "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE";
816		case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:			return "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE";
817		case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:	return "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER";
818		case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:	return "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER";
819		case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:			return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER";
820		case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:			return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER";
821		case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:	return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC";
822		case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:	return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC";
823		case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:		return "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT";
824		default:										return DE_NULL;
825	}
826}
827
828const char* getAttachmentLoadOpName (VkAttachmentLoadOp value)
829{
830	switch (value)
831	{
832		case VK_ATTACHMENT_LOAD_OP_LOAD:		return "VK_ATTACHMENT_LOAD_OP_LOAD";
833		case VK_ATTACHMENT_LOAD_OP_CLEAR:		return "VK_ATTACHMENT_LOAD_OP_CLEAR";
834		case VK_ATTACHMENT_LOAD_OP_DONT_CARE:	return "VK_ATTACHMENT_LOAD_OP_DONT_CARE";
835		default:								return DE_NULL;
836	}
837}
838
839const char* getAttachmentStoreOpName (VkAttachmentStoreOp value)
840{
841	switch (value)
842	{
843		case VK_ATTACHMENT_STORE_OP_STORE:		return "VK_ATTACHMENT_STORE_OP_STORE";
844		case VK_ATTACHMENT_STORE_OP_DONT_CARE:	return "VK_ATTACHMENT_STORE_OP_DONT_CARE";
845		default:								return DE_NULL;
846	}
847}
848
849const char* getPipelineBindPointName (VkPipelineBindPoint value)
850{
851	switch (value)
852	{
853		case VK_PIPELINE_BIND_POINT_GRAPHICS:	return "VK_PIPELINE_BIND_POINT_GRAPHICS";
854		case VK_PIPELINE_BIND_POINT_COMPUTE:	return "VK_PIPELINE_BIND_POINT_COMPUTE";
855		default:								return DE_NULL;
856	}
857}
858
859const char* getCommandBufferLevelName (VkCommandBufferLevel value)
860{
861	switch (value)
862	{
863		case VK_COMMAND_BUFFER_LEVEL_PRIMARY:	return "VK_COMMAND_BUFFER_LEVEL_PRIMARY";
864		case VK_COMMAND_BUFFER_LEVEL_SECONDARY:	return "VK_COMMAND_BUFFER_LEVEL_SECONDARY";
865		default:								return DE_NULL;
866	}
867}
868
869const char* getIndexTypeName (VkIndexType value)
870{
871	switch (value)
872	{
873		case VK_INDEX_TYPE_UINT16:	return "VK_INDEX_TYPE_UINT16";
874		case VK_INDEX_TYPE_UINT32:	return "VK_INDEX_TYPE_UINT32";
875		default:					return DE_NULL;
876	}
877}
878
879const char* getSubpassContentsName (VkSubpassContents value)
880{
881	switch (value)
882	{
883		case VK_SUBPASS_CONTENTS_INLINE:					return "VK_SUBPASS_CONTENTS_INLINE";
884		case VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS:	return "VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS";
885		default:											return DE_NULL;
886	}
887}
888
889const char* getObjectTypeName (VkObjectType value)
890{
891	switch (value)
892	{
893		case VK_OBJECT_TYPE_UNKNOWN:						return "VK_OBJECT_TYPE_UNKNOWN";
894		case VK_OBJECT_TYPE_INSTANCE:						return "VK_OBJECT_TYPE_INSTANCE";
895		case VK_OBJECT_TYPE_PHYSICAL_DEVICE:				return "VK_OBJECT_TYPE_PHYSICAL_DEVICE";
896		case VK_OBJECT_TYPE_DEVICE:							return "VK_OBJECT_TYPE_DEVICE";
897		case VK_OBJECT_TYPE_QUEUE:							return "VK_OBJECT_TYPE_QUEUE";
898		case VK_OBJECT_TYPE_SEMAPHORE:						return "VK_OBJECT_TYPE_SEMAPHORE";
899		case VK_OBJECT_TYPE_COMMAND_BUFFER:					return "VK_OBJECT_TYPE_COMMAND_BUFFER";
900		case VK_OBJECT_TYPE_FENCE:							return "VK_OBJECT_TYPE_FENCE";
901		case VK_OBJECT_TYPE_DEVICE_MEMORY:					return "VK_OBJECT_TYPE_DEVICE_MEMORY";
902		case VK_OBJECT_TYPE_BUFFER:							return "VK_OBJECT_TYPE_BUFFER";
903		case VK_OBJECT_TYPE_IMAGE:							return "VK_OBJECT_TYPE_IMAGE";
904		case VK_OBJECT_TYPE_EVENT:							return "VK_OBJECT_TYPE_EVENT";
905		case VK_OBJECT_TYPE_QUERY_POOL:						return "VK_OBJECT_TYPE_QUERY_POOL";
906		case VK_OBJECT_TYPE_BUFFER_VIEW:					return "VK_OBJECT_TYPE_BUFFER_VIEW";
907		case VK_OBJECT_TYPE_IMAGE_VIEW:						return "VK_OBJECT_TYPE_IMAGE_VIEW";
908		case VK_OBJECT_TYPE_SHADER_MODULE:					return "VK_OBJECT_TYPE_SHADER_MODULE";
909		case VK_OBJECT_TYPE_PIPELINE_CACHE:					return "VK_OBJECT_TYPE_PIPELINE_CACHE";
910		case VK_OBJECT_TYPE_PIPELINE_LAYOUT:				return "VK_OBJECT_TYPE_PIPELINE_LAYOUT";
911		case VK_OBJECT_TYPE_RENDER_PASS:					return "VK_OBJECT_TYPE_RENDER_PASS";
912		case VK_OBJECT_TYPE_PIPELINE:						return "VK_OBJECT_TYPE_PIPELINE";
913		case VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT:			return "VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT";
914		case VK_OBJECT_TYPE_SAMPLER:						return "VK_OBJECT_TYPE_SAMPLER";
915		case VK_OBJECT_TYPE_DESCRIPTOR_POOL:				return "VK_OBJECT_TYPE_DESCRIPTOR_POOL";
916		case VK_OBJECT_TYPE_DESCRIPTOR_SET:					return "VK_OBJECT_TYPE_DESCRIPTOR_SET";
917		case VK_OBJECT_TYPE_FRAMEBUFFER:					return "VK_OBJECT_TYPE_FRAMEBUFFER";
918		case VK_OBJECT_TYPE_COMMAND_POOL:					return "VK_OBJECT_TYPE_COMMAND_POOL";
919		case VK_OBJECT_TYPE_SURFACE_KHR:					return "VK_OBJECT_TYPE_SURFACE_KHR";
920		case VK_OBJECT_TYPE_SWAPCHAIN_KHR:					return "VK_OBJECT_TYPE_SWAPCHAIN_KHR";
921		case VK_OBJECT_TYPE_DISPLAY_KHR:					return "VK_OBJECT_TYPE_DISPLAY_KHR";
922		case VK_OBJECT_TYPE_DISPLAY_MODE_KHR:				return "VK_OBJECT_TYPE_DISPLAY_MODE_KHR";
923		case VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT:		return "VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT";
924		case VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR:	return "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR";
925		case VK_OBJECT_TYPE_OBJECT_TABLE_NVX:				return "VK_OBJECT_TYPE_OBJECT_TABLE_NVX";
926		case VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX:	return "VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX";
927		default:											return DE_NULL;
928	}
929}
930
931const char* getColorSpaceKHRName (VkColorSpaceKHR value)
932{
933	switch (value)
934	{
935		case VK_COLOR_SPACE_SRGB_NONLINEAR_KHR:			return "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR";
936		case VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT:	return "VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT";
937		case VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT:	return "VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT";
938		case VK_COLOR_SPACE_DCI_P3_LINEAR_EXT:			return "VK_COLOR_SPACE_DCI_P3_LINEAR_EXT";
939		case VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT:		return "VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT";
940		case VK_COLOR_SPACE_BT709_LINEAR_EXT:			return "VK_COLOR_SPACE_BT709_LINEAR_EXT";
941		case VK_COLOR_SPACE_BT709_NONLINEAR_EXT:		return "VK_COLOR_SPACE_BT709_NONLINEAR_EXT";
942		case VK_COLOR_SPACE_BT2020_LINEAR_EXT:			return "VK_COLOR_SPACE_BT2020_LINEAR_EXT";
943		case VK_COLOR_SPACE_HDR10_ST2084_EXT:			return "VK_COLOR_SPACE_HDR10_ST2084_EXT";
944		case VK_COLOR_SPACE_DOLBYVISION_EXT:			return "VK_COLOR_SPACE_DOLBYVISION_EXT";
945		case VK_COLOR_SPACE_HDR10_HLG_EXT:				return "VK_COLOR_SPACE_HDR10_HLG_EXT";
946		case VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT:		return "VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT";
947		case VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT:		return "VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT";
948		case VK_COLOR_SPACE_PASS_THROUGH_EXT:			return "VK_COLOR_SPACE_PASS_THROUGH_EXT";
949		default:										return DE_NULL;
950	}
951}
952
953const char* getPresentModeKHRName (VkPresentModeKHR value)
954{
955	switch (value)
956	{
957		case VK_PRESENT_MODE_IMMEDIATE_KHR:					return "VK_PRESENT_MODE_IMMEDIATE_KHR";
958		case VK_PRESENT_MODE_MAILBOX_KHR:					return "VK_PRESENT_MODE_MAILBOX_KHR";
959		case VK_PRESENT_MODE_FIFO_KHR:						return "VK_PRESENT_MODE_FIFO_KHR";
960		case VK_PRESENT_MODE_FIFO_RELAXED_KHR:				return "VK_PRESENT_MODE_FIFO_RELAXED_KHR";
961		case VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR:		return "VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR";
962		case VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR:	return "VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR";
963		default:											return DE_NULL;
964	}
965}
966
967const char* getDescriptorUpdateTemplateTypeKHRName (VkDescriptorUpdateTemplateTypeKHR value)
968{
969	switch (value)
970	{
971		case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR:		return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR";
972		case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR:	return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR";
973		default:														return DE_NULL;
974	}
975}
976
977const char* getPointClippingBehaviorKHRName (VkPointClippingBehaviorKHR value)
978{
979	switch (value)
980	{
981		case VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR:		return "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR";
982		case VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR:	return "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR";
983		default:													return DE_NULL;
984	}
985}
986
987const char* getTessellationDomainOriginKHRName (VkTessellationDomainOriginKHR value)
988{
989	switch (value)
990	{
991		case VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR:	return "VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR";
992		case VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR:	return "VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR";
993		default:											return DE_NULL;
994	}
995}
996
997const char* getSamplerYcbcrModelConversionKHRName (VkSamplerYcbcrModelConversionKHR value)
998{
999	switch (value)
1000	{
1001		case VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR:	return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR";
1002		case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR:	return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR";
1003		case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR:		return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR";
1004		case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR:		return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR";
1005		case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR:		return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR";
1006		default:													return DE_NULL;
1007	}
1008}
1009
1010const char* getSamplerYcbcrRangeKHRName (VkSamplerYcbcrRangeKHR value)
1011{
1012	switch (value)
1013	{
1014		case VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR:	return "VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR";
1015		case VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR:	return "VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR";
1016		default:									return DE_NULL;
1017	}
1018}
1019
1020const char* getChromaLocationKHRName (VkChromaLocationKHR value)
1021{
1022	switch (value)
1023	{
1024		case VK_CHROMA_LOCATION_COSITED_EVEN_KHR:	return "VK_CHROMA_LOCATION_COSITED_EVEN_KHR";
1025		case VK_CHROMA_LOCATION_MIDPOINT_KHR:		return "VK_CHROMA_LOCATION_MIDPOINT_KHR";
1026		default:									return DE_NULL;
1027	}
1028}
1029
1030const char* getDebugReportObjectTypeEXTName (VkDebugReportObjectTypeEXT value)
1031{
1032	switch (value)
1033	{
1034		case VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT:							return "VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT";
1035		case VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT:							return "VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT";
1036		case VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT";
1037		case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT:							return "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT";
1038		case VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT:								return "VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT";
1039		case VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT:							return "VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT";
1040		case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT";
1041		case VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT:								return "VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT";
1042		case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT";
1043		case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT:							return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT";
1044		case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT:								return "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT";
1045		case VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT:								return "VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT";
1046		case VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT";
1047		case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT";
1048		case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT";
1049		case VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT";
1050		case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT";
1051		case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT";
1052		case VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT";
1053		case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT:							return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT";
1054		case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT:				return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT";
1055		case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT:							return "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT";
1056		case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT";
1057		case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT";
1058		case VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT";
1059		case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT";
1060		case VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT";
1061		case VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT";
1062		case VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT";
1063		case VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT";
1064		case VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT";
1065		case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT:	return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT";
1066		case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT:		return "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT";
1067		default:																return DE_NULL;
1068	}
1069}
1070
1071const char* getDebugReportErrorEXTName (VkDebugReportErrorEXT value)
1072{
1073	switch (value)
1074	{
1075		case VK_DEBUG_REPORT_ERROR_NONE_EXT:			return "VK_DEBUG_REPORT_ERROR_NONE_EXT";
1076		case VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT:	return "VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT";
1077		default:										return DE_NULL;
1078	}
1079}
1080
1081tcu::Format::Bitfield<32> getFormatFeatureFlagsStr (VkFormatFeatureFlags value)
1082{
1083	static const tcu::Format::BitDesc s_desc[] =
1084	{
1085		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,																"VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"),
1086		tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,																"VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"),
1087		tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,														"VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"),
1088		tcu::Format::BitDesc(VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,														"VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"),
1089		tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,														"VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"),
1090		tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,													"VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"),
1091		tcu::Format::BitDesc(VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,																"VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"),
1092		tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,															"VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"),
1093		tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,														"VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"),
1094		tcu::Format::BitDesc(VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,													"VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"),
1095		tcu::Format::BitDesc(VK_FORMAT_FEATURE_BLIT_SRC_BIT,																	"VK_FORMAT_FEATURE_BLIT_SRC_BIT"),
1096		tcu::Format::BitDesc(VK_FORMAT_FEATURE_BLIT_DST_BIT,																	"VK_FORMAT_FEATURE_BLIT_DST_BIT"),
1097		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,													"VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"),
1098		tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,															"VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR"),
1099		tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR,															"VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR"),
1100		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR,												"VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR"),
1101		tcu::Format::BitDesc(VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR,													"VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR"),
1102		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR,							"VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR"),
1103		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR,			"VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR"),
1104		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR,			"VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR"),
1105		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR,	"VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR"),
1106		tcu::Format::BitDesc(VK_FORMAT_FEATURE_DISJOINT_BIT_KHR,																"VK_FORMAT_FEATURE_DISJOINT_BIT_KHR"),
1107		tcu::Format::BitDesc(VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR,													"VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR"),
1108	};
1109	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1110}
1111
1112tcu::Format::Bitfield<32> getImageUsageFlagsStr (VkImageUsageFlags value)
1113{
1114	static const tcu::Format::BitDesc s_desc[] =
1115	{
1116		tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_SRC_BIT,				"VK_IMAGE_USAGE_TRANSFER_SRC_BIT"),
1117		tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_DST_BIT,				"VK_IMAGE_USAGE_TRANSFER_DST_BIT"),
1118		tcu::Format::BitDesc(VK_IMAGE_USAGE_SAMPLED_BIT,					"VK_IMAGE_USAGE_SAMPLED_BIT"),
1119		tcu::Format::BitDesc(VK_IMAGE_USAGE_STORAGE_BIT,					"VK_IMAGE_USAGE_STORAGE_BIT"),
1120		tcu::Format::BitDesc(VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,			"VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"),
1121		tcu::Format::BitDesc(VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,	"VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"),
1122		tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,		"VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"),
1123		tcu::Format::BitDesc(VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,			"VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"),
1124	};
1125	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1126}
1127
1128tcu::Format::Bitfield<32> getImageCreateFlagsStr (VkImageCreateFlags value)
1129{
1130	static const tcu::Format::BitDesc s_desc[] =
1131	{
1132		tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_BINDING_BIT,					"VK_IMAGE_CREATE_SPARSE_BINDING_BIT"),
1133		tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,					"VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"),
1134		tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,					"VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"),
1135		tcu::Format::BitDesc(VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,					"VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"),
1136		tcu::Format::BitDesc(VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,					"VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"),
1137		tcu::Format::BitDesc(VK_IMAGE_CREATE_BIND_SFR_BIT_KHX,						"VK_IMAGE_CREATE_BIND_SFR_BIT_KHX"),
1138		tcu::Format::BitDesc(VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR,			"VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR"),
1139		tcu::Format::BitDesc(VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR,	"VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR"),
1140		tcu::Format::BitDesc(VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR,				"VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR"),
1141		tcu::Format::BitDesc(VK_IMAGE_CREATE_ALIAS_BIT_KHR,							"VK_IMAGE_CREATE_ALIAS_BIT_KHR"),
1142		tcu::Format::BitDesc(VK_IMAGE_CREATE_DISJOINT_BIT_KHR,						"VK_IMAGE_CREATE_DISJOINT_BIT_KHR"),
1143	};
1144	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1145}
1146
1147tcu::Format::Bitfield<32> getSampleCountFlagsStr (VkSampleCountFlags value)
1148{
1149	static const tcu::Format::BitDesc s_desc[] =
1150	{
1151		tcu::Format::BitDesc(VK_SAMPLE_COUNT_1_BIT,		"VK_SAMPLE_COUNT_1_BIT"),
1152		tcu::Format::BitDesc(VK_SAMPLE_COUNT_2_BIT,		"VK_SAMPLE_COUNT_2_BIT"),
1153		tcu::Format::BitDesc(VK_SAMPLE_COUNT_4_BIT,		"VK_SAMPLE_COUNT_4_BIT"),
1154		tcu::Format::BitDesc(VK_SAMPLE_COUNT_8_BIT,		"VK_SAMPLE_COUNT_8_BIT"),
1155		tcu::Format::BitDesc(VK_SAMPLE_COUNT_16_BIT,	"VK_SAMPLE_COUNT_16_BIT"),
1156		tcu::Format::BitDesc(VK_SAMPLE_COUNT_32_BIT,	"VK_SAMPLE_COUNT_32_BIT"),
1157		tcu::Format::BitDesc(VK_SAMPLE_COUNT_64_BIT,	"VK_SAMPLE_COUNT_64_BIT"),
1158	};
1159	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1160}
1161
1162tcu::Format::Bitfield<32> getQueueFlagsStr (VkQueueFlags value)
1163{
1164	static const tcu::Format::BitDesc s_desc[] =
1165	{
1166		tcu::Format::BitDesc(VK_QUEUE_GRAPHICS_BIT,			"VK_QUEUE_GRAPHICS_BIT"),
1167		tcu::Format::BitDesc(VK_QUEUE_COMPUTE_BIT,			"VK_QUEUE_COMPUTE_BIT"),
1168		tcu::Format::BitDesc(VK_QUEUE_TRANSFER_BIT,			"VK_QUEUE_TRANSFER_BIT"),
1169		tcu::Format::BitDesc(VK_QUEUE_SPARSE_BINDING_BIT,	"VK_QUEUE_SPARSE_BINDING_BIT"),
1170	};
1171	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1172}
1173
1174tcu::Format::Bitfield<32> getMemoryPropertyFlagsStr (VkMemoryPropertyFlags value)
1175{
1176	static const tcu::Format::BitDesc s_desc[] =
1177	{
1178		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,		"VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"),
1179		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,		"VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"),
1180		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,		"VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"),
1181		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_CACHED_BIT,		"VK_MEMORY_PROPERTY_HOST_CACHED_BIT"),
1182		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT,	"VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"),
1183	};
1184	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1185}
1186
1187tcu::Format::Bitfield<32> getMemoryHeapFlagsStr (VkMemoryHeapFlags value)
1188{
1189	static const tcu::Format::BitDesc s_desc[] =
1190	{
1191		tcu::Format::BitDesc(VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,		"VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"),
1192		tcu::Format::BitDesc(VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX,	"VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX"),
1193	};
1194	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1195}
1196
1197tcu::Format::Bitfield<32> getPipelineStageFlagsStr (VkPipelineStageFlags value)
1198{
1199	static const tcu::Format::BitDesc s_desc[] =
1200	{
1201		tcu::Format::BitDesc(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,						"VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"),
1202		tcu::Format::BitDesc(VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,					"VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"),
1203		tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,					"VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"),
1204		tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,					"VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"),
1205		tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,		"VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"),
1206		tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,	"VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"),
1207		tcu::Format::BitDesc(VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,					"VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"),
1208		tcu::Format::BitDesc(VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,					"VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"),
1209		tcu::Format::BitDesc(VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,			"VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"),
1210		tcu::Format::BitDesc(VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,				"VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"),
1211		tcu::Format::BitDesc(VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,			"VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"),
1212		tcu::Format::BitDesc(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,					"VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"),
1213		tcu::Format::BitDesc(VK_PIPELINE_STAGE_TRANSFER_BIT,						"VK_PIPELINE_STAGE_TRANSFER_BIT"),
1214		tcu::Format::BitDesc(VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,					"VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT"),
1215		tcu::Format::BitDesc(VK_PIPELINE_STAGE_HOST_BIT,							"VK_PIPELINE_STAGE_HOST_BIT"),
1216		tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,					"VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"),
1217		tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,					"VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"),
1218	};
1219	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1220}
1221
1222tcu::Format::Bitfield<32> getImageAspectFlagsStr (VkImageAspectFlags value)
1223{
1224	static const tcu::Format::BitDesc s_desc[] =
1225	{
1226		tcu::Format::BitDesc(VK_IMAGE_ASPECT_COLOR_BIT,			"VK_IMAGE_ASPECT_COLOR_BIT"),
1227		tcu::Format::BitDesc(VK_IMAGE_ASPECT_DEPTH_BIT,			"VK_IMAGE_ASPECT_DEPTH_BIT"),
1228		tcu::Format::BitDesc(VK_IMAGE_ASPECT_STENCIL_BIT,		"VK_IMAGE_ASPECT_STENCIL_BIT"),
1229		tcu::Format::BitDesc(VK_IMAGE_ASPECT_METADATA_BIT,		"VK_IMAGE_ASPECT_METADATA_BIT"),
1230		tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,	"VK_IMAGE_ASPECT_PLANE_0_BIT_KHR"),
1231		tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_1_BIT_KHR,	"VK_IMAGE_ASPECT_PLANE_1_BIT_KHR"),
1232		tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_2_BIT_KHR,	"VK_IMAGE_ASPECT_PLANE_2_BIT_KHR"),
1233	};
1234	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1235}
1236
1237tcu::Format::Bitfield<32> getSparseImageFormatFlagsStr (VkSparseImageFormatFlags value)
1238{
1239	static const tcu::Format::BitDesc s_desc[] =
1240	{
1241		tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,			"VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT"),
1242		tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,		"VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT"),
1243		tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT,	"VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT"),
1244	};
1245	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1246}
1247
1248tcu::Format::Bitfield<32> getSparseMemoryBindFlagsStr (VkSparseMemoryBindFlags value)
1249{
1250	static const tcu::Format::BitDesc s_desc[] =
1251	{
1252		tcu::Format::BitDesc(VK_SPARSE_MEMORY_BIND_METADATA_BIT,	"VK_SPARSE_MEMORY_BIND_METADATA_BIT"),
1253	};
1254	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1255}
1256
1257tcu::Format::Bitfield<32> getFenceCreateFlagsStr (VkFenceCreateFlags value)
1258{
1259	static const tcu::Format::BitDesc s_desc[] =
1260	{
1261		tcu::Format::BitDesc(VK_FENCE_CREATE_SIGNALED_BIT,	"VK_FENCE_CREATE_SIGNALED_BIT"),
1262	};
1263	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1264}
1265
1266tcu::Format::Bitfield<32> getQueryPipelineStatisticFlagsStr (VkQueryPipelineStatisticFlags value)
1267{
1268	static const tcu::Format::BitDesc s_desc[] =
1269	{
1270		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,						"VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT"),
1271		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,						"VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT"),
1272		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,						"VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT"),
1273		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,					"VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT"),
1274		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,					"VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT"),
1275		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,							"VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT"),
1276		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,							"VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT"),
1277		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,					"VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT"),
1278		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,			"VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT"),
1279		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,	"VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT"),
1280		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT,					"VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT"),
1281	};
1282	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1283}
1284
1285tcu::Format::Bitfield<32> getQueryResultFlagsStr (VkQueryResultFlags value)
1286{
1287	static const tcu::Format::BitDesc s_desc[] =
1288	{
1289		tcu::Format::BitDesc(VK_QUERY_RESULT_64_BIT,				"VK_QUERY_RESULT_64_BIT"),
1290		tcu::Format::BitDesc(VK_QUERY_RESULT_WAIT_BIT,				"VK_QUERY_RESULT_WAIT_BIT"),
1291		tcu::Format::BitDesc(VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,	"VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"),
1292		tcu::Format::BitDesc(VK_QUERY_RESULT_PARTIAL_BIT,			"VK_QUERY_RESULT_PARTIAL_BIT"),
1293	};
1294	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1295}
1296
1297tcu::Format::Bitfield<32> getBufferCreateFlagsStr (VkBufferCreateFlags value)
1298{
1299	static const tcu::Format::BitDesc s_desc[] =
1300	{
1301		tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_BINDING_BIT,	"VK_BUFFER_CREATE_SPARSE_BINDING_BIT"),
1302		tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,	"VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"),
1303		tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_ALIASED_BIT,	"VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"),
1304	};
1305	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1306}
1307
1308tcu::Format::Bitfield<32> getBufferUsageFlagsStr (VkBufferUsageFlags value)
1309{
1310	static const tcu::Format::BitDesc s_desc[] =
1311	{
1312		tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_SRC_BIT,			"VK_BUFFER_USAGE_TRANSFER_SRC_BIT"),
1313		tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_DST_BIT,			"VK_BUFFER_USAGE_TRANSFER_DST_BIT"),
1314		tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,	"VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"),
1315		tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,	"VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"),
1316		tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,		"VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"),
1317		tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,		"VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"),
1318		tcu::Format::BitDesc(VK_BUFFER_USAGE_INDEX_BUFFER_BIT,			"VK_BUFFER_USAGE_INDEX_BUFFER_BIT"),
1319		tcu::Format::BitDesc(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,			"VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"),
1320		tcu::Format::BitDesc(VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT,		"VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"),
1321	};
1322	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1323}
1324
1325tcu::Format::Bitfield<32> getPipelineCreateFlagsStr (VkPipelineCreateFlags value)
1326{
1327	static const tcu::Format::BitDesc s_desc[] =
1328	{
1329		tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,				"VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"),
1330		tcu::Format::BitDesc(VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,					"VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"),
1331		tcu::Format::BitDesc(VK_PIPELINE_CREATE_DERIVATIVE_BIT,							"VK_PIPELINE_CREATE_DERIVATIVE_BIT"),
1332		tcu::Format::BitDesc(VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX,	"VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX"),
1333		tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISPATCH_BASE_KHX,						"VK_PIPELINE_CREATE_DISPATCH_BASE_KHX"),
1334	};
1335	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1336}
1337
1338tcu::Format::Bitfield<32> getShaderStageFlagsStr (VkShaderStageFlags value)
1339{
1340	static const tcu::Format::BitDesc s_desc[] =
1341	{
1342		tcu::Format::BitDesc(VK_SHADER_STAGE_VERTEX_BIT,					"VK_SHADER_STAGE_VERTEX_BIT"),
1343		tcu::Format::BitDesc(VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,		"VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"),
1344		tcu::Format::BitDesc(VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,	"VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"),
1345		tcu::Format::BitDesc(VK_SHADER_STAGE_GEOMETRY_BIT,					"VK_SHADER_STAGE_GEOMETRY_BIT"),
1346		tcu::Format::BitDesc(VK_SHADER_STAGE_FRAGMENT_BIT,					"VK_SHADER_STAGE_FRAGMENT_BIT"),
1347		tcu::Format::BitDesc(VK_SHADER_STAGE_COMPUTE_BIT,					"VK_SHADER_STAGE_COMPUTE_BIT"),
1348		tcu::Format::BitDesc(VK_SHADER_STAGE_ALL_GRAPHICS,					"VK_SHADER_STAGE_ALL_GRAPHICS"),
1349		tcu::Format::BitDesc(VK_SHADER_STAGE_ALL,							"VK_SHADER_STAGE_ALL"),
1350	};
1351	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1352}
1353
1354tcu::Format::Bitfield<32> getCullModeFlagsStr (VkCullModeFlags value)
1355{
1356	static const tcu::Format::BitDesc s_desc[] =
1357	{
1358		tcu::Format::BitDesc(VK_CULL_MODE_NONE,				"VK_CULL_MODE_NONE"),
1359		tcu::Format::BitDesc(VK_CULL_MODE_FRONT_BIT,		"VK_CULL_MODE_FRONT_BIT"),
1360		tcu::Format::BitDesc(VK_CULL_MODE_BACK_BIT,			"VK_CULL_MODE_BACK_BIT"),
1361		tcu::Format::BitDesc(VK_CULL_MODE_FRONT_AND_BACK,	"VK_CULL_MODE_FRONT_AND_BACK"),
1362	};
1363	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1364}
1365
1366tcu::Format::Bitfield<32> getColorComponentFlagsStr (VkColorComponentFlags value)
1367{
1368	static const tcu::Format::BitDesc s_desc[] =
1369	{
1370		tcu::Format::BitDesc(VK_COLOR_COMPONENT_R_BIT,	"VK_COLOR_COMPONENT_R_BIT"),
1371		tcu::Format::BitDesc(VK_COLOR_COMPONENT_G_BIT,	"VK_COLOR_COMPONENT_G_BIT"),
1372		tcu::Format::BitDesc(VK_COLOR_COMPONENT_B_BIT,	"VK_COLOR_COMPONENT_B_BIT"),
1373		tcu::Format::BitDesc(VK_COLOR_COMPONENT_A_BIT,	"VK_COLOR_COMPONENT_A_BIT"),
1374	};
1375	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1376}
1377
1378tcu::Format::Bitfield<32> getDescriptorSetLayoutCreateFlagsStr (VkDescriptorSetLayoutCreateFlags value)
1379{
1380	static const tcu::Format::BitDesc s_desc[] =
1381	{
1382		tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR,	"VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR"),
1383	};
1384	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1385}
1386
1387tcu::Format::Bitfield<32> getDescriptorPoolCreateFlagsStr (VkDescriptorPoolCreateFlags value)
1388{
1389	static const tcu::Format::BitDesc s_desc[] =
1390	{
1391		tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT,	"VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"),
1392	};
1393	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1394}
1395
1396tcu::Format::Bitfield<32> getAttachmentDescriptionFlagsStr (VkAttachmentDescriptionFlags value)
1397{
1398	static const tcu::Format::BitDesc s_desc[] =
1399	{
1400		tcu::Format::BitDesc(VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT,	"VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"),
1401	};
1402	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1403}
1404
1405tcu::Format::Bitfield<32> getSubpassDescriptionFlagsStr (VkSubpassDescriptionFlags value)
1406{
1407	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1408}
1409
1410tcu::Format::Bitfield<32> getAccessFlagsStr (VkAccessFlags value)
1411{
1412	static const tcu::Format::BitDesc s_desc[] =
1413	{
1414		tcu::Format::BitDesc(VK_ACCESS_INDIRECT_COMMAND_READ_BIT,			"VK_ACCESS_INDIRECT_COMMAND_READ_BIT"),
1415		tcu::Format::BitDesc(VK_ACCESS_INDEX_READ_BIT,						"VK_ACCESS_INDEX_READ_BIT"),
1416		tcu::Format::BitDesc(VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,			"VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"),
1417		tcu::Format::BitDesc(VK_ACCESS_UNIFORM_READ_BIT,					"VK_ACCESS_UNIFORM_READ_BIT"),
1418		tcu::Format::BitDesc(VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,			"VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"),
1419		tcu::Format::BitDesc(VK_ACCESS_SHADER_READ_BIT,						"VK_ACCESS_SHADER_READ_BIT"),
1420		tcu::Format::BitDesc(VK_ACCESS_SHADER_WRITE_BIT,					"VK_ACCESS_SHADER_WRITE_BIT"),
1421		tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,			"VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"),
1422		tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,			"VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"),
1423		tcu::Format::BitDesc(VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,	"VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"),
1424		tcu::Format::BitDesc(VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,	"VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"),
1425		tcu::Format::BitDesc(VK_ACCESS_TRANSFER_READ_BIT,					"VK_ACCESS_TRANSFER_READ_BIT"),
1426		tcu::Format::BitDesc(VK_ACCESS_TRANSFER_WRITE_BIT,					"VK_ACCESS_TRANSFER_WRITE_BIT"),
1427		tcu::Format::BitDesc(VK_ACCESS_HOST_READ_BIT,						"VK_ACCESS_HOST_READ_BIT"),
1428		tcu::Format::BitDesc(VK_ACCESS_HOST_WRITE_BIT,						"VK_ACCESS_HOST_WRITE_BIT"),
1429		tcu::Format::BitDesc(VK_ACCESS_MEMORY_READ_BIT,						"VK_ACCESS_MEMORY_READ_BIT"),
1430		tcu::Format::BitDesc(VK_ACCESS_MEMORY_WRITE_BIT,					"VK_ACCESS_MEMORY_WRITE_BIT"),
1431	};
1432	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1433}
1434
1435tcu::Format::Bitfield<32> getDependencyFlagsStr (VkDependencyFlags value)
1436{
1437	static const tcu::Format::BitDesc s_desc[] =
1438	{
1439		tcu::Format::BitDesc(VK_DEPENDENCY_BY_REGION_BIT,			"VK_DEPENDENCY_BY_REGION_BIT"),
1440		tcu::Format::BitDesc(VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX,		"VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX"),
1441		tcu::Format::BitDesc(VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX,	"VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX"),
1442	};
1443	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1444}
1445
1446tcu::Format::Bitfield<32> getCommandPoolCreateFlagsStr (VkCommandPoolCreateFlags value)
1447{
1448	static const tcu::Format::BitDesc s_desc[] =
1449	{
1450		tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,				"VK_COMMAND_POOL_CREATE_TRANSIENT_BIT"),
1451		tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT,	"VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"),
1452	};
1453	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1454}
1455
1456tcu::Format::Bitfield<32> getCommandPoolResetFlagsStr (VkCommandPoolResetFlags value)
1457{
1458	static const tcu::Format::BitDesc s_desc[] =
1459	{
1460		tcu::Format::BitDesc(VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT,	"VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"),
1461	};
1462	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1463}
1464
1465tcu::Format::Bitfield<32> getCommandBufferUsageFlagsStr (VkCommandBufferUsageFlags value)
1466{
1467	static const tcu::Format::BitDesc s_desc[] =
1468	{
1469		tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,		"VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"),
1470		tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,	"VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"),
1471		tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT,		"VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"),
1472	};
1473	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1474}
1475
1476tcu::Format::Bitfield<32> getQueryControlFlagsStr (VkQueryControlFlags value)
1477{
1478	static const tcu::Format::BitDesc s_desc[] =
1479	{
1480		tcu::Format::BitDesc(VK_QUERY_CONTROL_PRECISE_BIT,	"VK_QUERY_CONTROL_PRECISE_BIT"),
1481	};
1482	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1483}
1484
1485tcu::Format::Bitfield<32> getCommandBufferResetFlagsStr (VkCommandBufferResetFlags value)
1486{
1487	static const tcu::Format::BitDesc s_desc[] =
1488	{
1489		tcu::Format::BitDesc(VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT,	"VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT"),
1490	};
1491	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1492}
1493
1494tcu::Format::Bitfield<32> getStencilFaceFlagsStr (VkStencilFaceFlags value)
1495{
1496	static const tcu::Format::BitDesc s_desc[] =
1497	{
1498		tcu::Format::BitDesc(VK_STENCIL_FACE_FRONT_BIT,	"VK_STENCIL_FACE_FRONT_BIT"),
1499		tcu::Format::BitDesc(VK_STENCIL_FACE_BACK_BIT,	"VK_STENCIL_FACE_BACK_BIT"),
1500		tcu::Format::BitDesc(VK_STENCIL_FRONT_AND_BACK,	"VK_STENCIL_FRONT_AND_BACK"),
1501	};
1502	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1503}
1504
1505tcu::Format::Bitfield<32> getSurfaceTransformFlagsKHRStr (VkSurfaceTransformFlagsKHR value)
1506{
1507	static const tcu::Format::BitDesc s_desc[] =
1508	{
1509		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,						"VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR"),
1510		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,					"VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"),
1511		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,					"VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"),
1512		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,					"VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"),
1513		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,			"VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"),
1514		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,	"VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"),
1515		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,	"VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"),
1516		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,	"VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"),
1517		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR,						"VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"),
1518	};
1519	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1520}
1521
1522tcu::Format::Bitfield<32> getCompositeAlphaFlagsKHRStr (VkCompositeAlphaFlagsKHR value)
1523{
1524	static const tcu::Format::BitDesc s_desc[] =
1525	{
1526		tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,				"VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"),
1527		tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,		"VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"),
1528		tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,	"VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"),
1529		tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR,			"VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"),
1530	};
1531	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1532}
1533
1534tcu::Format::Bitfield<32> getSwapchainCreateFlagsKHRStr (VkSwapchainCreateFlagsKHR value)
1535{
1536	static const tcu::Format::BitDesc s_desc[] =
1537	{
1538		tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX,	"VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX"),
1539	};
1540	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1541}
1542
1543tcu::Format::Bitfield<32> getDisplayPlaneAlphaFlagsKHRStr (VkDisplayPlaneAlphaFlagsKHR value)
1544{
1545	static const tcu::Format::BitDesc s_desc[] =
1546	{
1547		tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,						"VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"),
1548		tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,						"VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"),
1549		tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,					"VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"),
1550		tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR,	"VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"),
1551	};
1552	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1553}
1554
1555tcu::Format::Bitfield<32> getExternalFenceHandleTypeFlagsKHRStr (VkExternalFenceHandleTypeFlagsKHR value)
1556{
1557	static const tcu::Format::BitDesc s_desc[] =
1558	{
1559		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,			"VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"),
1560		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,		"VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"),
1561		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,	"VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"),
1562		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR,				"VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR"),
1563	};
1564	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1565}
1566
1567tcu::Format::Bitfield<32> getExternalFenceFeatureFlagsKHRStr (VkExternalFenceFeatureFlagsKHR value)
1568{
1569	static const tcu::Format::BitDesc s_desc[] =
1570	{
1571		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR,	"VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR"),
1572		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR,	"VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR"),
1573	};
1574	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1575}
1576
1577tcu::Format::Bitfield<32> getFenceImportFlagsKHRStr (VkFenceImportFlagsKHR value)
1578{
1579	static const tcu::Format::BitDesc s_desc[] =
1580	{
1581		tcu::Format::BitDesc(VK_FENCE_IMPORT_TEMPORARY_BIT_KHR,	"VK_FENCE_IMPORT_TEMPORARY_BIT_KHR"),
1582	};
1583	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1584}
1585
1586tcu::Format::Bitfield<32> getDebugReportFlagsEXTStr (VkDebugReportFlagsEXT value)
1587{
1588	static const tcu::Format::BitDesc s_desc[] =
1589	{
1590		tcu::Format::BitDesc(VK_DEBUG_REPORT_INFORMATION_BIT_EXT,			"VK_DEBUG_REPORT_INFORMATION_BIT_EXT"),
1591		tcu::Format::BitDesc(VK_DEBUG_REPORT_WARNING_BIT_EXT,				"VK_DEBUG_REPORT_WARNING_BIT_EXT"),
1592		tcu::Format::BitDesc(VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,	"VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT"),
1593		tcu::Format::BitDesc(VK_DEBUG_REPORT_ERROR_BIT_EXT,					"VK_DEBUG_REPORT_ERROR_BIT_EXT"),
1594		tcu::Format::BitDesc(VK_DEBUG_REPORT_DEBUG_BIT_EXT,					"VK_DEBUG_REPORT_DEBUG_BIT_EXT"),
1595	};
1596	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1597}
1598
1599tcu::Format::Bitfield<32> getExternalMemoryHandleTypeFlagsKHRStr (VkExternalMemoryHandleTypeFlagsKHR value)
1600{
1601	static const tcu::Format::BitDesc s_desc[] =
1602	{
1603		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,			"VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"),
1604		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,		"VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"),
1605		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,	"VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"),
1606		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR,		"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR"),
1607		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR,	"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR"),
1608		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR,			"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR"),
1609		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR,		"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR"),
1610	};
1611	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1612}
1613
1614tcu::Format::Bitfield<32> getExternalMemoryFeatureFlagsKHRStr (VkExternalMemoryFeatureFlagsKHR value)
1615{
1616	static const tcu::Format::BitDesc s_desc[] =
1617	{
1618		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR,	"VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR"),
1619		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR,		"VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR"),
1620		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR,		"VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR"),
1621	};
1622	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1623}
1624
1625tcu::Format::Bitfield<32> getExternalSemaphoreHandleTypeFlagsKHRStr (VkExternalSemaphoreHandleTypeFlagsKHR value)
1626{
1627	static const tcu::Format::BitDesc s_desc[] =
1628	{
1629		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,			"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"),
1630		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,		"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"),
1631		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,	"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"),
1632		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR,			"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR"),
1633		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR,				"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR"),
1634	};
1635	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1636}
1637
1638tcu::Format::Bitfield<32> getExternalSemaphoreFeatureFlagsKHRStr (VkExternalSemaphoreFeatureFlagsKHR value)
1639{
1640	static const tcu::Format::BitDesc s_desc[] =
1641	{
1642		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR,	"VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR"),
1643		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR,	"VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR"),
1644	};
1645	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1646}
1647
1648tcu::Format::Bitfield<32> getSemaphoreImportFlagsKHRStr (VkSemaphoreImportFlagsKHR value)
1649{
1650	static const tcu::Format::BitDesc s_desc[] =
1651	{
1652		tcu::Format::BitDesc(VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR,	"VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR"),
1653	};
1654	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1655}
1656
1657tcu::Format::Bitfield<32> getInstanceCreateFlagsStr (VkInstanceCreateFlags value)
1658{
1659	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1660}
1661
1662tcu::Format::Bitfield<32> getDeviceCreateFlagsStr (VkDeviceCreateFlags value)
1663{
1664	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1665}
1666
1667tcu::Format::Bitfield<32> getDeviceQueueCreateFlagsStr (VkDeviceQueueCreateFlags value)
1668{
1669	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1670}
1671
1672tcu::Format::Bitfield<32> getMemoryMapFlagsStr (VkMemoryMapFlags value)
1673{
1674	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1675}
1676
1677tcu::Format::Bitfield<32> getSemaphoreCreateFlagsStr (VkSemaphoreCreateFlags value)
1678{
1679	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1680}
1681
1682tcu::Format::Bitfield<32> getEventCreateFlagsStr (VkEventCreateFlags value)
1683{
1684	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1685}
1686
1687tcu::Format::Bitfield<32> getQueryPoolCreateFlagsStr (VkQueryPoolCreateFlags value)
1688{
1689	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1690}
1691
1692tcu::Format::Bitfield<32> getBufferViewCreateFlagsStr (VkBufferViewCreateFlags value)
1693{
1694	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1695}
1696
1697tcu::Format::Bitfield<32> getImageViewCreateFlagsStr (VkImageViewCreateFlags value)
1698{
1699	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1700}
1701
1702tcu::Format::Bitfield<32> getShaderModuleCreateFlagsStr (VkShaderModuleCreateFlags value)
1703{
1704	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1705}
1706
1707tcu::Format::Bitfield<32> getPipelineCacheCreateFlagsStr (VkPipelineCacheCreateFlags value)
1708{
1709	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1710}
1711
1712tcu::Format::Bitfield<32> getPipelineShaderStageCreateFlagsStr (VkPipelineShaderStageCreateFlags value)
1713{
1714	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1715}
1716
1717tcu::Format::Bitfield<32> getPipelineVertexInputStateCreateFlagsStr (VkPipelineVertexInputStateCreateFlags value)
1718{
1719	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1720}
1721
1722tcu::Format::Bitfield<32> getPipelineInputAssemblyStateCreateFlagsStr (VkPipelineInputAssemblyStateCreateFlags value)
1723{
1724	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1725}
1726
1727tcu::Format::Bitfield<32> getPipelineTessellationStateCreateFlagsStr (VkPipelineTessellationStateCreateFlags value)
1728{
1729	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1730}
1731
1732tcu::Format::Bitfield<32> getPipelineViewportStateCreateFlagsStr (VkPipelineViewportStateCreateFlags value)
1733{
1734	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1735}
1736
1737tcu::Format::Bitfield<32> getPipelineRasterizationStateCreateFlagsStr (VkPipelineRasterizationStateCreateFlags value)
1738{
1739	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1740}
1741
1742tcu::Format::Bitfield<32> getPipelineMultisampleStateCreateFlagsStr (VkPipelineMultisampleStateCreateFlags value)
1743{
1744	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1745}
1746
1747tcu::Format::Bitfield<32> getPipelineDepthStencilStateCreateFlagsStr (VkPipelineDepthStencilStateCreateFlags value)
1748{
1749	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1750}
1751
1752tcu::Format::Bitfield<32> getPipelineColorBlendStateCreateFlagsStr (VkPipelineColorBlendStateCreateFlags value)
1753{
1754	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1755}
1756
1757tcu::Format::Bitfield<32> getPipelineDynamicStateCreateFlagsStr (VkPipelineDynamicStateCreateFlags value)
1758{
1759	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1760}
1761
1762tcu::Format::Bitfield<32> getPipelineLayoutCreateFlagsStr (VkPipelineLayoutCreateFlags value)
1763{
1764	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1765}
1766
1767tcu::Format::Bitfield<32> getSamplerCreateFlagsStr (VkSamplerCreateFlags value)
1768{
1769	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1770}
1771
1772tcu::Format::Bitfield<32> getDescriptorPoolResetFlagsStr (VkDescriptorPoolResetFlags value)
1773{
1774	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1775}
1776
1777tcu::Format::Bitfield<32> getFramebufferCreateFlagsStr (VkFramebufferCreateFlags value)
1778{
1779	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1780}
1781
1782tcu::Format::Bitfield<32> getRenderPassCreateFlagsStr (VkRenderPassCreateFlags value)
1783{
1784	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1785}
1786
1787tcu::Format::Bitfield<32> getDisplayModeCreateFlagsKHRStr (VkDisplayModeCreateFlagsKHR value)
1788{
1789	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1790}
1791
1792tcu::Format::Bitfield<32> getDisplaySurfaceCreateFlagsKHRStr (VkDisplaySurfaceCreateFlagsKHR value)
1793{
1794	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1795}
1796
1797tcu::Format::Bitfield<32> getXlibSurfaceCreateFlagsKHRStr (VkXlibSurfaceCreateFlagsKHR value)
1798{
1799	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1800}
1801
1802tcu::Format::Bitfield<32> getXcbSurfaceCreateFlagsKHRStr (VkXcbSurfaceCreateFlagsKHR value)
1803{
1804	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1805}
1806
1807tcu::Format::Bitfield<32> getWaylandSurfaceCreateFlagsKHRStr (VkWaylandSurfaceCreateFlagsKHR value)
1808{
1809	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1810}
1811
1812tcu::Format::Bitfield<32> getMirSurfaceCreateFlagsKHRStr (VkMirSurfaceCreateFlagsKHR value)
1813{
1814	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1815}
1816
1817tcu::Format::Bitfield<32> getAndroidSurfaceCreateFlagsKHRStr (VkAndroidSurfaceCreateFlagsKHR value)
1818{
1819	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1820}
1821
1822tcu::Format::Bitfield<32> getWin32SurfaceCreateFlagsKHRStr (VkWin32SurfaceCreateFlagsKHR value)
1823{
1824	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1825}
1826
1827tcu::Format::Bitfield<32> getCommandPoolTrimFlagsKHRStr (VkCommandPoolTrimFlagsKHR value)
1828{
1829	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1830}
1831
1832tcu::Format::Bitfield<32> getDescriptorUpdateTemplateCreateFlagsKHRStr (VkDescriptorUpdateTemplateCreateFlagsKHR value)
1833{
1834	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1835}
1836
1837std::ostream& operator<< (std::ostream& s, const VkApplicationInfo& value)
1838{
1839	s << "VkApplicationInfo = {\n";
1840	s << "\tsType = " << value.sType << '\n';
1841	s << "\tpNext = " << value.pNext << '\n';
1842	s << "\tpApplicationName = " << getCharPtrStr(value.pApplicationName) << '\n';
1843	s << "\tapplicationVersion = " << value.applicationVersion << '\n';
1844	s << "\tpEngineName = " << getCharPtrStr(value.pEngineName) << '\n';
1845	s << "\tengineVersion = " << value.engineVersion << '\n';
1846	s << "\tapiVersion = " << value.apiVersion << '\n';
1847	s << '}';
1848	return s;
1849}
1850
1851std::ostream& operator<< (std::ostream& s, const VkInstanceCreateInfo& value)
1852{
1853	s << "VkInstanceCreateInfo = {\n";
1854	s << "\tsType = " << value.sType << '\n';
1855	s << "\tpNext = " << value.pNext << '\n';
1856	s << "\tflags = " << getInstanceCreateFlagsStr(value.flags) << '\n';
1857	s << "\tpApplicationInfo = " << value.pApplicationInfo << '\n';
1858	s << "\tenabledLayerCount = " << value.enabledLayerCount << '\n';
1859	s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
1860	s << "\tenabledExtensionCount = " << value.enabledExtensionCount << '\n';
1861	s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
1862	s << '}';
1863	return s;
1864}
1865
1866std::ostream& operator<< (std::ostream& s, const VkAllocationCallbacks& value)
1867{
1868	s << "VkAllocationCallbacks = {\n";
1869	s << "\tpUserData = " << value.pUserData << '\n';
1870	s << "\tpfnAllocation = " << value.pfnAllocation << '\n';
1871	s << "\tpfnReallocation = " << value.pfnReallocation << '\n';
1872	s << "\tpfnFree = " << value.pfnFree << '\n';
1873	s << "\tpfnInternalAllocation = " << value.pfnInternalAllocation << '\n';
1874	s << "\tpfnInternalFree = " << value.pfnInternalFree << '\n';
1875	s << '}';
1876	return s;
1877}
1878
1879std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures& value)
1880{
1881	s << "VkPhysicalDeviceFeatures = {\n";
1882	s << "\trobustBufferAccess = " << value.robustBufferAccess << '\n';
1883	s << "\tfullDrawIndexUint32 = " << value.fullDrawIndexUint32 << '\n';
1884	s << "\timageCubeArray = " << value.imageCubeArray << '\n';
1885	s << "\tindependentBlend = " << value.independentBlend << '\n';
1886	s << "\tgeometryShader = " << value.geometryShader << '\n';
1887	s << "\ttessellationShader = " << value.tessellationShader << '\n';
1888	s << "\tsampleRateShading = " << value.sampleRateShading << '\n';
1889	s << "\tdualSrcBlend = " << value.dualSrcBlend << '\n';
1890	s << "\tlogicOp = " << value.logicOp << '\n';
1891	s << "\tmultiDrawIndirect = " << value.multiDrawIndirect << '\n';
1892	s << "\tdrawIndirectFirstInstance = " << value.drawIndirectFirstInstance << '\n';
1893	s << "\tdepthClamp = " << value.depthClamp << '\n';
1894	s << "\tdepthBiasClamp = " << value.depthBiasClamp << '\n';
1895	s << "\tfillModeNonSolid = " << value.fillModeNonSolid << '\n';
1896	s << "\tdepthBounds = " << value.depthBounds << '\n';
1897	s << "\twideLines = " << value.wideLines << '\n';
1898	s << "\tlargePoints = " << value.largePoints << '\n';
1899	s << "\talphaToOne = " << value.alphaToOne << '\n';
1900	s << "\tmultiViewport = " << value.multiViewport << '\n';
1901	s << "\tsamplerAnisotropy = " << value.samplerAnisotropy << '\n';
1902	s << "\ttextureCompressionETC2 = " << value.textureCompressionETC2 << '\n';
1903	s << "\ttextureCompressionASTC_LDR = " << value.textureCompressionASTC_LDR << '\n';
1904	s << "\ttextureCompressionBC = " << value.textureCompressionBC << '\n';
1905	s << "\tocclusionQueryPrecise = " << value.occlusionQueryPrecise << '\n';
1906	s << "\tpipelineStatisticsQuery = " << value.pipelineStatisticsQuery << '\n';
1907	s << "\tvertexPipelineStoresAndAtomics = " << value.vertexPipelineStoresAndAtomics << '\n';
1908	s << "\tfragmentStoresAndAtomics = " << value.fragmentStoresAndAtomics << '\n';
1909	s << "\tshaderTessellationAndGeometryPointSize = " << value.shaderTessellationAndGeometryPointSize << '\n';
1910	s << "\tshaderImageGatherExtended = " << value.shaderImageGatherExtended << '\n';
1911	s << "\tshaderStorageImageExtendedFormats = " << value.shaderStorageImageExtendedFormats << '\n';
1912	s << "\tshaderStorageImageMultisample = " << value.shaderStorageImageMultisample << '\n';
1913	s << "\tshaderStorageImageReadWithoutFormat = " << value.shaderStorageImageReadWithoutFormat << '\n';
1914	s << "\tshaderStorageImageWriteWithoutFormat = " << value.shaderStorageImageWriteWithoutFormat << '\n';
1915	s << "\tshaderUniformBufferArrayDynamicIndexing = " << value.shaderUniformBufferArrayDynamicIndexing << '\n';
1916	s << "\tshaderSampledImageArrayDynamicIndexing = " << value.shaderSampledImageArrayDynamicIndexing << '\n';
1917	s << "\tshaderStorageBufferArrayDynamicIndexing = " << value.shaderStorageBufferArrayDynamicIndexing << '\n';
1918	s << "\tshaderStorageImageArrayDynamicIndexing = " << value.shaderStorageImageArrayDynamicIndexing << '\n';
1919	s << "\tshaderClipDistance = " << value.shaderClipDistance << '\n';
1920	s << "\tshaderCullDistance = " << value.shaderCullDistance << '\n';
1921	s << "\tshaderFloat64 = " << value.shaderFloat64 << '\n';
1922	s << "\tshaderInt64 = " << value.shaderInt64 << '\n';
1923	s << "\tshaderInt16 = " << value.shaderInt16 << '\n';
1924	s << "\tshaderResourceResidency = " << value.shaderResourceResidency << '\n';
1925	s << "\tshaderResourceMinLod = " << value.shaderResourceMinLod << '\n';
1926	s << "\tsparseBinding = " << value.sparseBinding << '\n';
1927	s << "\tsparseResidencyBuffer = " << value.sparseResidencyBuffer << '\n';
1928	s << "\tsparseResidencyImage2D = " << value.sparseResidencyImage2D << '\n';
1929	s << "\tsparseResidencyImage3D = " << value.sparseResidencyImage3D << '\n';
1930	s << "\tsparseResidency2Samples = " << value.sparseResidency2Samples << '\n';
1931	s << "\tsparseResidency4Samples = " << value.sparseResidency4Samples << '\n';
1932	s << "\tsparseResidency8Samples = " << value.sparseResidency8Samples << '\n';
1933	s << "\tsparseResidency16Samples = " << value.sparseResidency16Samples << '\n';
1934	s << "\tsparseResidencyAliased = " << value.sparseResidencyAliased << '\n';
1935	s << "\tvariableMultisampleRate = " << value.variableMultisampleRate << '\n';
1936	s << "\tinheritedQueries = " << value.inheritedQueries << '\n';
1937	s << '}';
1938	return s;
1939}
1940
1941std::ostream& operator<< (std::ostream& s, const VkFormatProperties& value)
1942{
1943	s << "VkFormatProperties = {\n";
1944	s << "\tlinearTilingFeatures = " << getFormatFeatureFlagsStr(value.linearTilingFeatures) << '\n';
1945	s << "\toptimalTilingFeatures = " << getFormatFeatureFlagsStr(value.optimalTilingFeatures) << '\n';
1946	s << "\tbufferFeatures = " << getFormatFeatureFlagsStr(value.bufferFeatures) << '\n';
1947	s << '}';
1948	return s;
1949}
1950
1951std::ostream& operator<< (std::ostream& s, const VkExtent3D& value)
1952{
1953	s << "VkExtent3D = {\n";
1954	s << "\twidth = " << value.width << '\n';
1955	s << "\theight = " << value.height << '\n';
1956	s << "\tdepth = " << value.depth << '\n';
1957	s << '}';
1958	return s;
1959}
1960
1961std::ostream& operator<< (std::ostream& s, const VkImageFormatProperties& value)
1962{
1963	s << "VkImageFormatProperties = {\n";
1964	s << "\tmaxExtent = " << value.maxExtent << '\n';
1965	s << "\tmaxMipLevels = " << value.maxMipLevels << '\n';
1966	s << "\tmaxArrayLayers = " << value.maxArrayLayers << '\n';
1967	s << "\tsampleCounts = " << getSampleCountFlagsStr(value.sampleCounts) << '\n';
1968	s << "\tmaxResourceSize = " << value.maxResourceSize << '\n';
1969	s << '}';
1970	return s;
1971}
1972
1973std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLimits& value)
1974{
1975	s << "VkPhysicalDeviceLimits = {\n";
1976	s << "\tmaxImageDimension1D = " << value.maxImageDimension1D << '\n';
1977	s << "\tmaxImageDimension2D = " << value.maxImageDimension2D << '\n';
1978	s << "\tmaxImageDimension3D = " << value.maxImageDimension3D << '\n';
1979	s << "\tmaxImageDimensionCube = " << value.maxImageDimensionCube << '\n';
1980	s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
1981	s << "\tmaxTexelBufferElements = " << value.maxTexelBufferElements << '\n';
1982	s << "\tmaxUniformBufferRange = " << value.maxUniformBufferRange << '\n';
1983	s << "\tmaxStorageBufferRange = " << value.maxStorageBufferRange << '\n';
1984	s << "\tmaxPushConstantsSize = " << value.maxPushConstantsSize << '\n';
1985	s << "\tmaxMemoryAllocationCount = " << value.maxMemoryAllocationCount << '\n';
1986	s << "\tmaxSamplerAllocationCount = " << value.maxSamplerAllocationCount << '\n';
1987	s << "\tbufferImageGranularity = " << value.bufferImageGranularity << '\n';
1988	s << "\tsparseAddressSpaceSize = " << value.sparseAddressSpaceSize << '\n';
1989	s << "\tmaxBoundDescriptorSets = " << value.maxBoundDescriptorSets << '\n';
1990	s << "\tmaxPerStageDescriptorSamplers = " << value.maxPerStageDescriptorSamplers << '\n';
1991	s << "\tmaxPerStageDescriptorUniformBuffers = " << value.maxPerStageDescriptorUniformBuffers << '\n';
1992	s << "\tmaxPerStageDescriptorStorageBuffers = " << value.maxPerStageDescriptorStorageBuffers << '\n';
1993	s << "\tmaxPerStageDescriptorSampledImages = " << value.maxPerStageDescriptorSampledImages << '\n';
1994	s << "\tmaxPerStageDescriptorStorageImages = " << value.maxPerStageDescriptorStorageImages << '\n';
1995	s << "\tmaxPerStageDescriptorInputAttachments = " << value.maxPerStageDescriptorInputAttachments << '\n';
1996	s << "\tmaxPerStageResources = " << value.maxPerStageResources << '\n';
1997	s << "\tmaxDescriptorSetSamplers = " << value.maxDescriptorSetSamplers << '\n';
1998	s << "\tmaxDescriptorSetUniformBuffers = " << value.maxDescriptorSetUniformBuffers << '\n';
1999	s << "\tmaxDescriptorSetUniformBuffersDynamic = " << value.maxDescriptorSetUniformBuffersDynamic << '\n';
2000	s << "\tmaxDescriptorSetStorageBuffers = " << value.maxDescriptorSetStorageBuffers << '\n';
2001	s << "\tmaxDescriptorSetStorageBuffersDynamic = " << value.maxDescriptorSetStorageBuffersDynamic << '\n';
2002	s << "\tmaxDescriptorSetSampledImages = " << value.maxDescriptorSetSampledImages << '\n';
2003	s << "\tmaxDescriptorSetStorageImages = " << value.maxDescriptorSetStorageImages << '\n';
2004	s << "\tmaxDescriptorSetInputAttachments = " << value.maxDescriptorSetInputAttachments << '\n';
2005	s << "\tmaxVertexInputAttributes = " << value.maxVertexInputAttributes << '\n';
2006	s << "\tmaxVertexInputBindings = " << value.maxVertexInputBindings << '\n';
2007	s << "\tmaxVertexInputAttributeOffset = " << value.maxVertexInputAttributeOffset << '\n';
2008	s << "\tmaxVertexInputBindingStride = " << value.maxVertexInputBindingStride << '\n';
2009	s << "\tmaxVertexOutputComponents = " << value.maxVertexOutputComponents << '\n';
2010	s << "\tmaxTessellationGenerationLevel = " << value.maxTessellationGenerationLevel << '\n';
2011	s << "\tmaxTessellationPatchSize = " << value.maxTessellationPatchSize << '\n';
2012	s << "\tmaxTessellationControlPerVertexInputComponents = " << value.maxTessellationControlPerVertexInputComponents << '\n';
2013	s << "\tmaxTessellationControlPerVertexOutputComponents = " << value.maxTessellationControlPerVertexOutputComponents << '\n';
2014	s << "\tmaxTessellationControlPerPatchOutputComponents = " << value.maxTessellationControlPerPatchOutputComponents << '\n';
2015	s << "\tmaxTessellationControlTotalOutputComponents = " << value.maxTessellationControlTotalOutputComponents << '\n';
2016	s << "\tmaxTessellationEvaluationInputComponents = " << value.maxTessellationEvaluationInputComponents << '\n';
2017	s << "\tmaxTessellationEvaluationOutputComponents = " << value.maxTessellationEvaluationOutputComponents << '\n';
2018	s << "\tmaxGeometryShaderInvocations = " << value.maxGeometryShaderInvocations << '\n';
2019	s << "\tmaxGeometryInputComponents = " << value.maxGeometryInputComponents << '\n';
2020	s << "\tmaxGeometryOutputComponents = " << value.maxGeometryOutputComponents << '\n';
2021	s << "\tmaxGeometryOutputVertices = " << value.maxGeometryOutputVertices << '\n';
2022	s << "\tmaxGeometryTotalOutputComponents = " << value.maxGeometryTotalOutputComponents << '\n';
2023	s << "\tmaxFragmentInputComponents = " << value.maxFragmentInputComponents << '\n';
2024	s << "\tmaxFragmentOutputAttachments = " << value.maxFragmentOutputAttachments << '\n';
2025	s << "\tmaxFragmentDualSrcAttachments = " << value.maxFragmentDualSrcAttachments << '\n';
2026	s << "\tmaxFragmentCombinedOutputResources = " << value.maxFragmentCombinedOutputResources << '\n';
2027	s << "\tmaxComputeSharedMemorySize = " << value.maxComputeSharedMemorySize << '\n';
2028	s << "\tmaxComputeWorkGroupCount = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupCount), DE_ARRAY_END(value.maxComputeWorkGroupCount)) << '\n';
2029	s << "\tmaxComputeWorkGroupInvocations = " << value.maxComputeWorkGroupInvocations << '\n';
2030	s << "\tmaxComputeWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupSize), DE_ARRAY_END(value.maxComputeWorkGroupSize)) << '\n';
2031	s << "\tsubPixelPrecisionBits = " << value.subPixelPrecisionBits << '\n';
2032	s << "\tsubTexelPrecisionBits = " << value.subTexelPrecisionBits << '\n';
2033	s << "\tmipmapPrecisionBits = " << value.mipmapPrecisionBits << '\n';
2034	s << "\tmaxDrawIndexedIndexValue = " << value.maxDrawIndexedIndexValue << '\n';
2035	s << "\tmaxDrawIndirectCount = " << value.maxDrawIndirectCount << '\n';
2036	s << "\tmaxSamplerLodBias = " << value.maxSamplerLodBias << '\n';
2037	s << "\tmaxSamplerAnisotropy = " << value.maxSamplerAnisotropy << '\n';
2038	s << "\tmaxViewports = " << value.maxViewports << '\n';
2039	s << "\tmaxViewportDimensions = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxViewportDimensions), DE_ARRAY_END(value.maxViewportDimensions)) << '\n';
2040	s << "\tviewportBoundsRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.viewportBoundsRange), DE_ARRAY_END(value.viewportBoundsRange)) << '\n';
2041	s << "\tviewportSubPixelBits = " << value.viewportSubPixelBits << '\n';
2042	s << "\tminMemoryMapAlignment = " << value.minMemoryMapAlignment << '\n';
2043	s << "\tminTexelBufferOffsetAlignment = " << value.minTexelBufferOffsetAlignment << '\n';
2044	s << "\tminUniformBufferOffsetAlignment = " << value.minUniformBufferOffsetAlignment << '\n';
2045	s << "\tminStorageBufferOffsetAlignment = " << value.minStorageBufferOffsetAlignment << '\n';
2046	s << "\tminTexelOffset = " << value.minTexelOffset << '\n';
2047	s << "\tmaxTexelOffset = " << value.maxTexelOffset << '\n';
2048	s << "\tminTexelGatherOffset = " << value.minTexelGatherOffset << '\n';
2049	s << "\tmaxTexelGatherOffset = " << value.maxTexelGatherOffset << '\n';
2050	s << "\tminInterpolationOffset = " << value.minInterpolationOffset << '\n';
2051	s << "\tmaxInterpolationOffset = " << value.maxInterpolationOffset << '\n';
2052	s << "\tsubPixelInterpolationOffsetBits = " << value.subPixelInterpolationOffsetBits << '\n';
2053	s << "\tmaxFramebufferWidth = " << value.maxFramebufferWidth << '\n';
2054	s << "\tmaxFramebufferHeight = " << value.maxFramebufferHeight << '\n';
2055	s << "\tmaxFramebufferLayers = " << value.maxFramebufferLayers << '\n';
2056	s << "\tframebufferColorSampleCounts = " << getSampleCountFlagsStr(value.framebufferColorSampleCounts) << '\n';
2057	s << "\tframebufferDepthSampleCounts = " << getSampleCountFlagsStr(value.framebufferDepthSampleCounts) << '\n';
2058	s << "\tframebufferStencilSampleCounts = " << getSampleCountFlagsStr(value.framebufferStencilSampleCounts) << '\n';
2059	s << "\tframebufferNoAttachmentsSampleCounts = " << getSampleCountFlagsStr(value.framebufferNoAttachmentsSampleCounts) << '\n';
2060	s << "\tmaxColorAttachments = " << value.maxColorAttachments << '\n';
2061	s << "\tsampledImageColorSampleCounts = " << getSampleCountFlagsStr(value.sampledImageColorSampleCounts) << '\n';
2062	s << "\tsampledImageIntegerSampleCounts = " << getSampleCountFlagsStr(value.sampledImageIntegerSampleCounts) << '\n';
2063	s << "\tsampledImageDepthSampleCounts = " << getSampleCountFlagsStr(value.sampledImageDepthSampleCounts) << '\n';
2064	s << "\tsampledImageStencilSampleCounts = " << getSampleCountFlagsStr(value.sampledImageStencilSampleCounts) << '\n';
2065	s << "\tstorageImageSampleCounts = " << getSampleCountFlagsStr(value.storageImageSampleCounts) << '\n';
2066	s << "\tmaxSampleMaskWords = " << value.maxSampleMaskWords << '\n';
2067	s << "\ttimestampComputeAndGraphics = " << value.timestampComputeAndGraphics << '\n';
2068	s << "\ttimestampPeriod = " << value.timestampPeriod << '\n';
2069	s << "\tmaxClipDistances = " << value.maxClipDistances << '\n';
2070	s << "\tmaxCullDistances = " << value.maxCullDistances << '\n';
2071	s << "\tmaxCombinedClipAndCullDistances = " << value.maxCombinedClipAndCullDistances << '\n';
2072	s << "\tdiscreteQueuePriorities = " << value.discreteQueuePriorities << '\n';
2073	s << "\tpointSizeRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.pointSizeRange), DE_ARRAY_END(value.pointSizeRange)) << '\n';
2074	s << "\tlineWidthRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.lineWidthRange), DE_ARRAY_END(value.lineWidthRange)) << '\n';
2075	s << "\tpointSizeGranularity = " << value.pointSizeGranularity << '\n';
2076	s << "\tlineWidthGranularity = " << value.lineWidthGranularity << '\n';
2077	s << "\tstrictLines = " << value.strictLines << '\n';
2078	s << "\tstandardSampleLocations = " << value.standardSampleLocations << '\n';
2079	s << "\toptimalBufferCopyOffsetAlignment = " << value.optimalBufferCopyOffsetAlignment << '\n';
2080	s << "\toptimalBufferCopyRowPitchAlignment = " << value.optimalBufferCopyRowPitchAlignment << '\n';
2081	s << "\tnonCoherentAtomSize = " << value.nonCoherentAtomSize << '\n';
2082	s << '}';
2083	return s;
2084}
2085
2086std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSparseProperties& value)
2087{
2088	s << "VkPhysicalDeviceSparseProperties = {\n";
2089	s << "\tresidencyStandard2DBlockShape = " << value.residencyStandard2DBlockShape << '\n';
2090	s << "\tresidencyStandard2DMultisampleBlockShape = " << value.residencyStandard2DMultisampleBlockShape << '\n';
2091	s << "\tresidencyStandard3DBlockShape = " << value.residencyStandard3DBlockShape << '\n';
2092	s << "\tresidencyAlignedMipSize = " << value.residencyAlignedMipSize << '\n';
2093	s << "\tresidencyNonResidentStrict = " << value.residencyNonResidentStrict << '\n';
2094	s << '}';
2095	return s;
2096}
2097
2098std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProperties& value)
2099{
2100	s << "VkPhysicalDeviceProperties = {\n";
2101	s << "\tapiVersion = " << value.apiVersion << '\n';
2102	s << "\tdriverVersion = " << value.driverVersion << '\n';
2103	s << "\tvendorID = " << value.vendorID << '\n';
2104	s << "\tdeviceID = " << value.deviceID << '\n';
2105	s << "\tdeviceType = " << value.deviceType << '\n';
2106	s << "\tdeviceName = " << (const char*)value.deviceName << '\n';
2107	s << "\tpipelineCacheUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.pipelineCacheUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.pipelineCacheUUID))) << '\n';
2108	s << "\tlimits = " << value.limits << '\n';
2109	s << "\tsparseProperties = " << value.sparseProperties << '\n';
2110	s << '}';
2111	return s;
2112}
2113
2114std::ostream& operator<< (std::ostream& s, const VkQueueFamilyProperties& value)
2115{
2116	s << "VkQueueFamilyProperties = {\n";
2117	s << "\tqueueFlags = " << getQueueFlagsStr(value.queueFlags) << '\n';
2118	s << "\tqueueCount = " << value.queueCount << '\n';
2119	s << "\ttimestampValidBits = " << value.timestampValidBits << '\n';
2120	s << "\tminImageTransferGranularity = " << value.minImageTransferGranularity << '\n';
2121	s << '}';
2122	return s;
2123}
2124
2125std::ostream& operator<< (std::ostream& s, const VkMemoryType& value)
2126{
2127	s << "VkMemoryType = {\n";
2128	s << "\tpropertyFlags = " << getMemoryPropertyFlagsStr(value.propertyFlags) << '\n';
2129	s << "\theapIndex = " << value.heapIndex << '\n';
2130	s << '}';
2131	return s;
2132}
2133
2134std::ostream& operator<< (std::ostream& s, const VkMemoryHeap& value)
2135{
2136	s << "VkMemoryHeap = {\n";
2137	s << "\tsize = " << value.size << '\n';
2138	s << "\tflags = " << getMemoryHeapFlagsStr(value.flags) << '\n';
2139	s << '}';
2140	return s;
2141}
2142
2143std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties& value)
2144{
2145	s << "VkPhysicalDeviceMemoryProperties = {\n";
2146	s << "\tmemoryTypeCount = " << value.memoryTypeCount << '\n';
2147	s << "\tmemoryTypes = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryTypes), DE_ARRAY_BEGIN(value.memoryTypes) + value.memoryTypeCount) << '\n';
2148	s << "\tmemoryHeapCount = " << value.memoryHeapCount << '\n';
2149	s << "\tmemoryHeaps = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryHeaps), DE_ARRAY_BEGIN(value.memoryHeaps) + value.memoryHeapCount) << '\n';
2150	s << '}';
2151	return s;
2152}
2153
2154std::ostream& operator<< (std::ostream& s, const VkDeviceQueueCreateInfo& value)
2155{
2156	s << "VkDeviceQueueCreateInfo = {\n";
2157	s << "\tsType = " << value.sType << '\n';
2158	s << "\tpNext = " << value.pNext << '\n';
2159	s << "\tflags = " << getDeviceQueueCreateFlagsStr(value.flags) << '\n';
2160	s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
2161	s << "\tqueueCount = " << value.queueCount << '\n';
2162	s << "\tpQueuePriorities = " << value.pQueuePriorities << '\n';
2163	s << '}';
2164	return s;
2165}
2166
2167std::ostream& operator<< (std::ostream& s, const VkDeviceCreateInfo& value)
2168{
2169	s << "VkDeviceCreateInfo = {\n";
2170	s << "\tsType = " << value.sType << '\n';
2171	s << "\tpNext = " << value.pNext << '\n';
2172	s << "\tflags = " << getDeviceCreateFlagsStr(value.flags) << '\n';
2173	s << "\tqueueCreateInfoCount = " << value.queueCreateInfoCount << '\n';
2174	s << "\tpQueueCreateInfos = " << value.pQueueCreateInfos << '\n';
2175	s << "\tenabledLayerCount = " << value.enabledLayerCount << '\n';
2176	s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
2177	s << "\tenabledExtensionCount = " << value.enabledExtensionCount << '\n';
2178	s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
2179	s << "\tpEnabledFeatures = " << value.pEnabledFeatures << '\n';
2180	s << '}';
2181	return s;
2182}
2183
2184std::ostream& operator<< (std::ostream& s, const VkExtensionProperties& value)
2185{
2186	s << "VkExtensionProperties = {\n";
2187	s << "\textensionName = " << (const char*)value.extensionName << '\n';
2188	s << "\tspecVersion = " << value.specVersion << '\n';
2189	s << '}';
2190	return s;
2191}
2192
2193std::ostream& operator<< (std::ostream& s, const VkLayerProperties& value)
2194{
2195	s << "VkLayerProperties = {\n";
2196	s << "\tlayerName = " << (const char*)value.layerName << '\n';
2197	s << "\tspecVersion = " << value.specVersion << '\n';
2198	s << "\timplementationVersion = " << value.implementationVersion << '\n';
2199	s << "\tdescription = " << (const char*)value.description << '\n';
2200	s << '}';
2201	return s;
2202}
2203
2204std::ostream& operator<< (std::ostream& s, const VkSubmitInfo& value)
2205{
2206	s << "VkSubmitInfo = {\n";
2207	s << "\tsType = " << value.sType << '\n';
2208	s << "\tpNext = " << value.pNext << '\n';
2209	s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
2210	s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
2211	s << "\tpWaitDstStageMask = " << value.pWaitDstStageMask << '\n';
2212	s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
2213	s << "\tpCommandBuffers = " << value.pCommandBuffers << '\n';
2214	s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
2215	s << "\tpSignalSemaphores = " << value.pSignalSemaphores << '\n';
2216	s << '}';
2217	return s;
2218}
2219
2220std::ostream& operator<< (std::ostream& s, const VkMemoryAllocateInfo& value)
2221{
2222	s << "VkMemoryAllocateInfo = {\n";
2223	s << "\tsType = " << value.sType << '\n';
2224	s << "\tpNext = " << value.pNext << '\n';
2225	s << "\tallocationSize = " << value.allocationSize << '\n';
2226	s << "\tmemoryTypeIndex = " << value.memoryTypeIndex << '\n';
2227	s << '}';
2228	return s;
2229}
2230
2231std::ostream& operator<< (std::ostream& s, const VkMappedMemoryRange& value)
2232{
2233	s << "VkMappedMemoryRange = {\n";
2234	s << "\tsType = " << value.sType << '\n';
2235	s << "\tpNext = " << value.pNext << '\n';
2236	s << "\tmemory = " << value.memory << '\n';
2237	s << "\toffset = " << value.offset << '\n';
2238	s << "\tsize = " << value.size << '\n';
2239	s << '}';
2240	return s;
2241}
2242
2243std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements& value)
2244{
2245	s << "VkMemoryRequirements = {\n";
2246	s << "\tsize = " << value.size << '\n';
2247	s << "\talignment = " << value.alignment << '\n';
2248	s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
2249	s << '}';
2250	return s;
2251}
2252
2253std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties& value)
2254{
2255	s << "VkSparseImageFormatProperties = {\n";
2256	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
2257	s << "\timageGranularity = " << value.imageGranularity << '\n';
2258	s << "\tflags = " << getSparseImageFormatFlagsStr(value.flags) << '\n';
2259	s << '}';
2260	return s;
2261}
2262
2263std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements& value)
2264{
2265	s << "VkSparseImageMemoryRequirements = {\n";
2266	s << "\tformatProperties = " << value.formatProperties << '\n';
2267	s << "\timageMipTailFirstLod = " << value.imageMipTailFirstLod << '\n';
2268	s << "\timageMipTailSize = " << value.imageMipTailSize << '\n';
2269	s << "\timageMipTailOffset = " << value.imageMipTailOffset << '\n';
2270	s << "\timageMipTailStride = " << value.imageMipTailStride << '\n';
2271	s << '}';
2272	return s;
2273}
2274
2275std::ostream& operator<< (std::ostream& s, const VkSparseMemoryBind& value)
2276{
2277	s << "VkSparseMemoryBind = {\n";
2278	s << "\tresourceOffset = " << value.resourceOffset << '\n';
2279	s << "\tsize = " << value.size << '\n';
2280	s << "\tmemory = " << value.memory << '\n';
2281	s << "\tmemoryOffset = " << value.memoryOffset << '\n';
2282	s << "\tflags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
2283	s << '}';
2284	return s;
2285}
2286
2287std::ostream& operator<< (std::ostream& s, const VkSparseBufferMemoryBindInfo& value)
2288{
2289	s << "VkSparseBufferMemoryBindInfo = {\n";
2290	s << "\tbuffer = " << value.buffer << '\n';
2291	s << "\tbindCount = " << value.bindCount << '\n';
2292	s << "\tpBinds = " << value.pBinds << '\n';
2293	s << '}';
2294	return s;
2295}
2296
2297std::ostream& operator<< (std::ostream& s, const VkSparseImageOpaqueMemoryBindInfo& value)
2298{
2299	s << "VkSparseImageOpaqueMemoryBindInfo = {\n";
2300	s << "\timage = " << value.image << '\n';
2301	s << "\tbindCount = " << value.bindCount << '\n';
2302	s << "\tpBinds = " << value.pBinds << '\n';
2303	s << '}';
2304	return s;
2305}
2306
2307std::ostream& operator<< (std::ostream& s, const VkImageSubresource& value)
2308{
2309	s << "VkImageSubresource = {\n";
2310	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
2311	s << "\tmipLevel = " << value.mipLevel << '\n';
2312	s << "\tarrayLayer = " << value.arrayLayer << '\n';
2313	s << '}';
2314	return s;
2315}
2316
2317std::ostream& operator<< (std::ostream& s, const VkOffset3D& value)
2318{
2319	s << "VkOffset3D = {\n";
2320	s << "\tx = " << value.x << '\n';
2321	s << "\ty = " << value.y << '\n';
2322	s << "\tz = " << value.z << '\n';
2323	s << '}';
2324	return s;
2325}
2326
2327std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBind& value)
2328{
2329	s << "VkSparseImageMemoryBind = {\n";
2330	s << "\tsubresource = " << value.subresource << '\n';
2331	s << "\toffset = " << value.offset << '\n';
2332	s << "\textent = " << value.extent << '\n';
2333	s << "\tmemory = " << value.memory << '\n';
2334	s << "\tmemoryOffset = " << value.memoryOffset << '\n';
2335	s << "\tflags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
2336	s << '}';
2337	return s;
2338}
2339
2340std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBindInfo& value)
2341{
2342	s << "VkSparseImageMemoryBindInfo = {\n";
2343	s << "\timage = " << value.image << '\n';
2344	s << "\tbindCount = " << value.bindCount << '\n';
2345	s << "\tpBinds = " << value.pBinds << '\n';
2346	s << '}';
2347	return s;
2348}
2349
2350std::ostream& operator<< (std::ostream& s, const VkBindSparseInfo& value)
2351{
2352	s << "VkBindSparseInfo = {\n";
2353	s << "\tsType = " << value.sType << '\n';
2354	s << "\tpNext = " << value.pNext << '\n';
2355	s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
2356	s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
2357	s << "\tbufferBindCount = " << value.bufferBindCount << '\n';
2358	s << "\tpBufferBinds = " << value.pBufferBinds << '\n';
2359	s << "\timageOpaqueBindCount = " << value.imageOpaqueBindCount << '\n';
2360	s << "\tpImageOpaqueBinds = " << value.pImageOpaqueBinds << '\n';
2361	s << "\timageBindCount = " << value.imageBindCount << '\n';
2362	s << "\tpImageBinds = " << value.pImageBinds << '\n';
2363	s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
2364	s << "\tpSignalSemaphores = " << value.pSignalSemaphores << '\n';
2365	s << '}';
2366	return s;
2367}
2368
2369std::ostream& operator<< (std::ostream& s, const VkFenceCreateInfo& value)
2370{
2371	s << "VkFenceCreateInfo = {\n";
2372	s << "\tsType = " << value.sType << '\n';
2373	s << "\tpNext = " << value.pNext << '\n';
2374	s << "\tflags = " << getFenceCreateFlagsStr(value.flags) << '\n';
2375	s << '}';
2376	return s;
2377}
2378
2379std::ostream& operator<< (std::ostream& s, const VkSemaphoreCreateInfo& value)
2380{
2381	s << "VkSemaphoreCreateInfo = {\n";
2382	s << "\tsType = " << value.sType << '\n';
2383	s << "\tpNext = " << value.pNext << '\n';
2384	s << "\tflags = " << getSemaphoreCreateFlagsStr(value.flags) << '\n';
2385	s << '}';
2386	return s;
2387}
2388
2389std::ostream& operator<< (std::ostream& s, const VkEventCreateInfo& value)
2390{
2391	s << "VkEventCreateInfo = {\n";
2392	s << "\tsType = " << value.sType << '\n';
2393	s << "\tpNext = " << value.pNext << '\n';
2394	s << "\tflags = " << getEventCreateFlagsStr(value.flags) << '\n';
2395	s << '}';
2396	return s;
2397}
2398
2399std::ostream& operator<< (std::ostream& s, const VkQueryPoolCreateInfo& value)
2400{
2401	s << "VkQueryPoolCreateInfo = {\n";
2402	s << "\tsType = " << value.sType << '\n';
2403	s << "\tpNext = " << value.pNext << '\n';
2404	s << "\tflags = " << getQueryPoolCreateFlagsStr(value.flags) << '\n';
2405	s << "\tqueryType = " << value.queryType << '\n';
2406	s << "\tqueryCount = " << value.queryCount << '\n';
2407	s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
2408	s << '}';
2409	return s;
2410}
2411
2412std::ostream& operator<< (std::ostream& s, const VkBufferCreateInfo& value)
2413{
2414	s << "VkBufferCreateInfo = {\n";
2415	s << "\tsType = " << value.sType << '\n';
2416	s << "\tpNext = " << value.pNext << '\n';
2417	s << "\tflags = " << getBufferCreateFlagsStr(value.flags) << '\n';
2418	s << "\tsize = " << value.size << '\n';
2419	s << "\tusage = " << getBufferUsageFlagsStr(value.usage) << '\n';
2420	s << "\tsharingMode = " << value.sharingMode << '\n';
2421	s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
2422	s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
2423	s << '}';
2424	return s;
2425}
2426
2427std::ostream& operator<< (std::ostream& s, const VkBufferViewCreateInfo& value)
2428{
2429	s << "VkBufferViewCreateInfo = {\n";
2430	s << "\tsType = " << value.sType << '\n';
2431	s << "\tpNext = " << value.pNext << '\n';
2432	s << "\tflags = " << getBufferViewCreateFlagsStr(value.flags) << '\n';
2433	s << "\tbuffer = " << value.buffer << '\n';
2434	s << "\tformat = " << value.format << '\n';
2435	s << "\toffset = " << value.offset << '\n';
2436	s << "\trange = " << value.range << '\n';
2437	s << '}';
2438	return s;
2439}
2440
2441std::ostream& operator<< (std::ostream& s, const VkImageCreateInfo& value)
2442{
2443	s << "VkImageCreateInfo = {\n";
2444	s << "\tsType = " << value.sType << '\n';
2445	s << "\tpNext = " << value.pNext << '\n';
2446	s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
2447	s << "\timageType = " << value.imageType << '\n';
2448	s << "\tformat = " << value.format << '\n';
2449	s << "\textent = " << value.extent << '\n';
2450	s << "\tmipLevels = " << value.mipLevels << '\n';
2451	s << "\tarrayLayers = " << value.arrayLayers << '\n';
2452	s << "\tsamples = " << value.samples << '\n';
2453	s << "\ttiling = " << value.tiling << '\n';
2454	s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
2455	s << "\tsharingMode = " << value.sharingMode << '\n';
2456	s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
2457	s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
2458	s << "\tinitialLayout = " << value.initialLayout << '\n';
2459	s << '}';
2460	return s;
2461}
2462
2463std::ostream& operator<< (std::ostream& s, const VkSubresourceLayout& value)
2464{
2465	s << "VkSubresourceLayout = {\n";
2466	s << "\toffset = " << value.offset << '\n';
2467	s << "\tsize = " << value.size << '\n';
2468	s << "\trowPitch = " << value.rowPitch << '\n';
2469	s << "\tarrayPitch = " << value.arrayPitch << '\n';
2470	s << "\tdepthPitch = " << value.depthPitch << '\n';
2471	s << '}';
2472	return s;
2473}
2474
2475std::ostream& operator<< (std::ostream& s, const VkComponentMapping& value)
2476{
2477	s << "VkComponentMapping = {\n";
2478	s << "\tr = " << value.r << '\n';
2479	s << "\tg = " << value.g << '\n';
2480	s << "\tb = " << value.b << '\n';
2481	s << "\ta = " << value.a << '\n';
2482	s << '}';
2483	return s;
2484}
2485
2486std::ostream& operator<< (std::ostream& s, const VkImageSubresourceRange& value)
2487{
2488	s << "VkImageSubresourceRange = {\n";
2489	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
2490	s << "\tbaseMipLevel = " << value.baseMipLevel << '\n';
2491	s << "\tlevelCount = " << value.levelCount << '\n';
2492	s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
2493	s << "\tlayerCount = " << value.layerCount << '\n';
2494	s << '}';
2495	return s;
2496}
2497
2498std::ostream& operator<< (std::ostream& s, const VkImageViewCreateInfo& value)
2499{
2500	s << "VkImageViewCreateInfo = {\n";
2501	s << "\tsType = " << value.sType << '\n';
2502	s << "\tpNext = " << value.pNext << '\n';
2503	s << "\tflags = " << getImageViewCreateFlagsStr(value.flags) << '\n';
2504	s << "\timage = " << value.image << '\n';
2505	s << "\tviewType = " << value.viewType << '\n';
2506	s << "\tformat = " << value.format << '\n';
2507	s << "\tcomponents = " << value.components << '\n';
2508	s << "\tsubresourceRange = " << value.subresourceRange << '\n';
2509	s << '}';
2510	return s;
2511}
2512
2513std::ostream& operator<< (std::ostream& s, const VkShaderModuleCreateInfo& value)
2514{
2515	s << "VkShaderModuleCreateInfo = {\n";
2516	s << "\tsType = " << value.sType << '\n';
2517	s << "\tpNext = " << value.pNext << '\n';
2518	s << "\tflags = " << getShaderModuleCreateFlagsStr(value.flags) << '\n';
2519	s << "\tcodeSize = " << value.codeSize << '\n';
2520	s << "\tpCode = " << value.pCode << '\n';
2521	s << '}';
2522	return s;
2523}
2524
2525std::ostream& operator<< (std::ostream& s, const VkPipelineCacheCreateInfo& value)
2526{
2527	s << "VkPipelineCacheCreateInfo = {\n";
2528	s << "\tsType = " << value.sType << '\n';
2529	s << "\tpNext = " << value.pNext << '\n';
2530	s << "\tflags = " << getPipelineCacheCreateFlagsStr(value.flags) << '\n';
2531	s << "\tinitialDataSize = " << value.initialDataSize << '\n';
2532	s << "\tpInitialData = " << value.pInitialData << '\n';
2533	s << '}';
2534	return s;
2535}
2536
2537std::ostream& operator<< (std::ostream& s, const VkSpecializationMapEntry& value)
2538{
2539	s << "VkSpecializationMapEntry = {\n";
2540	s << "\tconstantID = " << value.constantID << '\n';
2541	s << "\toffset = " << value.offset << '\n';
2542	s << "\tsize = " << value.size << '\n';
2543	s << '}';
2544	return s;
2545}
2546
2547std::ostream& operator<< (std::ostream& s, const VkSpecializationInfo& value)
2548{
2549	s << "VkSpecializationInfo = {\n";
2550	s << "\tmapEntryCount = " << value.mapEntryCount << '\n';
2551	s << "\tpMapEntries = " << value.pMapEntries << '\n';
2552	s << "\tdataSize = " << value.dataSize << '\n';
2553	s << "\tpData = " << value.pData << '\n';
2554	s << '}';
2555	return s;
2556}
2557
2558std::ostream& operator<< (std::ostream& s, const VkPipelineShaderStageCreateInfo& value)
2559{
2560	s << "VkPipelineShaderStageCreateInfo = {\n";
2561	s << "\tsType = " << value.sType << '\n';
2562	s << "\tpNext = " << value.pNext << '\n';
2563	s << "\tflags = " << getPipelineShaderStageCreateFlagsStr(value.flags) << '\n';
2564	s << "\tstage = " << value.stage << '\n';
2565	s << "\tmodule = " << value.module << '\n';
2566	s << "\tpName = " << getCharPtrStr(value.pName) << '\n';
2567	s << "\tpSpecializationInfo = " << value.pSpecializationInfo << '\n';
2568	s << '}';
2569	return s;
2570}
2571
2572std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDescription& value)
2573{
2574	s << "VkVertexInputBindingDescription = {\n";
2575	s << "\tbinding = " << value.binding << '\n';
2576	s << "\tstride = " << value.stride << '\n';
2577	s << "\tinputRate = " << value.inputRate << '\n';
2578	s << '}';
2579	return s;
2580}
2581
2582std::ostream& operator<< (std::ostream& s, const VkVertexInputAttributeDescription& value)
2583{
2584	s << "VkVertexInputAttributeDescription = {\n";
2585	s << "\tlocation = " << value.location << '\n';
2586	s << "\tbinding = " << value.binding << '\n';
2587	s << "\tformat = " << value.format << '\n';
2588	s << "\toffset = " << value.offset << '\n';
2589	s << '}';
2590	return s;
2591}
2592
2593std::ostream& operator<< (std::ostream& s, const VkPipelineVertexInputStateCreateInfo& value)
2594{
2595	s << "VkPipelineVertexInputStateCreateInfo = {\n";
2596	s << "\tsType = " << value.sType << '\n';
2597	s << "\tpNext = " << value.pNext << '\n';
2598	s << "\tflags = " << getPipelineVertexInputStateCreateFlagsStr(value.flags) << '\n';
2599	s << "\tvertexBindingDescriptionCount = " << value.vertexBindingDescriptionCount << '\n';
2600	s << "\tpVertexBindingDescriptions = " << value.pVertexBindingDescriptions << '\n';
2601	s << "\tvertexAttributeDescriptionCount = " << value.vertexAttributeDescriptionCount << '\n';
2602	s << "\tpVertexAttributeDescriptions = " << value.pVertexAttributeDescriptions << '\n';
2603	s << '}';
2604	return s;
2605}
2606
2607std::ostream& operator<< (std::ostream& s, const VkPipelineInputAssemblyStateCreateInfo& value)
2608{
2609	s << "VkPipelineInputAssemblyStateCreateInfo = {\n";
2610	s << "\tsType = " << value.sType << '\n';
2611	s << "\tpNext = " << value.pNext << '\n';
2612	s << "\tflags = " << getPipelineInputAssemblyStateCreateFlagsStr(value.flags) << '\n';
2613	s << "\ttopology = " << value.topology << '\n';
2614	s << "\tprimitiveRestartEnable = " << value.primitiveRestartEnable << '\n';
2615	s << '}';
2616	return s;
2617}
2618
2619std::ostream& operator<< (std::ostream& s, const VkPipelineTessellationStateCreateInfo& value)
2620{
2621	s << "VkPipelineTessellationStateCreateInfo = {\n";
2622	s << "\tsType = " << value.sType << '\n';
2623	s << "\tpNext = " << value.pNext << '\n';
2624	s << "\tflags = " << getPipelineTessellationStateCreateFlagsStr(value.flags) << '\n';
2625	s << "\tpatchControlPoints = " << value.patchControlPoints << '\n';
2626	s << '}';
2627	return s;
2628}
2629
2630std::ostream& operator<< (std::ostream& s, const VkViewport& value)
2631{
2632	s << "VkViewport = {\n";
2633	s << "\tx = " << value.x << '\n';
2634	s << "\ty = " << value.y << '\n';
2635	s << "\twidth = " << value.width << '\n';
2636	s << "\theight = " << value.height << '\n';
2637	s << "\tminDepth = " << value.minDepth << '\n';
2638	s << "\tmaxDepth = " << value.maxDepth << '\n';
2639	s << '}';
2640	return s;
2641}
2642
2643std::ostream& operator<< (std::ostream& s, const VkOffset2D& value)
2644{
2645	s << "VkOffset2D = {\n";
2646	s << "\tx = " << value.x << '\n';
2647	s << "\ty = " << value.y << '\n';
2648	s << '}';
2649	return s;
2650}
2651
2652std::ostream& operator<< (std::ostream& s, const VkExtent2D& value)
2653{
2654	s << "VkExtent2D = {\n";
2655	s << "\twidth = " << value.width << '\n';
2656	s << "\theight = " << value.height << '\n';
2657	s << '}';
2658	return s;
2659}
2660
2661std::ostream& operator<< (std::ostream& s, const VkRect2D& value)
2662{
2663	s << "VkRect2D = {\n";
2664	s << "\toffset = " << value.offset << '\n';
2665	s << "\textent = " << value.extent << '\n';
2666	s << '}';
2667	return s;
2668}
2669
2670std::ostream& operator<< (std::ostream& s, const VkPipelineViewportStateCreateInfo& value)
2671{
2672	s << "VkPipelineViewportStateCreateInfo = {\n";
2673	s << "\tsType = " << value.sType << '\n';
2674	s << "\tpNext = " << value.pNext << '\n';
2675	s << "\tflags = " << getPipelineViewportStateCreateFlagsStr(value.flags) << '\n';
2676	s << "\tviewportCount = " << value.viewportCount << '\n';
2677	s << "\tpViewports = " << value.pViewports << '\n';
2678	s << "\tscissorCount = " << value.scissorCount << '\n';
2679	s << "\tpScissors = " << value.pScissors << '\n';
2680	s << '}';
2681	return s;
2682}
2683
2684std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateCreateInfo& value)
2685{
2686	s << "VkPipelineRasterizationStateCreateInfo = {\n";
2687	s << "\tsType = " << value.sType << '\n';
2688	s << "\tpNext = " << value.pNext << '\n';
2689	s << "\tflags = " << getPipelineRasterizationStateCreateFlagsStr(value.flags) << '\n';
2690	s << "\tdepthClampEnable = " << value.depthClampEnable << '\n';
2691	s << "\trasterizerDiscardEnable = " << value.rasterizerDiscardEnable << '\n';
2692	s << "\tpolygonMode = " << value.polygonMode << '\n';
2693	s << "\tcullMode = " << getCullModeFlagsStr(value.cullMode) << '\n';
2694	s << "\tfrontFace = " << value.frontFace << '\n';
2695	s << "\tdepthBiasEnable = " << value.depthBiasEnable << '\n';
2696	s << "\tdepthBiasConstantFactor = " << value.depthBiasConstantFactor << '\n';
2697	s << "\tdepthBiasClamp = " << value.depthBiasClamp << '\n';
2698	s << "\tdepthBiasSlopeFactor = " << value.depthBiasSlopeFactor << '\n';
2699	s << "\tlineWidth = " << value.lineWidth << '\n';
2700	s << '}';
2701	return s;
2702}
2703
2704std::ostream& operator<< (std::ostream& s, const VkPipelineMultisampleStateCreateInfo& value)
2705{
2706	s << "VkPipelineMultisampleStateCreateInfo = {\n";
2707	s << "\tsType = " << value.sType << '\n';
2708	s << "\tpNext = " << value.pNext << '\n';
2709	s << "\tflags = " << getPipelineMultisampleStateCreateFlagsStr(value.flags) << '\n';
2710	s << "\trasterizationSamples = " << value.rasterizationSamples << '\n';
2711	s << "\tsampleShadingEnable = " << value.sampleShadingEnable << '\n';
2712	s << "\tminSampleShading = " << value.minSampleShading << '\n';
2713	s << "\tpSampleMask = " << value.pSampleMask << '\n';
2714	s << "\talphaToCoverageEnable = " << value.alphaToCoverageEnable << '\n';
2715	s << "\talphaToOneEnable = " << value.alphaToOneEnable << '\n';
2716	s << '}';
2717	return s;
2718}
2719
2720std::ostream& operator<< (std::ostream& s, const VkStencilOpState& value)
2721{
2722	s << "VkStencilOpState = {\n";
2723	s << "\tfailOp = " << value.failOp << '\n';
2724	s << "\tpassOp = " << value.passOp << '\n';
2725	s << "\tdepthFailOp = " << value.depthFailOp << '\n';
2726	s << "\tcompareOp = " << value.compareOp << '\n';
2727	s << "\tcompareMask = " << value.compareMask << '\n';
2728	s << "\twriteMask = " << value.writeMask << '\n';
2729	s << "\treference = " << value.reference << '\n';
2730	s << '}';
2731	return s;
2732}
2733
2734std::ostream& operator<< (std::ostream& s, const VkPipelineDepthStencilStateCreateInfo& value)
2735{
2736	s << "VkPipelineDepthStencilStateCreateInfo = {\n";
2737	s << "\tsType = " << value.sType << '\n';
2738	s << "\tpNext = " << value.pNext << '\n';
2739	s << "\tflags = " << getPipelineDepthStencilStateCreateFlagsStr(value.flags) << '\n';
2740	s << "\tdepthTestEnable = " << value.depthTestEnable << '\n';
2741	s << "\tdepthWriteEnable = " << value.depthWriteEnable << '\n';
2742	s << "\tdepthCompareOp = " << value.depthCompareOp << '\n';
2743	s << "\tdepthBoundsTestEnable = " << value.depthBoundsTestEnable << '\n';
2744	s << "\tstencilTestEnable = " << value.stencilTestEnable << '\n';
2745	s << "\tfront = " << value.front << '\n';
2746	s << "\tback = " << value.back << '\n';
2747	s << "\tminDepthBounds = " << value.minDepthBounds << '\n';
2748	s << "\tmaxDepthBounds = " << value.maxDepthBounds << '\n';
2749	s << '}';
2750	return s;
2751}
2752
2753std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendAttachmentState& value)
2754{
2755	s << "VkPipelineColorBlendAttachmentState = {\n";
2756	s << "\tblendEnable = " << value.blendEnable << '\n';
2757	s << "\tsrcColorBlendFactor = " << value.srcColorBlendFactor << '\n';
2758	s << "\tdstColorBlendFactor = " << value.dstColorBlendFactor << '\n';
2759	s << "\tcolorBlendOp = " << value.colorBlendOp << '\n';
2760	s << "\tsrcAlphaBlendFactor = " << value.srcAlphaBlendFactor << '\n';
2761	s << "\tdstAlphaBlendFactor = " << value.dstAlphaBlendFactor << '\n';
2762	s << "\talphaBlendOp = " << value.alphaBlendOp << '\n';
2763	s << "\tcolorWriteMask = " << getColorComponentFlagsStr(value.colorWriteMask) << '\n';
2764	s << '}';
2765	return s;
2766}
2767
2768std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendStateCreateInfo& value)
2769{
2770	s << "VkPipelineColorBlendStateCreateInfo = {\n";
2771	s << "\tsType = " << value.sType << '\n';
2772	s << "\tpNext = " << value.pNext << '\n';
2773	s << "\tflags = " << getPipelineColorBlendStateCreateFlagsStr(value.flags) << '\n';
2774	s << "\tlogicOpEnable = " << value.logicOpEnable << '\n';
2775	s << "\tlogicOp = " << value.logicOp << '\n';
2776	s << "\tattachmentCount = " << value.attachmentCount << '\n';
2777	s << "\tpAttachments = " << value.pAttachments << '\n';
2778	s << "\tblendConstants = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.blendConstants), DE_ARRAY_END(value.blendConstants)) << '\n';
2779	s << '}';
2780	return s;
2781}
2782
2783std::ostream& operator<< (std::ostream& s, const VkPipelineDynamicStateCreateInfo& value)
2784{
2785	s << "VkPipelineDynamicStateCreateInfo = {\n";
2786	s << "\tsType = " << value.sType << '\n';
2787	s << "\tpNext = " << value.pNext << '\n';
2788	s << "\tflags = " << getPipelineDynamicStateCreateFlagsStr(value.flags) << '\n';
2789	s << "\tdynamicStateCount = " << value.dynamicStateCount << '\n';
2790	s << "\tpDynamicStates = " << value.pDynamicStates << '\n';
2791	s << '}';
2792	return s;
2793}
2794
2795std::ostream& operator<< (std::ostream& s, const VkGraphicsPipelineCreateInfo& value)
2796{
2797	s << "VkGraphicsPipelineCreateInfo = {\n";
2798	s << "\tsType = " << value.sType << '\n';
2799	s << "\tpNext = " << value.pNext << '\n';
2800	s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
2801	s << "\tstageCount = " << value.stageCount << '\n';
2802	s << "\tpStages = " << value.pStages << '\n';
2803	s << "\tpVertexInputState = " << value.pVertexInputState << '\n';
2804	s << "\tpInputAssemblyState = " << value.pInputAssemblyState << '\n';
2805	s << "\tpTessellationState = " << value.pTessellationState << '\n';
2806	s << "\tpViewportState = " << value.pViewportState << '\n';
2807	s << "\tpRasterizationState = " << value.pRasterizationState << '\n';
2808	s << "\tpMultisampleState = " << value.pMultisampleState << '\n';
2809	s << "\tpDepthStencilState = " << value.pDepthStencilState << '\n';
2810	s << "\tpColorBlendState = " << value.pColorBlendState << '\n';
2811	s << "\tpDynamicState = " << value.pDynamicState << '\n';
2812	s << "\tlayout = " << value.layout << '\n';
2813	s << "\trenderPass = " << value.renderPass << '\n';
2814	s << "\tsubpass = " << value.subpass << '\n';
2815	s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
2816	s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
2817	s << '}';
2818	return s;
2819}
2820
2821std::ostream& operator<< (std::ostream& s, const VkComputePipelineCreateInfo& value)
2822{
2823	s << "VkComputePipelineCreateInfo = {\n";
2824	s << "\tsType = " << value.sType << '\n';
2825	s << "\tpNext = " << value.pNext << '\n';
2826	s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
2827	s << "\tstage = " << value.stage << '\n';
2828	s << "\tlayout = " << value.layout << '\n';
2829	s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
2830	s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
2831	s << '}';
2832	return s;
2833}
2834
2835std::ostream& operator<< (std::ostream& s, const VkPushConstantRange& value)
2836{
2837	s << "VkPushConstantRange = {\n";
2838	s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
2839	s << "\toffset = " << value.offset << '\n';
2840	s << "\tsize = " << value.size << '\n';
2841	s << '}';
2842	return s;
2843}
2844
2845std::ostream& operator<< (std::ostream& s, const VkPipelineLayoutCreateInfo& value)
2846{
2847	s << "VkPipelineLayoutCreateInfo = {\n";
2848	s << "\tsType = " << value.sType << '\n';
2849	s << "\tpNext = " << value.pNext << '\n';
2850	s << "\tflags = " << getPipelineLayoutCreateFlagsStr(value.flags) << '\n';
2851	s << "\tsetLayoutCount = " << value.setLayoutCount << '\n';
2852	s << "\tpSetLayouts = " << value.pSetLayouts << '\n';
2853	s << "\tpushConstantRangeCount = " << value.pushConstantRangeCount << '\n';
2854	s << "\tpPushConstantRanges = " << value.pPushConstantRanges << '\n';
2855	s << '}';
2856	return s;
2857}
2858
2859std::ostream& operator<< (std::ostream& s, const VkSamplerCreateInfo& value)
2860{
2861	s << "VkSamplerCreateInfo = {\n";
2862	s << "\tsType = " << value.sType << '\n';
2863	s << "\tpNext = " << value.pNext << '\n';
2864	s << "\tflags = " << getSamplerCreateFlagsStr(value.flags) << '\n';
2865	s << "\tmagFilter = " << value.magFilter << '\n';
2866	s << "\tminFilter = " << value.minFilter << '\n';
2867	s << "\tmipmapMode = " << value.mipmapMode << '\n';
2868	s << "\taddressModeU = " << value.addressModeU << '\n';
2869	s << "\taddressModeV = " << value.addressModeV << '\n';
2870	s << "\taddressModeW = " << value.addressModeW << '\n';
2871	s << "\tmipLodBias = " << value.mipLodBias << '\n';
2872	s << "\tanisotropyEnable = " << value.anisotropyEnable << '\n';
2873	s << "\tmaxAnisotropy = " << value.maxAnisotropy << '\n';
2874	s << "\tcompareEnable = " << value.compareEnable << '\n';
2875	s << "\tcompareOp = " << value.compareOp << '\n';
2876	s << "\tminLod = " << value.minLod << '\n';
2877	s << "\tmaxLod = " << value.maxLod << '\n';
2878	s << "\tborderColor = " << value.borderColor << '\n';
2879	s << "\tunnormalizedCoordinates = " << value.unnormalizedCoordinates << '\n';
2880	s << '}';
2881	return s;
2882}
2883
2884std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBinding& value)
2885{
2886	s << "VkDescriptorSetLayoutBinding = {\n";
2887	s << "\tbinding = " << value.binding << '\n';
2888	s << "\tdescriptorType = " << value.descriptorType << '\n';
2889	s << "\tdescriptorCount = " << value.descriptorCount << '\n';
2890	s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
2891	s << "\tpImmutableSamplers = " << value.pImmutableSamplers << '\n';
2892	s << '}';
2893	return s;
2894}
2895
2896std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutCreateInfo& value)
2897{
2898	s << "VkDescriptorSetLayoutCreateInfo = {\n";
2899	s << "\tsType = " << value.sType << '\n';
2900	s << "\tpNext = " << value.pNext << '\n';
2901	s << "\tflags = " << getDescriptorSetLayoutCreateFlagsStr(value.flags) << '\n';
2902	s << "\tbindingCount = " << value.bindingCount << '\n';
2903	s << "\tpBindings = " << value.pBindings << '\n';
2904	s << '}';
2905	return s;
2906}
2907
2908std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolSize& value)
2909{
2910	s << "VkDescriptorPoolSize = {\n";
2911	s << "\ttype = " << value.type << '\n';
2912	s << "\tdescriptorCount = " << value.descriptorCount << '\n';
2913	s << '}';
2914	return s;
2915}
2916
2917std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolCreateInfo& value)
2918{
2919	s << "VkDescriptorPoolCreateInfo = {\n";
2920	s << "\tsType = " << value.sType << '\n';
2921	s << "\tpNext = " << value.pNext << '\n';
2922	s << "\tflags = " << getDescriptorPoolCreateFlagsStr(value.flags) << '\n';
2923	s << "\tmaxSets = " << value.maxSets << '\n';
2924	s << "\tpoolSizeCount = " << value.poolSizeCount << '\n';
2925	s << "\tpPoolSizes = " << value.pPoolSizes << '\n';
2926	s << '}';
2927	return s;
2928}
2929
2930std::ostream& operator<< (std::ostream& s, const VkDescriptorSetAllocateInfo& value)
2931{
2932	s << "VkDescriptorSetAllocateInfo = {\n";
2933	s << "\tsType = " << value.sType << '\n';
2934	s << "\tpNext = " << value.pNext << '\n';
2935	s << "\tdescriptorPool = " << value.descriptorPool << '\n';
2936	s << "\tdescriptorSetCount = " << value.descriptorSetCount << '\n';
2937	s << "\tpSetLayouts = " << value.pSetLayouts << '\n';
2938	s << '}';
2939	return s;
2940}
2941
2942std::ostream& operator<< (std::ostream& s, const VkDescriptorImageInfo& value)
2943{
2944	s << "VkDescriptorImageInfo = {\n";
2945	s << "\tsampler = " << value.sampler << '\n';
2946	s << "\timageView = " << value.imageView << '\n';
2947	s << "\timageLayout = " << value.imageLayout << '\n';
2948	s << '}';
2949	return s;
2950}
2951
2952std::ostream& operator<< (std::ostream& s, const VkDescriptorBufferInfo& value)
2953{
2954	s << "VkDescriptorBufferInfo = {\n";
2955	s << "\tbuffer = " << value.buffer << '\n';
2956	s << "\toffset = " << value.offset << '\n';
2957	s << "\trange = " << value.range << '\n';
2958	s << '}';
2959	return s;
2960}
2961
2962std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSet& value)
2963{
2964	s << "VkWriteDescriptorSet = {\n";
2965	s << "\tsType = " << value.sType << '\n';
2966	s << "\tpNext = " << value.pNext << '\n';
2967	s << "\tdstSet = " << value.dstSet << '\n';
2968	s << "\tdstBinding = " << value.dstBinding << '\n';
2969	s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
2970	s << "\tdescriptorCount = " << value.descriptorCount << '\n';
2971	s << "\tdescriptorType = " << value.descriptorType << '\n';
2972	s << "\tpImageInfo = " << value.pImageInfo << '\n';
2973	s << "\tpBufferInfo = " << value.pBufferInfo << '\n';
2974	s << "\tpTexelBufferView = " << value.pTexelBufferView << '\n';
2975	s << '}';
2976	return s;
2977}
2978
2979std::ostream& operator<< (std::ostream& s, const VkCopyDescriptorSet& value)
2980{
2981	s << "VkCopyDescriptorSet = {\n";
2982	s << "\tsType = " << value.sType << '\n';
2983	s << "\tpNext = " << value.pNext << '\n';
2984	s << "\tsrcSet = " << value.srcSet << '\n';
2985	s << "\tsrcBinding = " << value.srcBinding << '\n';
2986	s << "\tsrcArrayElement = " << value.srcArrayElement << '\n';
2987	s << "\tdstSet = " << value.dstSet << '\n';
2988	s << "\tdstBinding = " << value.dstBinding << '\n';
2989	s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
2990	s << "\tdescriptorCount = " << value.descriptorCount << '\n';
2991	s << '}';
2992	return s;
2993}
2994
2995std::ostream& operator<< (std::ostream& s, const VkFramebufferCreateInfo& value)
2996{
2997	s << "VkFramebufferCreateInfo = {\n";
2998	s << "\tsType = " << value.sType << '\n';
2999	s << "\tpNext = " << value.pNext << '\n';
3000	s << "\tflags = " << getFramebufferCreateFlagsStr(value.flags) << '\n';
3001	s << "\trenderPass = " << value.renderPass << '\n';
3002	s << "\tattachmentCount = " << value.attachmentCount << '\n';
3003	s << "\tpAttachments = " << value.pAttachments << '\n';
3004	s << "\twidth = " << value.width << '\n';
3005	s << "\theight = " << value.height << '\n';
3006	s << "\tlayers = " << value.layers << '\n';
3007	s << '}';
3008	return s;
3009}
3010
3011std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription& value)
3012{
3013	s << "VkAttachmentDescription = {\n";
3014	s << "\tflags = " << getAttachmentDescriptionFlagsStr(value.flags) << '\n';
3015	s << "\tformat = " << value.format << '\n';
3016	s << "\tsamples = " << value.samples << '\n';
3017	s << "\tloadOp = " << value.loadOp << '\n';
3018	s << "\tstoreOp = " << value.storeOp << '\n';
3019	s << "\tstencilLoadOp = " << value.stencilLoadOp << '\n';
3020	s << "\tstencilStoreOp = " << value.stencilStoreOp << '\n';
3021	s << "\tinitialLayout = " << value.initialLayout << '\n';
3022	s << "\tfinalLayout = " << value.finalLayout << '\n';
3023	s << '}';
3024	return s;
3025}
3026
3027std::ostream& operator<< (std::ostream& s, const VkAttachmentReference& value)
3028{
3029	s << "VkAttachmentReference = {\n";
3030	s << "\tattachment = " << value.attachment << '\n';
3031	s << "\tlayout = " << value.layout << '\n';
3032	s << '}';
3033	return s;
3034}
3035
3036std::ostream& operator<< (std::ostream& s, const VkSubpassDescription& value)
3037{
3038	s << "VkSubpassDescription = {\n";
3039	s << "\tflags = " << getSubpassDescriptionFlagsStr(value.flags) << '\n';
3040	s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
3041	s << "\tinputAttachmentCount = " << value.inputAttachmentCount << '\n';
3042	s << "\tpInputAttachments = " << value.pInputAttachments << '\n';
3043	s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
3044	s << "\tpColorAttachments = " << value.pColorAttachments << '\n';
3045	s << "\tpResolveAttachments = " << value.pResolveAttachments << '\n';
3046	s << "\tpDepthStencilAttachment = " << value.pDepthStencilAttachment << '\n';
3047	s << "\tpreserveAttachmentCount = " << value.preserveAttachmentCount << '\n';
3048	s << "\tpPreserveAttachments = " << value.pPreserveAttachments << '\n';
3049	s << '}';
3050	return s;
3051}
3052
3053std::ostream& operator<< (std::ostream& s, const VkSubpassDependency& value)
3054{
3055	s << "VkSubpassDependency = {\n";
3056	s << "\tsrcSubpass = " << value.srcSubpass << '\n';
3057	s << "\tdstSubpass = " << value.dstSubpass << '\n';
3058	s << "\tsrcStageMask = " << getPipelineStageFlagsStr(value.srcStageMask) << '\n';
3059	s << "\tdstStageMask = " << getPipelineStageFlagsStr(value.dstStageMask) << '\n';
3060	s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
3061	s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
3062	s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
3063	s << '}';
3064	return s;
3065}
3066
3067std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo& value)
3068{
3069	s << "VkRenderPassCreateInfo = {\n";
3070	s << "\tsType = " << value.sType << '\n';
3071	s << "\tpNext = " << value.pNext << '\n';
3072	s << "\tflags = " << getRenderPassCreateFlagsStr(value.flags) << '\n';
3073	s << "\tattachmentCount = " << value.attachmentCount << '\n';
3074	s << "\tpAttachments = " << value.pAttachments << '\n';
3075	s << "\tsubpassCount = " << value.subpassCount << '\n';
3076	s << "\tpSubpasses = " << value.pSubpasses << '\n';
3077	s << "\tdependencyCount = " << value.dependencyCount << '\n';
3078	s << "\tpDependencies = " << value.pDependencies << '\n';
3079	s << '}';
3080	return s;
3081}
3082
3083std::ostream& operator<< (std::ostream& s, const VkCommandPoolCreateInfo& value)
3084{
3085	s << "VkCommandPoolCreateInfo = {\n";
3086	s << "\tsType = " << value.sType << '\n';
3087	s << "\tpNext = " << value.pNext << '\n';
3088	s << "\tflags = " << getCommandPoolCreateFlagsStr(value.flags) << '\n';
3089	s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
3090	s << '}';
3091	return s;
3092}
3093
3094std::ostream& operator<< (std::ostream& s, const VkCommandBufferAllocateInfo& value)
3095{
3096	s << "VkCommandBufferAllocateInfo = {\n";
3097	s << "\tsType = " << value.sType << '\n';
3098	s << "\tpNext = " << value.pNext << '\n';
3099	s << "\tcommandPool = " << value.commandPool << '\n';
3100	s << "\tlevel = " << value.level << '\n';
3101	s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
3102	s << '}';
3103	return s;
3104}
3105
3106std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceInfo& value)
3107{
3108	s << "VkCommandBufferInheritanceInfo = {\n";
3109	s << "\tsType = " << value.sType << '\n';
3110	s << "\tpNext = " << value.pNext << '\n';
3111	s << "\trenderPass = " << value.renderPass << '\n';
3112	s << "\tsubpass = " << value.subpass << '\n';
3113	s << "\tframebuffer = " << value.framebuffer << '\n';
3114	s << "\tocclusionQueryEnable = " << value.occlusionQueryEnable << '\n';
3115	s << "\tqueryFlags = " << getQueryControlFlagsStr(value.queryFlags) << '\n';
3116	s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
3117	s << '}';
3118	return s;
3119}
3120
3121std::ostream& operator<< (std::ostream& s, const VkCommandBufferBeginInfo& value)
3122{
3123	s << "VkCommandBufferBeginInfo = {\n";
3124	s << "\tsType = " << value.sType << '\n';
3125	s << "\tpNext = " << value.pNext << '\n';
3126	s << "\tflags = " << getCommandBufferUsageFlagsStr(value.flags) << '\n';
3127	s << "\tpInheritanceInfo = " << value.pInheritanceInfo << '\n';
3128	s << '}';
3129	return s;
3130}
3131
3132std::ostream& operator<< (std::ostream& s, const VkBufferCopy& value)
3133{
3134	s << "VkBufferCopy = {\n";
3135	s << "\tsrcOffset = " << value.srcOffset << '\n';
3136	s << "\tdstOffset = " << value.dstOffset << '\n';
3137	s << "\tsize = " << value.size << '\n';
3138	s << '}';
3139	return s;
3140}
3141
3142std::ostream& operator<< (std::ostream& s, const VkImageSubresourceLayers& value)
3143{
3144	s << "VkImageSubresourceLayers = {\n";
3145	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
3146	s << "\tmipLevel = " << value.mipLevel << '\n';
3147	s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
3148	s << "\tlayerCount = " << value.layerCount << '\n';
3149	s << '}';
3150	return s;
3151}
3152
3153std::ostream& operator<< (std::ostream& s, const VkImageCopy& value)
3154{
3155	s << "VkImageCopy = {\n";
3156	s << "\tsrcSubresource = " << value.srcSubresource << '\n';
3157	s << "\tsrcOffset = " << value.srcOffset << '\n';
3158	s << "\tdstSubresource = " << value.dstSubresource << '\n';
3159	s << "\tdstOffset = " << value.dstOffset << '\n';
3160	s << "\textent = " << value.extent << '\n';
3161	s << '}';
3162	return s;
3163}
3164
3165std::ostream& operator<< (std::ostream& s, const VkImageBlit& value)
3166{
3167	s << "VkImageBlit = {\n";
3168	s << "\tsrcSubresource = " << value.srcSubresource << '\n';
3169	s << "\tsrcOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.srcOffsets), DE_ARRAY_END(value.srcOffsets)) << '\n';
3170	s << "\tdstSubresource = " << value.dstSubresource << '\n';
3171	s << "\tdstOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.dstOffsets), DE_ARRAY_END(value.dstOffsets)) << '\n';
3172	s << '}';
3173	return s;
3174}
3175
3176std::ostream& operator<< (std::ostream& s, const VkBufferImageCopy& value)
3177{
3178	s << "VkBufferImageCopy = {\n";
3179	s << "\tbufferOffset = " << value.bufferOffset << '\n';
3180	s << "\tbufferRowLength = " << value.bufferRowLength << '\n';
3181	s << "\tbufferImageHeight = " << value.bufferImageHeight << '\n';
3182	s << "\timageSubresource = " << value.imageSubresource << '\n';
3183	s << "\timageOffset = " << value.imageOffset << '\n';
3184	s << "\timageExtent = " << value.imageExtent << '\n';
3185	s << '}';
3186	return s;
3187}
3188
3189std::ostream& operator<< (std::ostream& s, const VkClearColorValue& value)
3190{
3191	s << "VkClearColorValue = {\n";
3192	s << "\tfloat32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.float32), DE_ARRAY_END(value.float32)) << '\n';
3193	s << "\tint32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.int32), DE_ARRAY_END(value.int32)) << '\n';
3194	s << "\tuint32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.uint32), DE_ARRAY_END(value.uint32)) << '\n';
3195	s << '}';
3196	return s;
3197}
3198
3199std::ostream& operator<< (std::ostream& s, const VkClearDepthStencilValue& value)
3200{
3201	s << "VkClearDepthStencilValue = {\n";
3202	s << "\tdepth = " << value.depth << '\n';
3203	s << "\tstencil = " << value.stencil << '\n';
3204	s << '}';
3205	return s;
3206}
3207
3208std::ostream& operator<< (std::ostream& s, const VkClearValue& value)
3209{
3210	s << "VkClearValue = {\n";
3211	s << "\tcolor = " << value.color << '\n';
3212	s << "\tdepthStencil = " << value.depthStencil << '\n';
3213	s << '}';
3214	return s;
3215}
3216
3217std::ostream& operator<< (std::ostream& s, const VkClearAttachment& value)
3218{
3219	s << "VkClearAttachment = {\n";
3220	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
3221	s << "\tcolorAttachment = " << value.colorAttachment << '\n';
3222	s << "\tclearValue = " << value.clearValue << '\n';
3223	s << '}';
3224	return s;
3225}
3226
3227std::ostream& operator<< (std::ostream& s, const VkClearRect& value)
3228{
3229	s << "VkClearRect = {\n";
3230	s << "\trect = " << value.rect << '\n';
3231	s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
3232	s << "\tlayerCount = " << value.layerCount << '\n';
3233	s << '}';
3234	return s;
3235}
3236
3237std::ostream& operator<< (std::ostream& s, const VkImageResolve& value)
3238{
3239	s << "VkImageResolve = {\n";
3240	s << "\tsrcSubresource = " << value.srcSubresource << '\n';
3241	s << "\tsrcOffset = " << value.srcOffset << '\n';
3242	s << "\tdstSubresource = " << value.dstSubresource << '\n';
3243	s << "\tdstOffset = " << value.dstOffset << '\n';
3244	s << "\textent = " << value.extent << '\n';
3245	s << '}';
3246	return s;
3247}
3248
3249std::ostream& operator<< (std::ostream& s, const VkMemoryBarrier& value)
3250{
3251	s << "VkMemoryBarrier = {\n";
3252	s << "\tsType = " << value.sType << '\n';
3253	s << "\tpNext = " << value.pNext << '\n';
3254	s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
3255	s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
3256	s << '}';
3257	return s;
3258}
3259
3260std::ostream& operator<< (std::ostream& s, const VkBufferMemoryBarrier& value)
3261{
3262	s << "VkBufferMemoryBarrier = {\n";
3263	s << "\tsType = " << value.sType << '\n';
3264	s << "\tpNext = " << value.pNext << '\n';
3265	s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
3266	s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
3267	s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
3268	s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
3269	s << "\tbuffer = " << value.buffer << '\n';
3270	s << "\toffset = " << value.offset << '\n';
3271	s << "\tsize = " << value.size << '\n';
3272	s << '}';
3273	return s;
3274}
3275
3276std::ostream& operator<< (std::ostream& s, const VkImageMemoryBarrier& value)
3277{
3278	s << "VkImageMemoryBarrier = {\n";
3279	s << "\tsType = " << value.sType << '\n';
3280	s << "\tpNext = " << value.pNext << '\n';
3281	s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
3282	s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
3283	s << "\toldLayout = " << value.oldLayout << '\n';
3284	s << "\tnewLayout = " << value.newLayout << '\n';
3285	s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
3286	s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
3287	s << "\timage = " << value.image << '\n';
3288	s << "\tsubresourceRange = " << value.subresourceRange << '\n';
3289	s << '}';
3290	return s;
3291}
3292
3293std::ostream& operator<< (std::ostream& s, const VkRenderPassBeginInfo& value)
3294{
3295	s << "VkRenderPassBeginInfo = {\n";
3296	s << "\tsType = " << value.sType << '\n';
3297	s << "\tpNext = " << value.pNext << '\n';
3298	s << "\trenderPass = " << value.renderPass << '\n';
3299	s << "\tframebuffer = " << value.framebuffer << '\n';
3300	s << "\trenderArea = " << value.renderArea << '\n';
3301	s << "\tclearValueCount = " << value.clearValueCount << '\n';
3302	s << "\tpClearValues = " << value.pClearValues << '\n';
3303	s << '}';
3304	return s;
3305}
3306
3307std::ostream& operator<< (std::ostream& s, const VkDispatchIndirectCommand& value)
3308{
3309	s << "VkDispatchIndirectCommand = {\n";
3310	s << "\tx = " << value.x << '\n';
3311	s << "\ty = " << value.y << '\n';
3312	s << "\tz = " << value.z << '\n';
3313	s << '}';
3314	return s;
3315}
3316
3317std::ostream& operator<< (std::ostream& s, const VkDrawIndexedIndirectCommand& value)
3318{
3319	s << "VkDrawIndexedIndirectCommand = {\n";
3320	s << "\tindexCount = " << value.indexCount << '\n';
3321	s << "\tinstanceCount = " << value.instanceCount << '\n';
3322	s << "\tfirstIndex = " << value.firstIndex << '\n';
3323	s << "\tvertexOffset = " << value.vertexOffset << '\n';
3324	s << "\tfirstInstance = " << value.firstInstance << '\n';
3325	s << '}';
3326	return s;
3327}
3328
3329std::ostream& operator<< (std::ostream& s, const VkDrawIndirectCommand& value)
3330{
3331	s << "VkDrawIndirectCommand = {\n";
3332	s << "\tvertexCount = " << value.vertexCount << '\n';
3333	s << "\tinstanceCount = " << value.instanceCount << '\n';
3334	s << "\tfirstVertex = " << value.firstVertex << '\n';
3335	s << "\tfirstInstance = " << value.firstInstance << '\n';
3336	s << '}';
3337	return s;
3338}
3339
3340std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilitiesKHR& value)
3341{
3342	s << "VkSurfaceCapabilitiesKHR = {\n";
3343	s << "\tminImageCount = " << value.minImageCount << '\n';
3344	s << "\tmaxImageCount = " << value.maxImageCount << '\n';
3345	s << "\tcurrentExtent = " << value.currentExtent << '\n';
3346	s << "\tminImageExtent = " << value.minImageExtent << '\n';
3347	s << "\tmaxImageExtent = " << value.maxImageExtent << '\n';
3348	s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
3349	s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
3350	s << "\tcurrentTransform = " << value.currentTransform << '\n';
3351	s << "\tsupportedCompositeAlpha = " << getCompositeAlphaFlagsKHRStr(value.supportedCompositeAlpha) << '\n';
3352	s << "\tsupportedUsageFlags = " << getImageUsageFlagsStr(value.supportedUsageFlags) << '\n';
3353	s << '}';
3354	return s;
3355}
3356
3357std::ostream& operator<< (std::ostream& s, const VkSurfaceFormatKHR& value)
3358{
3359	s << "VkSurfaceFormatKHR = {\n";
3360	s << "\tformat = " << value.format << '\n';
3361	s << "\tcolorSpace = " << value.colorSpace << '\n';
3362	s << '}';
3363	return s;
3364}
3365
3366std::ostream& operator<< (std::ostream& s, const VkSwapchainCreateInfoKHR& value)
3367{
3368	s << "VkSwapchainCreateInfoKHR = {\n";
3369	s << "\tsType = " << value.sType << '\n';
3370	s << "\tpNext = " << value.pNext << '\n';
3371	s << "\tflags = " << getSwapchainCreateFlagsKHRStr(value.flags) << '\n';
3372	s << "\tsurface = " << value.surface << '\n';
3373	s << "\tminImageCount = " << value.minImageCount << '\n';
3374	s << "\timageFormat = " << value.imageFormat << '\n';
3375	s << "\timageColorSpace = " << value.imageColorSpace << '\n';
3376	s << "\timageExtent = " << value.imageExtent << '\n';
3377	s << "\timageArrayLayers = " << value.imageArrayLayers << '\n';
3378	s << "\timageUsage = " << getImageUsageFlagsStr(value.imageUsage) << '\n';
3379	s << "\timageSharingMode = " << value.imageSharingMode << '\n';
3380	s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
3381	s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
3382	s << "\tpreTransform = " << value.preTransform << '\n';
3383	s << "\tcompositeAlpha = " << value.compositeAlpha << '\n';
3384	s << "\tpresentMode = " << value.presentMode << '\n';
3385	s << "\tclipped = " << value.clipped << '\n';
3386	s << "\toldSwapchain = " << value.oldSwapchain << '\n';
3387	s << '}';
3388	return s;
3389}
3390
3391std::ostream& operator<< (std::ostream& s, const VkPresentInfoKHR& value)
3392{
3393	s << "VkPresentInfoKHR = {\n";
3394	s << "\tsType = " << value.sType << '\n';
3395	s << "\tpNext = " << value.pNext << '\n';
3396	s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
3397	s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
3398	s << "\tswapchainCount = " << value.swapchainCount << '\n';
3399	s << "\tpSwapchains = " << value.pSwapchains << '\n';
3400	s << "\tpImageIndices = " << value.pImageIndices << '\n';
3401	s << "\tpResults = " << value.pResults << '\n';
3402	s << '}';
3403	return s;
3404}
3405
3406std::ostream& operator<< (std::ostream& s, const VkDisplayPropertiesKHR& value)
3407{
3408	s << "VkDisplayPropertiesKHR = {\n";
3409	s << "\tdisplay = " << value.display << '\n';
3410	s << "\tdisplayName = " << getCharPtrStr(value.displayName) << '\n';
3411	s << "\tphysicalDimensions = " << value.physicalDimensions << '\n';
3412	s << "\tphysicalResolution = " << value.physicalResolution << '\n';
3413	s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
3414	s << "\tplaneReorderPossible = " << value.planeReorderPossible << '\n';
3415	s << "\tpersistentContent = " << value.persistentContent << '\n';
3416	s << '}';
3417	return s;
3418}
3419
3420std::ostream& operator<< (std::ostream& s, const VkDisplayModeParametersKHR& value)
3421{
3422	s << "VkDisplayModeParametersKHR = {\n";
3423	s << "\tvisibleRegion = " << value.visibleRegion << '\n';
3424	s << "\trefreshRate = " << value.refreshRate << '\n';
3425	s << '}';
3426	return s;
3427}
3428
3429std::ostream& operator<< (std::ostream& s, const VkDisplayModePropertiesKHR& value)
3430{
3431	s << "VkDisplayModePropertiesKHR = {\n";
3432	s << "\tdisplayMode = " << value.displayMode << '\n';
3433	s << "\tparameters = " << value.parameters << '\n';
3434	s << '}';
3435	return s;
3436}
3437
3438std::ostream& operator<< (std::ostream& s, const VkDisplayModeCreateInfoKHR& value)
3439{
3440	s << "VkDisplayModeCreateInfoKHR = {\n";
3441	s << "\tsType = " << value.sType << '\n';
3442	s << "\tpNext = " << value.pNext << '\n';
3443	s << "\tflags = " << getDisplayModeCreateFlagsKHRStr(value.flags) << '\n';
3444	s << "\tparameters = " << value.parameters << '\n';
3445	s << '}';
3446	return s;
3447}
3448
3449std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilitiesKHR& value)
3450{
3451	s << "VkDisplayPlaneCapabilitiesKHR = {\n";
3452	s << "\tsupportedAlpha = " << getDisplayPlaneAlphaFlagsKHRStr(value.supportedAlpha) << '\n';
3453	s << "\tminSrcPosition = " << value.minSrcPosition << '\n';
3454	s << "\tmaxSrcPosition = " << value.maxSrcPosition << '\n';
3455	s << "\tminSrcExtent = " << value.minSrcExtent << '\n';
3456	s << "\tmaxSrcExtent = " << value.maxSrcExtent << '\n';
3457	s << "\tminDstPosition = " << value.minDstPosition << '\n';
3458	s << "\tmaxDstPosition = " << value.maxDstPosition << '\n';
3459	s << "\tminDstExtent = " << value.minDstExtent << '\n';
3460	s << "\tmaxDstExtent = " << value.maxDstExtent << '\n';
3461	s << '}';
3462	return s;
3463}
3464
3465std::ostream& operator<< (std::ostream& s, const VkDisplayPlanePropertiesKHR& value)
3466{
3467	s << "VkDisplayPlanePropertiesKHR = {\n";
3468	s << "\tcurrentDisplay = " << value.currentDisplay << '\n';
3469	s << "\tcurrentStackIndex = " << value.currentStackIndex << '\n';
3470	s << '}';
3471	return s;
3472}
3473
3474std::ostream& operator<< (std::ostream& s, const VkDisplaySurfaceCreateInfoKHR& value)
3475{
3476	s << "VkDisplaySurfaceCreateInfoKHR = {\n";
3477	s << "\tsType = " << value.sType << '\n';
3478	s << "\tpNext = " << value.pNext << '\n';
3479	s << "\tflags = " << getDisplaySurfaceCreateFlagsKHRStr(value.flags) << '\n';
3480	s << "\tdisplayMode = " << value.displayMode << '\n';
3481	s << "\tplaneIndex = " << value.planeIndex << '\n';
3482	s << "\tplaneStackIndex = " << value.planeStackIndex << '\n';
3483	s << "\ttransform = " << value.transform << '\n';
3484	s << "\tglobalAlpha = " << value.globalAlpha << '\n';
3485	s << "\talphaMode = " << value.alphaMode << '\n';
3486	s << "\timageExtent = " << value.imageExtent << '\n';
3487	s << '}';
3488	return s;
3489}
3490
3491std::ostream& operator<< (std::ostream& s, const VkDisplayPresentInfoKHR& value)
3492{
3493	s << "VkDisplayPresentInfoKHR = {\n";
3494	s << "\tsType = " << value.sType << '\n';
3495	s << "\tpNext = " << value.pNext << '\n';
3496	s << "\tsrcRect = " << value.srcRect << '\n';
3497	s << "\tdstRect = " << value.dstRect << '\n';
3498	s << "\tpersistent = " << value.persistent << '\n';
3499	s << '}';
3500	return s;
3501}
3502
3503std::ostream& operator<< (std::ostream& s, const VkXlibSurfaceCreateInfoKHR& value)
3504{
3505	s << "VkXlibSurfaceCreateInfoKHR = {\n";
3506	s << "\tsType = " << value.sType << '\n';
3507	s << "\tpNext = " << value.pNext << '\n';
3508	s << "\tflags = " << getXlibSurfaceCreateFlagsKHRStr(value.flags) << '\n';
3509	s << "\tdpy = " << value.dpy << '\n';
3510	s << "\twindow = " << value.window << '\n';
3511	s << '}';
3512	return s;
3513}
3514
3515std::ostream& operator<< (std::ostream& s, const VkXcbSurfaceCreateInfoKHR& value)
3516{
3517	s << "VkXcbSurfaceCreateInfoKHR = {\n";
3518	s << "\tsType = " << value.sType << '\n';
3519	s << "\tpNext = " << value.pNext << '\n';
3520	s << "\tflags = " << getXcbSurfaceCreateFlagsKHRStr(value.flags) << '\n';
3521	s << "\tconnection = " << value.connection << '\n';
3522	s << "\twindow = " << value.window << '\n';
3523	s << '}';
3524	return s;
3525}
3526
3527std::ostream& operator<< (std::ostream& s, const VkWaylandSurfaceCreateInfoKHR& value)
3528{
3529	s << "VkWaylandSurfaceCreateInfoKHR = {\n";
3530	s << "\tsType = " << value.sType << '\n';
3531	s << "\tpNext = " << value.pNext << '\n';
3532	s << "\tflags = " << getWaylandSurfaceCreateFlagsKHRStr(value.flags) << '\n';
3533	s << "\tdisplay = " << value.display << '\n';
3534	s << "\tsurface = " << value.surface << '\n';
3535	s << '}';
3536	return s;
3537}
3538
3539std::ostream& operator<< (std::ostream& s, const VkMirSurfaceCreateInfoKHR& value)
3540{
3541	s << "VkMirSurfaceCreateInfoKHR = {\n";
3542	s << "\tsType = " << value.sType << '\n';
3543	s << "\tpNext = " << value.pNext << '\n';
3544	s << "\tflags = " << getMirSurfaceCreateFlagsKHRStr(value.flags) << '\n';
3545	s << "\tconnection = " << value.connection << '\n';
3546	s << "\tmirSurface = " << value.mirSurface << '\n';
3547	s << '}';
3548	return s;
3549}
3550
3551std::ostream& operator<< (std::ostream& s, const VkAndroidSurfaceCreateInfoKHR& value)
3552{
3553	s << "VkAndroidSurfaceCreateInfoKHR = {\n";
3554	s << "\tsType = " << value.sType << '\n';
3555	s << "\tpNext = " << value.pNext << '\n';
3556	s << "\tflags = " << getAndroidSurfaceCreateFlagsKHRStr(value.flags) << '\n';
3557	s << "\twindow = " << value.window << '\n';
3558	s << '}';
3559	return s;
3560}
3561
3562std::ostream& operator<< (std::ostream& s, const VkWin32SurfaceCreateInfoKHR& value)
3563{
3564	s << "VkWin32SurfaceCreateInfoKHR = {\n";
3565	s << "\tsType = " << value.sType << '\n';
3566	s << "\tpNext = " << value.pNext << '\n';
3567	s << "\tflags = " << getWin32SurfaceCreateFlagsKHRStr(value.flags) << '\n';
3568	s << "\thinstance = " << value.hinstance << '\n';
3569	s << "\thwnd = " << value.hwnd << '\n';
3570	s << '}';
3571	return s;
3572}
3573
3574std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures2KHR& value)
3575{
3576	s << "VkPhysicalDeviceFeatures2KHR = {\n";
3577	s << "\tsType = " << value.sType << '\n';
3578	s << "\tpNext = " << value.pNext << '\n';
3579	s << "\tfeatures = " << value.features << '\n';
3580	s << '}';
3581	return s;
3582}
3583
3584std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProperties2KHR& value)
3585{
3586	s << "VkPhysicalDeviceProperties2KHR = {\n";
3587	s << "\tsType = " << value.sType << '\n';
3588	s << "\tpNext = " << value.pNext << '\n';
3589	s << "\tproperties = " << value.properties << '\n';
3590	s << '}';
3591	return s;
3592}
3593
3594std::ostream& operator<< (std::ostream& s, const VkFormatProperties2KHR& value)
3595{
3596	s << "VkFormatProperties2KHR = {\n";
3597	s << "\tsType = " << value.sType << '\n';
3598	s << "\tpNext = " << value.pNext << '\n';
3599	s << "\tformatProperties = " << value.formatProperties << '\n';
3600	s << '}';
3601	return s;
3602}
3603
3604std::ostream& operator<< (std::ostream& s, const VkImageFormatProperties2KHR& value)
3605{
3606	s << "VkImageFormatProperties2KHR = {\n";
3607	s << "\tsType = " << value.sType << '\n';
3608	s << "\tpNext = " << value.pNext << '\n';
3609	s << "\timageFormatProperties = " << value.imageFormatProperties << '\n';
3610	s << '}';
3611	return s;
3612}
3613
3614std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageFormatInfo2KHR& value)
3615{
3616	s << "VkPhysicalDeviceImageFormatInfo2KHR = {\n";
3617	s << "\tsType = " << value.sType << '\n';
3618	s << "\tpNext = " << value.pNext << '\n';
3619	s << "\tformat = " << value.format << '\n';
3620	s << "\ttype = " << value.type << '\n';
3621	s << "\ttiling = " << value.tiling << '\n';
3622	s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
3623	s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
3624	s << '}';
3625	return s;
3626}
3627
3628std::ostream& operator<< (std::ostream& s, const VkQueueFamilyProperties2KHR& value)
3629{
3630	s << "VkQueueFamilyProperties2KHR = {\n";
3631	s << "\tsType = " << value.sType << '\n';
3632	s << "\tpNext = " << value.pNext << '\n';
3633	s << "\tqueueFamilyProperties = " << value.queueFamilyProperties << '\n';
3634	s << '}';
3635	return s;
3636}
3637
3638std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties2KHR& value)
3639{
3640	s << "VkPhysicalDeviceMemoryProperties2KHR = {\n";
3641	s << "\tsType = " << value.sType << '\n';
3642	s << "\tpNext = " << value.pNext << '\n';
3643	s << "\tmemoryProperties = " << value.memoryProperties << '\n';
3644	s << '}';
3645	return s;
3646}
3647
3648std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties2KHR& value)
3649{
3650	s << "VkSparseImageFormatProperties2KHR = {\n";
3651	s << "\tsType = " << value.sType << '\n';
3652	s << "\tpNext = " << value.pNext << '\n';
3653	s << "\tproperties = " << value.properties << '\n';
3654	s << '}';
3655	return s;
3656}
3657
3658std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSparseImageFormatInfo2KHR& value)
3659{
3660	s << "VkPhysicalDeviceSparseImageFormatInfo2KHR = {\n";
3661	s << "\tsType = " << value.sType << '\n';
3662	s << "\tpNext = " << value.pNext << '\n';
3663	s << "\tformat = " << value.format << '\n';
3664	s << "\ttype = " << value.type << '\n';
3665	s << "\tsamples = " << value.samples << '\n';
3666	s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
3667	s << "\ttiling = " << value.tiling << '\n';
3668	s << '}';
3669	return s;
3670}
3671
3672std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePushDescriptorPropertiesKHR& value)
3673{
3674	s << "VkPhysicalDevicePushDescriptorPropertiesKHR = {\n";
3675	s << "\tsType = " << value.sType << '\n';
3676	s << "\tpNext = " << value.pNext << '\n';
3677	s << "\tmaxPushDescriptors = " << value.maxPushDescriptors << '\n';
3678	s << '}';
3679	return s;
3680}
3681
3682std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice16BitStorageFeaturesKHR& value)
3683{
3684	s << "VkPhysicalDevice16BitStorageFeaturesKHR = {\n";
3685	s << "\tsType = " << value.sType << '\n';
3686	s << "\tpNext = " << value.pNext << '\n';
3687	s << "\tstorageBuffer16BitAccess = " << value.storageBuffer16BitAccess << '\n';
3688	s << "\tuniformAndStorageBuffer16BitAccess = " << value.uniformAndStorageBuffer16BitAccess << '\n';
3689	s << "\tstoragePushConstant16 = " << value.storagePushConstant16 << '\n';
3690	s << "\tstorageInputOutput16 = " << value.storageInputOutput16 << '\n';
3691	s << '}';
3692	return s;
3693}
3694
3695std::ostream& operator<< (std::ostream& s, const VkRectLayerKHR& value)
3696{
3697	s << "VkRectLayerKHR = {\n";
3698	s << "\toffset = " << value.offset << '\n';
3699	s << "\textent = " << value.extent << '\n';
3700	s << "\tlayer = " << value.layer << '\n';
3701	s << '}';
3702	return s;
3703}
3704
3705std::ostream& operator<< (std::ostream& s, const VkPresentRegionKHR& value)
3706{
3707	s << "VkPresentRegionKHR = {\n";
3708	s << "\trectangleCount = " << value.rectangleCount << '\n';
3709	s << "\tpRectangles = " << value.pRectangles << '\n';
3710	s << '}';
3711	return s;
3712}
3713
3714std::ostream& operator<< (std::ostream& s, const VkPresentRegionsKHR& value)
3715{
3716	s << "VkPresentRegionsKHR = {\n";
3717	s << "\tsType = " << value.sType << '\n';
3718	s << "\tpNext = " << value.pNext << '\n';
3719	s << "\tswapchainCount = " << value.swapchainCount << '\n';
3720	s << "\tpRegions = " << value.pRegions << '\n';
3721	s << '}';
3722	return s;
3723}
3724
3725std::ostream& operator<< (std::ostream& s, const VkDescriptorUpdateTemplateEntryKHR& value)
3726{
3727	s << "VkDescriptorUpdateTemplateEntryKHR = {\n";
3728	s << "\tdstBinding = " << value.dstBinding << '\n';
3729	s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
3730	s << "\tdescriptorCount = " << value.descriptorCount << '\n';
3731	s << "\tdescriptorType = " << value.descriptorType << '\n';
3732	s << "\toffset = " << value.offset << '\n';
3733	s << "\tstride = " << value.stride << '\n';
3734	s << '}';
3735	return s;
3736}
3737
3738std::ostream& operator<< (std::ostream& s, const VkDescriptorUpdateTemplateCreateInfoKHR& value)
3739{
3740	s << "VkDescriptorUpdateTemplateCreateInfoKHR = {\n";
3741	s << "\tsType = " << value.sType << '\n';
3742	s << "\tpNext = " << value.pNext << '\n';
3743	s << "\tflags = " << getDescriptorUpdateTemplateCreateFlagsKHRStr(value.flags) << '\n';
3744	s << "\tdescriptorUpdateEntryCount = " << value.descriptorUpdateEntryCount << '\n';
3745	s << "\tpDescriptorUpdateEntries = " << value.pDescriptorUpdateEntries << '\n';
3746	s << "\ttemplateType = " << value.templateType << '\n';
3747	s << "\tdescriptorSetLayout = " << value.descriptorSetLayout << '\n';
3748	s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
3749	s << "\tpipelineLayout = " << value.pipelineLayout << '\n';
3750	s << "\tset = " << value.set << '\n';
3751	s << '}';
3752	return s;
3753}
3754
3755std::ostream& operator<< (std::ostream& s, const VkSharedPresentSurfaceCapabilitiesKHR& value)
3756{
3757	s << "VkSharedPresentSurfaceCapabilitiesKHR = {\n";
3758	s << "\tsType = " << value.sType << '\n';
3759	s << "\tpNext = " << value.pNext << '\n';
3760	s << "\tsharedPresentSupportedUsageFlags = " << getImageUsageFlagsStr(value.sharedPresentSupportedUsageFlags) << '\n';
3761	s << '}';
3762	return s;
3763}
3764
3765std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePointClippingPropertiesKHR& value)
3766{
3767	s << "VkPhysicalDevicePointClippingPropertiesKHR = {\n";
3768	s << "\tsType = " << value.sType << '\n';
3769	s << "\tpNext = " << value.pNext << '\n';
3770	s << "\tpointClippingBehavior = " << value.pointClippingBehavior << '\n';
3771	s << '}';
3772	return s;
3773}
3774
3775std::ostream& operator<< (std::ostream& s, const VkInputAttachmentAspectReferenceKHR& value)
3776{
3777	s << "VkInputAttachmentAspectReferenceKHR = {\n";
3778	s << "\tsubpass = " << value.subpass << '\n';
3779	s << "\tinputAttachmentIndex = " << value.inputAttachmentIndex << '\n';
3780	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
3781	s << '}';
3782	return s;
3783}
3784
3785std::ostream& operator<< (std::ostream& s, const VkRenderPassInputAttachmentAspectCreateInfoKHR& value)
3786{
3787	s << "VkRenderPassInputAttachmentAspectCreateInfoKHR = {\n";
3788	s << "\tsType = " << value.sType << '\n';
3789	s << "\tpNext = " << value.pNext << '\n';
3790	s << "\taspectReferenceCount = " << value.aspectReferenceCount << '\n';
3791	s << "\tpAspectReferences = " << value.pAspectReferences << '\n';
3792	s << '}';
3793	return s;
3794}
3795
3796std::ostream& operator<< (std::ostream& s, const VkImageViewUsageCreateInfoKHR& value)
3797{
3798	s << "VkImageViewUsageCreateInfoKHR = {\n";
3799	s << "\tsType = " << value.sType << '\n';
3800	s << "\tpNext = " << value.pNext << '\n';
3801	s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
3802	s << '}';
3803	return s;
3804}
3805
3806std::ostream& operator<< (std::ostream& s, const VkPipelineTessellationDomainOriginStateCreateInfoKHR& value)
3807{
3808	s << "VkPipelineTessellationDomainOriginStateCreateInfoKHR = {\n";
3809	s << "\tsType = " << value.sType << '\n';
3810	s << "\tpNext = " << value.pNext << '\n';
3811	s << "\tdomainOrigin = " << value.domainOrigin << '\n';
3812	s << '}';
3813	return s;
3814}
3815
3816std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSurfaceInfo2KHR& value)
3817{
3818	s << "VkPhysicalDeviceSurfaceInfo2KHR = {\n";
3819	s << "\tsType = " << value.sType << '\n';
3820	s << "\tpNext = " << value.pNext << '\n';
3821	s << "\tsurface = " << value.surface << '\n';
3822	s << '}';
3823	return s;
3824}
3825
3826std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilities2KHR& value)
3827{
3828	s << "VkSurfaceCapabilities2KHR = {\n";
3829	s << "\tsType = " << value.sType << '\n';
3830	s << "\tpNext = " << value.pNext << '\n';
3831	s << "\tsurfaceCapabilities = " << value.surfaceCapabilities << '\n';
3832	s << '}';
3833	return s;
3834}
3835
3836std::ostream& operator<< (std::ostream& s, const VkSurfaceFormat2KHR& value)
3837{
3838	s << "VkSurfaceFormat2KHR = {\n";
3839	s << "\tsType = " << value.sType << '\n';
3840	s << "\tpNext = " << value.pNext << '\n';
3841	s << "\tsurfaceFormat = " << value.surfaceFormat << '\n';
3842	s << '}';
3843	return s;
3844}
3845
3846std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalFenceInfoKHR& value)
3847{
3848	s << "VkPhysicalDeviceExternalFenceInfoKHR = {\n";
3849	s << "\tsType = " << value.sType << '\n';
3850	s << "\tpNext = " << value.pNext << '\n';
3851	s << "\thandleType = " << value.handleType << '\n';
3852	s << '}';
3853	return s;
3854}
3855
3856std::ostream& operator<< (std::ostream& s, const VkExternalFencePropertiesKHR& value)
3857{
3858	s << "VkExternalFencePropertiesKHR = {\n";
3859	s << "\tsType = " << value.sType << '\n';
3860	s << "\tpNext = " << value.pNext << '\n';
3861	s << "\texportFromImportedHandleTypes = " << getExternalFenceHandleTypeFlagsKHRStr(value.exportFromImportedHandleTypes) << '\n';
3862	s << "\tcompatibleHandleTypes = " << getExternalFenceHandleTypeFlagsKHRStr(value.compatibleHandleTypes) << '\n';
3863	s << "\texternalFenceFeatures = " << getExternalFenceFeatureFlagsKHRStr(value.externalFenceFeatures) << '\n';
3864	s << '}';
3865	return s;
3866}
3867
3868std::ostream& operator<< (std::ostream& s, const VkExportFenceCreateInfoKHR& value)
3869{
3870	s << "VkExportFenceCreateInfoKHR = {\n";
3871	s << "\tsType = " << value.sType << '\n';
3872	s << "\tpNext = " << value.pNext << '\n';
3873	s << "\thandleTypes = " << getExternalFenceHandleTypeFlagsKHRStr(value.handleTypes) << '\n';
3874	s << '}';
3875	return s;
3876}
3877
3878std::ostream& operator<< (std::ostream& s, const VkImportFenceWin32HandleInfoKHR& value)
3879{
3880	s << "VkImportFenceWin32HandleInfoKHR = {\n";
3881	s << "\tsType = " << value.sType << '\n';
3882	s << "\tpNext = " << value.pNext << '\n';
3883	s << "\tfence = " << value.fence << '\n';
3884	s << "\tflags = " << getFenceImportFlagsKHRStr(value.flags) << '\n';
3885	s << "\thandleType = " << value.handleType << '\n';
3886	s << "\thandle = " << value.handle << '\n';
3887	s << "\tname = " << getCharPtrStr(value.name) << '\n';
3888	s << '}';
3889	return s;
3890}
3891
3892std::ostream& operator<< (std::ostream& s, const VkExportFenceWin32HandleInfoKHR& value)
3893{
3894	s << "VkExportFenceWin32HandleInfoKHR = {\n";
3895	s << "\tsType = " << value.sType << '\n';
3896	s << "\tpNext = " << value.pNext << '\n';
3897	s << "\tpAttributes = " << value.pAttributes << '\n';
3898	s << "\tdwAccess = " << value.dwAccess << '\n';
3899	s << "\tname = " << getCharPtrStr(value.name) << '\n';
3900	s << '}';
3901	return s;
3902}
3903
3904std::ostream& operator<< (std::ostream& s, const VkFenceGetWin32HandleInfoKHR& value)
3905{
3906	s << "VkFenceGetWin32HandleInfoKHR = {\n";
3907	s << "\tsType = " << value.sType << '\n';
3908	s << "\tpNext = " << value.pNext << '\n';
3909	s << "\tfence = " << value.fence << '\n';
3910	s << "\thandleType = " << value.handleType << '\n';
3911	s << '}';
3912	return s;
3913}
3914
3915std::ostream& operator<< (std::ostream& s, const VkImportFenceFdInfoKHR& value)
3916{
3917	s << "VkImportFenceFdInfoKHR = {\n";
3918	s << "\tsType = " << value.sType << '\n';
3919	s << "\tpNext = " << value.pNext << '\n';
3920	s << "\tfence = " << value.fence << '\n';
3921	s << "\tflags = " << getFenceImportFlagsKHRStr(value.flags) << '\n';
3922	s << "\thandleType = " << value.handleType << '\n';
3923	s << "\tfd = " << value.fd << '\n';
3924	s << '}';
3925	return s;
3926}
3927
3928std::ostream& operator<< (std::ostream& s, const VkFenceGetFdInfoKHR& value)
3929{
3930	s << "VkFenceGetFdInfoKHR = {\n";
3931	s << "\tsType = " << value.sType << '\n';
3932	s << "\tpNext = " << value.pNext << '\n';
3933	s << "\tfence = " << value.fence << '\n';
3934	s << "\thandleType = " << value.handleType << '\n';
3935	s << '}';
3936	return s;
3937}
3938
3939std::ostream& operator<< (std::ostream& s, const VkMemoryDedicatedRequirementsKHR& value)
3940{
3941	s << "VkMemoryDedicatedRequirementsKHR = {\n";
3942	s << "\tsType = " << value.sType << '\n';
3943	s << "\tpNext = " << value.pNext << '\n';
3944	s << "\tprefersDedicatedAllocation = " << value.prefersDedicatedAllocation << '\n';
3945	s << "\trequiresDedicatedAllocation = " << value.requiresDedicatedAllocation << '\n';
3946	s << '}';
3947	return s;
3948}
3949
3950std::ostream& operator<< (std::ostream& s, const VkMemoryDedicatedAllocateInfoKHR& value)
3951{
3952	s << "VkMemoryDedicatedAllocateInfoKHR = {\n";
3953	s << "\tsType = " << value.sType << '\n';
3954	s << "\tpNext = " << value.pNext << '\n';
3955	s << "\timage = " << value.image << '\n';
3956	s << "\tbuffer = " << value.buffer << '\n';
3957	s << '}';
3958	return s;
3959}
3960
3961std::ostream& operator<< (std::ostream& s, const VkBufferMemoryRequirementsInfo2KHR& value)
3962{
3963	s << "VkBufferMemoryRequirementsInfo2KHR = {\n";
3964	s << "\tsType = " << value.sType << '\n';
3965	s << "\tpNext = " << value.pNext << '\n';
3966	s << "\tbuffer = " << value.buffer << '\n';
3967	s << '}';
3968	return s;
3969}
3970
3971std::ostream& operator<< (std::ostream& s, const VkImageMemoryRequirementsInfo2KHR& value)
3972{
3973	s << "VkImageMemoryRequirementsInfo2KHR = {\n";
3974	s << "\tsType = " << value.sType << '\n';
3975	s << "\tpNext = " << value.pNext << '\n';
3976	s << "\timage = " << value.image << '\n';
3977	s << '}';
3978	return s;
3979}
3980
3981std::ostream& operator<< (std::ostream& s, const VkImageSparseMemoryRequirementsInfo2KHR& value)
3982{
3983	s << "VkImageSparseMemoryRequirementsInfo2KHR = {\n";
3984	s << "\tsType = " << value.sType << '\n';
3985	s << "\tpNext = " << value.pNext << '\n';
3986	s << "\timage = " << value.image << '\n';
3987	s << '}';
3988	return s;
3989}
3990
3991std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements2KHR& value)
3992{
3993	s << "VkMemoryRequirements2KHR = {\n";
3994	s << "\tsType = " << value.sType << '\n';
3995	s << "\tpNext = " << value.pNext << '\n';
3996	s << "\tmemoryRequirements = " << value.memoryRequirements << '\n';
3997	s << '}';
3998	return s;
3999}
4000
4001std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements2KHR& value)
4002{
4003	s << "VkSparseImageMemoryRequirements2KHR = {\n";
4004	s << "\tsType = " << value.sType << '\n';
4005	s << "\tpNext = " << value.pNext << '\n';
4006	s << "\tmemoryRequirements = " << value.memoryRequirements << '\n';
4007	s << '}';
4008	return s;
4009}
4010
4011std::ostream& operator<< (std::ostream& s, const VkImageFormatListCreateInfoKHR& value)
4012{
4013	s << "VkImageFormatListCreateInfoKHR = {\n";
4014	s << "\tsType = " << value.sType << '\n';
4015	s << "\tpNext = " << value.pNext << '\n';
4016	s << "\tviewFormatCount = " << value.viewFormatCount << '\n';
4017	s << "\tpViewFormats = " << value.pViewFormats << '\n';
4018	s << '}';
4019	return s;
4020}
4021
4022std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionCreateInfoKHR& value)
4023{
4024	s << "VkSamplerYcbcrConversionCreateInfoKHR = {\n";
4025	s << "\tsType = " << value.sType << '\n';
4026	s << "\tpNext = " << value.pNext << '\n';
4027	s << "\tformat = " << value.format << '\n';
4028	s << "\tYcbcrModel = " << value.YcbcrModel << '\n';
4029	s << "\tYcbcrRange = " << value.YcbcrRange << '\n';
4030	s << "\tcomponents = " << value.components << '\n';
4031	s << "\txChromaOffset = " << value.xChromaOffset << '\n';
4032	s << "\tyChromaOffset = " << value.yChromaOffset << '\n';
4033	s << "\tchromaFilter = " << value.chromaFilter << '\n';
4034	s << "\tforceExplicitReconstruction = " << value.forceExplicitReconstruction << '\n';
4035	s << '}';
4036	return s;
4037}
4038
4039std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionInfoKHR& value)
4040{
4041	s << "VkSamplerYcbcrConversionInfoKHR = {\n";
4042	s << "\tsType = " << value.sType << '\n';
4043	s << "\tpNext = " << value.pNext << '\n';
4044	s << "\tconversion = " << value.conversion << '\n';
4045	s << '}';
4046	return s;
4047}
4048
4049std::ostream& operator<< (std::ostream& s, const VkBindImagePlaneMemoryInfoKHR& value)
4050{
4051	s << "VkBindImagePlaneMemoryInfoKHR = {\n";
4052	s << "\tsType = " << value.sType << '\n';
4053	s << "\tpNext = " << value.pNext << '\n';
4054	s << "\tplaneAspect = " << value.planeAspect << '\n';
4055	s << '}';
4056	return s;
4057}
4058
4059std::ostream& operator<< (std::ostream& s, const VkImagePlaneMemoryRequirementsInfoKHR& value)
4060{
4061	s << "VkImagePlaneMemoryRequirementsInfoKHR = {\n";
4062	s << "\tsType = " << value.sType << '\n';
4063	s << "\tpNext = " << value.pNext << '\n';
4064	s << "\tplaneAspect = " << value.planeAspect << '\n';
4065	s << '}';
4066	return s;
4067}
4068
4069std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR& value)
4070{
4071	s << "VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = {\n";
4072	s << "\tsType = " << value.sType << '\n';
4073	s << "\tpNext = " << value.pNext << '\n';
4074	s << "\tsamplerYcbcrConversion = " << value.samplerYcbcrConversion << '\n';
4075	s << '}';
4076	return s;
4077}
4078
4079std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionImageFormatPropertiesKHR& value)
4080{
4081	s << "VkSamplerYcbcrConversionImageFormatPropertiesKHR = {\n";
4082	s << "\tsType = " << value.sType << '\n';
4083	s << "\tpNext = " << value.pNext << '\n';
4084	s << "\tcombinedImageSamplerDescriptorCount = " << value.combinedImageSamplerDescriptorCount << '\n';
4085	s << '}';
4086	return s;
4087}
4088
4089std::ostream& operator<< (std::ostream& s, const VkDebugReportCallbackCreateInfoEXT& value)
4090{
4091	s << "VkDebugReportCallbackCreateInfoEXT = {\n";
4092	s << "\tsType = " << value.sType << '\n';
4093	s << "\tpNext = " << value.pNext << '\n';
4094	s << "\tflags = " << getDebugReportFlagsEXTStr(value.flags) << '\n';
4095	s << "\tpfnCallback = " << value.pfnCallback << '\n';
4096	s << "\tpUserData = " << value.pUserData << '\n';
4097	s << '}';
4098	return s;
4099}
4100
4101std::ostream& operator<< (std::ostream& s, const VkRenderPassMultiviewCreateInfoKHX& value)
4102{
4103	s << "VkRenderPassMultiviewCreateInfoKHX = {\n";
4104	s << "\tsType = " << value.sType << '\n';
4105	s << "\tpNext = " << value.pNext << '\n';
4106	s << "\tsubpassCount = " << value.subpassCount << '\n';
4107	s << "\tpViewMasks = " << value.pViewMasks << '\n';
4108	s << "\tdependencyCount = " << value.dependencyCount << '\n';
4109	s << "\tpViewOffsets = " << value.pViewOffsets << '\n';
4110	s << "\tcorrelationMaskCount = " << value.correlationMaskCount << '\n';
4111	s << "\tpCorrelationMasks = " << value.pCorrelationMasks << '\n';
4112	s << '}';
4113	return s;
4114}
4115
4116std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewFeaturesKHX& value)
4117{
4118	s << "VkPhysicalDeviceMultiviewFeaturesKHX = {\n";
4119	s << "\tsType = " << value.sType << '\n';
4120	s << "\tpNext = " << value.pNext << '\n';
4121	s << "\tmultiview = " << value.multiview << '\n';
4122	s << "\tmultiviewGeometryShader = " << value.multiviewGeometryShader << '\n';
4123	s << "\tmultiviewTessellationShader = " << value.multiviewTessellationShader << '\n';
4124	s << '}';
4125	return s;
4126}
4127
4128std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewPropertiesKHX& value)
4129{
4130	s << "VkPhysicalDeviceMultiviewPropertiesKHX = {\n";
4131	s << "\tsType = " << value.sType << '\n';
4132	s << "\tpNext = " << value.pNext << '\n';
4133	s << "\tmaxMultiviewViewCount = " << value.maxMultiviewViewCount << '\n';
4134	s << "\tmaxMultiviewInstanceIndex = " << value.maxMultiviewInstanceIndex << '\n';
4135	s << '}';
4136	return s;
4137}
4138
4139std::ostream& operator<< (std::ostream& s, const VkExternalMemoryPropertiesKHR& value)
4140{
4141	s << "VkExternalMemoryPropertiesKHR = {\n";
4142	s << "\texternalMemoryFeatures = " << getExternalMemoryFeatureFlagsKHRStr(value.externalMemoryFeatures) << '\n';
4143	s << "\texportFromImportedHandleTypes = " << getExternalMemoryHandleTypeFlagsKHRStr(value.exportFromImportedHandleTypes) << '\n';
4144	s << "\tcompatibleHandleTypes = " << getExternalMemoryHandleTypeFlagsKHRStr(value.compatibleHandleTypes) << '\n';
4145	s << '}';
4146	return s;
4147}
4148
4149std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalImageFormatInfoKHR& value)
4150{
4151	s << "VkPhysicalDeviceExternalImageFormatInfoKHR = {\n";
4152	s << "\tsType = " << value.sType << '\n';
4153	s << "\tpNext = " << value.pNext << '\n';
4154	s << "\thandleType = " << value.handleType << '\n';
4155	s << '}';
4156	return s;
4157}
4158
4159std::ostream& operator<< (std::ostream& s, const VkExternalImageFormatPropertiesKHR& value)
4160{
4161	s << "VkExternalImageFormatPropertiesKHR = {\n";
4162	s << "\tsType = " << value.sType << '\n';
4163	s << "\tpNext = " << value.pNext << '\n';
4164	s << "\texternalMemoryProperties = " << value.externalMemoryProperties << '\n';
4165	s << '}';
4166	return s;
4167}
4168
4169std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalBufferInfoKHR& value)
4170{
4171	s << "VkPhysicalDeviceExternalBufferInfoKHR = {\n";
4172	s << "\tsType = " << value.sType << '\n';
4173	s << "\tpNext = " << value.pNext << '\n';
4174	s << "\tflags = " << getBufferCreateFlagsStr(value.flags) << '\n';
4175	s << "\tusage = " << getBufferUsageFlagsStr(value.usage) << '\n';
4176	s << "\thandleType = " << value.handleType << '\n';
4177	s << '}';
4178	return s;
4179}
4180
4181std::ostream& operator<< (std::ostream& s, const VkExternalBufferPropertiesKHR& value)
4182{
4183	s << "VkExternalBufferPropertiesKHR = {\n";
4184	s << "\tsType = " << value.sType << '\n';
4185	s << "\tpNext = " << value.pNext << '\n';
4186	s << "\texternalMemoryProperties = " << value.externalMemoryProperties << '\n';
4187	s << '}';
4188	return s;
4189}
4190
4191std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceIDPropertiesKHR& value)
4192{
4193	s << "VkPhysicalDeviceIDPropertiesKHR = {\n";
4194	s << "\tsType = " << value.sType << '\n';
4195	s << "\tpNext = " << value.pNext << '\n';
4196	s << "\tdeviceUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.deviceUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.deviceUUID))) << '\n';
4197	s << "\tdriverUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.driverUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.driverUUID))) << '\n';
4198	s << "\tdeviceLUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.deviceLUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.deviceLUID))) << '\n';
4199	s << "\tdeviceNodeMask = " << value.deviceNodeMask << '\n';
4200	s << "\tdeviceLUIDValid = " << value.deviceLUIDValid << '\n';
4201	s << '}';
4202	return s;
4203}
4204
4205std::ostream& operator<< (std::ostream& s, const VkExternalMemoryImageCreateInfoKHR& value)
4206{
4207	s << "VkExternalMemoryImageCreateInfoKHR = {\n";
4208	s << "\tsType = " << value.sType << '\n';
4209	s << "\tpNext = " << value.pNext << '\n';
4210	s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsKHRStr(value.handleTypes) << '\n';
4211	s << '}';
4212	return s;
4213}
4214
4215std::ostream& operator<< (std::ostream& s, const VkExternalMemoryBufferCreateInfoKHR& value)
4216{
4217	s << "VkExternalMemoryBufferCreateInfoKHR = {\n";
4218	s << "\tsType = " << value.sType << '\n';
4219	s << "\tpNext = " << value.pNext << '\n';
4220	s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsKHRStr(value.handleTypes) << '\n';
4221	s << '}';
4222	return s;
4223}
4224
4225std::ostream& operator<< (std::ostream& s, const VkExportMemoryAllocateInfoKHR& value)
4226{
4227	s << "VkExportMemoryAllocateInfoKHR = {\n";
4228	s << "\tsType = " << value.sType << '\n';
4229	s << "\tpNext = " << value.pNext << '\n';
4230	s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsKHRStr(value.handleTypes) << '\n';
4231	s << '}';
4232	return s;
4233}
4234
4235std::ostream& operator<< (std::ostream& s, const VkImportMemoryWin32HandleInfoKHR& value)
4236{
4237	s << "VkImportMemoryWin32HandleInfoKHR = {\n";
4238	s << "\tsType = " << value.sType << '\n';
4239	s << "\tpNext = " << value.pNext << '\n';
4240	s << "\thandleType = " << value.handleType << '\n';
4241	s << "\thandle = " << value.handle << '\n';
4242	s << "\tname = " << getCharPtrStr(value.name) << '\n';
4243	s << '}';
4244	return s;
4245}
4246
4247std::ostream& operator<< (std::ostream& s, const VkExportMemoryWin32HandleInfoKHR& value)
4248{
4249	s << "VkExportMemoryWin32HandleInfoKHR = {\n";
4250	s << "\tsType = " << value.sType << '\n';
4251	s << "\tpNext = " << value.pNext << '\n';
4252	s << "\tpAttributes = " << value.pAttributes << '\n';
4253	s << "\tdwAccess = " << value.dwAccess << '\n';
4254	s << "\tname = " << getCharPtrStr(value.name) << '\n';
4255	s << '}';
4256	return s;
4257}
4258
4259std::ostream& operator<< (std::ostream& s, const VkMemoryWin32HandlePropertiesKHR& value)
4260{
4261	s << "VkMemoryWin32HandlePropertiesKHR = {\n";
4262	s << "\tsType = " << value.sType << '\n';
4263	s << "\tpNext = " << value.pNext << '\n';
4264	s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
4265	s << '}';
4266	return s;
4267}
4268
4269std::ostream& operator<< (std::ostream& s, const VkMemoryGetWin32HandleInfoKHR& value)
4270{
4271	s << "VkMemoryGetWin32HandleInfoKHR = {\n";
4272	s << "\tsType = " << value.sType << '\n';
4273	s << "\tpNext = " << value.pNext << '\n';
4274	s << "\tmemory = " << value.memory << '\n';
4275	s << "\thandleType = " << value.handleType << '\n';
4276	s << '}';
4277	return s;
4278}
4279
4280std::ostream& operator<< (std::ostream& s, const VkImportMemoryFdInfoKHR& value)
4281{
4282	s << "VkImportMemoryFdInfoKHR = {\n";
4283	s << "\tsType = " << value.sType << '\n';
4284	s << "\tpNext = " << value.pNext << '\n';
4285	s << "\thandleType = " << value.handleType << '\n';
4286	s << "\tfd = " << value.fd << '\n';
4287	s << '}';
4288	return s;
4289}
4290
4291std::ostream& operator<< (std::ostream& s, const VkMemoryFdPropertiesKHR& value)
4292{
4293	s << "VkMemoryFdPropertiesKHR = {\n";
4294	s << "\tsType = " << value.sType << '\n';
4295	s << "\tpNext = " << value.pNext << '\n';
4296	s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
4297	s << '}';
4298	return s;
4299}
4300
4301std::ostream& operator<< (std::ostream& s, const VkMemoryGetFdInfoKHR& value)
4302{
4303	s << "VkMemoryGetFdInfoKHR = {\n";
4304	s << "\tsType = " << value.sType << '\n';
4305	s << "\tpNext = " << value.pNext << '\n';
4306	s << "\tmemory = " << value.memory << '\n';
4307	s << "\thandleType = " << value.handleType << '\n';
4308	s << '}';
4309	return s;
4310}
4311
4312std::ostream& operator<< (std::ostream& s, const VkWin32KeyedMutexAcquireReleaseInfoKHR& value)
4313{
4314	s << "VkWin32KeyedMutexAcquireReleaseInfoKHR = {\n";
4315	s << "\tsType = " << value.sType << '\n';
4316	s << "\tpNext = " << value.pNext << '\n';
4317	s << "\tacquireCount = " << value.acquireCount << '\n';
4318	s << "\tpAcquireSyncs = " << value.pAcquireSyncs << '\n';
4319	s << "\tpAcquireKeys = " << value.pAcquireKeys << '\n';
4320	s << "\tpAcquireTimeouts = " << value.pAcquireTimeouts << '\n';
4321	s << "\treleaseCount = " << value.releaseCount << '\n';
4322	s << "\tpReleaseSyncs = " << value.pReleaseSyncs << '\n';
4323	s << "\tpReleaseKeys = " << value.pReleaseKeys << '\n';
4324	s << '}';
4325	return s;
4326}
4327
4328std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalSemaphoreInfoKHR& value)
4329{
4330	s << "VkPhysicalDeviceExternalSemaphoreInfoKHR = {\n";
4331	s << "\tsType = " << value.sType << '\n';
4332	s << "\tpNext = " << value.pNext << '\n';
4333	s << "\thandleType = " << value.handleType << '\n';
4334	s << '}';
4335	return s;
4336}
4337
4338std::ostream& operator<< (std::ostream& s, const VkExternalSemaphorePropertiesKHR& value)
4339{
4340	s << "VkExternalSemaphorePropertiesKHR = {\n";
4341	s << "\tsType = " << value.sType << '\n';
4342	s << "\tpNext = " << value.pNext << '\n';
4343	s << "\texportFromImportedHandleTypes = " << getExternalSemaphoreHandleTypeFlagsKHRStr(value.exportFromImportedHandleTypes) << '\n';
4344	s << "\tcompatibleHandleTypes = " << getExternalSemaphoreHandleTypeFlagsKHRStr(value.compatibleHandleTypes) << '\n';
4345	s << "\texternalSemaphoreFeatures = " << getExternalSemaphoreFeatureFlagsKHRStr(value.externalSemaphoreFeatures) << '\n';
4346	s << '}';
4347	return s;
4348}
4349
4350std::ostream& operator<< (std::ostream& s, const VkExportSemaphoreCreateInfoKHR& value)
4351{
4352	s << "VkExportSemaphoreCreateInfoKHR = {\n";
4353	s << "\tsType = " << value.sType << '\n';
4354	s << "\tpNext = " << value.pNext << '\n';
4355	s << "\thandleTypes = " << getExternalSemaphoreHandleTypeFlagsKHRStr(value.handleTypes) << '\n';
4356	s << '}';
4357	return s;
4358}
4359
4360std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreWin32HandleInfoKHR& value)
4361{
4362	s << "VkImportSemaphoreWin32HandleInfoKHR = {\n";
4363	s << "\tsType = " << value.sType << '\n';
4364	s << "\tpNext = " << value.pNext << '\n';
4365	s << "\tsemaphore = " << value.semaphore << '\n';
4366	s << "\tflags = " << getSemaphoreImportFlagsKHRStr(value.flags) << '\n';
4367	s << "\thandleType = " << value.handleType << '\n';
4368	s << "\thandle = " << value.handle << '\n';
4369	s << "\tname = " << getCharPtrStr(value.name) << '\n';
4370	s << '}';
4371	return s;
4372}
4373
4374std::ostream& operator<< (std::ostream& s, const VkExportSemaphoreWin32HandleInfoKHR& value)
4375{
4376	s << "VkExportSemaphoreWin32HandleInfoKHR = {\n";
4377	s << "\tsType = " << value.sType << '\n';
4378	s << "\tpNext = " << value.pNext << '\n';
4379	s << "\tpAttributes = " << value.pAttributes << '\n';
4380	s << "\tdwAccess = " << value.dwAccess << '\n';
4381	s << "\tname = " << getCharPtrStr(value.name) << '\n';
4382	s << '}';
4383	return s;
4384}
4385
4386std::ostream& operator<< (std::ostream& s, const VkD3D12FenceSubmitInfoKHR& value)
4387{
4388	s << "VkD3D12FenceSubmitInfoKHR = {\n";
4389	s << "\tsType = " << value.sType << '\n';
4390	s << "\tpNext = " << value.pNext << '\n';
4391	s << "\twaitSemaphoreValuesCount = " << value.waitSemaphoreValuesCount << '\n';
4392	s << "\tpWaitSemaphoreValues = " << value.pWaitSemaphoreValues << '\n';
4393	s << "\tsignalSemaphoreValuesCount = " << value.signalSemaphoreValuesCount << '\n';
4394	s << "\tpSignalSemaphoreValues = " << value.pSignalSemaphoreValues << '\n';
4395	s << '}';
4396	return s;
4397}
4398
4399std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetWin32HandleInfoKHR& value)
4400{
4401	s << "VkSemaphoreGetWin32HandleInfoKHR = {\n";
4402	s << "\tsType = " << value.sType << '\n';
4403	s << "\tpNext = " << value.pNext << '\n';
4404	s << "\tsemaphore = " << value.semaphore << '\n';
4405	s << "\thandleType = " << value.handleType << '\n';
4406	s << '}';
4407	return s;
4408}
4409
4410std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreFdInfoKHR& value)
4411{
4412	s << "VkImportSemaphoreFdInfoKHR = {\n";
4413	s << "\tsType = " << value.sType << '\n';
4414	s << "\tpNext = " << value.pNext << '\n';
4415	s << "\tsemaphore = " << value.semaphore << '\n';
4416	s << "\tflags = " << getSemaphoreImportFlagsKHRStr(value.flags) << '\n';
4417	s << "\thandleType = " << value.handleType << '\n';
4418	s << "\tfd = " << value.fd << '\n';
4419	s << '}';
4420	return s;
4421}
4422
4423std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetFdInfoKHR& value)
4424{
4425	s << "VkSemaphoreGetFdInfoKHR = {\n";
4426	s << "\tsType = " << value.sType << '\n';
4427	s << "\tpNext = " << value.pNext << '\n';
4428	s << "\tsemaphore = " << value.semaphore << '\n';
4429	s << "\thandleType = " << value.handleType << '\n';
4430	s << '}';
4431	return s;
4432}
4433
4434std::ostream& operator<< (std::ostream& s, const VkRefreshCycleDurationGOOGLE& value)
4435{
4436	s << "VkRefreshCycleDurationGOOGLE = {\n";
4437	s << "\trefreshDuration = " << value.refreshDuration << '\n';
4438	s << '}';
4439	return s;
4440}
4441
4442std::ostream& operator<< (std::ostream& s, const VkPastPresentationTimingGOOGLE& value)
4443{
4444	s << "VkPastPresentationTimingGOOGLE = {\n";
4445	s << "\tpresentID = " << value.presentID << '\n';
4446	s << "\tdesiredPresentTime = " << value.desiredPresentTime << '\n';
4447	s << "\tactualPresentTime = " << value.actualPresentTime << '\n';
4448	s << "\tearliestPresentTime = " << value.earliestPresentTime << '\n';
4449	s << "\tpresentMargin = " << value.presentMargin << '\n';
4450	s << '}';
4451	return s;
4452}
4453
4454std::ostream& operator<< (std::ostream& s, const VkPresentTimeGOOGLE& value)
4455{
4456	s << "VkPresentTimeGOOGLE = {\n";
4457	s << "\tpresentID = " << value.presentID << '\n';
4458	s << "\tdesiredPresentTime = " << value.desiredPresentTime << '\n';
4459	s << '}';
4460	return s;
4461}
4462
4463std::ostream& operator<< (std::ostream& s, const VkPresentTimesInfoGOOGLE& value)
4464{
4465	s << "VkPresentTimesInfoGOOGLE = {\n";
4466	s << "\tsType = " << value.sType << '\n';
4467	s << "\tpNext = " << value.pNext << '\n';
4468	s << "\tswapchainCount = " << value.swapchainCount << '\n';
4469	s << "\tpTimes = " << value.pTimes << '\n';
4470	s << '}';
4471	return s;
4472}
4473
4474std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVariablePointerFeaturesKHR& value)
4475{
4476	s << "VkPhysicalDeviceVariablePointerFeaturesKHR = {\n";
4477	s << "\tsType = " << value.sType << '\n';
4478	s << "\tpNext = " << value.pNext << '\n';
4479	s << "\tvariablePointersStorageBuffer = " << value.variablePointersStorageBuffer << '\n';
4480	s << "\tvariablePointers = " << value.variablePointers << '\n';
4481	s << '}';
4482	return s;
4483}
4484
4485std::ostream& operator<< (std::ostream& s, const VkBindBufferMemoryInfoKHR& value)
4486{
4487	s << "VkBindBufferMemoryInfoKHR = {\n";
4488	s << "\tsType = " << value.sType << '\n';
4489	s << "\tpNext = " << value.pNext << '\n';
4490	s << "\tbuffer = " << value.buffer << '\n';
4491	s << "\tmemory = " << value.memory << '\n';
4492	s << "\tmemoryOffset = " << value.memoryOffset << '\n';
4493	s << '}';
4494	return s;
4495}
4496
4497std::ostream& operator<< (std::ostream& s, const VkBindImageMemoryInfoKHR& value)
4498{
4499	s << "VkBindImageMemoryInfoKHR = {\n";
4500	s << "\tsType = " << value.sType << '\n';
4501	s << "\tpNext = " << value.pNext << '\n';
4502	s << "\timage = " << value.image << '\n';
4503	s << "\tmemory = " << value.memory << '\n';
4504	s << "\tmemoryOffset = " << value.memoryOffset << '\n';
4505	s << '}';
4506	return s;
4507}
4508