• 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<VkSamplerYcbcrConversion>		(void) { return "VkSamplerYcbcrConversion";		}
30template<> const char*	getTypeName<VkDescriptorUpdateTemplate>		(void) { return "VkDescriptorUpdateTemplate";	}
31template<> const char*	getTypeName<VkSurfaceKHR>					(void) { return "VkSurfaceKHR";					}
32template<> const char*	getTypeName<VkSwapchainKHR>					(void) { return "VkSwapchainKHR";				}
33template<> const char*	getTypeName<VkDisplayKHR>					(void) { return "VkDisplayKHR";					}
34template<> const char*	getTypeName<VkDisplayModeKHR>				(void) { return "VkDisplayModeKHR";				}
35template<> const char*	getTypeName<VkDebugReportCallbackEXT>		(void) { return "VkDebugReportCallbackEXT";		}
36template<> const char*	getTypeName<VkObjectTableNVX>				(void) { return "VkObjectTableNVX";				}
37template<> const char*	getTypeName<VkIndirectCommandsLayoutNVX>	(void) { return "VkIndirectCommandsLayoutNVX";	}
38template<> const char*	getTypeName<VkValidationCacheEXT>			(void) { return "VkValidationCacheEXT";			}
39
40namespace pt
41{
42std::ostream& operator<< (std::ostream& s, XlibDisplayPtr				v) { return s << tcu::toHex(v.internal); }
43std::ostream& operator<< (std::ostream& s, XlibWindow					v) { return s << tcu::toHex(v.internal); }
44std::ostream& operator<< (std::ostream& s, XlibVisualID					v) { return s << tcu::toHex(v.internal); }
45std::ostream& operator<< (std::ostream& s, XcbConnectionPtr				v) { return s << tcu::toHex(v.internal); }
46std::ostream& operator<< (std::ostream& s, XcbWindow					v) { return s << tcu::toHex(v.internal); }
47std::ostream& operator<< (std::ostream& s, XcbVisualid					v) { return s << tcu::toHex(v.internal); }
48std::ostream& operator<< (std::ostream& s, WaylandDisplayPtr			v) { return s << tcu::toHex(v.internal); }
49std::ostream& operator<< (std::ostream& s, WaylandSurfacePtr			v) { return s << tcu::toHex(v.internal); }
50std::ostream& operator<< (std::ostream& s, MirConnectionPtr				v) { return s << tcu::toHex(v.internal); }
51std::ostream& operator<< (std::ostream& s, MirSurfacePtr				v) { return s << tcu::toHex(v.internal); }
52std::ostream& operator<< (std::ostream& s, AndroidNativeWindowPtr		v) { return s << tcu::toHex(v.internal); }
53std::ostream& operator<< (std::ostream& s, Win32InstanceHandle			v) { return s << tcu::toHex(v.internal); }
54std::ostream& operator<< (std::ostream& s, Win32WindowHandle			v) { return s << tcu::toHex(v.internal); }
55std::ostream& operator<< (std::ostream& s, Win32Handle					v) { return s << tcu::toHex(v.internal); }
56std::ostream& operator<< (std::ostream& s, Win32SecurityAttributesPtr	v) { return s << tcu::toHex(v.internal); }
57std::ostream& operator<< (std::ostream& s, AndroidHardwareBufferPtr		v) { return s << tcu::toHex(v.internal); }
58std::ostream& operator<< (std::ostream& s, RROutput						v) { return s << tcu::toHex(v.internal); }
59}
60
61const char* getPipelineCacheHeaderVersionName (VkPipelineCacheHeaderVersion value)
62{
63	switch (value)
64	{
65		case VK_PIPELINE_CACHE_HEADER_VERSION_ONE:	return "VK_PIPELINE_CACHE_HEADER_VERSION_ONE";
66		default:									return DE_NULL;
67	}
68}
69
70const char* getResultName (VkResult value)
71{
72	switch (value)
73	{
74		case VK_SUCCESS:						return "VK_SUCCESS";
75		case VK_NOT_READY:						return "VK_NOT_READY";
76		case VK_TIMEOUT:						return "VK_TIMEOUT";
77		case VK_EVENT_SET:						return "VK_EVENT_SET";
78		case VK_EVENT_RESET:					return "VK_EVENT_RESET";
79		case VK_INCOMPLETE:						return "VK_INCOMPLETE";
80		case VK_ERROR_OUT_OF_HOST_MEMORY:		return "VK_ERROR_OUT_OF_HOST_MEMORY";
81		case VK_ERROR_OUT_OF_DEVICE_MEMORY:		return "VK_ERROR_OUT_OF_DEVICE_MEMORY";
82		case VK_ERROR_INITIALIZATION_FAILED:	return "VK_ERROR_INITIALIZATION_FAILED";
83		case VK_ERROR_DEVICE_LOST:				return "VK_ERROR_DEVICE_LOST";
84		case VK_ERROR_MEMORY_MAP_FAILED:		return "VK_ERROR_MEMORY_MAP_FAILED";
85		case VK_ERROR_LAYER_NOT_PRESENT:		return "VK_ERROR_LAYER_NOT_PRESENT";
86		case VK_ERROR_EXTENSION_NOT_PRESENT:	return "VK_ERROR_EXTENSION_NOT_PRESENT";
87		case VK_ERROR_FEATURE_NOT_PRESENT:		return "VK_ERROR_FEATURE_NOT_PRESENT";
88		case VK_ERROR_INCOMPATIBLE_DRIVER:		return "VK_ERROR_INCOMPATIBLE_DRIVER";
89		case VK_ERROR_TOO_MANY_OBJECTS:			return "VK_ERROR_TOO_MANY_OBJECTS";
90		case VK_ERROR_FORMAT_NOT_SUPPORTED:		return "VK_ERROR_FORMAT_NOT_SUPPORTED";
91		case VK_ERROR_FRAGMENTED_POOL:			return "VK_ERROR_FRAGMENTED_POOL";
92		case VK_ERROR_OUT_OF_POOL_MEMORY:		return "VK_ERROR_OUT_OF_POOL_MEMORY";
93		case VK_ERROR_INVALID_EXTERNAL_HANDLE:	return "VK_ERROR_INVALID_EXTERNAL_HANDLE";
94		case VK_ERROR_SURFACE_LOST_KHR:			return "VK_ERROR_SURFACE_LOST_KHR";
95		case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR:	return "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR";
96		case VK_SUBOPTIMAL_KHR:					return "VK_SUBOPTIMAL_KHR";
97		case VK_ERROR_OUT_OF_DATE_KHR:			return "VK_ERROR_OUT_OF_DATE_KHR";
98		case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR:	return "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR";
99		case VK_ERROR_VALIDATION_FAILED_EXT:	return "VK_ERROR_VALIDATION_FAILED_EXT";
100		case VK_ERROR_INVALID_SHADER_NV:		return "VK_ERROR_INVALID_SHADER_NV";
101		default:								return DE_NULL;
102	}
103}
104
105const char* getStructureTypeName (VkStructureType value)
106{
107	switch (value)
108	{
109		case VK_STRUCTURE_TYPE_APPLICATION_INFO:												return "VK_STRUCTURE_TYPE_APPLICATION_INFO";
110		case VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO:											return "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO";
111		case VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO:										return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO";
112		case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO:												return "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO";
113		case VK_STRUCTURE_TYPE_SUBMIT_INFO:														return "VK_STRUCTURE_TYPE_SUBMIT_INFO";
114		case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO:											return "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO";
115		case VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE:												return "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE";
116		case VK_STRUCTURE_TYPE_BIND_SPARSE_INFO:												return "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO";
117		case VK_STRUCTURE_TYPE_FENCE_CREATE_INFO:												return "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO";
118		case VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO:											return "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO";
119		case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO:												return "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO";
120		case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO:											return "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO";
121		case VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO:												return "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO";
122		case VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO:											return "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO";
123		case VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO:												return "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO";
124		case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO:											return "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO";
125		case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO:										return "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO";
126		case VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO:										return "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO";
127		case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO:								return "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO";
128		case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO:							return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO";
129		case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO:						return "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO";
130		case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO:							return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO";
131		case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO:								return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO";
132		case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO:						return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO";
133		case VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO:							return "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO";
134		case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO:						return "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO";
135		case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO:							return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO";
136		case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO:								return "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO";
137		case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO";
138		case VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO";
139		case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO:										return "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO";
140		case VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO:												return "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO";
141		case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO:								return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO";
142		case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO:										return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO";
143		case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO:									return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO";
144		case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET:											return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET";
145		case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET:												return "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET";
146		case VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO:											return "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO";
147		case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO:											return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO";
148		case VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO:										return "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO";
149		case VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO:									return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO";
150		case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO:									return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO";
151		case VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO:										return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO";
152		case VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO:											return "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO";
153		case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER:											return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER";
154		case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER:											return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER";
155		case VK_STRUCTURE_TYPE_MEMORY_BARRIER:													return "VK_STRUCTURE_TYPE_MEMORY_BARRIER";
156		case VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO:										return "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO";
157		case VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO:										return "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO";
158		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES";
159		case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO:											return "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO";
160		case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO:											return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO";
161		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES";
162		case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:									return "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS";
163		case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO:									return "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO";
164		case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO:										return "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO";
165		case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO:								return "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO";
166		case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO:							return "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO";
167		case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO:										return "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO";
168		case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO:									return "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO";
169		case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:							return "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO";
170		case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO:								return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO";
171		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES";
172		case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO";
173		case VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2:								return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2";
174		case VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2:								return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2";
175		case VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2:							return "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2";
176		case VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2:											return "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2";
177		case VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2:								return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2";
178		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2:										return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2";
179		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2:									return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2";
180		case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2:												return "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2";
181		case VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2:										return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2";
182		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2";
183		case VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2:										return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2";
184		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2";
185		case VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2:								return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2";
186		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2";
187		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES";
188		case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO:					return "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO";
189		case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO";
190		case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO:			return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO";
191		case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO:								return "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO";
192		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES";
193		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES";
194		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES";
195		case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO:											return "VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO";
196		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES";
197		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES";
198		case VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2:												return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2";
199		case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO:							return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO";
200		case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:									return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO";
201		case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO:									return "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO";
202		case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO:							return "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO";
203		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES";
204		case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES:				return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES";
205		case VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO:							return "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO";
206		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO";
207		case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES:								return "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES";
208		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO";
209		case VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES:										return "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES";
210		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES:									return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES";
211		case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO:								return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO";
212		case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO:								return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO";
213		case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO:										return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO";
214		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO";
215		case VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES:										return "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES";
216		case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO:										return "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO";
217		case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO";
218		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO";
219		case VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES:									return "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES";
220		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES";
221		case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT:									return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT";
222		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES";
223		case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR:							return "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR";
224		case VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR:										return "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR";
225		case VK_STRUCTURE_TYPE_PRESENT_INFO_KHR:												return "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR";
226		case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR:									return "VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR";
227		case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR:							return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR";
228		case VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR:										return "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR";
229		case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR:									return "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR";
230		case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR:							return "VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR";
231		case VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR:									return "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR";
232		case VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR:									return "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR";
233		case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR:										return "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR";
234		case VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR:									return "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR";
235		case VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR:										return "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR";
236		case VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR:									return "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR";
237		case VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR:										return "VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR";
238		case VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR:									return "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR";
239		case VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR:									return "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR";
240		case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT:							return "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT";
241		case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD:			return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD";
242		case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT:								return "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT";
243		case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT:								return "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT";
244		case VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT:									return "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT";
245		case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV:						return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV";
246		case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV:						return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV";
247		case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV:					return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV";
248		case VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD:						return "VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD";
249		case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV:							return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV";
250		case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV:									return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV";
251		case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV:								return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV";
252		case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV:								return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV";
253		case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV:						return "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV";
254		case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT:											return "VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT";
255		case VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN:										return "VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN";
256		case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR:								return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR";
257		case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR:								return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR";
258		case VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR:								return "VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR";
259		case VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR:								return "VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR";
260		case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR:										return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR";
261		case VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR:										return "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR";
262		case VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR:											return "VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR";
263		case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR:						return "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR";
264		case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR:							return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR";
265		case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR:							return "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR";
266		case VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR:										return "VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR";
267		case VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR:								return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR";
268		case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR:									return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR";
269		case VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR:										return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR";
270		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR";
271		case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT:		return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT";
272		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT";
273		case VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT:							return "VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT";
274		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR";
275		case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR:												return "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR";
276		case VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX:									return "VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX";
277		case VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX:						return "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX";
278		case VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX:									return "VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX";
279		case VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX:							return "VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX";
280		case VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX:							return "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX";
281		case VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX:							return "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX";
282		case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV:				return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV";
283		case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT:										return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT";
284		case VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT:											return "VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT";
285		case VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT:											return "VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT";
286		case VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT:											return "VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT";
287		case VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT:								return "VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT";
288		case VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE:										return "VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE";
289		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX:	return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX";
290		case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV:					return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV";
291		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT";
292		case VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT:				return "VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT";
293		case VK_STRUCTURE_TYPE_HDR_METADATA_EXT:												return "VK_STRUCTURE_TYPE_HDR_METADATA_EXT";
294		case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR:									return "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR";
295		case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR:										return "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR";
296		case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR:										return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR";
297		case VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR:										return "VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR";
298		case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR:									return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR";
299		case VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR:											return "VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR";
300		case VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR:											return "VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR";
301		case VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR:							return "VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR";
302		case VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR:								return "VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR";
303		case VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR:								return "VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR";
304		case VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR:									return "VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR";
305		case VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR:										return "VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR";
306		case VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR:											return "VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR";
307		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR";
308		case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR:										return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR";
309		case VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR:											return "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR";
310		case VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR:										return "VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR";
311		case VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR:									return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR";
312		case VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR:									return "VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR";
313		case VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR:										return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR";
314		case VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR:								return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR";
315		case VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK:										return "VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK";
316		case VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK:									return "VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK";
317		case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID:							return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID";
318		case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID:						return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID";
319		case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID:				return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID";
320		case VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID:						return "VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID";
321		case VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID:					return "VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID";
322		case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID:											return "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID";
323		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT";
324		case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT:							return "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT";
325		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT";
326		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT";
327		case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT:					return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT";
328		case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT:			return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT";
329		case VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT:										return "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT";
330		case VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT:						return "VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT";
331		case VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT:					return "VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT";
332		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT";
333		case VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT:										return "VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT";
334		case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR:								return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR";
335		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT";
336		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT";
337		case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT:				return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT";
338		case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV:					return "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV";
339		case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV:				return "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV";
340		case VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT:								return "VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT";
341		case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT:					return "VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT";
342		case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT:				return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT";
343		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT";
344		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT";
345		case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT:		return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT";
346		case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT:		return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT";
347		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR";
348		case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT:								return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT";
349		case VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT:								return "VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT";
350		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT";
351		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR";
352		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT";
353		case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT:				return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT";
354		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT";
355		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR";
356		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR";
357		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR";
358		case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR:					return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR";
359		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR";
360		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT";
361		case VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR:								return "VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR";
362		default:																				return DE_NULL;
363	}
364}
365
366const char* getSystemAllocationScopeName (VkSystemAllocationScope value)
367{
368	switch (value)
369	{
370		case VK_SYSTEM_ALLOCATION_SCOPE_COMMAND:	return "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND";
371		case VK_SYSTEM_ALLOCATION_SCOPE_OBJECT:		return "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT";
372		case VK_SYSTEM_ALLOCATION_SCOPE_CACHE:		return "VK_SYSTEM_ALLOCATION_SCOPE_CACHE";
373		case VK_SYSTEM_ALLOCATION_SCOPE_DEVICE:		return "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE";
374		case VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE:	return "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE";
375		default:									return DE_NULL;
376	}
377}
378
379const char* getInternalAllocationTypeName (VkInternalAllocationType value)
380{
381	switch (value)
382	{
383		case VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE:	return "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE";
384		default:										return DE_NULL;
385	}
386}
387
388const char* getFormatName (VkFormat value)
389{
390	switch (value)
391	{
392		case VK_FORMAT_UNDEFINED:									return "VK_FORMAT_UNDEFINED";
393		case VK_FORMAT_R4G4_UNORM_PACK8:							return "VK_FORMAT_R4G4_UNORM_PACK8";
394		case VK_FORMAT_R4G4B4A4_UNORM_PACK16:						return "VK_FORMAT_R4G4B4A4_UNORM_PACK16";
395		case VK_FORMAT_B4G4R4A4_UNORM_PACK16:						return "VK_FORMAT_B4G4R4A4_UNORM_PACK16";
396		case VK_FORMAT_R5G6B5_UNORM_PACK16:							return "VK_FORMAT_R5G6B5_UNORM_PACK16";
397		case VK_FORMAT_B5G6R5_UNORM_PACK16:							return "VK_FORMAT_B5G6R5_UNORM_PACK16";
398		case VK_FORMAT_R5G5B5A1_UNORM_PACK16:						return "VK_FORMAT_R5G5B5A1_UNORM_PACK16";
399		case VK_FORMAT_B5G5R5A1_UNORM_PACK16:						return "VK_FORMAT_B5G5R5A1_UNORM_PACK16";
400		case VK_FORMAT_A1R5G5B5_UNORM_PACK16:						return "VK_FORMAT_A1R5G5B5_UNORM_PACK16";
401		case VK_FORMAT_R8_UNORM:									return "VK_FORMAT_R8_UNORM";
402		case VK_FORMAT_R8_SNORM:									return "VK_FORMAT_R8_SNORM";
403		case VK_FORMAT_R8_USCALED:									return "VK_FORMAT_R8_USCALED";
404		case VK_FORMAT_R8_SSCALED:									return "VK_FORMAT_R8_SSCALED";
405		case VK_FORMAT_R8_UINT:										return "VK_FORMAT_R8_UINT";
406		case VK_FORMAT_R8_SINT:										return "VK_FORMAT_R8_SINT";
407		case VK_FORMAT_R8_SRGB:										return "VK_FORMAT_R8_SRGB";
408		case VK_FORMAT_R8G8_UNORM:									return "VK_FORMAT_R8G8_UNORM";
409		case VK_FORMAT_R8G8_SNORM:									return "VK_FORMAT_R8G8_SNORM";
410		case VK_FORMAT_R8G8_USCALED:								return "VK_FORMAT_R8G8_USCALED";
411		case VK_FORMAT_R8G8_SSCALED:								return "VK_FORMAT_R8G8_SSCALED";
412		case VK_FORMAT_R8G8_UINT:									return "VK_FORMAT_R8G8_UINT";
413		case VK_FORMAT_R8G8_SINT:									return "VK_FORMAT_R8G8_SINT";
414		case VK_FORMAT_R8G8_SRGB:									return "VK_FORMAT_R8G8_SRGB";
415		case VK_FORMAT_R8G8B8_UNORM:								return "VK_FORMAT_R8G8B8_UNORM";
416		case VK_FORMAT_R8G8B8_SNORM:								return "VK_FORMAT_R8G8B8_SNORM";
417		case VK_FORMAT_R8G8B8_USCALED:								return "VK_FORMAT_R8G8B8_USCALED";
418		case VK_FORMAT_R8G8B8_SSCALED:								return "VK_FORMAT_R8G8B8_SSCALED";
419		case VK_FORMAT_R8G8B8_UINT:									return "VK_FORMAT_R8G8B8_UINT";
420		case VK_FORMAT_R8G8B8_SINT:									return "VK_FORMAT_R8G8B8_SINT";
421		case VK_FORMAT_R8G8B8_SRGB:									return "VK_FORMAT_R8G8B8_SRGB";
422		case VK_FORMAT_B8G8R8_UNORM:								return "VK_FORMAT_B8G8R8_UNORM";
423		case VK_FORMAT_B8G8R8_SNORM:								return "VK_FORMAT_B8G8R8_SNORM";
424		case VK_FORMAT_B8G8R8_USCALED:								return "VK_FORMAT_B8G8R8_USCALED";
425		case VK_FORMAT_B8G8R8_SSCALED:								return "VK_FORMAT_B8G8R8_SSCALED";
426		case VK_FORMAT_B8G8R8_UINT:									return "VK_FORMAT_B8G8R8_UINT";
427		case VK_FORMAT_B8G8R8_SINT:									return "VK_FORMAT_B8G8R8_SINT";
428		case VK_FORMAT_B8G8R8_SRGB:									return "VK_FORMAT_B8G8R8_SRGB";
429		case VK_FORMAT_R8G8B8A8_UNORM:								return "VK_FORMAT_R8G8B8A8_UNORM";
430		case VK_FORMAT_R8G8B8A8_SNORM:								return "VK_FORMAT_R8G8B8A8_SNORM";
431		case VK_FORMAT_R8G8B8A8_USCALED:							return "VK_FORMAT_R8G8B8A8_USCALED";
432		case VK_FORMAT_R8G8B8A8_SSCALED:							return "VK_FORMAT_R8G8B8A8_SSCALED";
433		case VK_FORMAT_R8G8B8A8_UINT:								return "VK_FORMAT_R8G8B8A8_UINT";
434		case VK_FORMAT_R8G8B8A8_SINT:								return "VK_FORMAT_R8G8B8A8_SINT";
435		case VK_FORMAT_R8G8B8A8_SRGB:								return "VK_FORMAT_R8G8B8A8_SRGB";
436		case VK_FORMAT_B8G8R8A8_UNORM:								return "VK_FORMAT_B8G8R8A8_UNORM";
437		case VK_FORMAT_B8G8R8A8_SNORM:								return "VK_FORMAT_B8G8R8A8_SNORM";
438		case VK_FORMAT_B8G8R8A8_USCALED:							return "VK_FORMAT_B8G8R8A8_USCALED";
439		case VK_FORMAT_B8G8R8A8_SSCALED:							return "VK_FORMAT_B8G8R8A8_SSCALED";
440		case VK_FORMAT_B8G8R8A8_UINT:								return "VK_FORMAT_B8G8R8A8_UINT";
441		case VK_FORMAT_B8G8R8A8_SINT:								return "VK_FORMAT_B8G8R8A8_SINT";
442		case VK_FORMAT_B8G8R8A8_SRGB:								return "VK_FORMAT_B8G8R8A8_SRGB";
443		case VK_FORMAT_A8B8G8R8_UNORM_PACK32:						return "VK_FORMAT_A8B8G8R8_UNORM_PACK32";
444		case VK_FORMAT_A8B8G8R8_SNORM_PACK32:						return "VK_FORMAT_A8B8G8R8_SNORM_PACK32";
445		case VK_FORMAT_A8B8G8R8_USCALED_PACK32:						return "VK_FORMAT_A8B8G8R8_USCALED_PACK32";
446		case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:						return "VK_FORMAT_A8B8G8R8_SSCALED_PACK32";
447		case VK_FORMAT_A8B8G8R8_UINT_PACK32:						return "VK_FORMAT_A8B8G8R8_UINT_PACK32";
448		case VK_FORMAT_A8B8G8R8_SINT_PACK32:						return "VK_FORMAT_A8B8G8R8_SINT_PACK32";
449		case VK_FORMAT_A8B8G8R8_SRGB_PACK32:						return "VK_FORMAT_A8B8G8R8_SRGB_PACK32";
450		case VK_FORMAT_A2R10G10B10_UNORM_PACK32:					return "VK_FORMAT_A2R10G10B10_UNORM_PACK32";
451		case VK_FORMAT_A2R10G10B10_SNORM_PACK32:					return "VK_FORMAT_A2R10G10B10_SNORM_PACK32";
452		case VK_FORMAT_A2R10G10B10_USCALED_PACK32:					return "VK_FORMAT_A2R10G10B10_USCALED_PACK32";
453		case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:					return "VK_FORMAT_A2R10G10B10_SSCALED_PACK32";
454		case VK_FORMAT_A2R10G10B10_UINT_PACK32:						return "VK_FORMAT_A2R10G10B10_UINT_PACK32";
455		case VK_FORMAT_A2R10G10B10_SINT_PACK32:						return "VK_FORMAT_A2R10G10B10_SINT_PACK32";
456		case VK_FORMAT_A2B10G10R10_UNORM_PACK32:					return "VK_FORMAT_A2B10G10R10_UNORM_PACK32";
457		case VK_FORMAT_A2B10G10R10_SNORM_PACK32:					return "VK_FORMAT_A2B10G10R10_SNORM_PACK32";
458		case VK_FORMAT_A2B10G10R10_USCALED_PACK32:					return "VK_FORMAT_A2B10G10R10_USCALED_PACK32";
459		case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:					return "VK_FORMAT_A2B10G10R10_SSCALED_PACK32";
460		case VK_FORMAT_A2B10G10R10_UINT_PACK32:						return "VK_FORMAT_A2B10G10R10_UINT_PACK32";
461		case VK_FORMAT_A2B10G10R10_SINT_PACK32:						return "VK_FORMAT_A2B10G10R10_SINT_PACK32";
462		case VK_FORMAT_R16_UNORM:									return "VK_FORMAT_R16_UNORM";
463		case VK_FORMAT_R16_SNORM:									return "VK_FORMAT_R16_SNORM";
464		case VK_FORMAT_R16_USCALED:									return "VK_FORMAT_R16_USCALED";
465		case VK_FORMAT_R16_SSCALED:									return "VK_FORMAT_R16_SSCALED";
466		case VK_FORMAT_R16_UINT:									return "VK_FORMAT_R16_UINT";
467		case VK_FORMAT_R16_SINT:									return "VK_FORMAT_R16_SINT";
468		case VK_FORMAT_R16_SFLOAT:									return "VK_FORMAT_R16_SFLOAT";
469		case VK_FORMAT_R16G16_UNORM:								return "VK_FORMAT_R16G16_UNORM";
470		case VK_FORMAT_R16G16_SNORM:								return "VK_FORMAT_R16G16_SNORM";
471		case VK_FORMAT_R16G16_USCALED:								return "VK_FORMAT_R16G16_USCALED";
472		case VK_FORMAT_R16G16_SSCALED:								return "VK_FORMAT_R16G16_SSCALED";
473		case VK_FORMAT_R16G16_UINT:									return "VK_FORMAT_R16G16_UINT";
474		case VK_FORMAT_R16G16_SINT:									return "VK_FORMAT_R16G16_SINT";
475		case VK_FORMAT_R16G16_SFLOAT:								return "VK_FORMAT_R16G16_SFLOAT";
476		case VK_FORMAT_R16G16B16_UNORM:								return "VK_FORMAT_R16G16B16_UNORM";
477		case VK_FORMAT_R16G16B16_SNORM:								return "VK_FORMAT_R16G16B16_SNORM";
478		case VK_FORMAT_R16G16B16_USCALED:							return "VK_FORMAT_R16G16B16_USCALED";
479		case VK_FORMAT_R16G16B16_SSCALED:							return "VK_FORMAT_R16G16B16_SSCALED";
480		case VK_FORMAT_R16G16B16_UINT:								return "VK_FORMAT_R16G16B16_UINT";
481		case VK_FORMAT_R16G16B16_SINT:								return "VK_FORMAT_R16G16B16_SINT";
482		case VK_FORMAT_R16G16B16_SFLOAT:							return "VK_FORMAT_R16G16B16_SFLOAT";
483		case VK_FORMAT_R16G16B16A16_UNORM:							return "VK_FORMAT_R16G16B16A16_UNORM";
484		case VK_FORMAT_R16G16B16A16_SNORM:							return "VK_FORMAT_R16G16B16A16_SNORM";
485		case VK_FORMAT_R16G16B16A16_USCALED:						return "VK_FORMAT_R16G16B16A16_USCALED";
486		case VK_FORMAT_R16G16B16A16_SSCALED:						return "VK_FORMAT_R16G16B16A16_SSCALED";
487		case VK_FORMAT_R16G16B16A16_UINT:							return "VK_FORMAT_R16G16B16A16_UINT";
488		case VK_FORMAT_R16G16B16A16_SINT:							return "VK_FORMAT_R16G16B16A16_SINT";
489		case VK_FORMAT_R16G16B16A16_SFLOAT:							return "VK_FORMAT_R16G16B16A16_SFLOAT";
490		case VK_FORMAT_R32_UINT:									return "VK_FORMAT_R32_UINT";
491		case VK_FORMAT_R32_SINT:									return "VK_FORMAT_R32_SINT";
492		case VK_FORMAT_R32_SFLOAT:									return "VK_FORMAT_R32_SFLOAT";
493		case VK_FORMAT_R32G32_UINT:									return "VK_FORMAT_R32G32_UINT";
494		case VK_FORMAT_R32G32_SINT:									return "VK_FORMAT_R32G32_SINT";
495		case VK_FORMAT_R32G32_SFLOAT:								return "VK_FORMAT_R32G32_SFLOAT";
496		case VK_FORMAT_R32G32B32_UINT:								return "VK_FORMAT_R32G32B32_UINT";
497		case VK_FORMAT_R32G32B32_SINT:								return "VK_FORMAT_R32G32B32_SINT";
498		case VK_FORMAT_R32G32B32_SFLOAT:							return "VK_FORMAT_R32G32B32_SFLOAT";
499		case VK_FORMAT_R32G32B32A32_UINT:							return "VK_FORMAT_R32G32B32A32_UINT";
500		case VK_FORMAT_R32G32B32A32_SINT:							return "VK_FORMAT_R32G32B32A32_SINT";
501		case VK_FORMAT_R32G32B32A32_SFLOAT:							return "VK_FORMAT_R32G32B32A32_SFLOAT";
502		case VK_FORMAT_R64_UINT:									return "VK_FORMAT_R64_UINT";
503		case VK_FORMAT_R64_SINT:									return "VK_FORMAT_R64_SINT";
504		case VK_FORMAT_R64_SFLOAT:									return "VK_FORMAT_R64_SFLOAT";
505		case VK_FORMAT_R64G64_UINT:									return "VK_FORMAT_R64G64_UINT";
506		case VK_FORMAT_R64G64_SINT:									return "VK_FORMAT_R64G64_SINT";
507		case VK_FORMAT_R64G64_SFLOAT:								return "VK_FORMAT_R64G64_SFLOAT";
508		case VK_FORMAT_R64G64B64_UINT:								return "VK_FORMAT_R64G64B64_UINT";
509		case VK_FORMAT_R64G64B64_SINT:								return "VK_FORMAT_R64G64B64_SINT";
510		case VK_FORMAT_R64G64B64_SFLOAT:							return "VK_FORMAT_R64G64B64_SFLOAT";
511		case VK_FORMAT_R64G64B64A64_UINT:							return "VK_FORMAT_R64G64B64A64_UINT";
512		case VK_FORMAT_R64G64B64A64_SINT:							return "VK_FORMAT_R64G64B64A64_SINT";
513		case VK_FORMAT_R64G64B64A64_SFLOAT:							return "VK_FORMAT_R64G64B64A64_SFLOAT";
514		case VK_FORMAT_B10G11R11_UFLOAT_PACK32:						return "VK_FORMAT_B10G11R11_UFLOAT_PACK32";
515		case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:						return "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32";
516		case VK_FORMAT_D16_UNORM:									return "VK_FORMAT_D16_UNORM";
517		case VK_FORMAT_X8_D24_UNORM_PACK32:							return "VK_FORMAT_X8_D24_UNORM_PACK32";
518		case VK_FORMAT_D32_SFLOAT:									return "VK_FORMAT_D32_SFLOAT";
519		case VK_FORMAT_S8_UINT:										return "VK_FORMAT_S8_UINT";
520		case VK_FORMAT_D16_UNORM_S8_UINT:							return "VK_FORMAT_D16_UNORM_S8_UINT";
521		case VK_FORMAT_D24_UNORM_S8_UINT:							return "VK_FORMAT_D24_UNORM_S8_UINT";
522		case VK_FORMAT_D32_SFLOAT_S8_UINT:							return "VK_FORMAT_D32_SFLOAT_S8_UINT";
523		case VK_FORMAT_BC1_RGB_UNORM_BLOCK:							return "VK_FORMAT_BC1_RGB_UNORM_BLOCK";
524		case VK_FORMAT_BC1_RGB_SRGB_BLOCK:							return "VK_FORMAT_BC1_RGB_SRGB_BLOCK";
525		case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:						return "VK_FORMAT_BC1_RGBA_UNORM_BLOCK";
526		case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:							return "VK_FORMAT_BC1_RGBA_SRGB_BLOCK";
527		case VK_FORMAT_BC2_UNORM_BLOCK:								return "VK_FORMAT_BC2_UNORM_BLOCK";
528		case VK_FORMAT_BC2_SRGB_BLOCK:								return "VK_FORMAT_BC2_SRGB_BLOCK";
529		case VK_FORMAT_BC3_UNORM_BLOCK:								return "VK_FORMAT_BC3_UNORM_BLOCK";
530		case VK_FORMAT_BC3_SRGB_BLOCK:								return "VK_FORMAT_BC3_SRGB_BLOCK";
531		case VK_FORMAT_BC4_UNORM_BLOCK:								return "VK_FORMAT_BC4_UNORM_BLOCK";
532		case VK_FORMAT_BC4_SNORM_BLOCK:								return "VK_FORMAT_BC4_SNORM_BLOCK";
533		case VK_FORMAT_BC5_UNORM_BLOCK:								return "VK_FORMAT_BC5_UNORM_BLOCK";
534		case VK_FORMAT_BC5_SNORM_BLOCK:								return "VK_FORMAT_BC5_SNORM_BLOCK";
535		case VK_FORMAT_BC6H_UFLOAT_BLOCK:							return "VK_FORMAT_BC6H_UFLOAT_BLOCK";
536		case VK_FORMAT_BC6H_SFLOAT_BLOCK:							return "VK_FORMAT_BC6H_SFLOAT_BLOCK";
537		case VK_FORMAT_BC7_UNORM_BLOCK:								return "VK_FORMAT_BC7_UNORM_BLOCK";
538		case VK_FORMAT_BC7_SRGB_BLOCK:								return "VK_FORMAT_BC7_SRGB_BLOCK";
539		case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:						return "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK";
540		case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:						return "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK";
541		case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:					return "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK";
542		case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:					return "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK";
543		case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:					return "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK";
544		case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:					return "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK";
545		case VK_FORMAT_EAC_R11_UNORM_BLOCK:							return "VK_FORMAT_EAC_R11_UNORM_BLOCK";
546		case VK_FORMAT_EAC_R11_SNORM_BLOCK:							return "VK_FORMAT_EAC_R11_SNORM_BLOCK";
547		case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:						return "VK_FORMAT_EAC_R11G11_UNORM_BLOCK";
548		case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:						return "VK_FORMAT_EAC_R11G11_SNORM_BLOCK";
549		case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:						return "VK_FORMAT_ASTC_4x4_UNORM_BLOCK";
550		case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:							return "VK_FORMAT_ASTC_4x4_SRGB_BLOCK";
551		case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:						return "VK_FORMAT_ASTC_5x4_UNORM_BLOCK";
552		case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:							return "VK_FORMAT_ASTC_5x4_SRGB_BLOCK";
553		case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:						return "VK_FORMAT_ASTC_5x5_UNORM_BLOCK";
554		case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:							return "VK_FORMAT_ASTC_5x5_SRGB_BLOCK";
555		case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:						return "VK_FORMAT_ASTC_6x5_UNORM_BLOCK";
556		case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:							return "VK_FORMAT_ASTC_6x5_SRGB_BLOCK";
557		case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:						return "VK_FORMAT_ASTC_6x6_UNORM_BLOCK";
558		case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:							return "VK_FORMAT_ASTC_6x6_SRGB_BLOCK";
559		case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:						return "VK_FORMAT_ASTC_8x5_UNORM_BLOCK";
560		case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:							return "VK_FORMAT_ASTC_8x5_SRGB_BLOCK";
561		case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:						return "VK_FORMAT_ASTC_8x6_UNORM_BLOCK";
562		case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:							return "VK_FORMAT_ASTC_8x6_SRGB_BLOCK";
563		case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:						return "VK_FORMAT_ASTC_8x8_UNORM_BLOCK";
564		case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:							return "VK_FORMAT_ASTC_8x8_SRGB_BLOCK";
565		case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:						return "VK_FORMAT_ASTC_10x5_UNORM_BLOCK";
566		case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:						return "VK_FORMAT_ASTC_10x5_SRGB_BLOCK";
567		case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:						return "VK_FORMAT_ASTC_10x6_UNORM_BLOCK";
568		case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:						return "VK_FORMAT_ASTC_10x6_SRGB_BLOCK";
569		case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:						return "VK_FORMAT_ASTC_10x8_UNORM_BLOCK";
570		case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:						return "VK_FORMAT_ASTC_10x8_SRGB_BLOCK";
571		case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:						return "VK_FORMAT_ASTC_10x10_UNORM_BLOCK";
572		case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:						return "VK_FORMAT_ASTC_10x10_SRGB_BLOCK";
573		case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:						return "VK_FORMAT_ASTC_12x10_UNORM_BLOCK";
574		case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:						return "VK_FORMAT_ASTC_12x10_SRGB_BLOCK";
575		case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:						return "VK_FORMAT_ASTC_12x12_UNORM_BLOCK";
576		case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:						return "VK_FORMAT_ASTC_12x12_SRGB_BLOCK";
577		case VK_FORMAT_G8B8G8R8_422_UNORM:							return "VK_FORMAT_G8B8G8R8_422_UNORM";
578		case VK_FORMAT_B8G8R8G8_422_UNORM:							return "VK_FORMAT_B8G8R8G8_422_UNORM";
579		case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:					return "VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM";
580		case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:					return "VK_FORMAT_G8_B8R8_2PLANE_420_UNORM";
581		case VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:					return "VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM";
582		case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:					return "VK_FORMAT_G8_B8R8_2PLANE_422_UNORM";
583		case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:					return "VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM";
584		case VK_FORMAT_R10X6_UNORM_PACK16:							return "VK_FORMAT_R10X6_UNORM_PACK16";
585		case VK_FORMAT_R10X6G10X6_UNORM_2PACK16:					return "VK_FORMAT_R10X6G10X6_UNORM_2PACK16";
586		case VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:			return "VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16";
587		case VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:		return "VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16";
588		case VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:		return "VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16";
589		case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:	return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16";
590		case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:	return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16";
591		case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:	return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16";
592		case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:	return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16";
593		case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:	return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16";
594		case VK_FORMAT_R12X4_UNORM_PACK16:							return "VK_FORMAT_R12X4_UNORM_PACK16";
595		case VK_FORMAT_R12X4G12X4_UNORM_2PACK16:					return "VK_FORMAT_R12X4G12X4_UNORM_2PACK16";
596		case VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:			return "VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16";
597		case VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:		return "VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16";
598		case VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:		return "VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16";
599		case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:	return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16";
600		case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:	return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16";
601		case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:	return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16";
602		case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:	return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16";
603		case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:	return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16";
604		case VK_FORMAT_G16B16G16R16_422_UNORM:						return "VK_FORMAT_G16B16G16R16_422_UNORM";
605		case VK_FORMAT_B16G16R16G16_422_UNORM:						return "VK_FORMAT_B16G16R16G16_422_UNORM";
606		case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:				return "VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM";
607		case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:					return "VK_FORMAT_G16_B16R16_2PLANE_420_UNORM";
608		case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:				return "VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM";
609		case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:					return "VK_FORMAT_G16_B16R16_2PLANE_422_UNORM";
610		case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:				return "VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM";
611		case VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:					return "VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG";
612		case VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:					return "VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG";
613		case VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:					return "VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG";
614		case VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:					return "VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG";
615		case VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:					return "VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG";
616		case VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:					return "VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG";
617		case VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:					return "VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG";
618		case VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:					return "VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG";
619		default:													return DE_NULL;
620	}
621}
622
623const char* getImageTypeName (VkImageType value)
624{
625	switch (value)
626	{
627		case VK_IMAGE_TYPE_1D:	return "VK_IMAGE_TYPE_1D";
628		case VK_IMAGE_TYPE_2D:	return "VK_IMAGE_TYPE_2D";
629		case VK_IMAGE_TYPE_3D:	return "VK_IMAGE_TYPE_3D";
630		default:				return DE_NULL;
631	}
632}
633
634const char* getImageTilingName (VkImageTiling value)
635{
636	switch (value)
637	{
638		case VK_IMAGE_TILING_OPTIMAL:	return "VK_IMAGE_TILING_OPTIMAL";
639		case VK_IMAGE_TILING_LINEAR:	return "VK_IMAGE_TILING_LINEAR";
640		default:						return DE_NULL;
641	}
642}
643
644const char* getPhysicalDeviceTypeName (VkPhysicalDeviceType value)
645{
646	switch (value)
647	{
648		case VK_PHYSICAL_DEVICE_TYPE_OTHER:				return "VK_PHYSICAL_DEVICE_TYPE_OTHER";
649		case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU:	return "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU";
650		case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU:		return "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU";
651		case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU:		return "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU";
652		case VK_PHYSICAL_DEVICE_TYPE_CPU:				return "VK_PHYSICAL_DEVICE_TYPE_CPU";
653		default:										return DE_NULL;
654	}
655}
656
657const char* getQueryTypeName (VkQueryType value)
658{
659	switch (value)
660	{
661		case VK_QUERY_TYPE_OCCLUSION:			return "VK_QUERY_TYPE_OCCLUSION";
662		case VK_QUERY_TYPE_PIPELINE_STATISTICS:	return "VK_QUERY_TYPE_PIPELINE_STATISTICS";
663		case VK_QUERY_TYPE_TIMESTAMP:			return "VK_QUERY_TYPE_TIMESTAMP";
664		default:								return DE_NULL;
665	}
666}
667
668const char* getSharingModeName (VkSharingMode value)
669{
670	switch (value)
671	{
672		case VK_SHARING_MODE_EXCLUSIVE:		return "VK_SHARING_MODE_EXCLUSIVE";
673		case VK_SHARING_MODE_CONCURRENT:	return "VK_SHARING_MODE_CONCURRENT";
674		default:							return DE_NULL;
675	}
676}
677
678const char* getImageLayoutName (VkImageLayout value)
679{
680	switch (value)
681	{
682		case VK_IMAGE_LAYOUT_UNDEFINED:										return "VK_IMAGE_LAYOUT_UNDEFINED";
683		case VK_IMAGE_LAYOUT_GENERAL:										return "VK_IMAGE_LAYOUT_GENERAL";
684		case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:						return "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL";
685		case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:				return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL";
686		case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL:				return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL";
687		case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:						return "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL";
688		case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:							return "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL";
689		case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:							return "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL";
690		case VK_IMAGE_LAYOUT_PREINITIALIZED:								return "VK_IMAGE_LAYOUT_PREINITIALIZED";
691		case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL:	return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL";
692		case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL:	return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL";
693		case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR:								return "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR";
694		case VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR:							return "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR";
695		default:															return DE_NULL;
696	}
697}
698
699const char* getImageViewTypeName (VkImageViewType value)
700{
701	switch (value)
702	{
703		case VK_IMAGE_VIEW_TYPE_1D:			return "VK_IMAGE_VIEW_TYPE_1D";
704		case VK_IMAGE_VIEW_TYPE_2D:			return "VK_IMAGE_VIEW_TYPE_2D";
705		case VK_IMAGE_VIEW_TYPE_3D:			return "VK_IMAGE_VIEW_TYPE_3D";
706		case VK_IMAGE_VIEW_TYPE_CUBE:		return "VK_IMAGE_VIEW_TYPE_CUBE";
707		case VK_IMAGE_VIEW_TYPE_1D_ARRAY:	return "VK_IMAGE_VIEW_TYPE_1D_ARRAY";
708		case VK_IMAGE_VIEW_TYPE_2D_ARRAY:	return "VK_IMAGE_VIEW_TYPE_2D_ARRAY";
709		case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY:	return "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY";
710		default:							return DE_NULL;
711	}
712}
713
714const char* getComponentSwizzleName (VkComponentSwizzle value)
715{
716	switch (value)
717	{
718		case VK_COMPONENT_SWIZZLE_IDENTITY:	return "VK_COMPONENT_SWIZZLE_IDENTITY";
719		case VK_COMPONENT_SWIZZLE_ZERO:		return "VK_COMPONENT_SWIZZLE_ZERO";
720		case VK_COMPONENT_SWIZZLE_ONE:		return "VK_COMPONENT_SWIZZLE_ONE";
721		case VK_COMPONENT_SWIZZLE_R:		return "VK_COMPONENT_SWIZZLE_R";
722		case VK_COMPONENT_SWIZZLE_G:		return "VK_COMPONENT_SWIZZLE_G";
723		case VK_COMPONENT_SWIZZLE_B:		return "VK_COMPONENT_SWIZZLE_B";
724		case VK_COMPONENT_SWIZZLE_A:		return "VK_COMPONENT_SWIZZLE_A";
725		default:							return DE_NULL;
726	}
727}
728
729const char* getVertexInputRateName (VkVertexInputRate value)
730{
731	switch (value)
732	{
733		case VK_VERTEX_INPUT_RATE_VERTEX:	return "VK_VERTEX_INPUT_RATE_VERTEX";
734		case VK_VERTEX_INPUT_RATE_INSTANCE:	return "VK_VERTEX_INPUT_RATE_INSTANCE";
735		default:							return DE_NULL;
736	}
737}
738
739const char* getPrimitiveTopologyName (VkPrimitiveTopology value)
740{
741	switch (value)
742	{
743		case VK_PRIMITIVE_TOPOLOGY_POINT_LIST:						return "VK_PRIMITIVE_TOPOLOGY_POINT_LIST";
744		case VK_PRIMITIVE_TOPOLOGY_LINE_LIST:						return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST";
745		case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:						return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP";
746		case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:					return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST";
747		case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:					return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP";
748		case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:					return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN";
749		case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY:		return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY";
750		case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY:		return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY";
751		case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY:	return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY";
752		case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY:	return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY";
753		case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST:						return "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST";
754		default:													return DE_NULL;
755	}
756}
757
758const char* getPolygonModeName (VkPolygonMode value)
759{
760	switch (value)
761	{
762		case VK_POLYGON_MODE_FILL:				return "VK_POLYGON_MODE_FILL";
763		case VK_POLYGON_MODE_LINE:				return "VK_POLYGON_MODE_LINE";
764		case VK_POLYGON_MODE_POINT:				return "VK_POLYGON_MODE_POINT";
765		case VK_POLYGON_MODE_FILL_RECTANGLE_NV:	return "VK_POLYGON_MODE_FILL_RECTANGLE_NV";
766		default:								return DE_NULL;
767	}
768}
769
770const char* getFrontFaceName (VkFrontFace value)
771{
772	switch (value)
773	{
774		case VK_FRONT_FACE_COUNTER_CLOCKWISE:	return "VK_FRONT_FACE_COUNTER_CLOCKWISE";
775		case VK_FRONT_FACE_CLOCKWISE:			return "VK_FRONT_FACE_CLOCKWISE";
776		default:								return DE_NULL;
777	}
778}
779
780const char* getCompareOpName (VkCompareOp value)
781{
782	switch (value)
783	{
784		case VK_COMPARE_OP_NEVER:				return "VK_COMPARE_OP_NEVER";
785		case VK_COMPARE_OP_LESS:				return "VK_COMPARE_OP_LESS";
786		case VK_COMPARE_OP_EQUAL:				return "VK_COMPARE_OP_EQUAL";
787		case VK_COMPARE_OP_LESS_OR_EQUAL:		return "VK_COMPARE_OP_LESS_OR_EQUAL";
788		case VK_COMPARE_OP_GREATER:				return "VK_COMPARE_OP_GREATER";
789		case VK_COMPARE_OP_NOT_EQUAL:			return "VK_COMPARE_OP_NOT_EQUAL";
790		case VK_COMPARE_OP_GREATER_OR_EQUAL:	return "VK_COMPARE_OP_GREATER_OR_EQUAL";
791		case VK_COMPARE_OP_ALWAYS:				return "VK_COMPARE_OP_ALWAYS";
792		default:								return DE_NULL;
793	}
794}
795
796const char* getStencilOpName (VkStencilOp value)
797{
798	switch (value)
799	{
800		case VK_STENCIL_OP_KEEP:				return "VK_STENCIL_OP_KEEP";
801		case VK_STENCIL_OP_ZERO:				return "VK_STENCIL_OP_ZERO";
802		case VK_STENCIL_OP_REPLACE:				return "VK_STENCIL_OP_REPLACE";
803		case VK_STENCIL_OP_INCREMENT_AND_CLAMP:	return "VK_STENCIL_OP_INCREMENT_AND_CLAMP";
804		case VK_STENCIL_OP_DECREMENT_AND_CLAMP:	return "VK_STENCIL_OP_DECREMENT_AND_CLAMP";
805		case VK_STENCIL_OP_INVERT:				return "VK_STENCIL_OP_INVERT";
806		case VK_STENCIL_OP_INCREMENT_AND_WRAP:	return "VK_STENCIL_OP_INCREMENT_AND_WRAP";
807		case VK_STENCIL_OP_DECREMENT_AND_WRAP:	return "VK_STENCIL_OP_DECREMENT_AND_WRAP";
808		default:								return DE_NULL;
809	}
810}
811
812const char* getLogicOpName (VkLogicOp value)
813{
814	switch (value)
815	{
816		case VK_LOGIC_OP_CLEAR:			return "VK_LOGIC_OP_CLEAR";
817		case VK_LOGIC_OP_AND:			return "VK_LOGIC_OP_AND";
818		case VK_LOGIC_OP_AND_REVERSE:	return "VK_LOGIC_OP_AND_REVERSE";
819		case VK_LOGIC_OP_COPY:			return "VK_LOGIC_OP_COPY";
820		case VK_LOGIC_OP_AND_INVERTED:	return "VK_LOGIC_OP_AND_INVERTED";
821		case VK_LOGIC_OP_NO_OP:			return "VK_LOGIC_OP_NO_OP";
822		case VK_LOGIC_OP_XOR:			return "VK_LOGIC_OP_XOR";
823		case VK_LOGIC_OP_OR:			return "VK_LOGIC_OP_OR";
824		case VK_LOGIC_OP_NOR:			return "VK_LOGIC_OP_NOR";
825		case VK_LOGIC_OP_EQUIVALENT:	return "VK_LOGIC_OP_EQUIVALENT";
826		case VK_LOGIC_OP_INVERT:		return "VK_LOGIC_OP_INVERT";
827		case VK_LOGIC_OP_OR_REVERSE:	return "VK_LOGIC_OP_OR_REVERSE";
828		case VK_LOGIC_OP_COPY_INVERTED:	return "VK_LOGIC_OP_COPY_INVERTED";
829		case VK_LOGIC_OP_OR_INVERTED:	return "VK_LOGIC_OP_OR_INVERTED";
830		case VK_LOGIC_OP_NAND:			return "VK_LOGIC_OP_NAND";
831		case VK_LOGIC_OP_SET:			return "VK_LOGIC_OP_SET";
832		default:						return DE_NULL;
833	}
834}
835
836const char* getBlendFactorName (VkBlendFactor value)
837{
838	switch (value)
839	{
840		case VK_BLEND_FACTOR_ZERO:						return "VK_BLEND_FACTOR_ZERO";
841		case VK_BLEND_FACTOR_ONE:						return "VK_BLEND_FACTOR_ONE";
842		case VK_BLEND_FACTOR_SRC_COLOR:					return "VK_BLEND_FACTOR_SRC_COLOR";
843		case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR:		return "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR";
844		case VK_BLEND_FACTOR_DST_COLOR:					return "VK_BLEND_FACTOR_DST_COLOR";
845		case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR:		return "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR";
846		case VK_BLEND_FACTOR_SRC_ALPHA:					return "VK_BLEND_FACTOR_SRC_ALPHA";
847		case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA:		return "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA";
848		case VK_BLEND_FACTOR_DST_ALPHA:					return "VK_BLEND_FACTOR_DST_ALPHA";
849		case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA:		return "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA";
850		case VK_BLEND_FACTOR_CONSTANT_COLOR:			return "VK_BLEND_FACTOR_CONSTANT_COLOR";
851		case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR:	return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR";
852		case VK_BLEND_FACTOR_CONSTANT_ALPHA:			return "VK_BLEND_FACTOR_CONSTANT_ALPHA";
853		case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA:	return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA";
854		case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE:		return "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE";
855		case VK_BLEND_FACTOR_SRC1_COLOR:				return "VK_BLEND_FACTOR_SRC1_COLOR";
856		case VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR:		return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR";
857		case VK_BLEND_FACTOR_SRC1_ALPHA:				return "VK_BLEND_FACTOR_SRC1_ALPHA";
858		case VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA:		return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA";
859		default:										return DE_NULL;
860	}
861}
862
863const char* getBlendOpName (VkBlendOp value)
864{
865	switch (value)
866	{
867		case VK_BLEND_OP_ADD:						return "VK_BLEND_OP_ADD";
868		case VK_BLEND_OP_SUBTRACT:					return "VK_BLEND_OP_SUBTRACT";
869		case VK_BLEND_OP_REVERSE_SUBTRACT:			return "VK_BLEND_OP_REVERSE_SUBTRACT";
870		case VK_BLEND_OP_MIN:						return "VK_BLEND_OP_MIN";
871		case VK_BLEND_OP_MAX:						return "VK_BLEND_OP_MAX";
872		case VK_BLEND_OP_ZERO_EXT:					return "VK_BLEND_OP_ZERO_EXT";
873		case VK_BLEND_OP_SRC_EXT:					return "VK_BLEND_OP_SRC_EXT";
874		case VK_BLEND_OP_DST_EXT:					return "VK_BLEND_OP_DST_EXT";
875		case VK_BLEND_OP_SRC_OVER_EXT:				return "VK_BLEND_OP_SRC_OVER_EXT";
876		case VK_BLEND_OP_DST_OVER_EXT:				return "VK_BLEND_OP_DST_OVER_EXT";
877		case VK_BLEND_OP_SRC_IN_EXT:				return "VK_BLEND_OP_SRC_IN_EXT";
878		case VK_BLEND_OP_DST_IN_EXT:				return "VK_BLEND_OP_DST_IN_EXT";
879		case VK_BLEND_OP_SRC_OUT_EXT:				return "VK_BLEND_OP_SRC_OUT_EXT";
880		case VK_BLEND_OP_DST_OUT_EXT:				return "VK_BLEND_OP_DST_OUT_EXT";
881		case VK_BLEND_OP_SRC_ATOP_EXT:				return "VK_BLEND_OP_SRC_ATOP_EXT";
882		case VK_BLEND_OP_DST_ATOP_EXT:				return "VK_BLEND_OP_DST_ATOP_EXT";
883		case VK_BLEND_OP_XOR_EXT:					return "VK_BLEND_OP_XOR_EXT";
884		case VK_BLEND_OP_MULTIPLY_EXT:				return "VK_BLEND_OP_MULTIPLY_EXT";
885		case VK_BLEND_OP_SCREEN_EXT:				return "VK_BLEND_OP_SCREEN_EXT";
886		case VK_BLEND_OP_OVERLAY_EXT:				return "VK_BLEND_OP_OVERLAY_EXT";
887		case VK_BLEND_OP_DARKEN_EXT:				return "VK_BLEND_OP_DARKEN_EXT";
888		case VK_BLEND_OP_LIGHTEN_EXT:				return "VK_BLEND_OP_LIGHTEN_EXT";
889		case VK_BLEND_OP_COLORDODGE_EXT:			return "VK_BLEND_OP_COLORDODGE_EXT";
890		case VK_BLEND_OP_COLORBURN_EXT:				return "VK_BLEND_OP_COLORBURN_EXT";
891		case VK_BLEND_OP_HARDLIGHT_EXT:				return "VK_BLEND_OP_HARDLIGHT_EXT";
892		case VK_BLEND_OP_SOFTLIGHT_EXT:				return "VK_BLEND_OP_SOFTLIGHT_EXT";
893		case VK_BLEND_OP_DIFFERENCE_EXT:			return "VK_BLEND_OP_DIFFERENCE_EXT";
894		case VK_BLEND_OP_EXCLUSION_EXT:				return "VK_BLEND_OP_EXCLUSION_EXT";
895		case VK_BLEND_OP_INVERT_EXT:				return "VK_BLEND_OP_INVERT_EXT";
896		case VK_BLEND_OP_INVERT_RGB_EXT:			return "VK_BLEND_OP_INVERT_RGB_EXT";
897		case VK_BLEND_OP_LINEARDODGE_EXT:			return "VK_BLEND_OP_LINEARDODGE_EXT";
898		case VK_BLEND_OP_LINEARBURN_EXT:			return "VK_BLEND_OP_LINEARBURN_EXT";
899		case VK_BLEND_OP_VIVIDLIGHT_EXT:			return "VK_BLEND_OP_VIVIDLIGHT_EXT";
900		case VK_BLEND_OP_LINEARLIGHT_EXT:			return "VK_BLEND_OP_LINEARLIGHT_EXT";
901		case VK_BLEND_OP_PINLIGHT_EXT:				return "VK_BLEND_OP_PINLIGHT_EXT";
902		case VK_BLEND_OP_HARDMIX_EXT:				return "VK_BLEND_OP_HARDMIX_EXT";
903		case VK_BLEND_OP_HSL_HUE_EXT:				return "VK_BLEND_OP_HSL_HUE_EXT";
904		case VK_BLEND_OP_HSL_SATURATION_EXT:		return "VK_BLEND_OP_HSL_SATURATION_EXT";
905		case VK_BLEND_OP_HSL_COLOR_EXT:				return "VK_BLEND_OP_HSL_COLOR_EXT";
906		case VK_BLEND_OP_HSL_LUMINOSITY_EXT:		return "VK_BLEND_OP_HSL_LUMINOSITY_EXT";
907		case VK_BLEND_OP_PLUS_EXT:					return "VK_BLEND_OP_PLUS_EXT";
908		case VK_BLEND_OP_PLUS_CLAMPED_EXT:			return "VK_BLEND_OP_PLUS_CLAMPED_EXT";
909		case VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT:	return "VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT";
910		case VK_BLEND_OP_PLUS_DARKER_EXT:			return "VK_BLEND_OP_PLUS_DARKER_EXT";
911		case VK_BLEND_OP_MINUS_EXT:					return "VK_BLEND_OP_MINUS_EXT";
912		case VK_BLEND_OP_MINUS_CLAMPED_EXT:			return "VK_BLEND_OP_MINUS_CLAMPED_EXT";
913		case VK_BLEND_OP_CONTRAST_EXT:				return "VK_BLEND_OP_CONTRAST_EXT";
914		case VK_BLEND_OP_INVERT_OVG_EXT:			return "VK_BLEND_OP_INVERT_OVG_EXT";
915		case VK_BLEND_OP_RED_EXT:					return "VK_BLEND_OP_RED_EXT";
916		case VK_BLEND_OP_GREEN_EXT:					return "VK_BLEND_OP_GREEN_EXT";
917		case VK_BLEND_OP_BLUE_EXT:					return "VK_BLEND_OP_BLUE_EXT";
918		default:									return DE_NULL;
919	}
920}
921
922const char* getDynamicStateName (VkDynamicState value)
923{
924	switch (value)
925	{
926		case VK_DYNAMIC_STATE_VIEWPORT:					return "VK_DYNAMIC_STATE_VIEWPORT";
927		case VK_DYNAMIC_STATE_SCISSOR:					return "VK_DYNAMIC_STATE_SCISSOR";
928		case VK_DYNAMIC_STATE_LINE_WIDTH:				return "VK_DYNAMIC_STATE_LINE_WIDTH";
929		case VK_DYNAMIC_STATE_DEPTH_BIAS:				return "VK_DYNAMIC_STATE_DEPTH_BIAS";
930		case VK_DYNAMIC_STATE_BLEND_CONSTANTS:			return "VK_DYNAMIC_STATE_BLEND_CONSTANTS";
931		case VK_DYNAMIC_STATE_DEPTH_BOUNDS:				return "VK_DYNAMIC_STATE_DEPTH_BOUNDS";
932		case VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK:		return "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK";
933		case VK_DYNAMIC_STATE_STENCIL_WRITE_MASK:		return "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK";
934		case VK_DYNAMIC_STATE_STENCIL_REFERENCE:		return "VK_DYNAMIC_STATE_STENCIL_REFERENCE";
935		case VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV:	return "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV";
936		case VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT:	return "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT";
937		case VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT:		return "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT";
938		default:										return DE_NULL;
939	}
940}
941
942const char* getFilterName (VkFilter value)
943{
944	switch (value)
945	{
946		case VK_FILTER_NEAREST:		return "VK_FILTER_NEAREST";
947		case VK_FILTER_LINEAR:		return "VK_FILTER_LINEAR";
948		case VK_FILTER_CUBIC_IMG:	return "VK_FILTER_CUBIC_IMG";
949		default:					return DE_NULL;
950	}
951}
952
953const char* getSamplerMipmapModeName (VkSamplerMipmapMode value)
954{
955	switch (value)
956	{
957		case VK_SAMPLER_MIPMAP_MODE_NEAREST:	return "VK_SAMPLER_MIPMAP_MODE_NEAREST";
958		case VK_SAMPLER_MIPMAP_MODE_LINEAR:		return "VK_SAMPLER_MIPMAP_MODE_LINEAR";
959		default:								return DE_NULL;
960	}
961}
962
963const char* getSamplerAddressModeName (VkSamplerAddressMode value)
964{
965	switch (value)
966	{
967		case VK_SAMPLER_ADDRESS_MODE_REPEAT:				return "VK_SAMPLER_ADDRESS_MODE_REPEAT";
968		case VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT:		return "VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT";
969		case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE:			return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE";
970		case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER:		return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER";
971		case VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE:	return "VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE";
972		default:											return DE_NULL;
973	}
974}
975
976const char* getBorderColorName (VkBorderColor value)
977{
978	switch (value)
979	{
980		case VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK:	return "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK";
981		case VK_BORDER_COLOR_INT_TRANSPARENT_BLACK:		return "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK";
982		case VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK:		return "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK";
983		case VK_BORDER_COLOR_INT_OPAQUE_BLACK:			return "VK_BORDER_COLOR_INT_OPAQUE_BLACK";
984		case VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE:		return "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE";
985		case VK_BORDER_COLOR_INT_OPAQUE_WHITE:			return "VK_BORDER_COLOR_INT_OPAQUE_WHITE";
986		default:										return DE_NULL;
987	}
988}
989
990const char* getDescriptorTypeName (VkDescriptorType value)
991{
992	switch (value)
993	{
994		case VK_DESCRIPTOR_TYPE_SAMPLER:					return "VK_DESCRIPTOR_TYPE_SAMPLER";
995		case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:		return "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER";
996		case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:				return "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE";
997		case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:				return "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE";
998		case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:		return "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER";
999		case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:		return "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER";
1000		case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:				return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER";
1001		case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:				return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER";
1002		case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:		return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC";
1003		case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:		return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC";
1004		case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:			return "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT";
1005		case VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT:	return "VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT";
1006		default:											return DE_NULL;
1007	}
1008}
1009
1010const char* getAttachmentLoadOpName (VkAttachmentLoadOp value)
1011{
1012	switch (value)
1013	{
1014		case VK_ATTACHMENT_LOAD_OP_LOAD:		return "VK_ATTACHMENT_LOAD_OP_LOAD";
1015		case VK_ATTACHMENT_LOAD_OP_CLEAR:		return "VK_ATTACHMENT_LOAD_OP_CLEAR";
1016		case VK_ATTACHMENT_LOAD_OP_DONT_CARE:	return "VK_ATTACHMENT_LOAD_OP_DONT_CARE";
1017		default:								return DE_NULL;
1018	}
1019}
1020
1021const char* getAttachmentStoreOpName (VkAttachmentStoreOp value)
1022{
1023	switch (value)
1024	{
1025		case VK_ATTACHMENT_STORE_OP_STORE:		return "VK_ATTACHMENT_STORE_OP_STORE";
1026		case VK_ATTACHMENT_STORE_OP_DONT_CARE:	return "VK_ATTACHMENT_STORE_OP_DONT_CARE";
1027		default:								return DE_NULL;
1028	}
1029}
1030
1031const char* getPipelineBindPointName (VkPipelineBindPoint value)
1032{
1033	switch (value)
1034	{
1035		case VK_PIPELINE_BIND_POINT_GRAPHICS:	return "VK_PIPELINE_BIND_POINT_GRAPHICS";
1036		case VK_PIPELINE_BIND_POINT_COMPUTE:	return "VK_PIPELINE_BIND_POINT_COMPUTE";
1037		default:								return DE_NULL;
1038	}
1039}
1040
1041const char* getCommandBufferLevelName (VkCommandBufferLevel value)
1042{
1043	switch (value)
1044	{
1045		case VK_COMMAND_BUFFER_LEVEL_PRIMARY:	return "VK_COMMAND_BUFFER_LEVEL_PRIMARY";
1046		case VK_COMMAND_BUFFER_LEVEL_SECONDARY:	return "VK_COMMAND_BUFFER_LEVEL_SECONDARY";
1047		default:								return DE_NULL;
1048	}
1049}
1050
1051const char* getIndexTypeName (VkIndexType value)
1052{
1053	switch (value)
1054	{
1055		case VK_INDEX_TYPE_UINT16:	return "VK_INDEX_TYPE_UINT16";
1056		case VK_INDEX_TYPE_UINT32:	return "VK_INDEX_TYPE_UINT32";
1057		default:					return DE_NULL;
1058	}
1059}
1060
1061const char* getSubpassContentsName (VkSubpassContents value)
1062{
1063	switch (value)
1064	{
1065		case VK_SUBPASS_CONTENTS_INLINE:					return "VK_SUBPASS_CONTENTS_INLINE";
1066		case VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS:	return "VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS";
1067		default:											return DE_NULL;
1068	}
1069}
1070
1071const char* getObjectTypeName (VkObjectType value)
1072{
1073	switch (value)
1074	{
1075		case VK_OBJECT_TYPE_UNKNOWN:						return "VK_OBJECT_TYPE_UNKNOWN";
1076		case VK_OBJECT_TYPE_INSTANCE:						return "VK_OBJECT_TYPE_INSTANCE";
1077		case VK_OBJECT_TYPE_PHYSICAL_DEVICE:				return "VK_OBJECT_TYPE_PHYSICAL_DEVICE";
1078		case VK_OBJECT_TYPE_DEVICE:							return "VK_OBJECT_TYPE_DEVICE";
1079		case VK_OBJECT_TYPE_QUEUE:							return "VK_OBJECT_TYPE_QUEUE";
1080		case VK_OBJECT_TYPE_SEMAPHORE:						return "VK_OBJECT_TYPE_SEMAPHORE";
1081		case VK_OBJECT_TYPE_COMMAND_BUFFER:					return "VK_OBJECT_TYPE_COMMAND_BUFFER";
1082		case VK_OBJECT_TYPE_FENCE:							return "VK_OBJECT_TYPE_FENCE";
1083		case VK_OBJECT_TYPE_DEVICE_MEMORY:					return "VK_OBJECT_TYPE_DEVICE_MEMORY";
1084		case VK_OBJECT_TYPE_BUFFER:							return "VK_OBJECT_TYPE_BUFFER";
1085		case VK_OBJECT_TYPE_IMAGE:							return "VK_OBJECT_TYPE_IMAGE";
1086		case VK_OBJECT_TYPE_EVENT:							return "VK_OBJECT_TYPE_EVENT";
1087		case VK_OBJECT_TYPE_QUERY_POOL:						return "VK_OBJECT_TYPE_QUERY_POOL";
1088		case VK_OBJECT_TYPE_BUFFER_VIEW:					return "VK_OBJECT_TYPE_BUFFER_VIEW";
1089		case VK_OBJECT_TYPE_IMAGE_VIEW:						return "VK_OBJECT_TYPE_IMAGE_VIEW";
1090		case VK_OBJECT_TYPE_SHADER_MODULE:					return "VK_OBJECT_TYPE_SHADER_MODULE";
1091		case VK_OBJECT_TYPE_PIPELINE_CACHE:					return "VK_OBJECT_TYPE_PIPELINE_CACHE";
1092		case VK_OBJECT_TYPE_PIPELINE_LAYOUT:				return "VK_OBJECT_TYPE_PIPELINE_LAYOUT";
1093		case VK_OBJECT_TYPE_RENDER_PASS:					return "VK_OBJECT_TYPE_RENDER_PASS";
1094		case VK_OBJECT_TYPE_PIPELINE:						return "VK_OBJECT_TYPE_PIPELINE";
1095		case VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT:			return "VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT";
1096		case VK_OBJECT_TYPE_SAMPLER:						return "VK_OBJECT_TYPE_SAMPLER";
1097		case VK_OBJECT_TYPE_DESCRIPTOR_POOL:				return "VK_OBJECT_TYPE_DESCRIPTOR_POOL";
1098		case VK_OBJECT_TYPE_DESCRIPTOR_SET:					return "VK_OBJECT_TYPE_DESCRIPTOR_SET";
1099		case VK_OBJECT_TYPE_FRAMEBUFFER:					return "VK_OBJECT_TYPE_FRAMEBUFFER";
1100		case VK_OBJECT_TYPE_COMMAND_POOL:					return "VK_OBJECT_TYPE_COMMAND_POOL";
1101		case VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION:		return "VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION";
1102		case VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE:		return "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE";
1103		case VK_OBJECT_TYPE_SURFACE_KHR:					return "VK_OBJECT_TYPE_SURFACE_KHR";
1104		case VK_OBJECT_TYPE_SWAPCHAIN_KHR:					return "VK_OBJECT_TYPE_SWAPCHAIN_KHR";
1105		case VK_OBJECT_TYPE_DISPLAY_KHR:					return "VK_OBJECT_TYPE_DISPLAY_KHR";
1106		case VK_OBJECT_TYPE_DISPLAY_MODE_KHR:				return "VK_OBJECT_TYPE_DISPLAY_MODE_KHR";
1107		case VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT:		return "VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT";
1108		case VK_OBJECT_TYPE_OBJECT_TABLE_NVX:				return "VK_OBJECT_TYPE_OBJECT_TABLE_NVX";
1109		case VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX:	return "VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX";
1110		case VK_OBJECT_TYPE_VALIDATION_CACHE_EXT:			return "VK_OBJECT_TYPE_VALIDATION_CACHE_EXT";
1111		default:											return DE_NULL;
1112	}
1113}
1114
1115const char* getPointClippingBehaviorName (VkPointClippingBehavior value)
1116{
1117	switch (value)
1118	{
1119		case VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES:		return "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES";
1120		case VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY:	return "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY";
1121		default:												return DE_NULL;
1122	}
1123}
1124
1125const char* getTessellationDomainOriginName (VkTessellationDomainOrigin value)
1126{
1127	switch (value)
1128	{
1129		case VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT:	return "VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT";
1130		case VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT:	return "VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT";
1131		default:										return DE_NULL;
1132	}
1133}
1134
1135const char* getSamplerYcbcrModelConversionName (VkSamplerYcbcrModelConversion value)
1136{
1137	switch (value)
1138	{
1139		case VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY:	return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY";
1140		case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY:	return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY";
1141		case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709:		return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709";
1142		case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601:		return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601";
1143		case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020:		return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020";
1144		default:												return DE_NULL;
1145	}
1146}
1147
1148const char* getSamplerYcbcrRangeName (VkSamplerYcbcrRange value)
1149{
1150	switch (value)
1151	{
1152		case VK_SAMPLER_YCBCR_RANGE_ITU_FULL:	return "VK_SAMPLER_YCBCR_RANGE_ITU_FULL";
1153		case VK_SAMPLER_YCBCR_RANGE_ITU_NARROW:	return "VK_SAMPLER_YCBCR_RANGE_ITU_NARROW";
1154		default:								return DE_NULL;
1155	}
1156}
1157
1158const char* getChromaLocationName (VkChromaLocation value)
1159{
1160	switch (value)
1161	{
1162		case VK_CHROMA_LOCATION_COSITED_EVEN:	return "VK_CHROMA_LOCATION_COSITED_EVEN";
1163		case VK_CHROMA_LOCATION_MIDPOINT:		return "VK_CHROMA_LOCATION_MIDPOINT";
1164		default:								return DE_NULL;
1165	}
1166}
1167
1168const char* getDescriptorUpdateTemplateTypeName (VkDescriptorUpdateTemplateType value)
1169{
1170	switch (value)
1171	{
1172		case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET:			return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET";
1173		case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR:	return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR";
1174		default:														return DE_NULL;
1175	}
1176}
1177
1178const char* getColorSpaceKHRName (VkColorSpaceKHR value)
1179{
1180	switch (value)
1181	{
1182		case VK_COLOR_SPACE_SRGB_NONLINEAR_KHR:				return "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR";
1183		case VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT:		return "VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT";
1184		case VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT:		return "VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT";
1185		case VK_COLOR_SPACE_DCI_P3_LINEAR_EXT:				return "VK_COLOR_SPACE_DCI_P3_LINEAR_EXT";
1186		case VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT:			return "VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT";
1187		case VK_COLOR_SPACE_BT709_LINEAR_EXT:				return "VK_COLOR_SPACE_BT709_LINEAR_EXT";
1188		case VK_COLOR_SPACE_BT709_NONLINEAR_EXT:			return "VK_COLOR_SPACE_BT709_NONLINEAR_EXT";
1189		case VK_COLOR_SPACE_BT2020_LINEAR_EXT:				return "VK_COLOR_SPACE_BT2020_LINEAR_EXT";
1190		case VK_COLOR_SPACE_HDR10_ST2084_EXT:				return "VK_COLOR_SPACE_HDR10_ST2084_EXT";
1191		case VK_COLOR_SPACE_DOLBYVISION_EXT:				return "VK_COLOR_SPACE_DOLBYVISION_EXT";
1192		case VK_COLOR_SPACE_HDR10_HLG_EXT:					return "VK_COLOR_SPACE_HDR10_HLG_EXT";
1193		case VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT:			return "VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT";
1194		case VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT:			return "VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT";
1195		case VK_COLOR_SPACE_PASS_THROUGH_EXT:				return "VK_COLOR_SPACE_PASS_THROUGH_EXT";
1196		case VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT:	return "VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT";
1197		default:											return DE_NULL;
1198	}
1199}
1200
1201const char* getPresentModeKHRName (VkPresentModeKHR value)
1202{
1203	switch (value)
1204	{
1205		case VK_PRESENT_MODE_IMMEDIATE_KHR:					return "VK_PRESENT_MODE_IMMEDIATE_KHR";
1206		case VK_PRESENT_MODE_MAILBOX_KHR:					return "VK_PRESENT_MODE_MAILBOX_KHR";
1207		case VK_PRESENT_MODE_FIFO_KHR:						return "VK_PRESENT_MODE_FIFO_KHR";
1208		case VK_PRESENT_MODE_FIFO_RELAXED_KHR:				return "VK_PRESENT_MODE_FIFO_RELAXED_KHR";
1209		case VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR:		return "VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR";
1210		case VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR:	return "VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR";
1211		default:											return DE_NULL;
1212	}
1213}
1214
1215const char* getDebugReportObjectTypeEXTName (VkDebugReportObjectTypeEXT value)
1216{
1217	switch (value)
1218	{
1219		case VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT";
1220		case VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT";
1221		case VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT:				return "VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT";
1222		case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT";
1223		case VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT:							return "VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT";
1224		case VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT";
1225		case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT:				return "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT";
1226		case VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT:							return "VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT";
1227		case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT";
1228		case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT";
1229		case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT:							return "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT";
1230		case VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT:							return "VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT";
1231		case VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT";
1232		case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT";
1233		case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT";
1234		case VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT";
1235		case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT:				return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT";
1236		case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT:				return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT";
1237		case VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT";
1238		case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT";
1239		case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT:			return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT";
1240		case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT";
1241		case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT:				return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT";
1242		case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT:				return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT";
1243		case VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT";
1244		case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT";
1245		case VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT";
1246		case VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT";
1247		case VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT:		return "VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT";
1248		case VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT";
1249		case VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT:				return "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT";
1250		case VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT:				return "VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT";
1251		case VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT:	return "VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT";
1252		case VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT:				return "VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT";
1253		case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT:		return "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT";
1254		case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT:	return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT";
1255		default:															return DE_NULL;
1256	}
1257}
1258
1259const char* getRasterizationOrderAMDName (VkRasterizationOrderAMD value)
1260{
1261	switch (value)
1262	{
1263		case VK_RASTERIZATION_ORDER_STRICT_AMD:		return "VK_RASTERIZATION_ORDER_STRICT_AMD";
1264		case VK_RASTERIZATION_ORDER_RELAXED_AMD:	return "VK_RASTERIZATION_ORDER_RELAXED_AMD";
1265		default:									return DE_NULL;
1266	}
1267}
1268
1269const char* getValidationCheckEXTName (VkValidationCheckEXT value)
1270{
1271	switch (value)
1272	{
1273		case VK_VALIDATION_CHECK_ALL_EXT:		return "VK_VALIDATION_CHECK_ALL_EXT";
1274		case VK_VALIDATION_CHECK_SHADERS_EXT:	return "VK_VALIDATION_CHECK_SHADERS_EXT";
1275		default:								return DE_NULL;
1276	}
1277}
1278
1279const char* getIndirectCommandsTokenTypeNVXName (VkIndirectCommandsTokenTypeNVX value)
1280{
1281	switch (value)
1282	{
1283		case VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX:			return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX";
1284		case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX:	return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX";
1285		case VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX:		return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX";
1286		case VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX:		return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX";
1287		case VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX:		return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX";
1288		case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX:		return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX";
1289		case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX:				return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX";
1290		case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX:			return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX";
1291		default:													return DE_NULL;
1292	}
1293}
1294
1295const char* getObjectEntryTypeNVXName (VkObjectEntryTypeNVX value)
1296{
1297	switch (value)
1298	{
1299		case VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX:	return "VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX";
1300		case VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX:			return "VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX";
1301		case VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX:		return "VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX";
1302		case VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX:	return "VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX";
1303		case VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX:	return "VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX";
1304		default:										return DE_NULL;
1305	}
1306}
1307
1308const char* getDisplayPowerStateEXTName (VkDisplayPowerStateEXT value)
1309{
1310	switch (value)
1311	{
1312		case VK_DISPLAY_POWER_STATE_OFF_EXT:		return "VK_DISPLAY_POWER_STATE_OFF_EXT";
1313		case VK_DISPLAY_POWER_STATE_SUSPEND_EXT:	return "VK_DISPLAY_POWER_STATE_SUSPEND_EXT";
1314		case VK_DISPLAY_POWER_STATE_ON_EXT:			return "VK_DISPLAY_POWER_STATE_ON_EXT";
1315		default:									return DE_NULL;
1316	}
1317}
1318
1319const char* getDeviceEventTypeEXTName (VkDeviceEventTypeEXT value)
1320{
1321	switch (value)
1322	{
1323		case VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT:	return "VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT";
1324		default:										return DE_NULL;
1325	}
1326}
1327
1328const char* getDisplayEventTypeEXTName (VkDisplayEventTypeEXT value)
1329{
1330	switch (value)
1331	{
1332		case VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT:	return "VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT";
1333		default:										return DE_NULL;
1334	}
1335}
1336
1337const char* getViewportCoordinateSwizzleNVName (VkViewportCoordinateSwizzleNV value)
1338{
1339	switch (value)
1340	{
1341		case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV:	return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV";
1342		case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV:	return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV";
1343		case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV:	return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV";
1344		case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV:	return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV";
1345		case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV:	return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV";
1346		case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV:	return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV";
1347		case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV:	return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV";
1348		case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV:	return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV";
1349		default:											return DE_NULL;
1350	}
1351}
1352
1353const char* getDiscardRectangleModeEXTName (VkDiscardRectangleModeEXT value)
1354{
1355	switch (value)
1356	{
1357		case VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT:	return "VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT";
1358		case VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT:	return "VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT";
1359		default:										return DE_NULL;
1360	}
1361}
1362
1363const char* getSamplerReductionModeEXTName (VkSamplerReductionModeEXT value)
1364{
1365	switch (value)
1366	{
1367		case VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT:	return "VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT";
1368		case VK_SAMPLER_REDUCTION_MODE_MIN_EXT:					return "VK_SAMPLER_REDUCTION_MODE_MIN_EXT";
1369		case VK_SAMPLER_REDUCTION_MODE_MAX_EXT:					return "VK_SAMPLER_REDUCTION_MODE_MAX_EXT";
1370		default:												return DE_NULL;
1371	}
1372}
1373
1374const char* getBlendOverlapEXTName (VkBlendOverlapEXT value)
1375{
1376	switch (value)
1377	{
1378		case VK_BLEND_OVERLAP_UNCORRELATED_EXT:	return "VK_BLEND_OVERLAP_UNCORRELATED_EXT";
1379		case VK_BLEND_OVERLAP_DISJOINT_EXT:		return "VK_BLEND_OVERLAP_DISJOINT_EXT";
1380		case VK_BLEND_OVERLAP_CONJOINT_EXT:		return "VK_BLEND_OVERLAP_CONJOINT_EXT";
1381		default:								return DE_NULL;
1382	}
1383}
1384
1385const char* getCoverageModulationModeNVName (VkCoverageModulationModeNV value)
1386{
1387	switch (value)
1388	{
1389		case VK_COVERAGE_MODULATION_MODE_NONE_NV:	return "VK_COVERAGE_MODULATION_MODE_NONE_NV";
1390		case VK_COVERAGE_MODULATION_MODE_RGB_NV:	return "VK_COVERAGE_MODULATION_MODE_RGB_NV";
1391		case VK_COVERAGE_MODULATION_MODE_ALPHA_NV:	return "VK_COVERAGE_MODULATION_MODE_ALPHA_NV";
1392		case VK_COVERAGE_MODULATION_MODE_RGBA_NV:	return "VK_COVERAGE_MODULATION_MODE_RGBA_NV";
1393		default:									return DE_NULL;
1394	}
1395}
1396
1397const char* getValidationCacheHeaderVersionEXTName (VkValidationCacheHeaderVersionEXT value)
1398{
1399	switch (value)
1400	{
1401		case VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT:	return "VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT";
1402		default:											return DE_NULL;
1403	}
1404}
1405
1406tcu::Format::Bitfield<32> getFormatFeatureFlagsStr (VkFormatFeatureFlags value)
1407{
1408	static const tcu::Format::BitDesc s_desc[] =
1409	{
1410		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,															"VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"),
1411		tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,															"VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"),
1412		tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,													"VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"),
1413		tcu::Format::BitDesc(VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,													"VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"),
1414		tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,													"VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"),
1415		tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,												"VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"),
1416		tcu::Format::BitDesc(VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,															"VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"),
1417		tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,														"VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"),
1418		tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,													"VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"),
1419		tcu::Format::BitDesc(VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,												"VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"),
1420		tcu::Format::BitDesc(VK_FORMAT_FEATURE_BLIT_SRC_BIT,																"VK_FORMAT_FEATURE_BLIT_SRC_BIT"),
1421		tcu::Format::BitDesc(VK_FORMAT_FEATURE_BLIT_DST_BIT,																"VK_FORMAT_FEATURE_BLIT_DST_BIT"),
1422		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,												"VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"),
1423		tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,															"VK_FORMAT_FEATURE_TRANSFER_SRC_BIT"),
1424		tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_DST_BIT,															"VK_FORMAT_FEATURE_TRANSFER_DST_BIT"),
1425		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT,											"VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT"),
1426		tcu::Format::BitDesc(VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,													"VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT"),
1427		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,							"VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"),
1428		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,			"VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"),
1429		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,			"VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"),
1430		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,	"VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"),
1431		tcu::Format::BitDesc(VK_FORMAT_FEATURE_DISJOINT_BIT,																"VK_FORMAT_FEATURE_DISJOINT_BIT"),
1432		tcu::Format::BitDesc(VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,													"VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT"),
1433		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,											"VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"),
1434	};
1435	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1436}
1437
1438tcu::Format::Bitfield<32> getImageUsageFlagsStr (VkImageUsageFlags value)
1439{
1440	static const tcu::Format::BitDesc s_desc[] =
1441	{
1442		tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_SRC_BIT,				"VK_IMAGE_USAGE_TRANSFER_SRC_BIT"),
1443		tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_DST_BIT,				"VK_IMAGE_USAGE_TRANSFER_DST_BIT"),
1444		tcu::Format::BitDesc(VK_IMAGE_USAGE_SAMPLED_BIT,					"VK_IMAGE_USAGE_SAMPLED_BIT"),
1445		tcu::Format::BitDesc(VK_IMAGE_USAGE_STORAGE_BIT,					"VK_IMAGE_USAGE_STORAGE_BIT"),
1446		tcu::Format::BitDesc(VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,			"VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"),
1447		tcu::Format::BitDesc(VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,	"VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"),
1448		tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,		"VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"),
1449		tcu::Format::BitDesc(VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,			"VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"),
1450	};
1451	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1452}
1453
1454tcu::Format::Bitfield<32> getImageCreateFlagsStr (VkImageCreateFlags value)
1455{
1456	static const tcu::Format::BitDesc s_desc[] =
1457	{
1458		tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_BINDING_BIT,						"VK_IMAGE_CREATE_SPARSE_BINDING_BIT"),
1459		tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,						"VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"),
1460		tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,						"VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"),
1461		tcu::Format::BitDesc(VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,						"VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"),
1462		tcu::Format::BitDesc(VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,						"VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"),
1463		tcu::Format::BitDesc(VK_IMAGE_CREATE_ALIAS_BIT,									"VK_IMAGE_CREATE_ALIAS_BIT"),
1464		tcu::Format::BitDesc(VK_IMAGE_CREATE_BIND_SFR_BIT,								"VK_IMAGE_CREATE_BIND_SFR_BIT"),
1465		tcu::Format::BitDesc(VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,					"VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT"),
1466		tcu::Format::BitDesc(VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,			"VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"),
1467		tcu::Format::BitDesc(VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,						"VK_IMAGE_CREATE_EXTENDED_USAGE_BIT"),
1468		tcu::Format::BitDesc(VK_IMAGE_CREATE_PROTECTED_BIT,								"VK_IMAGE_CREATE_PROTECTED_BIT"),
1469		tcu::Format::BitDesc(VK_IMAGE_CREATE_DISJOINT_BIT,								"VK_IMAGE_CREATE_DISJOINT_BIT"),
1470		tcu::Format::BitDesc(VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT,	"VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"),
1471	};
1472	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1473}
1474
1475tcu::Format::Bitfield<32> getSampleCountFlagsStr (VkSampleCountFlags value)
1476{
1477	static const tcu::Format::BitDesc s_desc[] =
1478	{
1479		tcu::Format::BitDesc(VK_SAMPLE_COUNT_1_BIT,		"VK_SAMPLE_COUNT_1_BIT"),
1480		tcu::Format::BitDesc(VK_SAMPLE_COUNT_2_BIT,		"VK_SAMPLE_COUNT_2_BIT"),
1481		tcu::Format::BitDesc(VK_SAMPLE_COUNT_4_BIT,		"VK_SAMPLE_COUNT_4_BIT"),
1482		tcu::Format::BitDesc(VK_SAMPLE_COUNT_8_BIT,		"VK_SAMPLE_COUNT_8_BIT"),
1483		tcu::Format::BitDesc(VK_SAMPLE_COUNT_16_BIT,	"VK_SAMPLE_COUNT_16_BIT"),
1484		tcu::Format::BitDesc(VK_SAMPLE_COUNT_32_BIT,	"VK_SAMPLE_COUNT_32_BIT"),
1485		tcu::Format::BitDesc(VK_SAMPLE_COUNT_64_BIT,	"VK_SAMPLE_COUNT_64_BIT"),
1486	};
1487	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1488}
1489
1490tcu::Format::Bitfield<32> getQueueFlagsStr (VkQueueFlags value)
1491{
1492	static const tcu::Format::BitDesc s_desc[] =
1493	{
1494		tcu::Format::BitDesc(VK_QUEUE_GRAPHICS_BIT,			"VK_QUEUE_GRAPHICS_BIT"),
1495		tcu::Format::BitDesc(VK_QUEUE_COMPUTE_BIT,			"VK_QUEUE_COMPUTE_BIT"),
1496		tcu::Format::BitDesc(VK_QUEUE_TRANSFER_BIT,			"VK_QUEUE_TRANSFER_BIT"),
1497		tcu::Format::BitDesc(VK_QUEUE_SPARSE_BINDING_BIT,	"VK_QUEUE_SPARSE_BINDING_BIT"),
1498		tcu::Format::BitDesc(VK_QUEUE_PROTECTED_BIT,		"VK_QUEUE_PROTECTED_BIT"),
1499	};
1500	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1501}
1502
1503tcu::Format::Bitfield<32> getMemoryPropertyFlagsStr (VkMemoryPropertyFlags value)
1504{
1505	static const tcu::Format::BitDesc s_desc[] =
1506	{
1507		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,		"VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"),
1508		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,		"VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"),
1509		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,		"VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"),
1510		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_CACHED_BIT,		"VK_MEMORY_PROPERTY_HOST_CACHED_BIT"),
1511		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT,	"VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"),
1512		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_PROTECTED_BIT,			"VK_MEMORY_PROPERTY_PROTECTED_BIT"),
1513	};
1514	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1515}
1516
1517tcu::Format::Bitfield<32> getMemoryHeapFlagsStr (VkMemoryHeapFlags value)
1518{
1519	static const tcu::Format::BitDesc s_desc[] =
1520	{
1521		tcu::Format::BitDesc(VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,	"VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"),
1522		tcu::Format::BitDesc(VK_MEMORY_HEAP_MULTI_INSTANCE_BIT,	"VK_MEMORY_HEAP_MULTI_INSTANCE_BIT"),
1523	};
1524	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1525}
1526
1527tcu::Format::Bitfield<32> getDeviceQueueCreateFlagsStr (VkDeviceQueueCreateFlags value)
1528{
1529	static const tcu::Format::BitDesc s_desc[] =
1530	{
1531		tcu::Format::BitDesc(VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT,	"VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT"),
1532	};
1533	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1534}
1535
1536tcu::Format::Bitfield<32> getPipelineStageFlagsStr (VkPipelineStageFlags value)
1537{
1538	static const tcu::Format::BitDesc s_desc[] =
1539	{
1540		tcu::Format::BitDesc(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,						"VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"),
1541		tcu::Format::BitDesc(VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,					"VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"),
1542		tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,					"VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"),
1543		tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,					"VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"),
1544		tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,		"VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"),
1545		tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,	"VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"),
1546		tcu::Format::BitDesc(VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,					"VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"),
1547		tcu::Format::BitDesc(VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,					"VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"),
1548		tcu::Format::BitDesc(VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,			"VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"),
1549		tcu::Format::BitDesc(VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,				"VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"),
1550		tcu::Format::BitDesc(VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,			"VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"),
1551		tcu::Format::BitDesc(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,					"VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"),
1552		tcu::Format::BitDesc(VK_PIPELINE_STAGE_TRANSFER_BIT,						"VK_PIPELINE_STAGE_TRANSFER_BIT"),
1553		tcu::Format::BitDesc(VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,					"VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT"),
1554		tcu::Format::BitDesc(VK_PIPELINE_STAGE_HOST_BIT,							"VK_PIPELINE_STAGE_HOST_BIT"),
1555		tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,					"VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"),
1556		tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,					"VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"),
1557		tcu::Format::BitDesc(VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX,				"VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX"),
1558		tcu::Format::BitDesc(VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT,		"VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT"),
1559	};
1560	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1561}
1562
1563tcu::Format::Bitfield<32> getImageAspectFlagsStr (VkImageAspectFlags value)
1564{
1565	static const tcu::Format::BitDesc s_desc[] =
1566	{
1567		tcu::Format::BitDesc(VK_IMAGE_ASPECT_COLOR_BIT,		"VK_IMAGE_ASPECT_COLOR_BIT"),
1568		tcu::Format::BitDesc(VK_IMAGE_ASPECT_DEPTH_BIT,		"VK_IMAGE_ASPECT_DEPTH_BIT"),
1569		tcu::Format::BitDesc(VK_IMAGE_ASPECT_STENCIL_BIT,	"VK_IMAGE_ASPECT_STENCIL_BIT"),
1570		tcu::Format::BitDesc(VK_IMAGE_ASPECT_METADATA_BIT,	"VK_IMAGE_ASPECT_METADATA_BIT"),
1571		tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_0_BIT,	"VK_IMAGE_ASPECT_PLANE_0_BIT"),
1572		tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_1_BIT,	"VK_IMAGE_ASPECT_PLANE_1_BIT"),
1573		tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_2_BIT,	"VK_IMAGE_ASPECT_PLANE_2_BIT"),
1574	};
1575	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1576}
1577
1578tcu::Format::Bitfield<32> getSparseImageFormatFlagsStr (VkSparseImageFormatFlags value)
1579{
1580	static const tcu::Format::BitDesc s_desc[] =
1581	{
1582		tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,			"VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT"),
1583		tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,		"VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT"),
1584		tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT,	"VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT"),
1585	};
1586	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1587}
1588
1589tcu::Format::Bitfield<32> getSparseMemoryBindFlagsStr (VkSparseMemoryBindFlags value)
1590{
1591	static const tcu::Format::BitDesc s_desc[] =
1592	{
1593		tcu::Format::BitDesc(VK_SPARSE_MEMORY_BIND_METADATA_BIT,	"VK_SPARSE_MEMORY_BIND_METADATA_BIT"),
1594	};
1595	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1596}
1597
1598tcu::Format::Bitfield<32> getFenceCreateFlagsStr (VkFenceCreateFlags value)
1599{
1600	static const tcu::Format::BitDesc s_desc[] =
1601	{
1602		tcu::Format::BitDesc(VK_FENCE_CREATE_SIGNALED_BIT,	"VK_FENCE_CREATE_SIGNALED_BIT"),
1603	};
1604	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1605}
1606
1607tcu::Format::Bitfield<32> getQueryPipelineStatisticFlagsStr (VkQueryPipelineStatisticFlags value)
1608{
1609	static const tcu::Format::BitDesc s_desc[] =
1610	{
1611		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,						"VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT"),
1612		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,						"VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT"),
1613		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,						"VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT"),
1614		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,					"VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT"),
1615		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,					"VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT"),
1616		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,							"VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT"),
1617		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,							"VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT"),
1618		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,					"VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT"),
1619		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,			"VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT"),
1620		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,	"VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT"),
1621		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT,					"VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT"),
1622	};
1623	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1624}
1625
1626tcu::Format::Bitfield<32> getQueryResultFlagsStr (VkQueryResultFlags value)
1627{
1628	static const tcu::Format::BitDesc s_desc[] =
1629	{
1630		tcu::Format::BitDesc(VK_QUERY_RESULT_64_BIT,				"VK_QUERY_RESULT_64_BIT"),
1631		tcu::Format::BitDesc(VK_QUERY_RESULT_WAIT_BIT,				"VK_QUERY_RESULT_WAIT_BIT"),
1632		tcu::Format::BitDesc(VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,	"VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"),
1633		tcu::Format::BitDesc(VK_QUERY_RESULT_PARTIAL_BIT,			"VK_QUERY_RESULT_PARTIAL_BIT"),
1634	};
1635	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1636}
1637
1638tcu::Format::Bitfield<32> getBufferCreateFlagsStr (VkBufferCreateFlags value)
1639{
1640	static const tcu::Format::BitDesc s_desc[] =
1641	{
1642		tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_BINDING_BIT,	"VK_BUFFER_CREATE_SPARSE_BINDING_BIT"),
1643		tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,	"VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"),
1644		tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_ALIASED_BIT,	"VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"),
1645		tcu::Format::BitDesc(VK_BUFFER_CREATE_PROTECTED_BIT,		"VK_BUFFER_CREATE_PROTECTED_BIT"),
1646	};
1647	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1648}
1649
1650tcu::Format::Bitfield<32> getBufferUsageFlagsStr (VkBufferUsageFlags value)
1651{
1652	static const tcu::Format::BitDesc s_desc[] =
1653	{
1654		tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_SRC_BIT,				"VK_BUFFER_USAGE_TRANSFER_SRC_BIT"),
1655		tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_DST_BIT,				"VK_BUFFER_USAGE_TRANSFER_DST_BIT"),
1656		tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,		"VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"),
1657		tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,		"VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"),
1658		tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,			"VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"),
1659		tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,			"VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"),
1660		tcu::Format::BitDesc(VK_BUFFER_USAGE_INDEX_BUFFER_BIT,				"VK_BUFFER_USAGE_INDEX_BUFFER_BIT"),
1661		tcu::Format::BitDesc(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,				"VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"),
1662		tcu::Format::BitDesc(VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT,			"VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"),
1663		tcu::Format::BitDesc(VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT,	"VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT"),
1664	};
1665	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1666}
1667
1668tcu::Format::Bitfield<32> getPipelineCreateFlagsStr (VkPipelineCreateFlags value)
1669{
1670	static const tcu::Format::BitDesc s_desc[] =
1671	{
1672		tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,			"VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"),
1673		tcu::Format::BitDesc(VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,				"VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"),
1674		tcu::Format::BitDesc(VK_PIPELINE_CREATE_DERIVATIVE_BIT,						"VK_PIPELINE_CREATE_DERIVATIVE_BIT"),
1675		tcu::Format::BitDesc(VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,	"VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"),
1676		tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISPATCH_BASE,						"VK_PIPELINE_CREATE_DISPATCH_BASE"),
1677	};
1678	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1679}
1680
1681tcu::Format::Bitfield<32> getShaderStageFlagsStr (VkShaderStageFlags value)
1682{
1683	static const tcu::Format::BitDesc s_desc[] =
1684	{
1685		tcu::Format::BitDesc(VK_SHADER_STAGE_VERTEX_BIT,					"VK_SHADER_STAGE_VERTEX_BIT"),
1686		tcu::Format::BitDesc(VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,		"VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"),
1687		tcu::Format::BitDesc(VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,	"VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"),
1688		tcu::Format::BitDesc(VK_SHADER_STAGE_GEOMETRY_BIT,					"VK_SHADER_STAGE_GEOMETRY_BIT"),
1689		tcu::Format::BitDesc(VK_SHADER_STAGE_FRAGMENT_BIT,					"VK_SHADER_STAGE_FRAGMENT_BIT"),
1690		tcu::Format::BitDesc(VK_SHADER_STAGE_COMPUTE_BIT,					"VK_SHADER_STAGE_COMPUTE_BIT"),
1691		tcu::Format::BitDesc(VK_SHADER_STAGE_ALL_GRAPHICS,					"VK_SHADER_STAGE_ALL_GRAPHICS"),
1692		tcu::Format::BitDesc(VK_SHADER_STAGE_ALL,							"VK_SHADER_STAGE_ALL"),
1693	};
1694	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1695}
1696
1697tcu::Format::Bitfield<32> getCullModeFlagsStr (VkCullModeFlags value)
1698{
1699	static const tcu::Format::BitDesc s_desc[] =
1700	{
1701		tcu::Format::BitDesc(VK_CULL_MODE_NONE,				"VK_CULL_MODE_NONE"),
1702		tcu::Format::BitDesc(VK_CULL_MODE_FRONT_BIT,		"VK_CULL_MODE_FRONT_BIT"),
1703		tcu::Format::BitDesc(VK_CULL_MODE_BACK_BIT,			"VK_CULL_MODE_BACK_BIT"),
1704		tcu::Format::BitDesc(VK_CULL_MODE_FRONT_AND_BACK,	"VK_CULL_MODE_FRONT_AND_BACK"),
1705	};
1706	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1707}
1708
1709tcu::Format::Bitfield<32> getColorComponentFlagsStr (VkColorComponentFlags value)
1710{
1711	static const tcu::Format::BitDesc s_desc[] =
1712	{
1713		tcu::Format::BitDesc(VK_COLOR_COMPONENT_R_BIT,	"VK_COLOR_COMPONENT_R_BIT"),
1714		tcu::Format::BitDesc(VK_COLOR_COMPONENT_G_BIT,	"VK_COLOR_COMPONENT_G_BIT"),
1715		tcu::Format::BitDesc(VK_COLOR_COMPONENT_B_BIT,	"VK_COLOR_COMPONENT_B_BIT"),
1716		tcu::Format::BitDesc(VK_COLOR_COMPONENT_A_BIT,	"VK_COLOR_COMPONENT_A_BIT"),
1717	};
1718	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1719}
1720
1721tcu::Format::Bitfield<32> getDescriptorSetLayoutCreateFlagsStr (VkDescriptorSetLayoutCreateFlags value)
1722{
1723	static const tcu::Format::BitDesc s_desc[] =
1724	{
1725		tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR,			"VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR"),
1726		tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT,	"VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT"),
1727	};
1728	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1729}
1730
1731tcu::Format::Bitfield<32> getDescriptorPoolCreateFlagsStr (VkDescriptorPoolCreateFlags value)
1732{
1733	static const tcu::Format::BitDesc s_desc[] =
1734	{
1735		tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT,		"VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"),
1736		tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT,	"VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT"),
1737	};
1738	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1739}
1740
1741tcu::Format::Bitfield<32> getAttachmentDescriptionFlagsStr (VkAttachmentDescriptionFlags value)
1742{
1743	static const tcu::Format::BitDesc s_desc[] =
1744	{
1745		tcu::Format::BitDesc(VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT,	"VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"),
1746	};
1747	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1748}
1749
1750tcu::Format::Bitfield<32> getSubpassDescriptionFlagsStr (VkSubpassDescriptionFlags value)
1751{
1752	static const tcu::Format::BitDesc s_desc[] =
1753	{
1754		tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,		"VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX"),
1755		tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX,	"VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX"),
1756	};
1757	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1758}
1759
1760tcu::Format::Bitfield<32> getAccessFlagsStr (VkAccessFlags value)
1761{
1762	static const tcu::Format::BitDesc s_desc[] =
1763	{
1764		tcu::Format::BitDesc(VK_ACCESS_INDIRECT_COMMAND_READ_BIT,					"VK_ACCESS_INDIRECT_COMMAND_READ_BIT"),
1765		tcu::Format::BitDesc(VK_ACCESS_INDEX_READ_BIT,								"VK_ACCESS_INDEX_READ_BIT"),
1766		tcu::Format::BitDesc(VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,					"VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"),
1767		tcu::Format::BitDesc(VK_ACCESS_UNIFORM_READ_BIT,							"VK_ACCESS_UNIFORM_READ_BIT"),
1768		tcu::Format::BitDesc(VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,					"VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"),
1769		tcu::Format::BitDesc(VK_ACCESS_SHADER_READ_BIT,								"VK_ACCESS_SHADER_READ_BIT"),
1770		tcu::Format::BitDesc(VK_ACCESS_SHADER_WRITE_BIT,							"VK_ACCESS_SHADER_WRITE_BIT"),
1771		tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,					"VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"),
1772		tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,					"VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"),
1773		tcu::Format::BitDesc(VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,			"VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"),
1774		tcu::Format::BitDesc(VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,			"VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"),
1775		tcu::Format::BitDesc(VK_ACCESS_TRANSFER_READ_BIT,							"VK_ACCESS_TRANSFER_READ_BIT"),
1776		tcu::Format::BitDesc(VK_ACCESS_TRANSFER_WRITE_BIT,							"VK_ACCESS_TRANSFER_WRITE_BIT"),
1777		tcu::Format::BitDesc(VK_ACCESS_HOST_READ_BIT,								"VK_ACCESS_HOST_READ_BIT"),
1778		tcu::Format::BitDesc(VK_ACCESS_HOST_WRITE_BIT,								"VK_ACCESS_HOST_WRITE_BIT"),
1779		tcu::Format::BitDesc(VK_ACCESS_MEMORY_READ_BIT,								"VK_ACCESS_MEMORY_READ_BIT"),
1780		tcu::Format::BitDesc(VK_ACCESS_MEMORY_WRITE_BIT,							"VK_ACCESS_MEMORY_WRITE_BIT"),
1781		tcu::Format::BitDesc(VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT,			"VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT"),
1782		tcu::Format::BitDesc(VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX,				"VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX"),
1783		tcu::Format::BitDesc(VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX,				"VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX"),
1784		tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT,	"VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"),
1785	};
1786	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1787}
1788
1789tcu::Format::Bitfield<32> getDependencyFlagsStr (VkDependencyFlags value)
1790{
1791	static const tcu::Format::BitDesc s_desc[] =
1792	{
1793		tcu::Format::BitDesc(VK_DEPENDENCY_BY_REGION_BIT,		"VK_DEPENDENCY_BY_REGION_BIT"),
1794		tcu::Format::BitDesc(VK_DEPENDENCY_DEVICE_GROUP_BIT,	"VK_DEPENDENCY_DEVICE_GROUP_BIT"),
1795		tcu::Format::BitDesc(VK_DEPENDENCY_VIEW_LOCAL_BIT,		"VK_DEPENDENCY_VIEW_LOCAL_BIT"),
1796	};
1797	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1798}
1799
1800tcu::Format::Bitfield<32> getCommandPoolCreateFlagsStr (VkCommandPoolCreateFlags value)
1801{
1802	static const tcu::Format::BitDesc s_desc[] =
1803	{
1804		tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,				"VK_COMMAND_POOL_CREATE_TRANSIENT_BIT"),
1805		tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT,	"VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"),
1806		tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_PROTECTED_BIT,				"VK_COMMAND_POOL_CREATE_PROTECTED_BIT"),
1807	};
1808	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1809}
1810
1811tcu::Format::Bitfield<32> getCommandPoolResetFlagsStr (VkCommandPoolResetFlags value)
1812{
1813	static const tcu::Format::BitDesc s_desc[] =
1814	{
1815		tcu::Format::BitDesc(VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT,	"VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"),
1816	};
1817	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1818}
1819
1820tcu::Format::Bitfield<32> getCommandBufferUsageFlagsStr (VkCommandBufferUsageFlags value)
1821{
1822	static const tcu::Format::BitDesc s_desc[] =
1823	{
1824		tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,		"VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"),
1825		tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,	"VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"),
1826		tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT,		"VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"),
1827	};
1828	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1829}
1830
1831tcu::Format::Bitfield<32> getQueryControlFlagsStr (VkQueryControlFlags value)
1832{
1833	static const tcu::Format::BitDesc s_desc[] =
1834	{
1835		tcu::Format::BitDesc(VK_QUERY_CONTROL_PRECISE_BIT,	"VK_QUERY_CONTROL_PRECISE_BIT"),
1836	};
1837	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1838}
1839
1840tcu::Format::Bitfield<32> getCommandBufferResetFlagsStr (VkCommandBufferResetFlags value)
1841{
1842	static const tcu::Format::BitDesc s_desc[] =
1843	{
1844		tcu::Format::BitDesc(VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT,	"VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT"),
1845	};
1846	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1847}
1848
1849tcu::Format::Bitfield<32> getStencilFaceFlagsStr (VkStencilFaceFlags value)
1850{
1851	static const tcu::Format::BitDesc s_desc[] =
1852	{
1853		tcu::Format::BitDesc(VK_STENCIL_FACE_FRONT_BIT,	"VK_STENCIL_FACE_FRONT_BIT"),
1854		tcu::Format::BitDesc(VK_STENCIL_FACE_BACK_BIT,	"VK_STENCIL_FACE_BACK_BIT"),
1855		tcu::Format::BitDesc(VK_STENCIL_FRONT_AND_BACK,	"VK_STENCIL_FRONT_AND_BACK"),
1856	};
1857	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1858}
1859
1860tcu::Format::Bitfield<32> getSubgroupFeatureFlagsStr (VkSubgroupFeatureFlags value)
1861{
1862	static const tcu::Format::BitDesc s_desc[] =
1863	{
1864		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_BASIC_BIT,				"VK_SUBGROUP_FEATURE_BASIC_BIT"),
1865		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_VOTE_BIT,				"VK_SUBGROUP_FEATURE_VOTE_BIT"),
1866		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_ARITHMETIC_BIT,		"VK_SUBGROUP_FEATURE_ARITHMETIC_BIT"),
1867		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_BALLOT_BIT,			"VK_SUBGROUP_FEATURE_BALLOT_BIT"),
1868		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_SHUFFLE_BIT,			"VK_SUBGROUP_FEATURE_SHUFFLE_BIT"),
1869		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT,	"VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"),
1870		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_CLUSTERED_BIT,			"VK_SUBGROUP_FEATURE_CLUSTERED_BIT"),
1871		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_QUAD_BIT,				"VK_SUBGROUP_FEATURE_QUAD_BIT"),
1872		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV,	"VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV"),
1873	};
1874	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1875}
1876
1877tcu::Format::Bitfield<32> getPeerMemoryFeatureFlagsStr (VkPeerMemoryFeatureFlags value)
1878{
1879	static const tcu::Format::BitDesc s_desc[] =
1880	{
1881		tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT,		"VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT"),
1882		tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_COPY_DST_BIT,		"VK_PEER_MEMORY_FEATURE_COPY_DST_BIT"),
1883		tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT,	"VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT"),
1884		tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT,	"VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT"),
1885	};
1886	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1887}
1888
1889tcu::Format::Bitfield<32> getMemoryAllocateFlagsStr (VkMemoryAllocateFlags value)
1890{
1891	static const tcu::Format::BitDesc s_desc[] =
1892	{
1893		tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,	"VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"),
1894	};
1895	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1896}
1897
1898tcu::Format::Bitfield<32> getExternalMemoryHandleTypeFlagsStr (VkExternalMemoryHandleTypeFlags value)
1899{
1900	static const tcu::Format::BitDesc s_desc[] =
1901	{
1902		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,							"VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"),
1903		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,						"VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
1904		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,					"VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
1905		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,						"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"),
1906		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,					"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"),
1907		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT,							"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"),
1908		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT,						"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"),
1909		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT,				"VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT"),
1910		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT,		"VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT"),
1911		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID,	"VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID"),
1912	};
1913	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1914}
1915
1916tcu::Format::Bitfield<32> getExternalMemoryFeatureFlagsStr (VkExternalMemoryFeatureFlags value)
1917{
1918	static const tcu::Format::BitDesc s_desc[] =
1919	{
1920		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT,	"VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"),
1921		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT,		"VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"),
1922		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT,		"VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"),
1923	};
1924	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1925}
1926
1927tcu::Format::Bitfield<32> getExternalFenceHandleTypeFlagsStr (VkExternalFenceHandleTypeFlags value)
1928{
1929	static const tcu::Format::BitDesc s_desc[] =
1930	{
1931		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,			"VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"),
1932		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT,		"VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
1933		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,	"VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
1934		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT,				"VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"),
1935	};
1936	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1937}
1938
1939tcu::Format::Bitfield<32> getExternalFenceFeatureFlagsStr (VkExternalFenceFeatureFlags value)
1940{
1941	static const tcu::Format::BitDesc s_desc[] =
1942	{
1943		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT,	"VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"),
1944		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT,	"VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"),
1945	};
1946	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1947}
1948
1949tcu::Format::Bitfield<32> getFenceImportFlagsStr (VkFenceImportFlags value)
1950{
1951	static const tcu::Format::BitDesc s_desc[] =
1952	{
1953		tcu::Format::BitDesc(VK_FENCE_IMPORT_TEMPORARY_BIT,	"VK_FENCE_IMPORT_TEMPORARY_BIT"),
1954	};
1955	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1956}
1957
1958tcu::Format::Bitfield<32> getSemaphoreImportFlagsStr (VkSemaphoreImportFlags value)
1959{
1960	static const tcu::Format::BitDesc s_desc[] =
1961	{
1962		tcu::Format::BitDesc(VK_SEMAPHORE_IMPORT_TEMPORARY_BIT,	"VK_SEMAPHORE_IMPORT_TEMPORARY_BIT"),
1963	};
1964	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1965}
1966
1967tcu::Format::Bitfield<32> getExternalSemaphoreHandleTypeFlagsStr (VkExternalSemaphoreHandleTypeFlags value)
1968{
1969	static const tcu::Format::BitDesc s_desc[] =
1970	{
1971		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,			"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"),
1972		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT,		"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
1973		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,	"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
1974		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,			"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"),
1975		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT,				"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"),
1976	};
1977	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1978}
1979
1980tcu::Format::Bitfield<32> getExternalSemaphoreFeatureFlagsStr (VkExternalSemaphoreFeatureFlags value)
1981{
1982	static const tcu::Format::BitDesc s_desc[] =
1983	{
1984		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT,	"VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"),
1985		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT,	"VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"),
1986	};
1987	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1988}
1989
1990tcu::Format::Bitfield<32> getSurfaceTransformFlagsKHRStr (VkSurfaceTransformFlagsKHR value)
1991{
1992	static const tcu::Format::BitDesc s_desc[] =
1993	{
1994		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,						"VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR"),
1995		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,					"VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"),
1996		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,					"VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"),
1997		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,					"VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"),
1998		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,			"VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"),
1999		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,	"VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"),
2000		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,	"VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"),
2001		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,	"VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"),
2002		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR,						"VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"),
2003	};
2004	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2005}
2006
2007tcu::Format::Bitfield<32> getCompositeAlphaFlagsKHRStr (VkCompositeAlphaFlagsKHR value)
2008{
2009	static const tcu::Format::BitDesc s_desc[] =
2010	{
2011		tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,				"VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"),
2012		tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,		"VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"),
2013		tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,	"VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"),
2014		tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR,			"VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"),
2015	};
2016	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2017}
2018
2019tcu::Format::Bitfield<32> getSwapchainCreateFlagsKHRStr (VkSwapchainCreateFlagsKHR value)
2020{
2021	static const tcu::Format::BitDesc s_desc[] =
2022	{
2023		tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHR,			"VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHR"),
2024		tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR,			"VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR"),
2025		tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR,	"VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR"),
2026	};
2027	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2028}
2029
2030tcu::Format::Bitfield<32> getDeviceGroupPresentModeFlagsKHRStr (VkDeviceGroupPresentModeFlagsKHR value)
2031{
2032	static const tcu::Format::BitDesc s_desc[] =
2033	{
2034		tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR,				"VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR"),
2035		tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR,				"VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR"),
2036		tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR,					"VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR"),
2037		tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR,	"VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR"),
2038	};
2039	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2040}
2041
2042tcu::Format::Bitfield<32> getDisplayPlaneAlphaFlagsKHRStr (VkDisplayPlaneAlphaFlagsKHR value)
2043{
2044	static const tcu::Format::BitDesc s_desc[] =
2045	{
2046		tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,						"VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"),
2047		tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,						"VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"),
2048		tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,					"VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"),
2049		tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR,	"VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"),
2050	};
2051	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2052}
2053
2054tcu::Format::Bitfield<32> getResolveModeFlagsKHRStr (VkResolveModeFlagsKHR value)
2055{
2056	static const tcu::Format::BitDesc s_desc[] =
2057	{
2058		tcu::Format::BitDesc(VK_RESOLVE_MODE_NONE_KHR,				"VK_RESOLVE_MODE_NONE_KHR"),
2059		tcu::Format::BitDesc(VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR,	"VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR"),
2060		tcu::Format::BitDesc(VK_RESOLVE_MODE_AVERAGE_BIT_KHR,		"VK_RESOLVE_MODE_AVERAGE_BIT_KHR"),
2061		tcu::Format::BitDesc(VK_RESOLVE_MODE_MIN_BIT_KHR,			"VK_RESOLVE_MODE_MIN_BIT_KHR"),
2062		tcu::Format::BitDesc(VK_RESOLVE_MODE_MAX_BIT_KHR,			"VK_RESOLVE_MODE_MAX_BIT_KHR"),
2063	};
2064	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2065}
2066
2067tcu::Format::Bitfield<32> getDebugReportFlagsEXTStr (VkDebugReportFlagsEXT value)
2068{
2069	static const tcu::Format::BitDesc s_desc[] =
2070	{
2071		tcu::Format::BitDesc(VK_DEBUG_REPORT_INFORMATION_BIT_EXT,			"VK_DEBUG_REPORT_INFORMATION_BIT_EXT"),
2072		tcu::Format::BitDesc(VK_DEBUG_REPORT_WARNING_BIT_EXT,				"VK_DEBUG_REPORT_WARNING_BIT_EXT"),
2073		tcu::Format::BitDesc(VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,	"VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT"),
2074		tcu::Format::BitDesc(VK_DEBUG_REPORT_ERROR_BIT_EXT,					"VK_DEBUG_REPORT_ERROR_BIT_EXT"),
2075		tcu::Format::BitDesc(VK_DEBUG_REPORT_DEBUG_BIT_EXT,					"VK_DEBUG_REPORT_DEBUG_BIT_EXT"),
2076	};
2077	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2078}
2079
2080tcu::Format::Bitfield<32> getExternalMemoryHandleTypeFlagsNVStr (VkExternalMemoryHandleTypeFlagsNV value)
2081{
2082	static const tcu::Format::BitDesc s_desc[] =
2083	{
2084		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,		"VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV"),
2085		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,	"VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV"),
2086		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,			"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV"),
2087		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV,		"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV"),
2088	};
2089	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2090}
2091
2092tcu::Format::Bitfield<32> getExternalMemoryFeatureFlagsNVStr (VkExternalMemoryFeatureFlagsNV value)
2093{
2094	static const tcu::Format::BitDesc s_desc[] =
2095	{
2096		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,	"VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV"),
2097		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,		"VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV"),
2098		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV,		"VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV"),
2099	};
2100	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2101}
2102
2103tcu::Format::Bitfield<32> getConditionalRenderingFlagsEXTStr (VkConditionalRenderingFlagsEXT value)
2104{
2105	static const tcu::Format::BitDesc s_desc[] =
2106	{
2107		tcu::Format::BitDesc(VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT,	"VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT"),
2108	};
2109	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2110}
2111
2112tcu::Format::Bitfield<32> getIndirectCommandsLayoutUsageFlagsNVXStr (VkIndirectCommandsLayoutUsageFlagsNVX value)
2113{
2114	static const tcu::Format::BitDesc s_desc[] =
2115	{
2116		tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,	"VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX"),
2117		tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,	"VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX"),
2118		tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,	"VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX"),
2119		tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX,	"VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX"),
2120	};
2121	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2122}
2123
2124tcu::Format::Bitfield<32> getObjectEntryUsageFlagsNVXStr (VkObjectEntryUsageFlagsNVX value)
2125{
2126	static const tcu::Format::BitDesc s_desc[] =
2127	{
2128		tcu::Format::BitDesc(VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,	"VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX"),
2129		tcu::Format::BitDesc(VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX,		"VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX"),
2130	};
2131	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2132}
2133
2134tcu::Format::Bitfield<32> getSurfaceCounterFlagsEXTStr (VkSurfaceCounterFlagsEXT value)
2135{
2136	static const tcu::Format::BitDesc s_desc[] =
2137	{
2138		tcu::Format::BitDesc(VK_SURFACE_COUNTER_VBLANK_EXT,	"VK_SURFACE_COUNTER_VBLANK_EXT"),
2139	};
2140	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2141}
2142
2143tcu::Format::Bitfield<32> getDescriptorBindingFlagsEXTStr (VkDescriptorBindingFlagsEXT value)
2144{
2145	static const tcu::Format::BitDesc s_desc[] =
2146	{
2147		tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT,			"VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT"),
2148		tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT,	"VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT"),
2149		tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT,				"VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT"),
2150		tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT,	"VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT"),
2151	};
2152	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2153}
2154
2155tcu::Format::Bitfield<32> getInstanceCreateFlagsStr (VkInstanceCreateFlags value)
2156{
2157	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2158}
2159
2160tcu::Format::Bitfield<32> getDeviceCreateFlagsStr (VkDeviceCreateFlags value)
2161{
2162	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2163}
2164
2165tcu::Format::Bitfield<32> getMemoryMapFlagsStr (VkMemoryMapFlags value)
2166{
2167	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2168}
2169
2170tcu::Format::Bitfield<32> getSemaphoreCreateFlagsStr (VkSemaphoreCreateFlags value)
2171{
2172	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2173}
2174
2175tcu::Format::Bitfield<32> getEventCreateFlagsStr (VkEventCreateFlags value)
2176{
2177	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2178}
2179
2180tcu::Format::Bitfield<32> getQueryPoolCreateFlagsStr (VkQueryPoolCreateFlags value)
2181{
2182	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2183}
2184
2185tcu::Format::Bitfield<32> getBufferViewCreateFlagsStr (VkBufferViewCreateFlags value)
2186{
2187	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2188}
2189
2190tcu::Format::Bitfield<32> getImageViewCreateFlagsStr (VkImageViewCreateFlags value)
2191{
2192	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2193}
2194
2195tcu::Format::Bitfield<32> getShaderModuleCreateFlagsStr (VkShaderModuleCreateFlags value)
2196{
2197	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2198}
2199
2200tcu::Format::Bitfield<32> getPipelineCacheCreateFlagsStr (VkPipelineCacheCreateFlags value)
2201{
2202	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2203}
2204
2205tcu::Format::Bitfield<32> getPipelineShaderStageCreateFlagsStr (VkPipelineShaderStageCreateFlags value)
2206{
2207	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2208}
2209
2210tcu::Format::Bitfield<32> getPipelineVertexInputStateCreateFlagsStr (VkPipelineVertexInputStateCreateFlags value)
2211{
2212	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2213}
2214
2215tcu::Format::Bitfield<32> getPipelineInputAssemblyStateCreateFlagsStr (VkPipelineInputAssemblyStateCreateFlags value)
2216{
2217	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2218}
2219
2220tcu::Format::Bitfield<32> getPipelineTessellationStateCreateFlagsStr (VkPipelineTessellationStateCreateFlags value)
2221{
2222	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2223}
2224
2225tcu::Format::Bitfield<32> getPipelineViewportStateCreateFlagsStr (VkPipelineViewportStateCreateFlags value)
2226{
2227	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2228}
2229
2230tcu::Format::Bitfield<32> getPipelineRasterizationStateCreateFlagsStr (VkPipelineRasterizationStateCreateFlags value)
2231{
2232	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2233}
2234
2235tcu::Format::Bitfield<32> getPipelineMultisampleStateCreateFlagsStr (VkPipelineMultisampleStateCreateFlags value)
2236{
2237	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2238}
2239
2240tcu::Format::Bitfield<32> getPipelineDepthStencilStateCreateFlagsStr (VkPipelineDepthStencilStateCreateFlags value)
2241{
2242	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2243}
2244
2245tcu::Format::Bitfield<32> getPipelineColorBlendStateCreateFlagsStr (VkPipelineColorBlendStateCreateFlags value)
2246{
2247	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2248}
2249
2250tcu::Format::Bitfield<32> getPipelineDynamicStateCreateFlagsStr (VkPipelineDynamicStateCreateFlags value)
2251{
2252	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2253}
2254
2255tcu::Format::Bitfield<32> getPipelineLayoutCreateFlagsStr (VkPipelineLayoutCreateFlags value)
2256{
2257	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2258}
2259
2260tcu::Format::Bitfield<32> getSamplerCreateFlagsStr (VkSamplerCreateFlags value)
2261{
2262	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2263}
2264
2265tcu::Format::Bitfield<32> getDescriptorPoolResetFlagsStr (VkDescriptorPoolResetFlags value)
2266{
2267	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2268}
2269
2270tcu::Format::Bitfield<32> getFramebufferCreateFlagsStr (VkFramebufferCreateFlags value)
2271{
2272	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2273}
2274
2275tcu::Format::Bitfield<32> getRenderPassCreateFlagsStr (VkRenderPassCreateFlags value)
2276{
2277	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2278}
2279
2280tcu::Format::Bitfield<32> getCommandPoolTrimFlagsStr (VkCommandPoolTrimFlags value)
2281{
2282	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2283}
2284
2285tcu::Format::Bitfield<32> getDescriptorUpdateTemplateCreateFlagsStr (VkDescriptorUpdateTemplateCreateFlags value)
2286{
2287	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2288}
2289
2290tcu::Format::Bitfield<32> getDisplayModeCreateFlagsKHRStr (VkDisplayModeCreateFlagsKHR value)
2291{
2292	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2293}
2294
2295tcu::Format::Bitfield<32> getDisplaySurfaceCreateFlagsKHRStr (VkDisplaySurfaceCreateFlagsKHR value)
2296{
2297	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2298}
2299
2300tcu::Format::Bitfield<32> getXlibSurfaceCreateFlagsKHRStr (VkXlibSurfaceCreateFlagsKHR value)
2301{
2302	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2303}
2304
2305tcu::Format::Bitfield<32> getXcbSurfaceCreateFlagsKHRStr (VkXcbSurfaceCreateFlagsKHR value)
2306{
2307	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2308}
2309
2310tcu::Format::Bitfield<32> getWaylandSurfaceCreateFlagsKHRStr (VkWaylandSurfaceCreateFlagsKHR value)
2311{
2312	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2313}
2314
2315tcu::Format::Bitfield<32> getMirSurfaceCreateFlagsKHRStr (VkMirSurfaceCreateFlagsKHR value)
2316{
2317	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2318}
2319
2320tcu::Format::Bitfield<32> getAndroidSurfaceCreateFlagsKHRStr (VkAndroidSurfaceCreateFlagsKHR value)
2321{
2322	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2323}
2324
2325tcu::Format::Bitfield<32> getWin32SurfaceCreateFlagsKHRStr (VkWin32SurfaceCreateFlagsKHR value)
2326{
2327	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2328}
2329
2330tcu::Format::Bitfield<32> getViSurfaceCreateFlagsNNStr (VkViSurfaceCreateFlagsNN value)
2331{
2332	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2333}
2334
2335tcu::Format::Bitfield<32> getPipelineViewportSwizzleStateCreateFlagsNVStr (VkPipelineViewportSwizzleStateCreateFlagsNV value)
2336{
2337	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2338}
2339
2340tcu::Format::Bitfield<32> getPipelineDiscardRectangleStateCreateFlagsEXTStr (VkPipelineDiscardRectangleStateCreateFlagsEXT value)
2341{
2342	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2343}
2344
2345tcu::Format::Bitfield<32> getIOSSurfaceCreateFlagsMVKStr (VkIOSSurfaceCreateFlagsMVK value)
2346{
2347	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2348}
2349
2350tcu::Format::Bitfield<32> getMacOSSurfaceCreateFlagsMVKStr (VkMacOSSurfaceCreateFlagsMVK value)
2351{
2352	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2353}
2354
2355tcu::Format::Bitfield<32> getPipelineCoverageToColorStateCreateFlagsNVStr (VkPipelineCoverageToColorStateCreateFlagsNV value)
2356{
2357	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2358}
2359
2360tcu::Format::Bitfield<32> getPipelineCoverageModulationStateCreateFlagsNVStr (VkPipelineCoverageModulationStateCreateFlagsNV value)
2361{
2362	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2363}
2364
2365tcu::Format::Bitfield<32> getValidationCacheCreateFlagsEXTStr (VkValidationCacheCreateFlagsEXT value)
2366{
2367	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2368}
2369
2370std::ostream& operator<< (std::ostream& s, const VkApplicationInfo& value)
2371{
2372	s << "VkApplicationInfo = {\n";
2373	s << "\tsType = " << value.sType << '\n';
2374	s << "\tpNext = " << value.pNext << '\n';
2375	s << "\tpApplicationName = " << getCharPtrStr(value.pApplicationName) << '\n';
2376	s << "\tapplicationVersion = " << value.applicationVersion << '\n';
2377	s << "\tpEngineName = " << getCharPtrStr(value.pEngineName) << '\n';
2378	s << "\tengineVersion = " << value.engineVersion << '\n';
2379	s << "\tapiVersion = " << value.apiVersion << '\n';
2380	s << '}';
2381	return s;
2382}
2383
2384std::ostream& operator<< (std::ostream& s, const VkInstanceCreateInfo& value)
2385{
2386	s << "VkInstanceCreateInfo = {\n";
2387	s << "\tsType = " << value.sType << '\n';
2388	s << "\tpNext = " << value.pNext << '\n';
2389	s << "\tflags = " << getInstanceCreateFlagsStr(value.flags) << '\n';
2390	s << "\tpApplicationInfo = " << value.pApplicationInfo << '\n';
2391	s << "\tenabledLayerCount = " << value.enabledLayerCount << '\n';
2392	s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
2393	s << "\tenabledExtensionCount = " << value.enabledExtensionCount << '\n';
2394	s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
2395	s << '}';
2396	return s;
2397}
2398
2399std::ostream& operator<< (std::ostream& s, const VkAllocationCallbacks& value)
2400{
2401	s << "VkAllocationCallbacks = {\n";
2402	s << "\tpUserData = " << value.pUserData << '\n';
2403	s << "\tpfnAllocation = " << value.pfnAllocation << '\n';
2404	s << "\tpfnReallocation = " << value.pfnReallocation << '\n';
2405	s << "\tpfnFree = " << value.pfnFree << '\n';
2406	s << "\tpfnInternalAllocation = " << value.pfnInternalAllocation << '\n';
2407	s << "\tpfnInternalFree = " << value.pfnInternalFree << '\n';
2408	s << '}';
2409	return s;
2410}
2411
2412std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures& value)
2413{
2414	s << "VkPhysicalDeviceFeatures = {\n";
2415	s << "\trobustBufferAccess = " << value.robustBufferAccess << '\n';
2416	s << "\tfullDrawIndexUint32 = " << value.fullDrawIndexUint32 << '\n';
2417	s << "\timageCubeArray = " << value.imageCubeArray << '\n';
2418	s << "\tindependentBlend = " << value.independentBlend << '\n';
2419	s << "\tgeometryShader = " << value.geometryShader << '\n';
2420	s << "\ttessellationShader = " << value.tessellationShader << '\n';
2421	s << "\tsampleRateShading = " << value.sampleRateShading << '\n';
2422	s << "\tdualSrcBlend = " << value.dualSrcBlend << '\n';
2423	s << "\tlogicOp = " << value.logicOp << '\n';
2424	s << "\tmultiDrawIndirect = " << value.multiDrawIndirect << '\n';
2425	s << "\tdrawIndirectFirstInstance = " << value.drawIndirectFirstInstance << '\n';
2426	s << "\tdepthClamp = " << value.depthClamp << '\n';
2427	s << "\tdepthBiasClamp = " << value.depthBiasClamp << '\n';
2428	s << "\tfillModeNonSolid = " << value.fillModeNonSolid << '\n';
2429	s << "\tdepthBounds = " << value.depthBounds << '\n';
2430	s << "\twideLines = " << value.wideLines << '\n';
2431	s << "\tlargePoints = " << value.largePoints << '\n';
2432	s << "\talphaToOne = " << value.alphaToOne << '\n';
2433	s << "\tmultiViewport = " << value.multiViewport << '\n';
2434	s << "\tsamplerAnisotropy = " << value.samplerAnisotropy << '\n';
2435	s << "\ttextureCompressionETC2 = " << value.textureCompressionETC2 << '\n';
2436	s << "\ttextureCompressionASTC_LDR = " << value.textureCompressionASTC_LDR << '\n';
2437	s << "\ttextureCompressionBC = " << value.textureCompressionBC << '\n';
2438	s << "\tocclusionQueryPrecise = " << value.occlusionQueryPrecise << '\n';
2439	s << "\tpipelineStatisticsQuery = " << value.pipelineStatisticsQuery << '\n';
2440	s << "\tvertexPipelineStoresAndAtomics = " << value.vertexPipelineStoresAndAtomics << '\n';
2441	s << "\tfragmentStoresAndAtomics = " << value.fragmentStoresAndAtomics << '\n';
2442	s << "\tshaderTessellationAndGeometryPointSize = " << value.shaderTessellationAndGeometryPointSize << '\n';
2443	s << "\tshaderImageGatherExtended = " << value.shaderImageGatherExtended << '\n';
2444	s << "\tshaderStorageImageExtendedFormats = " << value.shaderStorageImageExtendedFormats << '\n';
2445	s << "\tshaderStorageImageMultisample = " << value.shaderStorageImageMultisample << '\n';
2446	s << "\tshaderStorageImageReadWithoutFormat = " << value.shaderStorageImageReadWithoutFormat << '\n';
2447	s << "\tshaderStorageImageWriteWithoutFormat = " << value.shaderStorageImageWriteWithoutFormat << '\n';
2448	s << "\tshaderUniformBufferArrayDynamicIndexing = " << value.shaderUniformBufferArrayDynamicIndexing << '\n';
2449	s << "\tshaderSampledImageArrayDynamicIndexing = " << value.shaderSampledImageArrayDynamicIndexing << '\n';
2450	s << "\tshaderStorageBufferArrayDynamicIndexing = " << value.shaderStorageBufferArrayDynamicIndexing << '\n';
2451	s << "\tshaderStorageImageArrayDynamicIndexing = " << value.shaderStorageImageArrayDynamicIndexing << '\n';
2452	s << "\tshaderClipDistance = " << value.shaderClipDistance << '\n';
2453	s << "\tshaderCullDistance = " << value.shaderCullDistance << '\n';
2454	s << "\tshaderFloat64 = " << value.shaderFloat64 << '\n';
2455	s << "\tshaderInt64 = " << value.shaderInt64 << '\n';
2456	s << "\tshaderInt16 = " << value.shaderInt16 << '\n';
2457	s << "\tshaderResourceResidency = " << value.shaderResourceResidency << '\n';
2458	s << "\tshaderResourceMinLod = " << value.shaderResourceMinLod << '\n';
2459	s << "\tsparseBinding = " << value.sparseBinding << '\n';
2460	s << "\tsparseResidencyBuffer = " << value.sparseResidencyBuffer << '\n';
2461	s << "\tsparseResidencyImage2D = " << value.sparseResidencyImage2D << '\n';
2462	s << "\tsparseResidencyImage3D = " << value.sparseResidencyImage3D << '\n';
2463	s << "\tsparseResidency2Samples = " << value.sparseResidency2Samples << '\n';
2464	s << "\tsparseResidency4Samples = " << value.sparseResidency4Samples << '\n';
2465	s << "\tsparseResidency8Samples = " << value.sparseResidency8Samples << '\n';
2466	s << "\tsparseResidency16Samples = " << value.sparseResidency16Samples << '\n';
2467	s << "\tsparseResidencyAliased = " << value.sparseResidencyAliased << '\n';
2468	s << "\tvariableMultisampleRate = " << value.variableMultisampleRate << '\n';
2469	s << "\tinheritedQueries = " << value.inheritedQueries << '\n';
2470	s << '}';
2471	return s;
2472}
2473
2474std::ostream& operator<< (std::ostream& s, const VkFormatProperties& value)
2475{
2476	s << "VkFormatProperties = {\n";
2477	s << "\tlinearTilingFeatures = " << getFormatFeatureFlagsStr(value.linearTilingFeatures) << '\n';
2478	s << "\toptimalTilingFeatures = " << getFormatFeatureFlagsStr(value.optimalTilingFeatures) << '\n';
2479	s << "\tbufferFeatures = " << getFormatFeatureFlagsStr(value.bufferFeatures) << '\n';
2480	s << '}';
2481	return s;
2482}
2483
2484std::ostream& operator<< (std::ostream& s, const VkExtent3D& value)
2485{
2486	s << "VkExtent3D = {\n";
2487	s << "\twidth = " << value.width << '\n';
2488	s << "\theight = " << value.height << '\n';
2489	s << "\tdepth = " << value.depth << '\n';
2490	s << '}';
2491	return s;
2492}
2493
2494std::ostream& operator<< (std::ostream& s, const VkImageFormatProperties& value)
2495{
2496	s << "VkImageFormatProperties = {\n";
2497	s << "\tmaxExtent = " << value.maxExtent << '\n';
2498	s << "\tmaxMipLevels = " << value.maxMipLevels << '\n';
2499	s << "\tmaxArrayLayers = " << value.maxArrayLayers << '\n';
2500	s << "\tsampleCounts = " << getSampleCountFlagsStr(value.sampleCounts) << '\n';
2501	s << "\tmaxResourceSize = " << value.maxResourceSize << '\n';
2502	s << '}';
2503	return s;
2504}
2505
2506std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLimits& value)
2507{
2508	s << "VkPhysicalDeviceLimits = {\n";
2509	s << "\tmaxImageDimension1D = " << value.maxImageDimension1D << '\n';
2510	s << "\tmaxImageDimension2D = " << value.maxImageDimension2D << '\n';
2511	s << "\tmaxImageDimension3D = " << value.maxImageDimension3D << '\n';
2512	s << "\tmaxImageDimensionCube = " << value.maxImageDimensionCube << '\n';
2513	s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
2514	s << "\tmaxTexelBufferElements = " << value.maxTexelBufferElements << '\n';
2515	s << "\tmaxUniformBufferRange = " << value.maxUniformBufferRange << '\n';
2516	s << "\tmaxStorageBufferRange = " << value.maxStorageBufferRange << '\n';
2517	s << "\tmaxPushConstantsSize = " << value.maxPushConstantsSize << '\n';
2518	s << "\tmaxMemoryAllocationCount = " << value.maxMemoryAllocationCount << '\n';
2519	s << "\tmaxSamplerAllocationCount = " << value.maxSamplerAllocationCount << '\n';
2520	s << "\tbufferImageGranularity = " << value.bufferImageGranularity << '\n';
2521	s << "\tsparseAddressSpaceSize = " << value.sparseAddressSpaceSize << '\n';
2522	s << "\tmaxBoundDescriptorSets = " << value.maxBoundDescriptorSets << '\n';
2523	s << "\tmaxPerStageDescriptorSamplers = " << value.maxPerStageDescriptorSamplers << '\n';
2524	s << "\tmaxPerStageDescriptorUniformBuffers = " << value.maxPerStageDescriptorUniformBuffers << '\n';
2525	s << "\tmaxPerStageDescriptorStorageBuffers = " << value.maxPerStageDescriptorStorageBuffers << '\n';
2526	s << "\tmaxPerStageDescriptorSampledImages = " << value.maxPerStageDescriptorSampledImages << '\n';
2527	s << "\tmaxPerStageDescriptorStorageImages = " << value.maxPerStageDescriptorStorageImages << '\n';
2528	s << "\tmaxPerStageDescriptorInputAttachments = " << value.maxPerStageDescriptorInputAttachments << '\n';
2529	s << "\tmaxPerStageResources = " << value.maxPerStageResources << '\n';
2530	s << "\tmaxDescriptorSetSamplers = " << value.maxDescriptorSetSamplers << '\n';
2531	s << "\tmaxDescriptorSetUniformBuffers = " << value.maxDescriptorSetUniformBuffers << '\n';
2532	s << "\tmaxDescriptorSetUniformBuffersDynamic = " << value.maxDescriptorSetUniformBuffersDynamic << '\n';
2533	s << "\tmaxDescriptorSetStorageBuffers = " << value.maxDescriptorSetStorageBuffers << '\n';
2534	s << "\tmaxDescriptorSetStorageBuffersDynamic = " << value.maxDescriptorSetStorageBuffersDynamic << '\n';
2535	s << "\tmaxDescriptorSetSampledImages = " << value.maxDescriptorSetSampledImages << '\n';
2536	s << "\tmaxDescriptorSetStorageImages = " << value.maxDescriptorSetStorageImages << '\n';
2537	s << "\tmaxDescriptorSetInputAttachments = " << value.maxDescriptorSetInputAttachments << '\n';
2538	s << "\tmaxVertexInputAttributes = " << value.maxVertexInputAttributes << '\n';
2539	s << "\tmaxVertexInputBindings = " << value.maxVertexInputBindings << '\n';
2540	s << "\tmaxVertexInputAttributeOffset = " << value.maxVertexInputAttributeOffset << '\n';
2541	s << "\tmaxVertexInputBindingStride = " << value.maxVertexInputBindingStride << '\n';
2542	s << "\tmaxVertexOutputComponents = " << value.maxVertexOutputComponents << '\n';
2543	s << "\tmaxTessellationGenerationLevel = " << value.maxTessellationGenerationLevel << '\n';
2544	s << "\tmaxTessellationPatchSize = " << value.maxTessellationPatchSize << '\n';
2545	s << "\tmaxTessellationControlPerVertexInputComponents = " << value.maxTessellationControlPerVertexInputComponents << '\n';
2546	s << "\tmaxTessellationControlPerVertexOutputComponents = " << value.maxTessellationControlPerVertexOutputComponents << '\n';
2547	s << "\tmaxTessellationControlPerPatchOutputComponents = " << value.maxTessellationControlPerPatchOutputComponents << '\n';
2548	s << "\tmaxTessellationControlTotalOutputComponents = " << value.maxTessellationControlTotalOutputComponents << '\n';
2549	s << "\tmaxTessellationEvaluationInputComponents = " << value.maxTessellationEvaluationInputComponents << '\n';
2550	s << "\tmaxTessellationEvaluationOutputComponents = " << value.maxTessellationEvaluationOutputComponents << '\n';
2551	s << "\tmaxGeometryShaderInvocations = " << value.maxGeometryShaderInvocations << '\n';
2552	s << "\tmaxGeometryInputComponents = " << value.maxGeometryInputComponents << '\n';
2553	s << "\tmaxGeometryOutputComponents = " << value.maxGeometryOutputComponents << '\n';
2554	s << "\tmaxGeometryOutputVertices = " << value.maxGeometryOutputVertices << '\n';
2555	s << "\tmaxGeometryTotalOutputComponents = " << value.maxGeometryTotalOutputComponents << '\n';
2556	s << "\tmaxFragmentInputComponents = " << value.maxFragmentInputComponents << '\n';
2557	s << "\tmaxFragmentOutputAttachments = " << value.maxFragmentOutputAttachments << '\n';
2558	s << "\tmaxFragmentDualSrcAttachments = " << value.maxFragmentDualSrcAttachments << '\n';
2559	s << "\tmaxFragmentCombinedOutputResources = " << value.maxFragmentCombinedOutputResources << '\n';
2560	s << "\tmaxComputeSharedMemorySize = " << value.maxComputeSharedMemorySize << '\n';
2561	s << "\tmaxComputeWorkGroupCount = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupCount), DE_ARRAY_END(value.maxComputeWorkGroupCount)) << '\n';
2562	s << "\tmaxComputeWorkGroupInvocations = " << value.maxComputeWorkGroupInvocations << '\n';
2563	s << "\tmaxComputeWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupSize), DE_ARRAY_END(value.maxComputeWorkGroupSize)) << '\n';
2564	s << "\tsubPixelPrecisionBits = " << value.subPixelPrecisionBits << '\n';
2565	s << "\tsubTexelPrecisionBits = " << value.subTexelPrecisionBits << '\n';
2566	s << "\tmipmapPrecisionBits = " << value.mipmapPrecisionBits << '\n';
2567	s << "\tmaxDrawIndexedIndexValue = " << value.maxDrawIndexedIndexValue << '\n';
2568	s << "\tmaxDrawIndirectCount = " << value.maxDrawIndirectCount << '\n';
2569	s << "\tmaxSamplerLodBias = " << value.maxSamplerLodBias << '\n';
2570	s << "\tmaxSamplerAnisotropy = " << value.maxSamplerAnisotropy << '\n';
2571	s << "\tmaxViewports = " << value.maxViewports << '\n';
2572	s << "\tmaxViewportDimensions = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxViewportDimensions), DE_ARRAY_END(value.maxViewportDimensions)) << '\n';
2573	s << "\tviewportBoundsRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.viewportBoundsRange), DE_ARRAY_END(value.viewportBoundsRange)) << '\n';
2574	s << "\tviewportSubPixelBits = " << value.viewportSubPixelBits << '\n';
2575	s << "\tminMemoryMapAlignment = " << value.minMemoryMapAlignment << '\n';
2576	s << "\tminTexelBufferOffsetAlignment = " << value.minTexelBufferOffsetAlignment << '\n';
2577	s << "\tminUniformBufferOffsetAlignment = " << value.minUniformBufferOffsetAlignment << '\n';
2578	s << "\tminStorageBufferOffsetAlignment = " << value.minStorageBufferOffsetAlignment << '\n';
2579	s << "\tminTexelOffset = " << value.minTexelOffset << '\n';
2580	s << "\tmaxTexelOffset = " << value.maxTexelOffset << '\n';
2581	s << "\tminTexelGatherOffset = " << value.minTexelGatherOffset << '\n';
2582	s << "\tmaxTexelGatherOffset = " << value.maxTexelGatherOffset << '\n';
2583	s << "\tminInterpolationOffset = " << value.minInterpolationOffset << '\n';
2584	s << "\tmaxInterpolationOffset = " << value.maxInterpolationOffset << '\n';
2585	s << "\tsubPixelInterpolationOffsetBits = " << value.subPixelInterpolationOffsetBits << '\n';
2586	s << "\tmaxFramebufferWidth = " << value.maxFramebufferWidth << '\n';
2587	s << "\tmaxFramebufferHeight = " << value.maxFramebufferHeight << '\n';
2588	s << "\tmaxFramebufferLayers = " << value.maxFramebufferLayers << '\n';
2589	s << "\tframebufferColorSampleCounts = " << getSampleCountFlagsStr(value.framebufferColorSampleCounts) << '\n';
2590	s << "\tframebufferDepthSampleCounts = " << getSampleCountFlagsStr(value.framebufferDepthSampleCounts) << '\n';
2591	s << "\tframebufferStencilSampleCounts = " << getSampleCountFlagsStr(value.framebufferStencilSampleCounts) << '\n';
2592	s << "\tframebufferNoAttachmentsSampleCounts = " << getSampleCountFlagsStr(value.framebufferNoAttachmentsSampleCounts) << '\n';
2593	s << "\tmaxColorAttachments = " << value.maxColorAttachments << '\n';
2594	s << "\tsampledImageColorSampleCounts = " << getSampleCountFlagsStr(value.sampledImageColorSampleCounts) << '\n';
2595	s << "\tsampledImageIntegerSampleCounts = " << getSampleCountFlagsStr(value.sampledImageIntegerSampleCounts) << '\n';
2596	s << "\tsampledImageDepthSampleCounts = " << getSampleCountFlagsStr(value.sampledImageDepthSampleCounts) << '\n';
2597	s << "\tsampledImageStencilSampleCounts = " << getSampleCountFlagsStr(value.sampledImageStencilSampleCounts) << '\n';
2598	s << "\tstorageImageSampleCounts = " << getSampleCountFlagsStr(value.storageImageSampleCounts) << '\n';
2599	s << "\tmaxSampleMaskWords = " << value.maxSampleMaskWords << '\n';
2600	s << "\ttimestampComputeAndGraphics = " << value.timestampComputeAndGraphics << '\n';
2601	s << "\ttimestampPeriod = " << value.timestampPeriod << '\n';
2602	s << "\tmaxClipDistances = " << value.maxClipDistances << '\n';
2603	s << "\tmaxCullDistances = " << value.maxCullDistances << '\n';
2604	s << "\tmaxCombinedClipAndCullDistances = " << value.maxCombinedClipAndCullDistances << '\n';
2605	s << "\tdiscreteQueuePriorities = " << value.discreteQueuePriorities << '\n';
2606	s << "\tpointSizeRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.pointSizeRange), DE_ARRAY_END(value.pointSizeRange)) << '\n';
2607	s << "\tlineWidthRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.lineWidthRange), DE_ARRAY_END(value.lineWidthRange)) << '\n';
2608	s << "\tpointSizeGranularity = " << value.pointSizeGranularity << '\n';
2609	s << "\tlineWidthGranularity = " << value.lineWidthGranularity << '\n';
2610	s << "\tstrictLines = " << value.strictLines << '\n';
2611	s << "\tstandardSampleLocations = " << value.standardSampleLocations << '\n';
2612	s << "\toptimalBufferCopyOffsetAlignment = " << value.optimalBufferCopyOffsetAlignment << '\n';
2613	s << "\toptimalBufferCopyRowPitchAlignment = " << value.optimalBufferCopyRowPitchAlignment << '\n';
2614	s << "\tnonCoherentAtomSize = " << value.nonCoherentAtomSize << '\n';
2615	s << '}';
2616	return s;
2617}
2618
2619std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSparseProperties& value)
2620{
2621	s << "VkPhysicalDeviceSparseProperties = {\n";
2622	s << "\tresidencyStandard2DBlockShape = " << value.residencyStandard2DBlockShape << '\n';
2623	s << "\tresidencyStandard2DMultisampleBlockShape = " << value.residencyStandard2DMultisampleBlockShape << '\n';
2624	s << "\tresidencyStandard3DBlockShape = " << value.residencyStandard3DBlockShape << '\n';
2625	s << "\tresidencyAlignedMipSize = " << value.residencyAlignedMipSize << '\n';
2626	s << "\tresidencyNonResidentStrict = " << value.residencyNonResidentStrict << '\n';
2627	s << '}';
2628	return s;
2629}
2630
2631std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProperties& value)
2632{
2633	s << "VkPhysicalDeviceProperties = {\n";
2634	s << "\tapiVersion = " << value.apiVersion << '\n';
2635	s << "\tdriverVersion = " << value.driverVersion << '\n';
2636	s << "\tvendorID = " << value.vendorID << '\n';
2637	s << "\tdeviceID = " << value.deviceID << '\n';
2638	s << "\tdeviceType = " << value.deviceType << '\n';
2639	s << "\tdeviceName = " << (const char*)value.deviceName << '\n';
2640	s << "\tpipelineCacheUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.pipelineCacheUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.pipelineCacheUUID))) << '\n';
2641	s << "\tlimits = " << value.limits << '\n';
2642	s << "\tsparseProperties = " << value.sparseProperties << '\n';
2643	s << '}';
2644	return s;
2645}
2646
2647std::ostream& operator<< (std::ostream& s, const VkQueueFamilyProperties& value)
2648{
2649	s << "VkQueueFamilyProperties = {\n";
2650	s << "\tqueueFlags = " << getQueueFlagsStr(value.queueFlags) << '\n';
2651	s << "\tqueueCount = " << value.queueCount << '\n';
2652	s << "\ttimestampValidBits = " << value.timestampValidBits << '\n';
2653	s << "\tminImageTransferGranularity = " << value.minImageTransferGranularity << '\n';
2654	s << '}';
2655	return s;
2656}
2657
2658std::ostream& operator<< (std::ostream& s, const VkMemoryType& value)
2659{
2660	s << "VkMemoryType = {\n";
2661	s << "\tpropertyFlags = " << getMemoryPropertyFlagsStr(value.propertyFlags) << '\n';
2662	s << "\theapIndex = " << value.heapIndex << '\n';
2663	s << '}';
2664	return s;
2665}
2666
2667std::ostream& operator<< (std::ostream& s, const VkMemoryHeap& value)
2668{
2669	s << "VkMemoryHeap = {\n";
2670	s << "\tsize = " << value.size << '\n';
2671	s << "\tflags = " << getMemoryHeapFlagsStr(value.flags) << '\n';
2672	s << '}';
2673	return s;
2674}
2675
2676std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties& value)
2677{
2678	s << "VkPhysicalDeviceMemoryProperties = {\n";
2679	s << "\tmemoryTypeCount = " << value.memoryTypeCount << '\n';
2680	s << "\tmemoryTypes = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryTypes), DE_ARRAY_BEGIN(value.memoryTypes) + value.memoryTypeCount) << '\n';
2681	s << "\tmemoryHeapCount = " << value.memoryHeapCount << '\n';
2682	s << "\tmemoryHeaps = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryHeaps), DE_ARRAY_BEGIN(value.memoryHeaps) + value.memoryHeapCount) << '\n';
2683	s << '}';
2684	return s;
2685}
2686
2687std::ostream& operator<< (std::ostream& s, const VkDeviceQueueCreateInfo& value)
2688{
2689	s << "VkDeviceQueueCreateInfo = {\n";
2690	s << "\tsType = " << value.sType << '\n';
2691	s << "\tpNext = " << value.pNext << '\n';
2692	s << "\tflags = " << getDeviceQueueCreateFlagsStr(value.flags) << '\n';
2693	s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
2694	s << "\tqueueCount = " << value.queueCount << '\n';
2695	s << "\tpQueuePriorities = " << value.pQueuePriorities << '\n';
2696	s << '}';
2697	return s;
2698}
2699
2700std::ostream& operator<< (std::ostream& s, const VkDeviceCreateInfo& value)
2701{
2702	s << "VkDeviceCreateInfo = {\n";
2703	s << "\tsType = " << value.sType << '\n';
2704	s << "\tpNext = " << value.pNext << '\n';
2705	s << "\tflags = " << getDeviceCreateFlagsStr(value.flags) << '\n';
2706	s << "\tqueueCreateInfoCount = " << value.queueCreateInfoCount << '\n';
2707	s << "\tpQueueCreateInfos = " << value.pQueueCreateInfos << '\n';
2708	s << "\tenabledLayerCount = " << value.enabledLayerCount << '\n';
2709	s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
2710	s << "\tenabledExtensionCount = " << value.enabledExtensionCount << '\n';
2711	s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
2712	s << "\tpEnabledFeatures = " << value.pEnabledFeatures << '\n';
2713	s << '}';
2714	return s;
2715}
2716
2717std::ostream& operator<< (std::ostream& s, const VkExtensionProperties& value)
2718{
2719	s << "VkExtensionProperties = {\n";
2720	s << "\textensionName = " << (const char*)value.extensionName << '\n';
2721	s << "\tspecVersion = " << value.specVersion << '\n';
2722	s << '}';
2723	return s;
2724}
2725
2726std::ostream& operator<< (std::ostream& s, const VkLayerProperties& value)
2727{
2728	s << "VkLayerProperties = {\n";
2729	s << "\tlayerName = " << (const char*)value.layerName << '\n';
2730	s << "\tspecVersion = " << value.specVersion << '\n';
2731	s << "\timplementationVersion = " << value.implementationVersion << '\n';
2732	s << "\tdescription = " << (const char*)value.description << '\n';
2733	s << '}';
2734	return s;
2735}
2736
2737std::ostream& operator<< (std::ostream& s, const VkSubmitInfo& value)
2738{
2739	s << "VkSubmitInfo = {\n";
2740	s << "\tsType = " << value.sType << '\n';
2741	s << "\tpNext = " << value.pNext << '\n';
2742	s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
2743	s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
2744	s << "\tpWaitDstStageMask = " << value.pWaitDstStageMask << '\n';
2745	s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
2746	s << "\tpCommandBuffers = " << value.pCommandBuffers << '\n';
2747	s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
2748	s << "\tpSignalSemaphores = " << value.pSignalSemaphores << '\n';
2749	s << '}';
2750	return s;
2751}
2752
2753std::ostream& operator<< (std::ostream& s, const VkMemoryAllocateInfo& value)
2754{
2755	s << "VkMemoryAllocateInfo = {\n";
2756	s << "\tsType = " << value.sType << '\n';
2757	s << "\tpNext = " << value.pNext << '\n';
2758	s << "\tallocationSize = " << value.allocationSize << '\n';
2759	s << "\tmemoryTypeIndex = " << value.memoryTypeIndex << '\n';
2760	s << '}';
2761	return s;
2762}
2763
2764std::ostream& operator<< (std::ostream& s, const VkMappedMemoryRange& value)
2765{
2766	s << "VkMappedMemoryRange = {\n";
2767	s << "\tsType = " << value.sType << '\n';
2768	s << "\tpNext = " << value.pNext << '\n';
2769	s << "\tmemory = " << value.memory << '\n';
2770	s << "\toffset = " << value.offset << '\n';
2771	s << "\tsize = " << value.size << '\n';
2772	s << '}';
2773	return s;
2774}
2775
2776std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements& value)
2777{
2778	s << "VkMemoryRequirements = {\n";
2779	s << "\tsize = " << value.size << '\n';
2780	s << "\talignment = " << value.alignment << '\n';
2781	s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
2782	s << '}';
2783	return s;
2784}
2785
2786std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties& value)
2787{
2788	s << "VkSparseImageFormatProperties = {\n";
2789	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
2790	s << "\timageGranularity = " << value.imageGranularity << '\n';
2791	s << "\tflags = " << getSparseImageFormatFlagsStr(value.flags) << '\n';
2792	s << '}';
2793	return s;
2794}
2795
2796std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements& value)
2797{
2798	s << "VkSparseImageMemoryRequirements = {\n";
2799	s << "\tformatProperties = " << value.formatProperties << '\n';
2800	s << "\timageMipTailFirstLod = " << value.imageMipTailFirstLod << '\n';
2801	s << "\timageMipTailSize = " << value.imageMipTailSize << '\n';
2802	s << "\timageMipTailOffset = " << value.imageMipTailOffset << '\n';
2803	s << "\timageMipTailStride = " << value.imageMipTailStride << '\n';
2804	s << '}';
2805	return s;
2806}
2807
2808std::ostream& operator<< (std::ostream& s, const VkSparseMemoryBind& value)
2809{
2810	s << "VkSparseMemoryBind = {\n";
2811	s << "\tresourceOffset = " << value.resourceOffset << '\n';
2812	s << "\tsize = " << value.size << '\n';
2813	s << "\tmemory = " << value.memory << '\n';
2814	s << "\tmemoryOffset = " << value.memoryOffset << '\n';
2815	s << "\tflags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
2816	s << '}';
2817	return s;
2818}
2819
2820std::ostream& operator<< (std::ostream& s, const VkSparseBufferMemoryBindInfo& value)
2821{
2822	s << "VkSparseBufferMemoryBindInfo = {\n";
2823	s << "\tbuffer = " << value.buffer << '\n';
2824	s << "\tbindCount = " << value.bindCount << '\n';
2825	s << "\tpBinds = " << value.pBinds << '\n';
2826	s << '}';
2827	return s;
2828}
2829
2830std::ostream& operator<< (std::ostream& s, const VkSparseImageOpaqueMemoryBindInfo& value)
2831{
2832	s << "VkSparseImageOpaqueMemoryBindInfo = {\n";
2833	s << "\timage = " << value.image << '\n';
2834	s << "\tbindCount = " << value.bindCount << '\n';
2835	s << "\tpBinds = " << value.pBinds << '\n';
2836	s << '}';
2837	return s;
2838}
2839
2840std::ostream& operator<< (std::ostream& s, const VkImageSubresource& value)
2841{
2842	s << "VkImageSubresource = {\n";
2843	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
2844	s << "\tmipLevel = " << value.mipLevel << '\n';
2845	s << "\tarrayLayer = " << value.arrayLayer << '\n';
2846	s << '}';
2847	return s;
2848}
2849
2850std::ostream& operator<< (std::ostream& s, const VkOffset3D& value)
2851{
2852	s << "VkOffset3D = {\n";
2853	s << "\tx = " << value.x << '\n';
2854	s << "\ty = " << value.y << '\n';
2855	s << "\tz = " << value.z << '\n';
2856	s << '}';
2857	return s;
2858}
2859
2860std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBind& value)
2861{
2862	s << "VkSparseImageMemoryBind = {\n";
2863	s << "\tsubresource = " << value.subresource << '\n';
2864	s << "\toffset = " << value.offset << '\n';
2865	s << "\textent = " << value.extent << '\n';
2866	s << "\tmemory = " << value.memory << '\n';
2867	s << "\tmemoryOffset = " << value.memoryOffset << '\n';
2868	s << "\tflags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
2869	s << '}';
2870	return s;
2871}
2872
2873std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBindInfo& value)
2874{
2875	s << "VkSparseImageMemoryBindInfo = {\n";
2876	s << "\timage = " << value.image << '\n';
2877	s << "\tbindCount = " << value.bindCount << '\n';
2878	s << "\tpBinds = " << value.pBinds << '\n';
2879	s << '}';
2880	return s;
2881}
2882
2883std::ostream& operator<< (std::ostream& s, const VkBindSparseInfo& value)
2884{
2885	s << "VkBindSparseInfo = {\n";
2886	s << "\tsType = " << value.sType << '\n';
2887	s << "\tpNext = " << value.pNext << '\n';
2888	s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
2889	s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
2890	s << "\tbufferBindCount = " << value.bufferBindCount << '\n';
2891	s << "\tpBufferBinds = " << value.pBufferBinds << '\n';
2892	s << "\timageOpaqueBindCount = " << value.imageOpaqueBindCount << '\n';
2893	s << "\tpImageOpaqueBinds = " << value.pImageOpaqueBinds << '\n';
2894	s << "\timageBindCount = " << value.imageBindCount << '\n';
2895	s << "\tpImageBinds = " << value.pImageBinds << '\n';
2896	s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
2897	s << "\tpSignalSemaphores = " << value.pSignalSemaphores << '\n';
2898	s << '}';
2899	return s;
2900}
2901
2902std::ostream& operator<< (std::ostream& s, const VkFenceCreateInfo& value)
2903{
2904	s << "VkFenceCreateInfo = {\n";
2905	s << "\tsType = " << value.sType << '\n';
2906	s << "\tpNext = " << value.pNext << '\n';
2907	s << "\tflags = " << getFenceCreateFlagsStr(value.flags) << '\n';
2908	s << '}';
2909	return s;
2910}
2911
2912std::ostream& operator<< (std::ostream& s, const VkSemaphoreCreateInfo& value)
2913{
2914	s << "VkSemaphoreCreateInfo = {\n";
2915	s << "\tsType = " << value.sType << '\n';
2916	s << "\tpNext = " << value.pNext << '\n';
2917	s << "\tflags = " << getSemaphoreCreateFlagsStr(value.flags) << '\n';
2918	s << '}';
2919	return s;
2920}
2921
2922std::ostream& operator<< (std::ostream& s, const VkEventCreateInfo& value)
2923{
2924	s << "VkEventCreateInfo = {\n";
2925	s << "\tsType = " << value.sType << '\n';
2926	s << "\tpNext = " << value.pNext << '\n';
2927	s << "\tflags = " << getEventCreateFlagsStr(value.flags) << '\n';
2928	s << '}';
2929	return s;
2930}
2931
2932std::ostream& operator<< (std::ostream& s, const VkQueryPoolCreateInfo& value)
2933{
2934	s << "VkQueryPoolCreateInfo = {\n";
2935	s << "\tsType = " << value.sType << '\n';
2936	s << "\tpNext = " << value.pNext << '\n';
2937	s << "\tflags = " << getQueryPoolCreateFlagsStr(value.flags) << '\n';
2938	s << "\tqueryType = " << value.queryType << '\n';
2939	s << "\tqueryCount = " << value.queryCount << '\n';
2940	s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
2941	s << '}';
2942	return s;
2943}
2944
2945std::ostream& operator<< (std::ostream& s, const VkBufferCreateInfo& value)
2946{
2947	s << "VkBufferCreateInfo = {\n";
2948	s << "\tsType = " << value.sType << '\n';
2949	s << "\tpNext = " << value.pNext << '\n';
2950	s << "\tflags = " << getBufferCreateFlagsStr(value.flags) << '\n';
2951	s << "\tsize = " << value.size << '\n';
2952	s << "\tusage = " << getBufferUsageFlagsStr(value.usage) << '\n';
2953	s << "\tsharingMode = " << value.sharingMode << '\n';
2954	s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
2955	s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
2956	s << '}';
2957	return s;
2958}
2959
2960std::ostream& operator<< (std::ostream& s, const VkBufferViewCreateInfo& value)
2961{
2962	s << "VkBufferViewCreateInfo = {\n";
2963	s << "\tsType = " << value.sType << '\n';
2964	s << "\tpNext = " << value.pNext << '\n';
2965	s << "\tflags = " << getBufferViewCreateFlagsStr(value.flags) << '\n';
2966	s << "\tbuffer = " << value.buffer << '\n';
2967	s << "\tformat = " << value.format << '\n';
2968	s << "\toffset = " << value.offset << '\n';
2969	s << "\trange = " << value.range << '\n';
2970	s << '}';
2971	return s;
2972}
2973
2974std::ostream& operator<< (std::ostream& s, const VkImageCreateInfo& value)
2975{
2976	s << "VkImageCreateInfo = {\n";
2977	s << "\tsType = " << value.sType << '\n';
2978	s << "\tpNext = " << value.pNext << '\n';
2979	s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
2980	s << "\timageType = " << value.imageType << '\n';
2981	s << "\tformat = " << value.format << '\n';
2982	s << "\textent = " << value.extent << '\n';
2983	s << "\tmipLevels = " << value.mipLevels << '\n';
2984	s << "\tarrayLayers = " << value.arrayLayers << '\n';
2985	s << "\tsamples = " << value.samples << '\n';
2986	s << "\ttiling = " << value.tiling << '\n';
2987	s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
2988	s << "\tsharingMode = " << value.sharingMode << '\n';
2989	s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
2990	s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
2991	s << "\tinitialLayout = " << value.initialLayout << '\n';
2992	s << '}';
2993	return s;
2994}
2995
2996std::ostream& operator<< (std::ostream& s, const VkSubresourceLayout& value)
2997{
2998	s << "VkSubresourceLayout = {\n";
2999	s << "\toffset = " << value.offset << '\n';
3000	s << "\tsize = " << value.size << '\n';
3001	s << "\trowPitch = " << value.rowPitch << '\n';
3002	s << "\tarrayPitch = " << value.arrayPitch << '\n';
3003	s << "\tdepthPitch = " << value.depthPitch << '\n';
3004	s << '}';
3005	return s;
3006}
3007
3008std::ostream& operator<< (std::ostream& s, const VkComponentMapping& value)
3009{
3010	s << "VkComponentMapping = {\n";
3011	s << "\tr = " << value.r << '\n';
3012	s << "\tg = " << value.g << '\n';
3013	s << "\tb = " << value.b << '\n';
3014	s << "\ta = " << value.a << '\n';
3015	s << '}';
3016	return s;
3017}
3018
3019std::ostream& operator<< (std::ostream& s, const VkImageSubresourceRange& value)
3020{
3021	s << "VkImageSubresourceRange = {\n";
3022	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
3023	s << "\tbaseMipLevel = " << value.baseMipLevel << '\n';
3024	s << "\tlevelCount = " << value.levelCount << '\n';
3025	s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
3026	s << "\tlayerCount = " << value.layerCount << '\n';
3027	s << '}';
3028	return s;
3029}
3030
3031std::ostream& operator<< (std::ostream& s, const VkImageViewCreateInfo& value)
3032{
3033	s << "VkImageViewCreateInfo = {\n";
3034	s << "\tsType = " << value.sType << '\n';
3035	s << "\tpNext = " << value.pNext << '\n';
3036	s << "\tflags = " << getImageViewCreateFlagsStr(value.flags) << '\n';
3037	s << "\timage = " << value.image << '\n';
3038	s << "\tviewType = " << value.viewType << '\n';
3039	s << "\tformat = " << value.format << '\n';
3040	s << "\tcomponents = " << value.components << '\n';
3041	s << "\tsubresourceRange = " << value.subresourceRange << '\n';
3042	s << '}';
3043	return s;
3044}
3045
3046std::ostream& operator<< (std::ostream& s, const VkShaderModuleCreateInfo& value)
3047{
3048	s << "VkShaderModuleCreateInfo = {\n";
3049	s << "\tsType = " << value.sType << '\n';
3050	s << "\tpNext = " << value.pNext << '\n';
3051	s << "\tflags = " << getShaderModuleCreateFlagsStr(value.flags) << '\n';
3052	s << "\tcodeSize = " << value.codeSize << '\n';
3053	s << "\tpCode = " << value.pCode << '\n';
3054	s << '}';
3055	return s;
3056}
3057
3058std::ostream& operator<< (std::ostream& s, const VkPipelineCacheCreateInfo& value)
3059{
3060	s << "VkPipelineCacheCreateInfo = {\n";
3061	s << "\tsType = " << value.sType << '\n';
3062	s << "\tpNext = " << value.pNext << '\n';
3063	s << "\tflags = " << getPipelineCacheCreateFlagsStr(value.flags) << '\n';
3064	s << "\tinitialDataSize = " << value.initialDataSize << '\n';
3065	s << "\tpInitialData = " << value.pInitialData << '\n';
3066	s << '}';
3067	return s;
3068}
3069
3070std::ostream& operator<< (std::ostream& s, const VkSpecializationMapEntry& value)
3071{
3072	s << "VkSpecializationMapEntry = {\n";
3073	s << "\tconstantID = " << value.constantID << '\n';
3074	s << "\toffset = " << value.offset << '\n';
3075	s << "\tsize = " << value.size << '\n';
3076	s << '}';
3077	return s;
3078}
3079
3080std::ostream& operator<< (std::ostream& s, const VkSpecializationInfo& value)
3081{
3082	s << "VkSpecializationInfo = {\n";
3083	s << "\tmapEntryCount = " << value.mapEntryCount << '\n';
3084	s << "\tpMapEntries = " << value.pMapEntries << '\n';
3085	s << "\tdataSize = " << value.dataSize << '\n';
3086	s << "\tpData = " << value.pData << '\n';
3087	s << '}';
3088	return s;
3089}
3090
3091std::ostream& operator<< (std::ostream& s, const VkPipelineShaderStageCreateInfo& value)
3092{
3093	s << "VkPipelineShaderStageCreateInfo = {\n";
3094	s << "\tsType = " << value.sType << '\n';
3095	s << "\tpNext = " << value.pNext << '\n';
3096	s << "\tflags = " << getPipelineShaderStageCreateFlagsStr(value.flags) << '\n';
3097	s << "\tstage = " << value.stage << '\n';
3098	s << "\tmodule = " << value.module << '\n';
3099	s << "\tpName = " << getCharPtrStr(value.pName) << '\n';
3100	s << "\tpSpecializationInfo = " << value.pSpecializationInfo << '\n';
3101	s << '}';
3102	return s;
3103}
3104
3105std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDescription& value)
3106{
3107	s << "VkVertexInputBindingDescription = {\n";
3108	s << "\tbinding = " << value.binding << '\n';
3109	s << "\tstride = " << value.stride << '\n';
3110	s << "\tinputRate = " << value.inputRate << '\n';
3111	s << '}';
3112	return s;
3113}
3114
3115std::ostream& operator<< (std::ostream& s, const VkVertexInputAttributeDescription& value)
3116{
3117	s << "VkVertexInputAttributeDescription = {\n";
3118	s << "\tlocation = " << value.location << '\n';
3119	s << "\tbinding = " << value.binding << '\n';
3120	s << "\tformat = " << value.format << '\n';
3121	s << "\toffset = " << value.offset << '\n';
3122	s << '}';
3123	return s;
3124}
3125
3126std::ostream& operator<< (std::ostream& s, const VkPipelineVertexInputStateCreateInfo& value)
3127{
3128	s << "VkPipelineVertexInputStateCreateInfo = {\n";
3129	s << "\tsType = " << value.sType << '\n';
3130	s << "\tpNext = " << value.pNext << '\n';
3131	s << "\tflags = " << getPipelineVertexInputStateCreateFlagsStr(value.flags) << '\n';
3132	s << "\tvertexBindingDescriptionCount = " << value.vertexBindingDescriptionCount << '\n';
3133	s << "\tpVertexBindingDescriptions = " << value.pVertexBindingDescriptions << '\n';
3134	s << "\tvertexAttributeDescriptionCount = " << value.vertexAttributeDescriptionCount << '\n';
3135	s << "\tpVertexAttributeDescriptions = " << value.pVertexAttributeDescriptions << '\n';
3136	s << '}';
3137	return s;
3138}
3139
3140std::ostream& operator<< (std::ostream& s, const VkPipelineInputAssemblyStateCreateInfo& value)
3141{
3142	s << "VkPipelineInputAssemblyStateCreateInfo = {\n";
3143	s << "\tsType = " << value.sType << '\n';
3144	s << "\tpNext = " << value.pNext << '\n';
3145	s << "\tflags = " << getPipelineInputAssemblyStateCreateFlagsStr(value.flags) << '\n';
3146	s << "\ttopology = " << value.topology << '\n';
3147	s << "\tprimitiveRestartEnable = " << value.primitiveRestartEnable << '\n';
3148	s << '}';
3149	return s;
3150}
3151
3152std::ostream& operator<< (std::ostream& s, const VkPipelineTessellationStateCreateInfo& value)
3153{
3154	s << "VkPipelineTessellationStateCreateInfo = {\n";
3155	s << "\tsType = " << value.sType << '\n';
3156	s << "\tpNext = " << value.pNext << '\n';
3157	s << "\tflags = " << getPipelineTessellationStateCreateFlagsStr(value.flags) << '\n';
3158	s << "\tpatchControlPoints = " << value.patchControlPoints << '\n';
3159	s << '}';
3160	return s;
3161}
3162
3163std::ostream& operator<< (std::ostream& s, const VkViewport& value)
3164{
3165	s << "VkViewport = {\n";
3166	s << "\tx = " << value.x << '\n';
3167	s << "\ty = " << value.y << '\n';
3168	s << "\twidth = " << value.width << '\n';
3169	s << "\theight = " << value.height << '\n';
3170	s << "\tminDepth = " << value.minDepth << '\n';
3171	s << "\tmaxDepth = " << value.maxDepth << '\n';
3172	s << '}';
3173	return s;
3174}
3175
3176std::ostream& operator<< (std::ostream& s, const VkOffset2D& value)
3177{
3178	s << "VkOffset2D = {\n";
3179	s << "\tx = " << value.x << '\n';
3180	s << "\ty = " << value.y << '\n';
3181	s << '}';
3182	return s;
3183}
3184
3185std::ostream& operator<< (std::ostream& s, const VkExtent2D& value)
3186{
3187	s << "VkExtent2D = {\n";
3188	s << "\twidth = " << value.width << '\n';
3189	s << "\theight = " << value.height << '\n';
3190	s << '}';
3191	return s;
3192}
3193
3194std::ostream& operator<< (std::ostream& s, const VkRect2D& value)
3195{
3196	s << "VkRect2D = {\n";
3197	s << "\toffset = " << value.offset << '\n';
3198	s << "\textent = " << value.extent << '\n';
3199	s << '}';
3200	return s;
3201}
3202
3203std::ostream& operator<< (std::ostream& s, const VkPipelineViewportStateCreateInfo& value)
3204{
3205	s << "VkPipelineViewportStateCreateInfo = {\n";
3206	s << "\tsType = " << value.sType << '\n';
3207	s << "\tpNext = " << value.pNext << '\n';
3208	s << "\tflags = " << getPipelineViewportStateCreateFlagsStr(value.flags) << '\n';
3209	s << "\tviewportCount = " << value.viewportCount << '\n';
3210	s << "\tpViewports = " << value.pViewports << '\n';
3211	s << "\tscissorCount = " << value.scissorCount << '\n';
3212	s << "\tpScissors = " << value.pScissors << '\n';
3213	s << '}';
3214	return s;
3215}
3216
3217std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateCreateInfo& value)
3218{
3219	s << "VkPipelineRasterizationStateCreateInfo = {\n";
3220	s << "\tsType = " << value.sType << '\n';
3221	s << "\tpNext = " << value.pNext << '\n';
3222	s << "\tflags = " << getPipelineRasterizationStateCreateFlagsStr(value.flags) << '\n';
3223	s << "\tdepthClampEnable = " << value.depthClampEnable << '\n';
3224	s << "\trasterizerDiscardEnable = " << value.rasterizerDiscardEnable << '\n';
3225	s << "\tpolygonMode = " << value.polygonMode << '\n';
3226	s << "\tcullMode = " << getCullModeFlagsStr(value.cullMode) << '\n';
3227	s << "\tfrontFace = " << value.frontFace << '\n';
3228	s << "\tdepthBiasEnable = " << value.depthBiasEnable << '\n';
3229	s << "\tdepthBiasConstantFactor = " << value.depthBiasConstantFactor << '\n';
3230	s << "\tdepthBiasClamp = " << value.depthBiasClamp << '\n';
3231	s << "\tdepthBiasSlopeFactor = " << value.depthBiasSlopeFactor << '\n';
3232	s << "\tlineWidth = " << value.lineWidth << '\n';
3233	s << '}';
3234	return s;
3235}
3236
3237std::ostream& operator<< (std::ostream& s, const VkPipelineMultisampleStateCreateInfo& value)
3238{
3239	s << "VkPipelineMultisampleStateCreateInfo = {\n";
3240	s << "\tsType = " << value.sType << '\n';
3241	s << "\tpNext = " << value.pNext << '\n';
3242	s << "\tflags = " << getPipelineMultisampleStateCreateFlagsStr(value.flags) << '\n';
3243	s << "\trasterizationSamples = " << value.rasterizationSamples << '\n';
3244	s << "\tsampleShadingEnable = " << value.sampleShadingEnable << '\n';
3245	s << "\tminSampleShading = " << value.minSampleShading << '\n';
3246	s << "\tpSampleMask = " << value.pSampleMask << '\n';
3247	s << "\talphaToCoverageEnable = " << value.alphaToCoverageEnable << '\n';
3248	s << "\talphaToOneEnable = " << value.alphaToOneEnable << '\n';
3249	s << '}';
3250	return s;
3251}
3252
3253std::ostream& operator<< (std::ostream& s, const VkStencilOpState& value)
3254{
3255	s << "VkStencilOpState = {\n";
3256	s << "\tfailOp = " << value.failOp << '\n';
3257	s << "\tpassOp = " << value.passOp << '\n';
3258	s << "\tdepthFailOp = " << value.depthFailOp << '\n';
3259	s << "\tcompareOp = " << value.compareOp << '\n';
3260	s << "\tcompareMask = " << value.compareMask << '\n';
3261	s << "\twriteMask = " << value.writeMask << '\n';
3262	s << "\treference = " << value.reference << '\n';
3263	s << '}';
3264	return s;
3265}
3266
3267std::ostream& operator<< (std::ostream& s, const VkPipelineDepthStencilStateCreateInfo& value)
3268{
3269	s << "VkPipelineDepthStencilStateCreateInfo = {\n";
3270	s << "\tsType = " << value.sType << '\n';
3271	s << "\tpNext = " << value.pNext << '\n';
3272	s << "\tflags = " << getPipelineDepthStencilStateCreateFlagsStr(value.flags) << '\n';
3273	s << "\tdepthTestEnable = " << value.depthTestEnable << '\n';
3274	s << "\tdepthWriteEnable = " << value.depthWriteEnable << '\n';
3275	s << "\tdepthCompareOp = " << value.depthCompareOp << '\n';
3276	s << "\tdepthBoundsTestEnable = " << value.depthBoundsTestEnable << '\n';
3277	s << "\tstencilTestEnable = " << value.stencilTestEnable << '\n';
3278	s << "\tfront = " << value.front << '\n';
3279	s << "\tback = " << value.back << '\n';
3280	s << "\tminDepthBounds = " << value.minDepthBounds << '\n';
3281	s << "\tmaxDepthBounds = " << value.maxDepthBounds << '\n';
3282	s << '}';
3283	return s;
3284}
3285
3286std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendAttachmentState& value)
3287{
3288	s << "VkPipelineColorBlendAttachmentState = {\n";
3289	s << "\tblendEnable = " << value.blendEnable << '\n';
3290	s << "\tsrcColorBlendFactor = " << value.srcColorBlendFactor << '\n';
3291	s << "\tdstColorBlendFactor = " << value.dstColorBlendFactor << '\n';
3292	s << "\tcolorBlendOp = " << value.colorBlendOp << '\n';
3293	s << "\tsrcAlphaBlendFactor = " << value.srcAlphaBlendFactor << '\n';
3294	s << "\tdstAlphaBlendFactor = " << value.dstAlphaBlendFactor << '\n';
3295	s << "\talphaBlendOp = " << value.alphaBlendOp << '\n';
3296	s << "\tcolorWriteMask = " << getColorComponentFlagsStr(value.colorWriteMask) << '\n';
3297	s << '}';
3298	return s;
3299}
3300
3301std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendStateCreateInfo& value)
3302{
3303	s << "VkPipelineColorBlendStateCreateInfo = {\n";
3304	s << "\tsType = " << value.sType << '\n';
3305	s << "\tpNext = " << value.pNext << '\n';
3306	s << "\tflags = " << getPipelineColorBlendStateCreateFlagsStr(value.flags) << '\n';
3307	s << "\tlogicOpEnable = " << value.logicOpEnable << '\n';
3308	s << "\tlogicOp = " << value.logicOp << '\n';
3309	s << "\tattachmentCount = " << value.attachmentCount << '\n';
3310	s << "\tpAttachments = " << value.pAttachments << '\n';
3311	s << "\tblendConstants = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.blendConstants), DE_ARRAY_END(value.blendConstants)) << '\n';
3312	s << '}';
3313	return s;
3314}
3315
3316std::ostream& operator<< (std::ostream& s, const VkPipelineDynamicStateCreateInfo& value)
3317{
3318	s << "VkPipelineDynamicStateCreateInfo = {\n";
3319	s << "\tsType = " << value.sType << '\n';
3320	s << "\tpNext = " << value.pNext << '\n';
3321	s << "\tflags = " << getPipelineDynamicStateCreateFlagsStr(value.flags) << '\n';
3322	s << "\tdynamicStateCount = " << value.dynamicStateCount << '\n';
3323	s << "\tpDynamicStates = " << value.pDynamicStates << '\n';
3324	s << '}';
3325	return s;
3326}
3327
3328std::ostream& operator<< (std::ostream& s, const VkGraphicsPipelineCreateInfo& value)
3329{
3330	s << "VkGraphicsPipelineCreateInfo = {\n";
3331	s << "\tsType = " << value.sType << '\n';
3332	s << "\tpNext = " << value.pNext << '\n';
3333	s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
3334	s << "\tstageCount = " << value.stageCount << '\n';
3335	s << "\tpStages = " << value.pStages << '\n';
3336	s << "\tpVertexInputState = " << value.pVertexInputState << '\n';
3337	s << "\tpInputAssemblyState = " << value.pInputAssemblyState << '\n';
3338	s << "\tpTessellationState = " << value.pTessellationState << '\n';
3339	s << "\tpViewportState = " << value.pViewportState << '\n';
3340	s << "\tpRasterizationState = " << value.pRasterizationState << '\n';
3341	s << "\tpMultisampleState = " << value.pMultisampleState << '\n';
3342	s << "\tpDepthStencilState = " << value.pDepthStencilState << '\n';
3343	s << "\tpColorBlendState = " << value.pColorBlendState << '\n';
3344	s << "\tpDynamicState = " << value.pDynamicState << '\n';
3345	s << "\tlayout = " << value.layout << '\n';
3346	s << "\trenderPass = " << value.renderPass << '\n';
3347	s << "\tsubpass = " << value.subpass << '\n';
3348	s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
3349	s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
3350	s << '}';
3351	return s;
3352}
3353
3354std::ostream& operator<< (std::ostream& s, const VkComputePipelineCreateInfo& value)
3355{
3356	s << "VkComputePipelineCreateInfo = {\n";
3357	s << "\tsType = " << value.sType << '\n';
3358	s << "\tpNext = " << value.pNext << '\n';
3359	s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
3360	s << "\tstage = " << value.stage << '\n';
3361	s << "\tlayout = " << value.layout << '\n';
3362	s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
3363	s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
3364	s << '}';
3365	return s;
3366}
3367
3368std::ostream& operator<< (std::ostream& s, const VkPushConstantRange& value)
3369{
3370	s << "VkPushConstantRange = {\n";
3371	s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
3372	s << "\toffset = " << value.offset << '\n';
3373	s << "\tsize = " << value.size << '\n';
3374	s << '}';
3375	return s;
3376}
3377
3378std::ostream& operator<< (std::ostream& s, const VkPipelineLayoutCreateInfo& value)
3379{
3380	s << "VkPipelineLayoutCreateInfo = {\n";
3381	s << "\tsType = " << value.sType << '\n';
3382	s << "\tpNext = " << value.pNext << '\n';
3383	s << "\tflags = " << getPipelineLayoutCreateFlagsStr(value.flags) << '\n';
3384	s << "\tsetLayoutCount = " << value.setLayoutCount << '\n';
3385	s << "\tpSetLayouts = " << value.pSetLayouts << '\n';
3386	s << "\tpushConstantRangeCount = " << value.pushConstantRangeCount << '\n';
3387	s << "\tpPushConstantRanges = " << value.pPushConstantRanges << '\n';
3388	s << '}';
3389	return s;
3390}
3391
3392std::ostream& operator<< (std::ostream& s, const VkSamplerCreateInfo& value)
3393{
3394	s << "VkSamplerCreateInfo = {\n";
3395	s << "\tsType = " << value.sType << '\n';
3396	s << "\tpNext = " << value.pNext << '\n';
3397	s << "\tflags = " << getSamplerCreateFlagsStr(value.flags) << '\n';
3398	s << "\tmagFilter = " << value.magFilter << '\n';
3399	s << "\tminFilter = " << value.minFilter << '\n';
3400	s << "\tmipmapMode = " << value.mipmapMode << '\n';
3401	s << "\taddressModeU = " << value.addressModeU << '\n';
3402	s << "\taddressModeV = " << value.addressModeV << '\n';
3403	s << "\taddressModeW = " << value.addressModeW << '\n';
3404	s << "\tmipLodBias = " << value.mipLodBias << '\n';
3405	s << "\tanisotropyEnable = " << value.anisotropyEnable << '\n';
3406	s << "\tmaxAnisotropy = " << value.maxAnisotropy << '\n';
3407	s << "\tcompareEnable = " << value.compareEnable << '\n';
3408	s << "\tcompareOp = " << value.compareOp << '\n';
3409	s << "\tminLod = " << value.minLod << '\n';
3410	s << "\tmaxLod = " << value.maxLod << '\n';
3411	s << "\tborderColor = " << value.borderColor << '\n';
3412	s << "\tunnormalizedCoordinates = " << value.unnormalizedCoordinates << '\n';
3413	s << '}';
3414	return s;
3415}
3416
3417std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBinding& value)
3418{
3419	s << "VkDescriptorSetLayoutBinding = {\n";
3420	s << "\tbinding = " << value.binding << '\n';
3421	s << "\tdescriptorType = " << value.descriptorType << '\n';
3422	s << "\tdescriptorCount = " << value.descriptorCount << '\n';
3423	s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
3424	s << "\tpImmutableSamplers = " << value.pImmutableSamplers << '\n';
3425	s << '}';
3426	return s;
3427}
3428
3429std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutCreateInfo& value)
3430{
3431	s << "VkDescriptorSetLayoutCreateInfo = {\n";
3432	s << "\tsType = " << value.sType << '\n';
3433	s << "\tpNext = " << value.pNext << '\n';
3434	s << "\tflags = " << getDescriptorSetLayoutCreateFlagsStr(value.flags) << '\n';
3435	s << "\tbindingCount = " << value.bindingCount << '\n';
3436	s << "\tpBindings = " << value.pBindings << '\n';
3437	s << '}';
3438	return s;
3439}
3440
3441std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolSize& value)
3442{
3443	s << "VkDescriptorPoolSize = {\n";
3444	s << "\ttype = " << value.type << '\n';
3445	s << "\tdescriptorCount = " << value.descriptorCount << '\n';
3446	s << '}';
3447	return s;
3448}
3449
3450std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolCreateInfo& value)
3451{
3452	s << "VkDescriptorPoolCreateInfo = {\n";
3453	s << "\tsType = " << value.sType << '\n';
3454	s << "\tpNext = " << value.pNext << '\n';
3455	s << "\tflags = " << getDescriptorPoolCreateFlagsStr(value.flags) << '\n';
3456	s << "\tmaxSets = " << value.maxSets << '\n';
3457	s << "\tpoolSizeCount = " << value.poolSizeCount << '\n';
3458	s << "\tpPoolSizes = " << value.pPoolSizes << '\n';
3459	s << '}';
3460	return s;
3461}
3462
3463std::ostream& operator<< (std::ostream& s, const VkDescriptorSetAllocateInfo& value)
3464{
3465	s << "VkDescriptorSetAllocateInfo = {\n";
3466	s << "\tsType = " << value.sType << '\n';
3467	s << "\tpNext = " << value.pNext << '\n';
3468	s << "\tdescriptorPool = " << value.descriptorPool << '\n';
3469	s << "\tdescriptorSetCount = " << value.descriptorSetCount << '\n';
3470	s << "\tpSetLayouts = " << value.pSetLayouts << '\n';
3471	s << '}';
3472	return s;
3473}
3474
3475std::ostream& operator<< (std::ostream& s, const VkDescriptorImageInfo& value)
3476{
3477	s << "VkDescriptorImageInfo = {\n";
3478	s << "\tsampler = " << value.sampler << '\n';
3479	s << "\timageView = " << value.imageView << '\n';
3480	s << "\timageLayout = " << value.imageLayout << '\n';
3481	s << '}';
3482	return s;
3483}
3484
3485std::ostream& operator<< (std::ostream& s, const VkDescriptorBufferInfo& value)
3486{
3487	s << "VkDescriptorBufferInfo = {\n";
3488	s << "\tbuffer = " << value.buffer << '\n';
3489	s << "\toffset = " << value.offset << '\n';
3490	s << "\trange = " << value.range << '\n';
3491	s << '}';
3492	return s;
3493}
3494
3495std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSet& value)
3496{
3497	s << "VkWriteDescriptorSet = {\n";
3498	s << "\tsType = " << value.sType << '\n';
3499	s << "\tpNext = " << value.pNext << '\n';
3500	s << "\tdstSet = " << value.dstSet << '\n';
3501	s << "\tdstBinding = " << value.dstBinding << '\n';
3502	s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
3503	s << "\tdescriptorCount = " << value.descriptorCount << '\n';
3504	s << "\tdescriptorType = " << value.descriptorType << '\n';
3505	s << "\tpImageInfo = " << value.pImageInfo << '\n';
3506	s << "\tpBufferInfo = " << value.pBufferInfo << '\n';
3507	s << "\tpTexelBufferView = " << value.pTexelBufferView << '\n';
3508	s << '}';
3509	return s;
3510}
3511
3512std::ostream& operator<< (std::ostream& s, const VkCopyDescriptorSet& value)
3513{
3514	s << "VkCopyDescriptorSet = {\n";
3515	s << "\tsType = " << value.sType << '\n';
3516	s << "\tpNext = " << value.pNext << '\n';
3517	s << "\tsrcSet = " << value.srcSet << '\n';
3518	s << "\tsrcBinding = " << value.srcBinding << '\n';
3519	s << "\tsrcArrayElement = " << value.srcArrayElement << '\n';
3520	s << "\tdstSet = " << value.dstSet << '\n';
3521	s << "\tdstBinding = " << value.dstBinding << '\n';
3522	s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
3523	s << "\tdescriptorCount = " << value.descriptorCount << '\n';
3524	s << '}';
3525	return s;
3526}
3527
3528std::ostream& operator<< (std::ostream& s, const VkFramebufferCreateInfo& value)
3529{
3530	s << "VkFramebufferCreateInfo = {\n";
3531	s << "\tsType = " << value.sType << '\n';
3532	s << "\tpNext = " << value.pNext << '\n';
3533	s << "\tflags = " << getFramebufferCreateFlagsStr(value.flags) << '\n';
3534	s << "\trenderPass = " << value.renderPass << '\n';
3535	s << "\tattachmentCount = " << value.attachmentCount << '\n';
3536	s << "\tpAttachments = " << value.pAttachments << '\n';
3537	s << "\twidth = " << value.width << '\n';
3538	s << "\theight = " << value.height << '\n';
3539	s << "\tlayers = " << value.layers << '\n';
3540	s << '}';
3541	return s;
3542}
3543
3544std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription& value)
3545{
3546	s << "VkAttachmentDescription = {\n";
3547	s << "\tflags = " << getAttachmentDescriptionFlagsStr(value.flags) << '\n';
3548	s << "\tformat = " << value.format << '\n';
3549	s << "\tsamples = " << value.samples << '\n';
3550	s << "\tloadOp = " << value.loadOp << '\n';
3551	s << "\tstoreOp = " << value.storeOp << '\n';
3552	s << "\tstencilLoadOp = " << value.stencilLoadOp << '\n';
3553	s << "\tstencilStoreOp = " << value.stencilStoreOp << '\n';
3554	s << "\tinitialLayout = " << value.initialLayout << '\n';
3555	s << "\tfinalLayout = " << value.finalLayout << '\n';
3556	s << '}';
3557	return s;
3558}
3559
3560std::ostream& operator<< (std::ostream& s, const VkAttachmentReference& value)
3561{
3562	s << "VkAttachmentReference = {\n";
3563	s << "\tattachment = " << value.attachment << '\n';
3564	s << "\tlayout = " << value.layout << '\n';
3565	s << '}';
3566	return s;
3567}
3568
3569std::ostream& operator<< (std::ostream& s, const VkSubpassDescription& value)
3570{
3571	s << "VkSubpassDescription = {\n";
3572	s << "\tflags = " << getSubpassDescriptionFlagsStr(value.flags) << '\n';
3573	s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
3574	s << "\tinputAttachmentCount = " << value.inputAttachmentCount << '\n';
3575	s << "\tpInputAttachments = " << value.pInputAttachments << '\n';
3576	s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
3577	s << "\tpColorAttachments = " << value.pColorAttachments << '\n';
3578	s << "\tpResolveAttachments = " << value.pResolveAttachments << '\n';
3579	s << "\tpDepthStencilAttachment = " << value.pDepthStencilAttachment << '\n';
3580	s << "\tpreserveAttachmentCount = " << value.preserveAttachmentCount << '\n';
3581	s << "\tpPreserveAttachments = " << value.pPreserveAttachments << '\n';
3582	s << '}';
3583	return s;
3584}
3585
3586std::ostream& operator<< (std::ostream& s, const VkSubpassDependency& value)
3587{
3588	s << "VkSubpassDependency = {\n";
3589	s << "\tsrcSubpass = " << value.srcSubpass << '\n';
3590	s << "\tdstSubpass = " << value.dstSubpass << '\n';
3591	s << "\tsrcStageMask = " << getPipelineStageFlagsStr(value.srcStageMask) << '\n';
3592	s << "\tdstStageMask = " << getPipelineStageFlagsStr(value.dstStageMask) << '\n';
3593	s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
3594	s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
3595	s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
3596	s << '}';
3597	return s;
3598}
3599
3600std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo& value)
3601{
3602	s << "VkRenderPassCreateInfo = {\n";
3603	s << "\tsType = " << value.sType << '\n';
3604	s << "\tpNext = " << value.pNext << '\n';
3605	s << "\tflags = " << getRenderPassCreateFlagsStr(value.flags) << '\n';
3606	s << "\tattachmentCount = " << value.attachmentCount << '\n';
3607	s << "\tpAttachments = " << value.pAttachments << '\n';
3608	s << "\tsubpassCount = " << value.subpassCount << '\n';
3609	s << "\tpSubpasses = " << value.pSubpasses << '\n';
3610	s << "\tdependencyCount = " << value.dependencyCount << '\n';
3611	s << "\tpDependencies = " << value.pDependencies << '\n';
3612	s << '}';
3613	return s;
3614}
3615
3616std::ostream& operator<< (std::ostream& s, const VkCommandPoolCreateInfo& value)
3617{
3618	s << "VkCommandPoolCreateInfo = {\n";
3619	s << "\tsType = " << value.sType << '\n';
3620	s << "\tpNext = " << value.pNext << '\n';
3621	s << "\tflags = " << getCommandPoolCreateFlagsStr(value.flags) << '\n';
3622	s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
3623	s << '}';
3624	return s;
3625}
3626
3627std::ostream& operator<< (std::ostream& s, const VkCommandBufferAllocateInfo& value)
3628{
3629	s << "VkCommandBufferAllocateInfo = {\n";
3630	s << "\tsType = " << value.sType << '\n';
3631	s << "\tpNext = " << value.pNext << '\n';
3632	s << "\tcommandPool = " << value.commandPool << '\n';
3633	s << "\tlevel = " << value.level << '\n';
3634	s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
3635	s << '}';
3636	return s;
3637}
3638
3639std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceInfo& value)
3640{
3641	s << "VkCommandBufferInheritanceInfo = {\n";
3642	s << "\tsType = " << value.sType << '\n';
3643	s << "\tpNext = " << value.pNext << '\n';
3644	s << "\trenderPass = " << value.renderPass << '\n';
3645	s << "\tsubpass = " << value.subpass << '\n';
3646	s << "\tframebuffer = " << value.framebuffer << '\n';
3647	s << "\tocclusionQueryEnable = " << value.occlusionQueryEnable << '\n';
3648	s << "\tqueryFlags = " << getQueryControlFlagsStr(value.queryFlags) << '\n';
3649	s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
3650	s << '}';
3651	return s;
3652}
3653
3654std::ostream& operator<< (std::ostream& s, const VkCommandBufferBeginInfo& value)
3655{
3656	s << "VkCommandBufferBeginInfo = {\n";
3657	s << "\tsType = " << value.sType << '\n';
3658	s << "\tpNext = " << value.pNext << '\n';
3659	s << "\tflags = " << getCommandBufferUsageFlagsStr(value.flags) << '\n';
3660	s << "\tpInheritanceInfo = " << value.pInheritanceInfo << '\n';
3661	s << '}';
3662	return s;
3663}
3664
3665std::ostream& operator<< (std::ostream& s, const VkBufferCopy& value)
3666{
3667	s << "VkBufferCopy = {\n";
3668	s << "\tsrcOffset = " << value.srcOffset << '\n';
3669	s << "\tdstOffset = " << value.dstOffset << '\n';
3670	s << "\tsize = " << value.size << '\n';
3671	s << '}';
3672	return s;
3673}
3674
3675std::ostream& operator<< (std::ostream& s, const VkImageSubresourceLayers& value)
3676{
3677	s << "VkImageSubresourceLayers = {\n";
3678	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
3679	s << "\tmipLevel = " << value.mipLevel << '\n';
3680	s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
3681	s << "\tlayerCount = " << value.layerCount << '\n';
3682	s << '}';
3683	return s;
3684}
3685
3686std::ostream& operator<< (std::ostream& s, const VkImageCopy& value)
3687{
3688	s << "VkImageCopy = {\n";
3689	s << "\tsrcSubresource = " << value.srcSubresource << '\n';
3690	s << "\tsrcOffset = " << value.srcOffset << '\n';
3691	s << "\tdstSubresource = " << value.dstSubresource << '\n';
3692	s << "\tdstOffset = " << value.dstOffset << '\n';
3693	s << "\textent = " << value.extent << '\n';
3694	s << '}';
3695	return s;
3696}
3697
3698std::ostream& operator<< (std::ostream& s, const VkImageBlit& value)
3699{
3700	s << "VkImageBlit = {\n";
3701	s << "\tsrcSubresource = " << value.srcSubresource << '\n';
3702	s << "\tsrcOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.srcOffsets), DE_ARRAY_END(value.srcOffsets)) << '\n';
3703	s << "\tdstSubresource = " << value.dstSubresource << '\n';
3704	s << "\tdstOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.dstOffsets), DE_ARRAY_END(value.dstOffsets)) << '\n';
3705	s << '}';
3706	return s;
3707}
3708
3709std::ostream& operator<< (std::ostream& s, const VkBufferImageCopy& value)
3710{
3711	s << "VkBufferImageCopy = {\n";
3712	s << "\tbufferOffset = " << value.bufferOffset << '\n';
3713	s << "\tbufferRowLength = " << value.bufferRowLength << '\n';
3714	s << "\tbufferImageHeight = " << value.bufferImageHeight << '\n';
3715	s << "\timageSubresource = " << value.imageSubresource << '\n';
3716	s << "\timageOffset = " << value.imageOffset << '\n';
3717	s << "\timageExtent = " << value.imageExtent << '\n';
3718	s << '}';
3719	return s;
3720}
3721
3722std::ostream& operator<< (std::ostream& s, const VkClearColorValue& value)
3723{
3724	s << "VkClearColorValue = {\n";
3725	s << "\tfloat32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.float32), DE_ARRAY_END(value.float32)) << '\n';
3726	s << "\tint32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.int32), DE_ARRAY_END(value.int32)) << '\n';
3727	s << "\tuint32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.uint32), DE_ARRAY_END(value.uint32)) << '\n';
3728	s << '}';
3729	return s;
3730}
3731
3732std::ostream& operator<< (std::ostream& s, const VkClearDepthStencilValue& value)
3733{
3734	s << "VkClearDepthStencilValue = {\n";
3735	s << "\tdepth = " << value.depth << '\n';
3736	s << "\tstencil = " << value.stencil << '\n';
3737	s << '}';
3738	return s;
3739}
3740
3741std::ostream& operator<< (std::ostream& s, const VkClearValue& value)
3742{
3743	s << "VkClearValue = {\n";
3744	s << "\tcolor = " << value.color << '\n';
3745	s << "\tdepthStencil = " << value.depthStencil << '\n';
3746	s << '}';
3747	return s;
3748}
3749
3750std::ostream& operator<< (std::ostream& s, const VkClearAttachment& value)
3751{
3752	s << "VkClearAttachment = {\n";
3753	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
3754	s << "\tcolorAttachment = " << value.colorAttachment << '\n';
3755	s << "\tclearValue = " << value.clearValue << '\n';
3756	s << '}';
3757	return s;
3758}
3759
3760std::ostream& operator<< (std::ostream& s, const VkClearRect& value)
3761{
3762	s << "VkClearRect = {\n";
3763	s << "\trect = " << value.rect << '\n';
3764	s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
3765	s << "\tlayerCount = " << value.layerCount << '\n';
3766	s << '}';
3767	return s;
3768}
3769
3770std::ostream& operator<< (std::ostream& s, const VkImageResolve& value)
3771{
3772	s << "VkImageResolve = {\n";
3773	s << "\tsrcSubresource = " << value.srcSubresource << '\n';
3774	s << "\tsrcOffset = " << value.srcOffset << '\n';
3775	s << "\tdstSubresource = " << value.dstSubresource << '\n';
3776	s << "\tdstOffset = " << value.dstOffset << '\n';
3777	s << "\textent = " << value.extent << '\n';
3778	s << '}';
3779	return s;
3780}
3781
3782std::ostream& operator<< (std::ostream& s, const VkMemoryBarrier& value)
3783{
3784	s << "VkMemoryBarrier = {\n";
3785	s << "\tsType = " << value.sType << '\n';
3786	s << "\tpNext = " << value.pNext << '\n';
3787	s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
3788	s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
3789	s << '}';
3790	return s;
3791}
3792
3793std::ostream& operator<< (std::ostream& s, const VkBufferMemoryBarrier& value)
3794{
3795	s << "VkBufferMemoryBarrier = {\n";
3796	s << "\tsType = " << value.sType << '\n';
3797	s << "\tpNext = " << value.pNext << '\n';
3798	s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
3799	s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
3800	s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
3801	s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
3802	s << "\tbuffer = " << value.buffer << '\n';
3803	s << "\toffset = " << value.offset << '\n';
3804	s << "\tsize = " << value.size << '\n';
3805	s << '}';
3806	return s;
3807}
3808
3809std::ostream& operator<< (std::ostream& s, const VkImageMemoryBarrier& value)
3810{
3811	s << "VkImageMemoryBarrier = {\n";
3812	s << "\tsType = " << value.sType << '\n';
3813	s << "\tpNext = " << value.pNext << '\n';
3814	s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
3815	s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
3816	s << "\toldLayout = " << value.oldLayout << '\n';
3817	s << "\tnewLayout = " << value.newLayout << '\n';
3818	s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
3819	s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
3820	s << "\timage = " << value.image << '\n';
3821	s << "\tsubresourceRange = " << value.subresourceRange << '\n';
3822	s << '}';
3823	return s;
3824}
3825
3826std::ostream& operator<< (std::ostream& s, const VkRenderPassBeginInfo& value)
3827{
3828	s << "VkRenderPassBeginInfo = {\n";
3829	s << "\tsType = " << value.sType << '\n';
3830	s << "\tpNext = " << value.pNext << '\n';
3831	s << "\trenderPass = " << value.renderPass << '\n';
3832	s << "\tframebuffer = " << value.framebuffer << '\n';
3833	s << "\trenderArea = " << value.renderArea << '\n';
3834	s << "\tclearValueCount = " << value.clearValueCount << '\n';
3835	s << "\tpClearValues = " << value.pClearValues << '\n';
3836	s << '}';
3837	return s;
3838}
3839
3840std::ostream& operator<< (std::ostream& s, const VkDispatchIndirectCommand& value)
3841{
3842	s << "VkDispatchIndirectCommand = {\n";
3843	s << "\tx = " << value.x << '\n';
3844	s << "\ty = " << value.y << '\n';
3845	s << "\tz = " << value.z << '\n';
3846	s << '}';
3847	return s;
3848}
3849
3850std::ostream& operator<< (std::ostream& s, const VkDrawIndexedIndirectCommand& value)
3851{
3852	s << "VkDrawIndexedIndirectCommand = {\n";
3853	s << "\tindexCount = " << value.indexCount << '\n';
3854	s << "\tinstanceCount = " << value.instanceCount << '\n';
3855	s << "\tfirstIndex = " << value.firstIndex << '\n';
3856	s << "\tvertexOffset = " << value.vertexOffset << '\n';
3857	s << "\tfirstInstance = " << value.firstInstance << '\n';
3858	s << '}';
3859	return s;
3860}
3861
3862std::ostream& operator<< (std::ostream& s, const VkDrawIndirectCommand& value)
3863{
3864	s << "VkDrawIndirectCommand = {\n";
3865	s << "\tvertexCount = " << value.vertexCount << '\n';
3866	s << "\tinstanceCount = " << value.instanceCount << '\n';
3867	s << "\tfirstVertex = " << value.firstVertex << '\n';
3868	s << "\tfirstInstance = " << value.firstInstance << '\n';
3869	s << '}';
3870	return s;
3871}
3872
3873std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubgroupProperties& value)
3874{
3875	s << "VkPhysicalDeviceSubgroupProperties = {\n";
3876	s << "\tsType = " << value.sType << '\n';
3877	s << "\tpNext = " << value.pNext << '\n';
3878	s << "\tsubgroupSize = " << value.subgroupSize << '\n';
3879	s << "\tsupportedStages = " << getShaderStageFlagsStr(value.supportedStages) << '\n';
3880	s << "\tsupportedOperations = " << getSubgroupFeatureFlagsStr(value.supportedOperations) << '\n';
3881	s << "\tquadOperationsInAllStages = " << value.quadOperationsInAllStages << '\n';
3882	s << '}';
3883	return s;
3884}
3885
3886std::ostream& operator<< (std::ostream& s, const VkBindBufferMemoryInfo& value)
3887{
3888	s << "VkBindBufferMemoryInfo = {\n";
3889	s << "\tsType = " << value.sType << '\n';
3890	s << "\tpNext = " << value.pNext << '\n';
3891	s << "\tbuffer = " << value.buffer << '\n';
3892	s << "\tmemory = " << value.memory << '\n';
3893	s << "\tmemoryOffset = " << value.memoryOffset << '\n';
3894	s << '}';
3895	return s;
3896}
3897
3898std::ostream& operator<< (std::ostream& s, const VkBindImageMemoryInfo& value)
3899{
3900	s << "VkBindImageMemoryInfo = {\n";
3901	s << "\tsType = " << value.sType << '\n';
3902	s << "\tpNext = " << value.pNext << '\n';
3903	s << "\timage = " << value.image << '\n';
3904	s << "\tmemory = " << value.memory << '\n';
3905	s << "\tmemoryOffset = " << value.memoryOffset << '\n';
3906	s << '}';
3907	return s;
3908}
3909
3910std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice8BitStorageFeaturesKHR& value)
3911{
3912	s << "VkPhysicalDevice8BitStorageFeaturesKHR = {\n";
3913	s << "\tsType = " << value.sType << '\n';
3914	s << "\tpNext = " << value.pNext << '\n';
3915	s << "\tstorageBuffer8BitAccess = " << value.storageBuffer8BitAccess << '\n';
3916	s << "\tuniformAndStorageBuffer8BitAccess = " << value.uniformAndStorageBuffer8BitAccess << '\n';
3917	s << "\tstoragePushConstant8 = " << value.storagePushConstant8 << '\n';
3918	s << '}';
3919	return s;
3920}
3921
3922std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice16BitStorageFeatures& value)
3923{
3924	s << "VkPhysicalDevice16BitStorageFeatures = {\n";
3925	s << "\tsType = " << value.sType << '\n';
3926	s << "\tpNext = " << value.pNext << '\n';
3927	s << "\tstorageBuffer16BitAccess = " << value.storageBuffer16BitAccess << '\n';
3928	s << "\tuniformAndStorageBuffer16BitAccess = " << value.uniformAndStorageBuffer16BitAccess << '\n';
3929	s << "\tstoragePushConstant16 = " << value.storagePushConstant16 << '\n';
3930	s << "\tstorageInputOutput16 = " << value.storageInputOutput16 << '\n';
3931	s << '}';
3932	return s;
3933}
3934
3935std::ostream& operator<< (std::ostream& s, const VkMemoryDedicatedRequirements& value)
3936{
3937	s << "VkMemoryDedicatedRequirements = {\n";
3938	s << "\tsType = " << value.sType << '\n';
3939	s << "\tpNext = " << value.pNext << '\n';
3940	s << "\tprefersDedicatedAllocation = " << value.prefersDedicatedAllocation << '\n';
3941	s << "\trequiresDedicatedAllocation = " << value.requiresDedicatedAllocation << '\n';
3942	s << '}';
3943	return s;
3944}
3945
3946std::ostream& operator<< (std::ostream& s, const VkMemoryDedicatedAllocateInfo& value)
3947{
3948	s << "VkMemoryDedicatedAllocateInfo = {\n";
3949	s << "\tsType = " << value.sType << '\n';
3950	s << "\tpNext = " << value.pNext << '\n';
3951	s << "\timage = " << value.image << '\n';
3952	s << "\tbuffer = " << value.buffer << '\n';
3953	s << '}';
3954	return s;
3955}
3956
3957std::ostream& operator<< (std::ostream& s, const VkMemoryAllocateFlagsInfo& value)
3958{
3959	s << "VkMemoryAllocateFlagsInfo = {\n";
3960	s << "\tsType = " << value.sType << '\n';
3961	s << "\tpNext = " << value.pNext << '\n';
3962	s << "\tflags = " << getMemoryAllocateFlagsStr(value.flags) << '\n';
3963	s << "\tdeviceMask = " << value.deviceMask << '\n';
3964	s << '}';
3965	return s;
3966}
3967
3968std::ostream& operator<< (std::ostream& s, const VkDeviceGroupRenderPassBeginInfo& value)
3969{
3970	s << "VkDeviceGroupRenderPassBeginInfo = {\n";
3971	s << "\tsType = " << value.sType << '\n';
3972	s << "\tpNext = " << value.pNext << '\n';
3973	s << "\tdeviceMask = " << value.deviceMask << '\n';
3974	s << "\tdeviceRenderAreaCount = " << value.deviceRenderAreaCount << '\n';
3975	s << "\tpDeviceRenderAreas = " << value.pDeviceRenderAreas << '\n';
3976	s << '}';
3977	return s;
3978}
3979
3980std::ostream& operator<< (std::ostream& s, const VkDeviceGroupCommandBufferBeginInfo& value)
3981{
3982	s << "VkDeviceGroupCommandBufferBeginInfo = {\n";
3983	s << "\tsType = " << value.sType << '\n';
3984	s << "\tpNext = " << value.pNext << '\n';
3985	s << "\tdeviceMask = " << value.deviceMask << '\n';
3986	s << '}';
3987	return s;
3988}
3989
3990std::ostream& operator<< (std::ostream& s, const VkDeviceGroupSubmitInfo& value)
3991{
3992	s << "VkDeviceGroupSubmitInfo = {\n";
3993	s << "\tsType = " << value.sType << '\n';
3994	s << "\tpNext = " << value.pNext << '\n';
3995	s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
3996	s << "\tpWaitSemaphoreDeviceIndices = " << value.pWaitSemaphoreDeviceIndices << '\n';
3997	s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
3998	s << "\tpCommandBufferDeviceMasks = " << value.pCommandBufferDeviceMasks << '\n';
3999	s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
4000	s << "\tpSignalSemaphoreDeviceIndices = " << value.pSignalSemaphoreDeviceIndices << '\n';
4001	s << '}';
4002	return s;
4003}
4004
4005std::ostream& operator<< (std::ostream& s, const VkDeviceGroupBindSparseInfo& value)
4006{
4007	s << "VkDeviceGroupBindSparseInfo = {\n";
4008	s << "\tsType = " << value.sType << '\n';
4009	s << "\tpNext = " << value.pNext << '\n';
4010	s << "\tresourceDeviceIndex = " << value.resourceDeviceIndex << '\n';
4011	s << "\tmemoryDeviceIndex = " << value.memoryDeviceIndex << '\n';
4012	s << '}';
4013	return s;
4014}
4015
4016std::ostream& operator<< (std::ostream& s, const VkBindBufferMemoryDeviceGroupInfo& value)
4017{
4018	s << "VkBindBufferMemoryDeviceGroupInfo = {\n";
4019	s << "\tsType = " << value.sType << '\n';
4020	s << "\tpNext = " << value.pNext << '\n';
4021	s << "\tdeviceIndexCount = " << value.deviceIndexCount << '\n';
4022	s << "\tpDeviceIndices = " << value.pDeviceIndices << '\n';
4023	s << '}';
4024	return s;
4025}
4026
4027std::ostream& operator<< (std::ostream& s, const VkBindImageMemoryDeviceGroupInfo& value)
4028{
4029	s << "VkBindImageMemoryDeviceGroupInfo = {\n";
4030	s << "\tsType = " << value.sType << '\n';
4031	s << "\tpNext = " << value.pNext << '\n';
4032	s << "\tdeviceIndexCount = " << value.deviceIndexCount << '\n';
4033	s << "\tpDeviceIndices = " << value.pDeviceIndices << '\n';
4034	s << "\tSFRRectCount = " << value.SFRRectCount << '\n';
4035	s << "\tpSFRRects = " << value.pSFRRects << '\n';
4036	s << '}';
4037	return s;
4038}
4039
4040std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceGroupProperties& value)
4041{
4042	s << "VkPhysicalDeviceGroupProperties = {\n";
4043	s << "\tsType = " << value.sType << '\n';
4044	s << "\tpNext = " << value.pNext << '\n';
4045	s << "\tphysicalDeviceCount = " << value.physicalDeviceCount << '\n';
4046	s << "\tphysicalDevices = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.physicalDevices), DE_ARRAY_END(value.physicalDevices)) << '\n';
4047	s << "\tsubsetAllocation = " << value.subsetAllocation << '\n';
4048	s << '}';
4049	return s;
4050}
4051
4052std::ostream& operator<< (std::ostream& s, const VkDeviceGroupDeviceCreateInfo& value)
4053{
4054	s << "VkDeviceGroupDeviceCreateInfo = {\n";
4055	s << "\tsType = " << value.sType << '\n';
4056	s << "\tpNext = " << value.pNext << '\n';
4057	s << "\tphysicalDeviceCount = " << value.physicalDeviceCount << '\n';
4058	s << "\tpPhysicalDevices = " << value.pPhysicalDevices << '\n';
4059	s << '}';
4060	return s;
4061}
4062
4063std::ostream& operator<< (std::ostream& s, const VkBufferMemoryRequirementsInfo2& value)
4064{
4065	s << "VkBufferMemoryRequirementsInfo2 = {\n";
4066	s << "\tsType = " << value.sType << '\n';
4067	s << "\tpNext = " << value.pNext << '\n';
4068	s << "\tbuffer = " << value.buffer << '\n';
4069	s << '}';
4070	return s;
4071}
4072
4073std::ostream& operator<< (std::ostream& s, const VkImageMemoryRequirementsInfo2& value)
4074{
4075	s << "VkImageMemoryRequirementsInfo2 = {\n";
4076	s << "\tsType = " << value.sType << '\n';
4077	s << "\tpNext = " << value.pNext << '\n';
4078	s << "\timage = " << value.image << '\n';
4079	s << '}';
4080	return s;
4081}
4082
4083std::ostream& operator<< (std::ostream& s, const VkImageSparseMemoryRequirementsInfo2& value)
4084{
4085	s << "VkImageSparseMemoryRequirementsInfo2 = {\n";
4086	s << "\tsType = " << value.sType << '\n';
4087	s << "\tpNext = " << value.pNext << '\n';
4088	s << "\timage = " << value.image << '\n';
4089	s << '}';
4090	return s;
4091}
4092
4093std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements2& value)
4094{
4095	s << "VkMemoryRequirements2 = {\n";
4096	s << "\tsType = " << value.sType << '\n';
4097	s << "\tpNext = " << value.pNext << '\n';
4098	s << "\tmemoryRequirements = " << value.memoryRequirements << '\n';
4099	s << '}';
4100	return s;
4101}
4102
4103std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements2& value)
4104{
4105	s << "VkSparseImageMemoryRequirements2 = {\n";
4106	s << "\tsType = " << value.sType << '\n';
4107	s << "\tpNext = " << value.pNext << '\n';
4108	s << "\tmemoryRequirements = " << value.memoryRequirements << '\n';
4109	s << '}';
4110	return s;
4111}
4112
4113std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures2& value)
4114{
4115	s << "VkPhysicalDeviceFeatures2 = {\n";
4116	s << "\tsType = " << value.sType << '\n';
4117	s << "\tpNext = " << value.pNext << '\n';
4118	s << "\tfeatures = " << value.features << '\n';
4119	s << '}';
4120	return s;
4121}
4122
4123std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProperties2& value)
4124{
4125	s << "VkPhysicalDeviceProperties2 = {\n";
4126	s << "\tsType = " << value.sType << '\n';
4127	s << "\tpNext = " << value.pNext << '\n';
4128	s << "\tproperties = " << value.properties << '\n';
4129	s << '}';
4130	return s;
4131}
4132
4133std::ostream& operator<< (std::ostream& s, const VkFormatProperties2& value)
4134{
4135	s << "VkFormatProperties2 = {\n";
4136	s << "\tsType = " << value.sType << '\n';
4137	s << "\tpNext = " << value.pNext << '\n';
4138	s << "\tformatProperties = " << value.formatProperties << '\n';
4139	s << '}';
4140	return s;
4141}
4142
4143std::ostream& operator<< (std::ostream& s, const VkImageFormatProperties2& value)
4144{
4145	s << "VkImageFormatProperties2 = {\n";
4146	s << "\tsType = " << value.sType << '\n';
4147	s << "\tpNext = " << value.pNext << '\n';
4148	s << "\timageFormatProperties = " << value.imageFormatProperties << '\n';
4149	s << '}';
4150	return s;
4151}
4152
4153std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageFormatInfo2& value)
4154{
4155	s << "VkPhysicalDeviceImageFormatInfo2 = {\n";
4156	s << "\tsType = " << value.sType << '\n';
4157	s << "\tpNext = " << value.pNext << '\n';
4158	s << "\tformat = " << value.format << '\n';
4159	s << "\ttype = " << value.type << '\n';
4160	s << "\ttiling = " << value.tiling << '\n';
4161	s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
4162	s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
4163	s << '}';
4164	return s;
4165}
4166
4167std::ostream& operator<< (std::ostream& s, const VkQueueFamilyProperties2& value)
4168{
4169	s << "VkQueueFamilyProperties2 = {\n";
4170	s << "\tsType = " << value.sType << '\n';
4171	s << "\tpNext = " << value.pNext << '\n';
4172	s << "\tqueueFamilyProperties = " << value.queueFamilyProperties << '\n';
4173	s << '}';
4174	return s;
4175}
4176
4177std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties2& value)
4178{
4179	s << "VkPhysicalDeviceMemoryProperties2 = {\n";
4180	s << "\tsType = " << value.sType << '\n';
4181	s << "\tpNext = " << value.pNext << '\n';
4182	s << "\tmemoryProperties = " << value.memoryProperties << '\n';
4183	s << '}';
4184	return s;
4185}
4186
4187std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties2& value)
4188{
4189	s << "VkSparseImageFormatProperties2 = {\n";
4190	s << "\tsType = " << value.sType << '\n';
4191	s << "\tpNext = " << value.pNext << '\n';
4192	s << "\tproperties = " << value.properties << '\n';
4193	s << '}';
4194	return s;
4195}
4196
4197std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSparseImageFormatInfo2& value)
4198{
4199	s << "VkPhysicalDeviceSparseImageFormatInfo2 = {\n";
4200	s << "\tsType = " << value.sType << '\n';
4201	s << "\tpNext = " << value.pNext << '\n';
4202	s << "\tformat = " << value.format << '\n';
4203	s << "\ttype = " << value.type << '\n';
4204	s << "\tsamples = " << value.samples << '\n';
4205	s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
4206	s << "\ttiling = " << value.tiling << '\n';
4207	s << '}';
4208	return s;
4209}
4210
4211std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePointClippingProperties& value)
4212{
4213	s << "VkPhysicalDevicePointClippingProperties = {\n";
4214	s << "\tsType = " << value.sType << '\n';
4215	s << "\tpNext = " << value.pNext << '\n';
4216	s << "\tpointClippingBehavior = " << value.pointClippingBehavior << '\n';
4217	s << '}';
4218	return s;
4219}
4220
4221std::ostream& operator<< (std::ostream& s, const VkInputAttachmentAspectReference& value)
4222{
4223	s << "VkInputAttachmentAspectReference = {\n";
4224	s << "\tsubpass = " << value.subpass << '\n';
4225	s << "\tinputAttachmentIndex = " << value.inputAttachmentIndex << '\n';
4226	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
4227	s << '}';
4228	return s;
4229}
4230
4231std::ostream& operator<< (std::ostream& s, const VkRenderPassInputAttachmentAspectCreateInfo& value)
4232{
4233	s << "VkRenderPassInputAttachmentAspectCreateInfo = {\n";
4234	s << "\tsType = " << value.sType << '\n';
4235	s << "\tpNext = " << value.pNext << '\n';
4236	s << "\taspectReferenceCount = " << value.aspectReferenceCount << '\n';
4237	s << "\tpAspectReferences = " << value.pAspectReferences << '\n';
4238	s << '}';
4239	return s;
4240}
4241
4242std::ostream& operator<< (std::ostream& s, const VkImageViewUsageCreateInfo& value)
4243{
4244	s << "VkImageViewUsageCreateInfo = {\n";
4245	s << "\tsType = " << value.sType << '\n';
4246	s << "\tpNext = " << value.pNext << '\n';
4247	s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
4248	s << '}';
4249	return s;
4250}
4251
4252std::ostream& operator<< (std::ostream& s, const VkPipelineTessellationDomainOriginStateCreateInfo& value)
4253{
4254	s << "VkPipelineTessellationDomainOriginStateCreateInfo = {\n";
4255	s << "\tsType = " << value.sType << '\n';
4256	s << "\tpNext = " << value.pNext << '\n';
4257	s << "\tdomainOrigin = " << value.domainOrigin << '\n';
4258	s << '}';
4259	return s;
4260}
4261
4262std::ostream& operator<< (std::ostream& s, const VkRenderPassMultiviewCreateInfo& value)
4263{
4264	s << "VkRenderPassMultiviewCreateInfo = {\n";
4265	s << "\tsType = " << value.sType << '\n';
4266	s << "\tpNext = " << value.pNext << '\n';
4267	s << "\tsubpassCount = " << value.subpassCount << '\n';
4268	s << "\tpViewMasks = " << value.pViewMasks << '\n';
4269	s << "\tdependencyCount = " << value.dependencyCount << '\n';
4270	s << "\tpViewOffsets = " << value.pViewOffsets << '\n';
4271	s << "\tcorrelationMaskCount = " << value.correlationMaskCount << '\n';
4272	s << "\tpCorrelationMasks = " << value.pCorrelationMasks << '\n';
4273	s << '}';
4274	return s;
4275}
4276
4277std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewFeatures& value)
4278{
4279	s << "VkPhysicalDeviceMultiviewFeatures = {\n";
4280	s << "\tsType = " << value.sType << '\n';
4281	s << "\tpNext = " << value.pNext << '\n';
4282	s << "\tmultiview = " << value.multiview << '\n';
4283	s << "\tmultiviewGeometryShader = " << value.multiviewGeometryShader << '\n';
4284	s << "\tmultiviewTessellationShader = " << value.multiviewTessellationShader << '\n';
4285	s << '}';
4286	return s;
4287}
4288
4289std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewProperties& value)
4290{
4291	s << "VkPhysicalDeviceMultiviewProperties = {\n";
4292	s << "\tsType = " << value.sType << '\n';
4293	s << "\tpNext = " << value.pNext << '\n';
4294	s << "\tmaxMultiviewViewCount = " << value.maxMultiviewViewCount << '\n';
4295	s << "\tmaxMultiviewInstanceIndex = " << value.maxMultiviewInstanceIndex << '\n';
4296	s << '}';
4297	return s;
4298}
4299
4300std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVariablePointerFeatures& value)
4301{
4302	s << "VkPhysicalDeviceVariablePointerFeatures = {\n";
4303	s << "\tsType = " << value.sType << '\n';
4304	s << "\tpNext = " << value.pNext << '\n';
4305	s << "\tvariablePointersStorageBuffer = " << value.variablePointersStorageBuffer << '\n';
4306	s << "\tvariablePointers = " << value.variablePointers << '\n';
4307	s << '}';
4308	return s;
4309}
4310
4311std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProtectedMemoryFeatures& value)
4312{
4313	s << "VkPhysicalDeviceProtectedMemoryFeatures = {\n";
4314	s << "\tsType = " << value.sType << '\n';
4315	s << "\tpNext = " << value.pNext << '\n';
4316	s << "\tprotectedMemory = " << value.protectedMemory << '\n';
4317	s << '}';
4318	return s;
4319}
4320
4321std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProtectedMemoryProperties& value)
4322{
4323	s << "VkPhysicalDeviceProtectedMemoryProperties = {\n";
4324	s << "\tsType = " << value.sType << '\n';
4325	s << "\tpNext = " << value.pNext << '\n';
4326	s << "\tprotectedNoFault = " << value.protectedNoFault << '\n';
4327	s << '}';
4328	return s;
4329}
4330
4331std::ostream& operator<< (std::ostream& s, const VkDeviceQueueInfo2& value)
4332{
4333	s << "VkDeviceQueueInfo2 = {\n";
4334	s << "\tsType = " << value.sType << '\n';
4335	s << "\tpNext = " << value.pNext << '\n';
4336	s << "\tflags = " << getDeviceQueueCreateFlagsStr(value.flags) << '\n';
4337	s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
4338	s << "\tqueueIndex = " << value.queueIndex << '\n';
4339	s << '}';
4340	return s;
4341}
4342
4343std::ostream& operator<< (std::ostream& s, const VkProtectedSubmitInfo& value)
4344{
4345	s << "VkProtectedSubmitInfo = {\n";
4346	s << "\tsType = " << value.sType << '\n';
4347	s << "\tpNext = " << value.pNext << '\n';
4348	s << "\tprotectedSubmit = " << value.protectedSubmit << '\n';
4349	s << '}';
4350	return s;
4351}
4352
4353std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionCreateInfo& value)
4354{
4355	s << "VkSamplerYcbcrConversionCreateInfo = {\n";
4356	s << "\tsType = " << value.sType << '\n';
4357	s << "\tpNext = " << value.pNext << '\n';
4358	s << "\tformat = " << value.format << '\n';
4359	s << "\tycbcrModel = " << value.ycbcrModel << '\n';
4360	s << "\tycbcrRange = " << value.ycbcrRange << '\n';
4361	s << "\tcomponents = " << value.components << '\n';
4362	s << "\txChromaOffset = " << value.xChromaOffset << '\n';
4363	s << "\tyChromaOffset = " << value.yChromaOffset << '\n';
4364	s << "\tchromaFilter = " << value.chromaFilter << '\n';
4365	s << "\tforceExplicitReconstruction = " << value.forceExplicitReconstruction << '\n';
4366	s << '}';
4367	return s;
4368}
4369
4370std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionInfo& value)
4371{
4372	s << "VkSamplerYcbcrConversionInfo = {\n";
4373	s << "\tsType = " << value.sType << '\n';
4374	s << "\tpNext = " << value.pNext << '\n';
4375	s << "\tconversion = " << value.conversion << '\n';
4376	s << '}';
4377	return s;
4378}
4379
4380std::ostream& operator<< (std::ostream& s, const VkBindImagePlaneMemoryInfo& value)
4381{
4382	s << "VkBindImagePlaneMemoryInfo = {\n";
4383	s << "\tsType = " << value.sType << '\n';
4384	s << "\tpNext = " << value.pNext << '\n';
4385	s << "\tplaneAspect = " << value.planeAspect << '\n';
4386	s << '}';
4387	return s;
4388}
4389
4390std::ostream& operator<< (std::ostream& s, const VkImagePlaneMemoryRequirementsInfo& value)
4391{
4392	s << "VkImagePlaneMemoryRequirementsInfo = {\n";
4393	s << "\tsType = " << value.sType << '\n';
4394	s << "\tpNext = " << value.pNext << '\n';
4395	s << "\tplaneAspect = " << value.planeAspect << '\n';
4396	s << '}';
4397	return s;
4398}
4399
4400std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSamplerYcbcrConversionFeatures& value)
4401{
4402	s << "VkPhysicalDeviceSamplerYcbcrConversionFeatures = {\n";
4403	s << "\tsType = " << value.sType << '\n';
4404	s << "\tpNext = " << value.pNext << '\n';
4405	s << "\tsamplerYcbcrConversion = " << value.samplerYcbcrConversion << '\n';
4406	s << '}';
4407	return s;
4408}
4409
4410std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionImageFormatProperties& value)
4411{
4412	s << "VkSamplerYcbcrConversionImageFormatProperties = {\n";
4413	s << "\tsType = " << value.sType << '\n';
4414	s << "\tpNext = " << value.pNext << '\n';
4415	s << "\tcombinedImageSamplerDescriptorCount = " << value.combinedImageSamplerDescriptorCount << '\n';
4416	s << '}';
4417	return s;
4418}
4419
4420std::ostream& operator<< (std::ostream& s, const VkDescriptorUpdateTemplateEntry& value)
4421{
4422	s << "VkDescriptorUpdateTemplateEntry = {\n";
4423	s << "\tdstBinding = " << value.dstBinding << '\n';
4424	s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
4425	s << "\tdescriptorCount = " << value.descriptorCount << '\n';
4426	s << "\tdescriptorType = " << value.descriptorType << '\n';
4427	s << "\toffset = " << value.offset << '\n';
4428	s << "\tstride = " << value.stride << '\n';
4429	s << '}';
4430	return s;
4431}
4432
4433std::ostream& operator<< (std::ostream& s, const VkDescriptorUpdateTemplateCreateInfo& value)
4434{
4435	s << "VkDescriptorUpdateTemplateCreateInfo = {\n";
4436	s << "\tsType = " << value.sType << '\n';
4437	s << "\tpNext = " << value.pNext << '\n';
4438	s << "\tflags = " << getDescriptorUpdateTemplateCreateFlagsStr(value.flags) << '\n';
4439	s << "\tdescriptorUpdateEntryCount = " << value.descriptorUpdateEntryCount << '\n';
4440	s << "\tpDescriptorUpdateEntries = " << value.pDescriptorUpdateEntries << '\n';
4441	s << "\ttemplateType = " << value.templateType << '\n';
4442	s << "\tdescriptorSetLayout = " << value.descriptorSetLayout << '\n';
4443	s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
4444	s << "\tpipelineLayout = " << value.pipelineLayout << '\n';
4445	s << "\tset = " << value.set << '\n';
4446	s << '}';
4447	return s;
4448}
4449
4450std::ostream& operator<< (std::ostream& s, const VkExternalMemoryProperties& value)
4451{
4452	s << "VkExternalMemoryProperties = {\n";
4453	s << "\texternalMemoryFeatures = " << getExternalMemoryFeatureFlagsStr(value.externalMemoryFeatures) << '\n';
4454	s << "\texportFromImportedHandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.exportFromImportedHandleTypes) << '\n';
4455	s << "\tcompatibleHandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.compatibleHandleTypes) << '\n';
4456	s << '}';
4457	return s;
4458}
4459
4460std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalImageFormatInfo& value)
4461{
4462	s << "VkPhysicalDeviceExternalImageFormatInfo = {\n";
4463	s << "\tsType = " << value.sType << '\n';
4464	s << "\tpNext = " << value.pNext << '\n';
4465	s << "\thandleType = " << value.handleType << '\n';
4466	s << '}';
4467	return s;
4468}
4469
4470std::ostream& operator<< (std::ostream& s, const VkExternalImageFormatProperties& value)
4471{
4472	s << "VkExternalImageFormatProperties = {\n";
4473	s << "\tsType = " << value.sType << '\n';
4474	s << "\tpNext = " << value.pNext << '\n';
4475	s << "\texternalMemoryProperties = " << value.externalMemoryProperties << '\n';
4476	s << '}';
4477	return s;
4478}
4479
4480std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalBufferInfo& value)
4481{
4482	s << "VkPhysicalDeviceExternalBufferInfo = {\n";
4483	s << "\tsType = " << value.sType << '\n';
4484	s << "\tpNext = " << value.pNext << '\n';
4485	s << "\tflags = " << getBufferCreateFlagsStr(value.flags) << '\n';
4486	s << "\tusage = " << getBufferUsageFlagsStr(value.usage) << '\n';
4487	s << "\thandleType = " << value.handleType << '\n';
4488	s << '}';
4489	return s;
4490}
4491
4492std::ostream& operator<< (std::ostream& s, const VkExternalBufferProperties& value)
4493{
4494	s << "VkExternalBufferProperties = {\n";
4495	s << "\tsType = " << value.sType << '\n';
4496	s << "\tpNext = " << value.pNext << '\n';
4497	s << "\texternalMemoryProperties = " << value.externalMemoryProperties << '\n';
4498	s << '}';
4499	return s;
4500}
4501
4502std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceIDProperties& value)
4503{
4504	s << "VkPhysicalDeviceIDProperties = {\n";
4505	s << "\tsType = " << value.sType << '\n';
4506	s << "\tpNext = " << value.pNext << '\n';
4507	s << "\tdeviceUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.deviceUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.deviceUUID))) << '\n';
4508	s << "\tdriverUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.driverUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.driverUUID))) << '\n';
4509	s << "\tdeviceLUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.deviceLUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.deviceLUID))) << '\n';
4510	s << "\tdeviceNodeMask = " << value.deviceNodeMask << '\n';
4511	s << "\tdeviceLUIDValid = " << value.deviceLUIDValid << '\n';
4512	s << '}';
4513	return s;
4514}
4515
4516std::ostream& operator<< (std::ostream& s, const VkExternalMemoryImageCreateInfo& value)
4517{
4518	s << "VkExternalMemoryImageCreateInfo = {\n";
4519	s << "\tsType = " << value.sType << '\n';
4520	s << "\tpNext = " << value.pNext << '\n';
4521	s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.handleTypes) << '\n';
4522	s << '}';
4523	return s;
4524}
4525
4526std::ostream& operator<< (std::ostream& s, const VkExternalMemoryBufferCreateInfo& value)
4527{
4528	s << "VkExternalMemoryBufferCreateInfo = {\n";
4529	s << "\tsType = " << value.sType << '\n';
4530	s << "\tpNext = " << value.pNext << '\n';
4531	s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.handleTypes) << '\n';
4532	s << '}';
4533	return s;
4534}
4535
4536std::ostream& operator<< (std::ostream& s, const VkExportMemoryAllocateInfo& value)
4537{
4538	s << "VkExportMemoryAllocateInfo = {\n";
4539	s << "\tsType = " << value.sType << '\n';
4540	s << "\tpNext = " << value.pNext << '\n';
4541	s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.handleTypes) << '\n';
4542	s << '}';
4543	return s;
4544}
4545
4546std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalFenceInfo& value)
4547{
4548	s << "VkPhysicalDeviceExternalFenceInfo = {\n";
4549	s << "\tsType = " << value.sType << '\n';
4550	s << "\tpNext = " << value.pNext << '\n';
4551	s << "\thandleType = " << value.handleType << '\n';
4552	s << '}';
4553	return s;
4554}
4555
4556std::ostream& operator<< (std::ostream& s, const VkExternalFenceProperties& value)
4557{
4558	s << "VkExternalFenceProperties = {\n";
4559	s << "\tsType = " << value.sType << '\n';
4560	s << "\tpNext = " << value.pNext << '\n';
4561	s << "\texportFromImportedHandleTypes = " << getExternalFenceHandleTypeFlagsStr(value.exportFromImportedHandleTypes) << '\n';
4562	s << "\tcompatibleHandleTypes = " << getExternalFenceHandleTypeFlagsStr(value.compatibleHandleTypes) << '\n';
4563	s << "\texternalFenceFeatures = " << getExternalFenceFeatureFlagsStr(value.externalFenceFeatures) << '\n';
4564	s << '}';
4565	return s;
4566}
4567
4568std::ostream& operator<< (std::ostream& s, const VkExportFenceCreateInfo& value)
4569{
4570	s << "VkExportFenceCreateInfo = {\n";
4571	s << "\tsType = " << value.sType << '\n';
4572	s << "\tpNext = " << value.pNext << '\n';
4573	s << "\thandleTypes = " << getExternalFenceHandleTypeFlagsStr(value.handleTypes) << '\n';
4574	s << '}';
4575	return s;
4576}
4577
4578std::ostream& operator<< (std::ostream& s, const VkExportSemaphoreCreateInfo& value)
4579{
4580	s << "VkExportSemaphoreCreateInfo = {\n";
4581	s << "\tsType = " << value.sType << '\n';
4582	s << "\tpNext = " << value.pNext << '\n';
4583	s << "\thandleTypes = " << getExternalSemaphoreHandleTypeFlagsStr(value.handleTypes) << '\n';
4584	s << '}';
4585	return s;
4586}
4587
4588std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalSemaphoreInfo& value)
4589{
4590	s << "VkPhysicalDeviceExternalSemaphoreInfo = {\n";
4591	s << "\tsType = " << value.sType << '\n';
4592	s << "\tpNext = " << value.pNext << '\n';
4593	s << "\thandleType = " << value.handleType << '\n';
4594	s << '}';
4595	return s;
4596}
4597
4598std::ostream& operator<< (std::ostream& s, const VkExternalSemaphoreProperties& value)
4599{
4600	s << "VkExternalSemaphoreProperties = {\n";
4601	s << "\tsType = " << value.sType << '\n';
4602	s << "\tpNext = " << value.pNext << '\n';
4603	s << "\texportFromImportedHandleTypes = " << getExternalSemaphoreHandleTypeFlagsStr(value.exportFromImportedHandleTypes) << '\n';
4604	s << "\tcompatibleHandleTypes = " << getExternalSemaphoreHandleTypeFlagsStr(value.compatibleHandleTypes) << '\n';
4605	s << "\texternalSemaphoreFeatures = " << getExternalSemaphoreFeatureFlagsStr(value.externalSemaphoreFeatures) << '\n';
4606	s << '}';
4607	return s;
4608}
4609
4610std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMaintenance3Properties& value)
4611{
4612	s << "VkPhysicalDeviceMaintenance3Properties = {\n";
4613	s << "\tsType = " << value.sType << '\n';
4614	s << "\tpNext = " << value.pNext << '\n';
4615	s << "\tmaxPerSetDescriptors = " << value.maxPerSetDescriptors << '\n';
4616	s << "\tmaxMemoryAllocationSize = " << value.maxMemoryAllocationSize << '\n';
4617	s << '}';
4618	return s;
4619}
4620
4621std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutSupport& value)
4622{
4623	s << "VkDescriptorSetLayoutSupport = {\n";
4624	s << "\tsType = " << value.sType << '\n';
4625	s << "\tpNext = " << value.pNext << '\n';
4626	s << "\tsupported = " << value.supported << '\n';
4627	s << '}';
4628	return s;
4629}
4630
4631std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderDrawParameterFeatures& value)
4632{
4633	s << "VkPhysicalDeviceShaderDrawParameterFeatures = {\n";
4634	s << "\tsType = " << value.sType << '\n';
4635	s << "\tpNext = " << value.pNext << '\n';
4636	s << "\tshaderDrawParameters = " << value.shaderDrawParameters << '\n';
4637	s << '}';
4638	return s;
4639}
4640
4641std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilitiesKHR& value)
4642{
4643	s << "VkSurfaceCapabilitiesKHR = {\n";
4644	s << "\tminImageCount = " << value.minImageCount << '\n';
4645	s << "\tmaxImageCount = " << value.maxImageCount << '\n';
4646	s << "\tcurrentExtent = " << value.currentExtent << '\n';
4647	s << "\tminImageExtent = " << value.minImageExtent << '\n';
4648	s << "\tmaxImageExtent = " << value.maxImageExtent << '\n';
4649	s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
4650	s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
4651	s << "\tcurrentTransform = " << value.currentTransform << '\n';
4652	s << "\tsupportedCompositeAlpha = " << getCompositeAlphaFlagsKHRStr(value.supportedCompositeAlpha) << '\n';
4653	s << "\tsupportedUsageFlags = " << getImageUsageFlagsStr(value.supportedUsageFlags) << '\n';
4654	s << '}';
4655	return s;
4656}
4657
4658std::ostream& operator<< (std::ostream& s, const VkSurfaceFormatKHR& value)
4659{
4660	s << "VkSurfaceFormatKHR = {\n";
4661	s << "\tformat = " << value.format << '\n';
4662	s << "\tcolorSpace = " << value.colorSpace << '\n';
4663	s << '}';
4664	return s;
4665}
4666
4667std::ostream& operator<< (std::ostream& s, const VkSwapchainCreateInfoKHR& value)
4668{
4669	s << "VkSwapchainCreateInfoKHR = {\n";
4670	s << "\tsType = " << value.sType << '\n';
4671	s << "\tpNext = " << value.pNext << '\n';
4672	s << "\tflags = " << getSwapchainCreateFlagsKHRStr(value.flags) << '\n';
4673	s << "\tsurface = " << value.surface << '\n';
4674	s << "\tminImageCount = " << value.minImageCount << '\n';
4675	s << "\timageFormat = " << value.imageFormat << '\n';
4676	s << "\timageColorSpace = " << value.imageColorSpace << '\n';
4677	s << "\timageExtent = " << value.imageExtent << '\n';
4678	s << "\timageArrayLayers = " << value.imageArrayLayers << '\n';
4679	s << "\timageUsage = " << getImageUsageFlagsStr(value.imageUsage) << '\n';
4680	s << "\timageSharingMode = " << value.imageSharingMode << '\n';
4681	s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
4682	s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
4683	s << "\tpreTransform = " << value.preTransform << '\n';
4684	s << "\tcompositeAlpha = " << value.compositeAlpha << '\n';
4685	s << "\tpresentMode = " << value.presentMode << '\n';
4686	s << "\tclipped = " << value.clipped << '\n';
4687	s << "\toldSwapchain = " << value.oldSwapchain << '\n';
4688	s << '}';
4689	return s;
4690}
4691
4692std::ostream& operator<< (std::ostream& s, const VkPresentInfoKHR& value)
4693{
4694	s << "VkPresentInfoKHR = {\n";
4695	s << "\tsType = " << value.sType << '\n';
4696	s << "\tpNext = " << value.pNext << '\n';
4697	s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
4698	s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
4699	s << "\tswapchainCount = " << value.swapchainCount << '\n';
4700	s << "\tpSwapchains = " << value.pSwapchains << '\n';
4701	s << "\tpImageIndices = " << value.pImageIndices << '\n';
4702	s << "\tpResults = " << value.pResults << '\n';
4703	s << '}';
4704	return s;
4705}
4706
4707std::ostream& operator<< (std::ostream& s, const VkImageSwapchainCreateInfoKHR& value)
4708{
4709	s << "VkImageSwapchainCreateInfoKHR = {\n";
4710	s << "\tsType = " << value.sType << '\n';
4711	s << "\tpNext = " << value.pNext << '\n';
4712	s << "\tswapchain = " << value.swapchain << '\n';
4713	s << '}';
4714	return s;
4715}
4716
4717std::ostream& operator<< (std::ostream& s, const VkBindImageMemorySwapchainInfoKHR& value)
4718{
4719	s << "VkBindImageMemorySwapchainInfoKHR = {\n";
4720	s << "\tsType = " << value.sType << '\n';
4721	s << "\tpNext = " << value.pNext << '\n';
4722	s << "\tswapchain = " << value.swapchain << '\n';
4723	s << "\timageIndex = " << value.imageIndex << '\n';
4724	s << '}';
4725	return s;
4726}
4727
4728std::ostream& operator<< (std::ostream& s, const VkAcquireNextImageInfoKHR& value)
4729{
4730	s << "VkAcquireNextImageInfoKHR = {\n";
4731	s << "\tsType = " << value.sType << '\n';
4732	s << "\tpNext = " << value.pNext << '\n';
4733	s << "\tswapchain = " << value.swapchain << '\n';
4734	s << "\ttimeout = " << value.timeout << '\n';
4735	s << "\tsemaphore = " << value.semaphore << '\n';
4736	s << "\tfence = " << value.fence << '\n';
4737	s << "\tdeviceMask = " << value.deviceMask << '\n';
4738	s << '}';
4739	return s;
4740}
4741
4742std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentCapabilitiesKHR& value)
4743{
4744	s << "VkDeviceGroupPresentCapabilitiesKHR = {\n";
4745	s << "\tsType = " << value.sType << '\n';
4746	s << "\tpNext = " << value.pNext << '\n';
4747	s << "\tpresentMask = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.presentMask), DE_ARRAY_END(value.presentMask)) << '\n';
4748	s << "\tmodes = " << getDeviceGroupPresentModeFlagsKHRStr(value.modes) << '\n';
4749	s << '}';
4750	return s;
4751}
4752
4753std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentInfoKHR& value)
4754{
4755	s << "VkDeviceGroupPresentInfoKHR = {\n";
4756	s << "\tsType = " << value.sType << '\n';
4757	s << "\tpNext = " << value.pNext << '\n';
4758	s << "\tswapchainCount = " << value.swapchainCount << '\n';
4759	s << "\tpDeviceMasks = " << value.pDeviceMasks << '\n';
4760	s << "\tmode = " << value.mode << '\n';
4761	s << '}';
4762	return s;
4763}
4764
4765std::ostream& operator<< (std::ostream& s, const VkDeviceGroupSwapchainCreateInfoKHR& value)
4766{
4767	s << "VkDeviceGroupSwapchainCreateInfoKHR = {\n";
4768	s << "\tsType = " << value.sType << '\n';
4769	s << "\tpNext = " << value.pNext << '\n';
4770	s << "\tmodes = " << getDeviceGroupPresentModeFlagsKHRStr(value.modes) << '\n';
4771	s << '}';
4772	return s;
4773}
4774
4775std::ostream& operator<< (std::ostream& s, const VkDisplayPropertiesKHR& value)
4776{
4777	s << "VkDisplayPropertiesKHR = {\n";
4778	s << "\tdisplay = " << value.display << '\n';
4779	s << "\tdisplayName = " << getCharPtrStr(value.displayName) << '\n';
4780	s << "\tphysicalDimensions = " << value.physicalDimensions << '\n';
4781	s << "\tphysicalResolution = " << value.physicalResolution << '\n';
4782	s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
4783	s << "\tplaneReorderPossible = " << value.planeReorderPossible << '\n';
4784	s << "\tpersistentContent = " << value.persistentContent << '\n';
4785	s << '}';
4786	return s;
4787}
4788
4789std::ostream& operator<< (std::ostream& s, const VkDisplayModeParametersKHR& value)
4790{
4791	s << "VkDisplayModeParametersKHR = {\n";
4792	s << "\tvisibleRegion = " << value.visibleRegion << '\n';
4793	s << "\trefreshRate = " << value.refreshRate << '\n';
4794	s << '}';
4795	return s;
4796}
4797
4798std::ostream& operator<< (std::ostream& s, const VkDisplayModePropertiesKHR& value)
4799{
4800	s << "VkDisplayModePropertiesKHR = {\n";
4801	s << "\tdisplayMode = " << value.displayMode << '\n';
4802	s << "\tparameters = " << value.parameters << '\n';
4803	s << '}';
4804	return s;
4805}
4806
4807std::ostream& operator<< (std::ostream& s, const VkDisplayModeCreateInfoKHR& value)
4808{
4809	s << "VkDisplayModeCreateInfoKHR = {\n";
4810	s << "\tsType = " << value.sType << '\n';
4811	s << "\tpNext = " << value.pNext << '\n';
4812	s << "\tflags = " << getDisplayModeCreateFlagsKHRStr(value.flags) << '\n';
4813	s << "\tparameters = " << value.parameters << '\n';
4814	s << '}';
4815	return s;
4816}
4817
4818std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilitiesKHR& value)
4819{
4820	s << "VkDisplayPlaneCapabilitiesKHR = {\n";
4821	s << "\tsupportedAlpha = " << getDisplayPlaneAlphaFlagsKHRStr(value.supportedAlpha) << '\n';
4822	s << "\tminSrcPosition = " << value.minSrcPosition << '\n';
4823	s << "\tmaxSrcPosition = " << value.maxSrcPosition << '\n';
4824	s << "\tminSrcExtent = " << value.minSrcExtent << '\n';
4825	s << "\tmaxSrcExtent = " << value.maxSrcExtent << '\n';
4826	s << "\tminDstPosition = " << value.minDstPosition << '\n';
4827	s << "\tmaxDstPosition = " << value.maxDstPosition << '\n';
4828	s << "\tminDstExtent = " << value.minDstExtent << '\n';
4829	s << "\tmaxDstExtent = " << value.maxDstExtent << '\n';
4830	s << '}';
4831	return s;
4832}
4833
4834std::ostream& operator<< (std::ostream& s, const VkDisplayPlanePropertiesKHR& value)
4835{
4836	s << "VkDisplayPlanePropertiesKHR = {\n";
4837	s << "\tcurrentDisplay = " << value.currentDisplay << '\n';
4838	s << "\tcurrentStackIndex = " << value.currentStackIndex << '\n';
4839	s << '}';
4840	return s;
4841}
4842
4843std::ostream& operator<< (std::ostream& s, const VkDisplaySurfaceCreateInfoKHR& value)
4844{
4845	s << "VkDisplaySurfaceCreateInfoKHR = {\n";
4846	s << "\tsType = " << value.sType << '\n';
4847	s << "\tpNext = " << value.pNext << '\n';
4848	s << "\tflags = " << getDisplaySurfaceCreateFlagsKHRStr(value.flags) << '\n';
4849	s << "\tdisplayMode = " << value.displayMode << '\n';
4850	s << "\tplaneIndex = " << value.planeIndex << '\n';
4851	s << "\tplaneStackIndex = " << value.planeStackIndex << '\n';
4852	s << "\ttransform = " << value.transform << '\n';
4853	s << "\tglobalAlpha = " << value.globalAlpha << '\n';
4854	s << "\talphaMode = " << value.alphaMode << '\n';
4855	s << "\timageExtent = " << value.imageExtent << '\n';
4856	s << '}';
4857	return s;
4858}
4859
4860std::ostream& operator<< (std::ostream& s, const VkDisplayPresentInfoKHR& value)
4861{
4862	s << "VkDisplayPresentInfoKHR = {\n";
4863	s << "\tsType = " << value.sType << '\n';
4864	s << "\tpNext = " << value.pNext << '\n';
4865	s << "\tsrcRect = " << value.srcRect << '\n';
4866	s << "\tdstRect = " << value.dstRect << '\n';
4867	s << "\tpersistent = " << value.persistent << '\n';
4868	s << '}';
4869	return s;
4870}
4871
4872std::ostream& operator<< (std::ostream& s, const VkXlibSurfaceCreateInfoKHR& value)
4873{
4874	s << "VkXlibSurfaceCreateInfoKHR = {\n";
4875	s << "\tsType = " << value.sType << '\n';
4876	s << "\tpNext = " << value.pNext << '\n';
4877	s << "\tflags = " << getXlibSurfaceCreateFlagsKHRStr(value.flags) << '\n';
4878	s << "\tdpy = " << value.dpy << '\n';
4879	s << "\twindow = " << value.window << '\n';
4880	s << '}';
4881	return s;
4882}
4883
4884std::ostream& operator<< (std::ostream& s, const VkXcbSurfaceCreateInfoKHR& value)
4885{
4886	s << "VkXcbSurfaceCreateInfoKHR = {\n";
4887	s << "\tsType = " << value.sType << '\n';
4888	s << "\tpNext = " << value.pNext << '\n';
4889	s << "\tflags = " << getXcbSurfaceCreateFlagsKHRStr(value.flags) << '\n';
4890	s << "\tconnection = " << value.connection << '\n';
4891	s << "\twindow = " << value.window << '\n';
4892	s << '}';
4893	return s;
4894}
4895
4896std::ostream& operator<< (std::ostream& s, const VkWaylandSurfaceCreateInfoKHR& value)
4897{
4898	s << "VkWaylandSurfaceCreateInfoKHR = {\n";
4899	s << "\tsType = " << value.sType << '\n';
4900	s << "\tpNext = " << value.pNext << '\n';
4901	s << "\tflags = " << getWaylandSurfaceCreateFlagsKHRStr(value.flags) << '\n';
4902	s << "\tdisplay = " << value.display << '\n';
4903	s << "\tsurface = " << value.surface << '\n';
4904	s << '}';
4905	return s;
4906}
4907
4908std::ostream& operator<< (std::ostream& s, const VkMirSurfaceCreateInfoKHR& value)
4909{
4910	s << "VkMirSurfaceCreateInfoKHR = {\n";
4911	s << "\tsType = " << value.sType << '\n';
4912	s << "\tpNext = " << value.pNext << '\n';
4913	s << "\tflags = " << getMirSurfaceCreateFlagsKHRStr(value.flags) << '\n';
4914	s << "\tconnection = " << value.connection << '\n';
4915	s << "\tmirSurface = " << value.mirSurface << '\n';
4916	s << '}';
4917	return s;
4918}
4919
4920std::ostream& operator<< (std::ostream& s, const VkAndroidSurfaceCreateInfoKHR& value)
4921{
4922	s << "VkAndroidSurfaceCreateInfoKHR = {\n";
4923	s << "\tsType = " << value.sType << '\n';
4924	s << "\tpNext = " << value.pNext << '\n';
4925	s << "\tflags = " << getAndroidSurfaceCreateFlagsKHRStr(value.flags) << '\n';
4926	s << "\twindow = " << value.window << '\n';
4927	s << '}';
4928	return s;
4929}
4930
4931std::ostream& operator<< (std::ostream& s, const VkWin32SurfaceCreateInfoKHR& value)
4932{
4933	s << "VkWin32SurfaceCreateInfoKHR = {\n";
4934	s << "\tsType = " << value.sType << '\n';
4935	s << "\tpNext = " << value.pNext << '\n';
4936	s << "\tflags = " << getWin32SurfaceCreateFlagsKHRStr(value.flags) << '\n';
4937	s << "\thinstance = " << value.hinstance << '\n';
4938	s << "\thwnd = " << value.hwnd << '\n';
4939	s << '}';
4940	return s;
4941}
4942
4943std::ostream& operator<< (std::ostream& s, const VkImportMemoryWin32HandleInfoKHR& value)
4944{
4945	s << "VkImportMemoryWin32HandleInfoKHR = {\n";
4946	s << "\tsType = " << value.sType << '\n';
4947	s << "\tpNext = " << value.pNext << '\n';
4948	s << "\thandleType = " << value.handleType << '\n';
4949	s << "\thandle = " << value.handle << '\n';
4950	s << "\tname = " << getCharPtrStr(value.name) << '\n';
4951	s << '}';
4952	return s;
4953}
4954
4955std::ostream& operator<< (std::ostream& s, const VkExportMemoryWin32HandleInfoKHR& value)
4956{
4957	s << "VkExportMemoryWin32HandleInfoKHR = {\n";
4958	s << "\tsType = " << value.sType << '\n';
4959	s << "\tpNext = " << value.pNext << '\n';
4960	s << "\tpAttributes = " << value.pAttributes << '\n';
4961	s << "\tdwAccess = " << value.dwAccess << '\n';
4962	s << "\tname = " << getCharPtrStr(value.name) << '\n';
4963	s << '}';
4964	return s;
4965}
4966
4967std::ostream& operator<< (std::ostream& s, const VkMemoryWin32HandlePropertiesKHR& value)
4968{
4969	s << "VkMemoryWin32HandlePropertiesKHR = {\n";
4970	s << "\tsType = " << value.sType << '\n';
4971	s << "\tpNext = " << value.pNext << '\n';
4972	s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
4973	s << '}';
4974	return s;
4975}
4976
4977std::ostream& operator<< (std::ostream& s, const VkMemoryGetWin32HandleInfoKHR& value)
4978{
4979	s << "VkMemoryGetWin32HandleInfoKHR = {\n";
4980	s << "\tsType = " << value.sType << '\n';
4981	s << "\tpNext = " << value.pNext << '\n';
4982	s << "\tmemory = " << value.memory << '\n';
4983	s << "\thandleType = " << value.handleType << '\n';
4984	s << '}';
4985	return s;
4986}
4987
4988std::ostream& operator<< (std::ostream& s, const VkImportMemoryFdInfoKHR& value)
4989{
4990	s << "VkImportMemoryFdInfoKHR = {\n";
4991	s << "\tsType = " << value.sType << '\n';
4992	s << "\tpNext = " << value.pNext << '\n';
4993	s << "\thandleType = " << value.handleType << '\n';
4994	s << "\tfd = " << value.fd << '\n';
4995	s << '}';
4996	return s;
4997}
4998
4999std::ostream& operator<< (std::ostream& s, const VkMemoryFdPropertiesKHR& value)
5000{
5001	s << "VkMemoryFdPropertiesKHR = {\n";
5002	s << "\tsType = " << value.sType << '\n';
5003	s << "\tpNext = " << value.pNext << '\n';
5004	s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
5005	s << '}';
5006	return s;
5007}
5008
5009std::ostream& operator<< (std::ostream& s, const VkMemoryGetFdInfoKHR& value)
5010{
5011	s << "VkMemoryGetFdInfoKHR = {\n";
5012	s << "\tsType = " << value.sType << '\n';
5013	s << "\tpNext = " << value.pNext << '\n';
5014	s << "\tmemory = " << value.memory << '\n';
5015	s << "\thandleType = " << value.handleType << '\n';
5016	s << '}';
5017	return s;
5018}
5019
5020std::ostream& operator<< (std::ostream& s, const VkWin32KeyedMutexAcquireReleaseInfoKHR& value)
5021{
5022	s << "VkWin32KeyedMutexAcquireReleaseInfoKHR = {\n";
5023	s << "\tsType = " << value.sType << '\n';
5024	s << "\tpNext = " << value.pNext << '\n';
5025	s << "\tacquireCount = " << value.acquireCount << '\n';
5026	s << "\tpAcquireSyncs = " << value.pAcquireSyncs << '\n';
5027	s << "\tpAcquireKeys = " << value.pAcquireKeys << '\n';
5028	s << "\tpAcquireTimeouts = " << value.pAcquireTimeouts << '\n';
5029	s << "\treleaseCount = " << value.releaseCount << '\n';
5030	s << "\tpReleaseSyncs = " << value.pReleaseSyncs << '\n';
5031	s << "\tpReleaseKeys = " << value.pReleaseKeys << '\n';
5032	s << '}';
5033	return s;
5034}
5035
5036std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreWin32HandleInfoKHR& value)
5037{
5038	s << "VkImportSemaphoreWin32HandleInfoKHR = {\n";
5039	s << "\tsType = " << value.sType << '\n';
5040	s << "\tpNext = " << value.pNext << '\n';
5041	s << "\tsemaphore = " << value.semaphore << '\n';
5042	s << "\tflags = " << getSemaphoreImportFlagsStr(value.flags) << '\n';
5043	s << "\thandleType = " << value.handleType << '\n';
5044	s << "\thandle = " << value.handle << '\n';
5045	s << "\tname = " << getCharPtrStr(value.name) << '\n';
5046	s << '}';
5047	return s;
5048}
5049
5050std::ostream& operator<< (std::ostream& s, const VkExportSemaphoreWin32HandleInfoKHR& value)
5051{
5052	s << "VkExportSemaphoreWin32HandleInfoKHR = {\n";
5053	s << "\tsType = " << value.sType << '\n';
5054	s << "\tpNext = " << value.pNext << '\n';
5055	s << "\tpAttributes = " << value.pAttributes << '\n';
5056	s << "\tdwAccess = " << value.dwAccess << '\n';
5057	s << "\tname = " << getCharPtrStr(value.name) << '\n';
5058	s << '}';
5059	return s;
5060}
5061
5062std::ostream& operator<< (std::ostream& s, const VkD3D12FenceSubmitInfoKHR& value)
5063{
5064	s << "VkD3D12FenceSubmitInfoKHR = {\n";
5065	s << "\tsType = " << value.sType << '\n';
5066	s << "\tpNext = " << value.pNext << '\n';
5067	s << "\twaitSemaphoreValuesCount = " << value.waitSemaphoreValuesCount << '\n';
5068	s << "\tpWaitSemaphoreValues = " << value.pWaitSemaphoreValues << '\n';
5069	s << "\tsignalSemaphoreValuesCount = " << value.signalSemaphoreValuesCount << '\n';
5070	s << "\tpSignalSemaphoreValues = " << value.pSignalSemaphoreValues << '\n';
5071	s << '}';
5072	return s;
5073}
5074
5075std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetWin32HandleInfoKHR& value)
5076{
5077	s << "VkSemaphoreGetWin32HandleInfoKHR = {\n";
5078	s << "\tsType = " << value.sType << '\n';
5079	s << "\tpNext = " << value.pNext << '\n';
5080	s << "\tsemaphore = " << value.semaphore << '\n';
5081	s << "\thandleType = " << value.handleType << '\n';
5082	s << '}';
5083	return s;
5084}
5085
5086std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreFdInfoKHR& value)
5087{
5088	s << "VkImportSemaphoreFdInfoKHR = {\n";
5089	s << "\tsType = " << value.sType << '\n';
5090	s << "\tpNext = " << value.pNext << '\n';
5091	s << "\tsemaphore = " << value.semaphore << '\n';
5092	s << "\tflags = " << getSemaphoreImportFlagsStr(value.flags) << '\n';
5093	s << "\thandleType = " << value.handleType << '\n';
5094	s << "\tfd = " << value.fd << '\n';
5095	s << '}';
5096	return s;
5097}
5098
5099std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetFdInfoKHR& value)
5100{
5101	s << "VkSemaphoreGetFdInfoKHR = {\n";
5102	s << "\tsType = " << value.sType << '\n';
5103	s << "\tpNext = " << value.pNext << '\n';
5104	s << "\tsemaphore = " << value.semaphore << '\n';
5105	s << "\thandleType = " << value.handleType << '\n';
5106	s << '}';
5107	return s;
5108}
5109
5110std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePushDescriptorPropertiesKHR& value)
5111{
5112	s << "VkPhysicalDevicePushDescriptorPropertiesKHR = {\n";
5113	s << "\tsType = " << value.sType << '\n';
5114	s << "\tpNext = " << value.pNext << '\n';
5115	s << "\tmaxPushDescriptors = " << value.maxPushDescriptors << '\n';
5116	s << '}';
5117	return s;
5118}
5119
5120std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFloat16Int8FeaturesKHR& value)
5121{
5122	s << "VkPhysicalDeviceFloat16Int8FeaturesKHR = {\n";
5123	s << "\tsType = " << value.sType << '\n';
5124	s << "\tpNext = " << value.pNext << '\n';
5125	s << "\tshaderFloat16 = " << value.shaderFloat16 << '\n';
5126	s << "\tshaderInt8 = " << value.shaderInt8 << '\n';
5127	s << '}';
5128	return s;
5129}
5130
5131std::ostream& operator<< (std::ostream& s, const VkRectLayerKHR& value)
5132{
5133	s << "VkRectLayerKHR = {\n";
5134	s << "\toffset = " << value.offset << '\n';
5135	s << "\textent = " << value.extent << '\n';
5136	s << "\tlayer = " << value.layer << '\n';
5137	s << '}';
5138	return s;
5139}
5140
5141std::ostream& operator<< (std::ostream& s, const VkPresentRegionKHR& value)
5142{
5143	s << "VkPresentRegionKHR = {\n";
5144	s << "\trectangleCount = " << value.rectangleCount << '\n';
5145	s << "\tpRectangles = " << value.pRectangles << '\n';
5146	s << '}';
5147	return s;
5148}
5149
5150std::ostream& operator<< (std::ostream& s, const VkPresentRegionsKHR& value)
5151{
5152	s << "VkPresentRegionsKHR = {\n";
5153	s << "\tsType = " << value.sType << '\n';
5154	s << "\tpNext = " << value.pNext << '\n';
5155	s << "\tswapchainCount = " << value.swapchainCount << '\n';
5156	s << "\tpRegions = " << value.pRegions << '\n';
5157	s << '}';
5158	return s;
5159}
5160
5161std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription2KHR& value)
5162{
5163	s << "VkAttachmentDescription2KHR = {\n";
5164	s << "\tsType = " << value.sType << '\n';
5165	s << "\tpNext = " << value.pNext << '\n';
5166	s << "\tflags = " << getAttachmentDescriptionFlagsStr(value.flags) << '\n';
5167	s << "\tformat = " << value.format << '\n';
5168	s << "\tsamples = " << value.samples << '\n';
5169	s << "\tloadOp = " << value.loadOp << '\n';
5170	s << "\tstoreOp = " << value.storeOp << '\n';
5171	s << "\tstencilLoadOp = " << value.stencilLoadOp << '\n';
5172	s << "\tstencilStoreOp = " << value.stencilStoreOp << '\n';
5173	s << "\tinitialLayout = " << value.initialLayout << '\n';
5174	s << "\tfinalLayout = " << value.finalLayout << '\n';
5175	s << '}';
5176	return s;
5177}
5178
5179std::ostream& operator<< (std::ostream& s, const VkAttachmentReference2KHR& value)
5180{
5181	s << "VkAttachmentReference2KHR = {\n";
5182	s << "\tsType = " << value.sType << '\n';
5183	s << "\tpNext = " << value.pNext << '\n';
5184	s << "\tattachment = " << value.attachment << '\n';
5185	s << "\tlayout = " << value.layout << '\n';
5186	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
5187	s << '}';
5188	return s;
5189}
5190
5191std::ostream& operator<< (std::ostream& s, const VkSubpassDescription2KHR& value)
5192{
5193	s << "VkSubpassDescription2KHR = {\n";
5194	s << "\tsType = " << value.sType << '\n';
5195	s << "\tpNext = " << value.pNext << '\n';
5196	s << "\tflags = " << getSubpassDescriptionFlagsStr(value.flags) << '\n';
5197	s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
5198	s << "\tviewMask = " << value.viewMask << '\n';
5199	s << "\tinputAttachmentCount = " << value.inputAttachmentCount << '\n';
5200	s << "\tpInputAttachments = " << value.pInputAttachments << '\n';
5201	s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
5202	s << "\tpColorAttachments = " << value.pColorAttachments << '\n';
5203	s << "\tpResolveAttachments = " << value.pResolveAttachments << '\n';
5204	s << "\tpDepthStencilAttachment = " << value.pDepthStencilAttachment << '\n';
5205	s << "\tpreserveAttachmentCount = " << value.preserveAttachmentCount << '\n';
5206	s << "\tpPreserveAttachments = " << value.pPreserveAttachments << '\n';
5207	s << '}';
5208	return s;
5209}
5210
5211std::ostream& operator<< (std::ostream& s, const VkSubpassDependency2KHR& value)
5212{
5213	s << "VkSubpassDependency2KHR = {\n";
5214	s << "\tsType = " << value.sType << '\n';
5215	s << "\tpNext = " << value.pNext << '\n';
5216	s << "\tsrcSubpass = " << value.srcSubpass << '\n';
5217	s << "\tdstSubpass = " << value.dstSubpass << '\n';
5218	s << "\tsrcStageMask = " << getPipelineStageFlagsStr(value.srcStageMask) << '\n';
5219	s << "\tdstStageMask = " << getPipelineStageFlagsStr(value.dstStageMask) << '\n';
5220	s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
5221	s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
5222	s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
5223	s << "\tviewOffset = " << value.viewOffset << '\n';
5224	s << '}';
5225	return s;
5226}
5227
5228std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo2KHR& value)
5229{
5230	s << "VkRenderPassCreateInfo2KHR = {\n";
5231	s << "\tsType = " << value.sType << '\n';
5232	s << "\tpNext = " << value.pNext << '\n';
5233	s << "\tflags = " << getRenderPassCreateFlagsStr(value.flags) << '\n';
5234	s << "\tattachmentCount = " << value.attachmentCount << '\n';
5235	s << "\tpAttachments = " << value.pAttachments << '\n';
5236	s << "\tsubpassCount = " << value.subpassCount << '\n';
5237	s << "\tpSubpasses = " << value.pSubpasses << '\n';
5238	s << "\tdependencyCount = " << value.dependencyCount << '\n';
5239	s << "\tpDependencies = " << value.pDependencies << '\n';
5240	s << "\tcorrelatedViewMaskCount = " << value.correlatedViewMaskCount << '\n';
5241	s << "\tpCorrelatedViewMasks = " << value.pCorrelatedViewMasks << '\n';
5242	s << '}';
5243	return s;
5244}
5245
5246std::ostream& operator<< (std::ostream& s, const VkSubpassBeginInfoKHR& value)
5247{
5248	s << "VkSubpassBeginInfoKHR = {\n";
5249	s << "\tsType = " << value.sType << '\n';
5250	s << "\tpNext = " << value.pNext << '\n';
5251	s << "\tcontents = " << value.contents << '\n';
5252	s << '}';
5253	return s;
5254}
5255
5256std::ostream& operator<< (std::ostream& s, const VkSubpassEndInfoKHR& value)
5257{
5258	s << "VkSubpassEndInfoKHR = {\n";
5259	s << "\tsType = " << value.sType << '\n';
5260	s << "\tpNext = " << value.pNext << '\n';
5261	s << '}';
5262	return s;
5263}
5264
5265std::ostream& operator<< (std::ostream& s, const VkSharedPresentSurfaceCapabilitiesKHR& value)
5266{
5267	s << "VkSharedPresentSurfaceCapabilitiesKHR = {\n";
5268	s << "\tsType = " << value.sType << '\n';
5269	s << "\tpNext = " << value.pNext << '\n';
5270	s << "\tsharedPresentSupportedUsageFlags = " << getImageUsageFlagsStr(value.sharedPresentSupportedUsageFlags) << '\n';
5271	s << '}';
5272	return s;
5273}
5274
5275std::ostream& operator<< (std::ostream& s, const VkImportFenceWin32HandleInfoKHR& value)
5276{
5277	s << "VkImportFenceWin32HandleInfoKHR = {\n";
5278	s << "\tsType = " << value.sType << '\n';
5279	s << "\tpNext = " << value.pNext << '\n';
5280	s << "\tfence = " << value.fence << '\n';
5281	s << "\tflags = " << getFenceImportFlagsStr(value.flags) << '\n';
5282	s << "\thandleType = " << value.handleType << '\n';
5283	s << "\thandle = " << value.handle << '\n';
5284	s << "\tname = " << getCharPtrStr(value.name) << '\n';
5285	s << '}';
5286	return s;
5287}
5288
5289std::ostream& operator<< (std::ostream& s, const VkExportFenceWin32HandleInfoKHR& value)
5290{
5291	s << "VkExportFenceWin32HandleInfoKHR = {\n";
5292	s << "\tsType = " << value.sType << '\n';
5293	s << "\tpNext = " << value.pNext << '\n';
5294	s << "\tpAttributes = " << value.pAttributes << '\n';
5295	s << "\tdwAccess = " << value.dwAccess << '\n';
5296	s << "\tname = " << getCharPtrStr(value.name) << '\n';
5297	s << '}';
5298	return s;
5299}
5300
5301std::ostream& operator<< (std::ostream& s, const VkFenceGetWin32HandleInfoKHR& value)
5302{
5303	s << "VkFenceGetWin32HandleInfoKHR = {\n";
5304	s << "\tsType = " << value.sType << '\n';
5305	s << "\tpNext = " << value.pNext << '\n';
5306	s << "\tfence = " << value.fence << '\n';
5307	s << "\thandleType = " << value.handleType << '\n';
5308	s << '}';
5309	return s;
5310}
5311
5312std::ostream& operator<< (std::ostream& s, const VkImportFenceFdInfoKHR& value)
5313{
5314	s << "VkImportFenceFdInfoKHR = {\n";
5315	s << "\tsType = " << value.sType << '\n';
5316	s << "\tpNext = " << value.pNext << '\n';
5317	s << "\tfence = " << value.fence << '\n';
5318	s << "\tflags = " << getFenceImportFlagsStr(value.flags) << '\n';
5319	s << "\thandleType = " << value.handleType << '\n';
5320	s << "\tfd = " << value.fd << '\n';
5321	s << '}';
5322	return s;
5323}
5324
5325std::ostream& operator<< (std::ostream& s, const VkFenceGetFdInfoKHR& value)
5326{
5327	s << "VkFenceGetFdInfoKHR = {\n";
5328	s << "\tsType = " << value.sType << '\n';
5329	s << "\tpNext = " << value.pNext << '\n';
5330	s << "\tfence = " << value.fence << '\n';
5331	s << "\thandleType = " << value.handleType << '\n';
5332	s << '}';
5333	return s;
5334}
5335
5336std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSurfaceInfo2KHR& value)
5337{
5338	s << "VkPhysicalDeviceSurfaceInfo2KHR = {\n";
5339	s << "\tsType = " << value.sType << '\n';
5340	s << "\tpNext = " << value.pNext << '\n';
5341	s << "\tsurface = " << value.surface << '\n';
5342	s << '}';
5343	return s;
5344}
5345
5346std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilities2KHR& value)
5347{
5348	s << "VkSurfaceCapabilities2KHR = {\n";
5349	s << "\tsType = " << value.sType << '\n';
5350	s << "\tpNext = " << value.pNext << '\n';
5351	s << "\tsurfaceCapabilities = " << value.surfaceCapabilities << '\n';
5352	s << '}';
5353	return s;
5354}
5355
5356std::ostream& operator<< (std::ostream& s, const VkSurfaceFormat2KHR& value)
5357{
5358	s << "VkSurfaceFormat2KHR = {\n";
5359	s << "\tsType = " << value.sType << '\n';
5360	s << "\tpNext = " << value.pNext << '\n';
5361	s << "\tsurfaceFormat = " << value.surfaceFormat << '\n';
5362	s << '}';
5363	return s;
5364}
5365
5366std::ostream& operator<< (std::ostream& s, const VkDisplayProperties2KHR& value)
5367{
5368	s << "VkDisplayProperties2KHR = {\n";
5369	s << "\tsType = " << value.sType << '\n';
5370	s << "\tpNext = " << value.pNext << '\n';
5371	s << "\tdisplayProperties = " << value.displayProperties << '\n';
5372	s << '}';
5373	return s;
5374}
5375
5376std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneProperties2KHR& value)
5377{
5378	s << "VkDisplayPlaneProperties2KHR = {\n";
5379	s << "\tsType = " << value.sType << '\n';
5380	s << "\tpNext = " << value.pNext << '\n';
5381	s << "\tdisplayPlaneProperties = " << value.displayPlaneProperties << '\n';
5382	s << '}';
5383	return s;
5384}
5385
5386std::ostream& operator<< (std::ostream& s, const VkDisplayModeProperties2KHR& value)
5387{
5388	s << "VkDisplayModeProperties2KHR = {\n";
5389	s << "\tsType = " << value.sType << '\n';
5390	s << "\tpNext = " << value.pNext << '\n';
5391	s << "\tdisplayModeProperties = " << value.displayModeProperties << '\n';
5392	s << '}';
5393	return s;
5394}
5395
5396std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneInfo2KHR& value)
5397{
5398	s << "VkDisplayPlaneInfo2KHR = {\n";
5399	s << "\tsType = " << value.sType << '\n';
5400	s << "\tpNext = " << value.pNext << '\n';
5401	s << "\tmode = " << value.mode << '\n';
5402	s << "\tplaneIndex = " << value.planeIndex << '\n';
5403	s << '}';
5404	return s;
5405}
5406
5407std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilities2KHR& value)
5408{
5409	s << "VkDisplayPlaneCapabilities2KHR = {\n";
5410	s << "\tsType = " << value.sType << '\n';
5411	s << "\tpNext = " << value.pNext << '\n';
5412	s << "\tcapabilities = " << value.capabilities << '\n';
5413	s << '}';
5414	return s;
5415}
5416
5417std::ostream& operator<< (std::ostream& s, const VkImageFormatListCreateInfoKHR& value)
5418{
5419	s << "VkImageFormatListCreateInfoKHR = {\n";
5420	s << "\tsType = " << value.sType << '\n';
5421	s << "\tpNext = " << value.pNext << '\n';
5422	s << "\tviewFormatCount = " << value.viewFormatCount << '\n';
5423	s << "\tpViewFormats = " << value.pViewFormats << '\n';
5424	s << '}';
5425	return s;
5426}
5427
5428std::ostream& operator<< (std::ostream& s, const VkConformanceVersionKHR& value)
5429{
5430	s << "VkConformanceVersionKHR = {\n";
5431	s << "\tmajor = " << value.major << '\n';
5432	s << "\tminor = " << value.minor << '\n';
5433	s << "\tsubminor = " << value.subminor << '\n';
5434	s << "\tpatch = " << value.patch << '\n';
5435	s << '}';
5436	return s;
5437}
5438
5439std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDriverPropertiesKHR& value)
5440{
5441	s << "VkPhysicalDeviceDriverPropertiesKHR = {\n";
5442	s << "\tsType = " << value.sType << '\n';
5443	s << "\tpNext = " << value.pNext << '\n';
5444	s << "\tdriverID = " << value.driverID << '\n';
5445	s << "\tdriverName = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverName)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverName))) << '\n';
5446	s << "\tdriverInfo = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverInfo)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverInfo))) << '\n';
5447	s << "\tconformanceVersion = " << value.conformanceVersion << '\n';
5448	s << '}';
5449	return s;
5450}
5451
5452std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFloatControlsPropertiesKHR& value)
5453{
5454	s << "VkPhysicalDeviceFloatControlsPropertiesKHR = {\n";
5455	s << "\tsType = " << value.sType << '\n';
5456	s << "\tpNext = " << value.pNext << '\n';
5457	s << "\tseparateDenormSettings = " << value.separateDenormSettings << '\n';
5458	s << "\tseparateRoundingModeSettings = " << value.separateRoundingModeSettings << '\n';
5459	s << "\tshaderSignedZeroInfNanPreserveFloat16 = " << value.shaderSignedZeroInfNanPreserveFloat16 << '\n';
5460	s << "\tshaderSignedZeroInfNanPreserveFloat32 = " << value.shaderSignedZeroInfNanPreserveFloat32 << '\n';
5461	s << "\tshaderSignedZeroInfNanPreserveFloat64 = " << value.shaderSignedZeroInfNanPreserveFloat64 << '\n';
5462	s << "\tshaderDenormPreserveFloat16 = " << value.shaderDenormPreserveFloat16 << '\n';
5463	s << "\tshaderDenormPreserveFloat32 = " << value.shaderDenormPreserveFloat32 << '\n';
5464	s << "\tshaderDenormPreserveFloat64 = " << value.shaderDenormPreserveFloat64 << '\n';
5465	s << "\tshaderDenormFlushToZeroFloat16 = " << value.shaderDenormFlushToZeroFloat16 << '\n';
5466	s << "\tshaderDenormFlushToZeroFloat32 = " << value.shaderDenormFlushToZeroFloat32 << '\n';
5467	s << "\tshaderDenormFlushToZeroFloat64 = " << value.shaderDenormFlushToZeroFloat64 << '\n';
5468	s << "\tshaderRoundingModeRTEFloat16 = " << value.shaderRoundingModeRTEFloat16 << '\n';
5469	s << "\tshaderRoundingModeRTEFloat32 = " << value.shaderRoundingModeRTEFloat32 << '\n';
5470	s << "\tshaderRoundingModeRTEFloat64 = " << value.shaderRoundingModeRTEFloat64 << '\n';
5471	s << "\tshaderRoundingModeRTZFloat16 = " << value.shaderRoundingModeRTZFloat16 << '\n';
5472	s << "\tshaderRoundingModeRTZFloat32 = " << value.shaderRoundingModeRTZFloat32 << '\n';
5473	s << "\tshaderRoundingModeRTZFloat64 = " << value.shaderRoundingModeRTZFloat64 << '\n';
5474	s << '}';
5475	return s;
5476}
5477
5478std::ostream& operator<< (std::ostream& s, const VkSubpassDescriptionDepthStencilResolveKHR& value)
5479{
5480	s << "VkSubpassDescriptionDepthStencilResolveKHR = {\n";
5481	s << "\tsType = " << value.sType << '\n';
5482	s << "\tpNext = " << value.pNext << '\n';
5483	s << "\tdepthResolveMode = " << value.depthResolveMode << '\n';
5484	s << "\tstencilResolveMode = " << value.stencilResolveMode << '\n';
5485	s << "\tpDepthStencilResolveAttachment = " << value.pDepthStencilResolveAttachment << '\n';
5486	s << '}';
5487	return s;
5488}
5489
5490std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDepthStencilResolvePropertiesKHR& value)
5491{
5492	s << "VkPhysicalDeviceDepthStencilResolvePropertiesKHR = {\n";
5493	s << "\tsType = " << value.sType << '\n';
5494	s << "\tpNext = " << value.pNext << '\n';
5495	s << "\tsupportedDepthResolveModes = " << getResolveModeFlagsKHRStr(value.supportedDepthResolveModes) << '\n';
5496	s << "\tsupportedStencilResolveModes = " << getResolveModeFlagsKHRStr(value.supportedStencilResolveModes) << '\n';
5497	s << "\tindependentResolveNone = " << value.independentResolveNone << '\n';
5498	s << "\tindependentResolve = " << value.independentResolve << '\n';
5499	s << '}';
5500	return s;
5501}
5502
5503std::ostream& operator<< (std::ostream& s, const VkSurfaceProtectedCapabilitiesKHR& value)
5504{
5505	s << "VkSurfaceProtectedCapabilitiesKHR = {\n";
5506	s << "\tsType = " << value.sType << '\n';
5507	s << "\tpNext = " << value.pNext << '\n';
5508	s << "\tsupportsProtected = " << value.supportsProtected << '\n';
5509	s << '}';
5510	return s;
5511}
5512
5513std::ostream& operator<< (std::ostream& s, const VkDebugReportCallbackCreateInfoEXT& value)
5514{
5515	s << "VkDebugReportCallbackCreateInfoEXT = {\n";
5516	s << "\tsType = " << value.sType << '\n';
5517	s << "\tpNext = " << value.pNext << '\n';
5518	s << "\tflags = " << getDebugReportFlagsEXTStr(value.flags) << '\n';
5519	s << "\tpfnCallback = " << value.pfnCallback << '\n';
5520	s << "\tpUserData = " << value.pUserData << '\n';
5521	s << '}';
5522	return s;
5523}
5524
5525std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateRasterizationOrderAMD& value)
5526{
5527	s << "VkPipelineRasterizationStateRasterizationOrderAMD = {\n";
5528	s << "\tsType = " << value.sType << '\n';
5529	s << "\tpNext = " << value.pNext << '\n';
5530	s << "\trasterizationOrder = " << value.rasterizationOrder << '\n';
5531	s << '}';
5532	return s;
5533}
5534
5535std::ostream& operator<< (std::ostream& s, const VkDebugMarkerObjectNameInfoEXT& value)
5536{
5537	s << "VkDebugMarkerObjectNameInfoEXT = {\n";
5538	s << "\tsType = " << value.sType << '\n';
5539	s << "\tpNext = " << value.pNext << '\n';
5540	s << "\tobjectType = " << value.objectType << '\n';
5541	s << "\tobject = " << value.object << '\n';
5542	s << "\tpObjectName = " << getCharPtrStr(value.pObjectName) << '\n';
5543	s << '}';
5544	return s;
5545}
5546
5547std::ostream& operator<< (std::ostream& s, const VkDebugMarkerObjectTagInfoEXT& value)
5548{
5549	s << "VkDebugMarkerObjectTagInfoEXT = {\n";
5550	s << "\tsType = " << value.sType << '\n';
5551	s << "\tpNext = " << value.pNext << '\n';
5552	s << "\tobjectType = " << value.objectType << '\n';
5553	s << "\tobject = " << value.object << '\n';
5554	s << "\ttagName = " << value.tagName << '\n';
5555	s << "\ttagSize = " << value.tagSize << '\n';
5556	s << "\tpTag = " << value.pTag << '\n';
5557	s << '}';
5558	return s;
5559}
5560
5561std::ostream& operator<< (std::ostream& s, const VkDebugMarkerMarkerInfoEXT& value)
5562{
5563	s << "VkDebugMarkerMarkerInfoEXT = {\n";
5564	s << "\tsType = " << value.sType << '\n';
5565	s << "\tpNext = " << value.pNext << '\n';
5566	s << "\tpMarkerName = " << getCharPtrStr(value.pMarkerName) << '\n';
5567	s << "\tcolor = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.color), DE_ARRAY_END(value.color)) << '\n';
5568	s << '}';
5569	return s;
5570}
5571
5572std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationImageCreateInfoNV& value)
5573{
5574	s << "VkDedicatedAllocationImageCreateInfoNV = {\n";
5575	s << "\tsType = " << value.sType << '\n';
5576	s << "\tpNext = " << value.pNext << '\n';
5577	s << "\tdedicatedAllocation = " << value.dedicatedAllocation << '\n';
5578	s << '}';
5579	return s;
5580}
5581
5582std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationBufferCreateInfoNV& value)
5583{
5584	s << "VkDedicatedAllocationBufferCreateInfoNV = {\n";
5585	s << "\tsType = " << value.sType << '\n';
5586	s << "\tpNext = " << value.pNext << '\n';
5587	s << "\tdedicatedAllocation = " << value.dedicatedAllocation << '\n';
5588	s << '}';
5589	return s;
5590}
5591
5592std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationMemoryAllocateInfoNV& value)
5593{
5594	s << "VkDedicatedAllocationMemoryAllocateInfoNV = {\n";
5595	s << "\tsType = " << value.sType << '\n';
5596	s << "\tpNext = " << value.pNext << '\n';
5597	s << "\timage = " << value.image << '\n';
5598	s << "\tbuffer = " << value.buffer << '\n';
5599	s << '}';
5600	return s;
5601}
5602
5603std::ostream& operator<< (std::ostream& s, const VkTextureLODGatherFormatPropertiesAMD& value)
5604{
5605	s << "VkTextureLODGatherFormatPropertiesAMD = {\n";
5606	s << "\tsType = " << value.sType << '\n';
5607	s << "\tpNext = " << value.pNext << '\n';
5608	s << "\tsupportsTextureGatherLODBiasAMD = " << value.supportsTextureGatherLODBiasAMD << '\n';
5609	s << '}';
5610	return s;
5611}
5612
5613std::ostream& operator<< (std::ostream& s, const VkExternalImageFormatPropertiesNV& value)
5614{
5615	s << "VkExternalImageFormatPropertiesNV = {\n";
5616	s << "\timageFormatProperties = " << value.imageFormatProperties << '\n';
5617	s << "\texternalMemoryFeatures = " << getExternalMemoryFeatureFlagsNVStr(value.externalMemoryFeatures) << '\n';
5618	s << "\texportFromImportedHandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.exportFromImportedHandleTypes) << '\n';
5619	s << "\tcompatibleHandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.compatibleHandleTypes) << '\n';
5620	s << '}';
5621	return s;
5622}
5623
5624std::ostream& operator<< (std::ostream& s, const VkExternalMemoryImageCreateInfoNV& value)
5625{
5626	s << "VkExternalMemoryImageCreateInfoNV = {\n";
5627	s << "\tsType = " << value.sType << '\n';
5628	s << "\tpNext = " << value.pNext << '\n';
5629	s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.handleTypes) << '\n';
5630	s << '}';
5631	return s;
5632}
5633
5634std::ostream& operator<< (std::ostream& s, const VkExportMemoryAllocateInfoNV& value)
5635{
5636	s << "VkExportMemoryAllocateInfoNV = {\n";
5637	s << "\tsType = " << value.sType << '\n';
5638	s << "\tpNext = " << value.pNext << '\n';
5639	s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.handleTypes) << '\n';
5640	s << '}';
5641	return s;
5642}
5643
5644std::ostream& operator<< (std::ostream& s, const VkImportMemoryWin32HandleInfoNV& value)
5645{
5646	s << "VkImportMemoryWin32HandleInfoNV = {\n";
5647	s << "\tsType = " << value.sType << '\n';
5648	s << "\tpNext = " << value.pNext << '\n';
5649	s << "\thandleType = " << getExternalMemoryHandleTypeFlagsNVStr(value.handleType) << '\n';
5650	s << "\thandle = " << value.handle << '\n';
5651	s << '}';
5652	return s;
5653}
5654
5655std::ostream& operator<< (std::ostream& s, const VkExportMemoryWin32HandleInfoNV& value)
5656{
5657	s << "VkExportMemoryWin32HandleInfoNV = {\n";
5658	s << "\tsType = " << value.sType << '\n';
5659	s << "\tpNext = " << value.pNext << '\n';
5660	s << "\tpAttributes = " << value.pAttributes << '\n';
5661	s << "\tdwAccess = " << value.dwAccess << '\n';
5662	s << '}';
5663	return s;
5664}
5665
5666std::ostream& operator<< (std::ostream& s, const VkWin32KeyedMutexAcquireReleaseInfoNV& value)
5667{
5668	s << "VkWin32KeyedMutexAcquireReleaseInfoNV = {\n";
5669	s << "\tsType = " << value.sType << '\n';
5670	s << "\tpNext = " << value.pNext << '\n';
5671	s << "\tacquireCount = " << value.acquireCount << '\n';
5672	s << "\tpAcquireSyncs = " << value.pAcquireSyncs << '\n';
5673	s << "\tpAcquireKeys = " << value.pAcquireKeys << '\n';
5674	s << "\tpAcquireTimeoutMilliseconds = " << value.pAcquireTimeoutMilliseconds << '\n';
5675	s << "\treleaseCount = " << value.releaseCount << '\n';
5676	s << "\tpReleaseSyncs = " << value.pReleaseSyncs << '\n';
5677	s << "\tpReleaseKeys = " << value.pReleaseKeys << '\n';
5678	s << '}';
5679	return s;
5680}
5681
5682std::ostream& operator<< (std::ostream& s, const VkValidationFlagsEXT& value)
5683{
5684	s << "VkValidationFlagsEXT = {\n";
5685	s << "\tsType = " << value.sType << '\n';
5686	s << "\tpNext = " << value.pNext << '\n';
5687	s << "\tdisabledValidationCheckCount = " << value.disabledValidationCheckCount << '\n';
5688	s << "\tpDisabledValidationChecks = " << value.pDisabledValidationChecks << '\n';
5689	s << '}';
5690	return s;
5691}
5692
5693std::ostream& operator<< (std::ostream& s, const VkViSurfaceCreateInfoNN& value)
5694{
5695	s << "VkViSurfaceCreateInfoNN = {\n";
5696	s << "\tsType = " << value.sType << '\n';
5697	s << "\tpNext = " << value.pNext << '\n';
5698	s << "\tflags = " << getViSurfaceCreateFlagsNNStr(value.flags) << '\n';
5699	s << "\twindow = " << value.window << '\n';
5700	s << '}';
5701	return s;
5702}
5703
5704std::ostream& operator<< (std::ostream& s, const VkConditionalRenderingBeginInfoEXT& value)
5705{
5706	s << "VkConditionalRenderingBeginInfoEXT = {\n";
5707	s << "\tsType = " << value.sType << '\n';
5708	s << "\tpNext = " << value.pNext << '\n';
5709	s << "\tbuffer = " << value.buffer << '\n';
5710	s << "\toffset = " << value.offset << '\n';
5711	s << "\tflags = " << getConditionalRenderingFlagsEXTStr(value.flags) << '\n';
5712	s << '}';
5713	return s;
5714}
5715
5716std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceConditionalRenderingFeaturesEXT& value)
5717{
5718	s << "VkPhysicalDeviceConditionalRenderingFeaturesEXT = {\n";
5719	s << "\tsType = " << value.sType << '\n';
5720	s << "\tpNext = " << value.pNext << '\n';
5721	s << "\tconditionalRendering = " << value.conditionalRendering << '\n';
5722	s << "\tinheritedConditionalRendering = " << value.inheritedConditionalRendering << '\n';
5723	s << '}';
5724	return s;
5725}
5726
5727std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceConditionalRenderingInfoEXT& value)
5728{
5729	s << "VkCommandBufferInheritanceConditionalRenderingInfoEXT = {\n";
5730	s << "\tsType = " << value.sType << '\n';
5731	s << "\tpNext = " << value.pNext << '\n';
5732	s << "\tconditionalRenderingEnable = " << value.conditionalRenderingEnable << '\n';
5733	s << '}';
5734	return s;
5735}
5736
5737std::ostream& operator<< (std::ostream& s, const VkDeviceGeneratedCommandsFeaturesNVX& value)
5738{
5739	s << "VkDeviceGeneratedCommandsFeaturesNVX = {\n";
5740	s << "\tsType = " << value.sType << '\n';
5741	s << "\tpNext = " << value.pNext << '\n';
5742	s << "\tcomputeBindingPointSupport = " << value.computeBindingPointSupport << '\n';
5743	s << '}';
5744	return s;
5745}
5746
5747std::ostream& operator<< (std::ostream& s, const VkDeviceGeneratedCommandsLimitsNVX& value)
5748{
5749	s << "VkDeviceGeneratedCommandsLimitsNVX = {\n";
5750	s << "\tsType = " << value.sType << '\n';
5751	s << "\tpNext = " << value.pNext << '\n';
5752	s << "\tmaxIndirectCommandsLayoutTokenCount = " << value.maxIndirectCommandsLayoutTokenCount << '\n';
5753	s << "\tmaxObjectEntryCounts = " << value.maxObjectEntryCounts << '\n';
5754	s << "\tminSequenceCountBufferOffsetAlignment = " << value.minSequenceCountBufferOffsetAlignment << '\n';
5755	s << "\tminSequenceIndexBufferOffsetAlignment = " << value.minSequenceIndexBufferOffsetAlignment << '\n';
5756	s << "\tminCommandsTokenBufferOffsetAlignment = " << value.minCommandsTokenBufferOffsetAlignment << '\n';
5757	s << '}';
5758	return s;
5759}
5760
5761std::ostream& operator<< (std::ostream& s, const VkIndirectCommandsTokenNVX& value)
5762{
5763	s << "VkIndirectCommandsTokenNVX = {\n";
5764	s << "\ttokenType = " << value.tokenType << '\n';
5765	s << "\tbuffer = " << value.buffer << '\n';
5766	s << "\toffset = " << value.offset << '\n';
5767	s << '}';
5768	return s;
5769}
5770
5771std::ostream& operator<< (std::ostream& s, const VkIndirectCommandsLayoutTokenNVX& value)
5772{
5773	s << "VkIndirectCommandsLayoutTokenNVX = {\n";
5774	s << "\ttokenType = " << value.tokenType << '\n';
5775	s << "\tbindingUnit = " << value.bindingUnit << '\n';
5776	s << "\tdynamicCount = " << value.dynamicCount << '\n';
5777	s << "\tdivisor = " << value.divisor << '\n';
5778	s << '}';
5779	return s;
5780}
5781
5782std::ostream& operator<< (std::ostream& s, const VkIndirectCommandsLayoutCreateInfoNVX& value)
5783{
5784	s << "VkIndirectCommandsLayoutCreateInfoNVX = {\n";
5785	s << "\tsType = " << value.sType << '\n';
5786	s << "\tpNext = " << value.pNext << '\n';
5787	s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
5788	s << "\tflags = " << getIndirectCommandsLayoutUsageFlagsNVXStr(value.flags) << '\n';
5789	s << "\ttokenCount = " << value.tokenCount << '\n';
5790	s << "\tpTokens = " << value.pTokens << '\n';
5791	s << '}';
5792	return s;
5793}
5794
5795std::ostream& operator<< (std::ostream& s, const VkCmdProcessCommandsInfoNVX& value)
5796{
5797	s << "VkCmdProcessCommandsInfoNVX = {\n";
5798	s << "\tsType = " << value.sType << '\n';
5799	s << "\tpNext = " << value.pNext << '\n';
5800	s << "\tobjectTable = " << value.objectTable << '\n';
5801	s << "\tindirectCommandsLayout = " << value.indirectCommandsLayout << '\n';
5802	s << "\tindirectCommandsTokenCount = " << value.indirectCommandsTokenCount << '\n';
5803	s << "\tpIndirectCommandsTokens = " << value.pIndirectCommandsTokens << '\n';
5804	s << "\tmaxSequencesCount = " << value.maxSequencesCount << '\n';
5805	s << "\ttargetCommandBuffer = " << value.targetCommandBuffer << '\n';
5806	s << "\tsequencesCountBuffer = " << value.sequencesCountBuffer << '\n';
5807	s << "\tsequencesCountOffset = " << value.sequencesCountOffset << '\n';
5808	s << "\tsequencesIndexBuffer = " << value.sequencesIndexBuffer << '\n';
5809	s << "\tsequencesIndexOffset = " << value.sequencesIndexOffset << '\n';
5810	s << '}';
5811	return s;
5812}
5813
5814std::ostream& operator<< (std::ostream& s, const VkCmdReserveSpaceForCommandsInfoNVX& value)
5815{
5816	s << "VkCmdReserveSpaceForCommandsInfoNVX = {\n";
5817	s << "\tsType = " << value.sType << '\n';
5818	s << "\tpNext = " << value.pNext << '\n';
5819	s << "\tobjectTable = " << value.objectTable << '\n';
5820	s << "\tindirectCommandsLayout = " << value.indirectCommandsLayout << '\n';
5821	s << "\tmaxSequencesCount = " << value.maxSequencesCount << '\n';
5822	s << '}';
5823	return s;
5824}
5825
5826std::ostream& operator<< (std::ostream& s, const VkObjectTableCreateInfoNVX& value)
5827{
5828	s << "VkObjectTableCreateInfoNVX = {\n";
5829	s << "\tsType = " << value.sType << '\n';
5830	s << "\tpNext = " << value.pNext << '\n';
5831	s << "\tobjectCount = " << value.objectCount << '\n';
5832	s << "\tpObjectEntryTypes = " << value.pObjectEntryTypes << '\n';
5833	s << "\tpObjectEntryCounts = " << value.pObjectEntryCounts << '\n';
5834	s << "\tpObjectEntryUsageFlags = " << value.pObjectEntryUsageFlags << '\n';
5835	s << "\tmaxUniformBuffersPerDescriptor = " << value.maxUniformBuffersPerDescriptor << '\n';
5836	s << "\tmaxStorageBuffersPerDescriptor = " << value.maxStorageBuffersPerDescriptor << '\n';
5837	s << "\tmaxStorageImagesPerDescriptor = " << value.maxStorageImagesPerDescriptor << '\n';
5838	s << "\tmaxSampledImagesPerDescriptor = " << value.maxSampledImagesPerDescriptor << '\n';
5839	s << "\tmaxPipelineLayouts = " << value.maxPipelineLayouts << '\n';
5840	s << '}';
5841	return s;
5842}
5843
5844std::ostream& operator<< (std::ostream& s, const VkObjectTableEntryNVX& value)
5845{
5846	s << "VkObjectTableEntryNVX = {\n";
5847	s << "\ttype = " << value.type << '\n';
5848	s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
5849	s << '}';
5850	return s;
5851}
5852
5853std::ostream& operator<< (std::ostream& s, const VkObjectTablePipelineEntryNVX& value)
5854{
5855	s << "VkObjectTablePipelineEntryNVX = {\n";
5856	s << "\ttype = " << value.type << '\n';
5857	s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
5858	s << "\tpipeline = " << value.pipeline << '\n';
5859	s << '}';
5860	return s;
5861}
5862
5863std::ostream& operator<< (std::ostream& s, const VkObjectTableDescriptorSetEntryNVX& value)
5864{
5865	s << "VkObjectTableDescriptorSetEntryNVX = {\n";
5866	s << "\ttype = " << value.type << '\n';
5867	s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
5868	s << "\tpipelineLayout = " << value.pipelineLayout << '\n';
5869	s << "\tdescriptorSet = " << value.descriptorSet << '\n';
5870	s << '}';
5871	return s;
5872}
5873
5874std::ostream& operator<< (std::ostream& s, const VkObjectTableVertexBufferEntryNVX& value)
5875{
5876	s << "VkObjectTableVertexBufferEntryNVX = {\n";
5877	s << "\ttype = " << value.type << '\n';
5878	s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
5879	s << "\tbuffer = " << value.buffer << '\n';
5880	s << '}';
5881	return s;
5882}
5883
5884std::ostream& operator<< (std::ostream& s, const VkObjectTableIndexBufferEntryNVX& value)
5885{
5886	s << "VkObjectTableIndexBufferEntryNVX = {\n";
5887	s << "\ttype = " << value.type << '\n';
5888	s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
5889	s << "\tbuffer = " << value.buffer << '\n';
5890	s << "\tindexType = " << value.indexType << '\n';
5891	s << '}';
5892	return s;
5893}
5894
5895std::ostream& operator<< (std::ostream& s, const VkObjectTablePushConstantEntryNVX& value)
5896{
5897	s << "VkObjectTablePushConstantEntryNVX = {\n";
5898	s << "\ttype = " << value.type << '\n';
5899	s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
5900	s << "\tpipelineLayout = " << value.pipelineLayout << '\n';
5901	s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
5902	s << '}';
5903	return s;
5904}
5905
5906std::ostream& operator<< (std::ostream& s, const VkViewportWScalingNV& value)
5907{
5908	s << "VkViewportWScalingNV = {\n";
5909	s << "\txcoeff = " << value.xcoeff << '\n';
5910	s << "\tycoeff = " << value.ycoeff << '\n';
5911	s << '}';
5912	return s;
5913}
5914
5915std::ostream& operator<< (std::ostream& s, const VkPipelineViewportWScalingStateCreateInfoNV& value)
5916{
5917	s << "VkPipelineViewportWScalingStateCreateInfoNV = {\n";
5918	s << "\tsType = " << value.sType << '\n';
5919	s << "\tpNext = " << value.pNext << '\n';
5920	s << "\tviewportWScalingEnable = " << value.viewportWScalingEnable << '\n';
5921	s << "\tviewportCount = " << value.viewportCount << '\n';
5922	s << "\tpViewportWScalings = " << value.pViewportWScalings << '\n';
5923	s << '}';
5924	return s;
5925}
5926
5927std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilities2EXT& value)
5928{
5929	s << "VkSurfaceCapabilities2EXT = {\n";
5930	s << "\tsType = " << value.sType << '\n';
5931	s << "\tpNext = " << value.pNext << '\n';
5932	s << "\tminImageCount = " << value.minImageCount << '\n';
5933	s << "\tmaxImageCount = " << value.maxImageCount << '\n';
5934	s << "\tcurrentExtent = " << value.currentExtent << '\n';
5935	s << "\tminImageExtent = " << value.minImageExtent << '\n';
5936	s << "\tmaxImageExtent = " << value.maxImageExtent << '\n';
5937	s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
5938	s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
5939	s << "\tcurrentTransform = " << value.currentTransform << '\n';
5940	s << "\tsupportedCompositeAlpha = " << getCompositeAlphaFlagsKHRStr(value.supportedCompositeAlpha) << '\n';
5941	s << "\tsupportedUsageFlags = " << getImageUsageFlagsStr(value.supportedUsageFlags) << '\n';
5942	s << "\tsupportedSurfaceCounters = " << getSurfaceCounterFlagsEXTStr(value.supportedSurfaceCounters) << '\n';
5943	s << '}';
5944	return s;
5945}
5946
5947std::ostream& operator<< (std::ostream& s, const VkDisplayPowerInfoEXT& value)
5948{
5949	s << "VkDisplayPowerInfoEXT = {\n";
5950	s << "\tsType = " << value.sType << '\n';
5951	s << "\tpNext = " << value.pNext << '\n';
5952	s << "\tpowerState = " << value.powerState << '\n';
5953	s << '}';
5954	return s;
5955}
5956
5957std::ostream& operator<< (std::ostream& s, const VkDeviceEventInfoEXT& value)
5958{
5959	s << "VkDeviceEventInfoEXT = {\n";
5960	s << "\tsType = " << value.sType << '\n';
5961	s << "\tpNext = " << value.pNext << '\n';
5962	s << "\tdeviceEvent = " << value.deviceEvent << '\n';
5963	s << '}';
5964	return s;
5965}
5966
5967std::ostream& operator<< (std::ostream& s, const VkDisplayEventInfoEXT& value)
5968{
5969	s << "VkDisplayEventInfoEXT = {\n";
5970	s << "\tsType = " << value.sType << '\n';
5971	s << "\tpNext = " << value.pNext << '\n';
5972	s << "\tdisplayEvent = " << value.displayEvent << '\n';
5973	s << '}';
5974	return s;
5975}
5976
5977std::ostream& operator<< (std::ostream& s, const VkSwapchainCounterCreateInfoEXT& value)
5978{
5979	s << "VkSwapchainCounterCreateInfoEXT = {\n";
5980	s << "\tsType = " << value.sType << '\n';
5981	s << "\tpNext = " << value.pNext << '\n';
5982	s << "\tsurfaceCounters = " << getSurfaceCounterFlagsEXTStr(value.surfaceCounters) << '\n';
5983	s << '}';
5984	return s;
5985}
5986
5987std::ostream& operator<< (std::ostream& s, const VkRefreshCycleDurationGOOGLE& value)
5988{
5989	s << "VkRefreshCycleDurationGOOGLE = {\n";
5990	s << "\trefreshDuration = " << value.refreshDuration << '\n';
5991	s << '}';
5992	return s;
5993}
5994
5995std::ostream& operator<< (std::ostream& s, const VkPastPresentationTimingGOOGLE& value)
5996{
5997	s << "VkPastPresentationTimingGOOGLE = {\n";
5998	s << "\tpresentID = " << value.presentID << '\n';
5999	s << "\tdesiredPresentTime = " << value.desiredPresentTime << '\n';
6000	s << "\tactualPresentTime = " << value.actualPresentTime << '\n';
6001	s << "\tearliestPresentTime = " << value.earliestPresentTime << '\n';
6002	s << "\tpresentMargin = " << value.presentMargin << '\n';
6003	s << '}';
6004	return s;
6005}
6006
6007std::ostream& operator<< (std::ostream& s, const VkPresentTimeGOOGLE& value)
6008{
6009	s << "VkPresentTimeGOOGLE = {\n";
6010	s << "\tpresentID = " << value.presentID << '\n';
6011	s << "\tdesiredPresentTime = " << value.desiredPresentTime << '\n';
6012	s << '}';
6013	return s;
6014}
6015
6016std::ostream& operator<< (std::ostream& s, const VkPresentTimesInfoGOOGLE& value)
6017{
6018	s << "VkPresentTimesInfoGOOGLE = {\n";
6019	s << "\tsType = " << value.sType << '\n';
6020	s << "\tpNext = " << value.pNext << '\n';
6021	s << "\tswapchainCount = " << value.swapchainCount << '\n';
6022	s << "\tpTimes = " << value.pTimes << '\n';
6023	s << '}';
6024	return s;
6025}
6026
6027std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX& value)
6028{
6029	s << "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = {\n";
6030	s << "\tsType = " << value.sType << '\n';
6031	s << "\tpNext = " << value.pNext << '\n';
6032	s << "\tperViewPositionAllComponents = " << value.perViewPositionAllComponents << '\n';
6033	s << '}';
6034	return s;
6035}
6036
6037std::ostream& operator<< (std::ostream& s, const VkViewportSwizzleNV& value)
6038{
6039	s << "VkViewportSwizzleNV = {\n";
6040	s << "\tx = " << value.x << '\n';
6041	s << "\ty = " << value.y << '\n';
6042	s << "\tz = " << value.z << '\n';
6043	s << "\tw = " << value.w << '\n';
6044	s << '}';
6045	return s;
6046}
6047
6048std::ostream& operator<< (std::ostream& s, const VkPipelineViewportSwizzleStateCreateInfoNV& value)
6049{
6050	s << "VkPipelineViewportSwizzleStateCreateInfoNV = {\n";
6051	s << "\tsType = " << value.sType << '\n';
6052	s << "\tpNext = " << value.pNext << '\n';
6053	s << "\tflags = " << getPipelineViewportSwizzleStateCreateFlagsNVStr(value.flags) << '\n';
6054	s << "\tviewportCount = " << value.viewportCount << '\n';
6055	s << "\tpViewportSwizzles = " << value.pViewportSwizzles << '\n';
6056	s << '}';
6057	return s;
6058}
6059
6060std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDiscardRectanglePropertiesEXT& value)
6061{
6062	s << "VkPhysicalDeviceDiscardRectanglePropertiesEXT = {\n";
6063	s << "\tsType = " << value.sType << '\n';
6064	s << "\tpNext = " << value.pNext << '\n';
6065	s << "\tmaxDiscardRectangles = " << value.maxDiscardRectangles << '\n';
6066	s << '}';
6067	return s;
6068}
6069
6070std::ostream& operator<< (std::ostream& s, const VkPipelineDiscardRectangleStateCreateInfoEXT& value)
6071{
6072	s << "VkPipelineDiscardRectangleStateCreateInfoEXT = {\n";
6073	s << "\tsType = " << value.sType << '\n';
6074	s << "\tpNext = " << value.pNext << '\n';
6075	s << "\tflags = " << getPipelineDiscardRectangleStateCreateFlagsEXTStr(value.flags) << '\n';
6076	s << "\tdiscardRectangleMode = " << value.discardRectangleMode << '\n';
6077	s << "\tdiscardRectangleCount = " << value.discardRectangleCount << '\n';
6078	s << "\tpDiscardRectangles = " << value.pDiscardRectangles << '\n';
6079	s << '}';
6080	return s;
6081}
6082
6083std::ostream& operator<< (std::ostream& s, const VkXYColorEXT& value)
6084{
6085	s << "VkXYColorEXT = {\n";
6086	s << "\tx = " << value.x << '\n';
6087	s << "\ty = " << value.y << '\n';
6088	s << '}';
6089	return s;
6090}
6091
6092std::ostream& operator<< (std::ostream& s, const VkHdrMetadataEXT& value)
6093{
6094	s << "VkHdrMetadataEXT = {\n";
6095	s << "\tsType = " << value.sType << '\n';
6096	s << "\tpNext = " << value.pNext << '\n';
6097	s << "\tdisplayPrimaryRed = " << value.displayPrimaryRed << '\n';
6098	s << "\tdisplayPrimaryGreen = " << value.displayPrimaryGreen << '\n';
6099	s << "\tdisplayPrimaryBlue = " << value.displayPrimaryBlue << '\n';
6100	s << "\twhitePoint = " << value.whitePoint << '\n';
6101	s << "\tmaxLuminance = " << value.maxLuminance << '\n';
6102	s << "\tminLuminance = " << value.minLuminance << '\n';
6103	s << "\tmaxContentLightLevel = " << value.maxContentLightLevel << '\n';
6104	s << "\tmaxFrameAverageLightLevel = " << value.maxFrameAverageLightLevel << '\n';
6105	s << '}';
6106	return s;
6107}
6108
6109std::ostream& operator<< (std::ostream& s, const VkIOSSurfaceCreateInfoMVK& value)
6110{
6111	s << "VkIOSSurfaceCreateInfoMVK = {\n";
6112	s << "\tsType = " << value.sType << '\n';
6113	s << "\tpNext = " << value.pNext << '\n';
6114	s << "\tflags = " << getIOSSurfaceCreateFlagsMVKStr(value.flags) << '\n';
6115	s << "\tpView = " << value.pView << '\n';
6116	s << '}';
6117	return s;
6118}
6119
6120std::ostream& operator<< (std::ostream& s, const VkMacOSSurfaceCreateInfoMVK& value)
6121{
6122	s << "VkMacOSSurfaceCreateInfoMVK = {\n";
6123	s << "\tsType = " << value.sType << '\n';
6124	s << "\tpNext = " << value.pNext << '\n';
6125	s << "\tflags = " << getMacOSSurfaceCreateFlagsMVKStr(value.flags) << '\n';
6126	s << "\tpView = " << value.pView << '\n';
6127	s << '}';
6128	return s;
6129}
6130
6131std::ostream& operator<< (std::ostream& s, const VkSamplerReductionModeCreateInfoEXT& value)
6132{
6133	s << "VkSamplerReductionModeCreateInfoEXT = {\n";
6134	s << "\tsType = " << value.sType << '\n';
6135	s << "\tpNext = " << value.pNext << '\n';
6136	s << "\treductionMode = " << value.reductionMode << '\n';
6137	s << '}';
6138	return s;
6139}
6140
6141std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT& value)
6142{
6143	s << "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = {\n";
6144	s << "\tsType = " << value.sType << '\n';
6145	s << "\tpNext = " << value.pNext << '\n';
6146	s << "\tfilterMinmaxSingleComponentFormats = " << value.filterMinmaxSingleComponentFormats << '\n';
6147	s << "\tfilterMinmaxImageComponentMapping = " << value.filterMinmaxImageComponentMapping << '\n';
6148	s << '}';
6149	return s;
6150}
6151
6152std::ostream& operator<< (std::ostream& s, const VkSampleLocationEXT& value)
6153{
6154	s << "VkSampleLocationEXT = {\n";
6155	s << "\tx = " << value.x << '\n';
6156	s << "\ty = " << value.y << '\n';
6157	s << '}';
6158	return s;
6159}
6160
6161std::ostream& operator<< (std::ostream& s, const VkSampleLocationsInfoEXT& value)
6162{
6163	s << "VkSampleLocationsInfoEXT = {\n";
6164	s << "\tsType = " << value.sType << '\n';
6165	s << "\tpNext = " << value.pNext << '\n';
6166	s << "\tsampleLocationsPerPixel = " << value.sampleLocationsPerPixel << '\n';
6167	s << "\tsampleLocationGridSize = " << value.sampleLocationGridSize << '\n';
6168	s << "\tsampleLocationsCount = " << value.sampleLocationsCount << '\n';
6169	s << "\tpSampleLocations = " << value.pSampleLocations << '\n';
6170	s << '}';
6171	return s;
6172}
6173
6174std::ostream& operator<< (std::ostream& s, const VkAttachmentSampleLocationsEXT& value)
6175{
6176	s << "VkAttachmentSampleLocationsEXT = {\n";
6177	s << "\tattachmentIndex = " << value.attachmentIndex << '\n';
6178	s << "\tsampleLocationsInfo = " << value.sampleLocationsInfo << '\n';
6179	s << '}';
6180	return s;
6181}
6182
6183std::ostream& operator<< (std::ostream& s, const VkSubpassSampleLocationsEXT& value)
6184{
6185	s << "VkSubpassSampleLocationsEXT = {\n";
6186	s << "\tsubpassIndex = " << value.subpassIndex << '\n';
6187	s << "\tsampleLocationsInfo = " << value.sampleLocationsInfo << '\n';
6188	s << '}';
6189	return s;
6190}
6191
6192std::ostream& operator<< (std::ostream& s, const VkRenderPassSampleLocationsBeginInfoEXT& value)
6193{
6194	s << "VkRenderPassSampleLocationsBeginInfoEXT = {\n";
6195	s << "\tsType = " << value.sType << '\n';
6196	s << "\tpNext = " << value.pNext << '\n';
6197	s << "\tattachmentInitialSampleLocationsCount = " << value.attachmentInitialSampleLocationsCount << '\n';
6198	s << "\tpAttachmentInitialSampleLocations = " << value.pAttachmentInitialSampleLocations << '\n';
6199	s << "\tpostSubpassSampleLocationsCount = " << value.postSubpassSampleLocationsCount << '\n';
6200	s << "\tpSubpassSampleLocations = " << value.pSubpassSampleLocations << '\n';
6201	s << '}';
6202	return s;
6203}
6204
6205std::ostream& operator<< (std::ostream& s, const VkPipelineSampleLocationsStateCreateInfoEXT& value)
6206{
6207	s << "VkPipelineSampleLocationsStateCreateInfoEXT = {\n";
6208	s << "\tsType = " << value.sType << '\n';
6209	s << "\tpNext = " << value.pNext << '\n';
6210	s << "\tsampleLocationsEnable = " << value.sampleLocationsEnable << '\n';
6211	s << "\tsampleLocationsInfo = " << value.sampleLocationsInfo << '\n';
6212	s << '}';
6213	return s;
6214}
6215
6216std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSampleLocationsPropertiesEXT& value)
6217{
6218	s << "VkPhysicalDeviceSampleLocationsPropertiesEXT = {\n";
6219	s << "\tsType = " << value.sType << '\n';
6220	s << "\tpNext = " << value.pNext << '\n';
6221	s << "\tsampleLocationSampleCounts = " << getSampleCountFlagsStr(value.sampleLocationSampleCounts) << '\n';
6222	s << "\tmaxSampleLocationGridSize = " << value.maxSampleLocationGridSize << '\n';
6223	s << "\tsampleLocationCoordinateRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.sampleLocationCoordinateRange), DE_ARRAY_END(value.sampleLocationCoordinateRange)) << '\n';
6224	s << "\tsampleLocationSubPixelBits = " << value.sampleLocationSubPixelBits << '\n';
6225	s << "\tvariableSampleLocations = " << value.variableSampleLocations << '\n';
6226	s << '}';
6227	return s;
6228}
6229
6230std::ostream& operator<< (std::ostream& s, const VkMultisamplePropertiesEXT& value)
6231{
6232	s << "VkMultisamplePropertiesEXT = {\n";
6233	s << "\tsType = " << value.sType << '\n';
6234	s << "\tpNext = " << value.pNext << '\n';
6235	s << "\tmaxSampleLocationGridSize = " << value.maxSampleLocationGridSize << '\n';
6236	s << '}';
6237	return s;
6238}
6239
6240std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& value)
6241{
6242	s << "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT = {\n";
6243	s << "\tsType = " << value.sType << '\n';
6244	s << "\tpNext = " << value.pNext << '\n';
6245	s << "\tadvancedBlendCoherentOperations = " << value.advancedBlendCoherentOperations << '\n';
6246	s << '}';
6247	return s;
6248}
6249
6250std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT& value)
6251{
6252	s << "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT = {\n";
6253	s << "\tsType = " << value.sType << '\n';
6254	s << "\tpNext = " << value.pNext << '\n';
6255	s << "\tadvancedBlendMaxColorAttachments = " << value.advancedBlendMaxColorAttachments << '\n';
6256	s << "\tadvancedBlendIndependentBlend = " << value.advancedBlendIndependentBlend << '\n';
6257	s << "\tadvancedBlendNonPremultipliedSrcColor = " << value.advancedBlendNonPremultipliedSrcColor << '\n';
6258	s << "\tadvancedBlendNonPremultipliedDstColor = " << value.advancedBlendNonPremultipliedDstColor << '\n';
6259	s << "\tadvancedBlendCorrelatedOverlap = " << value.advancedBlendCorrelatedOverlap << '\n';
6260	s << "\tadvancedBlendAllOperations = " << value.advancedBlendAllOperations << '\n';
6261	s << '}';
6262	return s;
6263}
6264
6265std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendAdvancedStateCreateInfoEXT& value)
6266{
6267	s << "VkPipelineColorBlendAdvancedStateCreateInfoEXT = {\n";
6268	s << "\tsType = " << value.sType << '\n';
6269	s << "\tpNext = " << value.pNext << '\n';
6270	s << "\tsrcPremultiplied = " << value.srcPremultiplied << '\n';
6271	s << "\tdstPremultiplied = " << value.dstPremultiplied << '\n';
6272	s << "\tblendOverlap = " << value.blendOverlap << '\n';
6273	s << '}';
6274	return s;
6275}
6276
6277std::ostream& operator<< (std::ostream& s, const VkPipelineCoverageToColorStateCreateInfoNV& value)
6278{
6279	s << "VkPipelineCoverageToColorStateCreateInfoNV = {\n";
6280	s << "\tsType = " << value.sType << '\n';
6281	s << "\tpNext = " << value.pNext << '\n';
6282	s << "\tflags = " << getPipelineCoverageToColorStateCreateFlagsNVStr(value.flags) << '\n';
6283	s << "\tcoverageToColorEnable = " << value.coverageToColorEnable << '\n';
6284	s << "\tcoverageToColorLocation = " << value.coverageToColorLocation << '\n';
6285	s << '}';
6286	return s;
6287}
6288
6289std::ostream& operator<< (std::ostream& s, const VkPipelineCoverageModulationStateCreateInfoNV& value)
6290{
6291	s << "VkPipelineCoverageModulationStateCreateInfoNV = {\n";
6292	s << "\tsType = " << value.sType << '\n';
6293	s << "\tpNext = " << value.pNext << '\n';
6294	s << "\tflags = " << getPipelineCoverageModulationStateCreateFlagsNVStr(value.flags) << '\n';
6295	s << "\tcoverageModulationMode = " << value.coverageModulationMode << '\n';
6296	s << "\tcoverageModulationTableEnable = " << value.coverageModulationTableEnable << '\n';
6297	s << "\tcoverageModulationTableCount = " << value.coverageModulationTableCount << '\n';
6298	s << "\tpCoverageModulationTable = " << value.pCoverageModulationTable << '\n';
6299	s << '}';
6300	return s;
6301}
6302
6303std::ostream& operator<< (std::ostream& s, const VkValidationCacheCreateInfoEXT& value)
6304{
6305	s << "VkValidationCacheCreateInfoEXT = {\n";
6306	s << "\tsType = " << value.sType << '\n';
6307	s << "\tpNext = " << value.pNext << '\n';
6308	s << "\tflags = " << getValidationCacheCreateFlagsEXTStr(value.flags) << '\n';
6309	s << "\tinitialDataSize = " << value.initialDataSize << '\n';
6310	s << "\tpInitialData = " << value.pInitialData << '\n';
6311	s << '}';
6312	return s;
6313}
6314
6315std::ostream& operator<< (std::ostream& s, const VkShaderModuleValidationCacheCreateInfoEXT& value)
6316{
6317	s << "VkShaderModuleValidationCacheCreateInfoEXT = {\n";
6318	s << "\tsType = " << value.sType << '\n';
6319	s << "\tpNext = " << value.pNext << '\n';
6320	s << "\tvalidationCache = " << value.validationCache << '\n';
6321	s << '}';
6322	return s;
6323}
6324
6325std::ostream& operator<< (std::ostream& s, const VkAndroidHardwareBufferUsageANDROID& value)
6326{
6327	s << "VkAndroidHardwareBufferUsageANDROID = {\n";
6328	s << "\tsType = " << value.sType << '\n';
6329	s << "\tpNext = " << value.pNext << '\n';
6330	s << "\tandroidHardwareBufferUsage = " << value.androidHardwareBufferUsage << '\n';
6331	s << '}';
6332	return s;
6333}
6334
6335std::ostream& operator<< (std::ostream& s, const VkAndroidHardwareBufferPropertiesANDROID& value)
6336{
6337	s << "VkAndroidHardwareBufferPropertiesANDROID = {\n";
6338	s << "\tsType = " << value.sType << '\n';
6339	s << "\tpNext = " << value.pNext << '\n';
6340	s << "\tallocationSize = " << value.allocationSize << '\n';
6341	s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
6342	s << '}';
6343	return s;
6344}
6345
6346std::ostream& operator<< (std::ostream& s, const VkAndroidHardwareBufferFormatPropertiesANDROID& value)
6347{
6348	s << "VkAndroidHardwareBufferFormatPropertiesANDROID = {\n";
6349	s << "\tsType = " << value.sType << '\n';
6350	s << "\tpNext = " << value.pNext << '\n';
6351	s << "\tformat = " << value.format << '\n';
6352	s << "\texternalFormat = " << value.externalFormat << '\n';
6353	s << "\tformatFeatures = " << getFormatFeatureFlagsStr(value.formatFeatures) << '\n';
6354	s << "\tsamplerYcbcrConversionComponents = " << value.samplerYcbcrConversionComponents << '\n';
6355	s << "\tsuggestedYcbcrModel = " << value.suggestedYcbcrModel << '\n';
6356	s << "\tsuggestedYcbcrRange = " << value.suggestedYcbcrRange << '\n';
6357	s << "\tsuggestedXChromaOffset = " << value.suggestedXChromaOffset << '\n';
6358	s << "\tsuggestedYChromaOffset = " << value.suggestedYChromaOffset << '\n';
6359	s << '}';
6360	return s;
6361}
6362
6363std::ostream& operator<< (std::ostream& s, const VkImportAndroidHardwareBufferInfoANDROID& value)
6364{
6365	s << "VkImportAndroidHardwareBufferInfoANDROID = {\n";
6366	s << "\tsType = " << value.sType << '\n';
6367	s << "\tpNext = " << value.pNext << '\n';
6368	s << "\tbuffer = " << value.buffer << '\n';
6369	s << '}';
6370	return s;
6371}
6372
6373std::ostream& operator<< (std::ostream& s, const VkMemoryGetAndroidHardwareBufferInfoANDROID& value)
6374{
6375	s << "VkMemoryGetAndroidHardwareBufferInfoANDROID = {\n";
6376	s << "\tsType = " << value.sType << '\n';
6377	s << "\tpNext = " << value.pNext << '\n';
6378	s << "\tmemory = " << value.memory << '\n';
6379	s << '}';
6380	return s;
6381}
6382
6383std::ostream& operator<< (std::ostream& s, const VkExternalFormatANDROID& value)
6384{
6385	s << "VkExternalFormatANDROID = {\n";
6386	s << "\tsType = " << value.sType << '\n';
6387	s << "\tpNext = " << value.pNext << '\n';
6388	s << "\texternalFormat = " << value.externalFormat << '\n';
6389	s << '}';
6390	return s;
6391}
6392
6393std::ostream& operator<< (std::ostream& s, const VkImportMemoryHostPointerInfoEXT& value)
6394{
6395	s << "VkImportMemoryHostPointerInfoEXT = {\n";
6396	s << "\tsType = " << value.sType << '\n';
6397	s << "\tpNext = " << value.pNext << '\n';
6398	s << "\thandleType = " << value.handleType << '\n';
6399	s << "\tpHostPointer = " << value.pHostPointer << '\n';
6400	s << '}';
6401	return s;
6402}
6403
6404std::ostream& operator<< (std::ostream& s, const VkMemoryHostPointerPropertiesEXT& value)
6405{
6406	s << "VkMemoryHostPointerPropertiesEXT = {\n";
6407	s << "\tsType = " << value.sType << '\n';
6408	s << "\tpNext = " << value.pNext << '\n';
6409	s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
6410	s << '}';
6411	return s;
6412}
6413
6414std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalMemoryHostPropertiesEXT& value)
6415{
6416	s << "VkPhysicalDeviceExternalMemoryHostPropertiesEXT = {\n";
6417	s << "\tsType = " << value.sType << '\n';
6418	s << "\tpNext = " << value.pNext << '\n';
6419	s << "\tminImportedHostPointerAlignment = " << value.minImportedHostPointerAlignment << '\n';
6420	s << '}';
6421	return s;
6422}
6423
6424std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT& value)
6425{
6426	s << "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT = {\n";
6427	s << "\tsType = " << value.sType << '\n';
6428	s << "\tpNext = " << value.pNext << '\n';
6429	s << "\tmaxVertexAttribDivisor = " << value.maxVertexAttribDivisor << '\n';
6430	s << '}';
6431	return s;
6432}
6433
6434std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDivisorDescriptionEXT& value)
6435{
6436	s << "VkVertexInputBindingDivisorDescriptionEXT = {\n";
6437	s << "\tbinding = " << value.binding << '\n';
6438	s << "\tdivisor = " << value.divisor << '\n';
6439	s << '}';
6440	return s;
6441}
6442
6443std::ostream& operator<< (std::ostream& s, const VkPipelineVertexInputDivisorStateCreateInfoEXT& value)
6444{
6445	s << "VkPipelineVertexInputDivisorStateCreateInfoEXT = {\n";
6446	s << "\tsType = " << value.sType << '\n';
6447	s << "\tpNext = " << value.pNext << '\n';
6448	s << "\tvertexBindingDivisorCount = " << value.vertexBindingDivisorCount << '\n';
6449	s << "\tpVertexBindingDivisors = " << value.pVertexBindingDivisors << '\n';
6450	s << '}';
6451	return s;
6452}
6453
6454std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& value)
6455{
6456	s << "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = {\n";
6457	s << "\tsType = " << value.sType << '\n';
6458	s << "\tpNext = " << value.pNext << '\n';
6459	s << "\tvertexAttributeInstanceRateDivisor = " << value.vertexAttributeInstanceRateDivisor << '\n';
6460	s << "\tvertexAttributeInstanceRateZeroDivisor = " << value.vertexAttributeInstanceRateZeroDivisor << '\n';
6461	s << '}';
6462	return s;
6463}
6464
6465std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT& value)
6466{
6467	s << "VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = {\n";
6468	s << "\tsType = " << value.sType << '\n';
6469	s << "\tpNext = " << value.pNext << '\n';
6470	s << "\tbindingCount = " << value.bindingCount << '\n';
6471	s << "\tpBindingFlags = " << value.pBindingFlags << '\n';
6472	s << '}';
6473	return s;
6474}
6475
6476std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingFeaturesEXT& value)
6477{
6478	s << "VkPhysicalDeviceDescriptorIndexingFeaturesEXT = {\n";
6479	s << "\tsType = " << value.sType << '\n';
6480	s << "\tpNext = " << value.pNext << '\n';
6481	s << "\tshaderInputAttachmentArrayDynamicIndexing = " << value.shaderInputAttachmentArrayDynamicIndexing << '\n';
6482	s << "\tshaderUniformTexelBufferArrayDynamicIndexing = " << value.shaderUniformTexelBufferArrayDynamicIndexing << '\n';
6483	s << "\tshaderStorageTexelBufferArrayDynamicIndexing = " << value.shaderStorageTexelBufferArrayDynamicIndexing << '\n';
6484	s << "\tshaderUniformBufferArrayNonUniformIndexing = " << value.shaderUniformBufferArrayNonUniformIndexing << '\n';
6485	s << "\tshaderSampledImageArrayNonUniformIndexing = " << value.shaderSampledImageArrayNonUniformIndexing << '\n';
6486	s << "\tshaderStorageBufferArrayNonUniformIndexing = " << value.shaderStorageBufferArrayNonUniformIndexing << '\n';
6487	s << "\tshaderStorageImageArrayNonUniformIndexing = " << value.shaderStorageImageArrayNonUniformIndexing << '\n';
6488	s << "\tshaderInputAttachmentArrayNonUniformIndexing = " << value.shaderInputAttachmentArrayNonUniformIndexing << '\n';
6489	s << "\tshaderUniformTexelBufferArrayNonUniformIndexing = " << value.shaderUniformTexelBufferArrayNonUniformIndexing << '\n';
6490	s << "\tshaderStorageTexelBufferArrayNonUniformIndexing = " << value.shaderStorageTexelBufferArrayNonUniformIndexing << '\n';
6491	s << "\tdescriptorBindingUniformBufferUpdateAfterBind = " << value.descriptorBindingUniformBufferUpdateAfterBind << '\n';
6492	s << "\tdescriptorBindingSampledImageUpdateAfterBind = " << value.descriptorBindingSampledImageUpdateAfterBind << '\n';
6493	s << "\tdescriptorBindingStorageImageUpdateAfterBind = " << value.descriptorBindingStorageImageUpdateAfterBind << '\n';
6494	s << "\tdescriptorBindingStorageBufferUpdateAfterBind = " << value.descriptorBindingStorageBufferUpdateAfterBind << '\n';
6495	s << "\tdescriptorBindingUniformTexelBufferUpdateAfterBind = " << value.descriptorBindingUniformTexelBufferUpdateAfterBind << '\n';
6496	s << "\tdescriptorBindingStorageTexelBufferUpdateAfterBind = " << value.descriptorBindingStorageTexelBufferUpdateAfterBind << '\n';
6497	s << "\tdescriptorBindingUpdateUnusedWhilePending = " << value.descriptorBindingUpdateUnusedWhilePending << '\n';
6498	s << "\tdescriptorBindingPartiallyBound = " << value.descriptorBindingPartiallyBound << '\n';
6499	s << "\tdescriptorBindingVariableDescriptorCount = " << value.descriptorBindingVariableDescriptorCount << '\n';
6500	s << "\truntimeDescriptorArray = " << value.runtimeDescriptorArray << '\n';
6501	s << '}';
6502	return s;
6503}
6504
6505std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingPropertiesEXT& value)
6506{
6507	s << "VkPhysicalDeviceDescriptorIndexingPropertiesEXT = {\n";
6508	s << "\tsType = " << value.sType << '\n';
6509	s << "\tpNext = " << value.pNext << '\n';
6510	s << "\tmaxUpdateAfterBindDescriptorsInAllPools = " << value.maxUpdateAfterBindDescriptorsInAllPools << '\n';
6511	s << "\tshaderUniformBufferArrayNonUniformIndexingNative = " << value.shaderUniformBufferArrayNonUniformIndexingNative << '\n';
6512	s << "\tshaderSampledImageArrayNonUniformIndexingNative = " << value.shaderSampledImageArrayNonUniformIndexingNative << '\n';
6513	s << "\tshaderStorageBufferArrayNonUniformIndexingNative = " << value.shaderStorageBufferArrayNonUniformIndexingNative << '\n';
6514	s << "\tshaderStorageImageArrayNonUniformIndexingNative = " << value.shaderStorageImageArrayNonUniformIndexingNative << '\n';
6515	s << "\tshaderInputAttachmentArrayNonUniformIndexingNative = " << value.shaderInputAttachmentArrayNonUniformIndexingNative << '\n';
6516	s << "\trobustBufferAccessUpdateAfterBind = " << value.robustBufferAccessUpdateAfterBind << '\n';
6517	s << "\tquadDivergentImplicitLod = " << value.quadDivergentImplicitLod << '\n';
6518	s << "\tmaxPerStageDescriptorUpdateAfterBindSamplers = " << value.maxPerStageDescriptorUpdateAfterBindSamplers << '\n';
6519	s << "\tmaxPerStageDescriptorUpdateAfterBindUniformBuffers = " << value.maxPerStageDescriptorUpdateAfterBindUniformBuffers << '\n';
6520	s << "\tmaxPerStageDescriptorUpdateAfterBindStorageBuffers = " << value.maxPerStageDescriptorUpdateAfterBindStorageBuffers << '\n';
6521	s << "\tmaxPerStageDescriptorUpdateAfterBindSampledImages = " << value.maxPerStageDescriptorUpdateAfterBindSampledImages << '\n';
6522	s << "\tmaxPerStageDescriptorUpdateAfterBindStorageImages = " << value.maxPerStageDescriptorUpdateAfterBindStorageImages << '\n';
6523	s << "\tmaxPerStageDescriptorUpdateAfterBindInputAttachments = " << value.maxPerStageDescriptorUpdateAfterBindInputAttachments << '\n';
6524	s << "\tmaxPerStageUpdateAfterBindResources = " << value.maxPerStageUpdateAfterBindResources << '\n';
6525	s << "\tmaxDescriptorSetUpdateAfterBindSamplers = " << value.maxDescriptorSetUpdateAfterBindSamplers << '\n';
6526	s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffers = " << value.maxDescriptorSetUpdateAfterBindUniformBuffers << '\n';
6527	s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic << '\n';
6528	s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffers = " << value.maxDescriptorSetUpdateAfterBindStorageBuffers << '\n';
6529	s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic << '\n';
6530	s << "\tmaxDescriptorSetUpdateAfterBindSampledImages = " << value.maxDescriptorSetUpdateAfterBindSampledImages << '\n';
6531	s << "\tmaxDescriptorSetUpdateAfterBindStorageImages = " << value.maxDescriptorSetUpdateAfterBindStorageImages << '\n';
6532	s << "\tmaxDescriptorSetUpdateAfterBindInputAttachments = " << value.maxDescriptorSetUpdateAfterBindInputAttachments << '\n';
6533	s << '}';
6534	return s;
6535}
6536
6537std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT& value)
6538{
6539	s << "VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = {\n";
6540	s << "\tsType = " << value.sType << '\n';
6541	s << "\tpNext = " << value.pNext << '\n';
6542	s << "\tdescriptorSetCount = " << value.descriptorSetCount << '\n';
6543	s << "\tpDescriptorCounts = " << value.pDescriptorCounts << '\n';
6544	s << '}';
6545	return s;
6546}
6547
6548std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT& value)
6549{
6550	s << "VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = {\n";
6551	s << "\tsType = " << value.sType << '\n';
6552	s << "\tpNext = " << value.pNext << '\n';
6553	s << "\tmaxVariableDescriptorCount = " << value.maxVariableDescriptorCount << '\n';
6554	s << '}';
6555	return s;
6556}
6557
6558std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceInlineUniformBlockFeaturesEXT& value)
6559{
6560	s << "VkPhysicalDeviceInlineUniformBlockFeaturesEXT = {\n";
6561	s << "\tsType = " << value.sType << '\n';
6562	s << "\tpNext = " << value.pNext << '\n';
6563	s << "\tinlineUniformBlock = " << value.inlineUniformBlock << '\n';
6564	s << "\tdescriptorBindingInlineUniformBlockUpdateAfterBind = " << value.descriptorBindingInlineUniformBlockUpdateAfterBind << '\n';
6565	s << '}';
6566	return s;
6567}
6568
6569std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceInlineUniformBlockPropertiesEXT& value)
6570{
6571	s << "VkPhysicalDeviceInlineUniformBlockPropertiesEXT = {\n";
6572	s << "\tsType = " << value.sType << '\n';
6573	s << "\tpNext = " << value.pNext << '\n';
6574	s << "\tmaxInlineUniformBlockSize = " << value.maxInlineUniformBlockSize << '\n';
6575	s << "\tmaxPerStageDescriptorInlineUniformBlocks = " << value.maxPerStageDescriptorInlineUniformBlocks << '\n';
6576	s << "\tmaxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = " << value.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks << '\n';
6577	s << "\tmaxDescriptorSetInlineUniformBlocks = " << value.maxDescriptorSetInlineUniformBlocks << '\n';
6578	s << "\tmaxDescriptorSetUpdateAfterBindInlineUniformBlocks = " << value.maxDescriptorSetUpdateAfterBindInlineUniformBlocks << '\n';
6579	s << '}';
6580	return s;
6581}
6582
6583std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSetInlineUniformBlockEXT& value)
6584{
6585	s << "VkWriteDescriptorSetInlineUniformBlockEXT = {\n";
6586	s << "\tsType = " << value.sType << '\n';
6587	s << "\tpNext = " << value.pNext << '\n';
6588	s << "\tdataSize = " << value.dataSize << '\n';
6589	s << "\tpData = " << value.pData << '\n';
6590	s << '}';
6591	return s;
6592}
6593
6594std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolInlineUniformBlockCreateInfoEXT& value)
6595{
6596	s << "VkDescriptorPoolInlineUniformBlockCreateInfoEXT = {\n";
6597	s << "\tsType = " << value.sType << '\n';
6598	s << "\tpNext = " << value.pNext << '\n';
6599	s << "\tmaxInlineUniformBlockBindings = " << value.maxInlineUniformBlockBindings << '\n';
6600	s << '}';
6601	return s;
6602}
6603
6604std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR& value)
6605{
6606	s << "VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = {\n";
6607	s << "\tsType = " << value.sType << '\n';
6608	s << "\tpNext = " << value.pNext << '\n';
6609	s << "\tshaderBufferInt64Atomics = " << value.shaderBufferInt64Atomics << '\n';
6610	s << "\tshaderSharedInt64Atomics = " << value.shaderSharedInt64Atomics << '\n';
6611	s << '}';
6612	return s;
6613}
6614
6615std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR& value)
6616{
6617	s << "VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = {\n";
6618	s << "\tsType = " << value.sType << '\n';
6619	s << "\tpNext = " << value.pNext << '\n';
6620	s << "\tvulkanMemoryModel = " << value.vulkanMemoryModel << '\n';
6621	s << "\tvulkanMemoryModelDeviceScope = " << value.vulkanMemoryModelDeviceScope << '\n';
6622	s << "\tvulkanMemoryModelAvailabilityVisibilityChains = " << value.vulkanMemoryModelAvailabilityVisibilityChains << '\n';
6623	s << '}';
6624	return s;
6625}
6626
6627std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT& value)
6628{
6629	s << "VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = {\n";
6630	s << "\tsType = " << value.sType << '\n';
6631	s << "\tpNext = " << value.pNext << '\n';
6632	s << "\tscalarBlockLayout = " << value.scalarBlockLayout << '\n';
6633	s << '}';
6634	return s;
6635}
6636