1/* WARNING: This is auto-generated file. Do not modify, since changes will
2 * be lost! Modify the generating script instead.
3 * This file was generated by /scripts/gen_framework.py
4 */
5
6template<> const char*	getTypeName<VkInstance>					(void) { return "VkInstance";					}
7template<> const char*	getTypeName<VkPhysicalDevice>			(void) { return "VkPhysicalDevice";				}
8template<> const char*	getTypeName<VkDevice>					(void) { return "VkDevice";						}
9template<> const char*	getTypeName<VkQueue>					(void) { return "VkQueue";						}
10template<> const char*	getTypeName<VkCommandBuffer>			(void) { return "VkCommandBuffer";				}
11template<> const char*	getTypeName<VkDeviceMemory>				(void) { return "VkDeviceMemory";				}
12template<> const char*	getTypeName<VkCommandPool>				(void) { return "VkCommandPool";				}
13template<> const char*	getTypeName<VkBuffer>					(void) { return "VkBuffer";						}
14template<> const char*	getTypeName<VkBufferView>				(void) { return "VkBufferView";					}
15template<> const char*	getTypeName<VkImage>					(void) { return "VkImage";						}
16template<> const char*	getTypeName<VkImageView>				(void) { return "VkImageView";					}
17template<> const char*	getTypeName<VkShaderModule>				(void) { return "VkShaderModule";				}
18template<> const char*	getTypeName<VkPipeline>					(void) { return "VkPipeline";					}
19template<> const char*	getTypeName<VkPipelineLayout>			(void) { return "VkPipelineLayout";				}
20template<> const char*	getTypeName<VkSampler>					(void) { return "VkSampler";					}
21template<> const char*	getTypeName<VkDescriptorSet>			(void) { return "VkDescriptorSet";				}
22template<> const char*	getTypeName<VkDescriptorSetLayout>		(void) { return "VkDescriptorSetLayout";		}
23template<> const char*	getTypeName<VkDescriptorPool>			(void) { return "VkDescriptorPool";				}
24template<> const char*	getTypeName<VkFence>					(void) { return "VkFence";						}
25template<> const char*	getTypeName<VkSemaphore>				(void) { return "VkSemaphore";					}
26template<> const char*	getTypeName<VkEvent>					(void) { return "VkEvent";						}
27template<> const char*	getTypeName<VkQueryPool>				(void) { return "VkQueryPool";					}
28template<> const char*	getTypeName<VkFramebuffer>				(void) { return "VkFramebuffer";				}
29template<> const char*	getTypeName<VkRenderPass>				(void) { return "VkRenderPass";					}
30template<> const char*	getTypeName<VkPipelineCache>			(void) { return "VkPipelineCache";				}
31template<> const char*	getTypeName<VkDescriptorUpdateTemplate>	(void) { return "VkDescriptorUpdateTemplate";	}
32template<> const char*	getTypeName<VkSamplerYcbcrConversion>	(void) { return "VkSamplerYcbcrConversion";		}
33template<> const char*	getTypeName<VkDisplayKHR>				(void) { return "VkDisplayKHR";					}
34template<> const char*	getTypeName<VkDisplayModeKHR>			(void) { return "VkDisplayModeKHR";				}
35template<> const char*	getTypeName<VkSurfaceKHR>				(void) { return "VkSurfaceKHR";					}
36template<> const char*	getTypeName<VkSwapchainKHR>				(void) { return "VkSwapchainKHR";				}
37template<> const char*	getTypeName<VkDebugUtilsMessengerEXT>	(void) { return "VkDebugUtilsMessengerEXT";		}
38template<> const char*	getTypeName<VkSemaphoreSciSyncPoolNV>	(void) { return "VkSemaphoreSciSyncPoolNV";		}
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, Win32MonitorHandle			v) { return s << tcu::toHex(v.internal); }
59std::ostream& operator<< (std::ostream& s, Win32LPCWSTR					v) { return s << tcu::toHex(v.internal); }
60std::ostream& operator<< (std::ostream& s, RROutput						v) { return s << tcu::toHex(v.internal); }
61std::ostream& operator<< (std::ostream& s, zx_handle_t					v) { return s << tcu::toHex(v.internal); }
62std::ostream& operator<< (std::ostream& s, GgpFrameToken				v) { return s << tcu::toHex(v.internal); }
63std::ostream& operator<< (std::ostream& s, GgpStreamDescriptor			v) { return s << tcu::toHex(v.internal); }
64std::ostream& operator<< (std::ostream& s, CAMetalLayer					v) { return s << tcu::toHex(v.internal); }
65std::ostream& operator<< (std::ostream& s, QNXScreenContextPtr			v) { return s << tcu::toHex(v.internal); }
66std::ostream& operator<< (std::ostream& s, QNXScreenWindowPtr			v) { return s << tcu::toHex(v.internal); }
67std::ostream& operator<< (std::ostream& s, MTLDevice_id					v) { return s << tcu::toHex(v.internal); }
68std::ostream& operator<< (std::ostream& s, MTLCommandQueue_id			v) { return s << tcu::toHex(v.internal); }
69std::ostream& operator<< (std::ostream& s, MTLBuffer_id					v) { return s << tcu::toHex(v.internal); }
70std::ostream& operator<< (std::ostream& s, MTLTexture_id				v) { return s << tcu::toHex(v.internal); }
71std::ostream& operator<< (std::ostream& s, IOSurfaceRef					v) { return s << tcu::toHex(v.internal); }
72std::ostream& operator<< (std::ostream& s, MTLSharedEvent_id			v) { return s << tcu::toHex(v.internal); }
73std::ostream& operator<< (std::ostream& s, NvSciBufObj					v) { return s << tcu::toHex(v.internal); }
74std::ostream& operator<< (std::ostream& s, NvSciSyncObj					v) { return s << tcu::toHex(v.internal); }
75std::ostream& operator<< (std::ostream& s, NvSciSyncFence				v) { return s << tcu::toHex(v.internal); }
76std::ostream& operator<< (std::ostream& s, NvSciBufAttrList				v) { return s << tcu::toHex(v.internal); }
77std::ostream& operator<< (std::ostream& s, NvSciSyncAttrList			v) { return s << tcu::toHex(v.internal); }
78}
79
80const char* getAttachmentLoadOpName (VkAttachmentLoadOp value)
81{
82	switch (value)
83	{
84		case VK_ATTACHMENT_LOAD_OP_LOAD:		return "VK_ATTACHMENT_LOAD_OP_LOAD";
85		case VK_ATTACHMENT_LOAD_OP_CLEAR:		return "VK_ATTACHMENT_LOAD_OP_CLEAR";
86		case VK_ATTACHMENT_LOAD_OP_DONT_CARE:	return "VK_ATTACHMENT_LOAD_OP_DONT_CARE";
87		default:								return DE_NULL;
88	}
89}
90
91const char* getAttachmentStoreOpName (VkAttachmentStoreOp value)
92{
93	switch (value)
94	{
95		case VK_ATTACHMENT_STORE_OP_STORE:		return "VK_ATTACHMENT_STORE_OP_STORE";
96		case VK_ATTACHMENT_STORE_OP_DONT_CARE:	return "VK_ATTACHMENT_STORE_OP_DONT_CARE";
97		case VK_ATTACHMENT_STORE_OP_NONE:		return "VK_ATTACHMENT_STORE_OP_NONE";
98		default:								return DE_NULL;
99	}
100}
101
102const char* getBlendFactorName (VkBlendFactor value)
103{
104	switch (value)
105	{
106		case VK_BLEND_FACTOR_ZERO:						return "VK_BLEND_FACTOR_ZERO";
107		case VK_BLEND_FACTOR_ONE:						return "VK_BLEND_FACTOR_ONE";
108		case VK_BLEND_FACTOR_SRC_COLOR:					return "VK_BLEND_FACTOR_SRC_COLOR";
109		case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR:		return "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR";
110		case VK_BLEND_FACTOR_DST_COLOR:					return "VK_BLEND_FACTOR_DST_COLOR";
111		case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR:		return "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR";
112		case VK_BLEND_FACTOR_SRC_ALPHA:					return "VK_BLEND_FACTOR_SRC_ALPHA";
113		case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA:		return "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA";
114		case VK_BLEND_FACTOR_DST_ALPHA:					return "VK_BLEND_FACTOR_DST_ALPHA";
115		case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA:		return "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA";
116		case VK_BLEND_FACTOR_CONSTANT_COLOR:			return "VK_BLEND_FACTOR_CONSTANT_COLOR";
117		case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR:	return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR";
118		case VK_BLEND_FACTOR_CONSTANT_ALPHA:			return "VK_BLEND_FACTOR_CONSTANT_ALPHA";
119		case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA:	return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA";
120		case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE:		return "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE";
121		case VK_BLEND_FACTOR_SRC1_COLOR:				return "VK_BLEND_FACTOR_SRC1_COLOR";
122		case VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR:		return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR";
123		case VK_BLEND_FACTOR_SRC1_ALPHA:				return "VK_BLEND_FACTOR_SRC1_ALPHA";
124		case VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA:		return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA";
125		default:										return DE_NULL;
126	}
127}
128
129const char* getBlendOpName (VkBlendOp value)
130{
131	switch (value)
132	{
133		case VK_BLEND_OP_ADD:						return "VK_BLEND_OP_ADD";
134		case VK_BLEND_OP_SUBTRACT:					return "VK_BLEND_OP_SUBTRACT";
135		case VK_BLEND_OP_REVERSE_SUBTRACT:			return "VK_BLEND_OP_REVERSE_SUBTRACT";
136		case VK_BLEND_OP_MIN:						return "VK_BLEND_OP_MIN";
137		case VK_BLEND_OP_MAX:						return "VK_BLEND_OP_MAX";
138		case VK_BLEND_OP_ZERO_EXT:					return "VK_BLEND_OP_ZERO_EXT";
139		case VK_BLEND_OP_SRC_EXT:					return "VK_BLEND_OP_SRC_EXT";
140		case VK_BLEND_OP_DST_EXT:					return "VK_BLEND_OP_DST_EXT";
141		case VK_BLEND_OP_SRC_OVER_EXT:				return "VK_BLEND_OP_SRC_OVER_EXT";
142		case VK_BLEND_OP_DST_OVER_EXT:				return "VK_BLEND_OP_DST_OVER_EXT";
143		case VK_BLEND_OP_SRC_IN_EXT:				return "VK_BLEND_OP_SRC_IN_EXT";
144		case VK_BLEND_OP_DST_IN_EXT:				return "VK_BLEND_OP_DST_IN_EXT";
145		case VK_BLEND_OP_SRC_OUT_EXT:				return "VK_BLEND_OP_SRC_OUT_EXT";
146		case VK_BLEND_OP_DST_OUT_EXT:				return "VK_BLEND_OP_DST_OUT_EXT";
147		case VK_BLEND_OP_SRC_ATOP_EXT:				return "VK_BLEND_OP_SRC_ATOP_EXT";
148		case VK_BLEND_OP_DST_ATOP_EXT:				return "VK_BLEND_OP_DST_ATOP_EXT";
149		case VK_BLEND_OP_XOR_EXT:					return "VK_BLEND_OP_XOR_EXT";
150		case VK_BLEND_OP_MULTIPLY_EXT:				return "VK_BLEND_OP_MULTIPLY_EXT";
151		case VK_BLEND_OP_SCREEN_EXT:				return "VK_BLEND_OP_SCREEN_EXT";
152		case VK_BLEND_OP_OVERLAY_EXT:				return "VK_BLEND_OP_OVERLAY_EXT";
153		case VK_BLEND_OP_DARKEN_EXT:				return "VK_BLEND_OP_DARKEN_EXT";
154		case VK_BLEND_OP_LIGHTEN_EXT:				return "VK_BLEND_OP_LIGHTEN_EXT";
155		case VK_BLEND_OP_COLORDODGE_EXT:			return "VK_BLEND_OP_COLORDODGE_EXT";
156		case VK_BLEND_OP_COLORBURN_EXT:				return "VK_BLEND_OP_COLORBURN_EXT";
157		case VK_BLEND_OP_HARDLIGHT_EXT:				return "VK_BLEND_OP_HARDLIGHT_EXT";
158		case VK_BLEND_OP_SOFTLIGHT_EXT:				return "VK_BLEND_OP_SOFTLIGHT_EXT";
159		case VK_BLEND_OP_DIFFERENCE_EXT:			return "VK_BLEND_OP_DIFFERENCE_EXT";
160		case VK_BLEND_OP_EXCLUSION_EXT:				return "VK_BLEND_OP_EXCLUSION_EXT";
161		case VK_BLEND_OP_INVERT_EXT:				return "VK_BLEND_OP_INVERT_EXT";
162		case VK_BLEND_OP_INVERT_RGB_EXT:			return "VK_BLEND_OP_INVERT_RGB_EXT";
163		case VK_BLEND_OP_LINEARDODGE_EXT:			return "VK_BLEND_OP_LINEARDODGE_EXT";
164		case VK_BLEND_OP_LINEARBURN_EXT:			return "VK_BLEND_OP_LINEARBURN_EXT";
165		case VK_BLEND_OP_VIVIDLIGHT_EXT:			return "VK_BLEND_OP_VIVIDLIGHT_EXT";
166		case VK_BLEND_OP_LINEARLIGHT_EXT:			return "VK_BLEND_OP_LINEARLIGHT_EXT";
167		case VK_BLEND_OP_PINLIGHT_EXT:				return "VK_BLEND_OP_PINLIGHT_EXT";
168		case VK_BLEND_OP_HARDMIX_EXT:				return "VK_BLEND_OP_HARDMIX_EXT";
169		case VK_BLEND_OP_HSL_HUE_EXT:				return "VK_BLEND_OP_HSL_HUE_EXT";
170		case VK_BLEND_OP_HSL_SATURATION_EXT:		return "VK_BLEND_OP_HSL_SATURATION_EXT";
171		case VK_BLEND_OP_HSL_COLOR_EXT:				return "VK_BLEND_OP_HSL_COLOR_EXT";
172		case VK_BLEND_OP_HSL_LUMINOSITY_EXT:		return "VK_BLEND_OP_HSL_LUMINOSITY_EXT";
173		case VK_BLEND_OP_PLUS_EXT:					return "VK_BLEND_OP_PLUS_EXT";
174		case VK_BLEND_OP_PLUS_CLAMPED_EXT:			return "VK_BLEND_OP_PLUS_CLAMPED_EXT";
175		case VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT:	return "VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT";
176		case VK_BLEND_OP_PLUS_DARKER_EXT:			return "VK_BLEND_OP_PLUS_DARKER_EXT";
177		case VK_BLEND_OP_MINUS_EXT:					return "VK_BLEND_OP_MINUS_EXT";
178		case VK_BLEND_OP_MINUS_CLAMPED_EXT:			return "VK_BLEND_OP_MINUS_CLAMPED_EXT";
179		case VK_BLEND_OP_CONTRAST_EXT:				return "VK_BLEND_OP_CONTRAST_EXT";
180		case VK_BLEND_OP_INVERT_OVG_EXT:			return "VK_BLEND_OP_INVERT_OVG_EXT";
181		case VK_BLEND_OP_RED_EXT:					return "VK_BLEND_OP_RED_EXT";
182		case VK_BLEND_OP_GREEN_EXT:					return "VK_BLEND_OP_GREEN_EXT";
183		case VK_BLEND_OP_BLUE_EXT:					return "VK_BLEND_OP_BLUE_EXT";
184		default:									return DE_NULL;
185	}
186}
187
188const char* getBorderColorName (VkBorderColor value)
189{
190	switch (value)
191	{
192		case VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK:	return "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK";
193		case VK_BORDER_COLOR_INT_TRANSPARENT_BLACK:		return "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK";
194		case VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK:		return "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK";
195		case VK_BORDER_COLOR_INT_OPAQUE_BLACK:			return "VK_BORDER_COLOR_INT_OPAQUE_BLACK";
196		case VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE:		return "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE";
197		case VK_BORDER_COLOR_INT_OPAQUE_WHITE:			return "VK_BORDER_COLOR_INT_OPAQUE_WHITE";
198		case VK_BORDER_COLOR_FLOAT_CUSTOM_EXT:			return "VK_BORDER_COLOR_FLOAT_CUSTOM_EXT";
199		case VK_BORDER_COLOR_INT_CUSTOM_EXT:			return "VK_BORDER_COLOR_INT_CUSTOM_EXT";
200		default:										return DE_NULL;
201	}
202}
203
204tcu::Format::Bitfield<32> getFramebufferCreateFlagsStr (VkFramebufferCreateFlags value)
205{
206	static const tcu::Format::BitDesc s_desc[] =
207	{
208		tcu::Format::BitDesc(VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT,	"VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT"),
209	};
210	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
211}
212
213tcu::Format::Bitfield<32> getRenderPassCreateFlagsStr (VkRenderPassCreateFlags value)
214{
215	static const tcu::Format::BitDesc s_desc[] =
216	{
217		tcu::Format::BitDesc(0, "0")
218	};
219	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
220}
221
222tcu::Format::Bitfield<32> getSamplerCreateFlagsStr (VkSamplerCreateFlags value)
223{
224	static const tcu::Format::BitDesc s_desc[] =
225	{
226		tcu::Format::BitDesc(0, "0")
227	};
228	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
229}
230
231const char* getPipelineCacheHeaderVersionName (VkPipelineCacheHeaderVersion value)
232{
233	switch (value)
234	{
235		case VK_PIPELINE_CACHE_HEADER_VERSION_ONE:					return "VK_PIPELINE_CACHE_HEADER_VERSION_ONE";
236		case VK_PIPELINE_CACHE_HEADER_VERSION_SAFETY_CRITICAL_ONE:	return "VK_PIPELINE_CACHE_HEADER_VERSION_SAFETY_CRITICAL_ONE";
237		default:													return DE_NULL;
238	}
239}
240
241tcu::Format::Bitfield<32> getPipelineCacheCreateFlagsStr (VkPipelineCacheCreateFlags value)
242{
243	static const tcu::Format::BitDesc s_desc[] =
244	{
245		tcu::Format::BitDesc(VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT,	"VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT"),
246		tcu::Format::BitDesc(VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT,				"VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT"),
247		tcu::Format::BitDesc(VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT,	"VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT"),
248	};
249	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
250}
251
252tcu::Format::Bitfield<32> getPipelineShaderStageCreateFlagsStr (VkPipelineShaderStageCreateFlags value)
253{
254	static const tcu::Format::BitDesc s_desc[] =
255	{
256		tcu::Format::BitDesc(VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT,	"VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT"),
257		tcu::Format::BitDesc(VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT,		"VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT"),
258	};
259	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
260}
261
262tcu::Format::Bitfield<32> getDescriptorSetLayoutCreateFlagsStr (VkDescriptorSetLayoutCreateFlags value)
263{
264	static const tcu::Format::BitDesc s_desc[] =
265	{
266		tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT,	"VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT"),
267	};
268	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
269}
270
271tcu::Format::Bitfield<32> getInstanceCreateFlagsStr (VkInstanceCreateFlags value)
272{
273	static const tcu::Format::BitDesc s_desc[] =
274	{
275		tcu::Format::BitDesc(0, "0")
276	};
277	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
278}
279
280tcu::Format::Bitfield<32> getDeviceQueueCreateFlagsStr (VkDeviceQueueCreateFlags value)
281{
282	static const tcu::Format::BitDesc s_desc[] =
283	{
284		tcu::Format::BitDesc(VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT,	"VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT"),
285	};
286	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
287}
288
289tcu::Format::Bitfield<32> getBufferCreateFlagsStr (VkBufferCreateFlags value)
290{
291	static const tcu::Format::BitDesc s_desc[] =
292	{
293		tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_BINDING_BIT,					"VK_BUFFER_CREATE_SPARSE_BINDING_BIT"),
294		tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,					"VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"),
295		tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_ALIASED_BIT,					"VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"),
296		tcu::Format::BitDesc(VK_BUFFER_CREATE_PROTECTED_BIT,						"VK_BUFFER_CREATE_PROTECTED_BIT"),
297		tcu::Format::BitDesc(VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,	"VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"),
298	};
299	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
300}
301
302tcu::Format::Bitfield<32> getBufferUsageFlagsStr (VkBufferUsageFlags value)
303{
304	static const tcu::Format::BitDesc s_desc[] =
305	{
306		tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_SRC_BIT,			"VK_BUFFER_USAGE_TRANSFER_SRC_BIT"),
307		tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_DST_BIT,			"VK_BUFFER_USAGE_TRANSFER_DST_BIT"),
308		tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,	"VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"),
309		tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,	"VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"),
310		tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,		"VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"),
311		tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,		"VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"),
312		tcu::Format::BitDesc(VK_BUFFER_USAGE_INDEX_BUFFER_BIT,			"VK_BUFFER_USAGE_INDEX_BUFFER_BIT"),
313		tcu::Format::BitDesc(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,			"VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"),
314		tcu::Format::BitDesc(VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT,		"VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"),
315		tcu::Format::BitDesc(VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,	"VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT"),
316	};
317	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
318}
319
320tcu::Format::Bitfield<32> getColorComponentFlagsStr (VkColorComponentFlags value)
321{
322	static const tcu::Format::BitDesc s_desc[] =
323	{
324		tcu::Format::BitDesc(VK_COLOR_COMPONENT_R_BIT,	"VK_COLOR_COMPONENT_R_BIT"),
325		tcu::Format::BitDesc(VK_COLOR_COMPONENT_G_BIT,	"VK_COLOR_COMPONENT_G_BIT"),
326		tcu::Format::BitDesc(VK_COLOR_COMPONENT_B_BIT,	"VK_COLOR_COMPONENT_B_BIT"),
327		tcu::Format::BitDesc(VK_COLOR_COMPONENT_A_BIT,	"VK_COLOR_COMPONENT_A_BIT"),
328	};
329	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
330}
331
332const char* getComponentSwizzleName (VkComponentSwizzle value)
333{
334	switch (value)
335	{
336		case VK_COMPONENT_SWIZZLE_IDENTITY:	return "VK_COMPONENT_SWIZZLE_IDENTITY";
337		case VK_COMPONENT_SWIZZLE_ZERO:		return "VK_COMPONENT_SWIZZLE_ZERO";
338		case VK_COMPONENT_SWIZZLE_ONE:		return "VK_COMPONENT_SWIZZLE_ONE";
339		case VK_COMPONENT_SWIZZLE_R:		return "VK_COMPONENT_SWIZZLE_R";
340		case VK_COMPONENT_SWIZZLE_G:		return "VK_COMPONENT_SWIZZLE_G";
341		case VK_COMPONENT_SWIZZLE_B:		return "VK_COMPONENT_SWIZZLE_B";
342		case VK_COMPONENT_SWIZZLE_A:		return "VK_COMPONENT_SWIZZLE_A";
343		default:							return DE_NULL;
344	}
345}
346
347tcu::Format::Bitfield<32> getCommandPoolCreateFlagsStr (VkCommandPoolCreateFlags value)
348{
349	static const tcu::Format::BitDesc s_desc[] =
350	{
351		tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,				"VK_COMMAND_POOL_CREATE_TRANSIENT_BIT"),
352		tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT,	"VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"),
353		tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_PROTECTED_BIT,				"VK_COMMAND_POOL_CREATE_PROTECTED_BIT"),
354	};
355	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
356}
357
358tcu::Format::Bitfield<32> getCommandPoolResetFlagsStr (VkCommandPoolResetFlags value)
359{
360	static const tcu::Format::BitDesc s_desc[] =
361	{
362		tcu::Format::BitDesc(VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT,	"VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"),
363	};
364	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
365}
366
367tcu::Format::Bitfield<32> getCommandBufferResetFlagsStr (VkCommandBufferResetFlags value)
368{
369	static const tcu::Format::BitDesc s_desc[] =
370	{
371		tcu::Format::BitDesc(VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT,	"VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT"),
372	};
373	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
374}
375
376const char* getCommandBufferLevelName (VkCommandBufferLevel value)
377{
378	switch (value)
379	{
380		case VK_COMMAND_BUFFER_LEVEL_PRIMARY:	return "VK_COMMAND_BUFFER_LEVEL_PRIMARY";
381		case VK_COMMAND_BUFFER_LEVEL_SECONDARY:	return "VK_COMMAND_BUFFER_LEVEL_SECONDARY";
382		default:								return DE_NULL;
383	}
384}
385
386tcu::Format::Bitfield<32> getCommandBufferUsageFlagsStr (VkCommandBufferUsageFlags value)
387{
388	static const tcu::Format::BitDesc s_desc[] =
389	{
390		tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,		"VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"),
391		tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,	"VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"),
392		tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT,		"VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"),
393	};
394	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
395}
396
397const char* getCompareOpName (VkCompareOp value)
398{
399	switch (value)
400	{
401		case VK_COMPARE_OP_NEVER:				return "VK_COMPARE_OP_NEVER";
402		case VK_COMPARE_OP_LESS:				return "VK_COMPARE_OP_LESS";
403		case VK_COMPARE_OP_EQUAL:				return "VK_COMPARE_OP_EQUAL";
404		case VK_COMPARE_OP_LESS_OR_EQUAL:		return "VK_COMPARE_OP_LESS_OR_EQUAL";
405		case VK_COMPARE_OP_GREATER:				return "VK_COMPARE_OP_GREATER";
406		case VK_COMPARE_OP_NOT_EQUAL:			return "VK_COMPARE_OP_NOT_EQUAL";
407		case VK_COMPARE_OP_GREATER_OR_EQUAL:	return "VK_COMPARE_OP_GREATER_OR_EQUAL";
408		case VK_COMPARE_OP_ALWAYS:				return "VK_COMPARE_OP_ALWAYS";
409		default:								return DE_NULL;
410	}
411}
412
413tcu::Format::Bitfield<32> getCullModeFlagsStr (VkCullModeFlags value)
414{
415	static const tcu::Format::BitDesc s_desc[] =
416	{
417		tcu::Format::BitDesc(VK_CULL_MODE_NONE,				"VK_CULL_MODE_NONE"),
418		tcu::Format::BitDesc(VK_CULL_MODE_FRONT_BIT,		"VK_CULL_MODE_FRONT_BIT"),
419		tcu::Format::BitDesc(VK_CULL_MODE_BACK_BIT,			"VK_CULL_MODE_BACK_BIT"),
420		tcu::Format::BitDesc(VK_CULL_MODE_FRONT_AND_BACK,	"VK_CULL_MODE_FRONT_AND_BACK"),
421	};
422	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
423}
424
425const char* getDescriptorTypeName (VkDescriptorType value)
426{
427	switch (value)
428	{
429		case VK_DESCRIPTOR_TYPE_SAMPLER:				return "VK_DESCRIPTOR_TYPE_SAMPLER";
430		case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:	return "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER";
431		case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:			return "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE";
432		case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:			return "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE";
433		case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:	return "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER";
434		case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:	return "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER";
435		case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:			return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER";
436		case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:			return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER";
437		case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:	return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC";
438		case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:	return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC";
439		case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:		return "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT";
440		case VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK:	return "VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK";
441		default:										return DE_NULL;
442	}
443}
444
445const char* getDynamicStateName (VkDynamicState value)
446{
447	switch (value)
448	{
449		case VK_DYNAMIC_STATE_VIEWPORT:							return "VK_DYNAMIC_STATE_VIEWPORT";
450		case VK_DYNAMIC_STATE_SCISSOR:							return "VK_DYNAMIC_STATE_SCISSOR";
451		case VK_DYNAMIC_STATE_LINE_WIDTH:						return "VK_DYNAMIC_STATE_LINE_WIDTH";
452		case VK_DYNAMIC_STATE_DEPTH_BIAS:						return "VK_DYNAMIC_STATE_DEPTH_BIAS";
453		case VK_DYNAMIC_STATE_BLEND_CONSTANTS:					return "VK_DYNAMIC_STATE_BLEND_CONSTANTS";
454		case VK_DYNAMIC_STATE_DEPTH_BOUNDS:						return "VK_DYNAMIC_STATE_DEPTH_BOUNDS";
455		case VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK:				return "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK";
456		case VK_DYNAMIC_STATE_STENCIL_WRITE_MASK:				return "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK";
457		case VK_DYNAMIC_STATE_STENCIL_REFERENCE:				return "VK_DYNAMIC_STATE_STENCIL_REFERENCE";
458		case VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT:			return "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT";
459		case VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT:		return "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT";
460		case VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT:		return "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT";
461		case VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT:				return "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT";
462		case VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR:		return "VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR";
463		case VK_DYNAMIC_STATE_LINE_STIPPLE_EXT:					return "VK_DYNAMIC_STATE_LINE_STIPPLE_EXT";
464		case VK_DYNAMIC_STATE_CULL_MODE_EXT:					return "VK_DYNAMIC_STATE_CULL_MODE_EXT";
465		case VK_DYNAMIC_STATE_FRONT_FACE_EXT:					return "VK_DYNAMIC_STATE_FRONT_FACE_EXT";
466		case VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT:			return "VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT";
467		case VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT:			return "VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT";
468		case VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT:			return "VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT";
469		case VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT:	return "VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT";
470		case VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT:			return "VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT";
471		case VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT:			return "VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT";
472		case VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT:				return "VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT";
473		case VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT:		return "VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT";
474		case VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT:			return "VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT";
475		case VK_DYNAMIC_STATE_STENCIL_OP_EXT:					return "VK_DYNAMIC_STATE_STENCIL_OP_EXT";
476		case VK_DYNAMIC_STATE_VERTEX_INPUT_EXT:					return "VK_DYNAMIC_STATE_VERTEX_INPUT_EXT";
477		case VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT:			return "VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT";
478		case VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT:	return "VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT";
479		case VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT:			return "VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT";
480		case VK_DYNAMIC_STATE_LOGIC_OP_EXT:						return "VK_DYNAMIC_STATE_LOGIC_OP_EXT";
481		case VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT:		return "VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT";
482		case VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT:			return "VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT";
483		default:												return DE_NULL;
484	}
485}
486
487tcu::Format::Bitfield<32> getFenceCreateFlagsStr (VkFenceCreateFlags value)
488{
489	static const tcu::Format::BitDesc s_desc[] =
490	{
491		tcu::Format::BitDesc(VK_FENCE_CREATE_SIGNALED_BIT,	"VK_FENCE_CREATE_SIGNALED_BIT"),
492	};
493	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
494}
495
496const char* getPolygonModeName (VkPolygonMode value)
497{
498	switch (value)
499	{
500		case VK_POLYGON_MODE_FILL:	return "VK_POLYGON_MODE_FILL";
501		case VK_POLYGON_MODE_LINE:	return "VK_POLYGON_MODE_LINE";
502		case VK_POLYGON_MODE_POINT:	return "VK_POLYGON_MODE_POINT";
503		default:					return DE_NULL;
504	}
505}
506
507const char* getFormatName (VkFormat value)
508{
509	switch (value)
510	{
511		case VK_FORMAT_UNDEFINED:										return "VK_FORMAT_UNDEFINED";
512		case VK_FORMAT_R4G4_UNORM_PACK8:								return "VK_FORMAT_R4G4_UNORM_PACK8";
513		case VK_FORMAT_R4G4B4A4_UNORM_PACK16:							return "VK_FORMAT_R4G4B4A4_UNORM_PACK16";
514		case VK_FORMAT_B4G4R4A4_UNORM_PACK16:							return "VK_FORMAT_B4G4R4A4_UNORM_PACK16";
515		case VK_FORMAT_R5G6B5_UNORM_PACK16:								return "VK_FORMAT_R5G6B5_UNORM_PACK16";
516		case VK_FORMAT_B5G6R5_UNORM_PACK16:								return "VK_FORMAT_B5G6R5_UNORM_PACK16";
517		case VK_FORMAT_R5G5B5A1_UNORM_PACK16:							return "VK_FORMAT_R5G5B5A1_UNORM_PACK16";
518		case VK_FORMAT_B5G5R5A1_UNORM_PACK16:							return "VK_FORMAT_B5G5R5A1_UNORM_PACK16";
519		case VK_FORMAT_A1R5G5B5_UNORM_PACK16:							return "VK_FORMAT_A1R5G5B5_UNORM_PACK16";
520		case VK_FORMAT_R8_UNORM:										return "VK_FORMAT_R8_UNORM";
521		case VK_FORMAT_R8_SNORM:										return "VK_FORMAT_R8_SNORM";
522		case VK_FORMAT_R8_USCALED:										return "VK_FORMAT_R8_USCALED";
523		case VK_FORMAT_R8_SSCALED:										return "VK_FORMAT_R8_SSCALED";
524		case VK_FORMAT_R8_UINT:											return "VK_FORMAT_R8_UINT";
525		case VK_FORMAT_R8_SINT:											return "VK_FORMAT_R8_SINT";
526		case VK_FORMAT_R8_SRGB:											return "VK_FORMAT_R8_SRGB";
527		case VK_FORMAT_R8G8_UNORM:										return "VK_FORMAT_R8G8_UNORM";
528		case VK_FORMAT_R8G8_SNORM:										return "VK_FORMAT_R8G8_SNORM";
529		case VK_FORMAT_R8G8_USCALED:									return "VK_FORMAT_R8G8_USCALED";
530		case VK_FORMAT_R8G8_SSCALED:									return "VK_FORMAT_R8G8_SSCALED";
531		case VK_FORMAT_R8G8_UINT:										return "VK_FORMAT_R8G8_UINT";
532		case VK_FORMAT_R8G8_SINT:										return "VK_FORMAT_R8G8_SINT";
533		case VK_FORMAT_R8G8_SRGB:										return "VK_FORMAT_R8G8_SRGB";
534		case VK_FORMAT_R8G8B8_UNORM:									return "VK_FORMAT_R8G8B8_UNORM";
535		case VK_FORMAT_R8G8B8_SNORM:									return "VK_FORMAT_R8G8B8_SNORM";
536		case VK_FORMAT_R8G8B8_USCALED:									return "VK_FORMAT_R8G8B8_USCALED";
537		case VK_FORMAT_R8G8B8_SSCALED:									return "VK_FORMAT_R8G8B8_SSCALED";
538		case VK_FORMAT_R8G8B8_UINT:										return "VK_FORMAT_R8G8B8_UINT";
539		case VK_FORMAT_R8G8B8_SINT:										return "VK_FORMAT_R8G8B8_SINT";
540		case VK_FORMAT_R8G8B8_SRGB:										return "VK_FORMAT_R8G8B8_SRGB";
541		case VK_FORMAT_B8G8R8_UNORM:									return "VK_FORMAT_B8G8R8_UNORM";
542		case VK_FORMAT_B8G8R8_SNORM:									return "VK_FORMAT_B8G8R8_SNORM";
543		case VK_FORMAT_B8G8R8_USCALED:									return "VK_FORMAT_B8G8R8_USCALED";
544		case VK_FORMAT_B8G8R8_SSCALED:									return "VK_FORMAT_B8G8R8_SSCALED";
545		case VK_FORMAT_B8G8R8_UINT:										return "VK_FORMAT_B8G8R8_UINT";
546		case VK_FORMAT_B8G8R8_SINT:										return "VK_FORMAT_B8G8R8_SINT";
547		case VK_FORMAT_B8G8R8_SRGB:										return "VK_FORMAT_B8G8R8_SRGB";
548		case VK_FORMAT_R8G8B8A8_UNORM:									return "VK_FORMAT_R8G8B8A8_UNORM";
549		case VK_FORMAT_R8G8B8A8_SNORM:									return "VK_FORMAT_R8G8B8A8_SNORM";
550		case VK_FORMAT_R8G8B8A8_USCALED:								return "VK_FORMAT_R8G8B8A8_USCALED";
551		case VK_FORMAT_R8G8B8A8_SSCALED:								return "VK_FORMAT_R8G8B8A8_SSCALED";
552		case VK_FORMAT_R8G8B8A8_UINT:									return "VK_FORMAT_R8G8B8A8_UINT";
553		case VK_FORMAT_R8G8B8A8_SINT:									return "VK_FORMAT_R8G8B8A8_SINT";
554		case VK_FORMAT_R8G8B8A8_SRGB:									return "VK_FORMAT_R8G8B8A8_SRGB";
555		case VK_FORMAT_B8G8R8A8_UNORM:									return "VK_FORMAT_B8G8R8A8_UNORM";
556		case VK_FORMAT_B8G8R8A8_SNORM:									return "VK_FORMAT_B8G8R8A8_SNORM";
557		case VK_FORMAT_B8G8R8A8_USCALED:								return "VK_FORMAT_B8G8R8A8_USCALED";
558		case VK_FORMAT_B8G8R8A8_SSCALED:								return "VK_FORMAT_B8G8R8A8_SSCALED";
559		case VK_FORMAT_B8G8R8A8_UINT:									return "VK_FORMAT_B8G8R8A8_UINT";
560		case VK_FORMAT_B8G8R8A8_SINT:									return "VK_FORMAT_B8G8R8A8_SINT";
561		case VK_FORMAT_B8G8R8A8_SRGB:									return "VK_FORMAT_B8G8R8A8_SRGB";
562		case VK_FORMAT_A8B8G8R8_UNORM_PACK32:							return "VK_FORMAT_A8B8G8R8_UNORM_PACK32";
563		case VK_FORMAT_A8B8G8R8_SNORM_PACK32:							return "VK_FORMAT_A8B8G8R8_SNORM_PACK32";
564		case VK_FORMAT_A8B8G8R8_USCALED_PACK32:							return "VK_FORMAT_A8B8G8R8_USCALED_PACK32";
565		case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:							return "VK_FORMAT_A8B8G8R8_SSCALED_PACK32";
566		case VK_FORMAT_A8B8G8R8_UINT_PACK32:							return "VK_FORMAT_A8B8G8R8_UINT_PACK32";
567		case VK_FORMAT_A8B8G8R8_SINT_PACK32:							return "VK_FORMAT_A8B8G8R8_SINT_PACK32";
568		case VK_FORMAT_A8B8G8R8_SRGB_PACK32:							return "VK_FORMAT_A8B8G8R8_SRGB_PACK32";
569		case VK_FORMAT_A2R10G10B10_UNORM_PACK32:						return "VK_FORMAT_A2R10G10B10_UNORM_PACK32";
570		case VK_FORMAT_A2R10G10B10_SNORM_PACK32:						return "VK_FORMAT_A2R10G10B10_SNORM_PACK32";
571		case VK_FORMAT_A2R10G10B10_USCALED_PACK32:						return "VK_FORMAT_A2R10G10B10_USCALED_PACK32";
572		case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:						return "VK_FORMAT_A2R10G10B10_SSCALED_PACK32";
573		case VK_FORMAT_A2R10G10B10_UINT_PACK32:							return "VK_FORMAT_A2R10G10B10_UINT_PACK32";
574		case VK_FORMAT_A2R10G10B10_SINT_PACK32:							return "VK_FORMAT_A2R10G10B10_SINT_PACK32";
575		case VK_FORMAT_A2B10G10R10_UNORM_PACK32:						return "VK_FORMAT_A2B10G10R10_UNORM_PACK32";
576		case VK_FORMAT_A2B10G10R10_SNORM_PACK32:						return "VK_FORMAT_A2B10G10R10_SNORM_PACK32";
577		case VK_FORMAT_A2B10G10R10_USCALED_PACK32:						return "VK_FORMAT_A2B10G10R10_USCALED_PACK32";
578		case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:						return "VK_FORMAT_A2B10G10R10_SSCALED_PACK32";
579		case VK_FORMAT_A2B10G10R10_UINT_PACK32:							return "VK_FORMAT_A2B10G10R10_UINT_PACK32";
580		case VK_FORMAT_A2B10G10R10_SINT_PACK32:							return "VK_FORMAT_A2B10G10R10_SINT_PACK32";
581		case VK_FORMAT_R16_UNORM:										return "VK_FORMAT_R16_UNORM";
582		case VK_FORMAT_R16_SNORM:										return "VK_FORMAT_R16_SNORM";
583		case VK_FORMAT_R16_USCALED:										return "VK_FORMAT_R16_USCALED";
584		case VK_FORMAT_R16_SSCALED:										return "VK_FORMAT_R16_SSCALED";
585		case VK_FORMAT_R16_UINT:										return "VK_FORMAT_R16_UINT";
586		case VK_FORMAT_R16_SINT:										return "VK_FORMAT_R16_SINT";
587		case VK_FORMAT_R16_SFLOAT:										return "VK_FORMAT_R16_SFLOAT";
588		case VK_FORMAT_R16G16_UNORM:									return "VK_FORMAT_R16G16_UNORM";
589		case VK_FORMAT_R16G16_SNORM:									return "VK_FORMAT_R16G16_SNORM";
590		case VK_FORMAT_R16G16_USCALED:									return "VK_FORMAT_R16G16_USCALED";
591		case VK_FORMAT_R16G16_SSCALED:									return "VK_FORMAT_R16G16_SSCALED";
592		case VK_FORMAT_R16G16_UINT:										return "VK_FORMAT_R16G16_UINT";
593		case VK_FORMAT_R16G16_SINT:										return "VK_FORMAT_R16G16_SINT";
594		case VK_FORMAT_R16G16_SFLOAT:									return "VK_FORMAT_R16G16_SFLOAT";
595		case VK_FORMAT_R16G16B16_UNORM:									return "VK_FORMAT_R16G16B16_UNORM";
596		case VK_FORMAT_R16G16B16_SNORM:									return "VK_FORMAT_R16G16B16_SNORM";
597		case VK_FORMAT_R16G16B16_USCALED:								return "VK_FORMAT_R16G16B16_USCALED";
598		case VK_FORMAT_R16G16B16_SSCALED:								return "VK_FORMAT_R16G16B16_SSCALED";
599		case VK_FORMAT_R16G16B16_UINT:									return "VK_FORMAT_R16G16B16_UINT";
600		case VK_FORMAT_R16G16B16_SINT:									return "VK_FORMAT_R16G16B16_SINT";
601		case VK_FORMAT_R16G16B16_SFLOAT:								return "VK_FORMAT_R16G16B16_SFLOAT";
602		case VK_FORMAT_R16G16B16A16_UNORM:								return "VK_FORMAT_R16G16B16A16_UNORM";
603		case VK_FORMAT_R16G16B16A16_SNORM:								return "VK_FORMAT_R16G16B16A16_SNORM";
604		case VK_FORMAT_R16G16B16A16_USCALED:							return "VK_FORMAT_R16G16B16A16_USCALED";
605		case VK_FORMAT_R16G16B16A16_SSCALED:							return "VK_FORMAT_R16G16B16A16_SSCALED";
606		case VK_FORMAT_R16G16B16A16_UINT:								return "VK_FORMAT_R16G16B16A16_UINT";
607		case VK_FORMAT_R16G16B16A16_SINT:								return "VK_FORMAT_R16G16B16A16_SINT";
608		case VK_FORMAT_R16G16B16A16_SFLOAT:								return "VK_FORMAT_R16G16B16A16_SFLOAT";
609		case VK_FORMAT_R32_UINT:										return "VK_FORMAT_R32_UINT";
610		case VK_FORMAT_R32_SINT:										return "VK_FORMAT_R32_SINT";
611		case VK_FORMAT_R32_SFLOAT:										return "VK_FORMAT_R32_SFLOAT";
612		case VK_FORMAT_R32G32_UINT:										return "VK_FORMAT_R32G32_UINT";
613		case VK_FORMAT_R32G32_SINT:										return "VK_FORMAT_R32G32_SINT";
614		case VK_FORMAT_R32G32_SFLOAT:									return "VK_FORMAT_R32G32_SFLOAT";
615		case VK_FORMAT_R32G32B32_UINT:									return "VK_FORMAT_R32G32B32_UINT";
616		case VK_FORMAT_R32G32B32_SINT:									return "VK_FORMAT_R32G32B32_SINT";
617		case VK_FORMAT_R32G32B32_SFLOAT:								return "VK_FORMAT_R32G32B32_SFLOAT";
618		case VK_FORMAT_R32G32B32A32_UINT:								return "VK_FORMAT_R32G32B32A32_UINT";
619		case VK_FORMAT_R32G32B32A32_SINT:								return "VK_FORMAT_R32G32B32A32_SINT";
620		case VK_FORMAT_R32G32B32A32_SFLOAT:								return "VK_FORMAT_R32G32B32A32_SFLOAT";
621		case VK_FORMAT_R64_UINT:										return "VK_FORMAT_R64_UINT";
622		case VK_FORMAT_R64_SINT:										return "VK_FORMAT_R64_SINT";
623		case VK_FORMAT_R64_SFLOAT:										return "VK_FORMAT_R64_SFLOAT";
624		case VK_FORMAT_R64G64_UINT:										return "VK_FORMAT_R64G64_UINT";
625		case VK_FORMAT_R64G64_SINT:										return "VK_FORMAT_R64G64_SINT";
626		case VK_FORMAT_R64G64_SFLOAT:									return "VK_FORMAT_R64G64_SFLOAT";
627		case VK_FORMAT_R64G64B64_UINT:									return "VK_FORMAT_R64G64B64_UINT";
628		case VK_FORMAT_R64G64B64_SINT:									return "VK_FORMAT_R64G64B64_SINT";
629		case VK_FORMAT_R64G64B64_SFLOAT:								return "VK_FORMAT_R64G64B64_SFLOAT";
630		case VK_FORMAT_R64G64B64A64_UINT:								return "VK_FORMAT_R64G64B64A64_UINT";
631		case VK_FORMAT_R64G64B64A64_SINT:								return "VK_FORMAT_R64G64B64A64_SINT";
632		case VK_FORMAT_R64G64B64A64_SFLOAT:								return "VK_FORMAT_R64G64B64A64_SFLOAT";
633		case VK_FORMAT_B10G11R11_UFLOAT_PACK32:							return "VK_FORMAT_B10G11R11_UFLOAT_PACK32";
634		case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:							return "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32";
635		case VK_FORMAT_D16_UNORM:										return "VK_FORMAT_D16_UNORM";
636		case VK_FORMAT_X8_D24_UNORM_PACK32:								return "VK_FORMAT_X8_D24_UNORM_PACK32";
637		case VK_FORMAT_D32_SFLOAT:										return "VK_FORMAT_D32_SFLOAT";
638		case VK_FORMAT_S8_UINT:											return "VK_FORMAT_S8_UINT";
639		case VK_FORMAT_D16_UNORM_S8_UINT:								return "VK_FORMAT_D16_UNORM_S8_UINT";
640		case VK_FORMAT_D24_UNORM_S8_UINT:								return "VK_FORMAT_D24_UNORM_S8_UINT";
641		case VK_FORMAT_D32_SFLOAT_S8_UINT:								return "VK_FORMAT_D32_SFLOAT_S8_UINT";
642		case VK_FORMAT_BC1_RGB_UNORM_BLOCK:								return "VK_FORMAT_BC1_RGB_UNORM_BLOCK";
643		case VK_FORMAT_BC1_RGB_SRGB_BLOCK:								return "VK_FORMAT_BC1_RGB_SRGB_BLOCK";
644		case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:							return "VK_FORMAT_BC1_RGBA_UNORM_BLOCK";
645		case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:								return "VK_FORMAT_BC1_RGBA_SRGB_BLOCK";
646		case VK_FORMAT_BC2_UNORM_BLOCK:									return "VK_FORMAT_BC2_UNORM_BLOCK";
647		case VK_FORMAT_BC2_SRGB_BLOCK:									return "VK_FORMAT_BC2_SRGB_BLOCK";
648		case VK_FORMAT_BC3_UNORM_BLOCK:									return "VK_FORMAT_BC3_UNORM_BLOCK";
649		case VK_FORMAT_BC3_SRGB_BLOCK:									return "VK_FORMAT_BC3_SRGB_BLOCK";
650		case VK_FORMAT_BC4_UNORM_BLOCK:									return "VK_FORMAT_BC4_UNORM_BLOCK";
651		case VK_FORMAT_BC4_SNORM_BLOCK:									return "VK_FORMAT_BC4_SNORM_BLOCK";
652		case VK_FORMAT_BC5_UNORM_BLOCK:									return "VK_FORMAT_BC5_UNORM_BLOCK";
653		case VK_FORMAT_BC5_SNORM_BLOCK:									return "VK_FORMAT_BC5_SNORM_BLOCK";
654		case VK_FORMAT_BC6H_UFLOAT_BLOCK:								return "VK_FORMAT_BC6H_UFLOAT_BLOCK";
655		case VK_FORMAT_BC6H_SFLOAT_BLOCK:								return "VK_FORMAT_BC6H_SFLOAT_BLOCK";
656		case VK_FORMAT_BC7_UNORM_BLOCK:									return "VK_FORMAT_BC7_UNORM_BLOCK";
657		case VK_FORMAT_BC7_SRGB_BLOCK:									return "VK_FORMAT_BC7_SRGB_BLOCK";
658		case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:							return "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK";
659		case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:							return "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK";
660		case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:						return "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK";
661		case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:						return "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK";
662		case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:						return "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK";
663		case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:						return "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK";
664		case VK_FORMAT_EAC_R11_UNORM_BLOCK:								return "VK_FORMAT_EAC_R11_UNORM_BLOCK";
665		case VK_FORMAT_EAC_R11_SNORM_BLOCK:								return "VK_FORMAT_EAC_R11_SNORM_BLOCK";
666		case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:							return "VK_FORMAT_EAC_R11G11_UNORM_BLOCK";
667		case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:							return "VK_FORMAT_EAC_R11G11_SNORM_BLOCK";
668		case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:							return "VK_FORMAT_ASTC_4x4_UNORM_BLOCK";
669		case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:								return "VK_FORMAT_ASTC_4x4_SRGB_BLOCK";
670		case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:							return "VK_FORMAT_ASTC_5x4_UNORM_BLOCK";
671		case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:								return "VK_FORMAT_ASTC_5x4_SRGB_BLOCK";
672		case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:							return "VK_FORMAT_ASTC_5x5_UNORM_BLOCK";
673		case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:								return "VK_FORMAT_ASTC_5x5_SRGB_BLOCK";
674		case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:							return "VK_FORMAT_ASTC_6x5_UNORM_BLOCK";
675		case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:								return "VK_FORMAT_ASTC_6x5_SRGB_BLOCK";
676		case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:							return "VK_FORMAT_ASTC_6x6_UNORM_BLOCK";
677		case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:								return "VK_FORMAT_ASTC_6x6_SRGB_BLOCK";
678		case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:							return "VK_FORMAT_ASTC_8x5_UNORM_BLOCK";
679		case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:								return "VK_FORMAT_ASTC_8x5_SRGB_BLOCK";
680		case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:							return "VK_FORMAT_ASTC_8x6_UNORM_BLOCK";
681		case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:								return "VK_FORMAT_ASTC_8x6_SRGB_BLOCK";
682		case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:							return "VK_FORMAT_ASTC_8x8_UNORM_BLOCK";
683		case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:								return "VK_FORMAT_ASTC_8x8_SRGB_BLOCK";
684		case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:							return "VK_FORMAT_ASTC_10x5_UNORM_BLOCK";
685		case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:							return "VK_FORMAT_ASTC_10x5_SRGB_BLOCK";
686		case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:							return "VK_FORMAT_ASTC_10x6_UNORM_BLOCK";
687		case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:							return "VK_FORMAT_ASTC_10x6_SRGB_BLOCK";
688		case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:							return "VK_FORMAT_ASTC_10x8_UNORM_BLOCK";
689		case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:							return "VK_FORMAT_ASTC_10x8_SRGB_BLOCK";
690		case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:							return "VK_FORMAT_ASTC_10x10_UNORM_BLOCK";
691		case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:							return "VK_FORMAT_ASTC_10x10_SRGB_BLOCK";
692		case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:							return "VK_FORMAT_ASTC_12x10_UNORM_BLOCK";
693		case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:							return "VK_FORMAT_ASTC_12x10_SRGB_BLOCK";
694		case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:							return "VK_FORMAT_ASTC_12x12_UNORM_BLOCK";
695		case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:							return "VK_FORMAT_ASTC_12x12_SRGB_BLOCK";
696		case VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT:						return "VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT";
697		case VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT:						return "VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT";
698		case VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT:						return "VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT";
699		case VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT:						return "VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT";
700		case VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT:						return "VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT";
701		case VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT:						return "VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT";
702		case VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT:						return "VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT";
703		case VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT:						return "VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT";
704		case VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT:						return "VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT";
705		case VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT:						return "VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT";
706		case VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT:						return "VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT";
707		case VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT:						return "VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT";
708		case VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT:						return "VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT";
709		case VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT:						return "VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT";
710		case VK_FORMAT_G8B8G8R8_422_UNORM:								return "VK_FORMAT_G8B8G8R8_422_UNORM";
711		case VK_FORMAT_B8G8R8G8_422_UNORM:								return "VK_FORMAT_B8G8R8G8_422_UNORM";
712		case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:						return "VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM";
713		case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:						return "VK_FORMAT_G8_B8R8_2PLANE_420_UNORM";
714		case VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:						return "VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM";
715		case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:						return "VK_FORMAT_G8_B8R8_2PLANE_422_UNORM";
716		case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:						return "VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM";
717		case VK_FORMAT_R10X6_UNORM_PACK16:								return "VK_FORMAT_R10X6_UNORM_PACK16";
718		case VK_FORMAT_R10X6G10X6_UNORM_2PACK16:						return "VK_FORMAT_R10X6G10X6_UNORM_2PACK16";
719		case VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:				return "VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16";
720		case VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:			return "VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16";
721		case VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:			return "VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16";
722		case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:		return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16";
723		case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:		return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16";
724		case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:		return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16";
725		case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:		return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16";
726		case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:		return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16";
727		case VK_FORMAT_R12X4_UNORM_PACK16:								return "VK_FORMAT_R12X4_UNORM_PACK16";
728		case VK_FORMAT_R12X4G12X4_UNORM_2PACK16:						return "VK_FORMAT_R12X4G12X4_UNORM_2PACK16";
729		case VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:				return "VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16";
730		case VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:			return "VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16";
731		case VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:			return "VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16";
732		case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:		return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16";
733		case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:		return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16";
734		case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:		return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16";
735		case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:		return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16";
736		case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:		return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16";
737		case VK_FORMAT_G16B16G16R16_422_UNORM:							return "VK_FORMAT_G16B16G16R16_422_UNORM";
738		case VK_FORMAT_B16G16R16G16_422_UNORM:							return "VK_FORMAT_B16G16R16G16_422_UNORM";
739		case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:					return "VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM";
740		case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:						return "VK_FORMAT_G16_B16R16_2PLANE_420_UNORM";
741		case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:					return "VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM";
742		case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:						return "VK_FORMAT_G16_B16R16_2PLANE_422_UNORM";
743		case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:					return "VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM";
744		case VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT:					return "VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT";
745		case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT:	return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT";
746		case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT:	return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT";
747		case VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT:					return "VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT";
748		case VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT:						return "VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT";
749		case VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT:						return "VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT";
750		default:														return DE_NULL;
751	}
752}
753
754tcu::Format::Bitfield<32> getFormatFeatureFlagsStr (VkFormatFeatureFlags value)
755{
756	static const tcu::Format::BitDesc s_desc[] =
757	{
758		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,															"VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"),
759		tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,															"VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"),
760		tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,													"VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"),
761		tcu::Format::BitDesc(VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,													"VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"),
762		tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,													"VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"),
763		tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,												"VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"),
764		tcu::Format::BitDesc(VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,															"VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"),
765		tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,														"VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"),
766		tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,													"VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"),
767		tcu::Format::BitDesc(VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,												"VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"),
768		tcu::Format::BitDesc(VK_FORMAT_FEATURE_BLIT_SRC_BIT,																"VK_FORMAT_FEATURE_BLIT_SRC_BIT"),
769		tcu::Format::BitDesc(VK_FORMAT_FEATURE_BLIT_DST_BIT,																"VK_FORMAT_FEATURE_BLIT_DST_BIT"),
770		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,												"VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"),
771		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT,											"VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT"),
772		tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,															"VK_FORMAT_FEATURE_TRANSFER_SRC_BIT"),
773		tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_DST_BIT,															"VK_FORMAT_FEATURE_TRANSFER_DST_BIT"),
774		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT,												"VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT"),
775		tcu::Format::BitDesc(VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,													"VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT"),
776		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,							"VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"),
777		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"),
778		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"),
779		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"),
780		tcu::Format::BitDesc(VK_FORMAT_FEATURE_DISJOINT_BIT,																"VK_FORMAT_FEATURE_DISJOINT_BIT"),
781		tcu::Format::BitDesc(VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,													"VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT"),
782		tcu::Format::BitDesc(VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,									"VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"),
783	};
784	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
785}
786
787const char* getFrontFaceName (VkFrontFace value)
788{
789	switch (value)
790	{
791		case VK_FRONT_FACE_COUNTER_CLOCKWISE:	return "VK_FRONT_FACE_COUNTER_CLOCKWISE";
792		case VK_FRONT_FACE_CLOCKWISE:			return "VK_FRONT_FACE_CLOCKWISE";
793		default:								return DE_NULL;
794	}
795}
796
797tcu::Format::Bitfield<32> getImageAspectFlagsStr (VkImageAspectFlags value)
798{
799	static const tcu::Format::BitDesc s_desc[] =
800	{
801		tcu::Format::BitDesc(VK_IMAGE_ASPECT_COLOR_BIT,					"VK_IMAGE_ASPECT_COLOR_BIT"),
802		tcu::Format::BitDesc(VK_IMAGE_ASPECT_NONE,						"VK_IMAGE_ASPECT_NONE"),
803		tcu::Format::BitDesc(VK_IMAGE_ASPECT_DEPTH_BIT,					"VK_IMAGE_ASPECT_DEPTH_BIT"),
804		tcu::Format::BitDesc(VK_IMAGE_ASPECT_STENCIL_BIT,				"VK_IMAGE_ASPECT_STENCIL_BIT"),
805		tcu::Format::BitDesc(VK_IMAGE_ASPECT_METADATA_BIT,				"VK_IMAGE_ASPECT_METADATA_BIT"),
806		tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_0_BIT,				"VK_IMAGE_ASPECT_PLANE_0_BIT"),
807		tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_1_BIT,				"VK_IMAGE_ASPECT_PLANE_1_BIT"),
808		tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_2_BIT,				"VK_IMAGE_ASPECT_PLANE_2_BIT"),
809		tcu::Format::BitDesc(VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT,	"VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT"),
810		tcu::Format::BitDesc(VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT,	"VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT"),
811		tcu::Format::BitDesc(VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT,	"VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT"),
812		tcu::Format::BitDesc(VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT,	"VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT"),
813	};
814	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
815}
816
817tcu::Format::Bitfield<32> getImageCreateFlagsStr (VkImageCreateFlags value)
818{
819	static const tcu::Format::BitDesc s_desc[] =
820	{
821		tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_BINDING_BIT,						"VK_IMAGE_CREATE_SPARSE_BINDING_BIT"),
822		tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,						"VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"),
823		tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,						"VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"),
824		tcu::Format::BitDesc(VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,						"VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"),
825		tcu::Format::BitDesc(VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,						"VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"),
826		tcu::Format::BitDesc(VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,					"VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT"),
827		tcu::Format::BitDesc(VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,			"VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"),
828		tcu::Format::BitDesc(VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,			"VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"),
829		tcu::Format::BitDesc(VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,						"VK_IMAGE_CREATE_EXTENDED_USAGE_BIT"),
830		tcu::Format::BitDesc(VK_IMAGE_CREATE_DISJOINT_BIT,								"VK_IMAGE_CREATE_DISJOINT_BIT"),
831		tcu::Format::BitDesc(VK_IMAGE_CREATE_ALIAS_BIT,									"VK_IMAGE_CREATE_ALIAS_BIT"),
832		tcu::Format::BitDesc(VK_IMAGE_CREATE_PROTECTED_BIT,								"VK_IMAGE_CREATE_PROTECTED_BIT"),
833		tcu::Format::BitDesc(VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT,	"VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"),
834	};
835	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
836}
837
838const char* getImageLayoutName (VkImageLayout value)
839{
840	switch (value)
841	{
842		case VK_IMAGE_LAYOUT_UNDEFINED:										return "VK_IMAGE_LAYOUT_UNDEFINED";
843		case VK_IMAGE_LAYOUT_GENERAL:										return "VK_IMAGE_LAYOUT_GENERAL";
844		case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:						return "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL";
845		case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:				return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL";
846		case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL:				return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL";
847		case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:						return "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL";
848		case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:							return "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL";
849		case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:							return "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL";
850		case VK_IMAGE_LAYOUT_PREINITIALIZED:								return "VK_IMAGE_LAYOUT_PREINITIALIZED";
851		case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR:								return "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR";
852		case VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR:							return "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR";
853		case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL:	return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL";
854		case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL:	return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL";
855		case VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR:	return "VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR";
856		case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL:						return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL";
857		case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL:						return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL";
858		case VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL:					return "VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL";
859		case VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL:						return "VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL";
860		case VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR:							return "VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR";
861		case VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR:						return "VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR";
862		default:															return DE_NULL;
863	}
864}
865
866const char* getImageTilingName (VkImageTiling value)
867{
868	switch (value)
869	{
870		case VK_IMAGE_TILING_OPTIMAL:					return "VK_IMAGE_TILING_OPTIMAL";
871		case VK_IMAGE_TILING_LINEAR:					return "VK_IMAGE_TILING_LINEAR";
872		case VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT:	return "VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT";
873		default:										return DE_NULL;
874	}
875}
876
877const char* getImageTypeName (VkImageType value)
878{
879	switch (value)
880	{
881		case VK_IMAGE_TYPE_1D:	return "VK_IMAGE_TYPE_1D";
882		case VK_IMAGE_TYPE_2D:	return "VK_IMAGE_TYPE_2D";
883		case VK_IMAGE_TYPE_3D:	return "VK_IMAGE_TYPE_3D";
884		default:				return DE_NULL;
885	}
886}
887
888tcu::Format::Bitfield<32> getImageUsageFlagsStr (VkImageUsageFlags value)
889{
890	static const tcu::Format::BitDesc s_desc[] =
891	{
892		tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_SRC_BIT,							"VK_IMAGE_USAGE_TRANSFER_SRC_BIT"),
893		tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_DST_BIT,							"VK_IMAGE_USAGE_TRANSFER_DST_BIT"),
894		tcu::Format::BitDesc(VK_IMAGE_USAGE_SAMPLED_BIT,								"VK_IMAGE_USAGE_SAMPLED_BIT"),
895		tcu::Format::BitDesc(VK_IMAGE_USAGE_STORAGE_BIT,								"VK_IMAGE_USAGE_STORAGE_BIT"),
896		tcu::Format::BitDesc(VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,						"VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"),
897		tcu::Format::BitDesc(VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,				"VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"),
898		tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,					"VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"),
899		tcu::Format::BitDesc(VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,						"VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"),
900		tcu::Format::BitDesc(VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,	"VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"),
901	};
902	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
903}
904
905tcu::Format::Bitfield<32> getImageViewCreateFlagsStr (VkImageViewCreateFlags value)
906{
907	static const tcu::Format::BitDesc s_desc[] =
908	{
909		tcu::Format::BitDesc(0, "0")
910	};
911	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
912}
913
914const char* getImageViewTypeName (VkImageViewType value)
915{
916	switch (value)
917	{
918		case VK_IMAGE_VIEW_TYPE_1D:			return "VK_IMAGE_VIEW_TYPE_1D";
919		case VK_IMAGE_VIEW_TYPE_2D:			return "VK_IMAGE_VIEW_TYPE_2D";
920		case VK_IMAGE_VIEW_TYPE_3D:			return "VK_IMAGE_VIEW_TYPE_3D";
921		case VK_IMAGE_VIEW_TYPE_CUBE:		return "VK_IMAGE_VIEW_TYPE_CUBE";
922		case VK_IMAGE_VIEW_TYPE_1D_ARRAY:	return "VK_IMAGE_VIEW_TYPE_1D_ARRAY";
923		case VK_IMAGE_VIEW_TYPE_2D_ARRAY:	return "VK_IMAGE_VIEW_TYPE_2D_ARRAY";
924		case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY:	return "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY";
925		default:							return DE_NULL;
926	}
927}
928
929const char* getSharingModeName (VkSharingMode value)
930{
931	switch (value)
932	{
933		case VK_SHARING_MODE_EXCLUSIVE:		return "VK_SHARING_MODE_EXCLUSIVE";
934		case VK_SHARING_MODE_CONCURRENT:	return "VK_SHARING_MODE_CONCURRENT";
935		default:							return DE_NULL;
936	}
937}
938
939const char* getIndexTypeName (VkIndexType value)
940{
941	switch (value)
942	{
943		case VK_INDEX_TYPE_UINT16:		return "VK_INDEX_TYPE_UINT16";
944		case VK_INDEX_TYPE_UINT32:		return "VK_INDEX_TYPE_UINT32";
945		case VK_INDEX_TYPE_UINT8_EXT:	return "VK_INDEX_TYPE_UINT8_EXT";
946		default:						return DE_NULL;
947	}
948}
949
950const char* getLogicOpName (VkLogicOp value)
951{
952	switch (value)
953	{
954		case VK_LOGIC_OP_CLEAR:			return "VK_LOGIC_OP_CLEAR";
955		case VK_LOGIC_OP_AND:			return "VK_LOGIC_OP_AND";
956		case VK_LOGIC_OP_AND_REVERSE:	return "VK_LOGIC_OP_AND_REVERSE";
957		case VK_LOGIC_OP_COPY:			return "VK_LOGIC_OP_COPY";
958		case VK_LOGIC_OP_AND_INVERTED:	return "VK_LOGIC_OP_AND_INVERTED";
959		case VK_LOGIC_OP_NO_OP:			return "VK_LOGIC_OP_NO_OP";
960		case VK_LOGIC_OP_XOR:			return "VK_LOGIC_OP_XOR";
961		case VK_LOGIC_OP_OR:			return "VK_LOGIC_OP_OR";
962		case VK_LOGIC_OP_NOR:			return "VK_LOGIC_OP_NOR";
963		case VK_LOGIC_OP_EQUIVALENT:	return "VK_LOGIC_OP_EQUIVALENT";
964		case VK_LOGIC_OP_INVERT:		return "VK_LOGIC_OP_INVERT";
965		case VK_LOGIC_OP_OR_REVERSE:	return "VK_LOGIC_OP_OR_REVERSE";
966		case VK_LOGIC_OP_COPY_INVERTED:	return "VK_LOGIC_OP_COPY_INVERTED";
967		case VK_LOGIC_OP_OR_INVERTED:	return "VK_LOGIC_OP_OR_INVERTED";
968		case VK_LOGIC_OP_NAND:			return "VK_LOGIC_OP_NAND";
969		case VK_LOGIC_OP_SET:			return "VK_LOGIC_OP_SET";
970		default:						return DE_NULL;
971	}
972}
973
974tcu::Format::Bitfield<32> getMemoryHeapFlagsStr (VkMemoryHeapFlags value)
975{
976	static const tcu::Format::BitDesc s_desc[] =
977	{
978		tcu::Format::BitDesc(VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,	"VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"),
979		tcu::Format::BitDesc(VK_MEMORY_HEAP_MULTI_INSTANCE_BIT,	"VK_MEMORY_HEAP_MULTI_INSTANCE_BIT"),
980		tcu::Format::BitDesc(VK_MEMORY_HEAP_SEU_SAFE_BIT,		"VK_MEMORY_HEAP_SEU_SAFE_BIT"),
981	};
982	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
983}
984
985tcu::Format::Bitfield<32> getAccessFlagsStr (VkAccessFlags value)
986{
987	static const tcu::Format::BitDesc s_desc[] =
988	{
989		tcu::Format::BitDesc(VK_ACCESS_INDIRECT_COMMAND_READ_BIT,						"VK_ACCESS_INDIRECT_COMMAND_READ_BIT"),
990		tcu::Format::BitDesc(VK_ACCESS_NONE_KHR,										"VK_ACCESS_NONE_KHR"),
991		tcu::Format::BitDesc(VK_ACCESS_INDEX_READ_BIT,									"VK_ACCESS_INDEX_READ_BIT"),
992		tcu::Format::BitDesc(VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,						"VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"),
993		tcu::Format::BitDesc(VK_ACCESS_UNIFORM_READ_BIT,								"VK_ACCESS_UNIFORM_READ_BIT"),
994		tcu::Format::BitDesc(VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,						"VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"),
995		tcu::Format::BitDesc(VK_ACCESS_SHADER_READ_BIT,									"VK_ACCESS_SHADER_READ_BIT"),
996		tcu::Format::BitDesc(VK_ACCESS_SHADER_WRITE_BIT,								"VK_ACCESS_SHADER_WRITE_BIT"),
997		tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,						"VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"),
998		tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,						"VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"),
999		tcu::Format::BitDesc(VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,				"VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"),
1000		tcu::Format::BitDesc(VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,				"VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"),
1001		tcu::Format::BitDesc(VK_ACCESS_TRANSFER_READ_BIT,								"VK_ACCESS_TRANSFER_READ_BIT"),
1002		tcu::Format::BitDesc(VK_ACCESS_TRANSFER_WRITE_BIT,								"VK_ACCESS_TRANSFER_WRITE_BIT"),
1003		tcu::Format::BitDesc(VK_ACCESS_HOST_READ_BIT,									"VK_ACCESS_HOST_READ_BIT"),
1004		tcu::Format::BitDesc(VK_ACCESS_HOST_WRITE_BIT,									"VK_ACCESS_HOST_WRITE_BIT"),
1005		tcu::Format::BitDesc(VK_ACCESS_MEMORY_READ_BIT,									"VK_ACCESS_MEMORY_READ_BIT"),
1006		tcu::Format::BitDesc(VK_ACCESS_MEMORY_WRITE_BIT,								"VK_ACCESS_MEMORY_WRITE_BIT"),
1007		tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT,		"VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"),
1008		tcu::Format::BitDesc(VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR,	"VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"),
1009	};
1010	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1011}
1012
1013tcu::Format::Bitfield<32> getMemoryPropertyFlagsStr (VkMemoryPropertyFlags value)
1014{
1015	static const tcu::Format::BitDesc s_desc[] =
1016	{
1017		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,		"VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"),
1018		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,		"VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"),
1019		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,		"VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"),
1020		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_CACHED_BIT,		"VK_MEMORY_PROPERTY_HOST_CACHED_BIT"),
1021		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT,	"VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"),
1022		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_PROTECTED_BIT,			"VK_MEMORY_PROPERTY_PROTECTED_BIT"),
1023	};
1024	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1025}
1026
1027const char* getPhysicalDeviceTypeName (VkPhysicalDeviceType value)
1028{
1029	switch (value)
1030	{
1031		case VK_PHYSICAL_DEVICE_TYPE_OTHER:				return "VK_PHYSICAL_DEVICE_TYPE_OTHER";
1032		case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU:	return "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU";
1033		case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU:		return "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU";
1034		case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU:		return "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU";
1035		case VK_PHYSICAL_DEVICE_TYPE_CPU:				return "VK_PHYSICAL_DEVICE_TYPE_CPU";
1036		default:										return DE_NULL;
1037	}
1038}
1039
1040const char* getPipelineBindPointName (VkPipelineBindPoint value)
1041{
1042	switch (value)
1043	{
1044		case VK_PIPELINE_BIND_POINT_GRAPHICS:	return "VK_PIPELINE_BIND_POINT_GRAPHICS";
1045		case VK_PIPELINE_BIND_POINT_COMPUTE:	return "VK_PIPELINE_BIND_POINT_COMPUTE";
1046		default:								return DE_NULL;
1047	}
1048}
1049
1050tcu::Format::Bitfield<32> getPipelineCreateFlagsStr (VkPipelineCreateFlags value)
1051{
1052	static const tcu::Format::BitDesc s_desc[] =
1053	{
1054		tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,				"VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"),
1055		tcu::Format::BitDesc(VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,					"VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"),
1056		tcu::Format::BitDesc(VK_PIPELINE_CREATE_DERIVATIVE_BIT,							"VK_PIPELINE_CREATE_DERIVATIVE_BIT"),
1057		tcu::Format::BitDesc(VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,		"VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"),
1058		tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISPATCH_BASE_BIT,						"VK_PIPELINE_CREATE_DISPATCH_BASE_BIT"),
1059		tcu::Format::BitDesc(VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT,	"VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT"),
1060		tcu::Format::BitDesc(VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT,			"VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT"),
1061	};
1062	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1063}
1064
1065const char* getPrimitiveTopologyName (VkPrimitiveTopology value)
1066{
1067	switch (value)
1068	{
1069		case VK_PRIMITIVE_TOPOLOGY_POINT_LIST:						return "VK_PRIMITIVE_TOPOLOGY_POINT_LIST";
1070		case VK_PRIMITIVE_TOPOLOGY_LINE_LIST:						return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST";
1071		case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:						return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP";
1072		case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:					return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST";
1073		case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:					return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP";
1074		case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:					return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN";
1075		case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY:		return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY";
1076		case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY:		return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY";
1077		case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY:	return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY";
1078		case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY:	return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY";
1079		case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST:						return "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST";
1080		default:													return DE_NULL;
1081	}
1082}
1083
1084tcu::Format::Bitfield<32> getQueryControlFlagsStr (VkQueryControlFlags value)
1085{
1086	static const tcu::Format::BitDesc s_desc[] =
1087	{
1088		tcu::Format::BitDesc(VK_QUERY_CONTROL_PRECISE_BIT,	"VK_QUERY_CONTROL_PRECISE_BIT"),
1089	};
1090	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1091}
1092
1093tcu::Format::Bitfield<32> getQueryPipelineStatisticFlagsStr (VkQueryPipelineStatisticFlags value)
1094{
1095	static const tcu::Format::BitDesc s_desc[] =
1096	{
1097		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,						"VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT"),
1098		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,						"VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT"),
1099		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,						"VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT"),
1100		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,					"VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT"),
1101		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,					"VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT"),
1102		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,							"VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT"),
1103		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,							"VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT"),
1104		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,					"VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT"),
1105		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,			"VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT"),
1106		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,	"VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT"),
1107		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT,					"VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT"),
1108	};
1109	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1110}
1111
1112tcu::Format::Bitfield<32> getQueryResultFlagsStr (VkQueryResultFlags value)
1113{
1114	static const tcu::Format::BitDesc s_desc[] =
1115	{
1116		tcu::Format::BitDesc(VK_QUERY_RESULT_64_BIT,				"VK_QUERY_RESULT_64_BIT"),
1117		tcu::Format::BitDesc(VK_QUERY_RESULT_WAIT_BIT,				"VK_QUERY_RESULT_WAIT_BIT"),
1118		tcu::Format::BitDesc(VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,	"VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"),
1119		tcu::Format::BitDesc(VK_QUERY_RESULT_PARTIAL_BIT,			"VK_QUERY_RESULT_PARTIAL_BIT"),
1120	};
1121	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1122}
1123
1124const char* getQueryTypeName (VkQueryType value)
1125{
1126	switch (value)
1127	{
1128		case VK_QUERY_TYPE_OCCLUSION:				return "VK_QUERY_TYPE_OCCLUSION";
1129		case VK_QUERY_TYPE_PIPELINE_STATISTICS:		return "VK_QUERY_TYPE_PIPELINE_STATISTICS";
1130		case VK_QUERY_TYPE_TIMESTAMP:				return "VK_QUERY_TYPE_TIMESTAMP";
1131		case VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR:	return "VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR";
1132		default:									return DE_NULL;
1133	}
1134}
1135
1136tcu::Format::Bitfield<32> getQueueFlagsStr (VkQueueFlags value)
1137{
1138	static const tcu::Format::BitDesc s_desc[] =
1139	{
1140		tcu::Format::BitDesc(VK_QUEUE_GRAPHICS_BIT,			"VK_QUEUE_GRAPHICS_BIT"),
1141		tcu::Format::BitDesc(VK_QUEUE_COMPUTE_BIT,			"VK_QUEUE_COMPUTE_BIT"),
1142		tcu::Format::BitDesc(VK_QUEUE_TRANSFER_BIT,			"VK_QUEUE_TRANSFER_BIT"),
1143		tcu::Format::BitDesc(VK_QUEUE_SPARSE_BINDING_BIT,	"VK_QUEUE_SPARSE_BINDING_BIT"),
1144		tcu::Format::BitDesc(VK_QUEUE_PROTECTED_BIT,		"VK_QUEUE_PROTECTED_BIT"),
1145	};
1146	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1147}
1148
1149const char* getSubpassContentsName (VkSubpassContents value)
1150{
1151	switch (value)
1152	{
1153		case VK_SUBPASS_CONTENTS_INLINE:					return "VK_SUBPASS_CONTENTS_INLINE";
1154		case VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS:	return "VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS";
1155		default:											return DE_NULL;
1156	}
1157}
1158
1159const char* getResultName (VkResult value)
1160{
1161	switch (value)
1162	{
1163		case VK_ERROR_NO_PIPELINE_MATCH:							return "VK_ERROR_NO_PIPELINE_MATCH";
1164		case VK_ERROR_INVALID_PIPELINE_CACHE_DATA:					return "VK_ERROR_INVALID_PIPELINE_CACHE_DATA";
1165		case VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS:				return "VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS";
1166		case VK_ERROR_NOT_PERMITTED_EXT:							return "VK_ERROR_NOT_PERMITTED_EXT";
1167		case VK_ERROR_FRAGMENTATION:								return "VK_ERROR_FRAGMENTATION";
1168		case VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT:	return "VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT";
1169		case VK_ERROR_INVALID_EXTERNAL_HANDLE:						return "VK_ERROR_INVALID_EXTERNAL_HANDLE";
1170		case VK_ERROR_OUT_OF_POOL_MEMORY:							return "VK_ERROR_OUT_OF_POOL_MEMORY";
1171		case VK_ERROR_VALIDATION_FAILED:							return "VK_ERROR_VALIDATION_FAILED";
1172		case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR:						return "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR";
1173		case VK_ERROR_OUT_OF_DATE_KHR:								return "VK_ERROR_OUT_OF_DATE_KHR";
1174		case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR:						return "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR";
1175		case VK_ERROR_SURFACE_LOST_KHR:								return "VK_ERROR_SURFACE_LOST_KHR";
1176		case VK_ERROR_UNKNOWN:										return "VK_ERROR_UNKNOWN";
1177		case VK_ERROR_FRAGMENTED_POOL:								return "VK_ERROR_FRAGMENTED_POOL";
1178		case VK_ERROR_FORMAT_NOT_SUPPORTED:							return "VK_ERROR_FORMAT_NOT_SUPPORTED";
1179		case VK_ERROR_TOO_MANY_OBJECTS:								return "VK_ERROR_TOO_MANY_OBJECTS";
1180		case VK_ERROR_INCOMPATIBLE_DRIVER:							return "VK_ERROR_INCOMPATIBLE_DRIVER";
1181		case VK_ERROR_FEATURE_NOT_PRESENT:							return "VK_ERROR_FEATURE_NOT_PRESENT";
1182		case VK_ERROR_EXTENSION_NOT_PRESENT:						return "VK_ERROR_EXTENSION_NOT_PRESENT";
1183		case VK_ERROR_LAYER_NOT_PRESENT:							return "VK_ERROR_LAYER_NOT_PRESENT";
1184		case VK_ERROR_MEMORY_MAP_FAILED:							return "VK_ERROR_MEMORY_MAP_FAILED";
1185		case VK_ERROR_DEVICE_LOST:									return "VK_ERROR_DEVICE_LOST";
1186		case VK_ERROR_INITIALIZATION_FAILED:						return "VK_ERROR_INITIALIZATION_FAILED";
1187		case VK_ERROR_OUT_OF_DEVICE_MEMORY:							return "VK_ERROR_OUT_OF_DEVICE_MEMORY";
1188		case VK_ERROR_OUT_OF_HOST_MEMORY:							return "VK_ERROR_OUT_OF_HOST_MEMORY";
1189		case VK_SUCCESS:											return "VK_SUCCESS";
1190		case VK_NOT_READY:											return "VK_NOT_READY";
1191		case VK_TIMEOUT:											return "VK_TIMEOUT";
1192		case VK_EVENT_SET:											return "VK_EVENT_SET";
1193		case VK_EVENT_RESET:										return "VK_EVENT_RESET";
1194		case VK_INCOMPLETE:											return "VK_INCOMPLETE";
1195		case VK_SUBOPTIMAL_KHR:										return "VK_SUBOPTIMAL_KHR";
1196		case VK_PIPELINE_COMPILE_REQUIRED:							return "VK_PIPELINE_COMPILE_REQUIRED";
1197		default:													return DE_NULL;
1198	}
1199}
1200
1201tcu::Format::Bitfield<32> getShaderStageFlagsStr (VkShaderStageFlags value)
1202{
1203	static const tcu::Format::BitDesc s_desc[] =
1204	{
1205		tcu::Format::BitDesc(VK_SHADER_STAGE_VERTEX_BIT,					"VK_SHADER_STAGE_VERTEX_BIT"),
1206		tcu::Format::BitDesc(VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,		"VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"),
1207		tcu::Format::BitDesc(VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,	"VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"),
1208		tcu::Format::BitDesc(VK_SHADER_STAGE_GEOMETRY_BIT,					"VK_SHADER_STAGE_GEOMETRY_BIT"),
1209		tcu::Format::BitDesc(VK_SHADER_STAGE_FRAGMENT_BIT,					"VK_SHADER_STAGE_FRAGMENT_BIT"),
1210		tcu::Format::BitDesc(VK_SHADER_STAGE_COMPUTE_BIT,					"VK_SHADER_STAGE_COMPUTE_BIT"),
1211		tcu::Format::BitDesc(VK_SHADER_STAGE_ALL_GRAPHICS,					"VK_SHADER_STAGE_ALL_GRAPHICS"),
1212		tcu::Format::BitDesc(VK_SHADER_STAGE_ALL,							"VK_SHADER_STAGE_ALL"),
1213	};
1214	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1215}
1216
1217tcu::Format::Bitfield<32> getSparseMemoryBindFlagsStr (VkSparseMemoryBindFlags value)
1218{
1219	static const tcu::Format::BitDesc s_desc[] =
1220	{
1221		tcu::Format::BitDesc(VK_SPARSE_MEMORY_BIND_METADATA_BIT,	"VK_SPARSE_MEMORY_BIND_METADATA_BIT"),
1222	};
1223	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1224}
1225
1226tcu::Format::Bitfield<32> getStencilFaceFlagsStr (VkStencilFaceFlags value)
1227{
1228	static const tcu::Format::BitDesc s_desc[] =
1229	{
1230		tcu::Format::BitDesc(VK_STENCIL_FACE_FRONT_BIT,			"VK_STENCIL_FACE_FRONT_BIT"),
1231		tcu::Format::BitDesc(VK_STENCIL_FACE_BACK_BIT,			"VK_STENCIL_FACE_BACK_BIT"),
1232		tcu::Format::BitDesc(VK_STENCIL_FACE_FRONT_AND_BACK,	"VK_STENCIL_FACE_FRONT_AND_BACK"),
1233	};
1234	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1235}
1236
1237const char* getStencilOpName (VkStencilOp value)
1238{
1239	switch (value)
1240	{
1241		case VK_STENCIL_OP_KEEP:				return "VK_STENCIL_OP_KEEP";
1242		case VK_STENCIL_OP_ZERO:				return "VK_STENCIL_OP_ZERO";
1243		case VK_STENCIL_OP_REPLACE:				return "VK_STENCIL_OP_REPLACE";
1244		case VK_STENCIL_OP_INCREMENT_AND_CLAMP:	return "VK_STENCIL_OP_INCREMENT_AND_CLAMP";
1245		case VK_STENCIL_OP_DECREMENT_AND_CLAMP:	return "VK_STENCIL_OP_DECREMENT_AND_CLAMP";
1246		case VK_STENCIL_OP_INVERT:				return "VK_STENCIL_OP_INVERT";
1247		case VK_STENCIL_OP_INCREMENT_AND_WRAP:	return "VK_STENCIL_OP_INCREMENT_AND_WRAP";
1248		case VK_STENCIL_OP_DECREMENT_AND_WRAP:	return "VK_STENCIL_OP_DECREMENT_AND_WRAP";
1249		default:								return DE_NULL;
1250	}
1251}
1252
1253const char* getStructureTypeName (VkStructureType value)
1254{
1255	switch (value)
1256	{
1257		case VK_STRUCTURE_TYPE_APPLICATION_INFO:												return "VK_STRUCTURE_TYPE_APPLICATION_INFO";
1258		case VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO:											return "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO";
1259		case VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO:										return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO";
1260		case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO:												return "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO";
1261		case VK_STRUCTURE_TYPE_SUBMIT_INFO:														return "VK_STRUCTURE_TYPE_SUBMIT_INFO";
1262		case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO:											return "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO";
1263		case VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE:												return "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE";
1264		case VK_STRUCTURE_TYPE_BIND_SPARSE_INFO:												return "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO";
1265		case VK_STRUCTURE_TYPE_FENCE_CREATE_INFO:												return "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO";
1266		case VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO:											return "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO";
1267		case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO:												return "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO";
1268		case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO:											return "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO";
1269		case VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO:												return "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO";
1270		case VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO:											return "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO";
1271		case VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO:												return "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO";
1272		case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO:											return "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO";
1273		case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO:										return "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO";
1274		case VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO:										return "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO";
1275		case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO:								return "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO";
1276		case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO:							return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO";
1277		case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO:						return "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO";
1278		case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO:							return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO";
1279		case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO:								return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO";
1280		case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO:						return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO";
1281		case VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO:							return "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO";
1282		case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO:						return "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO";
1283		case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO:							return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO";
1284		case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO:								return "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO";
1285		case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO";
1286		case VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO";
1287		case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO:										return "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO";
1288		case VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO:												return "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO";
1289		case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO:								return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO";
1290		case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO:										return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO";
1291		case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO:									return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO";
1292		case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET:											return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET";
1293		case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET:												return "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET";
1294		case VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO:											return "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO";
1295		case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO:											return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO";
1296		case VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO:										return "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO";
1297		case VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO:									return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO";
1298		case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO:									return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO";
1299		case VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO:										return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO";
1300		case VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO:											return "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO";
1301		case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER:											return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER";
1302		case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER:											return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER";
1303		case VK_STRUCTURE_TYPE_MEMORY_BARRIER:													return "VK_STRUCTURE_TYPE_MEMORY_BARRIER";
1304		case VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO:										return "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO";
1305		case VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO:										return "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO";
1306		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES";
1307		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES";
1308		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES";
1309		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES";
1310		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES";
1311		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES";
1312		case VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR:										return "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR";
1313		case VK_STRUCTURE_TYPE_PRESENT_INFO_KHR:												return "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR";
1314		case VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR:									return "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR";
1315		case VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR:									return "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR";
1316		case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR:										return "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR";
1317		case VK_STRUCTURE_TYPE_RENDERING_INFO:													return "VK_STRUCTURE_TYPE_RENDERING_INFO";
1318		case VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO:										return "VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO";
1319		case VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO:									return "VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO";
1320		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES";
1321		case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO:						return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO";
1322		case VK_STRUCTURE_TYPE_PRIVATE_VENDOR_INFO_RESERVED_OFFSET_0_NV:						return "VK_STRUCTURE_TYPE_PRIVATE_VENDOR_INFO_RESERVED_OFFSET_0_NV";
1323		case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO:								return "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO";
1324		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES";
1325		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES";
1326		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2:										return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2";
1327		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2:									return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2";
1328		case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2:												return "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2";
1329		case VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2:										return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2";
1330		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2";
1331		case VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2:										return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2";
1332		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2";
1333		case VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2:								return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2";
1334		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2";
1335		case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO:										return "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO";
1336		case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO:								return "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO";
1337		case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO:							return "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO";
1338		case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO:										return "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO";
1339		case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO:									return "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO";
1340		case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR:							return "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR";
1341		case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR:									return "VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR";
1342		case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR:							return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR";
1343		case VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR:										return "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR";
1344		case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR:									return "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR";
1345		case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR:							return "VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR";
1346		case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:							return "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO";
1347		case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO:								return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO";
1348		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES";
1349		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT:		return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT";
1350		case VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT:									return "VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT";
1351		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT";
1352		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES";
1353		case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO";
1354		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO";
1355		case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES:								return "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES";
1356		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO";
1357		case VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES:										return "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES";
1358		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES:									return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES";
1359		case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO:								return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO";
1360		case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO:								return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO";
1361		case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO:										return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO";
1362		case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR:										return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR";
1363		case VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR:										return "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR";
1364		case VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR:											return "VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR";
1365		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO";
1366		case VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES:									return "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES";
1367		case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO";
1368		case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR:									return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR";
1369		case VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR:										return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR";
1370		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES";
1371		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES";
1372		case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR:												return "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR";
1373		case VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO:							return "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO";
1374		case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT:										return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT";
1375		case VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT:											return "VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT";
1376		case VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT:											return "VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT";
1377		case VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT:											return "VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT";
1378		case VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT:								return "VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT";
1379		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES";
1380		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT";
1381		case VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT:				return "VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT";
1382		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT:		return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT";
1383		case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT:		return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT";
1384		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT";
1385		case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT:			return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT";
1386		case VK_STRUCTURE_TYPE_HDR_METADATA_EXT:												return "VK_STRUCTURE_TYPE_HDR_METADATA_EXT";
1387		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES";
1388		case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO:								return "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO";
1389		case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO:								return "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO";
1390		case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO:								return "VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO";
1391		case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2:										return "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2";
1392		case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2:											return "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2";
1393		case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2:											return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2";
1394		case VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2:											return "VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2";
1395		case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2:										return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2";
1396		case VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO:												return "VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO";
1397		case VK_STRUCTURE_TYPE_SUBPASS_END_INFO:												return "VK_STRUCTURE_TYPE_SUBPASS_END_INFO";
1398		case VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR:							return "VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR";
1399		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO";
1400		case VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES:										return "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES";
1401		case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO:										return "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO";
1402		case VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR:										return "VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR";
1403		case VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR:											return "VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR";
1404		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR";
1405		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR";
1406		case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR:							return "VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR";
1407		case VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR:								return "VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR";
1408		case VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR:									return "VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR";
1409		case VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR:											return "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR";
1410		case VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR:								return "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR";
1411		case VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR:							return "VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR";
1412		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES";
1413		case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO:					return "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO";
1414		case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO";
1415		case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO:			return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO";
1416		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR";
1417		case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR:										return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR";
1418		case VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR:											return "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR";
1419		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES";
1420		case VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR:										return "VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR";
1421		case VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR:									return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR";
1422		case VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR:									return "VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR";
1423		case VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR:										return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR";
1424		case VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR:								return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR";
1425		case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:									return "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS";
1426		case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO:									return "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO";
1427		case VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT:								return "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT";
1428		case VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT:									return "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT";
1429		case VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT:											return "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT";
1430		case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT:							return "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT";
1431		case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT:							return "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT";
1432		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES";
1433		case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO:								return "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO";
1434		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES";
1435		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES";
1436		case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK:						return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK";
1437		case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO:				return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO";
1438		case VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT:										return "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT";
1439		case VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT:						return "VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT";
1440		case VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT:					return "VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT";
1441		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT";
1442		case VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT:										return "VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT";
1443		case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO:											return "VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO";
1444		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES";
1445		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES";
1446		case VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2:												return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2";
1447		case VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2:								return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2";
1448		case VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2:								return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2";
1449		case VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2:							return "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2";
1450		case VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2:											return "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2";
1451		case VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2:								return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2";
1452		case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO:									return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO";
1453		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT";
1454		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT";
1455		case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT:				return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT";
1456		case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO:							return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO";
1457		case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:									return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO";
1458		case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO:									return "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO";
1459		case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO:							return "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO";
1460		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES";
1461		case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES:				return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES";
1462		case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO:											return "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO";
1463		case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO:											return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO";
1464		case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT:							return "VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT";
1465		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT";
1466		case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT:					return "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT";
1467		case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT:				return "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT";
1468		case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT:						return "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT";
1469		case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT:						return "VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT";
1470		case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO:					return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO";
1471		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES";
1472		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES";
1473		case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO:			return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO";
1474		case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT:			return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT";
1475		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES";
1476		case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT:									return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT";
1477		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT";
1478		case VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT:				return "VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT";
1479		case VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT:					return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT";
1480		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES";
1481		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES";
1482		case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT:								return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT";
1483		case VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT:								return "VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT";
1484		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT";
1485		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES";
1486		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR";
1487		case VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT:									return "VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT";
1488		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT";
1489		case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT:				return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT";
1490		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT";
1491		case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO:							return "VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO";
1492		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES";
1493		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES";
1494		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES";
1495		case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE:						return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE";
1496		case VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV:												return "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV";
1497		case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV:							return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV";
1498		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES";
1499		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES";
1500		case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO:										return "VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO";
1501		case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO:									return "VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO";
1502		case VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO:												return "VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO";
1503		case VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO:											return "VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO";
1504		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES";
1505		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT";
1506		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR:		return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR";
1507		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES";
1508		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT";
1509		case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT:	return "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT";
1510		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT";
1511		case VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR:						return "VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR";
1512		case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR:			return "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR";
1513		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR";
1514		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR";
1515		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR";
1516		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT";
1517		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT";
1518		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES";
1519		case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT:								return "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT";
1520		case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT:							return "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT";
1521		case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO:										return "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO";
1522		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES:									return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES";
1523		case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO";
1524		case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT:											return "VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT";
1525		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT";
1526		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT";
1527		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES";
1528		case VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT:								return "VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT";
1529		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES";
1530		case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO:						return "VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO";
1531		case VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO:						return "VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO";
1532		case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO:						return "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO";
1533		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT";
1534		case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT:				return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT";
1535		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT";
1536		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT";
1537		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES";
1538		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT";
1539		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT";
1540		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT:	return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT";
1541		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES";
1542		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES";
1543		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT";
1544		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT";
1545		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT";
1546		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT";
1547		case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT:						return "VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT";
1548		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT";
1549		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT";
1550		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES";
1551		case VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO:									return "VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO";
1552		case VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO:									return "VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO";
1553		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES:		return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES";
1554		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES";
1555		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES";
1556		case VK_STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO:							return "VK_STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO";
1557		case VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO:						return "VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO";
1558		case VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION:									return "VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION";
1559		case VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE:												return "VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE";
1560		case VK_STRUCTURE_TYPE_FAULT_DATA:														return "VK_STRUCTURE_TYPE_FAULT_DATA";
1561		case VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO:												return "VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO";
1562		case VK_STRUCTURE_TYPE_PIPELINE_OFFLINE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_PIPELINE_OFFLINE_CREATE_INFO";
1563		case VK_STRUCTURE_TYPE_REFRESH_OBJECT_LIST_KHR:											return "VK_STRUCTURE_TYPE_REFRESH_OBJECT_LIST_KHR";
1564		case VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR:											return "VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR";
1565		case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR:										return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR";
1566		case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR:										return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR";
1567		case VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR:												return "VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR";
1568		case VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR:												return "VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR";
1569		case VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR:										return "VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR";
1570		case VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR:									return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR";
1571		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR";
1572		case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV:							return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV";
1573		case VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV:											return "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV";
1574		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES:		return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES";
1575		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT";
1576		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT";
1577		case VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR:											return "VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR";
1578		case VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR:											return "VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR";
1579		case VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR:									return "VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR";
1580		case VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR:									return "VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR";
1581		case VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR:											return "VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR";
1582		case VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR:										return "VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR";
1583		case VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR:												return "VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR";
1584		case VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR:												return "VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR";
1585		case VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR:												return "VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR";
1586		case VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR:											return "VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR";
1587		case VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR:												return "VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR";
1588		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT";
1589		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT";
1590		case VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT:							return "VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT";
1591		case VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT:						return "VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT";
1592		case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR:											return "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR";
1593		case VK_STRUCTURE_TYPE_IMPORT_FENCE_SCI_SYNC_INFO_NV:									return "VK_STRUCTURE_TYPE_IMPORT_FENCE_SCI_SYNC_INFO_NV";
1594		case VK_STRUCTURE_TYPE_EXPORT_FENCE_SCI_SYNC_INFO_NV:									return "VK_STRUCTURE_TYPE_EXPORT_FENCE_SCI_SYNC_INFO_NV";
1595		case VK_STRUCTURE_TYPE_FENCE_GET_SCI_SYNC_INFO_NV:										return "VK_STRUCTURE_TYPE_FENCE_GET_SCI_SYNC_INFO_NV";
1596		case VK_STRUCTURE_TYPE_SCI_SYNC_ATTRIBUTES_INFO_NV:										return "VK_STRUCTURE_TYPE_SCI_SYNC_ATTRIBUTES_INFO_NV";
1597		case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_SCI_SYNC_INFO_NV:								return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_SCI_SYNC_INFO_NV";
1598		case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_SCI_SYNC_INFO_NV:								return "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_SCI_SYNC_INFO_NV";
1599		case VK_STRUCTURE_TYPE_SEMAPHORE_GET_SCI_SYNC_INFO_NV:									return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_SCI_SYNC_INFO_NV";
1600		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_FEATURES_NV:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_FEATURES_NV";
1601		case VK_STRUCTURE_TYPE_IMPORT_MEMORY_SCI_BUF_INFO_NV:									return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_SCI_BUF_INFO_NV";
1602		case VK_STRUCTURE_TYPE_EXPORT_MEMORY_SCI_BUF_INFO_NV:									return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_SCI_BUF_INFO_NV";
1603		case VK_STRUCTURE_TYPE_MEMORY_GET_SCI_BUF_INFO_NV:										return "VK_STRUCTURE_TYPE_MEMORY_GET_SCI_BUF_INFO_NV";
1604		case VK_STRUCTURE_TYPE_MEMORY_SCI_BUF_PROPERTIES_NV:									return "VK_STRUCTURE_TYPE_MEMORY_SCI_BUF_PROPERTIES_NV";
1605		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCI_BUF_FEATURES_NV";
1606		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT";
1607		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT";
1608		case VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT:							return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT";
1609		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES";
1610		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES";
1611		case VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS:								return "VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS";
1612		case VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS:								return "VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS";
1613		case VK_STRUCTURE_TYPE_APPLICATION_PARAMETERS_EXT:										return "VK_STRUCTURE_TYPE_APPLICATION_PARAMETERS_EXT";
1614		case VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_POOL_CREATE_INFO_NV:							return "VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_POOL_CREATE_INFO_NV";
1615		case VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_CREATE_INFO_NV:								return "VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_CREATE_INFO_NV";
1616		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SCI_SYNC_2_FEATURES_NV";
1617		case VK_STRUCTURE_TYPE_DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV:		return "VK_STRUCTURE_TYPE_DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV";
1618		case VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX:									return "VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX";
1619		case VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX:								return "VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX";
1620		case VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX:									return "VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX";
1621		case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX:												return "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX";
1622		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX:		return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX";
1623		default:																				return DE_NULL;
1624	}
1625}
1626
1627const char* getSystemAllocationScopeName (VkSystemAllocationScope value)
1628{
1629	switch (value)
1630	{
1631		case VK_SYSTEM_ALLOCATION_SCOPE_COMMAND:	return "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND";
1632		case VK_SYSTEM_ALLOCATION_SCOPE_OBJECT:		return "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT";
1633		case VK_SYSTEM_ALLOCATION_SCOPE_CACHE:		return "VK_SYSTEM_ALLOCATION_SCOPE_CACHE";
1634		case VK_SYSTEM_ALLOCATION_SCOPE_DEVICE:		return "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE";
1635		case VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE:	return "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE";
1636		default:									return DE_NULL;
1637	}
1638}
1639
1640const char* getInternalAllocationTypeName (VkInternalAllocationType value)
1641{
1642	switch (value)
1643	{
1644		case VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE:	return "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE";
1645		default:										return DE_NULL;
1646	}
1647}
1648
1649const char* getSamplerAddressModeName (VkSamplerAddressMode value)
1650{
1651	switch (value)
1652	{
1653		case VK_SAMPLER_ADDRESS_MODE_REPEAT:				return "VK_SAMPLER_ADDRESS_MODE_REPEAT";
1654		case VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT:		return "VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT";
1655		case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE:			return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE";
1656		case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER:		return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER";
1657		case VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE:	return "VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE";
1658		default:											return DE_NULL;
1659	}
1660}
1661
1662const char* getFilterName (VkFilter value)
1663{
1664	switch (value)
1665	{
1666		case VK_FILTER_NEAREST:		return "VK_FILTER_NEAREST";
1667		case VK_FILTER_LINEAR:		return "VK_FILTER_LINEAR";
1668		case VK_FILTER_CUBIC_EXT:	return "VK_FILTER_CUBIC_EXT";
1669		default:					return DE_NULL;
1670	}
1671}
1672
1673const char* getSamplerMipmapModeName (VkSamplerMipmapMode value)
1674{
1675	switch (value)
1676	{
1677		case VK_SAMPLER_MIPMAP_MODE_NEAREST:	return "VK_SAMPLER_MIPMAP_MODE_NEAREST";
1678		case VK_SAMPLER_MIPMAP_MODE_LINEAR:		return "VK_SAMPLER_MIPMAP_MODE_LINEAR";
1679		default:								return DE_NULL;
1680	}
1681}
1682
1683const char* getVertexInputRateName (VkVertexInputRate value)
1684{
1685	switch (value)
1686	{
1687		case VK_VERTEX_INPUT_RATE_VERTEX:	return "VK_VERTEX_INPUT_RATE_VERTEX";
1688		case VK_VERTEX_INPUT_RATE_INSTANCE:	return "VK_VERTEX_INPUT_RATE_INSTANCE";
1689		default:							return DE_NULL;
1690	}
1691}
1692
1693tcu::Format::Bitfield<32> getPipelineStageFlagsStr (VkPipelineStageFlags value)
1694{
1695	static const tcu::Format::BitDesc s_desc[] =
1696	{
1697		tcu::Format::BitDesc(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,								"VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"),
1698		tcu::Format::BitDesc(VK_PIPELINE_STAGE_NONE_KHR,									"VK_PIPELINE_STAGE_NONE_KHR"),
1699		tcu::Format::BitDesc(VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,							"VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"),
1700		tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,							"VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"),
1701		tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,							"VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"),
1702		tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,				"VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"),
1703		tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,			"VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"),
1704		tcu::Format::BitDesc(VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,							"VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"),
1705		tcu::Format::BitDesc(VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,							"VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"),
1706		tcu::Format::BitDesc(VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,					"VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"),
1707		tcu::Format::BitDesc(VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,						"VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"),
1708		tcu::Format::BitDesc(VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,					"VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"),
1709		tcu::Format::BitDesc(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,							"VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"),
1710		tcu::Format::BitDesc(VK_PIPELINE_STAGE_TRANSFER_BIT,								"VK_PIPELINE_STAGE_TRANSFER_BIT"),
1711		tcu::Format::BitDesc(VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,							"VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT"),
1712		tcu::Format::BitDesc(VK_PIPELINE_STAGE_HOST_BIT,									"VK_PIPELINE_STAGE_HOST_BIT"),
1713		tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,							"VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"),
1714		tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,							"VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"),
1715		tcu::Format::BitDesc(VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,	"VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"),
1716	};
1717	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1718}
1719
1720tcu::Format::Bitfield<32> getSparseImageFormatFlagsStr (VkSparseImageFormatFlags value)
1721{
1722	static const tcu::Format::BitDesc s_desc[] =
1723	{
1724		tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,			"VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT"),
1725		tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,		"VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT"),
1726		tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT,	"VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT"),
1727	};
1728	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1729}
1730
1731tcu::Format::Bitfield<32> getSampleCountFlagsStr (VkSampleCountFlags value)
1732{
1733	static const tcu::Format::BitDesc s_desc[] =
1734	{
1735		tcu::Format::BitDesc(VK_SAMPLE_COUNT_1_BIT,		"VK_SAMPLE_COUNT_1_BIT"),
1736		tcu::Format::BitDesc(VK_SAMPLE_COUNT_2_BIT,		"VK_SAMPLE_COUNT_2_BIT"),
1737		tcu::Format::BitDesc(VK_SAMPLE_COUNT_4_BIT,		"VK_SAMPLE_COUNT_4_BIT"),
1738		tcu::Format::BitDesc(VK_SAMPLE_COUNT_8_BIT,		"VK_SAMPLE_COUNT_8_BIT"),
1739		tcu::Format::BitDesc(VK_SAMPLE_COUNT_16_BIT,	"VK_SAMPLE_COUNT_16_BIT"),
1740		tcu::Format::BitDesc(VK_SAMPLE_COUNT_32_BIT,	"VK_SAMPLE_COUNT_32_BIT"),
1741		tcu::Format::BitDesc(VK_SAMPLE_COUNT_64_BIT,	"VK_SAMPLE_COUNT_64_BIT"),
1742	};
1743	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1744}
1745
1746tcu::Format::Bitfield<32> getAttachmentDescriptionFlagsStr (VkAttachmentDescriptionFlags value)
1747{
1748	static const tcu::Format::BitDesc s_desc[] =
1749	{
1750		tcu::Format::BitDesc(VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT,	"VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"),
1751	};
1752	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1753}
1754
1755tcu::Format::Bitfield<32> getDescriptorPoolCreateFlagsStr (VkDescriptorPoolCreateFlags value)
1756{
1757	static const tcu::Format::BitDesc s_desc[] =
1758	{
1759		tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT,	"VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"),
1760		tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT,	"VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT"),
1761	};
1762	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1763}
1764
1765tcu::Format::Bitfield<32> getDependencyFlagsStr (VkDependencyFlags value)
1766{
1767	static const tcu::Format::BitDesc s_desc[] =
1768	{
1769		tcu::Format::BitDesc(VK_DEPENDENCY_BY_REGION_BIT,		"VK_DEPENDENCY_BY_REGION_BIT"),
1770		tcu::Format::BitDesc(VK_DEPENDENCY_VIEW_LOCAL_BIT,		"VK_DEPENDENCY_VIEW_LOCAL_BIT"),
1771		tcu::Format::BitDesc(VK_DEPENDENCY_DEVICE_GROUP_BIT,	"VK_DEPENDENCY_DEVICE_GROUP_BIT"),
1772	};
1773	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1774}
1775
1776const char* getObjectTypeName (VkObjectType value)
1777{
1778	switch (value)
1779	{
1780		case VK_OBJECT_TYPE_UNKNOWN:					return "VK_OBJECT_TYPE_UNKNOWN";
1781		case VK_OBJECT_TYPE_INSTANCE:					return "VK_OBJECT_TYPE_INSTANCE";
1782		case VK_OBJECT_TYPE_PHYSICAL_DEVICE:			return "VK_OBJECT_TYPE_PHYSICAL_DEVICE";
1783		case VK_OBJECT_TYPE_DEVICE:						return "VK_OBJECT_TYPE_DEVICE";
1784		case VK_OBJECT_TYPE_QUEUE:						return "VK_OBJECT_TYPE_QUEUE";
1785		case VK_OBJECT_TYPE_SEMAPHORE:					return "VK_OBJECT_TYPE_SEMAPHORE";
1786		case VK_OBJECT_TYPE_COMMAND_BUFFER:				return "VK_OBJECT_TYPE_COMMAND_BUFFER";
1787		case VK_OBJECT_TYPE_FENCE:						return "VK_OBJECT_TYPE_FENCE";
1788		case VK_OBJECT_TYPE_DEVICE_MEMORY:				return "VK_OBJECT_TYPE_DEVICE_MEMORY";
1789		case VK_OBJECT_TYPE_BUFFER:						return "VK_OBJECT_TYPE_BUFFER";
1790		case VK_OBJECT_TYPE_IMAGE:						return "VK_OBJECT_TYPE_IMAGE";
1791		case VK_OBJECT_TYPE_EVENT:						return "VK_OBJECT_TYPE_EVENT";
1792		case VK_OBJECT_TYPE_QUERY_POOL:					return "VK_OBJECT_TYPE_QUERY_POOL";
1793		case VK_OBJECT_TYPE_BUFFER_VIEW:				return "VK_OBJECT_TYPE_BUFFER_VIEW";
1794		case VK_OBJECT_TYPE_IMAGE_VIEW:					return "VK_OBJECT_TYPE_IMAGE_VIEW";
1795		case VK_OBJECT_TYPE_SHADER_MODULE:				return "VK_OBJECT_TYPE_SHADER_MODULE";
1796		case VK_OBJECT_TYPE_PIPELINE_CACHE:				return "VK_OBJECT_TYPE_PIPELINE_CACHE";
1797		case VK_OBJECT_TYPE_PIPELINE_LAYOUT:			return "VK_OBJECT_TYPE_PIPELINE_LAYOUT";
1798		case VK_OBJECT_TYPE_RENDER_PASS:				return "VK_OBJECT_TYPE_RENDER_PASS";
1799		case VK_OBJECT_TYPE_PIPELINE:					return "VK_OBJECT_TYPE_PIPELINE";
1800		case VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT:		return "VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT";
1801		case VK_OBJECT_TYPE_SAMPLER:					return "VK_OBJECT_TYPE_SAMPLER";
1802		case VK_OBJECT_TYPE_DESCRIPTOR_POOL:			return "VK_OBJECT_TYPE_DESCRIPTOR_POOL";
1803		case VK_OBJECT_TYPE_DESCRIPTOR_SET:				return "VK_OBJECT_TYPE_DESCRIPTOR_SET";
1804		case VK_OBJECT_TYPE_FRAMEBUFFER:				return "VK_OBJECT_TYPE_FRAMEBUFFER";
1805		case VK_OBJECT_TYPE_COMMAND_POOL:				return "VK_OBJECT_TYPE_COMMAND_POOL";
1806		case VK_OBJECT_TYPE_SURFACE_KHR:				return "VK_OBJECT_TYPE_SURFACE_KHR";
1807		case VK_OBJECT_TYPE_SWAPCHAIN_KHR:				return "VK_OBJECT_TYPE_SWAPCHAIN_KHR";
1808		case VK_OBJECT_TYPE_DISPLAY_KHR:				return "VK_OBJECT_TYPE_DISPLAY_KHR";
1809		case VK_OBJECT_TYPE_DISPLAY_MODE_KHR:			return "VK_OBJECT_TYPE_DISPLAY_MODE_KHR";
1810		case VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE:	return "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE";
1811		case VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT:	return "VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT";
1812		case VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION:	return "VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION";
1813		case VK_OBJECT_TYPE_PRIVATE_DATA_SLOT:			return "VK_OBJECT_TYPE_PRIVATE_DATA_SLOT";
1814		case VK_OBJECT_TYPE_SEMAPHORE_SCI_SYNC_POOL_NV:	return "VK_OBJECT_TYPE_SEMAPHORE_SCI_SYNC_POOL_NV";
1815		default:										return DE_NULL;
1816	}
1817}
1818
1819tcu::Format::Bitfield<32> getEventCreateFlagsStr (VkEventCreateFlags value)
1820{
1821	static const tcu::Format::BitDesc s_desc[] =
1822	{
1823		tcu::Format::BitDesc(VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR,	"VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR"),
1824	};
1825	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1826}
1827
1828const char* getDescriptorUpdateTemplateTypeName (VkDescriptorUpdateTemplateType value)
1829{
1830	switch (value)
1831	{
1832		case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET:	return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET";
1833		default:												return DE_NULL;
1834	}
1835}
1836
1837const char* getDiscardRectangleModeEXTName (VkDiscardRectangleModeEXT value)
1838{
1839	switch (value)
1840	{
1841		case VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT:	return "VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT";
1842		case VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT:	return "VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT";
1843		default:										return DE_NULL;
1844	}
1845}
1846
1847tcu::Format::Bitfield<32> getSubpassDescriptionFlagsStr (VkSubpassDescriptionFlags value)
1848{
1849	static const tcu::Format::BitDesc s_desc[] =
1850	{
1851		tcu::Format::BitDesc(0, "0")
1852	};
1853	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1854}
1855
1856const char* getPointClippingBehaviorName (VkPointClippingBehavior value)
1857{
1858	switch (value)
1859	{
1860		case VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES:		return "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES";
1861		case VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY:	return "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY";
1862		default:												return DE_NULL;
1863	}
1864}
1865
1866const char* getQueueGlobalPriorityKHRName (VkQueueGlobalPriorityKHR value)
1867{
1868	switch (value)
1869	{
1870		case VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR:		return "VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR";
1871		case VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR:	return "VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR";
1872		case VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR:		return "VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR";
1873		case VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR:	return "VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR";
1874		default:									return DE_NULL;
1875	}
1876}
1877
1878const char* getTimeDomainEXTName (VkTimeDomainEXT value)
1879{
1880	switch (value)
1881	{
1882		case VK_TIME_DOMAIN_DEVICE_EXT:						return "VK_TIME_DOMAIN_DEVICE_EXT";
1883		case VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT:			return "VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT";
1884		case VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT:		return "VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT";
1885		case VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT:	return "VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT";
1886		default:											return DE_NULL;
1887	}
1888}
1889
1890const char* getConservativeRasterizationModeEXTName (VkConservativeRasterizationModeEXT value)
1891{
1892	switch (value)
1893	{
1894		case VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT:		return "VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT";
1895		case VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT:	return "VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT";
1896		case VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT:	return "VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT";
1897		default:													return DE_NULL;
1898	}
1899}
1900
1901tcu::Format::Bitfield<32> getResolveModeFlagsStr (VkResolveModeFlags value)
1902{
1903	static const tcu::Format::BitDesc s_desc[] =
1904	{
1905		tcu::Format::BitDesc(VK_RESOLVE_MODE_NONE,				"VK_RESOLVE_MODE_NONE"),
1906		tcu::Format::BitDesc(VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,	"VK_RESOLVE_MODE_SAMPLE_ZERO_BIT"),
1907		tcu::Format::BitDesc(VK_RESOLVE_MODE_AVERAGE_BIT,		"VK_RESOLVE_MODE_AVERAGE_BIT"),
1908		tcu::Format::BitDesc(VK_RESOLVE_MODE_MIN_BIT,			"VK_RESOLVE_MODE_MIN_BIT"),
1909		tcu::Format::BitDesc(VK_RESOLVE_MODE_MAX_BIT,			"VK_RESOLVE_MODE_MAX_BIT"),
1910	};
1911	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1912}
1913
1914tcu::Format::Bitfield<32> getDescriptorBindingFlagsStr (VkDescriptorBindingFlags value)
1915{
1916	static const tcu::Format::BitDesc s_desc[] =
1917	{
1918		tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT,			"VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT"),
1919		tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT,	"VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT"),
1920		tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT,				"VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT"),
1921		tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT,	"VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT"),
1922	};
1923	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1924}
1925
1926const char* getSemaphoreTypeName (VkSemaphoreType value)
1927{
1928	switch (value)
1929	{
1930		case VK_SEMAPHORE_TYPE_BINARY:		return "VK_SEMAPHORE_TYPE_BINARY";
1931		case VK_SEMAPHORE_TYPE_TIMELINE:	return "VK_SEMAPHORE_TYPE_TIMELINE";
1932		default:							return DE_NULL;
1933	}
1934}
1935
1936tcu::Format::Bitfield<32> getPipelineCreationFeedbackFlagsStr (VkPipelineCreationFeedbackFlags value)
1937{
1938	static const tcu::Format::BitDesc s_desc[] =
1939	{
1940		tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT,							"VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT"),
1941		tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT,	"VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT"),
1942		tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT,		"VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT"),
1943	};
1944	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1945}
1946
1947const char* getPerformanceCounterScopeKHRName (VkPerformanceCounterScopeKHR value)
1948{
1949	switch (value)
1950	{
1951		case VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR:	return "VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR";
1952		case VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR:		return "VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR";
1953		case VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR:			return "VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR";
1954		default:												return DE_NULL;
1955	}
1956}
1957
1958const char* getPerformanceCounterUnitKHRName (VkPerformanceCounterUnitKHR value)
1959{
1960	switch (value)
1961	{
1962		case VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR:			return "VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR";
1963		case VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR:		return "VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR";
1964		case VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR:		return "VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR";
1965		case VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR:				return "VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR";
1966		case VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR:	return "VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR";
1967		case VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR:			return "VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR";
1968		case VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR:				return "VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR";
1969		case VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR:				return "VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR";
1970		case VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR:				return "VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR";
1971		case VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR:				return "VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR";
1972		case VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR:			return "VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR";
1973		default:												return DE_NULL;
1974	}
1975}
1976
1977const char* getPerformanceCounterStorageKHRName (VkPerformanceCounterStorageKHR value)
1978{
1979	switch (value)
1980	{
1981		case VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR:		return "VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR";
1982		case VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR:		return "VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR";
1983		case VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR:		return "VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR";
1984		case VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR:		return "VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR";
1985		case VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR:	return "VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR";
1986		case VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR:	return "VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR";
1987		default:											return DE_NULL;
1988	}
1989}
1990
1991tcu::Format::Bitfield<32> getPerformanceCounterDescriptionFlagsKHRStr (VkPerformanceCounterDescriptionFlagsKHR value)
1992{
1993	static const tcu::Format::BitDesc s_desc[] =
1994	{
1995		tcu::Format::BitDesc(VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR,	"VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR"),
1996		tcu::Format::BitDesc(VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR,	"VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR"),
1997	};
1998	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1999}
2000
2001tcu::Format::Bitfield<32> getAcquireProfilingLockFlagsKHRStr (VkAcquireProfilingLockFlagsKHR value)
2002{
2003	static const tcu::Format::BitDesc s_desc[] =
2004	{
2005		tcu::Format::BitDesc(0, "0")
2006	};
2007	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2008}
2009
2010tcu::Format::Bitfield<32> getSemaphoreWaitFlagsStr (VkSemaphoreWaitFlags value)
2011{
2012	static const tcu::Format::BitDesc s_desc[] =
2013	{
2014		tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_ANY_BIT,	"VK_SEMAPHORE_WAIT_ANY_BIT"),
2015	};
2016	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2017}
2018
2019const char* getLineRasterizationModeEXTName (VkLineRasterizationModeEXT value)
2020{
2021	switch (value)
2022	{
2023		case VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT:			return "VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT";
2024		case VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT:		return "VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT";
2025		case VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT:			return "VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT";
2026		case VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT:	return "VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT";
2027		default:												return DE_NULL;
2028	}
2029}
2030
2031tcu::Format::Bitfield<32> getRefreshObjectFlagsKHRStr (VkRefreshObjectFlagsKHR value)
2032{
2033	static const tcu::Format::BitDesc s_desc[] =
2034	{
2035		tcu::Format::BitDesc(0, "0")
2036	};
2037	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2038}
2039
2040const char* getFaultLevelName (VkFaultLevel value)
2041{
2042	switch (value)
2043	{
2044		case VK_FAULT_LEVEL_UNASSIGNED:		return "VK_FAULT_LEVEL_UNASSIGNED";
2045		case VK_FAULT_LEVEL_CRITICAL:		return "VK_FAULT_LEVEL_CRITICAL";
2046		case VK_FAULT_LEVEL_RECOVERABLE:	return "VK_FAULT_LEVEL_RECOVERABLE";
2047		case VK_FAULT_LEVEL_WARNING:		return "VK_FAULT_LEVEL_WARNING";
2048		default:							return DE_NULL;
2049	}
2050}
2051
2052const char* getFaultTypeName (VkFaultType value)
2053{
2054	switch (value)
2055	{
2056		case VK_FAULT_TYPE_INVALID:				return "VK_FAULT_TYPE_INVALID";
2057		case VK_FAULT_TYPE_UNASSIGNED:			return "VK_FAULT_TYPE_UNASSIGNED";
2058		case VK_FAULT_TYPE_IMPLEMENTATION:		return "VK_FAULT_TYPE_IMPLEMENTATION";
2059		case VK_FAULT_TYPE_SYSTEM:				return "VK_FAULT_TYPE_SYSTEM";
2060		case VK_FAULT_TYPE_PHYSICAL_DEVICE:		return "VK_FAULT_TYPE_PHYSICAL_DEVICE";
2061		case VK_FAULT_TYPE_COMMAND_BUFFER_FULL:	return "VK_FAULT_TYPE_COMMAND_BUFFER_FULL";
2062		case VK_FAULT_TYPE_INVALID_API_USAGE:	return "VK_FAULT_TYPE_INVALID_API_USAGE";
2063		default:								return DE_NULL;
2064	}
2065}
2066
2067const char* getFaultQueryBehaviorName (VkFaultQueryBehavior value)
2068{
2069	switch (value)
2070	{
2071		case VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS:	return "VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS";
2072		default:												return DE_NULL;
2073	}
2074}
2075
2076const char* getPipelineMatchControlName (VkPipelineMatchControl value)
2077{
2078	switch (value)
2079	{
2080		case VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH:	return "VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH";
2081		default:														return DE_NULL;
2082	}
2083}
2084
2085const char* getSciSyncClientTypeNVName (VkSciSyncClientTypeNV value)
2086{
2087	switch (value)
2088	{
2089		case VK_SCI_SYNC_CLIENT_TYPE_SIGNALER_NV:			return "VK_SCI_SYNC_CLIENT_TYPE_SIGNALER_NV";
2090		case VK_SCI_SYNC_CLIENT_TYPE_WAITER_NV:				return "VK_SCI_SYNC_CLIENT_TYPE_WAITER_NV";
2091		case VK_SCI_SYNC_CLIENT_TYPE_SIGNALER_WAITER_NV:	return "VK_SCI_SYNC_CLIENT_TYPE_SIGNALER_WAITER_NV";
2092		default:											return DE_NULL;
2093	}
2094}
2095
2096const char* getSciSyncPrimitiveTypeNVName (VkSciSyncPrimitiveTypeNV value)
2097{
2098	switch (value)
2099	{
2100		case VK_SCI_SYNC_PRIMITIVE_TYPE_FENCE_NV:		return "VK_SCI_SYNC_PRIMITIVE_TYPE_FENCE_NV";
2101		case VK_SCI_SYNC_PRIMITIVE_TYPE_SEMAPHORE_NV:	return "VK_SCI_SYNC_PRIMITIVE_TYPE_SEMAPHORE_NV";
2102		default:										return DE_NULL;
2103	}
2104}
2105
2106tcu::Format::Bitfield<32> getToolPurposeFlagsStr (VkToolPurposeFlags value)
2107{
2108	static const tcu::Format::BitDesc s_desc[] =
2109	{
2110		tcu::Format::BitDesc(VK_TOOL_PURPOSE_VALIDATION_BIT,			"VK_TOOL_PURPOSE_VALIDATION_BIT"),
2111		tcu::Format::BitDesc(VK_TOOL_PURPOSE_PROFILING_BIT,				"VK_TOOL_PURPOSE_PROFILING_BIT"),
2112		tcu::Format::BitDesc(VK_TOOL_PURPOSE_TRACING_BIT,				"VK_TOOL_PURPOSE_TRACING_BIT"),
2113		tcu::Format::BitDesc(VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT,	"VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT"),
2114		tcu::Format::BitDesc(VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT,	"VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT"),
2115	};
2116	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2117}
2118
2119tcu::Format::Bitfield<64> getAccessFlags2Str (VkAccessFlags2 value)
2120{
2121	static const tcu::Format::BitDesc s_desc[] =
2122	{
2123		tcu::Format::BitDesc(VK_ACCESS_2_NONE,											"VK_ACCESS_2_NONE"),
2124		tcu::Format::BitDesc(VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT,						"VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT"),
2125		tcu::Format::BitDesc(VK_ACCESS_2_INDEX_READ_BIT,								"VK_ACCESS_2_INDEX_READ_BIT"),
2126		tcu::Format::BitDesc(VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT,						"VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT"),
2127		tcu::Format::BitDesc(VK_ACCESS_2_UNIFORM_READ_BIT,								"VK_ACCESS_2_UNIFORM_READ_BIT"),
2128		tcu::Format::BitDesc(VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT,						"VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT"),
2129		tcu::Format::BitDesc(VK_ACCESS_2_SHADER_READ_BIT,								"VK_ACCESS_2_SHADER_READ_BIT"),
2130		tcu::Format::BitDesc(VK_ACCESS_2_SHADER_WRITE_BIT,								"VK_ACCESS_2_SHADER_WRITE_BIT"),
2131		tcu::Format::BitDesc(VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT,						"VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT"),
2132		tcu::Format::BitDesc(VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT,					"VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT"),
2133		tcu::Format::BitDesc(VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT,				"VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT"),
2134		tcu::Format::BitDesc(VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,			"VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"),
2135		tcu::Format::BitDesc(VK_ACCESS_2_TRANSFER_READ_BIT,								"VK_ACCESS_2_TRANSFER_READ_BIT"),
2136		tcu::Format::BitDesc(VK_ACCESS_2_TRANSFER_WRITE_BIT,							"VK_ACCESS_2_TRANSFER_WRITE_BIT"),
2137		tcu::Format::BitDesc(VK_ACCESS_2_HOST_READ_BIT,									"VK_ACCESS_2_HOST_READ_BIT"),
2138		tcu::Format::BitDesc(VK_ACCESS_2_HOST_WRITE_BIT,								"VK_ACCESS_2_HOST_WRITE_BIT"),
2139		tcu::Format::BitDesc(VK_ACCESS_2_MEMORY_READ_BIT,								"VK_ACCESS_2_MEMORY_READ_BIT"),
2140		tcu::Format::BitDesc(VK_ACCESS_2_MEMORY_WRITE_BIT,								"VK_ACCESS_2_MEMORY_WRITE_BIT"),
2141		tcu::Format::BitDesc(VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT,		"VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"),
2142		tcu::Format::BitDesc(VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR,	"VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"),
2143		tcu::Format::BitDesc(VK_ACCESS_2_SHADER_SAMPLED_READ_BIT,						"VK_ACCESS_2_SHADER_SAMPLED_READ_BIT"),
2144		tcu::Format::BitDesc(VK_ACCESS_2_SHADER_STORAGE_READ_BIT,						"VK_ACCESS_2_SHADER_STORAGE_READ_BIT"),
2145		tcu::Format::BitDesc(VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT,						"VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT"),
2146	};
2147	return tcu::Format::Bitfield<64>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2148}
2149
2150tcu::Format::Bitfield<64> getPipelineStageFlags2Str (VkPipelineStageFlags2 value)
2151{
2152	static const tcu::Format::BitDesc s_desc[] =
2153	{
2154		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_NONE,										"VK_PIPELINE_STAGE_2_NONE"),
2155		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT,							"VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT"),
2156		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT,							"VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT"),
2157		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT,							"VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT"),
2158		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT,							"VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT"),
2159		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT,			"VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT"),
2160		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT,		"VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT"),
2161		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT,						"VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT"),
2162		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT,						"VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT"),
2163		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT,					"VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT"),
2164		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT,					"VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT"),
2165		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT,				"VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT"),
2166		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT,						"VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT"),
2167		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT,							"VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT"),
2168		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT,						"VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT"),
2169		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_HOST_BIT,									"VK_PIPELINE_STAGE_2_HOST_BIT"),
2170		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT,							"VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT"),
2171		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT,							"VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT"),
2172		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,	"VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"),
2173		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_COPY_BIT,									"VK_PIPELINE_STAGE_2_COPY_BIT"),
2174		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_RESOLVE_BIT,								"VK_PIPELINE_STAGE_2_RESOLVE_BIT"),
2175		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_BLIT_BIT,									"VK_PIPELINE_STAGE_2_BLIT_BIT"),
2176		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_CLEAR_BIT,									"VK_PIPELINE_STAGE_2_CLEAR_BIT"),
2177		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT,							"VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT"),
2178		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT,				"VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT"),
2179		tcu::Format::BitDesc(VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT,				"VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT"),
2180	};
2181	return tcu::Format::Bitfield<64>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2182}
2183
2184const char* getPipelineCacheValidationVersionName (VkPipelineCacheValidationVersion value)
2185{
2186	switch (value)
2187	{
2188		case VK_PIPELINE_CACHE_VALIDATION_VERSION_SAFETY_CRITICAL_ONE:	return "VK_PIPELINE_CACHE_VALIDATION_VERSION_SAFETY_CRITICAL_ONE";
2189		default:														return DE_NULL;
2190	}
2191}
2192
2193tcu::Format::Bitfield<64> getFormatFeatureFlags2Str (VkFormatFeatureFlags2 value)
2194{
2195	static const tcu::Format::BitDesc s_desc[] =
2196	{
2197		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT,																"VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT"),
2198		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT,																"VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT"),
2199		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT,														"VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT"),
2200		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT,														"VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT"),
2201		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT,														"VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT"),
2202		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,												"VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"),
2203		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT,																"VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT"),
2204		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT,															"VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT"),
2205		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT,													"VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT"),
2206		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT,													"VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT"),
2207		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_BLIT_SRC_BIT,																	"VK_FORMAT_FEATURE_2_BLIT_SRC_BIT"),
2208		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_BLIT_DST_BIT,																	"VK_FORMAT_FEATURE_2_BLIT_DST_BIT"),
2209		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT,												"VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT"),
2210		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT,												"VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT"),
2211		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT,																"VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT"),
2212		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT,																"VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT"),
2213		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT,												"VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT"),
2214		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT,													"VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT"),
2215		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,								"VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"),
2216		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,				"VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"),
2217		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,				"VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"),
2218		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,	"VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"),
2219		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_DISJOINT_BIT,																	"VK_FORMAT_FEATURE_2_DISJOINT_BIT"),
2220		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT,													"VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT"),
2221		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,										"VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"),
2222		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT,												"VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT"),
2223		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT,												"VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT"),
2224		tcu::Format::BitDesc(VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT,											"VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT"),
2225	};
2226	return tcu::Format::Bitfield<64>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2227}
2228
2229tcu::Format::Bitfield<32> getRenderingFlagsStr (VkRenderingFlags value)
2230{
2231	static const tcu::Format::BitDesc s_desc[] =
2232	{
2233		tcu::Format::BitDesc(VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT,	"VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT"),
2234		tcu::Format::BitDesc(VK_RENDERING_SUSPENDING_BIT,							"VK_RENDERING_SUSPENDING_BIT"),
2235		tcu::Format::BitDesc(VK_RENDERING_RESUMING_BIT,								"VK_RENDERING_RESUMING_BIT"),
2236	};
2237	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2238}
2239
2240const char* getColorSpaceKHRName (VkColorSpaceKHR value)
2241{
2242	switch (value)
2243	{
2244		case VK_COLOR_SPACE_SRGB_NONLINEAR_KHR:				return "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR";
2245		case VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT:		return "VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT";
2246		case VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT:		return "VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT";
2247		case VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT:			return "VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT";
2248		case VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT:			return "VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT";
2249		case VK_COLOR_SPACE_BT709_LINEAR_EXT:				return "VK_COLOR_SPACE_BT709_LINEAR_EXT";
2250		case VK_COLOR_SPACE_BT709_NONLINEAR_EXT:			return "VK_COLOR_SPACE_BT709_NONLINEAR_EXT";
2251		case VK_COLOR_SPACE_BT2020_LINEAR_EXT:				return "VK_COLOR_SPACE_BT2020_LINEAR_EXT";
2252		case VK_COLOR_SPACE_HDR10_ST2084_EXT:				return "VK_COLOR_SPACE_HDR10_ST2084_EXT";
2253		case VK_COLOR_SPACE_DOLBYVISION_EXT:				return "VK_COLOR_SPACE_DOLBYVISION_EXT";
2254		case VK_COLOR_SPACE_HDR10_HLG_EXT:					return "VK_COLOR_SPACE_HDR10_HLG_EXT";
2255		case VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT:			return "VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT";
2256		case VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT:			return "VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT";
2257		case VK_COLOR_SPACE_PASS_THROUGH_EXT:				return "VK_COLOR_SPACE_PASS_THROUGH_EXT";
2258		case VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT:	return "VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT";
2259		default:											return DE_NULL;
2260	}
2261}
2262
2263tcu::Format::Bitfield<32> getCompositeAlphaFlagsKHRStr (VkCompositeAlphaFlagsKHR value)
2264{
2265	static const tcu::Format::BitDesc s_desc[] =
2266	{
2267		tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,				"VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"),
2268		tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,		"VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"),
2269		tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,	"VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"),
2270		tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR,			"VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"),
2271	};
2272	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2273}
2274
2275tcu::Format::Bitfield<32> getDisplayPlaneAlphaFlagsKHRStr (VkDisplayPlaneAlphaFlagsKHR value)
2276{
2277	static const tcu::Format::BitDesc s_desc[] =
2278	{
2279		tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,						"VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"),
2280		tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,						"VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"),
2281		tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,					"VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"),
2282		tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR,	"VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"),
2283	};
2284	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2285}
2286
2287const char* getPresentModeKHRName (VkPresentModeKHR value)
2288{
2289	switch (value)
2290	{
2291		case VK_PRESENT_MODE_IMMEDIATE_KHR:					return "VK_PRESENT_MODE_IMMEDIATE_KHR";
2292		case VK_PRESENT_MODE_MAILBOX_KHR:					return "VK_PRESENT_MODE_MAILBOX_KHR";
2293		case VK_PRESENT_MODE_FIFO_KHR:						return "VK_PRESENT_MODE_FIFO_KHR";
2294		case VK_PRESENT_MODE_FIFO_RELAXED_KHR:				return "VK_PRESENT_MODE_FIFO_RELAXED_KHR";
2295		case VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR:		return "VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR";
2296		case VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR:	return "VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR";
2297		default:											return DE_NULL;
2298	}
2299}
2300
2301tcu::Format::Bitfield<32> getSurfaceTransformFlagsKHRStr (VkSurfaceTransformFlagsKHR value)
2302{
2303	static const tcu::Format::BitDesc s_desc[] =
2304	{
2305		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,						"VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR"),
2306		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,					"VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"),
2307		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,					"VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"),
2308		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,					"VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"),
2309		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,			"VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"),
2310		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,	"VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"),
2311		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,	"VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"),
2312		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,	"VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"),
2313		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR,						"VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"),
2314	};
2315	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2316}
2317
2318const char* getValidationFeatureEnableEXTName (VkValidationFeatureEnableEXT value)
2319{
2320	switch (value)
2321	{
2322		case VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT:							return "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT";
2323		case VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT:	return "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT";
2324		case VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT:						return "VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT";
2325		case VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT:							return "VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT";
2326		case VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT:			return "VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT";
2327		default:																	return DE_NULL;
2328	}
2329}
2330
2331const char* getValidationFeatureDisableEXTName (VkValidationFeatureDisableEXT value)
2332{
2333	switch (value)
2334	{
2335		case VK_VALIDATION_FEATURE_DISABLE_ALL_EXT:						return "VK_VALIDATION_FEATURE_DISABLE_ALL_EXT";
2336		case VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT:					return "VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT";
2337		case VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT:			return "VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT";
2338		case VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT:			return "VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT";
2339		case VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT:		return "VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT";
2340		case VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT:				return "VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT";
2341		case VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT:			return "VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT";
2342		case VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT:	return "VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT";
2343		default:														return DE_NULL;
2344	}
2345}
2346
2347tcu::Format::Bitfield<32> getExternalMemoryHandleTypeFlagsStr (VkExternalMemoryHandleTypeFlags value)
2348{
2349	static const tcu::Format::BitDesc s_desc[] =
2350	{
2351		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,						"VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"),
2352		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,					"VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
2353		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,				"VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
2354		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,					"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"),
2355		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,				"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"),
2356		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT,						"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"),
2357		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT,					"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"),
2358		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT,			"VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT"),
2359		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"),
2360		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT,					"VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT"),
2361		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCI_BUF_BIT_NV,						"VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCI_BUF_BIT_NV"),
2362		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX,				"VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX"),
2363	};
2364	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2365}
2366
2367tcu::Format::Bitfield<32> getExternalMemoryFeatureFlagsStr (VkExternalMemoryFeatureFlags value)
2368{
2369	static const tcu::Format::BitDesc s_desc[] =
2370	{
2371		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT,	"VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"),
2372		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT,		"VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"),
2373		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT,		"VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"),
2374	};
2375	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2376}
2377
2378tcu::Format::Bitfield<32> getExternalSemaphoreHandleTypeFlagsStr (VkExternalSemaphoreHandleTypeFlags value)
2379{
2380	static const tcu::Format::BitDesc s_desc[] =
2381	{
2382		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,			"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"),
2383		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT,		"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
2384		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,	"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
2385		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,			"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"),
2386		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT,				"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"),
2387		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV,		"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV"),
2388	};
2389	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2390}
2391
2392tcu::Format::Bitfield<32> getExternalSemaphoreFeatureFlagsStr (VkExternalSemaphoreFeatureFlags value)
2393{
2394	static const tcu::Format::BitDesc s_desc[] =
2395	{
2396		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT,	"VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"),
2397		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT,	"VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"),
2398	};
2399	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2400}
2401
2402tcu::Format::Bitfield<32> getSemaphoreImportFlagsStr (VkSemaphoreImportFlags value)
2403{
2404	static const tcu::Format::BitDesc s_desc[] =
2405	{
2406		tcu::Format::BitDesc(VK_SEMAPHORE_IMPORT_TEMPORARY_BIT,	"VK_SEMAPHORE_IMPORT_TEMPORARY_BIT"),
2407	};
2408	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2409}
2410
2411tcu::Format::Bitfield<32> getExternalFenceHandleTypeFlagsStr (VkExternalFenceHandleTypeFlags value)
2412{
2413	static const tcu::Format::BitDesc s_desc[] =
2414	{
2415		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,			"VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"),
2416		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT,		"VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
2417		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,	"VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
2418		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT,				"VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"),
2419		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV,		"VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV"),
2420		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_FENCE_BIT_NV,	"VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_FENCE_BIT_NV"),
2421	};
2422	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2423}
2424
2425tcu::Format::Bitfield<32> getExternalFenceFeatureFlagsStr (VkExternalFenceFeatureFlags value)
2426{
2427	static const tcu::Format::BitDesc s_desc[] =
2428	{
2429		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT,	"VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"),
2430		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT,	"VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"),
2431	};
2432	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2433}
2434
2435tcu::Format::Bitfield<32> getFenceImportFlagsStr (VkFenceImportFlags value)
2436{
2437	static const tcu::Format::BitDesc s_desc[] =
2438	{
2439		tcu::Format::BitDesc(VK_FENCE_IMPORT_TEMPORARY_BIT,	"VK_FENCE_IMPORT_TEMPORARY_BIT"),
2440	};
2441	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2442}
2443
2444tcu::Format::Bitfield<32> getSurfaceCounterFlagsEXTStr (VkSurfaceCounterFlagsEXT value)
2445{
2446	static const tcu::Format::BitDesc s_desc[] =
2447	{
2448		tcu::Format::BitDesc(VK_SURFACE_COUNTER_VBLANK_BIT_EXT,	"VK_SURFACE_COUNTER_VBLANK_BIT_EXT"),
2449	};
2450	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2451}
2452
2453const char* getDisplayPowerStateEXTName (VkDisplayPowerStateEXT value)
2454{
2455	switch (value)
2456	{
2457		case VK_DISPLAY_POWER_STATE_OFF_EXT:		return "VK_DISPLAY_POWER_STATE_OFF_EXT";
2458		case VK_DISPLAY_POWER_STATE_SUSPEND_EXT:	return "VK_DISPLAY_POWER_STATE_SUSPEND_EXT";
2459		case VK_DISPLAY_POWER_STATE_ON_EXT:			return "VK_DISPLAY_POWER_STATE_ON_EXT";
2460		default:									return DE_NULL;
2461	}
2462}
2463
2464const char* getDeviceEventTypeEXTName (VkDeviceEventTypeEXT value)
2465{
2466	switch (value)
2467	{
2468		case VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT:	return "VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT";
2469		default:										return DE_NULL;
2470	}
2471}
2472
2473const char* getDisplayEventTypeEXTName (VkDisplayEventTypeEXT value)
2474{
2475	switch (value)
2476	{
2477		case VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT:	return "VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT";
2478		default:										return DE_NULL;
2479	}
2480}
2481
2482tcu::Format::Bitfield<32> getPeerMemoryFeatureFlagsStr (VkPeerMemoryFeatureFlags value)
2483{
2484	static const tcu::Format::BitDesc s_desc[] =
2485	{
2486		tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT,		"VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT"),
2487		tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_COPY_DST_BIT,		"VK_PEER_MEMORY_FEATURE_COPY_DST_BIT"),
2488		tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT,	"VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT"),
2489		tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT,	"VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT"),
2490	};
2491	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2492}
2493
2494tcu::Format::Bitfield<32> getMemoryAllocateFlagsStr (VkMemoryAllocateFlags value)
2495{
2496	static const tcu::Format::BitDesc s_desc[] =
2497	{
2498		tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,					"VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"),
2499		tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT,					"VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT"),
2500		tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,	"VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"),
2501	};
2502	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2503}
2504
2505tcu::Format::Bitfield<32> getDeviceGroupPresentModeFlagsKHRStr (VkDeviceGroupPresentModeFlagsKHR value)
2506{
2507	static const tcu::Format::BitDesc s_desc[] =
2508	{
2509		tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR,				"VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR"),
2510		tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR,				"VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR"),
2511		tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR,					"VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR"),
2512		tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR,	"VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR"),
2513	};
2514	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2515}
2516
2517tcu::Format::Bitfield<32> getSwapchainCreateFlagsKHRStr (VkSwapchainCreateFlagsKHR value)
2518{
2519	static const tcu::Format::BitDesc s_desc[] =
2520	{
2521		tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR,	"VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR"),
2522		tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR,						"VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR"),
2523		tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR,				"VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR"),
2524	};
2525	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2526}
2527
2528tcu::Format::Bitfield<32> getSubgroupFeatureFlagsStr (VkSubgroupFeatureFlags value)
2529{
2530	static const tcu::Format::BitDesc s_desc[] =
2531	{
2532		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_BASIC_BIT,				"VK_SUBGROUP_FEATURE_BASIC_BIT"),
2533		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_VOTE_BIT,				"VK_SUBGROUP_FEATURE_VOTE_BIT"),
2534		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_ARITHMETIC_BIT,		"VK_SUBGROUP_FEATURE_ARITHMETIC_BIT"),
2535		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_BALLOT_BIT,			"VK_SUBGROUP_FEATURE_BALLOT_BIT"),
2536		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_SHUFFLE_BIT,			"VK_SUBGROUP_FEATURE_SHUFFLE_BIT"),
2537		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT,	"VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"),
2538		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_CLUSTERED_BIT,			"VK_SUBGROUP_FEATURE_CLUSTERED_BIT"),
2539		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_QUAD_BIT,				"VK_SUBGROUP_FEATURE_QUAD_BIT"),
2540	};
2541	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2542}
2543
2544const char* getTessellationDomainOriginName (VkTessellationDomainOrigin value)
2545{
2546	switch (value)
2547	{
2548		case VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT:	return "VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT";
2549		case VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT:	return "VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT";
2550		default:										return DE_NULL;
2551	}
2552}
2553
2554const char* getSamplerYcbcrModelConversionName (VkSamplerYcbcrModelConversion value)
2555{
2556	switch (value)
2557	{
2558		case VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY:	return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY";
2559		case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY:	return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY";
2560		case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709:		return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709";
2561		case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601:		return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601";
2562		case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020:		return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020";
2563		default:												return DE_NULL;
2564	}
2565}
2566
2567const char* getSamplerYcbcrRangeName (VkSamplerYcbcrRange value)
2568{
2569	switch (value)
2570	{
2571		case VK_SAMPLER_YCBCR_RANGE_ITU_FULL:	return "VK_SAMPLER_YCBCR_RANGE_ITU_FULL";
2572		case VK_SAMPLER_YCBCR_RANGE_ITU_NARROW:	return "VK_SAMPLER_YCBCR_RANGE_ITU_NARROW";
2573		default:								return DE_NULL;
2574	}
2575}
2576
2577const char* getChromaLocationName (VkChromaLocation value)
2578{
2579	switch (value)
2580	{
2581		case VK_CHROMA_LOCATION_COSITED_EVEN:	return "VK_CHROMA_LOCATION_COSITED_EVEN";
2582		case VK_CHROMA_LOCATION_MIDPOINT:		return "VK_CHROMA_LOCATION_MIDPOINT";
2583		default:								return DE_NULL;
2584	}
2585}
2586
2587const char* getSamplerReductionModeName (VkSamplerReductionMode value)
2588{
2589	switch (value)
2590	{
2591		case VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE:	return "VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE";
2592		case VK_SAMPLER_REDUCTION_MODE_MIN:					return "VK_SAMPLER_REDUCTION_MODE_MIN";
2593		case VK_SAMPLER_REDUCTION_MODE_MAX:					return "VK_SAMPLER_REDUCTION_MODE_MAX";
2594		default:											return DE_NULL;
2595	}
2596}
2597
2598const char* getBlendOverlapEXTName (VkBlendOverlapEXT value)
2599{
2600	switch (value)
2601	{
2602		case VK_BLEND_OVERLAP_UNCORRELATED_EXT:	return "VK_BLEND_OVERLAP_UNCORRELATED_EXT";
2603		case VK_BLEND_OVERLAP_DISJOINT_EXT:		return "VK_BLEND_OVERLAP_DISJOINT_EXT";
2604		case VK_BLEND_OVERLAP_CONJOINT_EXT:		return "VK_BLEND_OVERLAP_CONJOINT_EXT";
2605		default:								return DE_NULL;
2606	}
2607}
2608
2609tcu::Format::Bitfield<32> getDebugUtilsMessageSeverityFlagsEXTStr (VkDebugUtilsMessageSeverityFlagsEXT value)
2610{
2611	static const tcu::Format::BitDesc s_desc[] =
2612	{
2613		tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT,	"VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT"),
2614		tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT,		"VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT"),
2615		tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT,	"VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT"),
2616		tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT,		"VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT"),
2617	};
2618	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2619}
2620
2621tcu::Format::Bitfield<32> getDebugUtilsMessageTypeFlagsEXTStr (VkDebugUtilsMessageTypeFlagsEXT value)
2622{
2623	static const tcu::Format::BitDesc s_desc[] =
2624	{
2625		tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT,		"VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT"),
2626		tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT,	"VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT"),
2627		tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT,	"VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT"),
2628	};
2629	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2630}
2631
2632const char* getShaderFloatControlsIndependenceName (VkShaderFloatControlsIndependence value)
2633{
2634	switch (value)
2635	{
2636		case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY:	return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY";
2637		case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL:			return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL";
2638		case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE:		return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE";
2639		default:												return DE_NULL;
2640	}
2641}
2642
2643const char* getFragmentShadingRateCombinerOpKHRName (VkFragmentShadingRateCombinerOpKHR value)
2644{
2645	switch (value)
2646	{
2647		case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR:		return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR";
2648		case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR:	return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR";
2649		case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR:		return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR";
2650		case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR:		return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR";
2651		case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR:		return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR";
2652		default:												return DE_NULL;
2653	}
2654}
2655
2656tcu::Format::Bitfield<32> getSubmitFlagsStr (VkSubmitFlags value)
2657{
2658	static const tcu::Format::BitDesc s_desc[] =
2659	{
2660		tcu::Format::BitDesc(VK_SUBMIT_PROTECTED_BIT,	"VK_SUBMIT_PROTECTED_BIT"),
2661	};
2662	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2663}
2664
2665const char* getVendorIdName (VkVendorId value)
2666{
2667	switch (value)
2668	{
2669		case VK_VENDOR_ID_VIV:		return "VK_VENDOR_ID_VIV";
2670		case VK_VENDOR_ID_VSI:		return "VK_VENDOR_ID_VSI";
2671		case VK_VENDOR_ID_KAZAN:	return "VK_VENDOR_ID_KAZAN";
2672		case VK_VENDOR_ID_CODEPLAY:	return "VK_VENDOR_ID_CODEPLAY";
2673		case VK_VENDOR_ID_MESA:		return "VK_VENDOR_ID_MESA";
2674		case VK_VENDOR_ID_POCL:		return "VK_VENDOR_ID_POCL";
2675		case VK_VENDOR_ID_MOBILEYE:	return "VK_VENDOR_ID_MOBILEYE";
2676		default:					return DE_NULL;
2677	}
2678}
2679
2680const char* getDriverIdName (VkDriverId value)
2681{
2682	switch (value)
2683	{
2684		case VK_DRIVER_ID_AMD_PROPRIETARY:				return "VK_DRIVER_ID_AMD_PROPRIETARY";
2685		case VK_DRIVER_ID_AMD_OPEN_SOURCE:				return "VK_DRIVER_ID_AMD_OPEN_SOURCE";
2686		case VK_DRIVER_ID_MESA_RADV:					return "VK_DRIVER_ID_MESA_RADV";
2687		case VK_DRIVER_ID_NVIDIA_PROPRIETARY:			return "VK_DRIVER_ID_NVIDIA_PROPRIETARY";
2688		case VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS:	return "VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS";
2689		case VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA:		return "VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA";
2690		case VK_DRIVER_ID_IMAGINATION_PROPRIETARY:		return "VK_DRIVER_ID_IMAGINATION_PROPRIETARY";
2691		case VK_DRIVER_ID_QUALCOMM_PROPRIETARY:			return "VK_DRIVER_ID_QUALCOMM_PROPRIETARY";
2692		case VK_DRIVER_ID_ARM_PROPRIETARY:				return "VK_DRIVER_ID_ARM_PROPRIETARY";
2693		case VK_DRIVER_ID_GOOGLE_SWIFTSHADER:			return "VK_DRIVER_ID_GOOGLE_SWIFTSHADER";
2694		case VK_DRIVER_ID_GGP_PROPRIETARY:				return "VK_DRIVER_ID_GGP_PROPRIETARY";
2695		case VK_DRIVER_ID_BROADCOM_PROPRIETARY:			return "VK_DRIVER_ID_BROADCOM_PROPRIETARY";
2696		case VK_DRIVER_ID_MESA_LLVMPIPE:				return "VK_DRIVER_ID_MESA_LLVMPIPE";
2697		case VK_DRIVER_ID_MOLTENVK:						return "VK_DRIVER_ID_MOLTENVK";
2698		case VK_DRIVER_ID_COREAVI_PROPRIETARY:			return "VK_DRIVER_ID_COREAVI_PROPRIETARY";
2699		case VK_DRIVER_ID_JUICE_PROPRIETARY:			return "VK_DRIVER_ID_JUICE_PROPRIETARY";
2700		case VK_DRIVER_ID_VERISILICON_PROPRIETARY:		return "VK_DRIVER_ID_VERISILICON_PROPRIETARY";
2701		case VK_DRIVER_ID_MESA_TURNIP:					return "VK_DRIVER_ID_MESA_TURNIP";
2702		case VK_DRIVER_ID_MESA_V3DV:					return "VK_DRIVER_ID_MESA_V3DV";
2703		case VK_DRIVER_ID_MESA_PANVK:					return "VK_DRIVER_ID_MESA_PANVK";
2704		case VK_DRIVER_ID_SAMSUNG_PROPRIETARY:			return "VK_DRIVER_ID_SAMSUNG_PROPRIETARY";
2705		case VK_DRIVER_ID_MESA_VENUS:					return "VK_DRIVER_ID_MESA_VENUS";
2706		case VK_DRIVER_ID_MESA_DOZEN:					return "VK_DRIVER_ID_MESA_DOZEN";
2707		case VK_DRIVER_ID_MESA_NVK:						return "VK_DRIVER_ID_MESA_NVK";
2708		case VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA:	return "VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA";
2709		default:										return DE_NULL;
2710	}
2711}
2712
2713tcu::Format::Bitfield<32> getQueryPoolCreateFlagsStr (VkQueryPoolCreateFlags value)
2714{
2715	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2716}
2717
2718tcu::Format::Bitfield<32> getPipelineLayoutCreateFlagsStr (VkPipelineLayoutCreateFlags value)
2719{
2720	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2721}
2722
2723tcu::Format::Bitfield<32> getPipelineDepthStencilStateCreateFlagsStr (VkPipelineDepthStencilStateCreateFlags value)
2724{
2725	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2726}
2727
2728tcu::Format::Bitfield<32> getPipelineDynamicStateCreateFlagsStr (VkPipelineDynamicStateCreateFlags value)
2729{
2730	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2731}
2732
2733tcu::Format::Bitfield<32> getPipelineColorBlendStateCreateFlagsStr (VkPipelineColorBlendStateCreateFlags value)
2734{
2735	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2736}
2737
2738tcu::Format::Bitfield<32> getPipelineMultisampleStateCreateFlagsStr (VkPipelineMultisampleStateCreateFlags value)
2739{
2740	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2741}
2742
2743tcu::Format::Bitfield<32> getPipelineRasterizationStateCreateFlagsStr (VkPipelineRasterizationStateCreateFlags value)
2744{
2745	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2746}
2747
2748tcu::Format::Bitfield<32> getPipelineViewportStateCreateFlagsStr (VkPipelineViewportStateCreateFlags value)
2749{
2750	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2751}
2752
2753tcu::Format::Bitfield<32> getPipelineTessellationStateCreateFlagsStr (VkPipelineTessellationStateCreateFlags value)
2754{
2755	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2756}
2757
2758tcu::Format::Bitfield<32> getPipelineInputAssemblyStateCreateFlagsStr (VkPipelineInputAssemblyStateCreateFlags value)
2759{
2760	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2761}
2762
2763tcu::Format::Bitfield<32> getPipelineVertexInputStateCreateFlagsStr (VkPipelineVertexInputStateCreateFlags value)
2764{
2765	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2766}
2767
2768tcu::Format::Bitfield<32> getBufferViewCreateFlagsStr (VkBufferViewCreateFlags value)
2769{
2770	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2771}
2772
2773tcu::Format::Bitfield<32> getDeviceCreateFlagsStr (VkDeviceCreateFlags value)
2774{
2775	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2776}
2777
2778tcu::Format::Bitfield<32> getSemaphoreCreateFlagsStr (VkSemaphoreCreateFlags value)
2779{
2780	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2781}
2782
2783tcu::Format::Bitfield<32> getShaderModuleCreateFlagsStr (VkShaderModuleCreateFlags value)
2784{
2785	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2786}
2787
2788tcu::Format::Bitfield<32> getMemoryMapFlagsStr (VkMemoryMapFlags value)
2789{
2790	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2791}
2792
2793tcu::Format::Bitfield<32> getMemoryUnmapFlagsKHRStr (VkMemoryUnmapFlagsKHR value)
2794{
2795	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2796}
2797
2798tcu::Format::Bitfield<32> getDescriptorPoolResetFlagsStr (VkDescriptorPoolResetFlags value)
2799{
2800	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2801}
2802
2803tcu::Format::Bitfield<32> getIndirectCommandsLayoutUsageFlagsNVStr (VkIndirectCommandsLayoutUsageFlagsNV value)
2804{
2805	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2806}
2807
2808tcu::Format::Bitfield<32> getIndirectStateFlagsNVStr (VkIndirectStateFlagsNV value)
2809{
2810	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2811}
2812
2813tcu::Format::Bitfield<32> getGeometryFlagsKHRStr (VkGeometryFlagsKHR value)
2814{
2815	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2816}
2817
2818tcu::Format::Bitfield<32> getGeometryInstanceFlagsKHRStr (VkGeometryInstanceFlagsKHR value)
2819{
2820	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2821}
2822
2823tcu::Format::Bitfield<32> getBuildAccelerationStructureFlagsKHRStr (VkBuildAccelerationStructureFlagsKHR value)
2824{
2825	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2826}
2827
2828tcu::Format::Bitfield<32> getPrivateDataSlotCreateFlagsStr (VkPrivateDataSlotCreateFlags value)
2829{
2830	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2831}
2832
2833tcu::Format::Bitfield<32> getAccelerationStructureCreateFlagsKHRStr (VkAccelerationStructureCreateFlagsKHR value)
2834{
2835	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2836}
2837
2838tcu::Format::Bitfield<32> getDescriptorUpdateTemplateCreateFlagsStr (VkDescriptorUpdateTemplateCreateFlags value)
2839{
2840	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2841}
2842
2843tcu::Format::Bitfield<32> getPipelineCompilerControlFlagsAMDStr (VkPipelineCompilerControlFlagsAMD value)
2844{
2845	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2846}
2847
2848tcu::Format::Bitfield<32> getShaderCorePropertiesFlagsAMDStr (VkShaderCorePropertiesFlagsAMD value)
2849{
2850	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2851}
2852
2853tcu::Format::Bitfield<32> getDeviceDiagnosticsConfigFlagsNVStr (VkDeviceDiagnosticsConfigFlagsNV value)
2854{
2855	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2856}
2857
2858tcu::Format::Bitfield<32> getAccelerationStructureMotionInfoFlagsNVStr (VkAccelerationStructureMotionInfoFlagsNV value)
2859{
2860	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2861}
2862
2863tcu::Format::Bitfield<32> getAccelerationStructureMotionInstanceFlagsNVStr (VkAccelerationStructureMotionInstanceFlagsNV value)
2864{
2865	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2866}
2867
2868tcu::Format::Bitfield<64> getMemoryDecompressionMethodFlagsNVStr (VkMemoryDecompressionMethodFlagsNV value)
2869{
2870	return tcu::Format::Bitfield<64>(value, DE_NULL, DE_NULL);
2871}
2872
2873tcu::Format::Bitfield<32> getBuildMicromapFlagsEXTStr (VkBuildMicromapFlagsEXT value)
2874{
2875	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2876}
2877
2878tcu::Format::Bitfield<32> getMicromapCreateFlagsEXTStr (VkMicromapCreateFlagsEXT value)
2879{
2880	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2881}
2882
2883tcu::Format::Bitfield<32> getDirectDriverLoadingFlagsLUNARGStr (VkDirectDriverLoadingFlagsLUNARG value)
2884{
2885	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2886}
2887
2888tcu::Format::Bitfield<64> getPipelineCreateFlags2KHRStr (VkPipelineCreateFlags2KHR value)
2889{
2890	return tcu::Format::Bitfield<64>(value, DE_NULL, DE_NULL);
2891}
2892
2893tcu::Format::Bitfield<64> getBufferUsageFlags2KHRStr (VkBufferUsageFlags2KHR value)
2894{
2895	return tcu::Format::Bitfield<64>(value, DE_NULL, DE_NULL);
2896}
2897
2898tcu::Format::Bitfield<32> getDisplayModeCreateFlagsKHRStr (VkDisplayModeCreateFlagsKHR value)
2899{
2900	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2901}
2902
2903tcu::Format::Bitfield<32> getDisplaySurfaceCreateFlagsKHRStr (VkDisplaySurfaceCreateFlagsKHR value)
2904{
2905	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2906}
2907
2908tcu::Format::Bitfield<32> getAndroidSurfaceCreateFlagsKHRStr (VkAndroidSurfaceCreateFlagsKHR value)
2909{
2910	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2911}
2912
2913tcu::Format::Bitfield<32> getViSurfaceCreateFlagsNNStr (VkViSurfaceCreateFlagsNN value)
2914{
2915	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2916}
2917
2918tcu::Format::Bitfield<32> getWaylandSurfaceCreateFlagsKHRStr (VkWaylandSurfaceCreateFlagsKHR value)
2919{
2920	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2921}
2922
2923tcu::Format::Bitfield<32> getWin32SurfaceCreateFlagsKHRStr (VkWin32SurfaceCreateFlagsKHR value)
2924{
2925	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2926}
2927
2928tcu::Format::Bitfield<32> getXlibSurfaceCreateFlagsKHRStr (VkXlibSurfaceCreateFlagsKHR value)
2929{
2930	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2931}
2932
2933tcu::Format::Bitfield<32> getXcbSurfaceCreateFlagsKHRStr (VkXcbSurfaceCreateFlagsKHR value)
2934{
2935	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2936}
2937
2938tcu::Format::Bitfield<32> getDirectFBSurfaceCreateFlagsEXTStr (VkDirectFBSurfaceCreateFlagsEXT value)
2939{
2940	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2941}
2942
2943tcu::Format::Bitfield<32> getIOSSurfaceCreateFlagsMVKStr (VkIOSSurfaceCreateFlagsMVK value)
2944{
2945	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2946}
2947
2948tcu::Format::Bitfield<32> getMacOSSurfaceCreateFlagsMVKStr (VkMacOSSurfaceCreateFlagsMVK value)
2949{
2950	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2951}
2952
2953tcu::Format::Bitfield<32> getMetalSurfaceCreateFlagsEXTStr (VkMetalSurfaceCreateFlagsEXT value)
2954{
2955	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2956}
2957
2958tcu::Format::Bitfield<32> getImagePipeSurfaceCreateFlagsFUCHSIAStr (VkImagePipeSurfaceCreateFlagsFUCHSIA value)
2959{
2960	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2961}
2962
2963tcu::Format::Bitfield<32> getStreamDescriptorSurfaceCreateFlagsGGPStr (VkStreamDescriptorSurfaceCreateFlagsGGP value)
2964{
2965	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2966}
2967
2968tcu::Format::Bitfield<32> getHeadlessSurfaceCreateFlagsEXTStr (VkHeadlessSurfaceCreateFlagsEXT value)
2969{
2970	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2971}
2972
2973tcu::Format::Bitfield<32> getScreenSurfaceCreateFlagsQNXStr (VkScreenSurfaceCreateFlagsQNX value)
2974{
2975	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2976}
2977
2978tcu::Format::Bitfield<32> getDebugReportFlagsEXTStr (VkDebugReportFlagsEXT value)
2979{
2980	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2981}
2982
2983tcu::Format::Bitfield<32> getCommandPoolTrimFlagsStr (VkCommandPoolTrimFlags value)
2984{
2985	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2986}
2987
2988tcu::Format::Bitfield<32> getExternalMemoryHandleTypeFlagsNVStr (VkExternalMemoryHandleTypeFlagsNV value)
2989{
2990	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2991}
2992
2993tcu::Format::Bitfield<32> getExternalMemoryFeatureFlagsNVStr (VkExternalMemoryFeatureFlagsNV value)
2994{
2995	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2996}
2997
2998tcu::Format::Bitfield<32> getPipelineViewportSwizzleStateCreateFlagsNVStr (VkPipelineViewportSwizzleStateCreateFlagsNV value)
2999{
3000	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3001}
3002
3003tcu::Format::Bitfield<32> getPipelineDiscardRectangleStateCreateFlagsEXTStr (VkPipelineDiscardRectangleStateCreateFlagsEXT value)
3004{
3005	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3006}
3007
3008tcu::Format::Bitfield<32> getPipelineCoverageToColorStateCreateFlagsNVStr (VkPipelineCoverageToColorStateCreateFlagsNV value)
3009{
3010	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3011}
3012
3013tcu::Format::Bitfield<32> getPipelineCoverageModulationStateCreateFlagsNVStr (VkPipelineCoverageModulationStateCreateFlagsNV value)
3014{
3015	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3016}
3017
3018tcu::Format::Bitfield<32> getPipelineCoverageReductionStateCreateFlagsNVStr (VkPipelineCoverageReductionStateCreateFlagsNV value)
3019{
3020	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3021}
3022
3023tcu::Format::Bitfield<32> getValidationCacheCreateFlagsEXTStr (VkValidationCacheCreateFlagsEXT value)
3024{
3025	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3026}
3027
3028tcu::Format::Bitfield<32> getDebugUtilsMessengerCreateFlagsEXTStr (VkDebugUtilsMessengerCreateFlagsEXT value)
3029{
3030	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3031}
3032
3033tcu::Format::Bitfield<32> getDebugUtilsMessengerCallbackDataFlagsEXTStr (VkDebugUtilsMessengerCallbackDataFlagsEXT value)
3034{
3035	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3036}
3037
3038tcu::Format::Bitfield<32> getDeviceMemoryReportFlagsEXTStr (VkDeviceMemoryReportFlagsEXT value)
3039{
3040	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3041}
3042
3043tcu::Format::Bitfield<32> getPipelineRasterizationConservativeStateCreateFlagsEXTStr (VkPipelineRasterizationConservativeStateCreateFlagsEXT value)
3044{
3045	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3046}
3047
3048tcu::Format::Bitfield<32> getConditionalRenderingFlagsEXTStr (VkConditionalRenderingFlagsEXT value)
3049{
3050	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3051}
3052
3053tcu::Format::Bitfield<32> getPipelineRasterizationStateStreamCreateFlagsEXTStr (VkPipelineRasterizationStateStreamCreateFlagsEXT value)
3054{
3055	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3056}
3057
3058tcu::Format::Bitfield<32> getPipelineRasterizationDepthClipStateCreateFlagsEXTStr (VkPipelineRasterizationDepthClipStateCreateFlagsEXT value)
3059{
3060	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3061}
3062
3063tcu::Format::Bitfield<32> getSwapchainImageUsageFlagsANDROIDStr (VkSwapchainImageUsageFlagsANDROID value)
3064{
3065	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3066}
3067
3068tcu::Format::Bitfield<32> getImageFormatConstraintsFlagsFUCHSIAStr (VkImageFormatConstraintsFlagsFUCHSIA value)
3069{
3070	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3071}
3072
3073tcu::Format::Bitfield<32> getHostImageCopyFlagsEXTStr (VkHostImageCopyFlagsEXT value)
3074{
3075	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3076}
3077
3078tcu::Format::Bitfield<32> getImageConstraintsInfoFlagsFUCHSIAStr (VkImageConstraintsInfoFlagsFUCHSIA value)
3079{
3080	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3081}
3082
3083tcu::Format::Bitfield<32> getGraphicsPipelineLibraryFlagsEXTStr (VkGraphicsPipelineLibraryFlagsEXT value)
3084{
3085	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3086}
3087
3088tcu::Format::Bitfield<32> getImageCompressionFlagsEXTStr (VkImageCompressionFlagsEXT value)
3089{
3090	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3091}
3092
3093tcu::Format::Bitfield<32> getImageCompressionFixedRateFlagsEXTStr (VkImageCompressionFixedRateFlagsEXT value)
3094{
3095	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3096}
3097
3098tcu::Format::Bitfield<32> getExportMetalObjectTypeFlagsEXTStr (VkExportMetalObjectTypeFlagsEXT value)
3099{
3100	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3101}
3102
3103tcu::Format::Bitfield<32> getDeviceAddressBindingFlagsEXTStr (VkDeviceAddressBindingFlagsEXT value)
3104{
3105	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3106}
3107
3108tcu::Format::Bitfield<32> getOpticalFlowGridSizeFlagsNVStr (VkOpticalFlowGridSizeFlagsNV value)
3109{
3110	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3111}
3112
3113tcu::Format::Bitfield<32> getOpticalFlowUsageFlagsNVStr (VkOpticalFlowUsageFlagsNV value)
3114{
3115	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3116}
3117
3118tcu::Format::Bitfield<32> getOpticalFlowSessionCreateFlagsNVStr (VkOpticalFlowSessionCreateFlagsNV value)
3119{
3120	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3121}
3122
3123tcu::Format::Bitfield<32> getOpticalFlowExecuteFlagsNVStr (VkOpticalFlowExecuteFlagsNV value)
3124{
3125	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3126}
3127
3128tcu::Format::Bitfield<32> getPresentScalingFlagsEXTStr (VkPresentScalingFlagsEXT value)
3129{
3130	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3131}
3132
3133tcu::Format::Bitfield<32> getPresentGravityFlagsEXTStr (VkPresentGravityFlagsEXT value)
3134{
3135	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3136}
3137
3138tcu::Format::Bitfield<32> getShaderCreateFlagsEXTStr (VkShaderCreateFlagsEXT value)
3139{
3140	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3141}
3142
3143tcu::Format::Bitfield<32> getVideoCodecOperationFlagsKHRStr (VkVideoCodecOperationFlagsKHR value)
3144{
3145	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3146}
3147
3148tcu::Format::Bitfield<32> getVideoCapabilityFlagsKHRStr (VkVideoCapabilityFlagsKHR value)
3149{
3150	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3151}
3152
3153tcu::Format::Bitfield<32> getVideoSessionCreateFlagsKHRStr (VkVideoSessionCreateFlagsKHR value)
3154{
3155	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3156}
3157
3158tcu::Format::Bitfield<32> getVideoSessionParametersCreateFlagsKHRStr (VkVideoSessionParametersCreateFlagsKHR value)
3159{
3160	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3161}
3162
3163tcu::Format::Bitfield<32> getVideoBeginCodingFlagsKHRStr (VkVideoBeginCodingFlagsKHR value)
3164{
3165	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3166}
3167
3168tcu::Format::Bitfield<32> getVideoEndCodingFlagsKHRStr (VkVideoEndCodingFlagsKHR value)
3169{
3170	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3171}
3172
3173tcu::Format::Bitfield<32> getVideoCodingControlFlagsKHRStr (VkVideoCodingControlFlagsKHR value)
3174{
3175	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3176}
3177
3178tcu::Format::Bitfield<32> getVideoDecodeUsageFlagsKHRStr (VkVideoDecodeUsageFlagsKHR value)
3179{
3180	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3181}
3182
3183tcu::Format::Bitfield<32> getVideoDecodeCapabilityFlagsKHRStr (VkVideoDecodeCapabilityFlagsKHR value)
3184{
3185	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3186}
3187
3188tcu::Format::Bitfield<32> getVideoDecodeFlagsKHRStr (VkVideoDecodeFlagsKHR value)
3189{
3190	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3191}
3192
3193tcu::Format::Bitfield<32> getVideoDecodeH264PictureLayoutFlagsKHRStr (VkVideoDecodeH264PictureLayoutFlagsKHR value)
3194{
3195	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3196}
3197
3198tcu::Format::Bitfield<32> getVideoEncodeFlagsKHRStr (VkVideoEncodeFlagsKHR value)
3199{
3200	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3201}
3202
3203tcu::Format::Bitfield<32> getVideoEncodeUsageFlagsKHRStr (VkVideoEncodeUsageFlagsKHR value)
3204{
3205	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3206}
3207
3208tcu::Format::Bitfield<32> getVideoEncodeContentFlagsKHRStr (VkVideoEncodeContentFlagsKHR value)
3209{
3210	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3211}
3212
3213tcu::Format::Bitfield<32> getVideoEncodeCapabilityFlagsKHRStr (VkVideoEncodeCapabilityFlagsKHR value)
3214{
3215	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3216}
3217
3218tcu::Format::Bitfield<32> getVideoEncodeFeedbackFlagsKHRStr (VkVideoEncodeFeedbackFlagsKHR value)
3219{
3220	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3221}
3222
3223tcu::Format::Bitfield<32> getVideoEncodeRateControlFlagsKHRStr (VkVideoEncodeRateControlFlagsKHR value)
3224{
3225	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3226}
3227
3228tcu::Format::Bitfield<32> getVideoEncodeRateControlModeFlagsKHRStr (VkVideoEncodeRateControlModeFlagsKHR value)
3229{
3230	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3231}
3232
3233tcu::Format::Bitfield<32> getVideoChromaSubsamplingFlagsKHRStr (VkVideoChromaSubsamplingFlagsKHR value)
3234{
3235	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3236}
3237
3238tcu::Format::Bitfield<32> getVideoComponentBitDepthFlagsKHRStr (VkVideoComponentBitDepthFlagsKHR value)
3239{
3240	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3241}
3242
3243tcu::Format::Bitfield<32> getVideoEncodeH264CapabilityFlagsEXTStr (VkVideoEncodeH264CapabilityFlagsEXT value)
3244{
3245	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3246}
3247
3248tcu::Format::Bitfield<32> getVideoEncodeH264StdFlagsEXTStr (VkVideoEncodeH264StdFlagsEXT value)
3249{
3250	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3251}
3252
3253tcu::Format::Bitfield<32> getVideoEncodeH264RateControlFlagsEXTStr (VkVideoEncodeH264RateControlFlagsEXT value)
3254{
3255	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3256}
3257
3258tcu::Format::Bitfield<32> getVideoEncodeH265CapabilityFlagsEXTStr (VkVideoEncodeH265CapabilityFlagsEXT value)
3259{
3260	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3261}
3262
3263tcu::Format::Bitfield<32> getVideoEncodeH265StdFlagsEXTStr (VkVideoEncodeH265StdFlagsEXT value)
3264{
3265	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3266}
3267
3268tcu::Format::Bitfield<32> getVideoEncodeH265RateControlFlagsEXTStr (VkVideoEncodeH265RateControlFlagsEXT value)
3269{
3270	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3271}
3272
3273tcu::Format::Bitfield<32> getVideoEncodeH265CtbSizeFlagsEXTStr (VkVideoEncodeH265CtbSizeFlagsEXT value)
3274{
3275	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3276}
3277
3278tcu::Format::Bitfield<32> getVideoEncodeH265TransformBlockSizeFlagsEXTStr (VkVideoEncodeH265TransformBlockSizeFlagsEXT value)
3279{
3280	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3281}
3282
3283std::ostream& operator<< (std::ostream& s, const VkBaseOutStructure& value)
3284{
3285	s << "VkBaseOutStructure = {\n";
3286	s << "\tsType = " << value.sType << '\n';
3287	s << "\tpNext = " << value.pNext << '\n';
3288	s << '}';
3289	return s;
3290}
3291
3292std::ostream& operator<< (std::ostream& s, const VkBaseInStructure& value)
3293{
3294	s << "VkBaseInStructure = {\n";
3295	s << "\tsType = " << value.sType << '\n';
3296	s << "\tpNext = " << value.pNext << '\n';
3297	s << '}';
3298	return s;
3299}
3300
3301std::ostream& operator<< (std::ostream& s, const VkOffset2D& value)
3302{
3303	s << "VkOffset2D = {\n";
3304	s << "\tx = " << value.x << '\n';
3305	s << "\ty = " << value.y << '\n';
3306	s << '}';
3307	return s;
3308}
3309
3310std::ostream& operator<< (std::ostream& s, const VkOffset3D& value)
3311{
3312	s << "VkOffset3D = {\n";
3313	s << "\tx = " << value.x << '\n';
3314	s << "\ty = " << value.y << '\n';
3315	s << "\tz = " << value.z << '\n';
3316	s << '}';
3317	return s;
3318}
3319
3320std::ostream& operator<< (std::ostream& s, const VkExtent2D& value)
3321{
3322	s << "VkExtent2D = {\n";
3323	s << "\twidth = " << value.width << '\n';
3324	s << "\theight = " << value.height << '\n';
3325	s << '}';
3326	return s;
3327}
3328
3329std::ostream& operator<< (std::ostream& s, const VkExtent3D& value)
3330{
3331	s << "VkExtent3D = {\n";
3332	s << "\twidth = " << value.width << '\n';
3333	s << "\theight = " << value.height << '\n';
3334	s << "\tdepth = " << value.depth << '\n';
3335	s << '}';
3336	return s;
3337}
3338
3339std::ostream& operator<< (std::ostream& s, const VkViewport& value)
3340{
3341	s << "VkViewport = {\n";
3342	s << "\tx = " << value.x << '\n';
3343	s << "\ty = " << value.y << '\n';
3344	s << "\twidth = " << value.width << '\n';
3345	s << "\theight = " << value.height << '\n';
3346	s << "\tminDepth = " << value.minDepth << '\n';
3347	s << "\tmaxDepth = " << value.maxDepth << '\n';
3348	s << '}';
3349	return s;
3350}
3351
3352std::ostream& operator<< (std::ostream& s, const VkRect2D& value)
3353{
3354	s << "VkRect2D = {\n";
3355	s << "\toffset = " << value.offset << '\n';
3356	s << "\textent = " << value.extent << '\n';
3357	s << '}';
3358	return s;
3359}
3360
3361std::ostream& operator<< (std::ostream& s, const VkClearRect& value)
3362{
3363	s << "VkClearRect = {\n";
3364	s << "\trect = " << value.rect << '\n';
3365	s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
3366	s << "\tlayerCount = " << value.layerCount << '\n';
3367	s << '}';
3368	return s;
3369}
3370
3371std::ostream& operator<< (std::ostream& s, const VkComponentMapping& value)
3372{
3373	s << "VkComponentMapping = {\n";
3374	s << "\tr = " << value.r << '\n';
3375	s << "\tg = " << value.g << '\n';
3376	s << "\tb = " << value.b << '\n';
3377	s << "\ta = " << value.a << '\n';
3378	s << '}';
3379	return s;
3380}
3381
3382std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProperties& value)
3383{
3384	s << "VkPhysicalDeviceProperties = {\n";
3385	s << "\tapiVersion = " << value.apiVersion << '\n';
3386	s << "\tdriverVersion = " << value.driverVersion << '\n';
3387	s << "\tvendorID = " << value.vendorID << '\n';
3388	s << "\tdeviceID = " << value.deviceID << '\n';
3389	s << "\tdeviceType = " << value.deviceType << '\n';
3390	s << "\tdeviceName = " << (const char*)value.deviceName << '\n';
3391	s << "\tpipelineCacheUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.pipelineCacheUUID)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.pipelineCacheUUID))) << '\n';
3392	s << "\tlimits = " << value.limits << '\n';
3393	s << "\tsparseProperties = " << value.sparseProperties << '\n';
3394	s << '}';
3395	return s;
3396}
3397
3398std::ostream& operator<< (std::ostream& s, const VkExtensionProperties& value)
3399{
3400	s << "VkExtensionProperties = {\n";
3401	s << "\textensionName = " << (const char*)value.extensionName << '\n';
3402	s << "\tspecVersion = " << value.specVersion << '\n';
3403	s << '}';
3404	return s;
3405}
3406
3407std::ostream& operator<< (std::ostream& s, const VkLayerProperties& value)
3408{
3409	s << "VkLayerProperties = {\n";
3410	s << "\tlayerName = " << (const char*)value.layerName << '\n';
3411	s << "\tspecVersion = " << value.specVersion << '\n';
3412	s << "\timplementationVersion = " << value.implementationVersion << '\n';
3413	s << "\tdescription = " << (const char*)value.description << '\n';
3414	s << '}';
3415	return s;
3416}
3417
3418std::ostream& operator<< (std::ostream& s, const VkApplicationInfo& value)
3419{
3420	s << "VkApplicationInfo = {\n";
3421	s << "\tsType = " << value.sType << '\n';
3422	s << "\tpNext = " << value.pNext << '\n';
3423	s << "\tpApplicationName = " << getCharPtrStr(value.pApplicationName) << '\n';
3424	s << "\tapplicationVersion = " << value.applicationVersion << '\n';
3425	s << "\tpEngineName = " << getCharPtrStr(value.pEngineName) << '\n';
3426	s << "\tengineVersion = " << value.engineVersion << '\n';
3427	s << "\tapiVersion = " << value.apiVersion << '\n';
3428	s << '}';
3429	return s;
3430}
3431
3432std::ostream& operator<< (std::ostream& s, const VkAllocationCallbacks& value)
3433{
3434	s << "VkAllocationCallbacks = {\n";
3435	s << "\tpUserData = " << value.pUserData << '\n';
3436	s << "\tpfnAllocation = " << value.pfnAllocation << '\n';
3437	s << "\tpfnReallocation = " << value.pfnReallocation << '\n';
3438	s << "\tpfnFree = " << value.pfnFree << '\n';
3439	s << "\tpfnInternalAllocation = " << value.pfnInternalAllocation << '\n';
3440	s << "\tpfnInternalFree = " << value.pfnInternalFree << '\n';
3441	s << '}';
3442	return s;
3443}
3444
3445std::ostream& operator<< (std::ostream& s, const VkDeviceQueueCreateInfo& value)
3446{
3447	s << "VkDeviceQueueCreateInfo = {\n";
3448	s << "\tsType = " << value.sType << '\n';
3449	s << "\tpNext = " << value.pNext << '\n';
3450	s << "\tflags = " << getDeviceQueueCreateFlagsStr(value.flags) << '\n';
3451	s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
3452	s << "\tqueueCount = " << value.queueCount << '\n';
3453	s << "\tpQueuePriorities = " << value.pQueuePriorities << '\n';
3454	s << '}';
3455	return s;
3456}
3457
3458std::ostream& operator<< (std::ostream& s, const VkDeviceCreateInfo& value)
3459{
3460	s << "VkDeviceCreateInfo = {\n";
3461	s << "\tsType = " << value.sType << '\n';
3462	s << "\tpNext = " << value.pNext << '\n';
3463	s << "\tflags = " << getDeviceCreateFlagsStr(value.flags) << '\n';
3464	s << "\tqueueCreateInfoCount = " << value.queueCreateInfoCount << '\n';
3465	s << "\tpQueueCreateInfos = " << value.pQueueCreateInfos << '\n';
3466	s << "\tenabledLayerCount = " << value.enabledLayerCount << '\n';
3467	s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
3468	s << "\tenabledExtensionCount = " << value.enabledExtensionCount << '\n';
3469	s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
3470	s << "\tpEnabledFeatures = " << value.pEnabledFeatures << '\n';
3471	s << '}';
3472	return s;
3473}
3474
3475std::ostream& operator<< (std::ostream& s, const VkInstanceCreateInfo& value)
3476{
3477	s << "VkInstanceCreateInfo = {\n";
3478	s << "\tsType = " << value.sType << '\n';
3479	s << "\tpNext = " << value.pNext << '\n';
3480	s << "\tflags = " << getInstanceCreateFlagsStr(value.flags) << '\n';
3481	s << "\tpApplicationInfo = " << value.pApplicationInfo << '\n';
3482	s << "\tenabledLayerCount = " << value.enabledLayerCount << '\n';
3483	s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
3484	s << "\tenabledExtensionCount = " << value.enabledExtensionCount << '\n';
3485	s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
3486	s << '}';
3487	return s;
3488}
3489
3490std::ostream& operator<< (std::ostream& s, const VkQueueFamilyProperties& value)
3491{
3492	s << "VkQueueFamilyProperties = {\n";
3493	s << "\tqueueFlags = " << getQueueFlagsStr(value.queueFlags) << '\n';
3494	s << "\tqueueCount = " << value.queueCount << '\n';
3495	s << "\ttimestampValidBits = " << value.timestampValidBits << '\n';
3496	s << "\tminImageTransferGranularity = " << value.minImageTransferGranularity << '\n';
3497	s << '}';
3498	return s;
3499}
3500
3501std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties& value)
3502{
3503	s << "VkPhysicalDeviceMemoryProperties = {\n";
3504	s << "\tmemoryTypeCount = " << value.memoryTypeCount << '\n';
3505	s << "\tmemoryTypes = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryTypes), DE_ARRAY_BEGIN(value.memoryTypes) + value.memoryTypeCount) << '\n';
3506	s << "\tmemoryHeapCount = " << value.memoryHeapCount << '\n';
3507	s << "\tmemoryHeaps = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryHeaps), DE_ARRAY_BEGIN(value.memoryHeaps) + value.memoryHeapCount) << '\n';
3508	s << '}';
3509	return s;
3510}
3511
3512std::ostream& operator<< (std::ostream& s, const VkMemoryAllocateInfo& value)
3513{
3514	s << "VkMemoryAllocateInfo = {\n";
3515	s << "\tsType = " << value.sType << '\n';
3516	s << "\tpNext = " << value.pNext << '\n';
3517	s << "\tallocationSize = " << value.allocationSize << '\n';
3518	s << "\tmemoryTypeIndex = " << value.memoryTypeIndex << '\n';
3519	s << '}';
3520	return s;
3521}
3522
3523std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements& value)
3524{
3525	s << "VkMemoryRequirements = {\n";
3526	s << "\tsize = " << value.size << '\n';
3527	s << "\talignment = " << value.alignment << '\n';
3528	s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
3529	s << '}';
3530	return s;
3531}
3532
3533std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties& value)
3534{
3535	s << "VkSparseImageFormatProperties = {\n";
3536	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
3537	s << "\timageGranularity = " << value.imageGranularity << '\n';
3538	s << "\tflags = " << getSparseImageFormatFlagsStr(value.flags) << '\n';
3539	s << '}';
3540	return s;
3541}
3542
3543std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements& value)
3544{
3545	s << "VkSparseImageMemoryRequirements = {\n";
3546	s << "\tformatProperties = " << value.formatProperties << '\n';
3547	s << "\timageMipTailFirstLod = " << value.imageMipTailFirstLod << '\n';
3548	s << "\timageMipTailSize = " << value.imageMipTailSize << '\n';
3549	s << "\timageMipTailOffset = " << value.imageMipTailOffset << '\n';
3550	s << "\timageMipTailStride = " << value.imageMipTailStride << '\n';
3551	s << '}';
3552	return s;
3553}
3554
3555std::ostream& operator<< (std::ostream& s, const VkMemoryType& value)
3556{
3557	s << "VkMemoryType = {\n";
3558	s << "\tpropertyFlags = " << getMemoryPropertyFlagsStr(value.propertyFlags) << '\n';
3559	s << "\theapIndex = " << value.heapIndex << '\n';
3560	s << '}';
3561	return s;
3562}
3563
3564std::ostream& operator<< (std::ostream& s, const VkMemoryHeap& value)
3565{
3566	s << "VkMemoryHeap = {\n";
3567	s << "\tsize = " << value.size << '\n';
3568	s << "\tflags = " << getMemoryHeapFlagsStr(value.flags) << '\n';
3569	s << '}';
3570	return s;
3571}
3572
3573std::ostream& operator<< (std::ostream& s, const VkMappedMemoryRange& value)
3574{
3575	s << "VkMappedMemoryRange = {\n";
3576	s << "\tsType = " << value.sType << '\n';
3577	s << "\tpNext = " << value.pNext << '\n';
3578	s << "\tmemory = " << value.memory << '\n';
3579	s << "\toffset = " << value.offset << '\n';
3580	s << "\tsize = " << value.size << '\n';
3581	s << '}';
3582	return s;
3583}
3584
3585std::ostream& operator<< (std::ostream& s, const VkFormatProperties& value)
3586{
3587	s << "VkFormatProperties = {\n";
3588	s << "\tlinearTilingFeatures = " << getFormatFeatureFlagsStr(value.linearTilingFeatures) << '\n';
3589	s << "\toptimalTilingFeatures = " << getFormatFeatureFlagsStr(value.optimalTilingFeatures) << '\n';
3590	s << "\tbufferFeatures = " << getFormatFeatureFlagsStr(value.bufferFeatures) << '\n';
3591	s << '}';
3592	return s;
3593}
3594
3595std::ostream& operator<< (std::ostream& s, const VkImageFormatProperties& value)
3596{
3597	s << "VkImageFormatProperties = {\n";
3598	s << "\tmaxExtent = " << value.maxExtent << '\n';
3599	s << "\tmaxMipLevels = " << value.maxMipLevels << '\n';
3600	s << "\tmaxArrayLayers = " << value.maxArrayLayers << '\n';
3601	s << "\tsampleCounts = " << getSampleCountFlagsStr(value.sampleCounts) << '\n';
3602	s << "\tmaxResourceSize = " << value.maxResourceSize << '\n';
3603	s << '}';
3604	return s;
3605}
3606
3607std::ostream& operator<< (std::ostream& s, const VkDescriptorBufferInfo& value)
3608{
3609	s << "VkDescriptorBufferInfo = {\n";
3610	s << "\tbuffer = " << value.buffer << '\n';
3611	s << "\toffset = " << value.offset << '\n';
3612	s << "\trange = " << value.range << '\n';
3613	s << '}';
3614	return s;
3615}
3616
3617std::ostream& operator<< (std::ostream& s, const VkDescriptorImageInfo& value)
3618{
3619	s << "VkDescriptorImageInfo = {\n";
3620	s << "\tsampler = " << value.sampler << '\n';
3621	s << "\timageView = " << value.imageView << '\n';
3622	s << "\timageLayout = " << value.imageLayout << '\n';
3623	s << '}';
3624	return s;
3625}
3626
3627std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSet& value)
3628{
3629	s << "VkWriteDescriptorSet = {\n";
3630	s << "\tsType = " << value.sType << '\n';
3631	s << "\tpNext = " << value.pNext << '\n';
3632	s << "\tdstSet = " << value.dstSet << '\n';
3633	s << "\tdstBinding = " << value.dstBinding << '\n';
3634	s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
3635	s << "\tdescriptorCount = " << value.descriptorCount << '\n';
3636	s << "\tdescriptorType = " << value.descriptorType << '\n';
3637	s << "\tpImageInfo = " << value.pImageInfo << '\n';
3638	s << "\tpBufferInfo = " << value.pBufferInfo << '\n';
3639	s << "\tpTexelBufferView = " << value.pTexelBufferView << '\n';
3640	s << '}';
3641	return s;
3642}
3643
3644std::ostream& operator<< (std::ostream& s, const VkCopyDescriptorSet& value)
3645{
3646	s << "VkCopyDescriptorSet = {\n";
3647	s << "\tsType = " << value.sType << '\n';
3648	s << "\tpNext = " << value.pNext << '\n';
3649	s << "\tsrcSet = " << value.srcSet << '\n';
3650	s << "\tsrcBinding = " << value.srcBinding << '\n';
3651	s << "\tsrcArrayElement = " << value.srcArrayElement << '\n';
3652	s << "\tdstSet = " << value.dstSet << '\n';
3653	s << "\tdstBinding = " << value.dstBinding << '\n';
3654	s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
3655	s << "\tdescriptorCount = " << value.descriptorCount << '\n';
3656	s << '}';
3657	return s;
3658}
3659
3660std::ostream& operator<< (std::ostream& s, const VkBufferCreateInfo& value)
3661{
3662	s << "VkBufferCreateInfo = {\n";
3663	s << "\tsType = " << value.sType << '\n';
3664	s << "\tpNext = " << value.pNext << '\n';
3665	s << "\tflags = " << getBufferCreateFlagsStr(value.flags) << '\n';
3666	s << "\tsize = " << value.size << '\n';
3667	s << "\tusage = " << getBufferUsageFlagsStr(value.usage) << '\n';
3668	s << "\tsharingMode = " << value.sharingMode << '\n';
3669	s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
3670	s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
3671	s << '}';
3672	return s;
3673}
3674
3675std::ostream& operator<< (std::ostream& s, const VkBufferViewCreateInfo& value)
3676{
3677	s << "VkBufferViewCreateInfo = {\n";
3678	s << "\tsType = " << value.sType << '\n';
3679	s << "\tpNext = " << value.pNext << '\n';
3680	s << "\tflags = " << getBufferViewCreateFlagsStr(value.flags) << '\n';
3681	s << "\tbuffer = " << value.buffer << '\n';
3682	s << "\tformat = " << value.format << '\n';
3683	s << "\toffset = " << value.offset << '\n';
3684	s << "\trange = " << value.range << '\n';
3685	s << '}';
3686	return s;
3687}
3688
3689std::ostream& operator<< (std::ostream& s, const VkImageSubresource& value)
3690{
3691	s << "VkImageSubresource = {\n";
3692	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
3693	s << "\tmipLevel = " << value.mipLevel << '\n';
3694	s << "\tarrayLayer = " << value.arrayLayer << '\n';
3695	s << '}';
3696	return s;
3697}
3698
3699std::ostream& operator<< (std::ostream& s, const VkImageSubresourceLayers& value)
3700{
3701	s << "VkImageSubresourceLayers = {\n";
3702	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
3703	s << "\tmipLevel = " << value.mipLevel << '\n';
3704	s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
3705	s << "\tlayerCount = " << value.layerCount << '\n';
3706	s << '}';
3707	return s;
3708}
3709
3710std::ostream& operator<< (std::ostream& s, const VkImageSubresourceRange& value)
3711{
3712	s << "VkImageSubresourceRange = {\n";
3713	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
3714	s << "\tbaseMipLevel = " << value.baseMipLevel << '\n';
3715	s << "\tlevelCount = " << value.levelCount << '\n';
3716	s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
3717	s << "\tlayerCount = " << value.layerCount << '\n';
3718	s << '}';
3719	return s;
3720}
3721
3722std::ostream& operator<< (std::ostream& s, const VkMemoryBarrier& value)
3723{
3724	s << "VkMemoryBarrier = {\n";
3725	s << "\tsType = " << value.sType << '\n';
3726	s << "\tpNext = " << value.pNext << '\n';
3727	s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
3728	s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
3729	s << '}';
3730	return s;
3731}
3732
3733std::ostream& operator<< (std::ostream& s, const VkBufferMemoryBarrier& value)
3734{
3735	s << "VkBufferMemoryBarrier = {\n";
3736	s << "\tsType = " << value.sType << '\n';
3737	s << "\tpNext = " << value.pNext << '\n';
3738	s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
3739	s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
3740	s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
3741	s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
3742	s << "\tbuffer = " << value.buffer << '\n';
3743	s << "\toffset = " << value.offset << '\n';
3744	s << "\tsize = " << value.size << '\n';
3745	s << '}';
3746	return s;
3747}
3748
3749std::ostream& operator<< (std::ostream& s, const VkImageMemoryBarrier& value)
3750{
3751	s << "VkImageMemoryBarrier = {\n";
3752	s << "\tsType = " << value.sType << '\n';
3753	s << "\tpNext = " << value.pNext << '\n';
3754	s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
3755	s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
3756	s << "\toldLayout = " << value.oldLayout << '\n';
3757	s << "\tnewLayout = " << value.newLayout << '\n';
3758	s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
3759	s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
3760	s << "\timage = " << value.image << '\n';
3761	s << "\tsubresourceRange = " << value.subresourceRange << '\n';
3762	s << '}';
3763	return s;
3764}
3765
3766std::ostream& operator<< (std::ostream& s, const VkImageCreateInfo& value)
3767{
3768	s << "VkImageCreateInfo = {\n";
3769	s << "\tsType = " << value.sType << '\n';
3770	s << "\tpNext = " << value.pNext << '\n';
3771	s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
3772	s << "\timageType = " << value.imageType << '\n';
3773	s << "\tformat = " << value.format << '\n';
3774	s << "\textent = " << value.extent << '\n';
3775	s << "\tmipLevels = " << value.mipLevels << '\n';
3776	s << "\tarrayLayers = " << value.arrayLayers << '\n';
3777	s << "\tsamples = " << value.samples << '\n';
3778	s << "\ttiling = " << value.tiling << '\n';
3779	s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
3780	s << "\tsharingMode = " << value.sharingMode << '\n';
3781	s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
3782	s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
3783	s << "\tinitialLayout = " << value.initialLayout << '\n';
3784	s << '}';
3785	return s;
3786}
3787
3788std::ostream& operator<< (std::ostream& s, const VkSubresourceLayout& value)
3789{
3790	s << "VkSubresourceLayout = {\n";
3791	s << "\toffset = " << value.offset << '\n';
3792	s << "\tsize = " << value.size << '\n';
3793	s << "\trowPitch = " << value.rowPitch << '\n';
3794	s << "\tarrayPitch = " << value.arrayPitch << '\n';
3795	s << "\tdepthPitch = " << value.depthPitch << '\n';
3796	s << '}';
3797	return s;
3798}
3799
3800std::ostream& operator<< (std::ostream& s, const VkImageViewCreateInfo& value)
3801{
3802	s << "VkImageViewCreateInfo = {\n";
3803	s << "\tsType = " << value.sType << '\n';
3804	s << "\tpNext = " << value.pNext << '\n';
3805	s << "\tflags = " << getImageViewCreateFlagsStr(value.flags) << '\n';
3806	s << "\timage = " << value.image << '\n';
3807	s << "\tviewType = " << value.viewType << '\n';
3808	s << "\tformat = " << value.format << '\n';
3809	s << "\tcomponents = " << value.components << '\n';
3810	s << "\tsubresourceRange = " << value.subresourceRange << '\n';
3811	s << '}';
3812	return s;
3813}
3814
3815std::ostream& operator<< (std::ostream& s, const VkBufferCopy& value)
3816{
3817	s << "VkBufferCopy = {\n";
3818	s << "\tsrcOffset = " << value.srcOffset << '\n';
3819	s << "\tdstOffset = " << value.dstOffset << '\n';
3820	s << "\tsize = " << value.size << '\n';
3821	s << '}';
3822	return s;
3823}
3824
3825std::ostream& operator<< (std::ostream& s, const VkSparseMemoryBind& value)
3826{
3827	s << "VkSparseMemoryBind = {\n";
3828	s << "\tresourceOffset = " << value.resourceOffset << '\n';
3829	s << "\tsize = " << value.size << '\n';
3830	s << "\tmemory = " << value.memory << '\n';
3831	s << "\tmemoryOffset = " << value.memoryOffset << '\n';
3832	s << "\tflags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
3833	s << '}';
3834	return s;
3835}
3836
3837std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBind& value)
3838{
3839	s << "VkSparseImageMemoryBind = {\n";
3840	s << "\tsubresource = " << value.subresource << '\n';
3841	s << "\toffset = " << value.offset << '\n';
3842	s << "\textent = " << value.extent << '\n';
3843	s << "\tmemory = " << value.memory << '\n';
3844	s << "\tmemoryOffset = " << value.memoryOffset << '\n';
3845	s << "\tflags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
3846	s << '}';
3847	return s;
3848}
3849
3850std::ostream& operator<< (std::ostream& s, const VkSparseBufferMemoryBindInfo& value)
3851{
3852	s << "VkSparseBufferMemoryBindInfo = {\n";
3853	s << "\tbuffer = " << value.buffer << '\n';
3854	s << "\tbindCount = " << value.bindCount << '\n';
3855	s << "\tpBinds = " << value.pBinds << '\n';
3856	s << '}';
3857	return s;
3858}
3859
3860std::ostream& operator<< (std::ostream& s, const VkSparseImageOpaqueMemoryBindInfo& value)
3861{
3862	s << "VkSparseImageOpaqueMemoryBindInfo = {\n";
3863	s << "\timage = " << value.image << '\n';
3864	s << "\tbindCount = " << value.bindCount << '\n';
3865	s << "\tpBinds = " << value.pBinds << '\n';
3866	s << '}';
3867	return s;
3868}
3869
3870std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBindInfo& value)
3871{
3872	s << "VkSparseImageMemoryBindInfo = {\n";
3873	s << "\timage = " << value.image << '\n';
3874	s << "\tbindCount = " << value.bindCount << '\n';
3875	s << "\tpBinds = " << value.pBinds << '\n';
3876	s << '}';
3877	return s;
3878}
3879
3880std::ostream& operator<< (std::ostream& s, const VkBindSparseInfo& value)
3881{
3882	s << "VkBindSparseInfo = {\n";
3883	s << "\tsType = " << value.sType << '\n';
3884	s << "\tpNext = " << value.pNext << '\n';
3885	s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
3886	s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
3887	s << "\tbufferBindCount = " << value.bufferBindCount << '\n';
3888	s << "\tpBufferBinds = " << value.pBufferBinds << '\n';
3889	s << "\timageOpaqueBindCount = " << value.imageOpaqueBindCount << '\n';
3890	s << "\tpImageOpaqueBinds = " << value.pImageOpaqueBinds << '\n';
3891	s << "\timageBindCount = " << value.imageBindCount << '\n';
3892	s << "\tpImageBinds = " << value.pImageBinds << '\n';
3893	s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
3894	s << "\tpSignalSemaphores = " << value.pSignalSemaphores << '\n';
3895	s << '}';
3896	return s;
3897}
3898
3899std::ostream& operator<< (std::ostream& s, const VkImageCopy& value)
3900{
3901	s << "VkImageCopy = {\n";
3902	s << "\tsrcSubresource = " << value.srcSubresource << '\n';
3903	s << "\tsrcOffset = " << value.srcOffset << '\n';
3904	s << "\tdstSubresource = " << value.dstSubresource << '\n';
3905	s << "\tdstOffset = " << value.dstOffset << '\n';
3906	s << "\textent = " << value.extent << '\n';
3907	s << '}';
3908	return s;
3909}
3910
3911std::ostream& operator<< (std::ostream& s, const VkImageBlit& value)
3912{
3913	s << "VkImageBlit = {\n";
3914	s << "\tsrcSubresource = " << value.srcSubresource << '\n';
3915	s << "\tsrcOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.srcOffsets), DE_ARRAY_END(value.srcOffsets)) << '\n';
3916	s << "\tdstSubresource = " << value.dstSubresource << '\n';
3917	s << "\tdstOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.dstOffsets), DE_ARRAY_END(value.dstOffsets)) << '\n';
3918	s << '}';
3919	return s;
3920}
3921
3922std::ostream& operator<< (std::ostream& s, const VkBufferImageCopy& value)
3923{
3924	s << "VkBufferImageCopy = {\n";
3925	s << "\tbufferOffset = " << value.bufferOffset << '\n';
3926	s << "\tbufferRowLength = " << value.bufferRowLength << '\n';
3927	s << "\tbufferImageHeight = " << value.bufferImageHeight << '\n';
3928	s << "\timageSubresource = " << value.imageSubresource << '\n';
3929	s << "\timageOffset = " << value.imageOffset << '\n';
3930	s << "\timageExtent = " << value.imageExtent << '\n';
3931	s << '}';
3932	return s;
3933}
3934
3935std::ostream& operator<< (std::ostream& s, const VkImageResolve& value)
3936{
3937	s << "VkImageResolve = {\n";
3938	s << "\tsrcSubresource = " << value.srcSubresource << '\n';
3939	s << "\tsrcOffset = " << value.srcOffset << '\n';
3940	s << "\tdstSubresource = " << value.dstSubresource << '\n';
3941	s << "\tdstOffset = " << value.dstOffset << '\n';
3942	s << "\textent = " << value.extent << '\n';
3943	s << '}';
3944	return s;
3945}
3946
3947std::ostream& operator<< (std::ostream& s, const VkShaderModuleCreateInfo& value)
3948{
3949	s << "VkShaderModuleCreateInfo = {\n";
3950	s << "\tsType = " << value.sType << '\n';
3951	s << "\tpNext = " << value.pNext << '\n';
3952	s << "\tflags = " << getShaderModuleCreateFlagsStr(value.flags) << '\n';
3953	s << "\tcodeSize = " << value.codeSize << '\n';
3954	s << "\tpCode = " << value.pCode << '\n';
3955	s << '}';
3956	return s;
3957}
3958
3959std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBinding& value)
3960{
3961	s << "VkDescriptorSetLayoutBinding = {\n";
3962	s << "\tbinding = " << value.binding << '\n';
3963	s << "\tdescriptorType = " << value.descriptorType << '\n';
3964	s << "\tdescriptorCount = " << value.descriptorCount << '\n';
3965	s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
3966	s << "\tpImmutableSamplers = " << value.pImmutableSamplers << '\n';
3967	s << '}';
3968	return s;
3969}
3970
3971std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutCreateInfo& value)
3972{
3973	s << "VkDescriptorSetLayoutCreateInfo = {\n";
3974	s << "\tsType = " << value.sType << '\n';
3975	s << "\tpNext = " << value.pNext << '\n';
3976	s << "\tflags = " << getDescriptorSetLayoutCreateFlagsStr(value.flags) << '\n';
3977	s << "\tbindingCount = " << value.bindingCount << '\n';
3978	s << "\tpBindings = " << value.pBindings << '\n';
3979	s << '}';
3980	return s;
3981}
3982
3983std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolSize& value)
3984{
3985	s << "VkDescriptorPoolSize = {\n";
3986	s << "\ttype = " << value.type << '\n';
3987	s << "\tdescriptorCount = " << value.descriptorCount << '\n';
3988	s << '}';
3989	return s;
3990}
3991
3992std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolCreateInfo& value)
3993{
3994	s << "VkDescriptorPoolCreateInfo = {\n";
3995	s << "\tsType = " << value.sType << '\n';
3996	s << "\tpNext = " << value.pNext << '\n';
3997	s << "\tflags = " << getDescriptorPoolCreateFlagsStr(value.flags) << '\n';
3998	s << "\tmaxSets = " << value.maxSets << '\n';
3999	s << "\tpoolSizeCount = " << value.poolSizeCount << '\n';
4000	s << "\tpPoolSizes = " << value.pPoolSizes << '\n';
4001	s << '}';
4002	return s;
4003}
4004
4005std::ostream& operator<< (std::ostream& s, const VkDescriptorSetAllocateInfo& value)
4006{
4007	s << "VkDescriptorSetAllocateInfo = {\n";
4008	s << "\tsType = " << value.sType << '\n';
4009	s << "\tpNext = " << value.pNext << '\n';
4010	s << "\tdescriptorPool = " << value.descriptorPool << '\n';
4011	s << "\tdescriptorSetCount = " << value.descriptorSetCount << '\n';
4012	s << "\tpSetLayouts = " << value.pSetLayouts << '\n';
4013	s << '}';
4014	return s;
4015}
4016
4017std::ostream& operator<< (std::ostream& s, const VkSpecializationMapEntry& value)
4018{
4019	s << "VkSpecializationMapEntry = {\n";
4020	s << "\tconstantID = " << value.constantID << '\n';
4021	s << "\toffset = " << value.offset << '\n';
4022	s << "\tsize = " << value.size << '\n';
4023	s << '}';
4024	return s;
4025}
4026
4027std::ostream& operator<< (std::ostream& s, const VkSpecializationInfo& value)
4028{
4029	s << "VkSpecializationInfo = {\n";
4030	s << "\tmapEntryCount = " << value.mapEntryCount << '\n';
4031	s << "\tpMapEntries = " << value.pMapEntries << '\n';
4032	s << "\tdataSize = " << value.dataSize << '\n';
4033	s << "\tpData = " << value.pData << '\n';
4034	s << '}';
4035	return s;
4036}
4037
4038std::ostream& operator<< (std::ostream& s, const VkPipelineShaderStageCreateInfo& value)
4039{
4040	s << "VkPipelineShaderStageCreateInfo = {\n";
4041	s << "\tsType = " << value.sType << '\n';
4042	s << "\tpNext = " << value.pNext << '\n';
4043	s << "\tflags = " << getPipelineShaderStageCreateFlagsStr(value.flags) << '\n';
4044	s << "\tstage = " << value.stage << '\n';
4045	s << "\tmodule = " << value.module << '\n';
4046	s << "\tpName = " << getCharPtrStr(value.pName) << '\n';
4047	s << "\tpSpecializationInfo = " << value.pSpecializationInfo << '\n';
4048	s << '}';
4049	return s;
4050}
4051
4052std::ostream& operator<< (std::ostream& s, const VkComputePipelineCreateInfo& value)
4053{
4054	s << "VkComputePipelineCreateInfo = {\n";
4055	s << "\tsType = " << value.sType << '\n';
4056	s << "\tpNext = " << value.pNext << '\n';
4057	s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
4058	s << "\tstage = " << value.stage << '\n';
4059	s << "\tlayout = " << value.layout << '\n';
4060	s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
4061	s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
4062	s << '}';
4063	return s;
4064}
4065
4066std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDescription& value)
4067{
4068	s << "VkVertexInputBindingDescription = {\n";
4069	s << "\tbinding = " << value.binding << '\n';
4070	s << "\tstride = " << value.stride << '\n';
4071	s << "\tinputRate = " << value.inputRate << '\n';
4072	s << '}';
4073	return s;
4074}
4075
4076std::ostream& operator<< (std::ostream& s, const VkVertexInputAttributeDescription& value)
4077{
4078	s << "VkVertexInputAttributeDescription = {\n";
4079	s << "\tlocation = " << value.location << '\n';
4080	s << "\tbinding = " << value.binding << '\n';
4081	s << "\tformat = " << value.format << '\n';
4082	s << "\toffset = " << value.offset << '\n';
4083	s << '}';
4084	return s;
4085}
4086
4087std::ostream& operator<< (std::ostream& s, const VkPipelineVertexInputStateCreateInfo& value)
4088{
4089	s << "VkPipelineVertexInputStateCreateInfo = {\n";
4090	s << "\tsType = " << value.sType << '\n';
4091	s << "\tpNext = " << value.pNext << '\n';
4092	s << "\tflags = " << getPipelineVertexInputStateCreateFlagsStr(value.flags) << '\n';
4093	s << "\tvertexBindingDescriptionCount = " << value.vertexBindingDescriptionCount << '\n';
4094	s << "\tpVertexBindingDescriptions = " << value.pVertexBindingDescriptions << '\n';
4095	s << "\tvertexAttributeDescriptionCount = " << value.vertexAttributeDescriptionCount << '\n';
4096	s << "\tpVertexAttributeDescriptions = " << value.pVertexAttributeDescriptions << '\n';
4097	s << '}';
4098	return s;
4099}
4100
4101std::ostream& operator<< (std::ostream& s, const VkPipelineInputAssemblyStateCreateInfo& value)
4102{
4103	s << "VkPipelineInputAssemblyStateCreateInfo = {\n";
4104	s << "\tsType = " << value.sType << '\n';
4105	s << "\tpNext = " << value.pNext << '\n';
4106	s << "\tflags = " << getPipelineInputAssemblyStateCreateFlagsStr(value.flags) << '\n';
4107	s << "\ttopology = " << value.topology << '\n';
4108	s << "\tprimitiveRestartEnable = " << value.primitiveRestartEnable << '\n';
4109	s << '}';
4110	return s;
4111}
4112
4113std::ostream& operator<< (std::ostream& s, const VkPipelineTessellationStateCreateInfo& value)
4114{
4115	s << "VkPipelineTessellationStateCreateInfo = {\n";
4116	s << "\tsType = " << value.sType << '\n';
4117	s << "\tpNext = " << value.pNext << '\n';
4118	s << "\tflags = " << getPipelineTessellationStateCreateFlagsStr(value.flags) << '\n';
4119	s << "\tpatchControlPoints = " << value.patchControlPoints << '\n';
4120	s << '}';
4121	return s;
4122}
4123
4124std::ostream& operator<< (std::ostream& s, const VkPipelineViewportStateCreateInfo& value)
4125{
4126	s << "VkPipelineViewportStateCreateInfo = {\n";
4127	s << "\tsType = " << value.sType << '\n';
4128	s << "\tpNext = " << value.pNext << '\n';
4129	s << "\tflags = " << getPipelineViewportStateCreateFlagsStr(value.flags) << '\n';
4130	s << "\tviewportCount = " << value.viewportCount << '\n';
4131	s << "\tpViewports = " << value.pViewports << '\n';
4132	s << "\tscissorCount = " << value.scissorCount << '\n';
4133	s << "\tpScissors = " << value.pScissors << '\n';
4134	s << '}';
4135	return s;
4136}
4137
4138std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateCreateInfo& value)
4139{
4140	s << "VkPipelineRasterizationStateCreateInfo = {\n";
4141	s << "\tsType = " << value.sType << '\n';
4142	s << "\tpNext = " << value.pNext << '\n';
4143	s << "\tflags = " << getPipelineRasterizationStateCreateFlagsStr(value.flags) << '\n';
4144	s << "\tdepthClampEnable = " << value.depthClampEnable << '\n';
4145	s << "\trasterizerDiscardEnable = " << value.rasterizerDiscardEnable << '\n';
4146	s << "\tpolygonMode = " << value.polygonMode << '\n';
4147	s << "\tcullMode = " << getCullModeFlagsStr(value.cullMode) << '\n';
4148	s << "\tfrontFace = " << value.frontFace << '\n';
4149	s << "\tdepthBiasEnable = " << value.depthBiasEnable << '\n';
4150	s << "\tdepthBiasConstantFactor = " << value.depthBiasConstantFactor << '\n';
4151	s << "\tdepthBiasClamp = " << value.depthBiasClamp << '\n';
4152	s << "\tdepthBiasSlopeFactor = " << value.depthBiasSlopeFactor << '\n';
4153	s << "\tlineWidth = " << value.lineWidth << '\n';
4154	s << '}';
4155	return s;
4156}
4157
4158std::ostream& operator<< (std::ostream& s, const VkPipelineMultisampleStateCreateInfo& value)
4159{
4160	s << "VkPipelineMultisampleStateCreateInfo = {\n";
4161	s << "\tsType = " << value.sType << '\n';
4162	s << "\tpNext = " << value.pNext << '\n';
4163	s << "\tflags = " << getPipelineMultisampleStateCreateFlagsStr(value.flags) << '\n';
4164	s << "\trasterizationSamples = " << value.rasterizationSamples << '\n';
4165	s << "\tsampleShadingEnable = " << value.sampleShadingEnable << '\n';
4166	s << "\tminSampleShading = " << value.minSampleShading << '\n';
4167	s << "\tpSampleMask = " << value.pSampleMask << '\n';
4168	s << "\talphaToCoverageEnable = " << value.alphaToCoverageEnable << '\n';
4169	s << "\talphaToOneEnable = " << value.alphaToOneEnable << '\n';
4170	s << '}';
4171	return s;
4172}
4173
4174std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendAttachmentState& value)
4175{
4176	s << "VkPipelineColorBlendAttachmentState = {\n";
4177	s << "\tblendEnable = " << value.blendEnable << '\n';
4178	s << "\tsrcColorBlendFactor = " << value.srcColorBlendFactor << '\n';
4179	s << "\tdstColorBlendFactor = " << value.dstColorBlendFactor << '\n';
4180	s << "\tcolorBlendOp = " << value.colorBlendOp << '\n';
4181	s << "\tsrcAlphaBlendFactor = " << value.srcAlphaBlendFactor << '\n';
4182	s << "\tdstAlphaBlendFactor = " << value.dstAlphaBlendFactor << '\n';
4183	s << "\talphaBlendOp = " << value.alphaBlendOp << '\n';
4184	s << "\tcolorWriteMask = " << getColorComponentFlagsStr(value.colorWriteMask) << '\n';
4185	s << '}';
4186	return s;
4187}
4188
4189std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendStateCreateInfo& value)
4190{
4191	s << "VkPipelineColorBlendStateCreateInfo = {\n";
4192	s << "\tsType = " << value.sType << '\n';
4193	s << "\tpNext = " << value.pNext << '\n';
4194	s << "\tflags = " << getPipelineColorBlendStateCreateFlagsStr(value.flags) << '\n';
4195	s << "\tlogicOpEnable = " << value.logicOpEnable << '\n';
4196	s << "\tlogicOp = " << value.logicOp << '\n';
4197	s << "\tattachmentCount = " << value.attachmentCount << '\n';
4198	s << "\tpAttachments = " << value.pAttachments << '\n';
4199	s << "\tblendConstants = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.blendConstants), DE_ARRAY_END(value.blendConstants)) << '\n';
4200	s << '}';
4201	return s;
4202}
4203
4204std::ostream& operator<< (std::ostream& s, const VkPipelineDynamicStateCreateInfo& value)
4205{
4206	s << "VkPipelineDynamicStateCreateInfo = {\n";
4207	s << "\tsType = " << value.sType << '\n';
4208	s << "\tpNext = " << value.pNext << '\n';
4209	s << "\tflags = " << getPipelineDynamicStateCreateFlagsStr(value.flags) << '\n';
4210	s << "\tdynamicStateCount = " << value.dynamicStateCount << '\n';
4211	s << "\tpDynamicStates = " << value.pDynamicStates << '\n';
4212	s << '}';
4213	return s;
4214}
4215
4216std::ostream& operator<< (std::ostream& s, const VkStencilOpState& value)
4217{
4218	s << "VkStencilOpState = {\n";
4219	s << "\tfailOp = " << value.failOp << '\n';
4220	s << "\tpassOp = " << value.passOp << '\n';
4221	s << "\tdepthFailOp = " << value.depthFailOp << '\n';
4222	s << "\tcompareOp = " << value.compareOp << '\n';
4223	s << "\tcompareMask = " << value.compareMask << '\n';
4224	s << "\twriteMask = " << value.writeMask << '\n';
4225	s << "\treference = " << value.reference << '\n';
4226	s << '}';
4227	return s;
4228}
4229
4230std::ostream& operator<< (std::ostream& s, const VkPipelineDepthStencilStateCreateInfo& value)
4231{
4232	s << "VkPipelineDepthStencilStateCreateInfo = {\n";
4233	s << "\tsType = " << value.sType << '\n';
4234	s << "\tpNext = " << value.pNext << '\n';
4235	s << "\tflags = " << getPipelineDepthStencilStateCreateFlagsStr(value.flags) << '\n';
4236	s << "\tdepthTestEnable = " << value.depthTestEnable << '\n';
4237	s << "\tdepthWriteEnable = " << value.depthWriteEnable << '\n';
4238	s << "\tdepthCompareOp = " << value.depthCompareOp << '\n';
4239	s << "\tdepthBoundsTestEnable = " << value.depthBoundsTestEnable << '\n';
4240	s << "\tstencilTestEnable = " << value.stencilTestEnable << '\n';
4241	s << "\tfront = " << value.front << '\n';
4242	s << "\tback = " << value.back << '\n';
4243	s << "\tminDepthBounds = " << value.minDepthBounds << '\n';
4244	s << "\tmaxDepthBounds = " << value.maxDepthBounds << '\n';
4245	s << '}';
4246	return s;
4247}
4248
4249std::ostream& operator<< (std::ostream& s, const VkGraphicsPipelineCreateInfo& value)
4250{
4251	s << "VkGraphicsPipelineCreateInfo = {\n";
4252	s << "\tsType = " << value.sType << '\n';
4253	s << "\tpNext = " << value.pNext << '\n';
4254	s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
4255	s << "\tstageCount = " << value.stageCount << '\n';
4256	s << "\tpStages = " << value.pStages << '\n';
4257	s << "\tpVertexInputState = " << value.pVertexInputState << '\n';
4258	s << "\tpInputAssemblyState = " << value.pInputAssemblyState << '\n';
4259	s << "\tpTessellationState = " << value.pTessellationState << '\n';
4260	s << "\tpViewportState = " << value.pViewportState << '\n';
4261	s << "\tpRasterizationState = " << value.pRasterizationState << '\n';
4262	s << "\tpMultisampleState = " << value.pMultisampleState << '\n';
4263	s << "\tpDepthStencilState = " << value.pDepthStencilState << '\n';
4264	s << "\tpColorBlendState = " << value.pColorBlendState << '\n';
4265	s << "\tpDynamicState = " << value.pDynamicState << '\n';
4266	s << "\tlayout = " << value.layout << '\n';
4267	s << "\trenderPass = " << value.renderPass << '\n';
4268	s << "\tsubpass = " << value.subpass << '\n';
4269	s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
4270	s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
4271	s << '}';
4272	return s;
4273}
4274
4275std::ostream& operator<< (std::ostream& s, const VkPipelineCacheCreateInfo& value)
4276{
4277	s << "VkPipelineCacheCreateInfo = {\n";
4278	s << "\tsType = " << value.sType << '\n';
4279	s << "\tpNext = " << value.pNext << '\n';
4280	s << "\tflags = " << getPipelineCacheCreateFlagsStr(value.flags) << '\n';
4281	s << "\tinitialDataSize = " << value.initialDataSize << '\n';
4282	s << "\tpInitialData = " << value.pInitialData << '\n';
4283	s << '}';
4284	return s;
4285}
4286
4287std::ostream& operator<< (std::ostream& s, const VkPipelineCacheHeaderVersionOne& value)
4288{
4289	s << "VkPipelineCacheHeaderVersionOne = {\n";
4290	s << "\theaderSize = " << value.headerSize << '\n';
4291	s << "\theaderVersion = " << value.headerVersion << '\n';
4292	s << "\tvendorID = " << value.vendorID << '\n';
4293	s << "\tdeviceID = " << value.deviceID << '\n';
4294	s << "\tpipelineCacheUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.pipelineCacheUUID)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.pipelineCacheUUID))) << '\n';
4295	s << '}';
4296	return s;
4297}
4298
4299std::ostream& operator<< (std::ostream& s, const VkPipelineCacheStageValidationIndexEntry& value)
4300{
4301	s << "VkPipelineCacheStageValidationIndexEntry = {\n";
4302	s << "\tcodeSize = " << value.codeSize << '\n';
4303	s << "\tcodeOffset = " << value.codeOffset << '\n';
4304	s << '}';
4305	return s;
4306}
4307
4308std::ostream& operator<< (std::ostream& s, const VkPipelineCacheSafetyCriticalIndexEntry& value)
4309{
4310	s << "VkPipelineCacheSafetyCriticalIndexEntry = {\n";
4311	s << "\tpipelineIdentifier = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.pipelineIdentifier)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.pipelineIdentifier))) << '\n';
4312	s << "\tpipelineMemorySize = " << value.pipelineMemorySize << '\n';
4313	s << "\tjsonSize = " << value.jsonSize << '\n';
4314	s << "\tjsonOffset = " << value.jsonOffset << '\n';
4315	s << "\tstageIndexCount = " << value.stageIndexCount << '\n';
4316	s << "\tstageIndexStride = " << value.stageIndexStride << '\n';
4317	s << "\tstageIndexOffset = " << value.stageIndexOffset << '\n';
4318	s << '}';
4319	return s;
4320}
4321
4322std::ostream& operator<< (std::ostream& s, const VkPipelineCacheHeaderVersionSafetyCriticalOne& value)
4323{
4324	s << "VkPipelineCacheHeaderVersionSafetyCriticalOne = {\n";
4325	s << "\theaderVersionOne = " << value.headerVersionOne << '\n';
4326	s << "\tvalidationVersion = " << value.validationVersion << '\n';
4327	s << "\timplementationData = " << value.implementationData << '\n';
4328	s << "\tpipelineIndexCount = " << value.pipelineIndexCount << '\n';
4329	s << "\tpipelineIndexStride = " << value.pipelineIndexStride << '\n';
4330	s << "\tpipelineIndexOffset = " << value.pipelineIndexOffset << '\n';
4331	s << '}';
4332	return s;
4333}
4334
4335std::ostream& operator<< (std::ostream& s, const VkPushConstantRange& value)
4336{
4337	s << "VkPushConstantRange = {\n";
4338	s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
4339	s << "\toffset = " << value.offset << '\n';
4340	s << "\tsize = " << value.size << '\n';
4341	s << '}';
4342	return s;
4343}
4344
4345std::ostream& operator<< (std::ostream& s, const VkPipelineLayoutCreateInfo& value)
4346{
4347	s << "VkPipelineLayoutCreateInfo = {\n";
4348	s << "\tsType = " << value.sType << '\n';
4349	s << "\tpNext = " << value.pNext << '\n';
4350	s << "\tflags = " << getPipelineLayoutCreateFlagsStr(value.flags) << '\n';
4351	s << "\tsetLayoutCount = " << value.setLayoutCount << '\n';
4352	s << "\tpSetLayouts = " << value.pSetLayouts << '\n';
4353	s << "\tpushConstantRangeCount = " << value.pushConstantRangeCount << '\n';
4354	s << "\tpPushConstantRanges = " << value.pPushConstantRanges << '\n';
4355	s << '}';
4356	return s;
4357}
4358
4359std::ostream& operator<< (std::ostream& s, const VkSamplerCreateInfo& value)
4360{
4361	s << "VkSamplerCreateInfo = {\n";
4362	s << "\tsType = " << value.sType << '\n';
4363	s << "\tpNext = " << value.pNext << '\n';
4364	s << "\tflags = " << getSamplerCreateFlagsStr(value.flags) << '\n';
4365	s << "\tmagFilter = " << value.magFilter << '\n';
4366	s << "\tminFilter = " << value.minFilter << '\n';
4367	s << "\tmipmapMode = " << value.mipmapMode << '\n';
4368	s << "\taddressModeU = " << value.addressModeU << '\n';
4369	s << "\taddressModeV = " << value.addressModeV << '\n';
4370	s << "\taddressModeW = " << value.addressModeW << '\n';
4371	s << "\tmipLodBias = " << value.mipLodBias << '\n';
4372	s << "\tanisotropyEnable = " << value.anisotropyEnable << '\n';
4373	s << "\tmaxAnisotropy = " << value.maxAnisotropy << '\n';
4374	s << "\tcompareEnable = " << value.compareEnable << '\n';
4375	s << "\tcompareOp = " << value.compareOp << '\n';
4376	s << "\tminLod = " << value.minLod << '\n';
4377	s << "\tmaxLod = " << value.maxLod << '\n';
4378	s << "\tborderColor = " << value.borderColor << '\n';
4379	s << "\tunnormalizedCoordinates = " << value.unnormalizedCoordinates << '\n';
4380	s << '}';
4381	return s;
4382}
4383
4384std::ostream& operator<< (std::ostream& s, const VkCommandPoolCreateInfo& value)
4385{
4386	s << "VkCommandPoolCreateInfo = {\n";
4387	s << "\tsType = " << value.sType << '\n';
4388	s << "\tpNext = " << value.pNext << '\n';
4389	s << "\tflags = " << getCommandPoolCreateFlagsStr(value.flags) << '\n';
4390	s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
4391	s << '}';
4392	return s;
4393}
4394
4395std::ostream& operator<< (std::ostream& s, const VkCommandBufferAllocateInfo& value)
4396{
4397	s << "VkCommandBufferAllocateInfo = {\n";
4398	s << "\tsType = " << value.sType << '\n';
4399	s << "\tpNext = " << value.pNext << '\n';
4400	s << "\tcommandPool = " << value.commandPool << '\n';
4401	s << "\tlevel = " << value.level << '\n';
4402	s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
4403	s << '}';
4404	return s;
4405}
4406
4407std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceInfo& value)
4408{
4409	s << "VkCommandBufferInheritanceInfo = {\n";
4410	s << "\tsType = " << value.sType << '\n';
4411	s << "\tpNext = " << value.pNext << '\n';
4412	s << "\trenderPass = " << value.renderPass << '\n';
4413	s << "\tsubpass = " << value.subpass << '\n';
4414	s << "\tframebuffer = " << value.framebuffer << '\n';
4415	s << "\tocclusionQueryEnable = " << value.occlusionQueryEnable << '\n';
4416	s << "\tqueryFlags = " << getQueryControlFlagsStr(value.queryFlags) << '\n';
4417	s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
4418	s << '}';
4419	return s;
4420}
4421
4422std::ostream& operator<< (std::ostream& s, const VkCommandBufferBeginInfo& value)
4423{
4424	s << "VkCommandBufferBeginInfo = {\n";
4425	s << "\tsType = " << value.sType << '\n';
4426	s << "\tpNext = " << value.pNext << '\n';
4427	s << "\tflags = " << getCommandBufferUsageFlagsStr(value.flags) << '\n';
4428	s << "\tpInheritanceInfo = " << value.pInheritanceInfo << '\n';
4429	s << '}';
4430	return s;
4431}
4432
4433std::ostream& operator<< (std::ostream& s, const VkRenderPassBeginInfo& value)
4434{
4435	s << "VkRenderPassBeginInfo = {\n";
4436	s << "\tsType = " << value.sType << '\n';
4437	s << "\tpNext = " << value.pNext << '\n';
4438	s << "\trenderPass = " << value.renderPass << '\n';
4439	s << "\tframebuffer = " << value.framebuffer << '\n';
4440	s << "\trenderArea = " << value.renderArea << '\n';
4441	s << "\tclearValueCount = " << value.clearValueCount << '\n';
4442	s << "\tpClearValues = " << value.pClearValues << '\n';
4443	s << '}';
4444	return s;
4445}
4446
4447std::ostream& operator<< (std::ostream& s, const VkClearColorValue& value)
4448{
4449	s << "VkClearColorValue = {\n";
4450	s << "\tfloat32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.float32), DE_ARRAY_END(value.float32)) << '\n';
4451	s << "\tint32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.int32), DE_ARRAY_END(value.int32)) << '\n';
4452	s << "\tuint32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.uint32), DE_ARRAY_END(value.uint32)) << '\n';
4453	s << '}';
4454	return s;
4455}
4456
4457std::ostream& operator<< (std::ostream& s, const VkClearDepthStencilValue& value)
4458{
4459	s << "VkClearDepthStencilValue = {\n";
4460	s << "\tdepth = " << value.depth << '\n';
4461	s << "\tstencil = " << value.stencil << '\n';
4462	s << '}';
4463	return s;
4464}
4465
4466std::ostream& operator<< (std::ostream& s, const VkClearValue& value)
4467{
4468	s << "VkClearValue = {\n";
4469	s << "\tcolor = " << value.color << '\n';
4470	s << "\tdepthStencil = " << value.depthStencil << '\n';
4471	s << '}';
4472	return s;
4473}
4474
4475std::ostream& operator<< (std::ostream& s, const VkClearAttachment& value)
4476{
4477	s << "VkClearAttachment = {\n";
4478	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
4479	s << "\tcolorAttachment = " << value.colorAttachment << '\n';
4480	s << "\tclearValue = " << value.clearValue << '\n';
4481	s << '}';
4482	return s;
4483}
4484
4485std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription& value)
4486{
4487	s << "VkAttachmentDescription = {\n";
4488	s << "\tflags = " << getAttachmentDescriptionFlagsStr(value.flags) << '\n';
4489	s << "\tformat = " << value.format << '\n';
4490	s << "\tsamples = " << value.samples << '\n';
4491	s << "\tloadOp = " << value.loadOp << '\n';
4492	s << "\tstoreOp = " << value.storeOp << '\n';
4493	s << "\tstencilLoadOp = " << value.stencilLoadOp << '\n';
4494	s << "\tstencilStoreOp = " << value.stencilStoreOp << '\n';
4495	s << "\tinitialLayout = " << value.initialLayout << '\n';
4496	s << "\tfinalLayout = " << value.finalLayout << '\n';
4497	s << '}';
4498	return s;
4499}
4500
4501std::ostream& operator<< (std::ostream& s, const VkAttachmentReference& value)
4502{
4503	s << "VkAttachmentReference = {\n";
4504	s << "\tattachment = " << value.attachment << '\n';
4505	s << "\tlayout = " << value.layout << '\n';
4506	s << '}';
4507	return s;
4508}
4509
4510std::ostream& operator<< (std::ostream& s, const VkSubpassDescription& value)
4511{
4512	s << "VkSubpassDescription = {\n";
4513	s << "\tflags = " << getSubpassDescriptionFlagsStr(value.flags) << '\n';
4514	s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
4515	s << "\tinputAttachmentCount = " << value.inputAttachmentCount << '\n';
4516	s << "\tpInputAttachments = " << value.pInputAttachments << '\n';
4517	s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
4518	s << "\tpColorAttachments = " << value.pColorAttachments << '\n';
4519	s << "\tpResolveAttachments = " << value.pResolveAttachments << '\n';
4520	s << "\tpDepthStencilAttachment = " << value.pDepthStencilAttachment << '\n';
4521	s << "\tpreserveAttachmentCount = " << value.preserveAttachmentCount << '\n';
4522	s << "\tpPreserveAttachments = " << value.pPreserveAttachments << '\n';
4523	s << '}';
4524	return s;
4525}
4526
4527std::ostream& operator<< (std::ostream& s, const VkSubpassDependency& value)
4528{
4529	s << "VkSubpassDependency = {\n";
4530	s << "\tsrcSubpass = " << value.srcSubpass << '\n';
4531	s << "\tdstSubpass = " << value.dstSubpass << '\n';
4532	s << "\tsrcStageMask = " << getPipelineStageFlagsStr(value.srcStageMask) << '\n';
4533	s << "\tdstStageMask = " << getPipelineStageFlagsStr(value.dstStageMask) << '\n';
4534	s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
4535	s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
4536	s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
4537	s << '}';
4538	return s;
4539}
4540
4541std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo& value)
4542{
4543	s << "VkRenderPassCreateInfo = {\n";
4544	s << "\tsType = " << value.sType << '\n';
4545	s << "\tpNext = " << value.pNext << '\n';
4546	s << "\tflags = " << getRenderPassCreateFlagsStr(value.flags) << '\n';
4547	s << "\tattachmentCount = " << value.attachmentCount << '\n';
4548	s << "\tpAttachments = " << value.pAttachments << '\n';
4549	s << "\tsubpassCount = " << value.subpassCount << '\n';
4550	s << "\tpSubpasses = " << value.pSubpasses << '\n';
4551	s << "\tdependencyCount = " << value.dependencyCount << '\n';
4552	s << "\tpDependencies = " << value.pDependencies << '\n';
4553	s << '}';
4554	return s;
4555}
4556
4557std::ostream& operator<< (std::ostream& s, const VkEventCreateInfo& value)
4558{
4559	s << "VkEventCreateInfo = {\n";
4560	s << "\tsType = " << value.sType << '\n';
4561	s << "\tpNext = " << value.pNext << '\n';
4562	s << "\tflags = " << getEventCreateFlagsStr(value.flags) << '\n';
4563	s << '}';
4564	return s;
4565}
4566
4567std::ostream& operator<< (std::ostream& s, const VkFenceCreateInfo& value)
4568{
4569	s << "VkFenceCreateInfo = {\n";
4570	s << "\tsType = " << value.sType << '\n';
4571	s << "\tpNext = " << value.pNext << '\n';
4572	s << "\tflags = " << getFenceCreateFlagsStr(value.flags) << '\n';
4573	s << '}';
4574	return s;
4575}
4576
4577std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures& value)
4578{
4579	s << "VkPhysicalDeviceFeatures = {\n";
4580	s << "\trobustBufferAccess = " << value.robustBufferAccess << '\n';
4581	s << "\tfullDrawIndexUint32 = " << value.fullDrawIndexUint32 << '\n';
4582	s << "\timageCubeArray = " << value.imageCubeArray << '\n';
4583	s << "\tindependentBlend = " << value.independentBlend << '\n';
4584	s << "\tgeometryShader = " << value.geometryShader << '\n';
4585	s << "\ttessellationShader = " << value.tessellationShader << '\n';
4586	s << "\tsampleRateShading = " << value.sampleRateShading << '\n';
4587	s << "\tdualSrcBlend = " << value.dualSrcBlend << '\n';
4588	s << "\tlogicOp = " << value.logicOp << '\n';
4589	s << "\tmultiDrawIndirect = " << value.multiDrawIndirect << '\n';
4590	s << "\tdrawIndirectFirstInstance = " << value.drawIndirectFirstInstance << '\n';
4591	s << "\tdepthClamp = " << value.depthClamp << '\n';
4592	s << "\tdepthBiasClamp = " << value.depthBiasClamp << '\n';
4593	s << "\tfillModeNonSolid = " << value.fillModeNonSolid << '\n';
4594	s << "\tdepthBounds = " << value.depthBounds << '\n';
4595	s << "\twideLines = " << value.wideLines << '\n';
4596	s << "\tlargePoints = " << value.largePoints << '\n';
4597	s << "\talphaToOne = " << value.alphaToOne << '\n';
4598	s << "\tmultiViewport = " << value.multiViewport << '\n';
4599	s << "\tsamplerAnisotropy = " << value.samplerAnisotropy << '\n';
4600	s << "\ttextureCompressionETC2 = " << value.textureCompressionETC2 << '\n';
4601	s << "\ttextureCompressionASTC_LDR = " << value.textureCompressionASTC_LDR << '\n';
4602	s << "\ttextureCompressionBC = " << value.textureCompressionBC << '\n';
4603	s << "\tocclusionQueryPrecise = " << value.occlusionQueryPrecise << '\n';
4604	s << "\tpipelineStatisticsQuery = " << value.pipelineStatisticsQuery << '\n';
4605	s << "\tvertexPipelineStoresAndAtomics = " << value.vertexPipelineStoresAndAtomics << '\n';
4606	s << "\tfragmentStoresAndAtomics = " << value.fragmentStoresAndAtomics << '\n';
4607	s << "\tshaderTessellationAndGeometryPointSize = " << value.shaderTessellationAndGeometryPointSize << '\n';
4608	s << "\tshaderImageGatherExtended = " << value.shaderImageGatherExtended << '\n';
4609	s << "\tshaderStorageImageExtendedFormats = " << value.shaderStorageImageExtendedFormats << '\n';
4610	s << "\tshaderStorageImageMultisample = " << value.shaderStorageImageMultisample << '\n';
4611	s << "\tshaderStorageImageReadWithoutFormat = " << value.shaderStorageImageReadWithoutFormat << '\n';
4612	s << "\tshaderStorageImageWriteWithoutFormat = " << value.shaderStorageImageWriteWithoutFormat << '\n';
4613	s << "\tshaderUniformBufferArrayDynamicIndexing = " << value.shaderUniformBufferArrayDynamicIndexing << '\n';
4614	s << "\tshaderSampledImageArrayDynamicIndexing = " << value.shaderSampledImageArrayDynamicIndexing << '\n';
4615	s << "\tshaderStorageBufferArrayDynamicIndexing = " << value.shaderStorageBufferArrayDynamicIndexing << '\n';
4616	s << "\tshaderStorageImageArrayDynamicIndexing = " << value.shaderStorageImageArrayDynamicIndexing << '\n';
4617	s << "\tshaderClipDistance = " << value.shaderClipDistance << '\n';
4618	s << "\tshaderCullDistance = " << value.shaderCullDistance << '\n';
4619	s << "\tshaderFloat64 = " << value.shaderFloat64 << '\n';
4620	s << "\tshaderInt64 = " << value.shaderInt64 << '\n';
4621	s << "\tshaderInt16 = " << value.shaderInt16 << '\n';
4622	s << "\tshaderResourceResidency = " << value.shaderResourceResidency << '\n';
4623	s << "\tshaderResourceMinLod = " << value.shaderResourceMinLod << '\n';
4624	s << "\tsparseBinding = " << value.sparseBinding << '\n';
4625	s << "\tsparseResidencyBuffer = " << value.sparseResidencyBuffer << '\n';
4626	s << "\tsparseResidencyImage2D = " << value.sparseResidencyImage2D << '\n';
4627	s << "\tsparseResidencyImage3D = " << value.sparseResidencyImage3D << '\n';
4628	s << "\tsparseResidency2Samples = " << value.sparseResidency2Samples << '\n';
4629	s << "\tsparseResidency4Samples = " << value.sparseResidency4Samples << '\n';
4630	s << "\tsparseResidency8Samples = " << value.sparseResidency8Samples << '\n';
4631	s << "\tsparseResidency16Samples = " << value.sparseResidency16Samples << '\n';
4632	s << "\tsparseResidencyAliased = " << value.sparseResidencyAliased << '\n';
4633	s << "\tvariableMultisampleRate = " << value.variableMultisampleRate << '\n';
4634	s << "\tinheritedQueries = " << value.inheritedQueries << '\n';
4635	s << '}';
4636	return s;
4637}
4638
4639std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSparseProperties& value)
4640{
4641	s << "VkPhysicalDeviceSparseProperties = {\n";
4642	s << "\tresidencyStandard2DBlockShape = " << value.residencyStandard2DBlockShape << '\n';
4643	s << "\tresidencyStandard2DMultisampleBlockShape = " << value.residencyStandard2DMultisampleBlockShape << '\n';
4644	s << "\tresidencyStandard3DBlockShape = " << value.residencyStandard3DBlockShape << '\n';
4645	s << "\tresidencyAlignedMipSize = " << value.residencyAlignedMipSize << '\n';
4646	s << "\tresidencyNonResidentStrict = " << value.residencyNonResidentStrict << '\n';
4647	s << '}';
4648	return s;
4649}
4650
4651std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLimits& value)
4652{
4653	s << "VkPhysicalDeviceLimits = {\n";
4654	s << "\tmaxImageDimension1D = " << value.maxImageDimension1D << '\n';
4655	s << "\tmaxImageDimension2D = " << value.maxImageDimension2D << '\n';
4656	s << "\tmaxImageDimension3D = " << value.maxImageDimension3D << '\n';
4657	s << "\tmaxImageDimensionCube = " << value.maxImageDimensionCube << '\n';
4658	s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
4659	s << "\tmaxTexelBufferElements = " << value.maxTexelBufferElements << '\n';
4660	s << "\tmaxUniformBufferRange = " << value.maxUniformBufferRange << '\n';
4661	s << "\tmaxStorageBufferRange = " << value.maxStorageBufferRange << '\n';
4662	s << "\tmaxPushConstantsSize = " << value.maxPushConstantsSize << '\n';
4663	s << "\tmaxMemoryAllocationCount = " << value.maxMemoryAllocationCount << '\n';
4664	s << "\tmaxSamplerAllocationCount = " << value.maxSamplerAllocationCount << '\n';
4665	s << "\tbufferImageGranularity = " << value.bufferImageGranularity << '\n';
4666	s << "\tsparseAddressSpaceSize = " << value.sparseAddressSpaceSize << '\n';
4667	s << "\tmaxBoundDescriptorSets = " << value.maxBoundDescriptorSets << '\n';
4668	s << "\tmaxPerStageDescriptorSamplers = " << value.maxPerStageDescriptorSamplers << '\n';
4669	s << "\tmaxPerStageDescriptorUniformBuffers = " << value.maxPerStageDescriptorUniformBuffers << '\n';
4670	s << "\tmaxPerStageDescriptorStorageBuffers = " << value.maxPerStageDescriptorStorageBuffers << '\n';
4671	s << "\tmaxPerStageDescriptorSampledImages = " << value.maxPerStageDescriptorSampledImages << '\n';
4672	s << "\tmaxPerStageDescriptorStorageImages = " << value.maxPerStageDescriptorStorageImages << '\n';
4673	s << "\tmaxPerStageDescriptorInputAttachments = " << value.maxPerStageDescriptorInputAttachments << '\n';
4674	s << "\tmaxPerStageResources = " << value.maxPerStageResources << '\n';
4675	s << "\tmaxDescriptorSetSamplers = " << value.maxDescriptorSetSamplers << '\n';
4676	s << "\tmaxDescriptorSetUniformBuffers = " << value.maxDescriptorSetUniformBuffers << '\n';
4677	s << "\tmaxDescriptorSetUniformBuffersDynamic = " << value.maxDescriptorSetUniformBuffersDynamic << '\n';
4678	s << "\tmaxDescriptorSetStorageBuffers = " << value.maxDescriptorSetStorageBuffers << '\n';
4679	s << "\tmaxDescriptorSetStorageBuffersDynamic = " << value.maxDescriptorSetStorageBuffersDynamic << '\n';
4680	s << "\tmaxDescriptorSetSampledImages = " << value.maxDescriptorSetSampledImages << '\n';
4681	s << "\tmaxDescriptorSetStorageImages = " << value.maxDescriptorSetStorageImages << '\n';
4682	s << "\tmaxDescriptorSetInputAttachments = " << value.maxDescriptorSetInputAttachments << '\n';
4683	s << "\tmaxVertexInputAttributes = " << value.maxVertexInputAttributes << '\n';
4684	s << "\tmaxVertexInputBindings = " << value.maxVertexInputBindings << '\n';
4685	s << "\tmaxVertexInputAttributeOffset = " << value.maxVertexInputAttributeOffset << '\n';
4686	s << "\tmaxVertexInputBindingStride = " << value.maxVertexInputBindingStride << '\n';
4687	s << "\tmaxVertexOutputComponents = " << value.maxVertexOutputComponents << '\n';
4688	s << "\tmaxTessellationGenerationLevel = " << value.maxTessellationGenerationLevel << '\n';
4689	s << "\tmaxTessellationPatchSize = " << value.maxTessellationPatchSize << '\n';
4690	s << "\tmaxTessellationControlPerVertexInputComponents = " << value.maxTessellationControlPerVertexInputComponents << '\n';
4691	s << "\tmaxTessellationControlPerVertexOutputComponents = " << value.maxTessellationControlPerVertexOutputComponents << '\n';
4692	s << "\tmaxTessellationControlPerPatchOutputComponents = " << value.maxTessellationControlPerPatchOutputComponents << '\n';
4693	s << "\tmaxTessellationControlTotalOutputComponents = " << value.maxTessellationControlTotalOutputComponents << '\n';
4694	s << "\tmaxTessellationEvaluationInputComponents = " << value.maxTessellationEvaluationInputComponents << '\n';
4695	s << "\tmaxTessellationEvaluationOutputComponents = " << value.maxTessellationEvaluationOutputComponents << '\n';
4696	s << "\tmaxGeometryShaderInvocations = " << value.maxGeometryShaderInvocations << '\n';
4697	s << "\tmaxGeometryInputComponents = " << value.maxGeometryInputComponents << '\n';
4698	s << "\tmaxGeometryOutputComponents = " << value.maxGeometryOutputComponents << '\n';
4699	s << "\tmaxGeometryOutputVertices = " << value.maxGeometryOutputVertices << '\n';
4700	s << "\tmaxGeometryTotalOutputComponents = " << value.maxGeometryTotalOutputComponents << '\n';
4701	s << "\tmaxFragmentInputComponents = " << value.maxFragmentInputComponents << '\n';
4702	s << "\tmaxFragmentOutputAttachments = " << value.maxFragmentOutputAttachments << '\n';
4703	s << "\tmaxFragmentDualSrcAttachments = " << value.maxFragmentDualSrcAttachments << '\n';
4704	s << "\tmaxFragmentCombinedOutputResources = " << value.maxFragmentCombinedOutputResources << '\n';
4705	s << "\tmaxComputeSharedMemorySize = " << value.maxComputeSharedMemorySize << '\n';
4706	s << "\tmaxComputeWorkGroupCount = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupCount), DE_ARRAY_END(value.maxComputeWorkGroupCount)) << '\n';
4707	s << "\tmaxComputeWorkGroupInvocations = " << value.maxComputeWorkGroupInvocations << '\n';
4708	s << "\tmaxComputeWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupSize), DE_ARRAY_END(value.maxComputeWorkGroupSize)) << '\n';
4709	s << "\tsubPixelPrecisionBits = " << value.subPixelPrecisionBits << '\n';
4710	s << "\tsubTexelPrecisionBits = " << value.subTexelPrecisionBits << '\n';
4711	s << "\tmipmapPrecisionBits = " << value.mipmapPrecisionBits << '\n';
4712	s << "\tmaxDrawIndexedIndexValue = " << value.maxDrawIndexedIndexValue << '\n';
4713	s << "\tmaxDrawIndirectCount = " << value.maxDrawIndirectCount << '\n';
4714	s << "\tmaxSamplerLodBias = " << value.maxSamplerLodBias << '\n';
4715	s << "\tmaxSamplerAnisotropy = " << value.maxSamplerAnisotropy << '\n';
4716	s << "\tmaxViewports = " << value.maxViewports << '\n';
4717	s << "\tmaxViewportDimensions = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxViewportDimensions), DE_ARRAY_END(value.maxViewportDimensions)) << '\n';
4718	s << "\tviewportBoundsRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.viewportBoundsRange), DE_ARRAY_END(value.viewportBoundsRange)) << '\n';
4719	s << "\tviewportSubPixelBits = " << value.viewportSubPixelBits << '\n';
4720	s << "\tminMemoryMapAlignment = " << value.minMemoryMapAlignment << '\n';
4721	s << "\tminTexelBufferOffsetAlignment = " << value.minTexelBufferOffsetAlignment << '\n';
4722	s << "\tminUniformBufferOffsetAlignment = " << value.minUniformBufferOffsetAlignment << '\n';
4723	s << "\tminStorageBufferOffsetAlignment = " << value.minStorageBufferOffsetAlignment << '\n';
4724	s << "\tminTexelOffset = " << value.minTexelOffset << '\n';
4725	s << "\tmaxTexelOffset = " << value.maxTexelOffset << '\n';
4726	s << "\tminTexelGatherOffset = " << value.minTexelGatherOffset << '\n';
4727	s << "\tmaxTexelGatherOffset = " << value.maxTexelGatherOffset << '\n';
4728	s << "\tminInterpolationOffset = " << value.minInterpolationOffset << '\n';
4729	s << "\tmaxInterpolationOffset = " << value.maxInterpolationOffset << '\n';
4730	s << "\tsubPixelInterpolationOffsetBits = " << value.subPixelInterpolationOffsetBits << '\n';
4731	s << "\tmaxFramebufferWidth = " << value.maxFramebufferWidth << '\n';
4732	s << "\tmaxFramebufferHeight = " << value.maxFramebufferHeight << '\n';
4733	s << "\tmaxFramebufferLayers = " << value.maxFramebufferLayers << '\n';
4734	s << "\tframebufferColorSampleCounts = " << getSampleCountFlagsStr(value.framebufferColorSampleCounts) << '\n';
4735	s << "\tframebufferDepthSampleCounts = " << getSampleCountFlagsStr(value.framebufferDepthSampleCounts) << '\n';
4736	s << "\tframebufferStencilSampleCounts = " << getSampleCountFlagsStr(value.framebufferStencilSampleCounts) << '\n';
4737	s << "\tframebufferNoAttachmentsSampleCounts = " << getSampleCountFlagsStr(value.framebufferNoAttachmentsSampleCounts) << '\n';
4738	s << "\tmaxColorAttachments = " << value.maxColorAttachments << '\n';
4739	s << "\tsampledImageColorSampleCounts = " << getSampleCountFlagsStr(value.sampledImageColorSampleCounts) << '\n';
4740	s << "\tsampledImageIntegerSampleCounts = " << getSampleCountFlagsStr(value.sampledImageIntegerSampleCounts) << '\n';
4741	s << "\tsampledImageDepthSampleCounts = " << getSampleCountFlagsStr(value.sampledImageDepthSampleCounts) << '\n';
4742	s << "\tsampledImageStencilSampleCounts = " << getSampleCountFlagsStr(value.sampledImageStencilSampleCounts) << '\n';
4743	s << "\tstorageImageSampleCounts = " << getSampleCountFlagsStr(value.storageImageSampleCounts) << '\n';
4744	s << "\tmaxSampleMaskWords = " << value.maxSampleMaskWords << '\n';
4745	s << "\ttimestampComputeAndGraphics = " << value.timestampComputeAndGraphics << '\n';
4746	s << "\ttimestampPeriod = " << value.timestampPeriod << '\n';
4747	s << "\tmaxClipDistances = " << value.maxClipDistances << '\n';
4748	s << "\tmaxCullDistances = " << value.maxCullDistances << '\n';
4749	s << "\tmaxCombinedClipAndCullDistances = " << value.maxCombinedClipAndCullDistances << '\n';
4750	s << "\tdiscreteQueuePriorities = " << value.discreteQueuePriorities << '\n';
4751	s << "\tpointSizeRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.pointSizeRange), DE_ARRAY_END(value.pointSizeRange)) << '\n';
4752	s << "\tlineWidthRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.lineWidthRange), DE_ARRAY_END(value.lineWidthRange)) << '\n';
4753	s << "\tpointSizeGranularity = " << value.pointSizeGranularity << '\n';
4754	s << "\tlineWidthGranularity = " << value.lineWidthGranularity << '\n';
4755	s << "\tstrictLines = " << value.strictLines << '\n';
4756	s << "\tstandardSampleLocations = " << value.standardSampleLocations << '\n';
4757	s << "\toptimalBufferCopyOffsetAlignment = " << value.optimalBufferCopyOffsetAlignment << '\n';
4758	s << "\toptimalBufferCopyRowPitchAlignment = " << value.optimalBufferCopyRowPitchAlignment << '\n';
4759	s << "\tnonCoherentAtomSize = " << value.nonCoherentAtomSize << '\n';
4760	s << '}';
4761	return s;
4762}
4763
4764std::ostream& operator<< (std::ostream& s, const VkSemaphoreCreateInfo& value)
4765{
4766	s << "VkSemaphoreCreateInfo = {\n";
4767	s << "\tsType = " << value.sType << '\n';
4768	s << "\tpNext = " << value.pNext << '\n';
4769	s << "\tflags = " << getSemaphoreCreateFlagsStr(value.flags) << '\n';
4770	s << '}';
4771	return s;
4772}
4773
4774std::ostream& operator<< (std::ostream& s, const VkQueryPoolCreateInfo& value)
4775{
4776	s << "VkQueryPoolCreateInfo = {\n";
4777	s << "\tsType = " << value.sType << '\n';
4778	s << "\tpNext = " << value.pNext << '\n';
4779	s << "\tflags = " << getQueryPoolCreateFlagsStr(value.flags) << '\n';
4780	s << "\tqueryType = " << value.queryType << '\n';
4781	s << "\tqueryCount = " << value.queryCount << '\n';
4782	s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
4783	s << '}';
4784	return s;
4785}
4786
4787std::ostream& operator<< (std::ostream& s, const VkFramebufferCreateInfo& value)
4788{
4789	s << "VkFramebufferCreateInfo = {\n";
4790	s << "\tsType = " << value.sType << '\n';
4791	s << "\tpNext = " << value.pNext << '\n';
4792	s << "\tflags = " << getFramebufferCreateFlagsStr(value.flags) << '\n';
4793	s << "\trenderPass = " << value.renderPass << '\n';
4794	s << "\tattachmentCount = " << value.attachmentCount << '\n';
4795	s << "\tpAttachments = " << value.pAttachments << '\n';
4796	s << "\twidth = " << value.width << '\n';
4797	s << "\theight = " << value.height << '\n';
4798	s << "\tlayers = " << value.layers << '\n';
4799	s << '}';
4800	return s;
4801}
4802
4803std::ostream& operator<< (std::ostream& s, const VkDrawIndirectCommand& value)
4804{
4805	s << "VkDrawIndirectCommand = {\n";
4806	s << "\tvertexCount = " << value.vertexCount << '\n';
4807	s << "\tinstanceCount = " << value.instanceCount << '\n';
4808	s << "\tfirstVertex = " << value.firstVertex << '\n';
4809	s << "\tfirstInstance = " << value.firstInstance << '\n';
4810	s << '}';
4811	return s;
4812}
4813
4814std::ostream& operator<< (std::ostream& s, const VkDrawIndexedIndirectCommand& value)
4815{
4816	s << "VkDrawIndexedIndirectCommand = {\n";
4817	s << "\tindexCount = " << value.indexCount << '\n';
4818	s << "\tinstanceCount = " << value.instanceCount << '\n';
4819	s << "\tfirstIndex = " << value.firstIndex << '\n';
4820	s << "\tvertexOffset = " << value.vertexOffset << '\n';
4821	s << "\tfirstInstance = " << value.firstInstance << '\n';
4822	s << '}';
4823	return s;
4824}
4825
4826std::ostream& operator<< (std::ostream& s, const VkDispatchIndirectCommand& value)
4827{
4828	s << "VkDispatchIndirectCommand = {\n";
4829	s << "\tx = " << value.x << '\n';
4830	s << "\ty = " << value.y << '\n';
4831	s << "\tz = " << value.z << '\n';
4832	s << '}';
4833	return s;
4834}
4835
4836std::ostream& operator<< (std::ostream& s, const VkSubmitInfo& value)
4837{
4838	s << "VkSubmitInfo = {\n";
4839	s << "\tsType = " << value.sType << '\n';
4840	s << "\tpNext = " << value.pNext << '\n';
4841	s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
4842	s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
4843	s << "\tpWaitDstStageMask = " << getPipelineStageFlagsStr(*value.pWaitDstStageMask) << '\n';
4844	s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
4845	s << "\tpCommandBuffers = " << value.pCommandBuffers << '\n';
4846	s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
4847	s << "\tpSignalSemaphores = " << value.pSignalSemaphores << '\n';
4848	s << '}';
4849	return s;
4850}
4851
4852std::ostream& operator<< (std::ostream& s, const VkDisplayPropertiesKHR& value)
4853{
4854	s << "VkDisplayPropertiesKHR = {\n";
4855	s << "\tdisplay = " << value.display << '\n';
4856	s << "\tdisplayName = " << getCharPtrStr(value.displayName) << '\n';
4857	s << "\tphysicalDimensions = " << value.physicalDimensions << '\n';
4858	s << "\tphysicalResolution = " << value.physicalResolution << '\n';
4859	s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
4860	s << "\tplaneReorderPossible = " << value.planeReorderPossible << '\n';
4861	s << "\tpersistentContent = " << value.persistentContent << '\n';
4862	s << '}';
4863	return s;
4864}
4865
4866std::ostream& operator<< (std::ostream& s, const VkDisplayPlanePropertiesKHR& value)
4867{
4868	s << "VkDisplayPlanePropertiesKHR = {\n";
4869	s << "\tcurrentDisplay = " << value.currentDisplay << '\n';
4870	s << "\tcurrentStackIndex = " << value.currentStackIndex << '\n';
4871	s << '}';
4872	return s;
4873}
4874
4875std::ostream& operator<< (std::ostream& s, const VkDisplayModeParametersKHR& value)
4876{
4877	s << "VkDisplayModeParametersKHR = {\n";
4878	s << "\tvisibleRegion = " << value.visibleRegion << '\n';
4879	s << "\trefreshRate = " << value.refreshRate << '\n';
4880	s << '}';
4881	return s;
4882}
4883
4884std::ostream& operator<< (std::ostream& s, const VkDisplayModePropertiesKHR& value)
4885{
4886	s << "VkDisplayModePropertiesKHR = {\n";
4887	s << "\tdisplayMode = " << value.displayMode << '\n';
4888	s << "\tparameters = " << value.parameters << '\n';
4889	s << '}';
4890	return s;
4891}
4892
4893std::ostream& operator<< (std::ostream& s, const VkDisplayModeCreateInfoKHR& value)
4894{
4895	s << "VkDisplayModeCreateInfoKHR = {\n";
4896	s << "\tsType = " << value.sType << '\n';
4897	s << "\tpNext = " << value.pNext << '\n';
4898	s << "\tflags = " << getDisplayModeCreateFlagsKHRStr(value.flags) << '\n';
4899	s << "\tparameters = " << value.parameters << '\n';
4900	s << '}';
4901	return s;
4902}
4903
4904std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilitiesKHR& value)
4905{
4906	s << "VkDisplayPlaneCapabilitiesKHR = {\n";
4907	s << "\tsupportedAlpha = " << getDisplayPlaneAlphaFlagsKHRStr(value.supportedAlpha) << '\n';
4908	s << "\tminSrcPosition = " << value.minSrcPosition << '\n';
4909	s << "\tmaxSrcPosition = " << value.maxSrcPosition << '\n';
4910	s << "\tminSrcExtent = " << value.minSrcExtent << '\n';
4911	s << "\tmaxSrcExtent = " << value.maxSrcExtent << '\n';
4912	s << "\tminDstPosition = " << value.minDstPosition << '\n';
4913	s << "\tmaxDstPosition = " << value.maxDstPosition << '\n';
4914	s << "\tminDstExtent = " << value.minDstExtent << '\n';
4915	s << "\tmaxDstExtent = " << value.maxDstExtent << '\n';
4916	s << '}';
4917	return s;
4918}
4919
4920std::ostream& operator<< (std::ostream& s, const VkDisplaySurfaceCreateInfoKHR& value)
4921{
4922	s << "VkDisplaySurfaceCreateInfoKHR = {\n";
4923	s << "\tsType = " << value.sType << '\n';
4924	s << "\tpNext = " << value.pNext << '\n';
4925	s << "\tflags = " << getDisplaySurfaceCreateFlagsKHRStr(value.flags) << '\n';
4926	s << "\tdisplayMode = " << value.displayMode << '\n';
4927	s << "\tplaneIndex = " << value.planeIndex << '\n';
4928	s << "\tplaneStackIndex = " << value.planeStackIndex << '\n';
4929	s << "\ttransform = " << value.transform << '\n';
4930	s << "\tglobalAlpha = " << value.globalAlpha << '\n';
4931	s << "\talphaMode = " << value.alphaMode << '\n';
4932	s << "\timageExtent = " << value.imageExtent << '\n';
4933	s << '}';
4934	return s;
4935}
4936
4937std::ostream& operator<< (std::ostream& s, const VkDisplayPresentInfoKHR& value)
4938{
4939	s << "VkDisplayPresentInfoKHR = {\n";
4940	s << "\tsType = " << value.sType << '\n';
4941	s << "\tpNext = " << value.pNext << '\n';
4942	s << "\tsrcRect = " << value.srcRect << '\n';
4943	s << "\tdstRect = " << value.dstRect << '\n';
4944	s << "\tpersistent = " << value.persistent << '\n';
4945	s << '}';
4946	return s;
4947}
4948
4949std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilitiesKHR& value)
4950{
4951	s << "VkSurfaceCapabilitiesKHR = {\n";
4952	s << "\tminImageCount = " << value.minImageCount << '\n';
4953	s << "\tmaxImageCount = " << value.maxImageCount << '\n';
4954	s << "\tcurrentExtent = " << value.currentExtent << '\n';
4955	s << "\tminImageExtent = " << value.minImageExtent << '\n';
4956	s << "\tmaxImageExtent = " << value.maxImageExtent << '\n';
4957	s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
4958	s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
4959	s << "\tcurrentTransform = " << value.currentTransform << '\n';
4960	s << "\tsupportedCompositeAlpha = " << getCompositeAlphaFlagsKHRStr(value.supportedCompositeAlpha) << '\n';
4961	s << "\tsupportedUsageFlags = " << getImageUsageFlagsStr(value.supportedUsageFlags) << '\n';
4962	s << '}';
4963	return s;
4964}
4965
4966std::ostream& operator<< (std::ostream& s, const VkSurfaceFormatKHR& value)
4967{
4968	s << "VkSurfaceFormatKHR = {\n";
4969	s << "\tformat = " << value.format << '\n';
4970	s << "\tcolorSpace = " << value.colorSpace << '\n';
4971	s << '}';
4972	return s;
4973}
4974
4975std::ostream& operator<< (std::ostream& s, const VkSwapchainCreateInfoKHR& value)
4976{
4977	s << "VkSwapchainCreateInfoKHR = {\n";
4978	s << "\tsType = " << value.sType << '\n';
4979	s << "\tpNext = " << value.pNext << '\n';
4980	s << "\tflags = " << getSwapchainCreateFlagsKHRStr(value.flags) << '\n';
4981	s << "\tsurface = " << value.surface << '\n';
4982	s << "\tminImageCount = " << value.minImageCount << '\n';
4983	s << "\timageFormat = " << value.imageFormat << '\n';
4984	s << "\timageColorSpace = " << value.imageColorSpace << '\n';
4985	s << "\timageExtent = " << value.imageExtent << '\n';
4986	s << "\timageArrayLayers = " << value.imageArrayLayers << '\n';
4987	s << "\timageUsage = " << getImageUsageFlagsStr(value.imageUsage) << '\n';
4988	s << "\timageSharingMode = " << value.imageSharingMode << '\n';
4989	s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
4990	s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
4991	s << "\tpreTransform = " << value.preTransform << '\n';
4992	s << "\tcompositeAlpha = " << value.compositeAlpha << '\n';
4993	s << "\tpresentMode = " << value.presentMode << '\n';
4994	s << "\tclipped = " << value.clipped << '\n';
4995	s << "\toldSwapchain = " << value.oldSwapchain << '\n';
4996	s << '}';
4997	return s;
4998}
4999
5000std::ostream& operator<< (std::ostream& s, const VkPresentInfoKHR& value)
5001{
5002	s << "VkPresentInfoKHR = {\n";
5003	s << "\tsType = " << value.sType << '\n';
5004	s << "\tpNext = " << value.pNext << '\n';
5005	s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
5006	s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
5007	s << "\tswapchainCount = " << value.swapchainCount << '\n';
5008	s << "\tpSwapchains = " << value.pSwapchains << '\n';
5009	s << "\tpImageIndices = " << value.pImageIndices << '\n';
5010	s << "\tpResults = " << value.pResults << '\n';
5011	s << '}';
5012	return s;
5013}
5014
5015std::ostream& operator<< (std::ostream& s, const VkValidationFeaturesEXT& value)
5016{
5017	s << "VkValidationFeaturesEXT = {\n";
5018	s << "\tsType = " << value.sType << '\n';
5019	s << "\tpNext = " << value.pNext << '\n';
5020	s << "\tenabledValidationFeatureCount = " << value.enabledValidationFeatureCount << '\n';
5021	s << "\tpEnabledValidationFeatures = " << value.pEnabledValidationFeatures << '\n';
5022	s << "\tdisabledValidationFeatureCount = " << value.disabledValidationFeatureCount << '\n';
5023	s << "\tpDisabledValidationFeatures = " << value.pDisabledValidationFeatures << '\n';
5024	s << '}';
5025	return s;
5026}
5027
5028std::ostream& operator<< (std::ostream& s, const VkApplicationParametersEXT& value)
5029{
5030	s << "VkApplicationParametersEXT = {\n";
5031	s << "\tsType = " << value.sType << '\n';
5032	s << "\tpNext = " << value.pNext << '\n';
5033	s << "\tvendorID = " << value.vendorID << '\n';
5034	s << "\tdeviceID = " << value.deviceID << '\n';
5035	s << "\tkey = " << value.key << '\n';
5036	s << "\tvalue = " << value.value << '\n';
5037	s << '}';
5038	return s;
5039}
5040
5041std::ostream& operator<< (std::ostream& s, const VkExportMemorySciBufInfoNV& value)
5042{
5043	s << "VkExportMemorySciBufInfoNV = {\n";
5044	s << "\tsType = " << value.sType << '\n';
5045	s << "\tpNext = " << value.pNext << '\n';
5046	s << "\tpAttributes = " << value.pAttributes << '\n';
5047	s << '}';
5048	return s;
5049}
5050
5051std::ostream& operator<< (std::ostream& s, const VkImportMemorySciBufInfoNV& value)
5052{
5053	s << "VkImportMemorySciBufInfoNV = {\n";
5054	s << "\tsType = " << value.sType << '\n';
5055	s << "\tpNext = " << value.pNext << '\n';
5056	s << "\thandleType = " << value.handleType << '\n';
5057	s << "\thandle = " << value.handle << '\n';
5058	s << '}';
5059	return s;
5060}
5061
5062std::ostream& operator<< (std::ostream& s, const VkMemoryGetSciBufInfoNV& value)
5063{
5064	s << "VkMemoryGetSciBufInfoNV = {\n";
5065	s << "\tsType = " << value.sType << '\n';
5066	s << "\tpNext = " << value.pNext << '\n';
5067	s << "\tmemory = " << value.memory << '\n';
5068	s << "\thandleType = " << value.handleType << '\n';
5069	s << '}';
5070	return s;
5071}
5072
5073std::ostream& operator<< (std::ostream& s, const VkMemorySciBufPropertiesNV& value)
5074{
5075	s << "VkMemorySciBufPropertiesNV = {\n";
5076	s << "\tsType = " << value.sType << '\n';
5077	s << "\tpNext = " << value.pNext << '\n';
5078	s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
5079	s << '}';
5080	return s;
5081}
5082
5083std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalMemorySciBufFeaturesNV& value)
5084{
5085	s << "VkPhysicalDeviceExternalMemorySciBufFeaturesNV = {\n";
5086	s << "\tsType = " << value.sType << '\n';
5087	s << "\tpNext = " << value.pNext << '\n';
5088	s << "\tsciBufImport = " << value.sciBufImport << '\n';
5089	s << "\tsciBufExport = " << value.sciBufExport << '\n';
5090	s << '}';
5091	return s;
5092}
5093
5094std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures2& value)
5095{
5096	s << "VkPhysicalDeviceFeatures2 = {\n";
5097	s << "\tsType = " << value.sType << '\n';
5098	s << "\tpNext = " << value.pNext << '\n';
5099	s << "\tfeatures = " << value.features << '\n';
5100	s << '}';
5101	return s;
5102}
5103
5104std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProperties2& value)
5105{
5106	s << "VkPhysicalDeviceProperties2 = {\n";
5107	s << "\tsType = " << value.sType << '\n';
5108	s << "\tpNext = " << value.pNext << '\n';
5109	s << "\tproperties = " << value.properties << '\n';
5110	s << '}';
5111	return s;
5112}
5113
5114std::ostream& operator<< (std::ostream& s, const VkFormatProperties2& value)
5115{
5116	s << "VkFormatProperties2 = {\n";
5117	s << "\tsType = " << value.sType << '\n';
5118	s << "\tpNext = " << value.pNext << '\n';
5119	s << "\tformatProperties = " << value.formatProperties << '\n';
5120	s << '}';
5121	return s;
5122}
5123
5124std::ostream& operator<< (std::ostream& s, const VkImageFormatProperties2& value)
5125{
5126	s << "VkImageFormatProperties2 = {\n";
5127	s << "\tsType = " << value.sType << '\n';
5128	s << "\tpNext = " << value.pNext << '\n';
5129	s << "\timageFormatProperties = " << value.imageFormatProperties << '\n';
5130	s << '}';
5131	return s;
5132}
5133
5134std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageFormatInfo2& value)
5135{
5136	s << "VkPhysicalDeviceImageFormatInfo2 = {\n";
5137	s << "\tsType = " << value.sType << '\n';
5138	s << "\tpNext = " << value.pNext << '\n';
5139	s << "\tformat = " << value.format << '\n';
5140	s << "\ttype = " << value.type << '\n';
5141	s << "\ttiling = " << value.tiling << '\n';
5142	s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
5143	s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
5144	s << '}';
5145	return s;
5146}
5147
5148std::ostream& operator<< (std::ostream& s, const VkQueueFamilyProperties2& value)
5149{
5150	s << "VkQueueFamilyProperties2 = {\n";
5151	s << "\tsType = " << value.sType << '\n';
5152	s << "\tpNext = " << value.pNext << '\n';
5153	s << "\tqueueFamilyProperties = " << value.queueFamilyProperties << '\n';
5154	s << '}';
5155	return s;
5156}
5157
5158std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties2& value)
5159{
5160	s << "VkPhysicalDeviceMemoryProperties2 = {\n";
5161	s << "\tsType = " << value.sType << '\n';
5162	s << "\tpNext = " << value.pNext << '\n';
5163	s << "\tmemoryProperties = " << value.memoryProperties << '\n';
5164	s << '}';
5165	return s;
5166}
5167
5168std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties2& value)
5169{
5170	s << "VkSparseImageFormatProperties2 = {\n";
5171	s << "\tsType = " << value.sType << '\n';
5172	s << "\tpNext = " << value.pNext << '\n';
5173	s << "\tproperties = " << value.properties << '\n';
5174	s << '}';
5175	return s;
5176}
5177
5178std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSparseImageFormatInfo2& value)
5179{
5180	s << "VkPhysicalDeviceSparseImageFormatInfo2 = {\n";
5181	s << "\tsType = " << value.sType << '\n';
5182	s << "\tpNext = " << value.pNext << '\n';
5183	s << "\tformat = " << value.format << '\n';
5184	s << "\ttype = " << value.type << '\n';
5185	s << "\tsamples = " << value.samples << '\n';
5186	s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
5187	s << "\ttiling = " << value.tiling << '\n';
5188	s << '}';
5189	return s;
5190}
5191
5192std::ostream& operator<< (std::ostream& s, const VkConformanceVersion& value)
5193{
5194	s << "VkConformanceVersion = {\n";
5195	s << "\tmajor = " << value.major << '\n';
5196	s << "\tminor = " << value.minor << '\n';
5197	s << "\tsubminor = " << value.subminor << '\n';
5198	s << "\tpatch = " << value.patch << '\n';
5199	s << '}';
5200	return s;
5201}
5202
5203std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDriverProperties& value)
5204{
5205	s << "VkPhysicalDeviceDriverProperties = {\n";
5206	s << "\tsType = " << value.sType << '\n';
5207	s << "\tpNext = " << value.pNext << '\n';
5208	s << "\tdriverID = " << value.driverID << '\n';
5209	s << "\tdriverName = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverName)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverName))) << '\n';
5210	s << "\tdriverInfo = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverInfo)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverInfo))) << '\n';
5211	s << "\tconformanceVersion = " << value.conformanceVersion << '\n';
5212	s << '}';
5213	return s;
5214}
5215
5216std::ostream& operator<< (std::ostream& s, const VkPresentRegionsKHR& value)
5217{
5218	s << "VkPresentRegionsKHR = {\n";
5219	s << "\tsType = " << value.sType << '\n';
5220	s << "\tpNext = " << value.pNext << '\n';
5221	s << "\tswapchainCount = " << value.swapchainCount << '\n';
5222	s << "\tpRegions = " << value.pRegions << '\n';
5223	s << '}';
5224	return s;
5225}
5226
5227std::ostream& operator<< (std::ostream& s, const VkPresentRegionKHR& value)
5228{
5229	s << "VkPresentRegionKHR = {\n";
5230	s << "\trectangleCount = " << value.rectangleCount << '\n';
5231	s << "\tpRectangles = " << value.pRectangles << '\n';
5232	s << '}';
5233	return s;
5234}
5235
5236std::ostream& operator<< (std::ostream& s, const VkRectLayerKHR& value)
5237{
5238	s << "VkRectLayerKHR = {\n";
5239	s << "\toffset = " << value.offset << '\n';
5240	s << "\textent = " << value.extent << '\n';
5241	s << "\tlayer = " << value.layer << '\n';
5242	s << '}';
5243	return s;
5244}
5245
5246std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVariablePointersFeatures& value)
5247{
5248	s << "VkPhysicalDeviceVariablePointersFeatures = {\n";
5249	s << "\tsType = " << value.sType << '\n';
5250	s << "\tpNext = " << value.pNext << '\n';
5251	s << "\tvariablePointersStorageBuffer = " << value.variablePointersStorageBuffer << '\n';
5252	s << "\tvariablePointers = " << value.variablePointers << '\n';
5253	s << '}';
5254	return s;
5255}
5256
5257std::ostream& operator<< (std::ostream& s, const VkExternalMemoryProperties& value)
5258{
5259	s << "VkExternalMemoryProperties = {\n";
5260	s << "\texternalMemoryFeatures = " << getExternalMemoryFeatureFlagsStr(value.externalMemoryFeatures) << '\n';
5261	s << "\texportFromImportedHandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.exportFromImportedHandleTypes) << '\n';
5262	s << "\tcompatibleHandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.compatibleHandleTypes) << '\n';
5263	s << '}';
5264	return s;
5265}
5266
5267std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalImageFormatInfo& value)
5268{
5269	s << "VkPhysicalDeviceExternalImageFormatInfo = {\n";
5270	s << "\tsType = " << value.sType << '\n';
5271	s << "\tpNext = " << value.pNext << '\n';
5272	s << "\thandleType = " << value.handleType << '\n';
5273	s << '}';
5274	return s;
5275}
5276
5277std::ostream& operator<< (std::ostream& s, const VkExternalImageFormatProperties& value)
5278{
5279	s << "VkExternalImageFormatProperties = {\n";
5280	s << "\tsType = " << value.sType << '\n';
5281	s << "\tpNext = " << value.pNext << '\n';
5282	s << "\texternalMemoryProperties = " << value.externalMemoryProperties << '\n';
5283	s << '}';
5284	return s;
5285}
5286
5287std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalBufferInfo& value)
5288{
5289	s << "VkPhysicalDeviceExternalBufferInfo = {\n";
5290	s << "\tsType = " << value.sType << '\n';
5291	s << "\tpNext = " << value.pNext << '\n';
5292	s << "\tflags = " << getBufferCreateFlagsStr(value.flags) << '\n';
5293	s << "\tusage = " << getBufferUsageFlagsStr(value.usage) << '\n';
5294	s << "\thandleType = " << value.handleType << '\n';
5295	s << '}';
5296	return s;
5297}
5298
5299std::ostream& operator<< (std::ostream& s, const VkExternalBufferProperties& value)
5300{
5301	s << "VkExternalBufferProperties = {\n";
5302	s << "\tsType = " << value.sType << '\n';
5303	s << "\tpNext = " << value.pNext << '\n';
5304	s << "\texternalMemoryProperties = " << value.externalMemoryProperties << '\n';
5305	s << '}';
5306	return s;
5307}
5308
5309std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceIDProperties& value)
5310{
5311	s << "VkPhysicalDeviceIDProperties = {\n";
5312	s << "\tsType = " << value.sType << '\n';
5313	s << "\tpNext = " << value.pNext << '\n';
5314	s << "\tdeviceUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.deviceUUID)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.deviceUUID))) << '\n';
5315	s << "\tdriverUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.driverUUID)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.driverUUID))) << '\n';
5316	s << "\tdeviceLUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.deviceLUID)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.deviceLUID))) << '\n';
5317	s << "\tdeviceNodeMask = " << value.deviceNodeMask << '\n';
5318	s << "\tdeviceLUIDValid = " << value.deviceLUIDValid << '\n';
5319	s << '}';
5320	return s;
5321}
5322
5323std::ostream& operator<< (std::ostream& s, const VkExternalMemoryImageCreateInfo& value)
5324{
5325	s << "VkExternalMemoryImageCreateInfo = {\n";
5326	s << "\tsType = " << value.sType << '\n';
5327	s << "\tpNext = " << value.pNext << '\n';
5328	s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.handleTypes) << '\n';
5329	s << '}';
5330	return s;
5331}
5332
5333std::ostream& operator<< (std::ostream& s, const VkExternalMemoryBufferCreateInfo& value)
5334{
5335	s << "VkExternalMemoryBufferCreateInfo = {\n";
5336	s << "\tsType = " << value.sType << '\n';
5337	s << "\tpNext = " << value.pNext << '\n';
5338	s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.handleTypes) << '\n';
5339	s << '}';
5340	return s;
5341}
5342
5343std::ostream& operator<< (std::ostream& s, const VkExportMemoryAllocateInfo& value)
5344{
5345	s << "VkExportMemoryAllocateInfo = {\n";
5346	s << "\tsType = " << value.sType << '\n';
5347	s << "\tpNext = " << value.pNext << '\n';
5348	s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.handleTypes) << '\n';
5349	s << '}';
5350	return s;
5351}
5352
5353std::ostream& operator<< (std::ostream& s, const VkImportMemoryFdInfoKHR& value)
5354{
5355	s << "VkImportMemoryFdInfoKHR = {\n";
5356	s << "\tsType = " << value.sType << '\n';
5357	s << "\tpNext = " << value.pNext << '\n';
5358	s << "\thandleType = " << value.handleType << '\n';
5359	s << "\tfd = " << value.fd << '\n';
5360	s << '}';
5361	return s;
5362}
5363
5364std::ostream& operator<< (std::ostream& s, const VkMemoryFdPropertiesKHR& value)
5365{
5366	s << "VkMemoryFdPropertiesKHR = {\n";
5367	s << "\tsType = " << value.sType << '\n';
5368	s << "\tpNext = " << value.pNext << '\n';
5369	s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
5370	s << '}';
5371	return s;
5372}
5373
5374std::ostream& operator<< (std::ostream& s, const VkMemoryGetFdInfoKHR& value)
5375{
5376	s << "VkMemoryGetFdInfoKHR = {\n";
5377	s << "\tsType = " << value.sType << '\n';
5378	s << "\tpNext = " << value.pNext << '\n';
5379	s << "\tmemory = " << value.memory << '\n';
5380	s << "\thandleType = " << value.handleType << '\n';
5381	s << '}';
5382	return s;
5383}
5384
5385std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalSemaphoreInfo& value)
5386{
5387	s << "VkPhysicalDeviceExternalSemaphoreInfo = {\n";
5388	s << "\tsType = " << value.sType << '\n';
5389	s << "\tpNext = " << value.pNext << '\n';
5390	s << "\thandleType = " << value.handleType << '\n';
5391	s << '}';
5392	return s;
5393}
5394
5395std::ostream& operator<< (std::ostream& s, const VkExternalSemaphoreProperties& value)
5396{
5397	s << "VkExternalSemaphoreProperties = {\n";
5398	s << "\tsType = " << value.sType << '\n';
5399	s << "\tpNext = " << value.pNext << '\n';
5400	s << "\texportFromImportedHandleTypes = " << getExternalSemaphoreHandleTypeFlagsStr(value.exportFromImportedHandleTypes) << '\n';
5401	s << "\tcompatibleHandleTypes = " << getExternalSemaphoreHandleTypeFlagsStr(value.compatibleHandleTypes) << '\n';
5402	s << "\texternalSemaphoreFeatures = " << getExternalSemaphoreFeatureFlagsStr(value.externalSemaphoreFeatures) << '\n';
5403	s << '}';
5404	return s;
5405}
5406
5407std::ostream& operator<< (std::ostream& s, const VkExportSemaphoreCreateInfo& value)
5408{
5409	s << "VkExportSemaphoreCreateInfo = {\n";
5410	s << "\tsType = " << value.sType << '\n';
5411	s << "\tpNext = " << value.pNext << '\n';
5412	s << "\thandleTypes = " << getExternalSemaphoreHandleTypeFlagsStr(value.handleTypes) << '\n';
5413	s << '}';
5414	return s;
5415}
5416
5417std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreFdInfoKHR& value)
5418{
5419	s << "VkImportSemaphoreFdInfoKHR = {\n";
5420	s << "\tsType = " << value.sType << '\n';
5421	s << "\tpNext = " << value.pNext << '\n';
5422	s << "\tsemaphore = " << value.semaphore << '\n';
5423	s << "\tflags = " << getSemaphoreImportFlagsStr(value.flags) << '\n';
5424	s << "\thandleType = " << value.handleType << '\n';
5425	s << "\tfd = " << value.fd << '\n';
5426	s << '}';
5427	return s;
5428}
5429
5430std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetFdInfoKHR& value)
5431{
5432	s << "VkSemaphoreGetFdInfoKHR = {\n";
5433	s << "\tsType = " << value.sType << '\n';
5434	s << "\tpNext = " << value.pNext << '\n';
5435	s << "\tsemaphore = " << value.semaphore << '\n';
5436	s << "\thandleType = " << value.handleType << '\n';
5437	s << '}';
5438	return s;
5439}
5440
5441std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalFenceInfo& value)
5442{
5443	s << "VkPhysicalDeviceExternalFenceInfo = {\n";
5444	s << "\tsType = " << value.sType << '\n';
5445	s << "\tpNext = " << value.pNext << '\n';
5446	s << "\thandleType = " << value.handleType << '\n';
5447	s << '}';
5448	return s;
5449}
5450
5451std::ostream& operator<< (std::ostream& s, const VkExternalFenceProperties& value)
5452{
5453	s << "VkExternalFenceProperties = {\n";
5454	s << "\tsType = " << value.sType << '\n';
5455	s << "\tpNext = " << value.pNext << '\n';
5456	s << "\texportFromImportedHandleTypes = " << getExternalFenceHandleTypeFlagsStr(value.exportFromImportedHandleTypes) << '\n';
5457	s << "\tcompatibleHandleTypes = " << getExternalFenceHandleTypeFlagsStr(value.compatibleHandleTypes) << '\n';
5458	s << "\texternalFenceFeatures = " << getExternalFenceFeatureFlagsStr(value.externalFenceFeatures) << '\n';
5459	s << '}';
5460	return s;
5461}
5462
5463std::ostream& operator<< (std::ostream& s, const VkExportFenceCreateInfo& value)
5464{
5465	s << "VkExportFenceCreateInfo = {\n";
5466	s << "\tsType = " << value.sType << '\n';
5467	s << "\tpNext = " << value.pNext << '\n';
5468	s << "\thandleTypes = " << getExternalFenceHandleTypeFlagsStr(value.handleTypes) << '\n';
5469	s << '}';
5470	return s;
5471}
5472
5473std::ostream& operator<< (std::ostream& s, const VkImportFenceFdInfoKHR& value)
5474{
5475	s << "VkImportFenceFdInfoKHR = {\n";
5476	s << "\tsType = " << value.sType << '\n';
5477	s << "\tpNext = " << value.pNext << '\n';
5478	s << "\tfence = " << value.fence << '\n';
5479	s << "\tflags = " << getFenceImportFlagsStr(value.flags) << '\n';
5480	s << "\thandleType = " << value.handleType << '\n';
5481	s << "\tfd = " << value.fd << '\n';
5482	s << '}';
5483	return s;
5484}
5485
5486std::ostream& operator<< (std::ostream& s, const VkFenceGetFdInfoKHR& value)
5487{
5488	s << "VkFenceGetFdInfoKHR = {\n";
5489	s << "\tsType = " << value.sType << '\n';
5490	s << "\tpNext = " << value.pNext << '\n';
5491	s << "\tfence = " << value.fence << '\n';
5492	s << "\thandleType = " << value.handleType << '\n';
5493	s << '}';
5494	return s;
5495}
5496
5497std::ostream& operator<< (std::ostream& s, const VkExportFenceSciSyncInfoNV& value)
5498{
5499	s << "VkExportFenceSciSyncInfoNV = {\n";
5500	s << "\tsType = " << value.sType << '\n';
5501	s << "\tpNext = " << value.pNext << '\n';
5502	s << "\tpAttributes = " << value.pAttributes << '\n';
5503	s << '}';
5504	return s;
5505}
5506
5507std::ostream& operator<< (std::ostream& s, const VkImportFenceSciSyncInfoNV& value)
5508{
5509	s << "VkImportFenceSciSyncInfoNV = {\n";
5510	s << "\tsType = " << value.sType << '\n';
5511	s << "\tpNext = " << value.pNext << '\n';
5512	s << "\tfence = " << value.fence << '\n';
5513	s << "\thandleType = " << value.handleType << '\n';
5514	s << "\thandle = " << value.handle << '\n';
5515	s << '}';
5516	return s;
5517}
5518
5519std::ostream& operator<< (std::ostream& s, const VkFenceGetSciSyncInfoNV& value)
5520{
5521	s << "VkFenceGetSciSyncInfoNV = {\n";
5522	s << "\tsType = " << value.sType << '\n';
5523	s << "\tpNext = " << value.pNext << '\n';
5524	s << "\tfence = " << value.fence << '\n';
5525	s << "\thandleType = " << value.handleType << '\n';
5526	s << '}';
5527	return s;
5528}
5529
5530std::ostream& operator<< (std::ostream& s, const VkExportSemaphoreSciSyncInfoNV& value)
5531{
5532	s << "VkExportSemaphoreSciSyncInfoNV = {\n";
5533	s << "\tsType = " << value.sType << '\n';
5534	s << "\tpNext = " << value.pNext << '\n';
5535	s << "\tpAttributes = " << value.pAttributes << '\n';
5536	s << '}';
5537	return s;
5538}
5539
5540std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreSciSyncInfoNV& value)
5541{
5542	s << "VkImportSemaphoreSciSyncInfoNV = {\n";
5543	s << "\tsType = " << value.sType << '\n';
5544	s << "\tpNext = " << value.pNext << '\n';
5545	s << "\tsemaphore = " << value.semaphore << '\n';
5546	s << "\thandleType = " << value.handleType << '\n';
5547	s << "\thandle = " << value.handle << '\n';
5548	s << '}';
5549	return s;
5550}
5551
5552std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetSciSyncInfoNV& value)
5553{
5554	s << "VkSemaphoreGetSciSyncInfoNV = {\n";
5555	s << "\tsType = " << value.sType << '\n';
5556	s << "\tpNext = " << value.pNext << '\n';
5557	s << "\tsemaphore = " << value.semaphore << '\n';
5558	s << "\thandleType = " << value.handleType << '\n';
5559	s << '}';
5560	return s;
5561}
5562
5563std::ostream& operator<< (std::ostream& s, const VkSciSyncAttributesInfoNV& value)
5564{
5565	s << "VkSciSyncAttributesInfoNV = {\n";
5566	s << "\tsType = " << value.sType << '\n';
5567	s << "\tpNext = " << value.pNext << '\n';
5568	s << "\tclientType = " << value.clientType << '\n';
5569	s << "\tprimitiveType = " << value.primitiveType << '\n';
5570	s << '}';
5571	return s;
5572}
5573
5574std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalSciSyncFeaturesNV& value)
5575{
5576	s << "VkPhysicalDeviceExternalSciSyncFeaturesNV = {\n";
5577	s << "\tsType = " << value.sType << '\n';
5578	s << "\tpNext = " << value.pNext << '\n';
5579	s << "\tsciSyncFence = " << value.sciSyncFence << '\n';
5580	s << "\tsciSyncSemaphore = " << value.sciSyncSemaphore << '\n';
5581	s << "\tsciSyncImport = " << value.sciSyncImport << '\n';
5582	s << "\tsciSyncExport = " << value.sciSyncExport << '\n';
5583	s << '}';
5584	return s;
5585}
5586
5587std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalSciSync2FeaturesNV& value)
5588{
5589	s << "VkPhysicalDeviceExternalSciSync2FeaturesNV = {\n";
5590	s << "\tsType = " << value.sType << '\n';
5591	s << "\tpNext = " << value.pNext << '\n';
5592	s << "\tsciSyncFence = " << value.sciSyncFence << '\n';
5593	s << "\tsciSyncSemaphore2 = " << value.sciSyncSemaphore2 << '\n';
5594	s << "\tsciSyncImport = " << value.sciSyncImport << '\n';
5595	s << "\tsciSyncExport = " << value.sciSyncExport << '\n';
5596	s << '}';
5597	return s;
5598}
5599
5600std::ostream& operator<< (std::ostream& s, const VkSemaphoreSciSyncPoolCreateInfoNV& value)
5601{
5602	s << "VkSemaphoreSciSyncPoolCreateInfoNV = {\n";
5603	s << "\tsType = " << value.sType << '\n';
5604	s << "\tpNext = " << value.pNext << '\n';
5605	s << "\thandle = " << value.handle << '\n';
5606	s << '}';
5607	return s;
5608}
5609
5610std::ostream& operator<< (std::ostream& s, const VkSemaphoreSciSyncCreateInfoNV& value)
5611{
5612	s << "VkSemaphoreSciSyncCreateInfoNV = {\n";
5613	s << "\tsType = " << value.sType << '\n';
5614	s << "\tpNext = " << value.pNext << '\n';
5615	s << "\tsemaphorePool = " << value.semaphorePool << '\n';
5616	s << "\tpFence = " << value.pFence << '\n';
5617	s << '}';
5618	return s;
5619}
5620
5621std::ostream& operator<< (std::ostream& s, const VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV& value)
5622{
5623	s << "VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV = {\n";
5624	s << "\tsType = " << value.sType << '\n';
5625	s << "\tpNext = " << value.pNext << '\n';
5626	s << "\tsemaphoreSciSyncPoolRequestCount = " << value.semaphoreSciSyncPoolRequestCount << '\n';
5627	s << '}';
5628	return s;
5629}
5630
5631std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewFeatures& value)
5632{
5633	s << "VkPhysicalDeviceMultiviewFeatures = {\n";
5634	s << "\tsType = " << value.sType << '\n';
5635	s << "\tpNext = " << value.pNext << '\n';
5636	s << "\tmultiview = " << value.multiview << '\n';
5637	s << "\tmultiviewGeometryShader = " << value.multiviewGeometryShader << '\n';
5638	s << "\tmultiviewTessellationShader = " << value.multiviewTessellationShader << '\n';
5639	s << '}';
5640	return s;
5641}
5642
5643std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewProperties& value)
5644{
5645	s << "VkPhysicalDeviceMultiviewProperties = {\n";
5646	s << "\tsType = " << value.sType << '\n';
5647	s << "\tpNext = " << value.pNext << '\n';
5648	s << "\tmaxMultiviewViewCount = " << value.maxMultiviewViewCount << '\n';
5649	s << "\tmaxMultiviewInstanceIndex = " << value.maxMultiviewInstanceIndex << '\n';
5650	s << '}';
5651	return s;
5652}
5653
5654std::ostream& operator<< (std::ostream& s, const VkRenderPassMultiviewCreateInfo& value)
5655{
5656	s << "VkRenderPassMultiviewCreateInfo = {\n";
5657	s << "\tsType = " << value.sType << '\n';
5658	s << "\tpNext = " << value.pNext << '\n';
5659	s << "\tsubpassCount = " << value.subpassCount << '\n';
5660	s << "\tpViewMasks = " << value.pViewMasks << '\n';
5661	s << "\tdependencyCount = " << value.dependencyCount << '\n';
5662	s << "\tpViewOffsets = " << value.pViewOffsets << '\n';
5663	s << "\tcorrelationMaskCount = " << value.correlationMaskCount << '\n';
5664	s << "\tpCorrelationMasks = " << value.pCorrelationMasks << '\n';
5665	s << '}';
5666	return s;
5667}
5668
5669std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilities2EXT& value)
5670{
5671	s << "VkSurfaceCapabilities2EXT = {\n";
5672	s << "\tsType = " << value.sType << '\n';
5673	s << "\tpNext = " << value.pNext << '\n';
5674	s << "\tminImageCount = " << value.minImageCount << '\n';
5675	s << "\tmaxImageCount = " << value.maxImageCount << '\n';
5676	s << "\tcurrentExtent = " << value.currentExtent << '\n';
5677	s << "\tminImageExtent = " << value.minImageExtent << '\n';
5678	s << "\tmaxImageExtent = " << value.maxImageExtent << '\n';
5679	s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
5680	s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
5681	s << "\tcurrentTransform = " << value.currentTransform << '\n';
5682	s << "\tsupportedCompositeAlpha = " << getCompositeAlphaFlagsKHRStr(value.supportedCompositeAlpha) << '\n';
5683	s << "\tsupportedUsageFlags = " << getImageUsageFlagsStr(value.supportedUsageFlags) << '\n';
5684	s << "\tsupportedSurfaceCounters = " << getSurfaceCounterFlagsEXTStr(value.supportedSurfaceCounters) << '\n';
5685	s << '}';
5686	return s;
5687}
5688
5689std::ostream& operator<< (std::ostream& s, const VkDisplayPowerInfoEXT& value)
5690{
5691	s << "VkDisplayPowerInfoEXT = {\n";
5692	s << "\tsType = " << value.sType << '\n';
5693	s << "\tpNext = " << value.pNext << '\n';
5694	s << "\tpowerState = " << value.powerState << '\n';
5695	s << '}';
5696	return s;
5697}
5698
5699std::ostream& operator<< (std::ostream& s, const VkDeviceEventInfoEXT& value)
5700{
5701	s << "VkDeviceEventInfoEXT = {\n";
5702	s << "\tsType = " << value.sType << '\n';
5703	s << "\tpNext = " << value.pNext << '\n';
5704	s << "\tdeviceEvent = " << value.deviceEvent << '\n';
5705	s << '}';
5706	return s;
5707}
5708
5709std::ostream& operator<< (std::ostream& s, const VkDisplayEventInfoEXT& value)
5710{
5711	s << "VkDisplayEventInfoEXT = {\n";
5712	s << "\tsType = " << value.sType << '\n';
5713	s << "\tpNext = " << value.pNext << '\n';
5714	s << "\tdisplayEvent = " << value.displayEvent << '\n';
5715	s << '}';
5716	return s;
5717}
5718
5719std::ostream& operator<< (std::ostream& s, const VkSwapchainCounterCreateInfoEXT& value)
5720{
5721	s << "VkSwapchainCounterCreateInfoEXT = {\n";
5722	s << "\tsType = " << value.sType << '\n';
5723	s << "\tpNext = " << value.pNext << '\n';
5724	s << "\tsurfaceCounters = " << getSurfaceCounterFlagsEXTStr(value.surfaceCounters) << '\n';
5725	s << '}';
5726	return s;
5727}
5728
5729std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceGroupProperties& value)
5730{
5731	s << "VkPhysicalDeviceGroupProperties = {\n";
5732	s << "\tsType = " << value.sType << '\n';
5733	s << "\tpNext = " << value.pNext << '\n';
5734	s << "\tphysicalDeviceCount = " << value.physicalDeviceCount << '\n';
5735	s << "\tphysicalDevices = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.physicalDevices), DE_ARRAY_END(value.physicalDevices)) << '\n';
5736	s << "\tsubsetAllocation = " << value.subsetAllocation << '\n';
5737	s << '}';
5738	return s;
5739}
5740
5741std::ostream& operator<< (std::ostream& s, const VkMemoryAllocateFlagsInfo& value)
5742{
5743	s << "VkMemoryAllocateFlagsInfo = {\n";
5744	s << "\tsType = " << value.sType << '\n';
5745	s << "\tpNext = " << value.pNext << '\n';
5746	s << "\tflags = " << getMemoryAllocateFlagsStr(value.flags) << '\n';
5747	s << "\tdeviceMask = " << value.deviceMask << '\n';
5748	s << '}';
5749	return s;
5750}
5751
5752std::ostream& operator<< (std::ostream& s, const VkBindBufferMemoryInfo& value)
5753{
5754	s << "VkBindBufferMemoryInfo = {\n";
5755	s << "\tsType = " << value.sType << '\n';
5756	s << "\tpNext = " << value.pNext << '\n';
5757	s << "\tbuffer = " << value.buffer << '\n';
5758	s << "\tmemory = " << value.memory << '\n';
5759	s << "\tmemoryOffset = " << value.memoryOffset << '\n';
5760	s << '}';
5761	return s;
5762}
5763
5764std::ostream& operator<< (std::ostream& s, const VkBindBufferMemoryDeviceGroupInfo& value)
5765{
5766	s << "VkBindBufferMemoryDeviceGroupInfo = {\n";
5767	s << "\tsType = " << value.sType << '\n';
5768	s << "\tpNext = " << value.pNext << '\n';
5769	s << "\tdeviceIndexCount = " << value.deviceIndexCount << '\n';
5770	s << "\tpDeviceIndices = " << value.pDeviceIndices << '\n';
5771	s << '}';
5772	return s;
5773}
5774
5775std::ostream& operator<< (std::ostream& s, const VkBindImageMemoryInfo& value)
5776{
5777	s << "VkBindImageMemoryInfo = {\n";
5778	s << "\tsType = " << value.sType << '\n';
5779	s << "\tpNext = " << value.pNext << '\n';
5780	s << "\timage = " << value.image << '\n';
5781	s << "\tmemory = " << value.memory << '\n';
5782	s << "\tmemoryOffset = " << value.memoryOffset << '\n';
5783	s << '}';
5784	return s;
5785}
5786
5787std::ostream& operator<< (std::ostream& s, const VkBindImageMemoryDeviceGroupInfo& value)
5788{
5789	s << "VkBindImageMemoryDeviceGroupInfo = {\n";
5790	s << "\tsType = " << value.sType << '\n';
5791	s << "\tpNext = " << value.pNext << '\n';
5792	s << "\tdeviceIndexCount = " << value.deviceIndexCount << '\n';
5793	s << "\tpDeviceIndices = " << value.pDeviceIndices << '\n';
5794	s << "\tsplitInstanceBindRegionCount = " << value.splitInstanceBindRegionCount << '\n';
5795	s << "\tpSplitInstanceBindRegions = " << value.pSplitInstanceBindRegions << '\n';
5796	s << '}';
5797	return s;
5798}
5799
5800std::ostream& operator<< (std::ostream& s, const VkDeviceGroupRenderPassBeginInfo& value)
5801{
5802	s << "VkDeviceGroupRenderPassBeginInfo = {\n";
5803	s << "\tsType = " << value.sType << '\n';
5804	s << "\tpNext = " << value.pNext << '\n';
5805	s << "\tdeviceMask = " << value.deviceMask << '\n';
5806	s << "\tdeviceRenderAreaCount = " << value.deviceRenderAreaCount << '\n';
5807	s << "\tpDeviceRenderAreas = " << value.pDeviceRenderAreas << '\n';
5808	s << '}';
5809	return s;
5810}
5811
5812std::ostream& operator<< (std::ostream& s, const VkDeviceGroupCommandBufferBeginInfo& value)
5813{
5814	s << "VkDeviceGroupCommandBufferBeginInfo = {\n";
5815	s << "\tsType = " << value.sType << '\n';
5816	s << "\tpNext = " << value.pNext << '\n';
5817	s << "\tdeviceMask = " << value.deviceMask << '\n';
5818	s << '}';
5819	return s;
5820}
5821
5822std::ostream& operator<< (std::ostream& s, const VkDeviceGroupSubmitInfo& value)
5823{
5824	s << "VkDeviceGroupSubmitInfo = {\n";
5825	s << "\tsType = " << value.sType << '\n';
5826	s << "\tpNext = " << value.pNext << '\n';
5827	s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
5828	s << "\tpWaitSemaphoreDeviceIndices = " << value.pWaitSemaphoreDeviceIndices << '\n';
5829	s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
5830	s << "\tpCommandBufferDeviceMasks = " << value.pCommandBufferDeviceMasks << '\n';
5831	s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
5832	s << "\tpSignalSemaphoreDeviceIndices = " << value.pSignalSemaphoreDeviceIndices << '\n';
5833	s << '}';
5834	return s;
5835}
5836
5837std::ostream& operator<< (std::ostream& s, const VkDeviceGroupBindSparseInfo& value)
5838{
5839	s << "VkDeviceGroupBindSparseInfo = {\n";
5840	s << "\tsType = " << value.sType << '\n';
5841	s << "\tpNext = " << value.pNext << '\n';
5842	s << "\tresourceDeviceIndex = " << value.resourceDeviceIndex << '\n';
5843	s << "\tmemoryDeviceIndex = " << value.memoryDeviceIndex << '\n';
5844	s << '}';
5845	return s;
5846}
5847
5848std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentCapabilitiesKHR& value)
5849{
5850	s << "VkDeviceGroupPresentCapabilitiesKHR = {\n";
5851	s << "\tsType = " << value.sType << '\n';
5852	s << "\tpNext = " << value.pNext << '\n';
5853	s << "\tpresentMask = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.presentMask), DE_ARRAY_END(value.presentMask)) << '\n';
5854	s << "\tmodes = " << getDeviceGroupPresentModeFlagsKHRStr(value.modes) << '\n';
5855	s << '}';
5856	return s;
5857}
5858
5859std::ostream& operator<< (std::ostream& s, const VkImageSwapchainCreateInfoKHR& value)
5860{
5861	s << "VkImageSwapchainCreateInfoKHR = {\n";
5862	s << "\tsType = " << value.sType << '\n';
5863	s << "\tpNext = " << value.pNext << '\n';
5864	s << "\tswapchain = " << value.swapchain << '\n';
5865	s << '}';
5866	return s;
5867}
5868
5869std::ostream& operator<< (std::ostream& s, const VkBindImageMemorySwapchainInfoKHR& value)
5870{
5871	s << "VkBindImageMemorySwapchainInfoKHR = {\n";
5872	s << "\tsType = " << value.sType << '\n';
5873	s << "\tpNext = " << value.pNext << '\n';
5874	s << "\tswapchain = " << value.swapchain << '\n';
5875	s << "\timageIndex = " << value.imageIndex << '\n';
5876	s << '}';
5877	return s;
5878}
5879
5880std::ostream& operator<< (std::ostream& s, const VkAcquireNextImageInfoKHR& value)
5881{
5882	s << "VkAcquireNextImageInfoKHR = {\n";
5883	s << "\tsType = " << value.sType << '\n';
5884	s << "\tpNext = " << value.pNext << '\n';
5885	s << "\tswapchain = " << value.swapchain << '\n';
5886	s << "\ttimeout = " << value.timeout << '\n';
5887	s << "\tsemaphore = " << value.semaphore << '\n';
5888	s << "\tfence = " << value.fence << '\n';
5889	s << "\tdeviceMask = " << value.deviceMask << '\n';
5890	s << '}';
5891	return s;
5892}
5893
5894std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentInfoKHR& value)
5895{
5896	s << "VkDeviceGroupPresentInfoKHR = {\n";
5897	s << "\tsType = " << value.sType << '\n';
5898	s << "\tpNext = " << value.pNext << '\n';
5899	s << "\tswapchainCount = " << value.swapchainCount << '\n';
5900	s << "\tpDeviceMasks = " << value.pDeviceMasks << '\n';
5901	s << "\tmode = " << value.mode << '\n';
5902	s << '}';
5903	return s;
5904}
5905
5906std::ostream& operator<< (std::ostream& s, const VkDeviceGroupDeviceCreateInfo& value)
5907{
5908	s << "VkDeviceGroupDeviceCreateInfo = {\n";
5909	s << "\tsType = " << value.sType << '\n';
5910	s << "\tpNext = " << value.pNext << '\n';
5911	s << "\tphysicalDeviceCount = " << value.physicalDeviceCount << '\n';
5912	s << "\tpPhysicalDevices = " << value.pPhysicalDevices << '\n';
5913	s << '}';
5914	return s;
5915}
5916
5917std::ostream& operator<< (std::ostream& s, const VkDeviceGroupSwapchainCreateInfoKHR& value)
5918{
5919	s << "VkDeviceGroupSwapchainCreateInfoKHR = {\n";
5920	s << "\tsType = " << value.sType << '\n';
5921	s << "\tpNext = " << value.pNext << '\n';
5922	s << "\tmodes = " << getDeviceGroupPresentModeFlagsKHRStr(value.modes) << '\n';
5923	s << '}';
5924	return s;
5925}
5926
5927std::ostream& operator<< (std::ostream& s, const VkDescriptorUpdateTemplateEntry& value)
5928{
5929	s << "VkDescriptorUpdateTemplateEntry = {\n";
5930	s << "\tdstBinding = " << value.dstBinding << '\n';
5931	s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
5932	s << "\tdescriptorCount = " << value.descriptorCount << '\n';
5933	s << "\tdescriptorType = " << value.descriptorType << '\n';
5934	s << "\toffset = " << value.offset << '\n';
5935	s << "\tstride = " << value.stride << '\n';
5936	s << '}';
5937	return s;
5938}
5939
5940std::ostream& operator<< (std::ostream& s, const VkDescriptorUpdateTemplateCreateInfo& value)
5941{
5942	s << "VkDescriptorUpdateTemplateCreateInfo = {\n";
5943	s << "\tsType = " << value.sType << '\n';
5944	s << "\tpNext = " << value.pNext << '\n';
5945	s << "\tflags = " << getDescriptorUpdateTemplateCreateFlagsStr(value.flags) << '\n';
5946	s << "\tdescriptorUpdateEntryCount = " << value.descriptorUpdateEntryCount << '\n';
5947	s << "\tpDescriptorUpdateEntries = " << value.pDescriptorUpdateEntries << '\n';
5948	s << "\ttemplateType = " << value.templateType << '\n';
5949	s << "\tdescriptorSetLayout = " << value.descriptorSetLayout << '\n';
5950	s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
5951	s << "\tpipelineLayout = " << value.pipelineLayout << '\n';
5952	s << "\tset = " << value.set << '\n';
5953	s << '}';
5954	return s;
5955}
5956
5957std::ostream& operator<< (std::ostream& s, const VkXYColorEXT& value)
5958{
5959	s << "VkXYColorEXT = {\n";
5960	s << "\tx = " << value.x << '\n';
5961	s << "\ty = " << value.y << '\n';
5962	s << '}';
5963	return s;
5964}
5965
5966std::ostream& operator<< (std::ostream& s, const VkHdrMetadataEXT& value)
5967{
5968	s << "VkHdrMetadataEXT = {\n";
5969	s << "\tsType = " << value.sType << '\n';
5970	s << "\tpNext = " << value.pNext << '\n';
5971	s << "\tdisplayPrimaryRed = " << value.displayPrimaryRed << '\n';
5972	s << "\tdisplayPrimaryGreen = " << value.displayPrimaryGreen << '\n';
5973	s << "\tdisplayPrimaryBlue = " << value.displayPrimaryBlue << '\n';
5974	s << "\twhitePoint = " << value.whitePoint << '\n';
5975	s << "\tmaxLuminance = " << value.maxLuminance << '\n';
5976	s << "\tminLuminance = " << value.minLuminance << '\n';
5977	s << "\tmaxContentLightLevel = " << value.maxContentLightLevel << '\n';
5978	s << "\tmaxFrameAverageLightLevel = " << value.maxFrameAverageLightLevel << '\n';
5979	s << '}';
5980	return s;
5981}
5982
5983std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDiscardRectanglePropertiesEXT& value)
5984{
5985	s << "VkPhysicalDeviceDiscardRectanglePropertiesEXT = {\n";
5986	s << "\tsType = " << value.sType << '\n';
5987	s << "\tpNext = " << value.pNext << '\n';
5988	s << "\tmaxDiscardRectangles = " << value.maxDiscardRectangles << '\n';
5989	s << '}';
5990	return s;
5991}
5992
5993std::ostream& operator<< (std::ostream& s, const VkPipelineDiscardRectangleStateCreateInfoEXT& value)
5994{
5995	s << "VkPipelineDiscardRectangleStateCreateInfoEXT = {\n";
5996	s << "\tsType = " << value.sType << '\n';
5997	s << "\tpNext = " << value.pNext << '\n';
5998	s << "\tflags = " << getPipelineDiscardRectangleStateCreateFlagsEXTStr(value.flags) << '\n';
5999	s << "\tdiscardRectangleMode = " << value.discardRectangleMode << '\n';
6000	s << "\tdiscardRectangleCount = " << value.discardRectangleCount << '\n';
6001	s << "\tpDiscardRectangles = " << value.pDiscardRectangles << '\n';
6002	s << '}';
6003	return s;
6004}
6005
6006std::ostream& operator<< (std::ostream& s, const VkInputAttachmentAspectReference& value)
6007{
6008	s << "VkInputAttachmentAspectReference = {\n";
6009	s << "\tsubpass = " << value.subpass << '\n';
6010	s << "\tinputAttachmentIndex = " << value.inputAttachmentIndex << '\n';
6011	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
6012	s << '}';
6013	return s;
6014}
6015
6016std::ostream& operator<< (std::ostream& s, const VkRenderPassInputAttachmentAspectCreateInfo& value)
6017{
6018	s << "VkRenderPassInputAttachmentAspectCreateInfo = {\n";
6019	s << "\tsType = " << value.sType << '\n';
6020	s << "\tpNext = " << value.pNext << '\n';
6021	s << "\taspectReferenceCount = " << value.aspectReferenceCount << '\n';
6022	s << "\tpAspectReferences = " << value.pAspectReferences << '\n';
6023	s << '}';
6024	return s;
6025}
6026
6027std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSurfaceInfo2KHR& value)
6028{
6029	s << "VkPhysicalDeviceSurfaceInfo2KHR = {\n";
6030	s << "\tsType = " << value.sType << '\n';
6031	s << "\tpNext = " << value.pNext << '\n';
6032	s << "\tsurface = " << value.surface << '\n';
6033	s << '}';
6034	return s;
6035}
6036
6037std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilities2KHR& value)
6038{
6039	s << "VkSurfaceCapabilities2KHR = {\n";
6040	s << "\tsType = " << value.sType << '\n';
6041	s << "\tpNext = " << value.pNext << '\n';
6042	s << "\tsurfaceCapabilities = " << value.surfaceCapabilities << '\n';
6043	s << '}';
6044	return s;
6045}
6046
6047std::ostream& operator<< (std::ostream& s, const VkSurfaceFormat2KHR& value)
6048{
6049	s << "VkSurfaceFormat2KHR = {\n";
6050	s << "\tsType = " << value.sType << '\n';
6051	s << "\tpNext = " << value.pNext << '\n';
6052	s << "\tsurfaceFormat = " << value.surfaceFormat << '\n';
6053	s << '}';
6054	return s;
6055}
6056
6057std::ostream& operator<< (std::ostream& s, const VkDisplayProperties2KHR& value)
6058{
6059	s << "VkDisplayProperties2KHR = {\n";
6060	s << "\tsType = " << value.sType << '\n';
6061	s << "\tpNext = " << value.pNext << '\n';
6062	s << "\tdisplayProperties = " << value.displayProperties << '\n';
6063	s << '}';
6064	return s;
6065}
6066
6067std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneProperties2KHR& value)
6068{
6069	s << "VkDisplayPlaneProperties2KHR = {\n";
6070	s << "\tsType = " << value.sType << '\n';
6071	s << "\tpNext = " << value.pNext << '\n';
6072	s << "\tdisplayPlaneProperties = " << value.displayPlaneProperties << '\n';
6073	s << '}';
6074	return s;
6075}
6076
6077std::ostream& operator<< (std::ostream& s, const VkDisplayModeProperties2KHR& value)
6078{
6079	s << "VkDisplayModeProperties2KHR = {\n";
6080	s << "\tsType = " << value.sType << '\n';
6081	s << "\tpNext = " << value.pNext << '\n';
6082	s << "\tdisplayModeProperties = " << value.displayModeProperties << '\n';
6083	s << '}';
6084	return s;
6085}
6086
6087std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneInfo2KHR& value)
6088{
6089	s << "VkDisplayPlaneInfo2KHR = {\n";
6090	s << "\tsType = " << value.sType << '\n';
6091	s << "\tpNext = " << value.pNext << '\n';
6092	s << "\tmode = " << value.mode << '\n';
6093	s << "\tplaneIndex = " << value.planeIndex << '\n';
6094	s << '}';
6095	return s;
6096}
6097
6098std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilities2KHR& value)
6099{
6100	s << "VkDisplayPlaneCapabilities2KHR = {\n";
6101	s << "\tsType = " << value.sType << '\n';
6102	s << "\tpNext = " << value.pNext << '\n';
6103	s << "\tcapabilities = " << value.capabilities << '\n';
6104	s << '}';
6105	return s;
6106}
6107
6108std::ostream& operator<< (std::ostream& s, const VkSharedPresentSurfaceCapabilitiesKHR& value)
6109{
6110	s << "VkSharedPresentSurfaceCapabilitiesKHR = {\n";
6111	s << "\tsType = " << value.sType << '\n';
6112	s << "\tpNext = " << value.pNext << '\n';
6113	s << "\tsharedPresentSupportedUsageFlags = " << getImageUsageFlagsStr(value.sharedPresentSupportedUsageFlags) << '\n';
6114	s << '}';
6115	return s;
6116}
6117
6118std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice16BitStorageFeatures& value)
6119{
6120	s << "VkPhysicalDevice16BitStorageFeatures = {\n";
6121	s << "\tsType = " << value.sType << '\n';
6122	s << "\tpNext = " << value.pNext << '\n';
6123	s << "\tstorageBuffer16BitAccess = " << value.storageBuffer16BitAccess << '\n';
6124	s << "\tuniformAndStorageBuffer16BitAccess = " << value.uniformAndStorageBuffer16BitAccess << '\n';
6125	s << "\tstoragePushConstant16 = " << value.storagePushConstant16 << '\n';
6126	s << "\tstorageInputOutput16 = " << value.storageInputOutput16 << '\n';
6127	s << '}';
6128	return s;
6129}
6130
6131std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubgroupProperties& value)
6132{
6133	s << "VkPhysicalDeviceSubgroupProperties = {\n";
6134	s << "\tsType = " << value.sType << '\n';
6135	s << "\tpNext = " << value.pNext << '\n';
6136	s << "\tsubgroupSize = " << value.subgroupSize << '\n';
6137	s << "\tsupportedStages = " << getShaderStageFlagsStr(value.supportedStages) << '\n';
6138	s << "\tsupportedOperations = " << getSubgroupFeatureFlagsStr(value.supportedOperations) << '\n';
6139	s << "\tquadOperationsInAllStages = " << value.quadOperationsInAllStages << '\n';
6140	s << '}';
6141	return s;
6142}
6143
6144std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures& value)
6145{
6146	s << "VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures = {\n";
6147	s << "\tsType = " << value.sType << '\n';
6148	s << "\tpNext = " << value.pNext << '\n';
6149	s << "\tshaderSubgroupExtendedTypes = " << value.shaderSubgroupExtendedTypes << '\n';
6150	s << '}';
6151	return s;
6152}
6153
6154std::ostream& operator<< (std::ostream& s, const VkBufferMemoryRequirementsInfo2& value)
6155{
6156	s << "VkBufferMemoryRequirementsInfo2 = {\n";
6157	s << "\tsType = " << value.sType << '\n';
6158	s << "\tpNext = " << value.pNext << '\n';
6159	s << "\tbuffer = " << value.buffer << '\n';
6160	s << '}';
6161	return s;
6162}
6163
6164std::ostream& operator<< (std::ostream& s, const VkImageMemoryRequirementsInfo2& value)
6165{
6166	s << "VkImageMemoryRequirementsInfo2 = {\n";
6167	s << "\tsType = " << value.sType << '\n';
6168	s << "\tpNext = " << value.pNext << '\n';
6169	s << "\timage = " << value.image << '\n';
6170	s << '}';
6171	return s;
6172}
6173
6174std::ostream& operator<< (std::ostream& s, const VkImageSparseMemoryRequirementsInfo2& value)
6175{
6176	s << "VkImageSparseMemoryRequirementsInfo2 = {\n";
6177	s << "\tsType = " << value.sType << '\n';
6178	s << "\tpNext = " << value.pNext << '\n';
6179	s << "\timage = " << value.image << '\n';
6180	s << '}';
6181	return s;
6182}
6183
6184std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements2& value)
6185{
6186	s << "VkMemoryRequirements2 = {\n";
6187	s << "\tsType = " << value.sType << '\n';
6188	s << "\tpNext = " << value.pNext << '\n';
6189	s << "\tmemoryRequirements = " << value.memoryRequirements << '\n';
6190	s << '}';
6191	return s;
6192}
6193
6194std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements2& value)
6195{
6196	s << "VkSparseImageMemoryRequirements2 = {\n";
6197	s << "\tsType = " << value.sType << '\n';
6198	s << "\tpNext = " << value.pNext << '\n';
6199	s << "\tmemoryRequirements = " << value.memoryRequirements << '\n';
6200	s << '}';
6201	return s;
6202}
6203
6204std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePointClippingProperties& value)
6205{
6206	s << "VkPhysicalDevicePointClippingProperties = {\n";
6207	s << "\tsType = " << value.sType << '\n';
6208	s << "\tpNext = " << value.pNext << '\n';
6209	s << "\tpointClippingBehavior = " << value.pointClippingBehavior << '\n';
6210	s << '}';
6211	return s;
6212}
6213
6214std::ostream& operator<< (std::ostream& s, const VkMemoryDedicatedRequirements& value)
6215{
6216	s << "VkMemoryDedicatedRequirements = {\n";
6217	s << "\tsType = " << value.sType << '\n';
6218	s << "\tpNext = " << value.pNext << '\n';
6219	s << "\tprefersDedicatedAllocation = " << value.prefersDedicatedAllocation << '\n';
6220	s << "\trequiresDedicatedAllocation = " << value.requiresDedicatedAllocation << '\n';
6221	s << '}';
6222	return s;
6223}
6224
6225std::ostream& operator<< (std::ostream& s, const VkMemoryDedicatedAllocateInfo& value)
6226{
6227	s << "VkMemoryDedicatedAllocateInfo = {\n";
6228	s << "\tsType = " << value.sType << '\n';
6229	s << "\tpNext = " << value.pNext << '\n';
6230	s << "\timage = " << value.image << '\n';
6231	s << "\tbuffer = " << value.buffer << '\n';
6232	s << '}';
6233	return s;
6234}
6235
6236std::ostream& operator<< (std::ostream& s, const VkImageViewUsageCreateInfo& value)
6237{
6238	s << "VkImageViewUsageCreateInfo = {\n";
6239	s << "\tsType = " << value.sType << '\n';
6240	s << "\tpNext = " << value.pNext << '\n';
6241	s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
6242	s << '}';
6243	return s;
6244}
6245
6246std::ostream& operator<< (std::ostream& s, const VkPipelineTessellationDomainOriginStateCreateInfo& value)
6247{
6248	s << "VkPipelineTessellationDomainOriginStateCreateInfo = {\n";
6249	s << "\tsType = " << value.sType << '\n';
6250	s << "\tpNext = " << value.pNext << '\n';
6251	s << "\tdomainOrigin = " << value.domainOrigin << '\n';
6252	s << '}';
6253	return s;
6254}
6255
6256std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionInfo& value)
6257{
6258	s << "VkSamplerYcbcrConversionInfo = {\n";
6259	s << "\tsType = " << value.sType << '\n';
6260	s << "\tpNext = " << value.pNext << '\n';
6261	s << "\tconversion = " << value.conversion << '\n';
6262	s << '}';
6263	return s;
6264}
6265
6266std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionCreateInfo& value)
6267{
6268	s << "VkSamplerYcbcrConversionCreateInfo = {\n";
6269	s << "\tsType = " << value.sType << '\n';
6270	s << "\tpNext = " << value.pNext << '\n';
6271	s << "\tformat = " << value.format << '\n';
6272	s << "\tycbcrModel = " << value.ycbcrModel << '\n';
6273	s << "\tycbcrRange = " << value.ycbcrRange << '\n';
6274	s << "\tcomponents = " << value.components << '\n';
6275	s << "\txChromaOffset = " << value.xChromaOffset << '\n';
6276	s << "\tyChromaOffset = " << value.yChromaOffset << '\n';
6277	s << "\tchromaFilter = " << value.chromaFilter << '\n';
6278	s << "\tforceExplicitReconstruction = " << value.forceExplicitReconstruction << '\n';
6279	s << '}';
6280	return s;
6281}
6282
6283std::ostream& operator<< (std::ostream& s, const VkBindImagePlaneMemoryInfo& value)
6284{
6285	s << "VkBindImagePlaneMemoryInfo = {\n";
6286	s << "\tsType = " << value.sType << '\n';
6287	s << "\tpNext = " << value.pNext << '\n';
6288	s << "\tplaneAspect = " << value.planeAspect << '\n';
6289	s << '}';
6290	return s;
6291}
6292
6293std::ostream& operator<< (std::ostream& s, const VkImagePlaneMemoryRequirementsInfo& value)
6294{
6295	s << "VkImagePlaneMemoryRequirementsInfo = {\n";
6296	s << "\tsType = " << value.sType << '\n';
6297	s << "\tpNext = " << value.pNext << '\n';
6298	s << "\tplaneAspect = " << value.planeAspect << '\n';
6299	s << '}';
6300	return s;
6301}
6302
6303std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSamplerYcbcrConversionFeatures& value)
6304{
6305	s << "VkPhysicalDeviceSamplerYcbcrConversionFeatures = {\n";
6306	s << "\tsType = " << value.sType << '\n';
6307	s << "\tpNext = " << value.pNext << '\n';
6308	s << "\tsamplerYcbcrConversion = " << value.samplerYcbcrConversion << '\n';
6309	s << '}';
6310	return s;
6311}
6312
6313std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionImageFormatProperties& value)
6314{
6315	s << "VkSamplerYcbcrConversionImageFormatProperties = {\n";
6316	s << "\tsType = " << value.sType << '\n';
6317	s << "\tpNext = " << value.pNext << '\n';
6318	s << "\tcombinedImageSamplerDescriptorCount = " << value.combinedImageSamplerDescriptorCount << '\n';
6319	s << '}';
6320	return s;
6321}
6322
6323std::ostream& operator<< (std::ostream& s, const VkProtectedSubmitInfo& value)
6324{
6325	s << "VkProtectedSubmitInfo = {\n";
6326	s << "\tsType = " << value.sType << '\n';
6327	s << "\tpNext = " << value.pNext << '\n';
6328	s << "\tprotectedSubmit = " << value.protectedSubmit << '\n';
6329	s << '}';
6330	return s;
6331}
6332
6333std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProtectedMemoryFeatures& value)
6334{
6335	s << "VkPhysicalDeviceProtectedMemoryFeatures = {\n";
6336	s << "\tsType = " << value.sType << '\n';
6337	s << "\tpNext = " << value.pNext << '\n';
6338	s << "\tprotectedMemory = " << value.protectedMemory << '\n';
6339	s << '}';
6340	return s;
6341}
6342
6343std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProtectedMemoryProperties& value)
6344{
6345	s << "VkPhysicalDeviceProtectedMemoryProperties = {\n";
6346	s << "\tsType = " << value.sType << '\n';
6347	s << "\tpNext = " << value.pNext << '\n';
6348	s << "\tprotectedNoFault = " << value.protectedNoFault << '\n';
6349	s << '}';
6350	return s;
6351}
6352
6353std::ostream& operator<< (std::ostream& s, const VkDeviceQueueInfo2& value)
6354{
6355	s << "VkDeviceQueueInfo2 = {\n";
6356	s << "\tsType = " << value.sType << '\n';
6357	s << "\tpNext = " << value.pNext << '\n';
6358	s << "\tflags = " << getDeviceQueueCreateFlagsStr(value.flags) << '\n';
6359	s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
6360	s << "\tqueueIndex = " << value.queueIndex << '\n';
6361	s << '}';
6362	return s;
6363}
6364
6365std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSamplerFilterMinmaxProperties& value)
6366{
6367	s << "VkPhysicalDeviceSamplerFilterMinmaxProperties = {\n";
6368	s << "\tsType = " << value.sType << '\n';
6369	s << "\tpNext = " << value.pNext << '\n';
6370	s << "\tfilterMinmaxSingleComponentFormats = " << value.filterMinmaxSingleComponentFormats << '\n';
6371	s << "\tfilterMinmaxImageComponentMapping = " << value.filterMinmaxImageComponentMapping << '\n';
6372	s << '}';
6373	return s;
6374}
6375
6376std::ostream& operator<< (std::ostream& s, const VkSampleLocationEXT& value)
6377{
6378	s << "VkSampleLocationEXT = {\n";
6379	s << "\tx = " << value.x << '\n';
6380	s << "\ty = " << value.y << '\n';
6381	s << '}';
6382	return s;
6383}
6384
6385std::ostream& operator<< (std::ostream& s, const VkSampleLocationsInfoEXT& value)
6386{
6387	s << "VkSampleLocationsInfoEXT = {\n";
6388	s << "\tsType = " << value.sType << '\n';
6389	s << "\tpNext = " << value.pNext << '\n';
6390	s << "\tsampleLocationsPerPixel = " << value.sampleLocationsPerPixel << '\n';
6391	s << "\tsampleLocationGridSize = " << value.sampleLocationGridSize << '\n';
6392	s << "\tsampleLocationsCount = " << value.sampleLocationsCount << '\n';
6393	s << "\tpSampleLocations = " << value.pSampleLocations << '\n';
6394	s << '}';
6395	return s;
6396}
6397
6398std::ostream& operator<< (std::ostream& s, const VkAttachmentSampleLocationsEXT& value)
6399{
6400	s << "VkAttachmentSampleLocationsEXT = {\n";
6401	s << "\tattachmentIndex = " << value.attachmentIndex << '\n';
6402	s << "\tsampleLocationsInfo = " << value.sampleLocationsInfo << '\n';
6403	s << '}';
6404	return s;
6405}
6406
6407std::ostream& operator<< (std::ostream& s, const VkSubpassSampleLocationsEXT& value)
6408{
6409	s << "VkSubpassSampleLocationsEXT = {\n";
6410	s << "\tsubpassIndex = " << value.subpassIndex << '\n';
6411	s << "\tsampleLocationsInfo = " << value.sampleLocationsInfo << '\n';
6412	s << '}';
6413	return s;
6414}
6415
6416std::ostream& operator<< (std::ostream& s, const VkRenderPassSampleLocationsBeginInfoEXT& value)
6417{
6418	s << "VkRenderPassSampleLocationsBeginInfoEXT = {\n";
6419	s << "\tsType = " << value.sType << '\n';
6420	s << "\tpNext = " << value.pNext << '\n';
6421	s << "\tattachmentInitialSampleLocationsCount = " << value.attachmentInitialSampleLocationsCount << '\n';
6422	s << "\tpAttachmentInitialSampleLocations = " << value.pAttachmentInitialSampleLocations << '\n';
6423	s << "\tpostSubpassSampleLocationsCount = " << value.postSubpassSampleLocationsCount << '\n';
6424	s << "\tpPostSubpassSampleLocations = " << value.pPostSubpassSampleLocations << '\n';
6425	s << '}';
6426	return s;
6427}
6428
6429std::ostream& operator<< (std::ostream& s, const VkPipelineSampleLocationsStateCreateInfoEXT& value)
6430{
6431	s << "VkPipelineSampleLocationsStateCreateInfoEXT = {\n";
6432	s << "\tsType = " << value.sType << '\n';
6433	s << "\tpNext = " << value.pNext << '\n';
6434	s << "\tsampleLocationsEnable = " << value.sampleLocationsEnable << '\n';
6435	s << "\tsampleLocationsInfo = " << value.sampleLocationsInfo << '\n';
6436	s << '}';
6437	return s;
6438}
6439
6440std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSampleLocationsPropertiesEXT& value)
6441{
6442	s << "VkPhysicalDeviceSampleLocationsPropertiesEXT = {\n";
6443	s << "\tsType = " << value.sType << '\n';
6444	s << "\tpNext = " << value.pNext << '\n';
6445	s << "\tsampleLocationSampleCounts = " << getSampleCountFlagsStr(value.sampleLocationSampleCounts) << '\n';
6446	s << "\tmaxSampleLocationGridSize = " << value.maxSampleLocationGridSize << '\n';
6447	s << "\tsampleLocationCoordinateRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.sampleLocationCoordinateRange), DE_ARRAY_END(value.sampleLocationCoordinateRange)) << '\n';
6448	s << "\tsampleLocationSubPixelBits = " << value.sampleLocationSubPixelBits << '\n';
6449	s << "\tvariableSampleLocations = " << value.variableSampleLocations << '\n';
6450	s << '}';
6451	return s;
6452}
6453
6454std::ostream& operator<< (std::ostream& s, const VkMultisamplePropertiesEXT& value)
6455{
6456	s << "VkMultisamplePropertiesEXT = {\n";
6457	s << "\tsType = " << value.sType << '\n';
6458	s << "\tpNext = " << value.pNext << '\n';
6459	s << "\tmaxSampleLocationGridSize = " << value.maxSampleLocationGridSize << '\n';
6460	s << '}';
6461	return s;
6462}
6463
6464std::ostream& operator<< (std::ostream& s, const VkSamplerReductionModeCreateInfo& value)
6465{
6466	s << "VkSamplerReductionModeCreateInfo = {\n";
6467	s << "\tsType = " << value.sType << '\n';
6468	s << "\tpNext = " << value.pNext << '\n';
6469	s << "\treductionMode = " << value.reductionMode << '\n';
6470	s << '}';
6471	return s;
6472}
6473
6474std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& value)
6475{
6476	s << "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT = {\n";
6477	s << "\tsType = " << value.sType << '\n';
6478	s << "\tpNext = " << value.pNext << '\n';
6479	s << "\tadvancedBlendCoherentOperations = " << value.advancedBlendCoherentOperations << '\n';
6480	s << '}';
6481	return s;
6482}
6483
6484std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT& value)
6485{
6486	s << "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT = {\n";
6487	s << "\tsType = " << value.sType << '\n';
6488	s << "\tpNext = " << value.pNext << '\n';
6489	s << "\tadvancedBlendMaxColorAttachments = " << value.advancedBlendMaxColorAttachments << '\n';
6490	s << "\tadvancedBlendIndependentBlend = " << value.advancedBlendIndependentBlend << '\n';
6491	s << "\tadvancedBlendNonPremultipliedSrcColor = " << value.advancedBlendNonPremultipliedSrcColor << '\n';
6492	s << "\tadvancedBlendNonPremultipliedDstColor = " << value.advancedBlendNonPremultipliedDstColor << '\n';
6493	s << "\tadvancedBlendCorrelatedOverlap = " << value.advancedBlendCorrelatedOverlap << '\n';
6494	s << "\tadvancedBlendAllOperations = " << value.advancedBlendAllOperations << '\n';
6495	s << '}';
6496	return s;
6497}
6498
6499std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendAdvancedStateCreateInfoEXT& value)
6500{
6501	s << "VkPipelineColorBlendAdvancedStateCreateInfoEXT = {\n";
6502	s << "\tsType = " << value.sType << '\n';
6503	s << "\tpNext = " << value.pNext << '\n';
6504	s << "\tsrcPremultiplied = " << value.srcPremultiplied << '\n';
6505	s << "\tdstPremultiplied = " << value.dstPremultiplied << '\n';
6506	s << "\tblendOverlap = " << value.blendOverlap << '\n';
6507	s << '}';
6508	return s;
6509}
6510
6511std::ostream& operator<< (std::ostream& s, const VkImageFormatListCreateInfo& value)
6512{
6513	s << "VkImageFormatListCreateInfo = {\n";
6514	s << "\tsType = " << value.sType << '\n';
6515	s << "\tpNext = " << value.pNext << '\n';
6516	s << "\tviewFormatCount = " << value.viewFormatCount << '\n';
6517	s << "\tpViewFormats = " << value.pViewFormats << '\n';
6518	s << '}';
6519	return s;
6520}
6521
6522std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMaintenance3Properties& value)
6523{
6524	s << "VkPhysicalDeviceMaintenance3Properties = {\n";
6525	s << "\tsType = " << value.sType << '\n';
6526	s << "\tpNext = " << value.pNext << '\n';
6527	s << "\tmaxPerSetDescriptors = " << value.maxPerSetDescriptors << '\n';
6528	s << "\tmaxMemoryAllocationSize = " << value.maxMemoryAllocationSize << '\n';
6529	s << '}';
6530	return s;
6531}
6532
6533std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutSupport& value)
6534{
6535	s << "VkDescriptorSetLayoutSupport = {\n";
6536	s << "\tsType = " << value.sType << '\n';
6537	s << "\tpNext = " << value.pNext << '\n';
6538	s << "\tsupported = " << value.supported << '\n';
6539	s << '}';
6540	return s;
6541}
6542
6543std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderDrawParametersFeatures& value)
6544{
6545	s << "VkPhysicalDeviceShaderDrawParametersFeatures = {\n";
6546	s << "\tsType = " << value.sType << '\n';
6547	s << "\tpNext = " << value.pNext << '\n';
6548	s << "\tshaderDrawParameters = " << value.shaderDrawParameters << '\n';
6549	s << '}';
6550	return s;
6551}
6552
6553std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderFloat16Int8Features& value)
6554{
6555	s << "VkPhysicalDeviceShaderFloat16Int8Features = {\n";
6556	s << "\tsType = " << value.sType << '\n';
6557	s << "\tpNext = " << value.pNext << '\n';
6558	s << "\tshaderFloat16 = " << value.shaderFloat16 << '\n';
6559	s << "\tshaderInt8 = " << value.shaderInt8 << '\n';
6560	s << '}';
6561	return s;
6562}
6563
6564std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFloatControlsProperties& value)
6565{
6566	s << "VkPhysicalDeviceFloatControlsProperties = {\n";
6567	s << "\tsType = " << value.sType << '\n';
6568	s << "\tpNext = " << value.pNext << '\n';
6569	s << "\tdenormBehaviorIndependence = " << value.denormBehaviorIndependence << '\n';
6570	s << "\troundingModeIndependence = " << value.roundingModeIndependence << '\n';
6571	s << "\tshaderSignedZeroInfNanPreserveFloat16 = " << value.shaderSignedZeroInfNanPreserveFloat16 << '\n';
6572	s << "\tshaderSignedZeroInfNanPreserveFloat32 = " << value.shaderSignedZeroInfNanPreserveFloat32 << '\n';
6573	s << "\tshaderSignedZeroInfNanPreserveFloat64 = " << value.shaderSignedZeroInfNanPreserveFloat64 << '\n';
6574	s << "\tshaderDenormPreserveFloat16 = " << value.shaderDenormPreserveFloat16 << '\n';
6575	s << "\tshaderDenormPreserveFloat32 = " << value.shaderDenormPreserveFloat32 << '\n';
6576	s << "\tshaderDenormPreserveFloat64 = " << value.shaderDenormPreserveFloat64 << '\n';
6577	s << "\tshaderDenormFlushToZeroFloat16 = " << value.shaderDenormFlushToZeroFloat16 << '\n';
6578	s << "\tshaderDenormFlushToZeroFloat32 = " << value.shaderDenormFlushToZeroFloat32 << '\n';
6579	s << "\tshaderDenormFlushToZeroFloat64 = " << value.shaderDenormFlushToZeroFloat64 << '\n';
6580	s << "\tshaderRoundingModeRTEFloat16 = " << value.shaderRoundingModeRTEFloat16 << '\n';
6581	s << "\tshaderRoundingModeRTEFloat32 = " << value.shaderRoundingModeRTEFloat32 << '\n';
6582	s << "\tshaderRoundingModeRTEFloat64 = " << value.shaderRoundingModeRTEFloat64 << '\n';
6583	s << "\tshaderRoundingModeRTZFloat16 = " << value.shaderRoundingModeRTZFloat16 << '\n';
6584	s << "\tshaderRoundingModeRTZFloat32 = " << value.shaderRoundingModeRTZFloat32 << '\n';
6585	s << "\tshaderRoundingModeRTZFloat64 = " << value.shaderRoundingModeRTZFloat64 << '\n';
6586	s << '}';
6587	return s;
6588}
6589
6590std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceHostQueryResetFeatures& value)
6591{
6592	s << "VkPhysicalDeviceHostQueryResetFeatures = {\n";
6593	s << "\tsType = " << value.sType << '\n';
6594	s << "\tpNext = " << value.pNext << '\n';
6595	s << "\thostQueryReset = " << value.hostQueryReset << '\n';
6596	s << '}';
6597	return s;
6598}
6599
6600std::ostream& operator<< (std::ostream& s, const VkDeviceQueueGlobalPriorityCreateInfoKHR& value)
6601{
6602	s << "VkDeviceQueueGlobalPriorityCreateInfoKHR = {\n";
6603	s << "\tsType = " << value.sType << '\n';
6604	s << "\tpNext = " << value.pNext << '\n';
6605	s << "\tglobalPriority = " << value.globalPriority << '\n';
6606	s << '}';
6607	return s;
6608}
6609
6610std::ostream& operator<< (std::ostream& s, const VkDebugUtilsObjectNameInfoEXT& value)
6611{
6612	s << "VkDebugUtilsObjectNameInfoEXT = {\n";
6613	s << "\tsType = " << value.sType << '\n';
6614	s << "\tpNext = " << value.pNext << '\n';
6615	s << "\tobjectType = " << value.objectType << '\n';
6616	s << "\tobjectHandle = " << value.objectHandle << '\n';
6617	s << "\tpObjectName = " << getCharPtrStr(value.pObjectName) << '\n';
6618	s << '}';
6619	return s;
6620}
6621
6622std::ostream& operator<< (std::ostream& s, const VkDebugUtilsObjectTagInfoEXT& value)
6623{
6624	s << "VkDebugUtilsObjectTagInfoEXT = {\n";
6625	s << "\tsType = " << value.sType << '\n';
6626	s << "\tpNext = " << value.pNext << '\n';
6627	s << "\tobjectType = " << value.objectType << '\n';
6628	s << "\tobjectHandle = " << value.objectHandle << '\n';
6629	s << "\ttagName = " << value.tagName << '\n';
6630	s << "\ttagSize = " << value.tagSize << '\n';
6631	s << "\tpTag = " << value.pTag << '\n';
6632	s << '}';
6633	return s;
6634}
6635
6636std::ostream& operator<< (std::ostream& s, const VkDebugUtilsLabelEXT& value)
6637{
6638	s << "VkDebugUtilsLabelEXT = {\n";
6639	s << "\tsType = " << value.sType << '\n';
6640	s << "\tpNext = " << value.pNext << '\n';
6641	s << "\tpLabelName = " << getCharPtrStr(value.pLabelName) << '\n';
6642	s << "\tcolor = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.color), DE_ARRAY_END(value.color)) << '\n';
6643	s << '}';
6644	return s;
6645}
6646
6647std::ostream& operator<< (std::ostream& s, const VkDebugUtilsMessengerCreateInfoEXT& value)
6648{
6649	s << "VkDebugUtilsMessengerCreateInfoEXT = {\n";
6650	s << "\tsType = " << value.sType << '\n';
6651	s << "\tpNext = " << value.pNext << '\n';
6652	s << "\tflags = " << getDebugUtilsMessengerCreateFlagsEXTStr(value.flags) << '\n';
6653	s << "\tmessageSeverity = " << getDebugUtilsMessageSeverityFlagsEXTStr(value.messageSeverity) << '\n';
6654	s << "\tmessageType = " << getDebugUtilsMessageTypeFlagsEXTStr(value.messageType) << '\n';
6655	s << "\tpfnUserCallback = " << value.pfnUserCallback << '\n';
6656	s << "\tpUserData = " << value.pUserData << '\n';
6657	s << '}';
6658	return s;
6659}
6660
6661std::ostream& operator<< (std::ostream& s, const VkDebugUtilsMessengerCallbackDataEXT& value)
6662{
6663	s << "VkDebugUtilsMessengerCallbackDataEXT = {\n";
6664	s << "\tsType = " << value.sType << '\n';
6665	s << "\tpNext = " << value.pNext << '\n';
6666	s << "\tflags = " << getDebugUtilsMessengerCallbackDataFlagsEXTStr(value.flags) << '\n';
6667	s << "\tpMessageIdName = " << getCharPtrStr(value.pMessageIdName) << '\n';
6668	s << "\tmessageIdNumber = " << value.messageIdNumber << '\n';
6669	s << "\tpMessage = " << getCharPtrStr(value.pMessage) << '\n';
6670	s << "\tqueueLabelCount = " << value.queueLabelCount << '\n';
6671	s << "\tpQueueLabels = " << value.pQueueLabels << '\n';
6672	s << "\tcmdBufLabelCount = " << value.cmdBufLabelCount << '\n';
6673	s << "\tpCmdBufLabels = " << value.pCmdBufLabels << '\n';
6674	s << "\tobjectCount = " << value.objectCount << '\n';
6675	s << "\tpObjects = " << value.pObjects << '\n';
6676	s << '}';
6677	return s;
6678}
6679
6680std::ostream& operator<< (std::ostream& s, const VkImportMemoryHostPointerInfoEXT& value)
6681{
6682	s << "VkImportMemoryHostPointerInfoEXT = {\n";
6683	s << "\tsType = " << value.sType << '\n';
6684	s << "\tpNext = " << value.pNext << '\n';
6685	s << "\thandleType = " << value.handleType << '\n';
6686	s << "\tpHostPointer = " << value.pHostPointer << '\n';
6687	s << '}';
6688	return s;
6689}
6690
6691std::ostream& operator<< (std::ostream& s, const VkMemoryHostPointerPropertiesEXT& value)
6692{
6693	s << "VkMemoryHostPointerPropertiesEXT = {\n";
6694	s << "\tsType = " << value.sType << '\n';
6695	s << "\tpNext = " << value.pNext << '\n';
6696	s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
6697	s << '}';
6698	return s;
6699}
6700
6701std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalMemoryHostPropertiesEXT& value)
6702{
6703	s << "VkPhysicalDeviceExternalMemoryHostPropertiesEXT = {\n";
6704	s << "\tsType = " << value.sType << '\n';
6705	s << "\tpNext = " << value.pNext << '\n';
6706	s << "\tminImportedHostPointerAlignment = " << value.minImportedHostPointerAlignment << '\n';
6707	s << '}';
6708	return s;
6709}
6710
6711std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceConservativeRasterizationPropertiesEXT& value)
6712{
6713	s << "VkPhysicalDeviceConservativeRasterizationPropertiesEXT = {\n";
6714	s << "\tsType = " << value.sType << '\n';
6715	s << "\tpNext = " << value.pNext << '\n';
6716	s << "\tprimitiveOverestimationSize = " << value.primitiveOverestimationSize << '\n';
6717	s << "\tmaxExtraPrimitiveOverestimationSize = " << value.maxExtraPrimitiveOverestimationSize << '\n';
6718	s << "\textraPrimitiveOverestimationSizeGranularity = " << value.extraPrimitiveOverestimationSizeGranularity << '\n';
6719	s << "\tprimitiveUnderestimation = " << value.primitiveUnderestimation << '\n';
6720	s << "\tconservativePointAndLineRasterization = " << value.conservativePointAndLineRasterization << '\n';
6721	s << "\tdegenerateTrianglesRasterized = " << value.degenerateTrianglesRasterized << '\n';
6722	s << "\tdegenerateLinesRasterized = " << value.degenerateLinesRasterized << '\n';
6723	s << "\tfullyCoveredFragmentShaderInputVariable = " << value.fullyCoveredFragmentShaderInputVariable << '\n';
6724	s << "\tconservativeRasterizationPostDepthCoverage = " << value.conservativeRasterizationPostDepthCoverage << '\n';
6725	s << '}';
6726	return s;
6727}
6728
6729std::ostream& operator<< (std::ostream& s, const VkCalibratedTimestampInfoEXT& value)
6730{
6731	s << "VkCalibratedTimestampInfoEXT = {\n";
6732	s << "\tsType = " << value.sType << '\n';
6733	s << "\tpNext = " << value.pNext << '\n';
6734	s << "\ttimeDomain = " << value.timeDomain << '\n';
6735	s << '}';
6736	return s;
6737}
6738
6739std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationConservativeStateCreateInfoEXT& value)
6740{
6741	s << "VkPipelineRasterizationConservativeStateCreateInfoEXT = {\n";
6742	s << "\tsType = " << value.sType << '\n';
6743	s << "\tpNext = " << value.pNext << '\n';
6744	s << "\tflags = " << getPipelineRasterizationConservativeStateCreateFlagsEXTStr(value.flags) << '\n';
6745	s << "\tconservativeRasterizationMode = " << value.conservativeRasterizationMode << '\n';
6746	s << "\textraPrimitiveOverestimationSize = " << value.extraPrimitiveOverestimationSize << '\n';
6747	s << '}';
6748	return s;
6749}
6750
6751std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingFeatures& value)
6752{
6753	s << "VkPhysicalDeviceDescriptorIndexingFeatures = {\n";
6754	s << "\tsType = " << value.sType << '\n';
6755	s << "\tpNext = " << value.pNext << '\n';
6756	s << "\tshaderInputAttachmentArrayDynamicIndexing = " << value.shaderInputAttachmentArrayDynamicIndexing << '\n';
6757	s << "\tshaderUniformTexelBufferArrayDynamicIndexing = " << value.shaderUniformTexelBufferArrayDynamicIndexing << '\n';
6758	s << "\tshaderStorageTexelBufferArrayDynamicIndexing = " << value.shaderStorageTexelBufferArrayDynamicIndexing << '\n';
6759	s << "\tshaderUniformBufferArrayNonUniformIndexing = " << value.shaderUniformBufferArrayNonUniformIndexing << '\n';
6760	s << "\tshaderSampledImageArrayNonUniformIndexing = " << value.shaderSampledImageArrayNonUniformIndexing << '\n';
6761	s << "\tshaderStorageBufferArrayNonUniformIndexing = " << value.shaderStorageBufferArrayNonUniformIndexing << '\n';
6762	s << "\tshaderStorageImageArrayNonUniformIndexing = " << value.shaderStorageImageArrayNonUniformIndexing << '\n';
6763	s << "\tshaderInputAttachmentArrayNonUniformIndexing = " << value.shaderInputAttachmentArrayNonUniformIndexing << '\n';
6764	s << "\tshaderUniformTexelBufferArrayNonUniformIndexing = " << value.shaderUniformTexelBufferArrayNonUniformIndexing << '\n';
6765	s << "\tshaderStorageTexelBufferArrayNonUniformIndexing = " << value.shaderStorageTexelBufferArrayNonUniformIndexing << '\n';
6766	s << "\tdescriptorBindingUniformBufferUpdateAfterBind = " << value.descriptorBindingUniformBufferUpdateAfterBind << '\n';
6767	s << "\tdescriptorBindingSampledImageUpdateAfterBind = " << value.descriptorBindingSampledImageUpdateAfterBind << '\n';
6768	s << "\tdescriptorBindingStorageImageUpdateAfterBind = " << value.descriptorBindingStorageImageUpdateAfterBind << '\n';
6769	s << "\tdescriptorBindingStorageBufferUpdateAfterBind = " << value.descriptorBindingStorageBufferUpdateAfterBind << '\n';
6770	s << "\tdescriptorBindingUniformTexelBufferUpdateAfterBind = " << value.descriptorBindingUniformTexelBufferUpdateAfterBind << '\n';
6771	s << "\tdescriptorBindingStorageTexelBufferUpdateAfterBind = " << value.descriptorBindingStorageTexelBufferUpdateAfterBind << '\n';
6772	s << "\tdescriptorBindingUpdateUnusedWhilePending = " << value.descriptorBindingUpdateUnusedWhilePending << '\n';
6773	s << "\tdescriptorBindingPartiallyBound = " << value.descriptorBindingPartiallyBound << '\n';
6774	s << "\tdescriptorBindingVariableDescriptorCount = " << value.descriptorBindingVariableDescriptorCount << '\n';
6775	s << "\truntimeDescriptorArray = " << value.runtimeDescriptorArray << '\n';
6776	s << '}';
6777	return s;
6778}
6779
6780std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingProperties& value)
6781{
6782	s << "VkPhysicalDeviceDescriptorIndexingProperties = {\n";
6783	s << "\tsType = " << value.sType << '\n';
6784	s << "\tpNext = " << value.pNext << '\n';
6785	s << "\tmaxUpdateAfterBindDescriptorsInAllPools = " << value.maxUpdateAfterBindDescriptorsInAllPools << '\n';
6786	s << "\tshaderUniformBufferArrayNonUniformIndexingNative = " << value.shaderUniformBufferArrayNonUniformIndexingNative << '\n';
6787	s << "\tshaderSampledImageArrayNonUniformIndexingNative = " << value.shaderSampledImageArrayNonUniformIndexingNative << '\n';
6788	s << "\tshaderStorageBufferArrayNonUniformIndexingNative = " << value.shaderStorageBufferArrayNonUniformIndexingNative << '\n';
6789	s << "\tshaderStorageImageArrayNonUniformIndexingNative = " << value.shaderStorageImageArrayNonUniformIndexingNative << '\n';
6790	s << "\tshaderInputAttachmentArrayNonUniformIndexingNative = " << value.shaderInputAttachmentArrayNonUniformIndexingNative << '\n';
6791	s << "\trobustBufferAccessUpdateAfterBind = " << value.robustBufferAccessUpdateAfterBind << '\n';
6792	s << "\tquadDivergentImplicitLod = " << value.quadDivergentImplicitLod << '\n';
6793	s << "\tmaxPerStageDescriptorUpdateAfterBindSamplers = " << value.maxPerStageDescriptorUpdateAfterBindSamplers << '\n';
6794	s << "\tmaxPerStageDescriptorUpdateAfterBindUniformBuffers = " << value.maxPerStageDescriptorUpdateAfterBindUniformBuffers << '\n';
6795	s << "\tmaxPerStageDescriptorUpdateAfterBindStorageBuffers = " << value.maxPerStageDescriptorUpdateAfterBindStorageBuffers << '\n';
6796	s << "\tmaxPerStageDescriptorUpdateAfterBindSampledImages = " << value.maxPerStageDescriptorUpdateAfterBindSampledImages << '\n';
6797	s << "\tmaxPerStageDescriptorUpdateAfterBindStorageImages = " << value.maxPerStageDescriptorUpdateAfterBindStorageImages << '\n';
6798	s << "\tmaxPerStageDescriptorUpdateAfterBindInputAttachments = " << value.maxPerStageDescriptorUpdateAfterBindInputAttachments << '\n';
6799	s << "\tmaxPerStageUpdateAfterBindResources = " << value.maxPerStageUpdateAfterBindResources << '\n';
6800	s << "\tmaxDescriptorSetUpdateAfterBindSamplers = " << value.maxDescriptorSetUpdateAfterBindSamplers << '\n';
6801	s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffers = " << value.maxDescriptorSetUpdateAfterBindUniformBuffers << '\n';
6802	s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic << '\n';
6803	s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffers = " << value.maxDescriptorSetUpdateAfterBindStorageBuffers << '\n';
6804	s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic << '\n';
6805	s << "\tmaxDescriptorSetUpdateAfterBindSampledImages = " << value.maxDescriptorSetUpdateAfterBindSampledImages << '\n';
6806	s << "\tmaxDescriptorSetUpdateAfterBindStorageImages = " << value.maxDescriptorSetUpdateAfterBindStorageImages << '\n';
6807	s << "\tmaxDescriptorSetUpdateAfterBindInputAttachments = " << value.maxDescriptorSetUpdateAfterBindInputAttachments << '\n';
6808	s << '}';
6809	return s;
6810}
6811
6812std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBindingFlagsCreateInfo& value)
6813{
6814	s << "VkDescriptorSetLayoutBindingFlagsCreateInfo = {\n";
6815	s << "\tsType = " << value.sType << '\n';
6816	s << "\tpNext = " << value.pNext << '\n';
6817	s << "\tbindingCount = " << value.bindingCount << '\n';
6818	s << "\tpBindingFlags = " << getDescriptorBindingFlagsStr(*value.pBindingFlags) << '\n';
6819	s << '}';
6820	return s;
6821}
6822
6823std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountAllocateInfo& value)
6824{
6825	s << "VkDescriptorSetVariableDescriptorCountAllocateInfo = {\n";
6826	s << "\tsType = " << value.sType << '\n';
6827	s << "\tpNext = " << value.pNext << '\n';
6828	s << "\tdescriptorSetCount = " << value.descriptorSetCount << '\n';
6829	s << "\tpDescriptorCounts = " << value.pDescriptorCounts << '\n';
6830	s << '}';
6831	return s;
6832}
6833
6834std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountLayoutSupport& value)
6835{
6836	s << "VkDescriptorSetVariableDescriptorCountLayoutSupport = {\n";
6837	s << "\tsType = " << value.sType << '\n';
6838	s << "\tpNext = " << value.pNext << '\n';
6839	s << "\tmaxVariableDescriptorCount = " << value.maxVariableDescriptorCount << '\n';
6840	s << '}';
6841	return s;
6842}
6843
6844std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription2& value)
6845{
6846	s << "VkAttachmentDescription2 = {\n";
6847	s << "\tsType = " << value.sType << '\n';
6848	s << "\tpNext = " << value.pNext << '\n';
6849	s << "\tflags = " << getAttachmentDescriptionFlagsStr(value.flags) << '\n';
6850	s << "\tformat = " << value.format << '\n';
6851	s << "\tsamples = " << value.samples << '\n';
6852	s << "\tloadOp = " << value.loadOp << '\n';
6853	s << "\tstoreOp = " << value.storeOp << '\n';
6854	s << "\tstencilLoadOp = " << value.stencilLoadOp << '\n';
6855	s << "\tstencilStoreOp = " << value.stencilStoreOp << '\n';
6856	s << "\tinitialLayout = " << value.initialLayout << '\n';
6857	s << "\tfinalLayout = " << value.finalLayout << '\n';
6858	s << '}';
6859	return s;
6860}
6861
6862std::ostream& operator<< (std::ostream& s, const VkAttachmentReference2& value)
6863{
6864	s << "VkAttachmentReference2 = {\n";
6865	s << "\tsType = " << value.sType << '\n';
6866	s << "\tpNext = " << value.pNext << '\n';
6867	s << "\tattachment = " << value.attachment << '\n';
6868	s << "\tlayout = " << value.layout << '\n';
6869	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
6870	s << '}';
6871	return s;
6872}
6873
6874std::ostream& operator<< (std::ostream& s, const VkSubpassDescription2& value)
6875{
6876	s << "VkSubpassDescription2 = {\n";
6877	s << "\tsType = " << value.sType << '\n';
6878	s << "\tpNext = " << value.pNext << '\n';
6879	s << "\tflags = " << getSubpassDescriptionFlagsStr(value.flags) << '\n';
6880	s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
6881	s << "\tviewMask = " << value.viewMask << '\n';
6882	s << "\tinputAttachmentCount = " << value.inputAttachmentCount << '\n';
6883	s << "\tpInputAttachments = " << value.pInputAttachments << '\n';
6884	s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
6885	s << "\tpColorAttachments = " << value.pColorAttachments << '\n';
6886	s << "\tpResolveAttachments = " << value.pResolveAttachments << '\n';
6887	s << "\tpDepthStencilAttachment = " << value.pDepthStencilAttachment << '\n';
6888	s << "\tpreserveAttachmentCount = " << value.preserveAttachmentCount << '\n';
6889	s << "\tpPreserveAttachments = " << value.pPreserveAttachments << '\n';
6890	s << '}';
6891	return s;
6892}
6893
6894std::ostream& operator<< (std::ostream& s, const VkSubpassDependency2& value)
6895{
6896	s << "VkSubpassDependency2 = {\n";
6897	s << "\tsType = " << value.sType << '\n';
6898	s << "\tpNext = " << value.pNext << '\n';
6899	s << "\tsrcSubpass = " << value.srcSubpass << '\n';
6900	s << "\tdstSubpass = " << value.dstSubpass << '\n';
6901	s << "\tsrcStageMask = " << getPipelineStageFlagsStr(value.srcStageMask) << '\n';
6902	s << "\tdstStageMask = " << getPipelineStageFlagsStr(value.dstStageMask) << '\n';
6903	s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
6904	s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
6905	s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
6906	s << "\tviewOffset = " << value.viewOffset << '\n';
6907	s << '}';
6908	return s;
6909}
6910
6911std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo2& value)
6912{
6913	s << "VkRenderPassCreateInfo2 = {\n";
6914	s << "\tsType = " << value.sType << '\n';
6915	s << "\tpNext = " << value.pNext << '\n';
6916	s << "\tflags = " << getRenderPassCreateFlagsStr(value.flags) << '\n';
6917	s << "\tattachmentCount = " << value.attachmentCount << '\n';
6918	s << "\tpAttachments = " << value.pAttachments << '\n';
6919	s << "\tsubpassCount = " << value.subpassCount << '\n';
6920	s << "\tpSubpasses = " << value.pSubpasses << '\n';
6921	s << "\tdependencyCount = " << value.dependencyCount << '\n';
6922	s << "\tpDependencies = " << value.pDependencies << '\n';
6923	s << "\tcorrelatedViewMaskCount = " << value.correlatedViewMaskCount << '\n';
6924	s << "\tpCorrelatedViewMasks = " << value.pCorrelatedViewMasks << '\n';
6925	s << '}';
6926	return s;
6927}
6928
6929std::ostream& operator<< (std::ostream& s, const VkSubpassBeginInfo& value)
6930{
6931	s << "VkSubpassBeginInfo = {\n";
6932	s << "\tsType = " << value.sType << '\n';
6933	s << "\tpNext = " << value.pNext << '\n';
6934	s << "\tcontents = " << value.contents << '\n';
6935	s << '}';
6936	return s;
6937}
6938
6939std::ostream& operator<< (std::ostream& s, const VkSubpassEndInfo& value)
6940{
6941	s << "VkSubpassEndInfo = {\n";
6942	s << "\tsType = " << value.sType << '\n';
6943	s << "\tpNext = " << value.pNext << '\n';
6944	s << '}';
6945	return s;
6946}
6947
6948std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTimelineSemaphoreFeatures& value)
6949{
6950	s << "VkPhysicalDeviceTimelineSemaphoreFeatures = {\n";
6951	s << "\tsType = " << value.sType << '\n';
6952	s << "\tpNext = " << value.pNext << '\n';
6953	s << "\ttimelineSemaphore = " << value.timelineSemaphore << '\n';
6954	s << '}';
6955	return s;
6956}
6957
6958std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTimelineSemaphoreProperties& value)
6959{
6960	s << "VkPhysicalDeviceTimelineSemaphoreProperties = {\n";
6961	s << "\tsType = " << value.sType << '\n';
6962	s << "\tpNext = " << value.pNext << '\n';
6963	s << "\tmaxTimelineSemaphoreValueDifference = " << value.maxTimelineSemaphoreValueDifference << '\n';
6964	s << '}';
6965	return s;
6966}
6967
6968std::ostream& operator<< (std::ostream& s, const VkSemaphoreTypeCreateInfo& value)
6969{
6970	s << "VkSemaphoreTypeCreateInfo = {\n";
6971	s << "\tsType = " << value.sType << '\n';
6972	s << "\tpNext = " << value.pNext << '\n';
6973	s << "\tsemaphoreType = " << value.semaphoreType << '\n';
6974	s << "\tinitialValue = " << value.initialValue << '\n';
6975	s << '}';
6976	return s;
6977}
6978
6979std::ostream& operator<< (std::ostream& s, const VkTimelineSemaphoreSubmitInfo& value)
6980{
6981	s << "VkTimelineSemaphoreSubmitInfo = {\n";
6982	s << "\tsType = " << value.sType << '\n';
6983	s << "\tpNext = " << value.pNext << '\n';
6984	s << "\twaitSemaphoreValueCount = " << value.waitSemaphoreValueCount << '\n';
6985	s << "\tpWaitSemaphoreValues = " << value.pWaitSemaphoreValues << '\n';
6986	s << "\tsignalSemaphoreValueCount = " << value.signalSemaphoreValueCount << '\n';
6987	s << "\tpSignalSemaphoreValues = " << value.pSignalSemaphoreValues << '\n';
6988	s << '}';
6989	return s;
6990}
6991
6992std::ostream& operator<< (std::ostream& s, const VkSemaphoreWaitInfo& value)
6993{
6994	s << "VkSemaphoreWaitInfo = {\n";
6995	s << "\tsType = " << value.sType << '\n';
6996	s << "\tpNext = " << value.pNext << '\n';
6997	s << "\tflags = " << getSemaphoreWaitFlagsStr(value.flags) << '\n';
6998	s << "\tsemaphoreCount = " << value.semaphoreCount << '\n';
6999	s << "\tpSemaphores = " << value.pSemaphores << '\n';
7000	s << "\tpValues = " << value.pValues << '\n';
7001	s << '}';
7002	return s;
7003}
7004
7005std::ostream& operator<< (std::ostream& s, const VkSemaphoreSignalInfo& value)
7006{
7007	s << "VkSemaphoreSignalInfo = {\n";
7008	s << "\tsType = " << value.sType << '\n';
7009	s << "\tpNext = " << value.pNext << '\n';
7010	s << "\tsemaphore = " << value.semaphore << '\n';
7011	s << "\tvalue = " << value.value << '\n';
7012	s << '}';
7013	return s;
7014}
7015
7016std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDivisorDescriptionEXT& value)
7017{
7018	s << "VkVertexInputBindingDivisorDescriptionEXT = {\n";
7019	s << "\tbinding = " << value.binding << '\n';
7020	s << "\tdivisor = " << value.divisor << '\n';
7021	s << '}';
7022	return s;
7023}
7024
7025std::ostream& operator<< (std::ostream& s, const VkPipelineVertexInputDivisorStateCreateInfoEXT& value)
7026{
7027	s << "VkPipelineVertexInputDivisorStateCreateInfoEXT = {\n";
7028	s << "\tsType = " << value.sType << '\n';
7029	s << "\tpNext = " << value.pNext << '\n';
7030	s << "\tvertexBindingDivisorCount = " << value.vertexBindingDivisorCount << '\n';
7031	s << "\tpVertexBindingDivisors = " << value.pVertexBindingDivisors << '\n';
7032	s << '}';
7033	return s;
7034}
7035
7036std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT& value)
7037{
7038	s << "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT = {\n";
7039	s << "\tsType = " << value.sType << '\n';
7040	s << "\tpNext = " << value.pNext << '\n';
7041	s << "\tmaxVertexAttribDivisor = " << value.maxVertexAttribDivisor << '\n';
7042	s << '}';
7043	return s;
7044}
7045
7046std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePCIBusInfoPropertiesEXT& value)
7047{
7048	s << "VkPhysicalDevicePCIBusInfoPropertiesEXT = {\n";
7049	s << "\tsType = " << value.sType << '\n';
7050	s << "\tpNext = " << value.pNext << '\n';
7051	s << "\tpciDomain = " << value.pciDomain << '\n';
7052	s << "\tpciBus = " << value.pciBus << '\n';
7053	s << "\tpciDevice = " << value.pciDevice << '\n';
7054	s << "\tpciFunction = " << value.pciFunction << '\n';
7055	s << '}';
7056	return s;
7057}
7058
7059std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice8BitStorageFeatures& value)
7060{
7061	s << "VkPhysicalDevice8BitStorageFeatures = {\n";
7062	s << "\tsType = " << value.sType << '\n';
7063	s << "\tpNext = " << value.pNext << '\n';
7064	s << "\tstorageBuffer8BitAccess = " << value.storageBuffer8BitAccess << '\n';
7065	s << "\tuniformAndStorageBuffer8BitAccess = " << value.uniformAndStorageBuffer8BitAccess << '\n';
7066	s << "\tstoragePushConstant8 = " << value.storagePushConstant8 << '\n';
7067	s << '}';
7068	return s;
7069}
7070
7071std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkanMemoryModelFeatures& value)
7072{
7073	s << "VkPhysicalDeviceVulkanMemoryModelFeatures = {\n";
7074	s << "\tsType = " << value.sType << '\n';
7075	s << "\tpNext = " << value.pNext << '\n';
7076	s << "\tvulkanMemoryModel = " << value.vulkanMemoryModel << '\n';
7077	s << "\tvulkanMemoryModelDeviceScope = " << value.vulkanMemoryModelDeviceScope << '\n';
7078	s << "\tvulkanMemoryModelAvailabilityVisibilityChains = " << value.vulkanMemoryModelAvailabilityVisibilityChains << '\n';
7079	s << '}';
7080	return s;
7081}
7082
7083std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderAtomicInt64Features& value)
7084{
7085	s << "VkPhysicalDeviceShaderAtomicInt64Features = {\n";
7086	s << "\tsType = " << value.sType << '\n';
7087	s << "\tpNext = " << value.pNext << '\n';
7088	s << "\tshaderBufferInt64Atomics = " << value.shaderBufferInt64Atomics << '\n';
7089	s << "\tshaderSharedInt64Atomics = " << value.shaderSharedInt64Atomics << '\n';
7090	s << '}';
7091	return s;
7092}
7093
7094std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT& value)
7095{
7096	s << "VkPhysicalDeviceShaderAtomicFloatFeaturesEXT = {\n";
7097	s << "\tsType = " << value.sType << '\n';
7098	s << "\tpNext = " << value.pNext << '\n';
7099	s << "\tshaderBufferFloat32Atomics = " << value.shaderBufferFloat32Atomics << '\n';
7100	s << "\tshaderBufferFloat32AtomicAdd = " << value.shaderBufferFloat32AtomicAdd << '\n';
7101	s << "\tshaderBufferFloat64Atomics = " << value.shaderBufferFloat64Atomics << '\n';
7102	s << "\tshaderBufferFloat64AtomicAdd = " << value.shaderBufferFloat64AtomicAdd << '\n';
7103	s << "\tshaderSharedFloat32Atomics = " << value.shaderSharedFloat32Atomics << '\n';
7104	s << "\tshaderSharedFloat32AtomicAdd = " << value.shaderSharedFloat32AtomicAdd << '\n';
7105	s << "\tshaderSharedFloat64Atomics = " << value.shaderSharedFloat64Atomics << '\n';
7106	s << "\tshaderSharedFloat64AtomicAdd = " << value.shaderSharedFloat64AtomicAdd << '\n';
7107	s << "\tshaderImageFloat32Atomics = " << value.shaderImageFloat32Atomics << '\n';
7108	s << "\tshaderImageFloat32AtomicAdd = " << value.shaderImageFloat32AtomicAdd << '\n';
7109	s << "\tsparseImageFloat32Atomics = " << value.sparseImageFloat32Atomics << '\n';
7110	s << "\tsparseImageFloat32AtomicAdd = " << value.sparseImageFloat32AtomicAdd << '\n';
7111	s << '}';
7112	return s;
7113}
7114
7115std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& value)
7116{
7117	s << "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = {\n";
7118	s << "\tsType = " << value.sType << '\n';
7119	s << "\tpNext = " << value.pNext << '\n';
7120	s << "\tvertexAttributeInstanceRateDivisor = " << value.vertexAttributeInstanceRateDivisor << '\n';
7121	s << "\tvertexAttributeInstanceRateZeroDivisor = " << value.vertexAttributeInstanceRateZeroDivisor << '\n';
7122	s << '}';
7123	return s;
7124}
7125
7126std::ostream& operator<< (std::ostream& s, const VkQueueFamilyCheckpointPropertiesNV& value)
7127{
7128	s << "VkQueueFamilyCheckpointPropertiesNV = {\n";
7129	s << "\tsType = " << value.sType << '\n';
7130	s << "\tpNext = " << value.pNext << '\n';
7131	s << "\tcheckpointExecutionStageMask = " << getPipelineStageFlagsStr(value.checkpointExecutionStageMask) << '\n';
7132	s << '}';
7133	return s;
7134}
7135
7136std::ostream& operator<< (std::ostream& s, const VkCheckpointDataNV& value)
7137{
7138	s << "VkCheckpointDataNV = {\n";
7139	s << "\tsType = " << value.sType << '\n';
7140	s << "\tpNext = " << value.pNext << '\n';
7141	s << "\tstage = " << value.stage << '\n';
7142	s << "\tpCheckpointMarker = " << value.pCheckpointMarker << '\n';
7143	s << '}';
7144	return s;
7145}
7146
7147std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDepthStencilResolveProperties& value)
7148{
7149	s << "VkPhysicalDeviceDepthStencilResolveProperties = {\n";
7150	s << "\tsType = " << value.sType << '\n';
7151	s << "\tpNext = " << value.pNext << '\n';
7152	s << "\tsupportedDepthResolveModes = " << getResolveModeFlagsStr(value.supportedDepthResolveModes) << '\n';
7153	s << "\tsupportedStencilResolveModes = " << getResolveModeFlagsStr(value.supportedStencilResolveModes) << '\n';
7154	s << "\tindependentResolveNone = " << value.independentResolveNone << '\n';
7155	s << "\tindependentResolve = " << value.independentResolve << '\n';
7156	s << '}';
7157	return s;
7158}
7159
7160std::ostream& operator<< (std::ostream& s, const VkSubpassDescriptionDepthStencilResolve& value)
7161{
7162	s << "VkSubpassDescriptionDepthStencilResolve = {\n";
7163	s << "\tsType = " << value.sType << '\n';
7164	s << "\tpNext = " << value.pNext << '\n';
7165	s << "\tdepthResolveMode = " << value.depthResolveMode << '\n';
7166	s << "\tstencilResolveMode = " << value.stencilResolveMode << '\n';
7167	s << "\tpDepthStencilResolveAttachment = " << value.pDepthStencilResolveAttachment << '\n';
7168	s << '}';
7169	return s;
7170}
7171
7172std::ostream& operator<< (std::ostream& s, const VkImageViewASTCDecodeModeEXT& value)
7173{
7174	s << "VkImageViewASTCDecodeModeEXT = {\n";
7175	s << "\tsType = " << value.sType << '\n';
7176	s << "\tpNext = " << value.pNext << '\n';
7177	s << "\tdecodeMode = " << value.decodeMode << '\n';
7178	s << '}';
7179	return s;
7180}
7181
7182std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceASTCDecodeFeaturesEXT& value)
7183{
7184	s << "VkPhysicalDeviceASTCDecodeFeaturesEXT = {\n";
7185	s << "\tsType = " << value.sType << '\n';
7186	s << "\tpNext = " << value.pNext << '\n';
7187	s << "\tdecodeModeSharedExponent = " << value.decodeModeSharedExponent << '\n';
7188	s << '}';
7189	return s;
7190}
7191
7192std::ostream& operator<< (std::ostream& s, const VkDrmFormatModifierPropertiesListEXT& value)
7193{
7194	s << "VkDrmFormatModifierPropertiesListEXT = {\n";
7195	s << "\tsType = " << value.sType << '\n';
7196	s << "\tpNext = " << value.pNext << '\n';
7197	s << "\tdrmFormatModifierCount = " << value.drmFormatModifierCount << '\n';
7198	s << "\tpDrmFormatModifierProperties = " << value.pDrmFormatModifierProperties << '\n';
7199	s << '}';
7200	return s;
7201}
7202
7203std::ostream& operator<< (std::ostream& s, const VkDrmFormatModifierPropertiesEXT& value)
7204{
7205	s << "VkDrmFormatModifierPropertiesEXT = {\n";
7206	s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
7207	s << "\tdrmFormatModifierPlaneCount = " << value.drmFormatModifierPlaneCount << '\n';
7208	s << "\tdrmFormatModifierTilingFeatures = " << getFormatFeatureFlagsStr(value.drmFormatModifierTilingFeatures) << '\n';
7209	s << '}';
7210	return s;
7211}
7212
7213std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageDrmFormatModifierInfoEXT& value)
7214{
7215	s << "VkPhysicalDeviceImageDrmFormatModifierInfoEXT = {\n";
7216	s << "\tsType = " << value.sType << '\n';
7217	s << "\tpNext = " << value.pNext << '\n';
7218	s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
7219	s << "\tsharingMode = " << value.sharingMode << '\n';
7220	s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
7221	s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
7222	s << '}';
7223	return s;
7224}
7225
7226std::ostream& operator<< (std::ostream& s, const VkImageDrmFormatModifierListCreateInfoEXT& value)
7227{
7228	s << "VkImageDrmFormatModifierListCreateInfoEXT = {\n";
7229	s << "\tsType = " << value.sType << '\n';
7230	s << "\tpNext = " << value.pNext << '\n';
7231	s << "\tdrmFormatModifierCount = " << value.drmFormatModifierCount << '\n';
7232	s << "\tpDrmFormatModifiers = " << value.pDrmFormatModifiers << '\n';
7233	s << '}';
7234	return s;
7235}
7236
7237std::ostream& operator<< (std::ostream& s, const VkImageDrmFormatModifierExplicitCreateInfoEXT& value)
7238{
7239	s << "VkImageDrmFormatModifierExplicitCreateInfoEXT = {\n";
7240	s << "\tsType = " << value.sType << '\n';
7241	s << "\tpNext = " << value.pNext << '\n';
7242	s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
7243	s << "\tdrmFormatModifierPlaneCount = " << value.drmFormatModifierPlaneCount << '\n';
7244	s << "\tpPlaneLayouts = " << value.pPlaneLayouts << '\n';
7245	s << '}';
7246	return s;
7247}
7248
7249std::ostream& operator<< (std::ostream& s, const VkImageDrmFormatModifierPropertiesEXT& value)
7250{
7251	s << "VkImageDrmFormatModifierPropertiesEXT = {\n";
7252	s << "\tsType = " << value.sType << '\n';
7253	s << "\tpNext = " << value.pNext << '\n';
7254	s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
7255	s << '}';
7256	return s;
7257}
7258
7259std::ostream& operator<< (std::ostream& s, const VkImageStencilUsageCreateInfo& value)
7260{
7261	s << "VkImageStencilUsageCreateInfo = {\n";
7262	s << "\tsType = " << value.sType << '\n';
7263	s << "\tpNext = " << value.pNext << '\n';
7264	s << "\tstencilUsage = " << getImageUsageFlagsStr(value.stencilUsage) << '\n';
7265	s << '}';
7266	return s;
7267}
7268
7269std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceScalarBlockLayoutFeatures& value)
7270{
7271	s << "VkPhysicalDeviceScalarBlockLayoutFeatures = {\n";
7272	s << "\tsType = " << value.sType << '\n';
7273	s << "\tpNext = " << value.pNext << '\n';
7274	s << "\tscalarBlockLayout = " << value.scalarBlockLayout << '\n';
7275	s << '}';
7276	return s;
7277}
7278
7279std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceUniformBufferStandardLayoutFeatures& value)
7280{
7281	s << "VkPhysicalDeviceUniformBufferStandardLayoutFeatures = {\n";
7282	s << "\tsType = " << value.sType << '\n';
7283	s << "\tpNext = " << value.pNext << '\n';
7284	s << "\tuniformBufferStandardLayout = " << value.uniformBufferStandardLayout << '\n';
7285	s << '}';
7286	return s;
7287}
7288
7289std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDepthClipEnableFeaturesEXT& value)
7290{
7291	s << "VkPhysicalDeviceDepthClipEnableFeaturesEXT = {\n";
7292	s << "\tsType = " << value.sType << '\n';
7293	s << "\tpNext = " << value.pNext << '\n';
7294	s << "\tdepthClipEnable = " << value.depthClipEnable << '\n';
7295	s << '}';
7296	return s;
7297}
7298
7299std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationDepthClipStateCreateInfoEXT& value)
7300{
7301	s << "VkPipelineRasterizationDepthClipStateCreateInfoEXT = {\n";
7302	s << "\tsType = " << value.sType << '\n';
7303	s << "\tpNext = " << value.pNext << '\n';
7304	s << "\tflags = " << getPipelineRasterizationDepthClipStateCreateFlagsEXTStr(value.flags) << '\n';
7305	s << "\tdepthClipEnable = " << value.depthClipEnable << '\n';
7306	s << '}';
7307	return s;
7308}
7309
7310std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryBudgetPropertiesEXT& value)
7311{
7312	s << "VkPhysicalDeviceMemoryBudgetPropertiesEXT = {\n";
7313	s << "\tsType = " << value.sType << '\n';
7314	s << "\tpNext = " << value.pNext << '\n';
7315	s << "\theapBudget = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.heapBudget), DE_ARRAY_END(value.heapBudget)) << '\n';
7316	s << "\theapUsage = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.heapUsage), DE_ARRAY_END(value.heapUsage)) << '\n';
7317	s << '}';
7318	return s;
7319}
7320
7321std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBufferDeviceAddressFeatures& value)
7322{
7323	s << "VkPhysicalDeviceBufferDeviceAddressFeatures = {\n";
7324	s << "\tsType = " << value.sType << '\n';
7325	s << "\tpNext = " << value.pNext << '\n';
7326	s << "\tbufferDeviceAddress = " << value.bufferDeviceAddress << '\n';
7327	s << "\tbufferDeviceAddressCaptureReplay = " << value.bufferDeviceAddressCaptureReplay << '\n';
7328	s << "\tbufferDeviceAddressMultiDevice = " << value.bufferDeviceAddressMultiDevice << '\n';
7329	s << '}';
7330	return s;
7331}
7332
7333std::ostream& operator<< (std::ostream& s, const VkBufferDeviceAddressInfo& value)
7334{
7335	s << "VkBufferDeviceAddressInfo = {\n";
7336	s << "\tsType = " << value.sType << '\n';
7337	s << "\tpNext = " << value.pNext << '\n';
7338	s << "\tbuffer = " << value.buffer << '\n';
7339	s << '}';
7340	return s;
7341}
7342
7343std::ostream& operator<< (std::ostream& s, const VkBufferOpaqueCaptureAddressCreateInfo& value)
7344{
7345	s << "VkBufferOpaqueCaptureAddressCreateInfo = {\n";
7346	s << "\tsType = " << value.sType << '\n';
7347	s << "\tpNext = " << value.pNext << '\n';
7348	s << "\topaqueCaptureAddress = " << value.opaqueCaptureAddress << '\n';
7349	s << '}';
7350	return s;
7351}
7352
7353std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageViewImageFormatInfoEXT& value)
7354{
7355	s << "VkPhysicalDeviceImageViewImageFormatInfoEXT = {\n";
7356	s << "\tsType = " << value.sType << '\n';
7357	s << "\tpNext = " << value.pNext << '\n';
7358	s << "\timageViewType = " << value.imageViewType << '\n';
7359	s << '}';
7360	return s;
7361}
7362
7363std::ostream& operator<< (std::ostream& s, const VkFilterCubicImageViewImageFormatPropertiesEXT& value)
7364{
7365	s << "VkFilterCubicImageViewImageFormatPropertiesEXT = {\n";
7366	s << "\tsType = " << value.sType << '\n';
7367	s << "\tpNext = " << value.pNext << '\n';
7368	s << "\tfilterCubic = " << value.filterCubic << '\n';
7369	s << "\tfilterCubicMinmax = " << value.filterCubicMinmax << '\n';
7370	s << '}';
7371	return s;
7372}
7373
7374std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImagelessFramebufferFeatures& value)
7375{
7376	s << "VkPhysicalDeviceImagelessFramebufferFeatures = {\n";
7377	s << "\tsType = " << value.sType << '\n';
7378	s << "\tpNext = " << value.pNext << '\n';
7379	s << "\timagelessFramebuffer = " << value.imagelessFramebuffer << '\n';
7380	s << '}';
7381	return s;
7382}
7383
7384std::ostream& operator<< (std::ostream& s, const VkFramebufferAttachmentsCreateInfo& value)
7385{
7386	s << "VkFramebufferAttachmentsCreateInfo = {\n";
7387	s << "\tsType = " << value.sType << '\n';
7388	s << "\tpNext = " << value.pNext << '\n';
7389	s << "\tattachmentImageInfoCount = " << value.attachmentImageInfoCount << '\n';
7390	s << "\tpAttachmentImageInfos = " << value.pAttachmentImageInfos << '\n';
7391	s << '}';
7392	return s;
7393}
7394
7395std::ostream& operator<< (std::ostream& s, const VkFramebufferAttachmentImageInfo& value)
7396{
7397	s << "VkFramebufferAttachmentImageInfo = {\n";
7398	s << "\tsType = " << value.sType << '\n';
7399	s << "\tpNext = " << value.pNext << '\n';
7400	s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
7401	s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
7402	s << "\twidth = " << value.width << '\n';
7403	s << "\theight = " << value.height << '\n';
7404	s << "\tlayerCount = " << value.layerCount << '\n';
7405	s << "\tviewFormatCount = " << value.viewFormatCount << '\n';
7406	s << "\tpViewFormats = " << value.pViewFormats << '\n';
7407	s << '}';
7408	return s;
7409}
7410
7411std::ostream& operator<< (std::ostream& s, const VkRenderPassAttachmentBeginInfo& value)
7412{
7413	s << "VkRenderPassAttachmentBeginInfo = {\n";
7414	s << "\tsType = " << value.sType << '\n';
7415	s << "\tpNext = " << value.pNext << '\n';
7416	s << "\tattachmentCount = " << value.attachmentCount << '\n';
7417	s << "\tpAttachments = " << value.pAttachments << '\n';
7418	s << '}';
7419	return s;
7420}
7421
7422std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT& value)
7423{
7424	s << "VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = {\n";
7425	s << "\tsType = " << value.sType << '\n';
7426	s << "\tpNext = " << value.pNext << '\n';
7427	s << "\ttextureCompressionASTC_HDR = " << value.textureCompressionASTC_HDR << '\n';
7428	s << '}';
7429	return s;
7430}
7431
7432std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT& value)
7433{
7434	s << "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT = {\n";
7435	s << "\tsType = " << value.sType << '\n';
7436	s << "\tpNext = " << value.pNext << '\n';
7437	s << "\tycbcrImageArrays = " << value.ycbcrImageArrays << '\n';
7438	s << '}';
7439	return s;
7440}
7441
7442std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePerformanceQueryFeaturesKHR& value)
7443{
7444	s << "VkPhysicalDevicePerformanceQueryFeaturesKHR = {\n";
7445	s << "\tsType = " << value.sType << '\n';
7446	s << "\tpNext = " << value.pNext << '\n';
7447	s << "\tperformanceCounterQueryPools = " << value.performanceCounterQueryPools << '\n';
7448	s << "\tperformanceCounterMultipleQueryPools = " << value.performanceCounterMultipleQueryPools << '\n';
7449	s << '}';
7450	return s;
7451}
7452
7453std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePerformanceQueryPropertiesKHR& value)
7454{
7455	s << "VkPhysicalDevicePerformanceQueryPropertiesKHR = {\n";
7456	s << "\tsType = " << value.sType << '\n';
7457	s << "\tpNext = " << value.pNext << '\n';
7458	s << "\tallowCommandBufferQueryCopies = " << value.allowCommandBufferQueryCopies << '\n';
7459	s << '}';
7460	return s;
7461}
7462
7463std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterKHR& value)
7464{
7465	s << "VkPerformanceCounterKHR = {\n";
7466	s << "\tsType = " << value.sType << '\n';
7467	s << "\tpNext = " << value.pNext << '\n';
7468	s << "\tunit = " << value.unit << '\n';
7469	s << "\tscope = " << value.scope << '\n';
7470	s << "\tstorage = " << value.storage << '\n';
7471	s << "\tuuid = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.uuid)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.uuid))) << '\n';
7472	s << '}';
7473	return s;
7474}
7475
7476std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterDescriptionKHR& value)
7477{
7478	s << "VkPerformanceCounterDescriptionKHR = {\n";
7479	s << "\tsType = " << value.sType << '\n';
7480	s << "\tpNext = " << value.pNext << '\n';
7481	s << "\tflags = " << getPerformanceCounterDescriptionFlagsKHRStr(value.flags) << '\n';
7482	s << "\tname = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.name)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.name))) << '\n';
7483	s << "\tcategory = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.category)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.category))) << '\n';
7484	s << "\tdescription = " << (const char*)value.description << '\n';
7485	s << '}';
7486	return s;
7487}
7488
7489std::ostream& operator<< (std::ostream& s, const VkQueryPoolPerformanceCreateInfoKHR& value)
7490{
7491	s << "VkQueryPoolPerformanceCreateInfoKHR = {\n";
7492	s << "\tsType = " << value.sType << '\n';
7493	s << "\tpNext = " << value.pNext << '\n';
7494	s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
7495	s << "\tcounterIndexCount = " << value.counterIndexCount << '\n';
7496	s << "\tpCounterIndices = " << value.pCounterIndices << '\n';
7497	s << '}';
7498	return s;
7499}
7500
7501std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterResultKHR& value)
7502{
7503	s << "VkPerformanceCounterResultKHR = {\n";
7504	s << "\tint32 = " << value.int32 << '\n';
7505	s << "\tint64 = " << value.int64 << '\n';
7506	s << "\tuint32 = " << value.uint32 << '\n';
7507	s << "\tuint64 = " << value.uint64 << '\n';
7508	s << "\tfloat32 = " << value.float32 << '\n';
7509	s << "\tfloat64 = " << value.float64 << '\n';
7510	s << '}';
7511	return s;
7512}
7513
7514std::ostream& operator<< (std::ostream& s, const VkAcquireProfilingLockInfoKHR& value)
7515{
7516	s << "VkAcquireProfilingLockInfoKHR = {\n";
7517	s << "\tsType = " << value.sType << '\n';
7518	s << "\tpNext = " << value.pNext << '\n';
7519	s << "\tflags = " << getAcquireProfilingLockFlagsKHRStr(value.flags) << '\n';
7520	s << "\ttimeout = " << value.timeout << '\n';
7521	s << '}';
7522	return s;
7523}
7524
7525std::ostream& operator<< (std::ostream& s, const VkPerformanceQuerySubmitInfoKHR& value)
7526{
7527	s << "VkPerformanceQuerySubmitInfoKHR = {\n";
7528	s << "\tsType = " << value.sType << '\n';
7529	s << "\tpNext = " << value.pNext << '\n';
7530	s << "\tcounterPassIndex = " << value.counterPassIndex << '\n';
7531	s << '}';
7532	return s;
7533}
7534
7535std::ostream& operator<< (std::ostream& s, const VkPerformanceQueryReservationInfoKHR& value)
7536{
7537	s << "VkPerformanceQueryReservationInfoKHR = {\n";
7538	s << "\tsType = " << value.sType << '\n';
7539	s << "\tpNext = " << value.pNext << '\n';
7540	s << "\tmaxPerformanceQueriesPerPool = " << value.maxPerformanceQueriesPerPool << '\n';
7541	s << '}';
7542	return s;
7543}
7544
7545std::ostream& operator<< (std::ostream& s, const VkHeadlessSurfaceCreateInfoEXT& value)
7546{
7547	s << "VkHeadlessSurfaceCreateInfoEXT = {\n";
7548	s << "\tsType = " << value.sType << '\n';
7549	s << "\tpNext = " << value.pNext << '\n';
7550	s << "\tflags = " << getHeadlessSurfaceCreateFlagsEXTStr(value.flags) << '\n';
7551	s << '}';
7552	return s;
7553}
7554
7555std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderClockFeaturesKHR& value)
7556{
7557	s << "VkPhysicalDeviceShaderClockFeaturesKHR = {\n";
7558	s << "\tsType = " << value.sType << '\n';
7559	s << "\tpNext = " << value.pNext << '\n';
7560	s << "\tshaderSubgroupClock = " << value.shaderSubgroupClock << '\n';
7561	s << "\tshaderDeviceClock = " << value.shaderDeviceClock << '\n';
7562	s << '}';
7563	return s;
7564}
7565
7566std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceIndexTypeUint8FeaturesEXT& value)
7567{
7568	s << "VkPhysicalDeviceIndexTypeUint8FeaturesEXT = {\n";
7569	s << "\tsType = " << value.sType << '\n';
7570	s << "\tpNext = " << value.pNext << '\n';
7571	s << "\tindexTypeUint8 = " << value.indexTypeUint8 << '\n';
7572	s << '}';
7573	return s;
7574}
7575
7576std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT& value)
7577{
7578	s << "VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT = {\n";
7579	s << "\tsType = " << value.sType << '\n';
7580	s << "\tpNext = " << value.pNext << '\n';
7581	s << "\tfragmentShaderSampleInterlock = " << value.fragmentShaderSampleInterlock << '\n';
7582	s << "\tfragmentShaderPixelInterlock = " << value.fragmentShaderPixelInterlock << '\n';
7583	s << "\tfragmentShaderShadingRateInterlock = " << value.fragmentShaderShadingRateInterlock << '\n';
7584	s << '}';
7585	return s;
7586}
7587
7588std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures& value)
7589{
7590	s << "VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures = {\n";
7591	s << "\tsType = " << value.sType << '\n';
7592	s << "\tpNext = " << value.pNext << '\n';
7593	s << "\tseparateDepthStencilLayouts = " << value.separateDepthStencilLayouts << '\n';
7594	s << '}';
7595	return s;
7596}
7597
7598std::ostream& operator<< (std::ostream& s, const VkAttachmentReferenceStencilLayout& value)
7599{
7600	s << "VkAttachmentReferenceStencilLayout = {\n";
7601	s << "\tsType = " << value.sType << '\n';
7602	s << "\tpNext = " << value.pNext << '\n';
7603	s << "\tstencilLayout = " << value.stencilLayout << '\n';
7604	s << '}';
7605	return s;
7606}
7607
7608std::ostream& operator<< (std::ostream& s, const VkAttachmentDescriptionStencilLayout& value)
7609{
7610	s << "VkAttachmentDescriptionStencilLayout = {\n";
7611	s << "\tsType = " << value.sType << '\n';
7612	s << "\tpNext = " << value.pNext << '\n';
7613	s << "\tstencilInitialLayout = " << value.stencilInitialLayout << '\n';
7614	s << "\tstencilFinalLayout = " << value.stencilFinalLayout << '\n';
7615	s << '}';
7616	return s;
7617}
7618
7619std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT& value)
7620{
7621	s << "VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = {\n";
7622	s << "\tsType = " << value.sType << '\n';
7623	s << "\tpNext = " << value.pNext << '\n';
7624	s << "\tshaderDemoteToHelperInvocation = " << value.shaderDemoteToHelperInvocation << '\n';
7625	s << '}';
7626	return s;
7627}
7628
7629std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& value)
7630{
7631	s << "VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT = {\n";
7632	s << "\tsType = " << value.sType << '\n';
7633	s << "\tpNext = " << value.pNext << '\n';
7634	s << "\ttexelBufferAlignment = " << value.texelBufferAlignment << '\n';
7635	s << '}';
7636	return s;
7637}
7638
7639std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT& value)
7640{
7641	s << "VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = {\n";
7642	s << "\tsType = " << value.sType << '\n';
7643	s << "\tpNext = " << value.pNext << '\n';
7644	s << "\tstorageTexelBufferOffsetAlignmentBytes = " << value.storageTexelBufferOffsetAlignmentBytes << '\n';
7645	s << "\tstorageTexelBufferOffsetSingleTexelAlignment = " << value.storageTexelBufferOffsetSingleTexelAlignment << '\n';
7646	s << "\tuniformTexelBufferOffsetAlignmentBytes = " << value.uniformTexelBufferOffsetAlignmentBytes << '\n';
7647	s << "\tuniformTexelBufferOffsetSingleTexelAlignment = " << value.uniformTexelBufferOffsetSingleTexelAlignment << '\n';
7648	s << '}';
7649	return s;
7650}
7651
7652std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT& value)
7653{
7654	s << "VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = {\n";
7655	s << "\tsType = " << value.sType << '\n';
7656	s << "\tpNext = " << value.pNext << '\n';
7657	s << "\tsubgroupSizeControl = " << value.subgroupSizeControl << '\n';
7658	s << "\tcomputeFullSubgroups = " << value.computeFullSubgroups << '\n';
7659	s << '}';
7660	return s;
7661}
7662
7663std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT& value)
7664{
7665	s << "VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = {\n";
7666	s << "\tsType = " << value.sType << '\n';
7667	s << "\tpNext = " << value.pNext << '\n';
7668	s << "\tminSubgroupSize = " << value.minSubgroupSize << '\n';
7669	s << "\tmaxSubgroupSize = " << value.maxSubgroupSize << '\n';
7670	s << "\tmaxComputeWorkgroupSubgroups = " << value.maxComputeWorkgroupSubgroups << '\n';
7671	s << "\trequiredSubgroupSizeStages = " << getShaderStageFlagsStr(value.requiredSubgroupSizeStages) << '\n';
7672	s << '}';
7673	return s;
7674}
7675
7676std::ostream& operator<< (std::ostream& s, const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT& value)
7677{
7678	s << "VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = {\n";
7679	s << "\tsType = " << value.sType << '\n';
7680	s << "\tpNext = " << value.pNext << '\n';
7681	s << "\trequiredSubgroupSize = " << value.requiredSubgroupSize << '\n';
7682	s << '}';
7683	return s;
7684}
7685
7686std::ostream& operator<< (std::ostream& s, const VkMemoryOpaqueCaptureAddressAllocateInfo& value)
7687{
7688	s << "VkMemoryOpaqueCaptureAddressAllocateInfo = {\n";
7689	s << "\tsType = " << value.sType << '\n';
7690	s << "\tpNext = " << value.pNext << '\n';
7691	s << "\topaqueCaptureAddress = " << value.opaqueCaptureAddress << '\n';
7692	s << '}';
7693	return s;
7694}
7695
7696std::ostream& operator<< (std::ostream& s, const VkDeviceMemoryOpaqueCaptureAddressInfo& value)
7697{
7698	s << "VkDeviceMemoryOpaqueCaptureAddressInfo = {\n";
7699	s << "\tsType = " << value.sType << '\n';
7700	s << "\tpNext = " << value.pNext << '\n';
7701	s << "\tmemory = " << value.memory << '\n';
7702	s << '}';
7703	return s;
7704}
7705
7706std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLineRasterizationFeaturesEXT& value)
7707{
7708	s << "VkPhysicalDeviceLineRasterizationFeaturesEXT = {\n";
7709	s << "\tsType = " << value.sType << '\n';
7710	s << "\tpNext = " << value.pNext << '\n';
7711	s << "\trectangularLines = " << value.rectangularLines << '\n';
7712	s << "\tbresenhamLines = " << value.bresenhamLines << '\n';
7713	s << "\tsmoothLines = " << value.smoothLines << '\n';
7714	s << "\tstippledRectangularLines = " << value.stippledRectangularLines << '\n';
7715	s << "\tstippledBresenhamLines = " << value.stippledBresenhamLines << '\n';
7716	s << "\tstippledSmoothLines = " << value.stippledSmoothLines << '\n';
7717	s << '}';
7718	return s;
7719}
7720
7721std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLineRasterizationPropertiesEXT& value)
7722{
7723	s << "VkPhysicalDeviceLineRasterizationPropertiesEXT = {\n";
7724	s << "\tsType = " << value.sType << '\n';
7725	s << "\tpNext = " << value.pNext << '\n';
7726	s << "\tlineSubPixelPrecisionBits = " << value.lineSubPixelPrecisionBits << '\n';
7727	s << '}';
7728	return s;
7729}
7730
7731std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationLineStateCreateInfoEXT& value)
7732{
7733	s << "VkPipelineRasterizationLineStateCreateInfoEXT = {\n";
7734	s << "\tsType = " << value.sType << '\n';
7735	s << "\tpNext = " << value.pNext << '\n';
7736	s << "\tlineRasterizationMode = " << value.lineRasterizationMode << '\n';
7737	s << "\tstippledLineEnable = " << value.stippledLineEnable << '\n';
7738	s << "\tlineStippleFactor = " << value.lineStippleFactor << '\n';
7739	s << "\tlineStipplePattern = " << value.lineStipplePattern << '\n';
7740	s << '}';
7741	return s;
7742}
7743
7744std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan11Features& value)
7745{
7746	s << "VkPhysicalDeviceVulkan11Features = {\n";
7747	s << "\tsType = " << value.sType << '\n';
7748	s << "\tpNext = " << value.pNext << '\n';
7749	s << "\tstorageBuffer16BitAccess = " << value.storageBuffer16BitAccess << '\n';
7750	s << "\tuniformAndStorageBuffer16BitAccess = " << value.uniformAndStorageBuffer16BitAccess << '\n';
7751	s << "\tstoragePushConstant16 = " << value.storagePushConstant16 << '\n';
7752	s << "\tstorageInputOutput16 = " << value.storageInputOutput16 << '\n';
7753	s << "\tmultiview = " << value.multiview << '\n';
7754	s << "\tmultiviewGeometryShader = " << value.multiviewGeometryShader << '\n';
7755	s << "\tmultiviewTessellationShader = " << value.multiviewTessellationShader << '\n';
7756	s << "\tvariablePointersStorageBuffer = " << value.variablePointersStorageBuffer << '\n';
7757	s << "\tvariablePointers = " << value.variablePointers << '\n';
7758	s << "\tprotectedMemory = " << value.protectedMemory << '\n';
7759	s << "\tsamplerYcbcrConversion = " << value.samplerYcbcrConversion << '\n';
7760	s << "\tshaderDrawParameters = " << value.shaderDrawParameters << '\n';
7761	s << '}';
7762	return s;
7763}
7764
7765std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan11Properties& value)
7766{
7767	s << "VkPhysicalDeviceVulkan11Properties = {\n";
7768	s << "\tsType = " << value.sType << '\n';
7769	s << "\tpNext = " << value.pNext << '\n';
7770	s << "\tdeviceUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.deviceUUID)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.deviceUUID))) << '\n';
7771	s << "\tdriverUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.driverUUID)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.driverUUID))) << '\n';
7772	s << "\tdeviceLUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.deviceLUID)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.deviceLUID))) << '\n';
7773	s << "\tdeviceNodeMask = " << value.deviceNodeMask << '\n';
7774	s << "\tdeviceLUIDValid = " << value.deviceLUIDValid << '\n';
7775	s << "\tsubgroupSize = " << value.subgroupSize << '\n';
7776	s << "\tsubgroupSupportedStages = " << getShaderStageFlagsStr(value.subgroupSupportedStages) << '\n';
7777	s << "\tsubgroupSupportedOperations = " << getSubgroupFeatureFlagsStr(value.subgroupSupportedOperations) << '\n';
7778	s << "\tsubgroupQuadOperationsInAllStages = " << value.subgroupQuadOperationsInAllStages << '\n';
7779	s << "\tpointClippingBehavior = " << value.pointClippingBehavior << '\n';
7780	s << "\tmaxMultiviewViewCount = " << value.maxMultiviewViewCount << '\n';
7781	s << "\tmaxMultiviewInstanceIndex = " << value.maxMultiviewInstanceIndex << '\n';
7782	s << "\tprotectedNoFault = " << value.protectedNoFault << '\n';
7783	s << "\tmaxPerSetDescriptors = " << value.maxPerSetDescriptors << '\n';
7784	s << "\tmaxMemoryAllocationSize = " << value.maxMemoryAllocationSize << '\n';
7785	s << '}';
7786	return s;
7787}
7788
7789std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan12Features& value)
7790{
7791	s << "VkPhysicalDeviceVulkan12Features = {\n";
7792	s << "\tsType = " << value.sType << '\n';
7793	s << "\tpNext = " << value.pNext << '\n';
7794	s << "\tsamplerMirrorClampToEdge = " << value.samplerMirrorClampToEdge << '\n';
7795	s << "\tdrawIndirectCount = " << value.drawIndirectCount << '\n';
7796	s << "\tstorageBuffer8BitAccess = " << value.storageBuffer8BitAccess << '\n';
7797	s << "\tuniformAndStorageBuffer8BitAccess = " << value.uniformAndStorageBuffer8BitAccess << '\n';
7798	s << "\tstoragePushConstant8 = " << value.storagePushConstant8 << '\n';
7799	s << "\tshaderBufferInt64Atomics = " << value.shaderBufferInt64Atomics << '\n';
7800	s << "\tshaderSharedInt64Atomics = " << value.shaderSharedInt64Atomics << '\n';
7801	s << "\tshaderFloat16 = " << value.shaderFloat16 << '\n';
7802	s << "\tshaderInt8 = " << value.shaderInt8 << '\n';
7803	s << "\tdescriptorIndexing = " << value.descriptorIndexing << '\n';
7804	s << "\tshaderInputAttachmentArrayDynamicIndexing = " << value.shaderInputAttachmentArrayDynamicIndexing << '\n';
7805	s << "\tshaderUniformTexelBufferArrayDynamicIndexing = " << value.shaderUniformTexelBufferArrayDynamicIndexing << '\n';
7806	s << "\tshaderStorageTexelBufferArrayDynamicIndexing = " << value.shaderStorageTexelBufferArrayDynamicIndexing << '\n';
7807	s << "\tshaderUniformBufferArrayNonUniformIndexing = " << value.shaderUniformBufferArrayNonUniformIndexing << '\n';
7808	s << "\tshaderSampledImageArrayNonUniformIndexing = " << value.shaderSampledImageArrayNonUniformIndexing << '\n';
7809	s << "\tshaderStorageBufferArrayNonUniformIndexing = " << value.shaderStorageBufferArrayNonUniformIndexing << '\n';
7810	s << "\tshaderStorageImageArrayNonUniformIndexing = " << value.shaderStorageImageArrayNonUniformIndexing << '\n';
7811	s << "\tshaderInputAttachmentArrayNonUniformIndexing = " << value.shaderInputAttachmentArrayNonUniformIndexing << '\n';
7812	s << "\tshaderUniformTexelBufferArrayNonUniformIndexing = " << value.shaderUniformTexelBufferArrayNonUniformIndexing << '\n';
7813	s << "\tshaderStorageTexelBufferArrayNonUniformIndexing = " << value.shaderStorageTexelBufferArrayNonUniformIndexing << '\n';
7814	s << "\tdescriptorBindingUniformBufferUpdateAfterBind = " << value.descriptorBindingUniformBufferUpdateAfterBind << '\n';
7815	s << "\tdescriptorBindingSampledImageUpdateAfterBind = " << value.descriptorBindingSampledImageUpdateAfterBind << '\n';
7816	s << "\tdescriptorBindingStorageImageUpdateAfterBind = " << value.descriptorBindingStorageImageUpdateAfterBind << '\n';
7817	s << "\tdescriptorBindingStorageBufferUpdateAfterBind = " << value.descriptorBindingStorageBufferUpdateAfterBind << '\n';
7818	s << "\tdescriptorBindingUniformTexelBufferUpdateAfterBind = " << value.descriptorBindingUniformTexelBufferUpdateAfterBind << '\n';
7819	s << "\tdescriptorBindingStorageTexelBufferUpdateAfterBind = " << value.descriptorBindingStorageTexelBufferUpdateAfterBind << '\n';
7820	s << "\tdescriptorBindingUpdateUnusedWhilePending = " << value.descriptorBindingUpdateUnusedWhilePending << '\n';
7821	s << "\tdescriptorBindingPartiallyBound = " << value.descriptorBindingPartiallyBound << '\n';
7822	s << "\tdescriptorBindingVariableDescriptorCount = " << value.descriptorBindingVariableDescriptorCount << '\n';
7823	s << "\truntimeDescriptorArray = " << value.runtimeDescriptorArray << '\n';
7824	s << "\tsamplerFilterMinmax = " << value.samplerFilterMinmax << '\n';
7825	s << "\tscalarBlockLayout = " << value.scalarBlockLayout << '\n';
7826	s << "\timagelessFramebuffer = " << value.imagelessFramebuffer << '\n';
7827	s << "\tuniformBufferStandardLayout = " << value.uniformBufferStandardLayout << '\n';
7828	s << "\tshaderSubgroupExtendedTypes = " << value.shaderSubgroupExtendedTypes << '\n';
7829	s << "\tseparateDepthStencilLayouts = " << value.separateDepthStencilLayouts << '\n';
7830	s << "\thostQueryReset = " << value.hostQueryReset << '\n';
7831	s << "\ttimelineSemaphore = " << value.timelineSemaphore << '\n';
7832	s << "\tbufferDeviceAddress = " << value.bufferDeviceAddress << '\n';
7833	s << "\tbufferDeviceAddressCaptureReplay = " << value.bufferDeviceAddressCaptureReplay << '\n';
7834	s << "\tbufferDeviceAddressMultiDevice = " << value.bufferDeviceAddressMultiDevice << '\n';
7835	s << "\tvulkanMemoryModel = " << value.vulkanMemoryModel << '\n';
7836	s << "\tvulkanMemoryModelDeviceScope = " << value.vulkanMemoryModelDeviceScope << '\n';
7837	s << "\tvulkanMemoryModelAvailabilityVisibilityChains = " << value.vulkanMemoryModelAvailabilityVisibilityChains << '\n';
7838	s << "\tshaderOutputViewportIndex = " << value.shaderOutputViewportIndex << '\n';
7839	s << "\tshaderOutputLayer = " << value.shaderOutputLayer << '\n';
7840	s << "\tsubgroupBroadcastDynamicId = " << value.subgroupBroadcastDynamicId << '\n';
7841	s << '}';
7842	return s;
7843}
7844
7845std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan12Properties& value)
7846{
7847	s << "VkPhysicalDeviceVulkan12Properties = {\n";
7848	s << "\tsType = " << value.sType << '\n';
7849	s << "\tpNext = " << value.pNext << '\n';
7850	s << "\tdriverID = " << value.driverID << '\n';
7851	s << "\tdriverName = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverName)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverName))) << '\n';
7852	s << "\tdriverInfo = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverInfo)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverInfo))) << '\n';
7853	s << "\tconformanceVersion = " << value.conformanceVersion << '\n';
7854	s << "\tdenormBehaviorIndependence = " << value.denormBehaviorIndependence << '\n';
7855	s << "\troundingModeIndependence = " << value.roundingModeIndependence << '\n';
7856	s << "\tshaderSignedZeroInfNanPreserveFloat16 = " << value.shaderSignedZeroInfNanPreserveFloat16 << '\n';
7857	s << "\tshaderSignedZeroInfNanPreserveFloat32 = " << value.shaderSignedZeroInfNanPreserveFloat32 << '\n';
7858	s << "\tshaderSignedZeroInfNanPreserveFloat64 = " << value.shaderSignedZeroInfNanPreserveFloat64 << '\n';
7859	s << "\tshaderDenormPreserveFloat16 = " << value.shaderDenormPreserveFloat16 << '\n';
7860	s << "\tshaderDenormPreserveFloat32 = " << value.shaderDenormPreserveFloat32 << '\n';
7861	s << "\tshaderDenormPreserveFloat64 = " << value.shaderDenormPreserveFloat64 << '\n';
7862	s << "\tshaderDenormFlushToZeroFloat16 = " << value.shaderDenormFlushToZeroFloat16 << '\n';
7863	s << "\tshaderDenormFlushToZeroFloat32 = " << value.shaderDenormFlushToZeroFloat32 << '\n';
7864	s << "\tshaderDenormFlushToZeroFloat64 = " << value.shaderDenormFlushToZeroFloat64 << '\n';
7865	s << "\tshaderRoundingModeRTEFloat16 = " << value.shaderRoundingModeRTEFloat16 << '\n';
7866	s << "\tshaderRoundingModeRTEFloat32 = " << value.shaderRoundingModeRTEFloat32 << '\n';
7867	s << "\tshaderRoundingModeRTEFloat64 = " << value.shaderRoundingModeRTEFloat64 << '\n';
7868	s << "\tshaderRoundingModeRTZFloat16 = " << value.shaderRoundingModeRTZFloat16 << '\n';
7869	s << "\tshaderRoundingModeRTZFloat32 = " << value.shaderRoundingModeRTZFloat32 << '\n';
7870	s << "\tshaderRoundingModeRTZFloat64 = " << value.shaderRoundingModeRTZFloat64 << '\n';
7871	s << "\tmaxUpdateAfterBindDescriptorsInAllPools = " << value.maxUpdateAfterBindDescriptorsInAllPools << '\n';
7872	s << "\tshaderUniformBufferArrayNonUniformIndexingNative = " << value.shaderUniformBufferArrayNonUniformIndexingNative << '\n';
7873	s << "\tshaderSampledImageArrayNonUniformIndexingNative = " << value.shaderSampledImageArrayNonUniformIndexingNative << '\n';
7874	s << "\tshaderStorageBufferArrayNonUniformIndexingNative = " << value.shaderStorageBufferArrayNonUniformIndexingNative << '\n';
7875	s << "\tshaderStorageImageArrayNonUniformIndexingNative = " << value.shaderStorageImageArrayNonUniformIndexingNative << '\n';
7876	s << "\tshaderInputAttachmentArrayNonUniformIndexingNative = " << value.shaderInputAttachmentArrayNonUniformIndexingNative << '\n';
7877	s << "\trobustBufferAccessUpdateAfterBind = " << value.robustBufferAccessUpdateAfterBind << '\n';
7878	s << "\tquadDivergentImplicitLod = " << value.quadDivergentImplicitLod << '\n';
7879	s << "\tmaxPerStageDescriptorUpdateAfterBindSamplers = " << value.maxPerStageDescriptorUpdateAfterBindSamplers << '\n';
7880	s << "\tmaxPerStageDescriptorUpdateAfterBindUniformBuffers = " << value.maxPerStageDescriptorUpdateAfterBindUniformBuffers << '\n';
7881	s << "\tmaxPerStageDescriptorUpdateAfterBindStorageBuffers = " << value.maxPerStageDescriptorUpdateAfterBindStorageBuffers << '\n';
7882	s << "\tmaxPerStageDescriptorUpdateAfterBindSampledImages = " << value.maxPerStageDescriptorUpdateAfterBindSampledImages << '\n';
7883	s << "\tmaxPerStageDescriptorUpdateAfterBindStorageImages = " << value.maxPerStageDescriptorUpdateAfterBindStorageImages << '\n';
7884	s << "\tmaxPerStageDescriptorUpdateAfterBindInputAttachments = " << value.maxPerStageDescriptorUpdateAfterBindInputAttachments << '\n';
7885	s << "\tmaxPerStageUpdateAfterBindResources = " << value.maxPerStageUpdateAfterBindResources << '\n';
7886	s << "\tmaxDescriptorSetUpdateAfterBindSamplers = " << value.maxDescriptorSetUpdateAfterBindSamplers << '\n';
7887	s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffers = " << value.maxDescriptorSetUpdateAfterBindUniformBuffers << '\n';
7888	s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic << '\n';
7889	s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffers = " << value.maxDescriptorSetUpdateAfterBindStorageBuffers << '\n';
7890	s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic << '\n';
7891	s << "\tmaxDescriptorSetUpdateAfterBindSampledImages = " << value.maxDescriptorSetUpdateAfterBindSampledImages << '\n';
7892	s << "\tmaxDescriptorSetUpdateAfterBindStorageImages = " << value.maxDescriptorSetUpdateAfterBindStorageImages << '\n';
7893	s << "\tmaxDescriptorSetUpdateAfterBindInputAttachments = " << value.maxDescriptorSetUpdateAfterBindInputAttachments << '\n';
7894	s << "\tsupportedDepthResolveModes = " << getResolveModeFlagsStr(value.supportedDepthResolveModes) << '\n';
7895	s << "\tsupportedStencilResolveModes = " << getResolveModeFlagsStr(value.supportedStencilResolveModes) << '\n';
7896	s << "\tindependentResolveNone = " << value.independentResolveNone << '\n';
7897	s << "\tindependentResolve = " << value.independentResolve << '\n';
7898	s << "\tfilterMinmaxSingleComponentFormats = " << value.filterMinmaxSingleComponentFormats << '\n';
7899	s << "\tfilterMinmaxImageComponentMapping = " << value.filterMinmaxImageComponentMapping << '\n';
7900	s << "\tmaxTimelineSemaphoreValueDifference = " << value.maxTimelineSemaphoreValueDifference << '\n';
7901	s << "\tframebufferIntegerColorSampleCounts = " << getSampleCountFlagsStr(value.framebufferIntegerColorSampleCounts) << '\n';
7902	s << '}';
7903	return s;
7904}
7905
7906std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan13Features& value)
7907{
7908	s << "VkPhysicalDeviceVulkan13Features = {\n";
7909	s << "\tsType = " << value.sType << '\n';
7910	s << "\tpNext = " << value.pNext << '\n';
7911	s << "\trobustImageAccess = " << value.robustImageAccess << '\n';
7912	s << "\tinlineUniformBlock = " << value.inlineUniformBlock << '\n';
7913	s << "\tdescriptorBindingInlineUniformBlockUpdateAfterBind = " << value.descriptorBindingInlineUniformBlockUpdateAfterBind << '\n';
7914	s << "\tpipelineCreationCacheControl = " << value.pipelineCreationCacheControl << '\n';
7915	s << "\tprivateData = " << value.privateData << '\n';
7916	s << "\tshaderDemoteToHelperInvocation = " << value.shaderDemoteToHelperInvocation << '\n';
7917	s << "\tshaderTerminateInvocation = " << value.shaderTerminateInvocation << '\n';
7918	s << "\tsubgroupSizeControl = " << value.subgroupSizeControl << '\n';
7919	s << "\tcomputeFullSubgroups = " << value.computeFullSubgroups << '\n';
7920	s << "\tsynchronization2 = " << value.synchronization2 << '\n';
7921	s << "\ttextureCompressionASTC_HDR = " << value.textureCompressionASTC_HDR << '\n';
7922	s << "\tshaderZeroInitializeWorkgroupMemory = " << value.shaderZeroInitializeWorkgroupMemory << '\n';
7923	s << "\tdynamicRendering = " << value.dynamicRendering << '\n';
7924	s << "\tshaderIntegerDotProduct = " << value.shaderIntegerDotProduct << '\n';
7925	s << "\tmaintenance4 = " << value.maintenance4 << '\n';
7926	s << '}';
7927	return s;
7928}
7929
7930std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan13Properties& value)
7931{
7932	s << "VkPhysicalDeviceVulkan13Properties = {\n";
7933	s << "\tsType = " << value.sType << '\n';
7934	s << "\tpNext = " << value.pNext << '\n';
7935	s << "\tminSubgroupSize = " << value.minSubgroupSize << '\n';
7936	s << "\tmaxSubgroupSize = " << value.maxSubgroupSize << '\n';
7937	s << "\tmaxComputeWorkgroupSubgroups = " << value.maxComputeWorkgroupSubgroups << '\n';
7938	s << "\trequiredSubgroupSizeStages = " << getShaderStageFlagsStr(value.requiredSubgroupSizeStages) << '\n';
7939	s << "\tmaxInlineUniformBlockSize = " << value.maxInlineUniformBlockSize << '\n';
7940	s << "\tmaxPerStageDescriptorInlineUniformBlocks = " << value.maxPerStageDescriptorInlineUniformBlocks << '\n';
7941	s << "\tmaxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = " << value.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks << '\n';
7942	s << "\tmaxDescriptorSetInlineUniformBlocks = " << value.maxDescriptorSetInlineUniformBlocks << '\n';
7943	s << "\tmaxDescriptorSetUpdateAfterBindInlineUniformBlocks = " << value.maxDescriptorSetUpdateAfterBindInlineUniformBlocks << '\n';
7944	s << "\tmaxInlineUniformTotalSize = " << value.maxInlineUniformTotalSize << '\n';
7945	s << "\tintegerDotProduct8BitUnsignedAccelerated = " << value.integerDotProduct8BitUnsignedAccelerated << '\n';
7946	s << "\tintegerDotProduct8BitSignedAccelerated = " << value.integerDotProduct8BitSignedAccelerated << '\n';
7947	s << "\tintegerDotProduct8BitMixedSignednessAccelerated = " << value.integerDotProduct8BitMixedSignednessAccelerated << '\n';
7948	s << "\tintegerDotProduct4x8BitPackedUnsignedAccelerated = " << value.integerDotProduct4x8BitPackedUnsignedAccelerated << '\n';
7949	s << "\tintegerDotProduct4x8BitPackedSignedAccelerated = " << value.integerDotProduct4x8BitPackedSignedAccelerated << '\n';
7950	s << "\tintegerDotProduct4x8BitPackedMixedSignednessAccelerated = " << value.integerDotProduct4x8BitPackedMixedSignednessAccelerated << '\n';
7951	s << "\tintegerDotProduct16BitUnsignedAccelerated = " << value.integerDotProduct16BitUnsignedAccelerated << '\n';
7952	s << "\tintegerDotProduct16BitSignedAccelerated = " << value.integerDotProduct16BitSignedAccelerated << '\n';
7953	s << "\tintegerDotProduct16BitMixedSignednessAccelerated = " << value.integerDotProduct16BitMixedSignednessAccelerated << '\n';
7954	s << "\tintegerDotProduct32BitUnsignedAccelerated = " << value.integerDotProduct32BitUnsignedAccelerated << '\n';
7955	s << "\tintegerDotProduct32BitSignedAccelerated = " << value.integerDotProduct32BitSignedAccelerated << '\n';
7956	s << "\tintegerDotProduct32BitMixedSignednessAccelerated = " << value.integerDotProduct32BitMixedSignednessAccelerated << '\n';
7957	s << "\tintegerDotProduct64BitUnsignedAccelerated = " << value.integerDotProduct64BitUnsignedAccelerated << '\n';
7958	s << "\tintegerDotProduct64BitSignedAccelerated = " << value.integerDotProduct64BitSignedAccelerated << '\n';
7959	s << "\tintegerDotProduct64BitMixedSignednessAccelerated = " << value.integerDotProduct64BitMixedSignednessAccelerated << '\n';
7960	s << "\tintegerDotProductAccumulatingSaturating8BitUnsignedAccelerated = " << value.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated << '\n';
7961	s << "\tintegerDotProductAccumulatingSaturating8BitSignedAccelerated = " << value.integerDotProductAccumulatingSaturating8BitSignedAccelerated << '\n';
7962	s << "\tintegerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated = " << value.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated << '\n';
7963	s << "\tintegerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated = " << value.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated << '\n';
7964	s << "\tintegerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated = " << value.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated << '\n';
7965	s << "\tintegerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = " << value.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated << '\n';
7966	s << "\tintegerDotProductAccumulatingSaturating16BitUnsignedAccelerated = " << value.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated << '\n';
7967	s << "\tintegerDotProductAccumulatingSaturating16BitSignedAccelerated = " << value.integerDotProductAccumulatingSaturating16BitSignedAccelerated << '\n';
7968	s << "\tintegerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated = " << value.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated << '\n';
7969	s << "\tintegerDotProductAccumulatingSaturating32BitUnsignedAccelerated = " << value.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated << '\n';
7970	s << "\tintegerDotProductAccumulatingSaturating32BitSignedAccelerated = " << value.integerDotProductAccumulatingSaturating32BitSignedAccelerated << '\n';
7971	s << "\tintegerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated = " << value.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated << '\n';
7972	s << "\tintegerDotProductAccumulatingSaturating64BitUnsignedAccelerated = " << value.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated << '\n';
7973	s << "\tintegerDotProductAccumulatingSaturating64BitSignedAccelerated = " << value.integerDotProductAccumulatingSaturating64BitSignedAccelerated << '\n';
7974	s << "\tintegerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated = " << value.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated << '\n';
7975	s << "\tstorageTexelBufferOffsetAlignmentBytes = " << value.storageTexelBufferOffsetAlignmentBytes << '\n';
7976	s << "\tstorageTexelBufferOffsetSingleTexelAlignment = " << value.storageTexelBufferOffsetSingleTexelAlignment << '\n';
7977	s << "\tuniformTexelBufferOffsetAlignmentBytes = " << value.uniformTexelBufferOffsetAlignmentBytes << '\n';
7978	s << "\tuniformTexelBufferOffsetSingleTexelAlignment = " << value.uniformTexelBufferOffsetSingleTexelAlignment << '\n';
7979	s << "\tmaxBufferSize = " << value.maxBufferSize << '\n';
7980	s << '}';
7981	return s;
7982}
7983
7984std::ostream& operator<< (std::ostream& s, const VkFaultData& value)
7985{
7986	s << "VkFaultData = {\n";
7987	s << "\tsType = " << value.sType << '\n';
7988	s << "\tpNext = " << value.pNext << '\n';
7989	s << "\tfaultLevel = " << value.faultLevel << '\n';
7990	s << "\tfaultType = " << value.faultType << '\n';
7991	s << '}';
7992	return s;
7993}
7994
7995std::ostream& operator<< (std::ostream& s, const VkFaultCallbackInfo& value)
7996{
7997	s << "VkFaultCallbackInfo = {\n";
7998	s << "\tsType = " << value.sType << '\n';
7999	s << "\tpNext = " << value.pNext << '\n';
8000	s << "\tfaultCount = " << value.faultCount << '\n';
8001	s << "\tpFaults = " << value.pFaults << '\n';
8002	s << "\tpfnFaultCallback = " << value.pfnFaultCallback << '\n';
8003	s << '}';
8004	return s;
8005}
8006
8007std::ostream& operator<< (std::ostream& s, const VkSamplerCustomBorderColorCreateInfoEXT& value)
8008{
8009	s << "VkSamplerCustomBorderColorCreateInfoEXT = {\n";
8010	s << "\tsType = " << value.sType << '\n';
8011	s << "\tpNext = " << value.pNext << '\n';
8012	s << "\tcustomBorderColor = " << value.customBorderColor << '\n';
8013	s << "\tformat = " << value.format << '\n';
8014	s << '}';
8015	return s;
8016}
8017
8018std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCustomBorderColorPropertiesEXT& value)
8019{
8020	s << "VkPhysicalDeviceCustomBorderColorPropertiesEXT = {\n";
8021	s << "\tsType = " << value.sType << '\n';
8022	s << "\tpNext = " << value.pNext << '\n';
8023	s << "\tmaxCustomBorderColorSamplers = " << value.maxCustomBorderColorSamplers << '\n';
8024	s << '}';
8025	return s;
8026}
8027
8028std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCustomBorderColorFeaturesEXT& value)
8029{
8030	s << "VkPhysicalDeviceCustomBorderColorFeaturesEXT = {\n";
8031	s << "\tsType = " << value.sType << '\n';
8032	s << "\tpNext = " << value.pNext << '\n';
8033	s << "\tcustomBorderColors = " << value.customBorderColors << '\n';
8034	s << "\tcustomBorderColorWithoutFormat = " << value.customBorderColorWithoutFormat << '\n';
8035	s << '}';
8036	return s;
8037}
8038
8039std::ostream& operator<< (std::ostream& s, const VkRefreshObjectKHR& value)
8040{
8041	s << "VkRefreshObjectKHR = {\n";
8042	s << "\tobjectType = " << value.objectType << '\n';
8043	s << "\tobjectHandle = " << value.objectHandle << '\n';
8044	s << "\tflags = " << getRefreshObjectFlagsKHRStr(value.flags) << '\n';
8045	s << '}';
8046	return s;
8047}
8048
8049std::ostream& operator<< (std::ostream& s, const VkRefreshObjectListKHR& value)
8050{
8051	s << "VkRefreshObjectListKHR = {\n";
8052	s << "\tsType = " << value.sType << '\n';
8053	s << "\tpNext = " << value.pNext << '\n';
8054	s << "\tobjectCount = " << value.objectCount << '\n';
8055	s << "\tpObjects = " << value.pObjects << '\n';
8056	s << '}';
8057	return s;
8058}
8059
8060std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT& value)
8061{
8062	s << "VkPhysicalDeviceExtendedDynamicStateFeaturesEXT = {\n";
8063	s << "\tsType = " << value.sType << '\n';
8064	s << "\tpNext = " << value.pNext << '\n';
8065	s << "\textendedDynamicState = " << value.extendedDynamicState << '\n';
8066	s << '}';
8067	return s;
8068}
8069
8070std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT& value)
8071{
8072	s << "VkPhysicalDeviceExtendedDynamicState2FeaturesEXT = {\n";
8073	s << "\tsType = " << value.sType << '\n';
8074	s << "\tpNext = " << value.pNext << '\n';
8075	s << "\textendedDynamicState2 = " << value.extendedDynamicState2 << '\n';
8076	s << "\textendedDynamicState2LogicOp = " << value.extendedDynamicState2LogicOp << '\n';
8077	s << "\textendedDynamicState2PatchControlPoints = " << value.extendedDynamicState2PatchControlPoints << '\n';
8078	s << '}';
8079	return s;
8080}
8081
8082std::ostream& operator<< (std::ostream& s, const VkPipelineOfflineCreateInfo& value)
8083{
8084	s << "VkPipelineOfflineCreateInfo = {\n";
8085	s << "\tsType = " << value.sType << '\n';
8086	s << "\tpNext = " << value.pNext << '\n';
8087	s << "\tpipelineIdentifier = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.pipelineIdentifier)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.pipelineIdentifier))) << '\n';
8088	s << "\tmatchControl = " << value.matchControl << '\n';
8089	s << "\tpoolEntrySize = " << value.poolEntrySize << '\n';
8090	s << '}';
8091	return s;
8092}
8093
8094std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRobustness2FeaturesEXT& value)
8095{
8096	s << "VkPhysicalDeviceRobustness2FeaturesEXT = {\n";
8097	s << "\tsType = " << value.sType << '\n';
8098	s << "\tpNext = " << value.pNext << '\n';
8099	s << "\trobustBufferAccess2 = " << value.robustBufferAccess2 << '\n';
8100	s << "\trobustImageAccess2 = " << value.robustImageAccess2 << '\n';
8101	s << "\tnullDescriptor = " << value.nullDescriptor << '\n';
8102	s << '}';
8103	return s;
8104}
8105
8106std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRobustness2PropertiesEXT& value)
8107{
8108	s << "VkPhysicalDeviceRobustness2PropertiesEXT = {\n";
8109	s << "\tsType = " << value.sType << '\n';
8110	s << "\tpNext = " << value.pNext << '\n';
8111	s << "\trobustStorageBufferAccessSizeAlignment = " << value.robustStorageBufferAccessSizeAlignment << '\n';
8112	s << "\trobustUniformBufferAccessSizeAlignment = " << value.robustUniformBufferAccessSizeAlignment << '\n';
8113	s << '}';
8114	return s;
8115}
8116
8117std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageRobustnessFeaturesEXT& value)
8118{
8119	s << "VkPhysicalDeviceImageRobustnessFeaturesEXT = {\n";
8120	s << "\tsType = " << value.sType << '\n';
8121	s << "\tpNext = " << value.pNext << '\n';
8122	s << "\trobustImageAccess = " << value.robustImageAccess << '\n';
8123	s << '}';
8124	return s;
8125}
8126
8127std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice4444FormatsFeaturesEXT& value)
8128{
8129	s << "VkPhysicalDevice4444FormatsFeaturesEXT = {\n";
8130	s << "\tsType = " << value.sType << '\n';
8131	s << "\tpNext = " << value.pNext << '\n';
8132	s << "\tformatA4R4G4B4 = " << value.formatA4R4G4B4 << '\n';
8133	s << "\tformatA4B4G4R4 = " << value.formatA4B4G4R4 << '\n';
8134	s << '}';
8135	return s;
8136}
8137
8138std::ostream& operator<< (std::ostream& s, const VkBufferCopy2KHR& value)
8139{
8140	s << "VkBufferCopy2KHR = {\n";
8141	s << "\tsType = " << value.sType << '\n';
8142	s << "\tpNext = " << value.pNext << '\n';
8143	s << "\tsrcOffset = " << value.srcOffset << '\n';
8144	s << "\tdstOffset = " << value.dstOffset << '\n';
8145	s << "\tsize = " << value.size << '\n';
8146	s << '}';
8147	return s;
8148}
8149
8150std::ostream& operator<< (std::ostream& s, const VkImageCopy2KHR& value)
8151{
8152	s << "VkImageCopy2KHR = {\n";
8153	s << "\tsType = " << value.sType << '\n';
8154	s << "\tpNext = " << value.pNext << '\n';
8155	s << "\tsrcSubresource = " << value.srcSubresource << '\n';
8156	s << "\tsrcOffset = " << value.srcOffset << '\n';
8157	s << "\tdstSubresource = " << value.dstSubresource << '\n';
8158	s << "\tdstOffset = " << value.dstOffset << '\n';
8159	s << "\textent = " << value.extent << '\n';
8160	s << '}';
8161	return s;
8162}
8163
8164std::ostream& operator<< (std::ostream& s, const VkImageBlit2KHR& value)
8165{
8166	s << "VkImageBlit2KHR = {\n";
8167	s << "\tsType = " << value.sType << '\n';
8168	s << "\tpNext = " << value.pNext << '\n';
8169	s << "\tsrcSubresource = " << value.srcSubresource << '\n';
8170	s << "\tsrcOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.srcOffsets), DE_ARRAY_END(value.srcOffsets)) << '\n';
8171	s << "\tdstSubresource = " << value.dstSubresource << '\n';
8172	s << "\tdstOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.dstOffsets), DE_ARRAY_END(value.dstOffsets)) << '\n';
8173	s << '}';
8174	return s;
8175}
8176
8177std::ostream& operator<< (std::ostream& s, const VkBufferImageCopy2KHR& value)
8178{
8179	s << "VkBufferImageCopy2KHR = {\n";
8180	s << "\tsType = " << value.sType << '\n';
8181	s << "\tpNext = " << value.pNext << '\n';
8182	s << "\tbufferOffset = " << value.bufferOffset << '\n';
8183	s << "\tbufferRowLength = " << value.bufferRowLength << '\n';
8184	s << "\tbufferImageHeight = " << value.bufferImageHeight << '\n';
8185	s << "\timageSubresource = " << value.imageSubresource << '\n';
8186	s << "\timageOffset = " << value.imageOffset << '\n';
8187	s << "\timageExtent = " << value.imageExtent << '\n';
8188	s << '}';
8189	return s;
8190}
8191
8192std::ostream& operator<< (std::ostream& s, const VkImageResolve2KHR& value)
8193{
8194	s << "VkImageResolve2KHR = {\n";
8195	s << "\tsType = " << value.sType << '\n';
8196	s << "\tpNext = " << value.pNext << '\n';
8197	s << "\tsrcSubresource = " << value.srcSubresource << '\n';
8198	s << "\tsrcOffset = " << value.srcOffset << '\n';
8199	s << "\tdstSubresource = " << value.dstSubresource << '\n';
8200	s << "\tdstOffset = " << value.dstOffset << '\n';
8201	s << "\textent = " << value.extent << '\n';
8202	s << '}';
8203	return s;
8204}
8205
8206std::ostream& operator<< (std::ostream& s, const VkCopyBufferInfo2KHR& value)
8207{
8208	s << "VkCopyBufferInfo2KHR = {\n";
8209	s << "\tsType = " << value.sType << '\n';
8210	s << "\tpNext = " << value.pNext << '\n';
8211	s << "\tsrcBuffer = " << value.srcBuffer << '\n';
8212	s << "\tdstBuffer = " << value.dstBuffer << '\n';
8213	s << "\tregionCount = " << value.regionCount << '\n';
8214	s << "\tpRegions = " << value.pRegions << '\n';
8215	s << '}';
8216	return s;
8217}
8218
8219std::ostream& operator<< (std::ostream& s, const VkCopyImageInfo2KHR& value)
8220{
8221	s << "VkCopyImageInfo2KHR = {\n";
8222	s << "\tsType = " << value.sType << '\n';
8223	s << "\tpNext = " << value.pNext << '\n';
8224	s << "\tsrcImage = " << value.srcImage << '\n';
8225	s << "\tsrcImageLayout = " << value.srcImageLayout << '\n';
8226	s << "\tdstImage = " << value.dstImage << '\n';
8227	s << "\tdstImageLayout = " << value.dstImageLayout << '\n';
8228	s << "\tregionCount = " << value.regionCount << '\n';
8229	s << "\tpRegions = " << value.pRegions << '\n';
8230	s << '}';
8231	return s;
8232}
8233
8234std::ostream& operator<< (std::ostream& s, const VkBlitImageInfo2KHR& value)
8235{
8236	s << "VkBlitImageInfo2KHR = {\n";
8237	s << "\tsType = " << value.sType << '\n';
8238	s << "\tpNext = " << value.pNext << '\n';
8239	s << "\tsrcImage = " << value.srcImage << '\n';
8240	s << "\tsrcImageLayout = " << value.srcImageLayout << '\n';
8241	s << "\tdstImage = " << value.dstImage << '\n';
8242	s << "\tdstImageLayout = " << value.dstImageLayout << '\n';
8243	s << "\tregionCount = " << value.regionCount << '\n';
8244	s << "\tpRegions = " << value.pRegions << '\n';
8245	s << "\tfilter = " << value.filter << '\n';
8246	s << '}';
8247	return s;
8248}
8249
8250std::ostream& operator<< (std::ostream& s, const VkCopyBufferToImageInfo2KHR& value)
8251{
8252	s << "VkCopyBufferToImageInfo2KHR = {\n";
8253	s << "\tsType = " << value.sType << '\n';
8254	s << "\tpNext = " << value.pNext << '\n';
8255	s << "\tsrcBuffer = " << value.srcBuffer << '\n';
8256	s << "\tdstImage = " << value.dstImage << '\n';
8257	s << "\tdstImageLayout = " << value.dstImageLayout << '\n';
8258	s << "\tregionCount = " << value.regionCount << '\n';
8259	s << "\tpRegions = " << value.pRegions << '\n';
8260	s << '}';
8261	return s;
8262}
8263
8264std::ostream& operator<< (std::ostream& s, const VkCopyImageToBufferInfo2KHR& value)
8265{
8266	s << "VkCopyImageToBufferInfo2KHR = {\n";
8267	s << "\tsType = " << value.sType << '\n';
8268	s << "\tpNext = " << value.pNext << '\n';
8269	s << "\tsrcImage = " << value.srcImage << '\n';
8270	s << "\tsrcImageLayout = " << value.srcImageLayout << '\n';
8271	s << "\tdstBuffer = " << value.dstBuffer << '\n';
8272	s << "\tregionCount = " << value.regionCount << '\n';
8273	s << "\tpRegions = " << value.pRegions << '\n';
8274	s << '}';
8275	return s;
8276}
8277
8278std::ostream& operator<< (std::ostream& s, const VkResolveImageInfo2KHR& value)
8279{
8280	s << "VkResolveImageInfo2KHR = {\n";
8281	s << "\tsType = " << value.sType << '\n';
8282	s << "\tpNext = " << value.pNext << '\n';
8283	s << "\tsrcImage = " << value.srcImage << '\n';
8284	s << "\tsrcImageLayout = " << value.srcImageLayout << '\n';
8285	s << "\tdstImage = " << value.dstImage << '\n';
8286	s << "\tdstImageLayout = " << value.dstImageLayout << '\n';
8287	s << "\tregionCount = " << value.regionCount << '\n';
8288	s << "\tpRegions = " << value.pRegions << '\n';
8289	s << '}';
8290	return s;
8291}
8292
8293std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT& value)
8294{
8295	s << "VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT = {\n";
8296	s << "\tsType = " << value.sType << '\n';
8297	s << "\tpNext = " << value.pNext << '\n';
8298	s << "\tshaderImageInt64Atomics = " << value.shaderImageInt64Atomics << '\n';
8299	s << "\tsparseImageInt64Atomics = " << value.sparseImageInt64Atomics << '\n';
8300	s << '}';
8301	return s;
8302}
8303
8304std::ostream& operator<< (std::ostream& s, const VkFragmentShadingRateAttachmentInfoKHR& value)
8305{
8306	s << "VkFragmentShadingRateAttachmentInfoKHR = {\n";
8307	s << "\tsType = " << value.sType << '\n';
8308	s << "\tpNext = " << value.pNext << '\n';
8309	s << "\tpFragmentShadingRateAttachment = " << value.pFragmentShadingRateAttachment << '\n';
8310	s << "\tshadingRateAttachmentTexelSize = " << value.shadingRateAttachmentTexelSize << '\n';
8311	s << '}';
8312	return s;
8313}
8314
8315std::ostream& operator<< (std::ostream& s, const VkPipelineFragmentShadingRateStateCreateInfoKHR& value)
8316{
8317	s << "VkPipelineFragmentShadingRateStateCreateInfoKHR = {\n";
8318	s << "\tsType = " << value.sType << '\n';
8319	s << "\tpNext = " << value.pNext << '\n';
8320	s << "\tfragmentSize = " << value.fragmentSize << '\n';
8321	s << "\tcombinerOps = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.combinerOps), DE_ARRAY_END(value.combinerOps)) << '\n';
8322	s << '}';
8323	return s;
8324}
8325
8326std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShadingRateFeaturesKHR& value)
8327{
8328	s << "VkPhysicalDeviceFragmentShadingRateFeaturesKHR = {\n";
8329	s << "\tsType = " << value.sType << '\n';
8330	s << "\tpNext = " << value.pNext << '\n';
8331	s << "\tpipelineFragmentShadingRate = " << value.pipelineFragmentShadingRate << '\n';
8332	s << "\tprimitiveFragmentShadingRate = " << value.primitiveFragmentShadingRate << '\n';
8333	s << "\tattachmentFragmentShadingRate = " << value.attachmentFragmentShadingRate << '\n';
8334	s << '}';
8335	return s;
8336}
8337
8338std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShadingRatePropertiesKHR& value)
8339{
8340	s << "VkPhysicalDeviceFragmentShadingRatePropertiesKHR = {\n";
8341	s << "\tsType = " << value.sType << '\n';
8342	s << "\tpNext = " << value.pNext << '\n';
8343	s << "\tminFragmentShadingRateAttachmentTexelSize = " << value.minFragmentShadingRateAttachmentTexelSize << '\n';
8344	s << "\tmaxFragmentShadingRateAttachmentTexelSize = " << value.maxFragmentShadingRateAttachmentTexelSize << '\n';
8345	s << "\tmaxFragmentShadingRateAttachmentTexelSizeAspectRatio = " << value.maxFragmentShadingRateAttachmentTexelSizeAspectRatio << '\n';
8346	s << "\tprimitiveFragmentShadingRateWithMultipleViewports = " << value.primitiveFragmentShadingRateWithMultipleViewports << '\n';
8347	s << "\tlayeredShadingRateAttachments = " << value.layeredShadingRateAttachments << '\n';
8348	s << "\tfragmentShadingRateNonTrivialCombinerOps = " << value.fragmentShadingRateNonTrivialCombinerOps << '\n';
8349	s << "\tmaxFragmentSize = " << value.maxFragmentSize << '\n';
8350	s << "\tmaxFragmentSizeAspectRatio = " << value.maxFragmentSizeAspectRatio << '\n';
8351	s << "\tmaxFragmentShadingRateCoverageSamples = " << value.maxFragmentShadingRateCoverageSamples << '\n';
8352	s << "\tmaxFragmentShadingRateRasterizationSamples = " << value.maxFragmentShadingRateRasterizationSamples << '\n';
8353	s << "\tfragmentShadingRateWithShaderDepthStencilWrites = " << value.fragmentShadingRateWithShaderDepthStencilWrites << '\n';
8354	s << "\tfragmentShadingRateWithSampleMask = " << value.fragmentShadingRateWithSampleMask << '\n';
8355	s << "\tfragmentShadingRateWithShaderSampleMask = " << value.fragmentShadingRateWithShaderSampleMask << '\n';
8356	s << "\tfragmentShadingRateWithConservativeRasterization = " << value.fragmentShadingRateWithConservativeRasterization << '\n';
8357	s << "\tfragmentShadingRateWithFragmentShaderInterlock = " << value.fragmentShadingRateWithFragmentShaderInterlock << '\n';
8358	s << "\tfragmentShadingRateWithCustomSampleLocations = " << value.fragmentShadingRateWithCustomSampleLocations << '\n';
8359	s << "\tfragmentShadingRateStrictMultiplyCombiner = " << value.fragmentShadingRateStrictMultiplyCombiner << '\n';
8360	s << '}';
8361	return s;
8362}
8363
8364std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShadingRateKHR& value)
8365{
8366	s << "VkPhysicalDeviceFragmentShadingRateKHR = {\n";
8367	s << "\tsType = " << value.sType << '\n';
8368	s << "\tpNext = " << value.pNext << '\n';
8369	s << "\tsampleCounts = " << getSampleCountFlagsStr(value.sampleCounts) << '\n';
8370	s << "\tfragmentSize = " << value.fragmentSize << '\n';
8371	s << '}';
8372	return s;
8373}
8374
8375std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR& value)
8376{
8377	s << "VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = {\n";
8378	s << "\tsType = " << value.sType << '\n';
8379	s << "\tpNext = " << value.pNext << '\n';
8380	s << "\tshaderTerminateInvocation = " << value.shaderTerminateInvocation << '\n';
8381	s << '}';
8382	return s;
8383}
8384
8385std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT& value)
8386{
8387	s << "VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT = {\n";
8388	s << "\tsType = " << value.sType << '\n';
8389	s << "\tpNext = " << value.pNext << '\n';
8390	s << "\tvertexInputDynamicState = " << value.vertexInputDynamicState << '\n';
8391	s << '}';
8392	return s;
8393}
8394
8395std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDescription2EXT& value)
8396{
8397	s << "VkVertexInputBindingDescription2EXT = {\n";
8398	s << "\tsType = " << value.sType << '\n';
8399	s << "\tpNext = " << value.pNext << '\n';
8400	s << "\tbinding = " << value.binding << '\n';
8401	s << "\tstride = " << value.stride << '\n';
8402	s << "\tinputRate = " << value.inputRate << '\n';
8403	s << "\tdivisor = " << value.divisor << '\n';
8404	s << '}';
8405	return s;
8406}
8407
8408std::ostream& operator<< (std::ostream& s, const VkVertexInputAttributeDescription2EXT& value)
8409{
8410	s << "VkVertexInputAttributeDescription2EXT = {\n";
8411	s << "\tsType = " << value.sType << '\n';
8412	s << "\tpNext = " << value.pNext << '\n';
8413	s << "\tlocation = " << value.location << '\n';
8414	s << "\tbinding = " << value.binding << '\n';
8415	s << "\tformat = " << value.format << '\n';
8416	s << "\toffset = " << value.offset << '\n';
8417	s << '}';
8418	return s;
8419}
8420
8421std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceColorWriteEnableFeaturesEXT& value)
8422{
8423	s << "VkPhysicalDeviceColorWriteEnableFeaturesEXT = {\n";
8424	s << "\tsType = " << value.sType << '\n';
8425	s << "\tpNext = " << value.pNext << '\n';
8426	s << "\tcolorWriteEnable = " << value.colorWriteEnable << '\n';
8427	s << '}';
8428	return s;
8429}
8430
8431std::ostream& operator<< (std::ostream& s, const VkPipelineColorWriteCreateInfoEXT& value)
8432{
8433	s << "VkPipelineColorWriteCreateInfoEXT = {\n";
8434	s << "\tsType = " << value.sType << '\n';
8435	s << "\tpNext = " << value.pNext << '\n';
8436	s << "\tattachmentCount = " << value.attachmentCount << '\n';
8437	s << "\tpColorWriteEnables = " << value.pColorWriteEnables << '\n';
8438	s << '}';
8439	return s;
8440}
8441
8442std::ostream& operator<< (std::ostream& s, const VkMemoryBarrier2KHR& value)
8443{
8444	s << "VkMemoryBarrier2KHR = {\n";
8445	s << "\tsType = " << value.sType << '\n';
8446	s << "\tpNext = " << value.pNext << '\n';
8447	s << "\tsrcStageMask = " << getPipelineStageFlags2Str(value.srcStageMask) << '\n';
8448	s << "\tsrcAccessMask = " << getAccessFlags2Str(value.srcAccessMask) << '\n';
8449	s << "\tdstStageMask = " << getPipelineStageFlags2Str(value.dstStageMask) << '\n';
8450	s << "\tdstAccessMask = " << getAccessFlags2Str(value.dstAccessMask) << '\n';
8451	s << '}';
8452	return s;
8453}
8454
8455std::ostream& operator<< (std::ostream& s, const VkImageMemoryBarrier2KHR& value)
8456{
8457	s << "VkImageMemoryBarrier2KHR = {\n";
8458	s << "\tsType = " << value.sType << '\n';
8459	s << "\tpNext = " << value.pNext << '\n';
8460	s << "\tsrcStageMask = " << getPipelineStageFlags2Str(value.srcStageMask) << '\n';
8461	s << "\tsrcAccessMask = " << getAccessFlags2Str(value.srcAccessMask) << '\n';
8462	s << "\tdstStageMask = " << getPipelineStageFlags2Str(value.dstStageMask) << '\n';
8463	s << "\tdstAccessMask = " << getAccessFlags2Str(value.dstAccessMask) << '\n';
8464	s << "\toldLayout = " << value.oldLayout << '\n';
8465	s << "\tnewLayout = " << value.newLayout << '\n';
8466	s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
8467	s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
8468	s << "\timage = " << value.image << '\n';
8469	s << "\tsubresourceRange = " << value.subresourceRange << '\n';
8470	s << '}';
8471	return s;
8472}
8473
8474std::ostream& operator<< (std::ostream& s, const VkBufferMemoryBarrier2KHR& value)
8475{
8476	s << "VkBufferMemoryBarrier2KHR = {\n";
8477	s << "\tsType = " << value.sType << '\n';
8478	s << "\tpNext = " << value.pNext << '\n';
8479	s << "\tsrcStageMask = " << getPipelineStageFlags2Str(value.srcStageMask) << '\n';
8480	s << "\tsrcAccessMask = " << getAccessFlags2Str(value.srcAccessMask) << '\n';
8481	s << "\tdstStageMask = " << getPipelineStageFlags2Str(value.dstStageMask) << '\n';
8482	s << "\tdstAccessMask = " << getAccessFlags2Str(value.dstAccessMask) << '\n';
8483	s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
8484	s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
8485	s << "\tbuffer = " << value.buffer << '\n';
8486	s << "\toffset = " << value.offset << '\n';
8487	s << "\tsize = " << value.size << '\n';
8488	s << '}';
8489	return s;
8490}
8491
8492std::ostream& operator<< (std::ostream& s, const VkDependencyInfoKHR& value)
8493{
8494	s << "VkDependencyInfoKHR = {\n";
8495	s << "\tsType = " << value.sType << '\n';
8496	s << "\tpNext = " << value.pNext << '\n';
8497	s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
8498	s << "\tmemoryBarrierCount = " << value.memoryBarrierCount << '\n';
8499	s << "\tpMemoryBarriers = " << value.pMemoryBarriers << '\n';
8500	s << "\tbufferMemoryBarrierCount = " << value.bufferMemoryBarrierCount << '\n';
8501	s << "\tpBufferMemoryBarriers = " << value.pBufferMemoryBarriers << '\n';
8502	s << "\timageMemoryBarrierCount = " << value.imageMemoryBarrierCount << '\n';
8503	s << "\tpImageMemoryBarriers = " << value.pImageMemoryBarriers << '\n';
8504	s << '}';
8505	return s;
8506}
8507
8508std::ostream& operator<< (std::ostream& s, const VkSemaphoreSubmitInfoKHR& value)
8509{
8510	s << "VkSemaphoreSubmitInfoKHR = {\n";
8511	s << "\tsType = " << value.sType << '\n';
8512	s << "\tpNext = " << value.pNext << '\n';
8513	s << "\tsemaphore = " << value.semaphore << '\n';
8514	s << "\tvalue = " << value.value << '\n';
8515	s << "\tstageMask = " << getPipelineStageFlags2Str(value.stageMask) << '\n';
8516	s << "\tdeviceIndex = " << value.deviceIndex << '\n';
8517	s << '}';
8518	return s;
8519}
8520
8521std::ostream& operator<< (std::ostream& s, const VkCommandBufferSubmitInfoKHR& value)
8522{
8523	s << "VkCommandBufferSubmitInfoKHR = {\n";
8524	s << "\tsType = " << value.sType << '\n';
8525	s << "\tpNext = " << value.pNext << '\n';
8526	s << "\tcommandBuffer = " << value.commandBuffer << '\n';
8527	s << "\tdeviceMask = " << value.deviceMask << '\n';
8528	s << '}';
8529	return s;
8530}
8531
8532std::ostream& operator<< (std::ostream& s, const VkSubmitInfo2KHR& value)
8533{
8534	s << "VkSubmitInfo2KHR = {\n";
8535	s << "\tsType = " << value.sType << '\n';
8536	s << "\tpNext = " << value.pNext << '\n';
8537	s << "\tflags = " << getSubmitFlagsStr(value.flags) << '\n';
8538	s << "\twaitSemaphoreInfoCount = " << value.waitSemaphoreInfoCount << '\n';
8539	s << "\tpWaitSemaphoreInfos = " << value.pWaitSemaphoreInfos << '\n';
8540	s << "\tcommandBufferInfoCount = " << value.commandBufferInfoCount << '\n';
8541	s << "\tpCommandBufferInfos = " << value.pCommandBufferInfos << '\n';
8542	s << "\tsignalSemaphoreInfoCount = " << value.signalSemaphoreInfoCount << '\n';
8543	s << "\tpSignalSemaphoreInfos = " << value.pSignalSemaphoreInfos << '\n';
8544	s << '}';
8545	return s;
8546}
8547
8548std::ostream& operator<< (std::ostream& s, const VkQueueFamilyCheckpointProperties2NV& value)
8549{
8550	s << "VkQueueFamilyCheckpointProperties2NV = {\n";
8551	s << "\tsType = " << value.sType << '\n';
8552	s << "\tpNext = " << value.pNext << '\n';
8553	s << "\tcheckpointExecutionStageMask = " << getPipelineStageFlags2Str(value.checkpointExecutionStageMask) << '\n';
8554	s << '}';
8555	return s;
8556}
8557
8558std::ostream& operator<< (std::ostream& s, const VkCheckpointData2NV& value)
8559{
8560	s << "VkCheckpointData2NV = {\n";
8561	s << "\tsType = " << value.sType << '\n';
8562	s << "\tpNext = " << value.pNext << '\n';
8563	s << "\tstage = " << getPipelineStageFlags2Str(value.stage) << '\n';
8564	s << "\tpCheckpointMarker = " << value.pCheckpointMarker << '\n';
8565	s << '}';
8566	return s;
8567}
8568
8569std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSynchronization2FeaturesKHR& value)
8570{
8571	s << "VkPhysicalDeviceSynchronization2FeaturesKHR = {\n";
8572	s << "\tsType = " << value.sType << '\n';
8573	s << "\tpNext = " << value.pNext << '\n';
8574	s << "\tsynchronization2 = " << value.synchronization2 << '\n';
8575	s << '}';
8576	return s;
8577}
8578
8579std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkanSC10Properties& value)
8580{
8581	s << "VkPhysicalDeviceVulkanSC10Properties = {\n";
8582	s << "\tsType = " << value.sType << '\n';
8583	s << "\tpNext = " << value.pNext << '\n';
8584	s << "\tdeviceNoDynamicHostAllocations = " << value.deviceNoDynamicHostAllocations << '\n';
8585	s << "\tdeviceDestroyFreesMemory = " << value.deviceDestroyFreesMemory << '\n';
8586	s << "\tcommandPoolMultipleCommandBuffersRecording = " << value.commandPoolMultipleCommandBuffersRecording << '\n';
8587	s << "\tcommandPoolResetCommandBuffer = " << value.commandPoolResetCommandBuffer << '\n';
8588	s << "\tcommandBufferSimultaneousUse = " << value.commandBufferSimultaneousUse << '\n';
8589	s << "\tsecondaryCommandBufferNullOrImagelessFramebuffer = " << value.secondaryCommandBufferNullOrImagelessFramebuffer << '\n';
8590	s << "\trecycleDescriptorSetMemory = " << value.recycleDescriptorSetMemory << '\n';
8591	s << "\trecyclePipelineMemory = " << value.recyclePipelineMemory << '\n';
8592	s << "\tmaxRenderPassSubpasses = " << value.maxRenderPassSubpasses << '\n';
8593	s << "\tmaxRenderPassDependencies = " << value.maxRenderPassDependencies << '\n';
8594	s << "\tmaxSubpassInputAttachments = " << value.maxSubpassInputAttachments << '\n';
8595	s << "\tmaxSubpassPreserveAttachments = " << value.maxSubpassPreserveAttachments << '\n';
8596	s << "\tmaxFramebufferAttachments = " << value.maxFramebufferAttachments << '\n';
8597	s << "\tmaxDescriptorSetLayoutBindings = " << value.maxDescriptorSetLayoutBindings << '\n';
8598	s << "\tmaxQueryFaultCount = " << value.maxQueryFaultCount << '\n';
8599	s << "\tmaxCallbackFaultCount = " << value.maxCallbackFaultCount << '\n';
8600	s << "\tmaxCommandPoolCommandBuffers = " << value.maxCommandPoolCommandBuffers << '\n';
8601	s << "\tmaxCommandBufferSize = " << value.maxCommandBufferSize << '\n';
8602	s << '}';
8603	return s;
8604}
8605
8606std::ostream& operator<< (std::ostream& s, const VkPipelinePoolSize& value)
8607{
8608	s << "VkPipelinePoolSize = {\n";
8609	s << "\tsType = " << value.sType << '\n';
8610	s << "\tpNext = " << value.pNext << '\n';
8611	s << "\tpoolEntrySize = " << value.poolEntrySize << '\n';
8612	s << "\tpoolEntryCount = " << value.poolEntryCount << '\n';
8613	s << '}';
8614	return s;
8615}
8616
8617std::ostream& operator<< (std::ostream& s, const VkDeviceObjectReservationCreateInfo& value)
8618{
8619	s << "VkDeviceObjectReservationCreateInfo = {\n";
8620	s << "\tsType = " << value.sType << '\n';
8621	s << "\tpNext = " << value.pNext << '\n';
8622	s << "\tpipelineCacheCreateInfoCount = " << value.pipelineCacheCreateInfoCount << '\n';
8623	s << "\tpPipelineCacheCreateInfos = " << value.pPipelineCacheCreateInfos << '\n';
8624	s << "\tpipelinePoolSizeCount = " << value.pipelinePoolSizeCount << '\n';
8625	s << "\tpPipelinePoolSizes = " << value.pPipelinePoolSizes << '\n';
8626	s << "\tsemaphoreRequestCount = " << value.semaphoreRequestCount << '\n';
8627	s << "\tcommandBufferRequestCount = " << value.commandBufferRequestCount << '\n';
8628	s << "\tfenceRequestCount = " << value.fenceRequestCount << '\n';
8629	s << "\tdeviceMemoryRequestCount = " << value.deviceMemoryRequestCount << '\n';
8630	s << "\tbufferRequestCount = " << value.bufferRequestCount << '\n';
8631	s << "\timageRequestCount = " << value.imageRequestCount << '\n';
8632	s << "\teventRequestCount = " << value.eventRequestCount << '\n';
8633	s << "\tqueryPoolRequestCount = " << value.queryPoolRequestCount << '\n';
8634	s << "\tbufferViewRequestCount = " << value.bufferViewRequestCount << '\n';
8635	s << "\timageViewRequestCount = " << value.imageViewRequestCount << '\n';
8636	s << "\tlayeredImageViewRequestCount = " << value.layeredImageViewRequestCount << '\n';
8637	s << "\tpipelineCacheRequestCount = " << value.pipelineCacheRequestCount << '\n';
8638	s << "\tpipelineLayoutRequestCount = " << value.pipelineLayoutRequestCount << '\n';
8639	s << "\trenderPassRequestCount = " << value.renderPassRequestCount << '\n';
8640	s << "\tgraphicsPipelineRequestCount = " << value.graphicsPipelineRequestCount << '\n';
8641	s << "\tcomputePipelineRequestCount = " << value.computePipelineRequestCount << '\n';
8642	s << "\tdescriptorSetLayoutRequestCount = " << value.descriptorSetLayoutRequestCount << '\n';
8643	s << "\tsamplerRequestCount = " << value.samplerRequestCount << '\n';
8644	s << "\tdescriptorPoolRequestCount = " << value.descriptorPoolRequestCount << '\n';
8645	s << "\tdescriptorSetRequestCount = " << value.descriptorSetRequestCount << '\n';
8646	s << "\tframebufferRequestCount = " << value.framebufferRequestCount << '\n';
8647	s << "\tcommandPoolRequestCount = " << value.commandPoolRequestCount << '\n';
8648	s << "\tsamplerYcbcrConversionRequestCount = " << value.samplerYcbcrConversionRequestCount << '\n';
8649	s << "\tsurfaceRequestCount = " << value.surfaceRequestCount << '\n';
8650	s << "\tswapchainRequestCount = " << value.swapchainRequestCount << '\n';
8651	s << "\tdisplayModeRequestCount = " << value.displayModeRequestCount << '\n';
8652	s << "\tsubpassDescriptionRequestCount = " << value.subpassDescriptionRequestCount << '\n';
8653	s << "\tattachmentDescriptionRequestCount = " << value.attachmentDescriptionRequestCount << '\n';
8654	s << "\tdescriptorSetLayoutBindingRequestCount = " << value.descriptorSetLayoutBindingRequestCount << '\n';
8655	s << "\tdescriptorSetLayoutBindingLimit = " << value.descriptorSetLayoutBindingLimit << '\n';
8656	s << "\tmaxImageViewMipLevels = " << value.maxImageViewMipLevels << '\n';
8657	s << "\tmaxImageViewArrayLayers = " << value.maxImageViewArrayLayers << '\n';
8658	s << "\tmaxLayeredImageViewMipLevels = " << value.maxLayeredImageViewMipLevels << '\n';
8659	s << "\tmaxOcclusionQueriesPerPool = " << value.maxOcclusionQueriesPerPool << '\n';
8660	s << "\tmaxPipelineStatisticsQueriesPerPool = " << value.maxPipelineStatisticsQueriesPerPool << '\n';
8661	s << "\tmaxTimestampQueriesPerPool = " << value.maxTimestampQueriesPerPool << '\n';
8662	s << "\tmaxImmutableSamplersPerDescriptorSetLayout = " << value.maxImmutableSamplersPerDescriptorSetLayout << '\n';
8663	s << '}';
8664	return s;
8665}
8666
8667std::ostream& operator<< (std::ostream& s, const VkCommandPoolMemoryReservationCreateInfo& value)
8668{
8669	s << "VkCommandPoolMemoryReservationCreateInfo = {\n";
8670	s << "\tsType = " << value.sType << '\n';
8671	s << "\tpNext = " << value.pNext << '\n';
8672	s << "\tcommandPoolReservedSize = " << value.commandPoolReservedSize << '\n';
8673	s << "\tcommandPoolMaxCommandBuffers = " << value.commandPoolMaxCommandBuffers << '\n';
8674	s << '}';
8675	return s;
8676}
8677
8678std::ostream& operator<< (std::ostream& s, const VkCommandPoolMemoryConsumption& value)
8679{
8680	s << "VkCommandPoolMemoryConsumption = {\n";
8681	s << "\tsType = " << value.sType << '\n';
8682	s << "\tpNext = " << value.pNext << '\n';
8683	s << "\tcommandPoolAllocated = " << value.commandPoolAllocated << '\n';
8684	s << "\tcommandPoolReservedSize = " << value.commandPoolReservedSize << '\n';
8685	s << "\tcommandBufferAllocated = " << value.commandBufferAllocated << '\n';
8686	s << '}';
8687	return s;
8688}
8689
8690std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkanSC10Features& value)
8691{
8692	s << "VkPhysicalDeviceVulkanSC10Features = {\n";
8693	s << "\tsType = " << value.sType << '\n';
8694	s << "\tpNext = " << value.pNext << '\n';
8695	s << "\tshaderAtomicInstructions = " << value.shaderAtomicInstructions << '\n';
8696	s << '}';
8697	return s;
8698}
8699
8700std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT& value)
8701{
8702	s << "VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = {\n";
8703	s << "\tsType = " << value.sType << '\n';
8704	s << "\tpNext = " << value.pNext << '\n';
8705	s << "\tycbcr2plane444Formats = " << value.ycbcr2plane444Formats << '\n';
8706	s << '}';
8707	return s;
8708}
8709
8710std::ostream& operator<< (std::ostream& s, const VkFormatProperties3KHR& value)
8711{
8712	s << "VkFormatProperties3KHR = {\n";
8713	s << "\tsType = " << value.sType << '\n';
8714	s << "\tpNext = " << value.pNext << '\n';
8715	s << "\tlinearTilingFeatures = " << getFormatFeatureFlags2Str(value.linearTilingFeatures) << '\n';
8716	s << "\toptimalTilingFeatures = " << getFormatFeatureFlags2Str(value.optimalTilingFeatures) << '\n';
8717	s << "\tbufferFeatures = " << getFormatFeatureFlags2Str(value.bufferFeatures) << '\n';
8718	s << '}';
8719	return s;
8720}
8721
8722std::ostream& operator<< (std::ostream& s, const VkDrmFormatModifierPropertiesList2EXT& value)
8723{
8724	s << "VkDrmFormatModifierPropertiesList2EXT = {\n";
8725	s << "\tsType = " << value.sType << '\n';
8726	s << "\tpNext = " << value.pNext << '\n';
8727	s << "\tdrmFormatModifierCount = " << value.drmFormatModifierCount << '\n';
8728	s << "\tpDrmFormatModifierProperties = " << value.pDrmFormatModifierProperties << '\n';
8729	s << '}';
8730	return s;
8731}
8732
8733std::ostream& operator<< (std::ostream& s, const VkDrmFormatModifierProperties2EXT& value)
8734{
8735	s << "VkDrmFormatModifierProperties2EXT = {\n";
8736	s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
8737	s << "\tdrmFormatModifierPlaneCount = " << value.drmFormatModifierPlaneCount << '\n';
8738	s << "\tdrmFormatModifierTilingFeatures = " << getFormatFeatureFlags2Str(value.drmFormatModifierTilingFeatures) << '\n';
8739	s << '}';
8740	return s;
8741}
8742
8743std::ostream& operator<< (std::ostream& s, const VkImportScreenBufferInfoQNX& value)
8744{
8745	s << "VkImportScreenBufferInfoQNX = {\n";
8746	s << "\tsType = " << value.sType << '\n';
8747	s << "\tpNext = " << value.pNext << '\n';
8748	s << "\tbuffer = " << value.buffer << '\n';
8749	s << '}';
8750	return s;
8751}
8752
8753std::ostream& operator<< (std::ostream& s, const VkScreenBufferPropertiesQNX& value)
8754{
8755	s << "VkScreenBufferPropertiesQNX = {\n";
8756	s << "\tsType = " << value.sType << '\n';
8757	s << "\tpNext = " << value.pNext << '\n';
8758	s << "\tallocationSize = " << value.allocationSize << '\n';
8759	s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
8760	s << '}';
8761	return s;
8762}
8763
8764std::ostream& operator<< (std::ostream& s, const VkScreenBufferFormatPropertiesQNX& value)
8765{
8766	s << "VkScreenBufferFormatPropertiesQNX = {\n";
8767	s << "\tsType = " << value.sType << '\n';
8768	s << "\tpNext = " << value.pNext << '\n';
8769	s << "\tformat = " << value.format << '\n';
8770	s << "\texternalFormat = " << value.externalFormat << '\n';
8771	s << "\tscreenUsage = " << value.screenUsage << '\n';
8772	s << "\tformatFeatures = " << getFormatFeatureFlagsStr(value.formatFeatures) << '\n';
8773	s << "\tsamplerYcbcrConversionComponents = " << value.samplerYcbcrConversionComponents << '\n';
8774	s << "\tsuggestedYcbcrModel = " << value.suggestedYcbcrModel << '\n';
8775	s << "\tsuggestedYcbcrRange = " << value.suggestedYcbcrRange << '\n';
8776	s << "\tsuggestedXChromaOffset = " << value.suggestedXChromaOffset << '\n';
8777	s << "\tsuggestedYChromaOffset = " << value.suggestedYChromaOffset << '\n';
8778	s << '}';
8779	return s;
8780}
8781
8782std::ostream& operator<< (std::ostream& s, const VkExternalFormatQNX& value)
8783{
8784	s << "VkExternalFormatQNX = {\n";
8785	s << "\tsType = " << value.sType << '\n';
8786	s << "\tpNext = " << value.pNext << '\n';
8787	s << "\texternalFormat = " << value.externalFormat << '\n';
8788	s << '}';
8789	return s;
8790}
8791
8792std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX& value)
8793{
8794	s << "VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX = {\n";
8795	s << "\tsType = " << value.sType << '\n';
8796	s << "\tpNext = " << value.pNext << '\n';
8797	s << "\tscreenBufferImport = " << value.screenBufferImport << '\n';
8798	s << '}';
8799	return s;
8800}
8801