/* WARNING: This is auto-generated file. Do not modify, since changes will
 * be lost! Modify the generating script instead.
 * This file was generated by /scripts/gen_framework.py
 */
template<> const char*	getTypeName<VkBuffer>							(void) { return "VkBuffer";							}
template<> const char*	getTypeName<VkImage>							(void) { return "VkImage";							}
template<> const char*	getTypeName<VkInstance>							(void) { return "VkInstance";						}
template<> const char*	getTypeName<VkPhysicalDevice>					(void) { return "VkPhysicalDevice";					}
template<> const char*	getTypeName<VkDevice>							(void) { return "VkDevice";							}
template<> const char*	getTypeName<VkQueue>							(void) { return "VkQueue";							}
template<> const char*	getTypeName<VkSemaphore>						(void) { return "VkSemaphore";						}
template<> const char*	getTypeName<VkCommandBuffer>					(void) { return "VkCommandBuffer";					}
template<> const char*	getTypeName<VkFence>							(void) { return "VkFence";							}
template<> const char*	getTypeName<VkDeviceMemory>						(void) { return "VkDeviceMemory";					}
template<> const char*	getTypeName<VkEvent>							(void) { return "VkEvent";							}
template<> const char*	getTypeName<VkQueryPool>						(void) { return "VkQueryPool";						}
template<> const char*	getTypeName<VkBufferView>						(void) { return "VkBufferView";						}
template<> const char*	getTypeName<VkImageView>						(void) { return "VkImageView";						}
template<> const char*	getTypeName<VkShaderModule>						(void) { return "VkShaderModule";					}
template<> const char*	getTypeName<VkPipelineCache>					(void) { return "VkPipelineCache";					}
template<> const char*	getTypeName<VkPipelineLayout>					(void) { return "VkPipelineLayout";					}
template<> const char*	getTypeName<VkPipeline>							(void) { return "VkPipeline";						}
template<> const char*	getTypeName<VkRenderPass>						(void) { return "VkRenderPass";						}
template<> const char*	getTypeName<VkDescriptorSetLayout>				(void) { return "VkDescriptorSetLayout";			}
template<> const char*	getTypeName<VkSampler>							(void) { return "VkSampler";						}
template<> const char*	getTypeName<VkDescriptorSet>					(void) { return "VkDescriptorSet";					}
template<> const char*	getTypeName<VkDescriptorPool>					(void) { return "VkDescriptorPool";					}
template<> const char*	getTypeName<VkFramebuffer>						(void) { return "VkFramebuffer";					}
template<> const char*	getTypeName<VkCommandPool>						(void) { return "VkCommandPool";					}
template<> const char*	getTypeName<VkSamplerYcbcrConversion>			(void) { return "VkSamplerYcbcrConversion";			}
template<> const char*	getTypeName<VkDescriptorUpdateTemplate>			(void) { return "VkDescriptorUpdateTemplate";		}
template<> const char*	getTypeName<VkPrivateDataSlot>					(void) { return "VkPrivateDataSlot";				}
template<> const char*	getTypeName<VkSurfaceKHR>						(void) { return "VkSurfaceKHR";						}
template<> const char*	getTypeName<VkSwapchainKHR>						(void) { return "VkSwapchainKHR";					}
template<> const char*	getTypeName<VkDisplayKHR>						(void) { return "VkDisplayKHR";						}
template<> const char*	getTypeName<VkDisplayModeKHR>					(void) { return "VkDisplayModeKHR";					}
template<> const char*	getTypeName<VkDeferredOperationKHR>				(void) { return "VkDeferredOperationKHR";			}
template<> const char*	getTypeName<VkDebugReportCallbackEXT>			(void) { return "VkDebugReportCallbackEXT";			}
template<> const char*	getTypeName<VkCuModuleNVX>						(void) { return "VkCuModuleNVX";					}
template<> const char*	getTypeName<VkCuFunctionNVX>					(void) { return "VkCuFunctionNVX";					}
template<> const char*	getTypeName<VkDebugUtilsMessengerEXT>			(void) { return "VkDebugUtilsMessengerEXT";			}
template<> const char*	getTypeName<VkValidationCacheEXT>				(void) { return "VkValidationCacheEXT";				}
template<> const char*	getTypeName<VkAccelerationStructureNV>			(void) { return "VkAccelerationStructureNV";		}
template<> const char*	getTypeName<VkPerformanceConfigurationINTEL>	(void) { return "VkPerformanceConfigurationINTEL";	}
template<> const char*	getTypeName<VkIndirectCommandsLayoutNV>			(void) { return "VkIndirectCommandsLayoutNV";		}
template<> const char*	getTypeName<VkAccelerationStructureKHR>			(void) { return "VkAccelerationStructureKHR";		}
template<> const char*	getTypeName<VkVideoSessionKHR>					(void) { return "VkVideoSessionKHR";				}
template<> const char*	getTypeName<VkVideoSessionParametersKHR>		(void) { return "VkVideoSessionParametersKHR";		}
template<> const char*	getTypeName<VkBufferCollectionFUCHSIA>			(void) { return "VkBufferCollectionFUCHSIA";		}

namespace pt
{
std::ostream& operator<< (std::ostream& s, XlibDisplayPtr				v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, XlibWindow					v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, XlibVisualID					v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, XcbConnectionPtr				v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, XcbWindow					v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, XcbVisualid					v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, WaylandDisplayPtr			v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, WaylandSurfacePtr			v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, MirConnectionPtr				v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, MirSurfacePtr				v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, AndroidNativeWindowPtr		v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, Win32InstanceHandle			v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, Win32WindowHandle			v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, Win32Handle					v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, Win32SecurityAttributesPtr	v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, AndroidHardwareBufferPtr		v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, Win32MonitorHandle			v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, Win32LPCWSTR					v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, RROutput						v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, zx_handle_t					v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, GgpFrameToken				v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, GgpStreamDescriptor			v) { return s << tcu::toHex(v.internal); }
std::ostream& operator<< (std::ostream& s, CAMetalLayer					v) { return s << tcu::toHex(v.internal); }
}

const char* getResultName (VkResult value)
{
	switch (value)
	{
		case VK_SUCCESS:											return "VK_SUCCESS";
		case VK_NOT_READY:											return "VK_NOT_READY";
		case VK_TIMEOUT:											return "VK_TIMEOUT";
		case VK_EVENT_SET:											return "VK_EVENT_SET";
		case VK_EVENT_RESET:										return "VK_EVENT_RESET";
		case VK_INCOMPLETE:											return "VK_INCOMPLETE";
		case VK_ERROR_OUT_OF_HOST_MEMORY:							return "VK_ERROR_OUT_OF_HOST_MEMORY";
		case VK_ERROR_OUT_OF_DEVICE_MEMORY:							return "VK_ERROR_OUT_OF_DEVICE_MEMORY";
		case VK_ERROR_INITIALIZATION_FAILED:						return "VK_ERROR_INITIALIZATION_FAILED";
		case VK_ERROR_DEVICE_LOST:									return "VK_ERROR_DEVICE_LOST";
		case VK_ERROR_MEMORY_MAP_FAILED:							return "VK_ERROR_MEMORY_MAP_FAILED";
		case VK_ERROR_LAYER_NOT_PRESENT:							return "VK_ERROR_LAYER_NOT_PRESENT";
		case VK_ERROR_EXTENSION_NOT_PRESENT:						return "VK_ERROR_EXTENSION_NOT_PRESENT";
		case VK_ERROR_FEATURE_NOT_PRESENT:							return "VK_ERROR_FEATURE_NOT_PRESENT";
		case VK_ERROR_INCOMPATIBLE_DRIVER:							return "VK_ERROR_INCOMPATIBLE_DRIVER";
		case VK_ERROR_TOO_MANY_OBJECTS:								return "VK_ERROR_TOO_MANY_OBJECTS";
		case VK_ERROR_FORMAT_NOT_SUPPORTED:							return "VK_ERROR_FORMAT_NOT_SUPPORTED";
		case VK_ERROR_FRAGMENTED_POOL:								return "VK_ERROR_FRAGMENTED_POOL";
		case VK_ERROR_UNKNOWN:										return "VK_ERROR_UNKNOWN";
		case VK_ERROR_OUT_OF_POOL_MEMORY:							return "VK_ERROR_OUT_OF_POOL_MEMORY";
		case VK_ERROR_INVALID_EXTERNAL_HANDLE:						return "VK_ERROR_INVALID_EXTERNAL_HANDLE";
		case VK_ERROR_FRAGMENTATION:								return "VK_ERROR_FRAGMENTATION";
		case VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS:				return "VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS";
		case VK_PIPELINE_COMPILE_REQUIRED:							return "VK_PIPELINE_COMPILE_REQUIRED";
		case VK_ERROR_SURFACE_LOST_KHR:								return "VK_ERROR_SURFACE_LOST_KHR";
		case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR:						return "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR";
		case VK_SUBOPTIMAL_KHR:										return "VK_SUBOPTIMAL_KHR";
		case VK_ERROR_OUT_OF_DATE_KHR:								return "VK_ERROR_OUT_OF_DATE_KHR";
		case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR:						return "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR";
		case VK_ERROR_VALIDATION_FAILED_EXT:						return "VK_ERROR_VALIDATION_FAILED_EXT";
		case VK_ERROR_INVALID_SHADER_NV:							return "VK_ERROR_INVALID_SHADER_NV";
		case VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT:	return "VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT";
		case VK_ERROR_NOT_PERMITTED_KHR:							return "VK_ERROR_NOT_PERMITTED_KHR";
		case VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT:			return "VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT";
		case VK_THREAD_IDLE_KHR:									return "VK_THREAD_IDLE_KHR";
		case VK_THREAD_DONE_KHR:									return "VK_THREAD_DONE_KHR";
		case VK_OPERATION_DEFERRED_KHR:								return "VK_OPERATION_DEFERRED_KHR";
		case VK_OPERATION_NOT_DEFERRED_KHR:							return "VK_OPERATION_NOT_DEFERRED_KHR";
		case VK_RESULT_MAX_ENUM:									return "VK_RESULT_MAX_ENUM";
		default:													return DE_NULL;
	}
}

const char* getStructureTypeName (VkStructureType value)
{
	switch (value)
	{
		case VK_STRUCTURE_TYPE_APPLICATION_INFO:													return "VK_STRUCTURE_TYPE_APPLICATION_INFO";
		case VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO:												return "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO:											return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO:													return "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_SUBMIT_INFO:															return "VK_STRUCTURE_TYPE_SUBMIT_INFO";
		case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO:												return "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO";
		case VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE:													return "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE";
		case VK_STRUCTURE_TYPE_BIND_SPARSE_INFO:													return "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO";
		case VK_STRUCTURE_TYPE_FENCE_CREATE_INFO:													return "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO:												return "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO:													return "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO";
		case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO:												return "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO";
		case VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO:													return "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO";
		case VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO:												return "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO";
		case VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO:													return "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO:												return "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO";
		case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO:											return "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO:											return "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO:								return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO:							return "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO:								return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO:							return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO:								return "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO:							return "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO:								return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO:										return "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO:										return "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO:											return "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO";
		case VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO:													return "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO";
		case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO:									return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO";
		case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO:											return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO";
		case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO:										return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO";
		case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET:												return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET";
		case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET:													return "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET";
		case VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO:												return "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO";
		case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO:												return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO";
		case VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO:											return "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO";
		case VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO:										return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO";
		case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO:										return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO";
		case VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO:											return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO";
		case VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO:												return "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO";
		case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER:												return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER";
		case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER:												return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER";
		case VK_STRUCTURE_TYPE_MEMORY_BARRIER:														return "VK_STRUCTURE_TYPE_MEMORY_BARRIER";
		case VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO:											return "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO:											return "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES:									return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES";
		case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO:												return "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO";
		case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO:												return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES";
		case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:										return "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS";
		case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO:										return "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO";
		case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO:											return "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO";
		case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO:									return "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO";
		case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO:								return "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO";
		case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO:											return "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO";
		case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO:										return "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO";
		case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:								return "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO";
		case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO:									return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES:									return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES";
		case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO:										return "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2:									return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2";
		case VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2:									return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2";
		case VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2:								return "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2";
		case VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2:												return "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2";
		case VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2:									return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2:											return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2:										return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2";
		case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2:													return "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2";
		case VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2:											return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2:									return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2";
		case VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2:											return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2:									return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2";
		case VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2:									return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES";
		case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO:						return "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO";
		case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO:										return "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO:				return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO:									return "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES:									return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES";
		case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO:												return "VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES";
		case VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2:													return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2";
		case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO:								return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO";
		case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:										return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO";
		case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO:										return "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO";
		case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO:								return "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES";
		case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES:					return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES";
		case VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO:								return "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO";
		case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES:									return "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO";
		case VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES:											return "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES:										return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES";
		case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO:									return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO";
		case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO:											return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO:									return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO";
		case VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES:											return "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES";
		case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO:											return "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO:										return "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO";
		case VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES:										return "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES";
		case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT:										return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES:									return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES:									return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES";
		case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO:										return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO";
		case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2:											return "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2";
		case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2:												return "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2";
		case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2:												return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2";
		case VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2:												return "VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2";
		case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2:											return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2";
		case VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO:													return "VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO";
		case VK_STRUCTURE_TYPE_SUBPASS_END_INFO:													return "VK_STRUCTURE_TYPE_SUBPASS_END_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES:									return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES";
		case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO:						return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES";
		case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO:				return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO";
		case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT:				return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES";
		case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE:							return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES";
		case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO:										return "VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES";
		case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO:									return "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES";
		case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO:									return "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO";
		case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO:									return "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO";
		case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO:									return "VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES";
		case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT:									return "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT";
		case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT:								return "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES";
		case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO:											return "VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO:										return "VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO";
		case VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO:													return "VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO";
		case VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO:												return "VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES";
		case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO:											return "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO";
		case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO:							return "VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO";
		case VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO:							return "VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO";
		case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO:							return "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES:									return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES";
		case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO:								return "VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES:										return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES";
		case VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO:										return "VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO:										return "VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES";
		case VK_STRUCTURE_TYPE_MEMORY_BARRIER_2:													return "VK_STRUCTURE_TYPE_MEMORY_BARRIER_2";
		case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2:												return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2";
		case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2:												return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2";
		case VK_STRUCTURE_TYPE_DEPENDENCY_INFO:														return "VK_STRUCTURE_TYPE_DEPENDENCY_INFO";
		case VK_STRUCTURE_TYPE_SUBMIT_INFO_2:														return "VK_STRUCTURE_TYPE_SUBMIT_INFO_2";
		case VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO:												return "VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO";
		case VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO:											return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES";
		case VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2:													return "VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2";
		case VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2:													return "VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2";
		case VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2:											return "VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2";
		case VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2:											return "VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2";
		case VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2:													return "VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2";
		case VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2:												return "VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2";
		case VK_STRUCTURE_TYPE_BUFFER_COPY_2:														return "VK_STRUCTURE_TYPE_BUFFER_COPY_2";
		case VK_STRUCTURE_TYPE_IMAGE_COPY_2:														return "VK_STRUCTURE_TYPE_IMAGE_COPY_2";
		case VK_STRUCTURE_TYPE_IMAGE_BLIT_2:														return "VK_STRUCTURE_TYPE_IMAGE_BLIT_2";
		case VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2:													return "VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2";
		case VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2:														return "VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES";
		case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO:			return "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES";
		case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK:							return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK";
		case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO:					return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES";
		case VK_STRUCTURE_TYPE_RENDERING_INFO:														return "VK_STRUCTURE_TYPE_RENDERING_INFO";
		case VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO:											return "VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO";
		case VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO:										return "VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES";
		case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO:							return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES";
		case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3:													return "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES";
		case VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS:									return "VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS";
		case VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS:									return "VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS";
		case VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR:											return "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR";
		case VK_STRUCTURE_TYPE_PRESENT_INFO_KHR:													return "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR";
		case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR:								return "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR";
		case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR:										return "VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR";
		case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR:								return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR";
		case VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR:											return "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR";
		case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR:										return "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR";
		case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR:								return "VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR";
		case VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR:										return "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR";
		case VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR:										return "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR";
		case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR:											return "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR";
		case VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR:										return "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR";
		case VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR:											return "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR";
		case VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR:										return "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR";
		case VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR:										return "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR";
		case VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR:										return "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR";
		case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT:								return "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD:				return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD";
		case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT:									return "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT";
		case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT:									return "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT";
		case VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT:										return "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR:													return "VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR";
		case VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR:												return "VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR";
		case VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR:											return "VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR";
		case VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR:										return "VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR";
		case VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR:												return "VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR";
		case VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR:										return "VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR";
		case VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR:							return "VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR";
		case VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR:							return "VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR";
		case VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR:											return "VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR";
		case VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR:											return "VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR";
		case VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR:										return "VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR";
		case VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR:											return "VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR";
		case VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR:									return "VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR";
		case VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR:													return "VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR";
		case VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR:											return "VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR";
		case VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_2_KHR:					return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_2_KHR";
		case VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR:												return "VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR";
		case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV:							return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV";
		case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV:							return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV";
		case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV:						return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT";
		case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT:					return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX:											return "VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX";
		case VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX:											return "VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX";
		case VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX:													return "VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX";
		case VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX:											return "VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX";
		case VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX:									return "VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT:									return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT:							return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT:				return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT:					return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT:								return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT:									return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT:									return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT:						return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT:										return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT:								return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT:						return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT:									return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXT:							return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT:				return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT:					return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT:								return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT:									return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_EXT:									return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_EXT:						return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_EXT:										return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_REFERENCE_LISTS_EXT:								return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_REFERENCE_LISTS_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT:								return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT:						return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT:									return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT:							return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT:									return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT:											return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT:										return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT:				return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT:					return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT:									return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT";
		case VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD:							return "VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD";
		case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR:					return "VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR";
		case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT:					return "VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT";
		case VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD:									return "VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD";
		case VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX:								return "VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX";
		case VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP:							return "VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV";
		case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV:								return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV";
		case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV:										return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV";
		case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV:									return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV";
		case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV:									return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV";
		case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV:							return "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV";
		case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT:												return "VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT";
		case VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN:											return "VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN";
		case VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT:										return "VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR:									return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR";
		case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR:									return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR";
		case VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR:									return "VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR";
		case VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR:									return "VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR";
		case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR:											return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR";
		case VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR:											return "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR";
		case VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR:												return "VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR";
		case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR:							return "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR";
		case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR:								return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR";
		case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR:								return "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR";
		case VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR:											return "VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR";
		case VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR:									return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR";
		case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR:										return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR";
		case VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR:											return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR";
		case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT:			return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT:								return "VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT";
		case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR:													return "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR";
		case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV:					return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV";
		case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT:											return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT";
		case VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT:												return "VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT";
		case VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT:												return "VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT";
		case VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT:												return "VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT";
		case VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT:									return "VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE:											return "VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX:		return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX";
		case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV:						return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT";
		case VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT:					return "VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT";
		case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT:			return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT:				return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_HDR_METADATA_EXT:													return "VK_STRUCTURE_TYPE_HDR_METADATA_EXT";
		case VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR:								return "VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR";
		case VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR:									return "VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR";
		case VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR:									return "VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR";
		case VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR:										return "VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR";
		case VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR:											return "VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR";
		case VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR:												return "VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR";
		case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR:								return "VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR";
		case VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR:									return "VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR";
		case VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR:										return "VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR";
		case VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR:												return "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR";
		case VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR:									return "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR:									return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR";
		case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR:											return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR";
		case VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR:												return "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR";
		case VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR:											return "VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR";
		case VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR:										return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR";
		case VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR:										return "VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR";
		case VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR:											return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR";
		case VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR:									return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR";
		case VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK:											return "VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK";
		case VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK:										return "VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK";
		case VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT:									return "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT";
		case VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT:										return "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT";
		case VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT:												return "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT";
		case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT:								return "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT";
		case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT:								return "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID:								return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID";
		case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID:							return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID";
		case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID:					return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID";
		case VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID:							return "VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID";
		case VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID:						return "VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID";
		case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID:												return "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID";
		case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID:					return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID";
		case VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT:											return "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT";
		case VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT:							return "VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT";
		case VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT:						return "VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT";
		case VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT:											return "VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT";
		case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT:					return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV:						return "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV";
		case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR:						return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR";
		case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR:						return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR";
		case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR:						return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR";
		case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR:						return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR";
		case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR:					return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR";
		case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR:					return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR";
		case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR:									return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR";
		case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR:								return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR";
		case VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR:								return "VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR";
		case VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR:						return "VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR";
		case VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR:						return "VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR";
		case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR:								return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR";
		case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR:							return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR";
		case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR:								return "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR";
		case VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR:							return "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR";
		case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR:						return "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR";
		case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV:					return "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV";
		case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT:								return "VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT";
		case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT:						return "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT:					return "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT:							return "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT";
		case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT:							return "VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT";
		case VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT:									return "VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT:						return "VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR";
		case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV:			return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV";
		case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV:			return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV";
		case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV:									return "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV";
		case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV:								return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV";
		case VK_STRUCTURE_TYPE_GEOMETRY_NV:															return "VK_STRUCTURE_TYPE_GEOMETRY_NV";
		case VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV:												return "VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV";
		case VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV:													return "VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV";
		case VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV:							return "VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV";
		case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV:						return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV";
		case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV:					return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV";
		case VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV:								return "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV";
		case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV:										return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV";
		case VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV:			return "VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT";
		case VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT:					return "VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT";
		case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT:									return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT";
		case VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT:									return "VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR";
		case VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD:							return "VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD";
		case VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT:										return "VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD";
		case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT:									return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT:							return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT:				return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT:					return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT:										return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT:									return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT";
		case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT:									return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT";
		case VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR:						return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR";
		case VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR:							return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR";
		case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD:						return "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT";
		case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT:					return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP:												return "VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV";
		case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV:			return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV";
		case VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV:													return "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV";
		case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV:								return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL";
		case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL:						return "VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL";
		case VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL:								return "VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL";
		case VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL:										return "VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL";
		case VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL:								return "VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL";
		case VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL:										return "VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL";
		case VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL:						return "VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT";
		case VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD:							return "VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD";
		case VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD:						return "VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD";
		case VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA:								return "VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA";
		case VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT:										return "VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT";
		case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT:					return "VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR:							return "VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR";
		case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR:				return "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT:									return "VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR:									return "VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV:		return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT:								return "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT:												return "VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV";
		case VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV:									return "VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV";
		case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV:					return "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV";
		case VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV:							return "VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT:		return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT";
		case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT:								return "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT";
		case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT:						return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT";
		case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT:						return "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT";
		case VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT:									return "VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT:					return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR";
		case VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR:													return "VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR";
		case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR:									return "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR";
		case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR:										return "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR";
		case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR:									return "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR";
		case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR:						return "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV";
		case VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV:								return "VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV";
		case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV:						return "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV";
		case VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV:									return "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV";
		case VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV:								return "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV";
		case VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV:											return "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV";
		case VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV:						return "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV";
		case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV:					return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM:			return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM";
		case VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM:								return "VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT:							return "VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT:								return "VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT";
		case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT:							return "VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR:									return "VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR";
		case VK_STRUCTURE_TYPE_PRESENT_ID_KHR:														return "VK_STRUCTURE_TYPE_PRESENT_ID_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR:												return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR:									return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR";
		case VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR:							return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV";
		case VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV:							return "VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV";
		case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV:								return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV";
		case VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV:												return "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR:	return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV";
		case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV:			return "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV";
		case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV:			return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV";
		case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV:								return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV";
		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";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT";
		case VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM:									return "VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR:		return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM:	return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT:									return "VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE";
		case VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE:							return "VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT:								return "VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT";
		case VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT:							return "VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT:									return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT:				return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT:		return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA:							return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA";
		case VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA:								return "VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA";
		case VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA:								return "VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA";
		case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA:							return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA";
		case VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA:							return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA";
		case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA:								return "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA";
		case VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA:								return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA";
		case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA:							return "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA";
		case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA:								return "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA";
		case VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA:										return "VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA";
		case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA:						return "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA";
		case VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA:										return "VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA";
		case VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA:								return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA";
		case VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA:											return "VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA";
		case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA:							return "VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA";
		case VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI:							return "VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI";
		case VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV:									return "VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT:				return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX:										return "VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT:								return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT:						return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT:									return "VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT:								return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT:							return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT:				return "VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM:			return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM";
		case VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM:					return "VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM";
		case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV:					return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV";
		case VK_STRUCTURE_TYPE_MAX_ENUM:															return "VK_STRUCTURE_TYPE_MAX_ENUM";
		default:																					return DE_NULL;
	}
}

const char* getImageLayoutName (VkImageLayout value)
{
	switch (value)
	{
		case VK_IMAGE_LAYOUT_UNDEFINED:										return "VK_IMAGE_LAYOUT_UNDEFINED";
		case VK_IMAGE_LAYOUT_GENERAL:										return "VK_IMAGE_LAYOUT_GENERAL";
		case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:						return "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL";
		case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:				return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL";
		case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL:				return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL";
		case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:						return "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL";
		case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:							return "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL";
		case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:							return "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL";
		case VK_IMAGE_LAYOUT_PREINITIALIZED:								return "VK_IMAGE_LAYOUT_PREINITIALIZED";
		case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL:	return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL";
		case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL:	return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL";
		case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL:						return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL";
		case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL:						return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL";
		case VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL:					return "VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL";
		case VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL:						return "VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL";
		case VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL:								return "VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL";
		case VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL:							return "VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL";
		case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR:								return "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR";
		case VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR:							return "VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR";
		case VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR:							return "VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR";
		case VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR:							return "VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR";
		case VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR:							return "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR";
		case VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT:				return "VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT";
		case VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR:	return "VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR";
		case VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR:							return "VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR";
		case VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR:							return "VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR";
		case VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR:							return "VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR";
		case VK_IMAGE_LAYOUT_MAX_ENUM:										return "VK_IMAGE_LAYOUT_MAX_ENUM";
		default:															return DE_NULL;
	}
}

const char* getObjectTypeName (VkObjectType value)
{
	switch (value)
	{
		case VK_OBJECT_TYPE_UNKNOWN:							return "VK_OBJECT_TYPE_UNKNOWN";
		case VK_OBJECT_TYPE_INSTANCE:							return "VK_OBJECT_TYPE_INSTANCE";
		case VK_OBJECT_TYPE_PHYSICAL_DEVICE:					return "VK_OBJECT_TYPE_PHYSICAL_DEVICE";
		case VK_OBJECT_TYPE_DEVICE:								return "VK_OBJECT_TYPE_DEVICE";
		case VK_OBJECT_TYPE_QUEUE:								return "VK_OBJECT_TYPE_QUEUE";
		case VK_OBJECT_TYPE_SEMAPHORE:							return "VK_OBJECT_TYPE_SEMAPHORE";
		case VK_OBJECT_TYPE_COMMAND_BUFFER:						return "VK_OBJECT_TYPE_COMMAND_BUFFER";
		case VK_OBJECT_TYPE_FENCE:								return "VK_OBJECT_TYPE_FENCE";
		case VK_OBJECT_TYPE_DEVICE_MEMORY:						return "VK_OBJECT_TYPE_DEVICE_MEMORY";
		case VK_OBJECT_TYPE_BUFFER:								return "VK_OBJECT_TYPE_BUFFER";
		case VK_OBJECT_TYPE_IMAGE:								return "VK_OBJECT_TYPE_IMAGE";
		case VK_OBJECT_TYPE_EVENT:								return "VK_OBJECT_TYPE_EVENT";
		case VK_OBJECT_TYPE_QUERY_POOL:							return "VK_OBJECT_TYPE_QUERY_POOL";
		case VK_OBJECT_TYPE_BUFFER_VIEW:						return "VK_OBJECT_TYPE_BUFFER_VIEW";
		case VK_OBJECT_TYPE_IMAGE_VIEW:							return "VK_OBJECT_TYPE_IMAGE_VIEW";
		case VK_OBJECT_TYPE_SHADER_MODULE:						return "VK_OBJECT_TYPE_SHADER_MODULE";
		case VK_OBJECT_TYPE_PIPELINE_CACHE:						return "VK_OBJECT_TYPE_PIPELINE_CACHE";
		case VK_OBJECT_TYPE_PIPELINE_LAYOUT:					return "VK_OBJECT_TYPE_PIPELINE_LAYOUT";
		case VK_OBJECT_TYPE_RENDER_PASS:						return "VK_OBJECT_TYPE_RENDER_PASS";
		case VK_OBJECT_TYPE_PIPELINE:							return "VK_OBJECT_TYPE_PIPELINE";
		case VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT:				return "VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT";
		case VK_OBJECT_TYPE_SAMPLER:							return "VK_OBJECT_TYPE_SAMPLER";
		case VK_OBJECT_TYPE_DESCRIPTOR_POOL:					return "VK_OBJECT_TYPE_DESCRIPTOR_POOL";
		case VK_OBJECT_TYPE_DESCRIPTOR_SET:						return "VK_OBJECT_TYPE_DESCRIPTOR_SET";
		case VK_OBJECT_TYPE_FRAMEBUFFER:						return "VK_OBJECT_TYPE_FRAMEBUFFER";
		case VK_OBJECT_TYPE_COMMAND_POOL:						return "VK_OBJECT_TYPE_COMMAND_POOL";
		case VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION:			return "VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION";
		case VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE:			return "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE";
		case VK_OBJECT_TYPE_PRIVATE_DATA_SLOT:					return "VK_OBJECT_TYPE_PRIVATE_DATA_SLOT";
		case VK_OBJECT_TYPE_SURFACE_KHR:						return "VK_OBJECT_TYPE_SURFACE_KHR";
		case VK_OBJECT_TYPE_SWAPCHAIN_KHR:						return "VK_OBJECT_TYPE_SWAPCHAIN_KHR";
		case VK_OBJECT_TYPE_DISPLAY_KHR:						return "VK_OBJECT_TYPE_DISPLAY_KHR";
		case VK_OBJECT_TYPE_DISPLAY_MODE_KHR:					return "VK_OBJECT_TYPE_DISPLAY_MODE_KHR";
		case VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT:			return "VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT";
		case VK_OBJECT_TYPE_VIDEO_SESSION_KHR:					return "VK_OBJECT_TYPE_VIDEO_SESSION_KHR";
		case VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR:		return "VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR";
		case VK_OBJECT_TYPE_CU_MODULE_NVX:						return "VK_OBJECT_TYPE_CU_MODULE_NVX";
		case VK_OBJECT_TYPE_CU_FUNCTION_NVX:					return "VK_OBJECT_TYPE_CU_FUNCTION_NVX";
		case VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT:			return "VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT";
		case VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR:			return "VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR";
		case VK_OBJECT_TYPE_VALIDATION_CACHE_EXT:				return "VK_OBJECT_TYPE_VALIDATION_CACHE_EXT";
		case VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV:			return "VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV";
		case VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL:	return "VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL";
		case VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR:				return "VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR";
		case VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV:		return "VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV";
		case VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA:			return "VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA";
		case VK_OBJECT_TYPE_MAX_ENUM:							return "VK_OBJECT_TYPE_MAX_ENUM";
		default:												return DE_NULL;
	}
}

const char* getPipelineCacheHeaderVersionName (VkPipelineCacheHeaderVersion value)
{
	switch (value)
	{
		case VK_PIPELINE_CACHE_HEADER_VERSION_ONE:		return "VK_PIPELINE_CACHE_HEADER_VERSION_ONE";
		case VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM:	return "VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM";
		default:										return DE_NULL;
	}
}

const char* getVendorIdName (VkVendorId value)
{
	switch (value)
	{
		case VK_VENDOR_ID_VIV:		return "VK_VENDOR_ID_VIV";
		case VK_VENDOR_ID_VSI:		return "VK_VENDOR_ID_VSI";
		case VK_VENDOR_ID_KAZAN:	return "VK_VENDOR_ID_KAZAN";
		case VK_VENDOR_ID_CODEPLAY:	return "VK_VENDOR_ID_CODEPLAY";
		case VK_VENDOR_ID_MESA:		return "VK_VENDOR_ID_MESA";
		case VK_VENDOR_ID_POCL:		return "VK_VENDOR_ID_POCL";
		case VK_VENDOR_ID_MAX_ENUM:	return "VK_VENDOR_ID_MAX_ENUM";
		default:					return DE_NULL;
	}
}

const char* getSystemAllocationScopeName (VkSystemAllocationScope value)
{
	switch (value)
	{
		case VK_SYSTEM_ALLOCATION_SCOPE_COMMAND:	return "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND";
		case VK_SYSTEM_ALLOCATION_SCOPE_OBJECT:		return "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT";
		case VK_SYSTEM_ALLOCATION_SCOPE_CACHE:		return "VK_SYSTEM_ALLOCATION_SCOPE_CACHE";
		case VK_SYSTEM_ALLOCATION_SCOPE_DEVICE:		return "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE";
		case VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE:	return "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE";
		case VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM:	return "VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM";
		default:									return DE_NULL;
	}
}

const char* getInternalAllocationTypeName (VkInternalAllocationType value)
{
	switch (value)
	{
		case VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE:	return "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE";
		case VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM:		return "VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM";
		default:										return DE_NULL;
	}
}

const char* getFormatName (VkFormat value)
{
	switch (value)
	{
		case VK_FORMAT_UNDEFINED:									return "VK_FORMAT_UNDEFINED";
		case VK_FORMAT_R4G4_UNORM_PACK8:							return "VK_FORMAT_R4G4_UNORM_PACK8";
		case VK_FORMAT_R4G4B4A4_UNORM_PACK16:						return "VK_FORMAT_R4G4B4A4_UNORM_PACK16";
		case VK_FORMAT_B4G4R4A4_UNORM_PACK16:						return "VK_FORMAT_B4G4R4A4_UNORM_PACK16";
		case VK_FORMAT_R5G6B5_UNORM_PACK16:							return "VK_FORMAT_R5G6B5_UNORM_PACK16";
		case VK_FORMAT_B5G6R5_UNORM_PACK16:							return "VK_FORMAT_B5G6R5_UNORM_PACK16";
		case VK_FORMAT_R5G5B5A1_UNORM_PACK16:						return "VK_FORMAT_R5G5B5A1_UNORM_PACK16";
		case VK_FORMAT_B5G5R5A1_UNORM_PACK16:						return "VK_FORMAT_B5G5R5A1_UNORM_PACK16";
		case VK_FORMAT_A1R5G5B5_UNORM_PACK16:						return "VK_FORMAT_A1R5G5B5_UNORM_PACK16";
		case VK_FORMAT_R8_UNORM:									return "VK_FORMAT_R8_UNORM";
		case VK_FORMAT_R8_SNORM:									return "VK_FORMAT_R8_SNORM";
		case VK_FORMAT_R8_USCALED:									return "VK_FORMAT_R8_USCALED";
		case VK_FORMAT_R8_SSCALED:									return "VK_FORMAT_R8_SSCALED";
		case VK_FORMAT_R8_UINT:										return "VK_FORMAT_R8_UINT";
		case VK_FORMAT_R8_SINT:										return "VK_FORMAT_R8_SINT";
		case VK_FORMAT_R8_SRGB:										return "VK_FORMAT_R8_SRGB";
		case VK_FORMAT_R8G8_UNORM:									return "VK_FORMAT_R8G8_UNORM";
		case VK_FORMAT_R8G8_SNORM:									return "VK_FORMAT_R8G8_SNORM";
		case VK_FORMAT_R8G8_USCALED:								return "VK_FORMAT_R8G8_USCALED";
		case VK_FORMAT_R8G8_SSCALED:								return "VK_FORMAT_R8G8_SSCALED";
		case VK_FORMAT_R8G8_UINT:									return "VK_FORMAT_R8G8_UINT";
		case VK_FORMAT_R8G8_SINT:									return "VK_FORMAT_R8G8_SINT";
		case VK_FORMAT_R8G8_SRGB:									return "VK_FORMAT_R8G8_SRGB";
		case VK_FORMAT_R8G8B8_UNORM:								return "VK_FORMAT_R8G8B8_UNORM";
		case VK_FORMAT_R8G8B8_SNORM:								return "VK_FORMAT_R8G8B8_SNORM";
		case VK_FORMAT_R8G8B8_USCALED:								return "VK_FORMAT_R8G8B8_USCALED";
		case VK_FORMAT_R8G8B8_SSCALED:								return "VK_FORMAT_R8G8B8_SSCALED";
		case VK_FORMAT_R8G8B8_UINT:									return "VK_FORMAT_R8G8B8_UINT";
		case VK_FORMAT_R8G8B8_SINT:									return "VK_FORMAT_R8G8B8_SINT";
		case VK_FORMAT_R8G8B8_SRGB:									return "VK_FORMAT_R8G8B8_SRGB";
		case VK_FORMAT_B8G8R8_UNORM:								return "VK_FORMAT_B8G8R8_UNORM";
		case VK_FORMAT_B8G8R8_SNORM:								return "VK_FORMAT_B8G8R8_SNORM";
		case VK_FORMAT_B8G8R8_USCALED:								return "VK_FORMAT_B8G8R8_USCALED";
		case VK_FORMAT_B8G8R8_SSCALED:								return "VK_FORMAT_B8G8R8_SSCALED";
		case VK_FORMAT_B8G8R8_UINT:									return "VK_FORMAT_B8G8R8_UINT";
		case VK_FORMAT_B8G8R8_SINT:									return "VK_FORMAT_B8G8R8_SINT";
		case VK_FORMAT_B8G8R8_SRGB:									return "VK_FORMAT_B8G8R8_SRGB";
		case VK_FORMAT_R8G8B8A8_UNORM:								return "VK_FORMAT_R8G8B8A8_UNORM";
		case VK_FORMAT_R8G8B8A8_SNORM:								return "VK_FORMAT_R8G8B8A8_SNORM";
		case VK_FORMAT_R8G8B8A8_USCALED:							return "VK_FORMAT_R8G8B8A8_USCALED";
		case VK_FORMAT_R8G8B8A8_SSCALED:							return "VK_FORMAT_R8G8B8A8_SSCALED";
		case VK_FORMAT_R8G8B8A8_UINT:								return "VK_FORMAT_R8G8B8A8_UINT";
		case VK_FORMAT_R8G8B8A8_SINT:								return "VK_FORMAT_R8G8B8A8_SINT";
		case VK_FORMAT_R8G8B8A8_SRGB:								return "VK_FORMAT_R8G8B8A8_SRGB";
		case VK_FORMAT_B8G8R8A8_UNORM:								return "VK_FORMAT_B8G8R8A8_UNORM";
		case VK_FORMAT_B8G8R8A8_SNORM:								return "VK_FORMAT_B8G8R8A8_SNORM";
		case VK_FORMAT_B8G8R8A8_USCALED:							return "VK_FORMAT_B8G8R8A8_USCALED";
		case VK_FORMAT_B8G8R8A8_SSCALED:							return "VK_FORMAT_B8G8R8A8_SSCALED";
		case VK_FORMAT_B8G8R8A8_UINT:								return "VK_FORMAT_B8G8R8A8_UINT";
		case VK_FORMAT_B8G8R8A8_SINT:								return "VK_FORMAT_B8G8R8A8_SINT";
		case VK_FORMAT_B8G8R8A8_SRGB:								return "VK_FORMAT_B8G8R8A8_SRGB";
		case VK_FORMAT_A8B8G8R8_UNORM_PACK32:						return "VK_FORMAT_A8B8G8R8_UNORM_PACK32";
		case VK_FORMAT_A8B8G8R8_SNORM_PACK32:						return "VK_FORMAT_A8B8G8R8_SNORM_PACK32";
		case VK_FORMAT_A8B8G8R8_USCALED_PACK32:						return "VK_FORMAT_A8B8G8R8_USCALED_PACK32";
		case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:						return "VK_FORMAT_A8B8G8R8_SSCALED_PACK32";
		case VK_FORMAT_A8B8G8R8_UINT_PACK32:						return "VK_FORMAT_A8B8G8R8_UINT_PACK32";
		case VK_FORMAT_A8B8G8R8_SINT_PACK32:						return "VK_FORMAT_A8B8G8R8_SINT_PACK32";
		case VK_FORMAT_A8B8G8R8_SRGB_PACK32:						return "VK_FORMAT_A8B8G8R8_SRGB_PACK32";
		case VK_FORMAT_A2R10G10B10_UNORM_PACK32:					return "VK_FORMAT_A2R10G10B10_UNORM_PACK32";
		case VK_FORMAT_A2R10G10B10_SNORM_PACK32:					return "VK_FORMAT_A2R10G10B10_SNORM_PACK32";
		case VK_FORMAT_A2R10G10B10_USCALED_PACK32:					return "VK_FORMAT_A2R10G10B10_USCALED_PACK32";
		case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:					return "VK_FORMAT_A2R10G10B10_SSCALED_PACK32";
		case VK_FORMAT_A2R10G10B10_UINT_PACK32:						return "VK_FORMAT_A2R10G10B10_UINT_PACK32";
		case VK_FORMAT_A2R10G10B10_SINT_PACK32:						return "VK_FORMAT_A2R10G10B10_SINT_PACK32";
		case VK_FORMAT_A2B10G10R10_UNORM_PACK32:					return "VK_FORMAT_A2B10G10R10_UNORM_PACK32";
		case VK_FORMAT_A2B10G10R10_SNORM_PACK32:					return "VK_FORMAT_A2B10G10R10_SNORM_PACK32";
		case VK_FORMAT_A2B10G10R10_USCALED_PACK32:					return "VK_FORMAT_A2B10G10R10_USCALED_PACK32";
		case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:					return "VK_FORMAT_A2B10G10R10_SSCALED_PACK32";
		case VK_FORMAT_A2B10G10R10_UINT_PACK32:						return "VK_FORMAT_A2B10G10R10_UINT_PACK32";
		case VK_FORMAT_A2B10G10R10_SINT_PACK32:						return "VK_FORMAT_A2B10G10R10_SINT_PACK32";
		case VK_FORMAT_R16_UNORM:									return "VK_FORMAT_R16_UNORM";
		case VK_FORMAT_R16_SNORM:									return "VK_FORMAT_R16_SNORM";
		case VK_FORMAT_R16_USCALED:									return "VK_FORMAT_R16_USCALED";
		case VK_FORMAT_R16_SSCALED:									return "VK_FORMAT_R16_SSCALED";
		case VK_FORMAT_R16_UINT:									return "VK_FORMAT_R16_UINT";
		case VK_FORMAT_R16_SINT:									return "VK_FORMAT_R16_SINT";
		case VK_FORMAT_R16_SFLOAT:									return "VK_FORMAT_R16_SFLOAT";
		case VK_FORMAT_R16G16_UNORM:								return "VK_FORMAT_R16G16_UNORM";
		case VK_FORMAT_R16G16_SNORM:								return "VK_FORMAT_R16G16_SNORM";
		case VK_FORMAT_R16G16_USCALED:								return "VK_FORMAT_R16G16_USCALED";
		case VK_FORMAT_R16G16_SSCALED:								return "VK_FORMAT_R16G16_SSCALED";
		case VK_FORMAT_R16G16_UINT:									return "VK_FORMAT_R16G16_UINT";
		case VK_FORMAT_R16G16_SINT:									return "VK_FORMAT_R16G16_SINT";
		case VK_FORMAT_R16G16_SFLOAT:								return "VK_FORMAT_R16G16_SFLOAT";
		case VK_FORMAT_R16G16B16_UNORM:								return "VK_FORMAT_R16G16B16_UNORM";
		case VK_FORMAT_R16G16B16_SNORM:								return "VK_FORMAT_R16G16B16_SNORM";
		case VK_FORMAT_R16G16B16_USCALED:							return "VK_FORMAT_R16G16B16_USCALED";
		case VK_FORMAT_R16G16B16_SSCALED:							return "VK_FORMAT_R16G16B16_SSCALED";
		case VK_FORMAT_R16G16B16_UINT:								return "VK_FORMAT_R16G16B16_UINT";
		case VK_FORMAT_R16G16B16_SINT:								return "VK_FORMAT_R16G16B16_SINT";
		case VK_FORMAT_R16G16B16_SFLOAT:							return "VK_FORMAT_R16G16B16_SFLOAT";
		case VK_FORMAT_R16G16B16A16_UNORM:							return "VK_FORMAT_R16G16B16A16_UNORM";
		case VK_FORMAT_R16G16B16A16_SNORM:							return "VK_FORMAT_R16G16B16A16_SNORM";
		case VK_FORMAT_R16G16B16A16_USCALED:						return "VK_FORMAT_R16G16B16A16_USCALED";
		case VK_FORMAT_R16G16B16A16_SSCALED:						return "VK_FORMAT_R16G16B16A16_SSCALED";
		case VK_FORMAT_R16G16B16A16_UINT:							return "VK_FORMAT_R16G16B16A16_UINT";
		case VK_FORMAT_R16G16B16A16_SINT:							return "VK_FORMAT_R16G16B16A16_SINT";
		case VK_FORMAT_R16G16B16A16_SFLOAT:							return "VK_FORMAT_R16G16B16A16_SFLOAT";
		case VK_FORMAT_R32_UINT:									return "VK_FORMAT_R32_UINT";
		case VK_FORMAT_R32_SINT:									return "VK_FORMAT_R32_SINT";
		case VK_FORMAT_R32_SFLOAT:									return "VK_FORMAT_R32_SFLOAT";
		case VK_FORMAT_R32G32_UINT:									return "VK_FORMAT_R32G32_UINT";
		case VK_FORMAT_R32G32_SINT:									return "VK_FORMAT_R32G32_SINT";
		case VK_FORMAT_R32G32_SFLOAT:								return "VK_FORMAT_R32G32_SFLOAT";
		case VK_FORMAT_R32G32B32_UINT:								return "VK_FORMAT_R32G32B32_UINT";
		case VK_FORMAT_R32G32B32_SINT:								return "VK_FORMAT_R32G32B32_SINT";
		case VK_FORMAT_R32G32B32_SFLOAT:							return "VK_FORMAT_R32G32B32_SFLOAT";
		case VK_FORMAT_R32G32B32A32_UINT:							return "VK_FORMAT_R32G32B32A32_UINT";
		case VK_FORMAT_R32G32B32A32_SINT:							return "VK_FORMAT_R32G32B32A32_SINT";
		case VK_FORMAT_R32G32B32A32_SFLOAT:							return "VK_FORMAT_R32G32B32A32_SFLOAT";
		case VK_FORMAT_R64_UINT:									return "VK_FORMAT_R64_UINT";
		case VK_FORMAT_R64_SINT:									return "VK_FORMAT_R64_SINT";
		case VK_FORMAT_R64_SFLOAT:									return "VK_FORMAT_R64_SFLOAT";
		case VK_FORMAT_R64G64_UINT:									return "VK_FORMAT_R64G64_UINT";
		case VK_FORMAT_R64G64_SINT:									return "VK_FORMAT_R64G64_SINT";
		case VK_FORMAT_R64G64_SFLOAT:								return "VK_FORMAT_R64G64_SFLOAT";
		case VK_FORMAT_R64G64B64_UINT:								return "VK_FORMAT_R64G64B64_UINT";
		case VK_FORMAT_R64G64B64_SINT:								return "VK_FORMAT_R64G64B64_SINT";
		case VK_FORMAT_R64G64B64_SFLOAT:							return "VK_FORMAT_R64G64B64_SFLOAT";
		case VK_FORMAT_R64G64B64A64_UINT:							return "VK_FORMAT_R64G64B64A64_UINT";
		case VK_FORMAT_R64G64B64A64_SINT:							return "VK_FORMAT_R64G64B64A64_SINT";
		case VK_FORMAT_R64G64B64A64_SFLOAT:							return "VK_FORMAT_R64G64B64A64_SFLOAT";
		case VK_FORMAT_B10G11R11_UFLOAT_PACK32:						return "VK_FORMAT_B10G11R11_UFLOAT_PACK32";
		case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:						return "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32";
		case VK_FORMAT_D16_UNORM:									return "VK_FORMAT_D16_UNORM";
		case VK_FORMAT_X8_D24_UNORM_PACK32:							return "VK_FORMAT_X8_D24_UNORM_PACK32";
		case VK_FORMAT_D32_SFLOAT:									return "VK_FORMAT_D32_SFLOAT";
		case VK_FORMAT_S8_UINT:										return "VK_FORMAT_S8_UINT";
		case VK_FORMAT_D16_UNORM_S8_UINT:							return "VK_FORMAT_D16_UNORM_S8_UINT";
		case VK_FORMAT_D24_UNORM_S8_UINT:							return "VK_FORMAT_D24_UNORM_S8_UINT";
		case VK_FORMAT_D32_SFLOAT_S8_UINT:							return "VK_FORMAT_D32_SFLOAT_S8_UINT";
		case VK_FORMAT_BC1_RGB_UNORM_BLOCK:							return "VK_FORMAT_BC1_RGB_UNORM_BLOCK";
		case VK_FORMAT_BC1_RGB_SRGB_BLOCK:							return "VK_FORMAT_BC1_RGB_SRGB_BLOCK";
		case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:						return "VK_FORMAT_BC1_RGBA_UNORM_BLOCK";
		case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:							return "VK_FORMAT_BC1_RGBA_SRGB_BLOCK";
		case VK_FORMAT_BC2_UNORM_BLOCK:								return "VK_FORMAT_BC2_UNORM_BLOCK";
		case VK_FORMAT_BC2_SRGB_BLOCK:								return "VK_FORMAT_BC2_SRGB_BLOCK";
		case VK_FORMAT_BC3_UNORM_BLOCK:								return "VK_FORMAT_BC3_UNORM_BLOCK";
		case VK_FORMAT_BC3_SRGB_BLOCK:								return "VK_FORMAT_BC3_SRGB_BLOCK";
		case VK_FORMAT_BC4_UNORM_BLOCK:								return "VK_FORMAT_BC4_UNORM_BLOCK";
		case VK_FORMAT_BC4_SNORM_BLOCK:								return "VK_FORMAT_BC4_SNORM_BLOCK";
		case VK_FORMAT_BC5_UNORM_BLOCK:								return "VK_FORMAT_BC5_UNORM_BLOCK";
		case VK_FORMAT_BC5_SNORM_BLOCK:								return "VK_FORMAT_BC5_SNORM_BLOCK";
		case VK_FORMAT_BC6H_UFLOAT_BLOCK:							return "VK_FORMAT_BC6H_UFLOAT_BLOCK";
		case VK_FORMAT_BC6H_SFLOAT_BLOCK:							return "VK_FORMAT_BC6H_SFLOAT_BLOCK";
		case VK_FORMAT_BC7_UNORM_BLOCK:								return "VK_FORMAT_BC7_UNORM_BLOCK";
		case VK_FORMAT_BC7_SRGB_BLOCK:								return "VK_FORMAT_BC7_SRGB_BLOCK";
		case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:						return "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK";
		case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:						return "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK";
		case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:					return "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK";
		case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:					return "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK";
		case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:					return "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK";
		case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:					return "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK";
		case VK_FORMAT_EAC_R11_UNORM_BLOCK:							return "VK_FORMAT_EAC_R11_UNORM_BLOCK";
		case VK_FORMAT_EAC_R11_SNORM_BLOCK:							return "VK_FORMAT_EAC_R11_SNORM_BLOCK";
		case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:						return "VK_FORMAT_EAC_R11G11_UNORM_BLOCK";
		case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:						return "VK_FORMAT_EAC_R11G11_SNORM_BLOCK";
		case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:						return "VK_FORMAT_ASTC_4x4_UNORM_BLOCK";
		case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:							return "VK_FORMAT_ASTC_4x4_SRGB_BLOCK";
		case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:						return "VK_FORMAT_ASTC_5x4_UNORM_BLOCK";
		case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:							return "VK_FORMAT_ASTC_5x4_SRGB_BLOCK";
		case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:						return "VK_FORMAT_ASTC_5x5_UNORM_BLOCK";
		case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:							return "VK_FORMAT_ASTC_5x5_SRGB_BLOCK";
		case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:						return "VK_FORMAT_ASTC_6x5_UNORM_BLOCK";
		case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:							return "VK_FORMAT_ASTC_6x5_SRGB_BLOCK";
		case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:						return "VK_FORMAT_ASTC_6x6_UNORM_BLOCK";
		case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:							return "VK_FORMAT_ASTC_6x6_SRGB_BLOCK";
		case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:						return "VK_FORMAT_ASTC_8x5_UNORM_BLOCK";
		case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:							return "VK_FORMAT_ASTC_8x5_SRGB_BLOCK";
		case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:						return "VK_FORMAT_ASTC_8x6_UNORM_BLOCK";
		case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:							return "VK_FORMAT_ASTC_8x6_SRGB_BLOCK";
		case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:						return "VK_FORMAT_ASTC_8x8_UNORM_BLOCK";
		case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:							return "VK_FORMAT_ASTC_8x8_SRGB_BLOCK";
		case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:						return "VK_FORMAT_ASTC_10x5_UNORM_BLOCK";
		case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:						return "VK_FORMAT_ASTC_10x5_SRGB_BLOCK";
		case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:						return "VK_FORMAT_ASTC_10x6_UNORM_BLOCK";
		case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:						return "VK_FORMAT_ASTC_10x6_SRGB_BLOCK";
		case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:						return "VK_FORMAT_ASTC_10x8_UNORM_BLOCK";
		case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:						return "VK_FORMAT_ASTC_10x8_SRGB_BLOCK";
		case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:						return "VK_FORMAT_ASTC_10x10_UNORM_BLOCK";
		case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:						return "VK_FORMAT_ASTC_10x10_SRGB_BLOCK";
		case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:						return "VK_FORMAT_ASTC_12x10_UNORM_BLOCK";
		case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:						return "VK_FORMAT_ASTC_12x10_SRGB_BLOCK";
		case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:						return "VK_FORMAT_ASTC_12x12_UNORM_BLOCK";
		case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:						return "VK_FORMAT_ASTC_12x12_SRGB_BLOCK";
		case VK_FORMAT_G8B8G8R8_422_UNORM:							return "VK_FORMAT_G8B8G8R8_422_UNORM";
		case VK_FORMAT_B8G8R8G8_422_UNORM:							return "VK_FORMAT_B8G8R8G8_422_UNORM";
		case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:					return "VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM";
		case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:					return "VK_FORMAT_G8_B8R8_2PLANE_420_UNORM";
		case VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:					return "VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM";
		case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:					return "VK_FORMAT_G8_B8R8_2PLANE_422_UNORM";
		case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:					return "VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM";
		case VK_FORMAT_R10X6_UNORM_PACK16:							return "VK_FORMAT_R10X6_UNORM_PACK16";
		case VK_FORMAT_R10X6G10X6_UNORM_2PACK16:					return "VK_FORMAT_R10X6G10X6_UNORM_2PACK16";
		case VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:			return "VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16";
		case VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:		return "VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16";
		case VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:		return "VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16";
		case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:	return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16";
		case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:	return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16";
		case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:	return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16";
		case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:	return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16";
		case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:	return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16";
		case VK_FORMAT_R12X4_UNORM_PACK16:							return "VK_FORMAT_R12X4_UNORM_PACK16";
		case VK_FORMAT_R12X4G12X4_UNORM_2PACK16:					return "VK_FORMAT_R12X4G12X4_UNORM_2PACK16";
		case VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:			return "VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16";
		case VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:		return "VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16";
		case VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:		return "VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16";
		case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:	return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16";
		case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:	return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16";
		case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:	return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16";
		case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:	return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16";
		case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:	return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16";
		case VK_FORMAT_G16B16G16R16_422_UNORM:						return "VK_FORMAT_G16B16G16R16_422_UNORM";
		case VK_FORMAT_B16G16R16G16_422_UNORM:						return "VK_FORMAT_B16G16R16G16_422_UNORM";
		case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:				return "VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM";
		case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:					return "VK_FORMAT_G16_B16R16_2PLANE_420_UNORM";
		case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:				return "VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM";
		case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:					return "VK_FORMAT_G16_B16R16_2PLANE_422_UNORM";
		case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:				return "VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM";
		case VK_FORMAT_G8_B8R8_2PLANE_444_UNORM:					return "VK_FORMAT_G8_B8R8_2PLANE_444_UNORM";
		case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16:	return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16";
		case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16:	return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16";
		case VK_FORMAT_G16_B16R16_2PLANE_444_UNORM:					return "VK_FORMAT_G16_B16R16_2PLANE_444_UNORM";
		case VK_FORMAT_A4R4G4B4_UNORM_PACK16:						return "VK_FORMAT_A4R4G4B4_UNORM_PACK16";
		case VK_FORMAT_A4B4G4R4_UNORM_PACK16:						return "VK_FORMAT_A4B4G4R4_UNORM_PACK16";
		case VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK:						return "VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK";
		case VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK:						return "VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK";
		case VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK:						return "VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK";
		case VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK:						return "VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK";
		case VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK:						return "VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK";
		case VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK:						return "VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK";
		case VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK:						return "VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK";
		case VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK:						return "VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK";
		case VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK:						return "VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK";
		case VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK:						return "VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK";
		case VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK:						return "VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK";
		case VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK:						return "VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK";
		case VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK:						return "VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK";
		case VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK:						return "VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK";
		case VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:					return "VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG";
		case VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:					return "VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG";
		case VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:					return "VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG";
		case VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:					return "VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG";
		case VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:					return "VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG";
		case VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:					return "VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG";
		case VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:					return "VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG";
		case VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:					return "VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG";
		case VK_FORMAT_MAX_ENUM:									return "VK_FORMAT_MAX_ENUM";
		default:													return DE_NULL;
	}
}

const char* getImageTilingName (VkImageTiling value)
{
	switch (value)
	{
		case VK_IMAGE_TILING_OPTIMAL:					return "VK_IMAGE_TILING_OPTIMAL";
		case VK_IMAGE_TILING_LINEAR:					return "VK_IMAGE_TILING_LINEAR";
		case VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT:	return "VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT";
		case VK_IMAGE_TILING_MAX_ENUM:					return "VK_IMAGE_TILING_MAX_ENUM";
		default:										return DE_NULL;
	}
}

const char* getImageTypeName (VkImageType value)
{
	switch (value)
	{
		case VK_IMAGE_TYPE_1D:			return "VK_IMAGE_TYPE_1D";
		case VK_IMAGE_TYPE_2D:			return "VK_IMAGE_TYPE_2D";
		case VK_IMAGE_TYPE_3D:			return "VK_IMAGE_TYPE_3D";
		case VK_IMAGE_TYPE_MAX_ENUM:	return "VK_IMAGE_TYPE_MAX_ENUM";
		default:						return DE_NULL;
	}
}

const char* getPhysicalDeviceTypeName (VkPhysicalDeviceType value)
{
	switch (value)
	{
		case VK_PHYSICAL_DEVICE_TYPE_OTHER:				return "VK_PHYSICAL_DEVICE_TYPE_OTHER";
		case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU:	return "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU";
		case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU:		return "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU";
		case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU:		return "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU";
		case VK_PHYSICAL_DEVICE_TYPE_CPU:				return "VK_PHYSICAL_DEVICE_TYPE_CPU";
		case VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM:			return "VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM";
		default:										return DE_NULL;
	}
}

const char* getQueryTypeName (VkQueryType value)
{
	switch (value)
	{
		case VK_QUERY_TYPE_OCCLUSION:										return "VK_QUERY_TYPE_OCCLUSION";
		case VK_QUERY_TYPE_PIPELINE_STATISTICS:								return "VK_QUERY_TYPE_PIPELINE_STATISTICS";
		case VK_QUERY_TYPE_TIMESTAMP:										return "VK_QUERY_TYPE_TIMESTAMP";
		case VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR:							return "VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR";
		case VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT:					return "VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT";
		case VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR:							return "VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR";
		case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR:		return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR";
		case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR:	return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR";
		case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV:		return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV";
		case VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL:							return "VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL";
		case VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR:			return "VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR";
		case VK_QUERY_TYPE_MAX_ENUM:										return "VK_QUERY_TYPE_MAX_ENUM";
		default:															return DE_NULL;
	}
}

const char* getSharingModeName (VkSharingMode value)
{
	switch (value)
	{
		case VK_SHARING_MODE_EXCLUSIVE:		return "VK_SHARING_MODE_EXCLUSIVE";
		case VK_SHARING_MODE_CONCURRENT:	return "VK_SHARING_MODE_CONCURRENT";
		case VK_SHARING_MODE_MAX_ENUM:		return "VK_SHARING_MODE_MAX_ENUM";
		default:							return DE_NULL;
	}
}

const char* getComponentSwizzleName (VkComponentSwizzle value)
{
	switch (value)
	{
		case VK_COMPONENT_SWIZZLE_IDENTITY:	return "VK_COMPONENT_SWIZZLE_IDENTITY";
		case VK_COMPONENT_SWIZZLE_ZERO:		return "VK_COMPONENT_SWIZZLE_ZERO";
		case VK_COMPONENT_SWIZZLE_ONE:		return "VK_COMPONENT_SWIZZLE_ONE";
		case VK_COMPONENT_SWIZZLE_R:		return "VK_COMPONENT_SWIZZLE_R";
		case VK_COMPONENT_SWIZZLE_G:		return "VK_COMPONENT_SWIZZLE_G";
		case VK_COMPONENT_SWIZZLE_B:		return "VK_COMPONENT_SWIZZLE_B";
		case VK_COMPONENT_SWIZZLE_A:		return "VK_COMPONENT_SWIZZLE_A";
		case VK_COMPONENT_SWIZZLE_MAX_ENUM:	return "VK_COMPONENT_SWIZZLE_MAX_ENUM";
		default:							return DE_NULL;
	}
}

const char* getImageViewTypeName (VkImageViewType value)
{
	switch (value)
	{
		case VK_IMAGE_VIEW_TYPE_1D:			return "VK_IMAGE_VIEW_TYPE_1D";
		case VK_IMAGE_VIEW_TYPE_2D:			return "VK_IMAGE_VIEW_TYPE_2D";
		case VK_IMAGE_VIEW_TYPE_3D:			return "VK_IMAGE_VIEW_TYPE_3D";
		case VK_IMAGE_VIEW_TYPE_CUBE:		return "VK_IMAGE_VIEW_TYPE_CUBE";
		case VK_IMAGE_VIEW_TYPE_1D_ARRAY:	return "VK_IMAGE_VIEW_TYPE_1D_ARRAY";
		case VK_IMAGE_VIEW_TYPE_2D_ARRAY:	return "VK_IMAGE_VIEW_TYPE_2D_ARRAY";
		case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY:	return "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY";
		case VK_IMAGE_VIEW_TYPE_MAX_ENUM:	return "VK_IMAGE_VIEW_TYPE_MAX_ENUM";
		default:							return DE_NULL;
	}
}

const char* getBlendFactorName (VkBlendFactor value)
{
	switch (value)
	{
		case VK_BLEND_FACTOR_ZERO:						return "VK_BLEND_FACTOR_ZERO";
		case VK_BLEND_FACTOR_ONE:						return "VK_BLEND_FACTOR_ONE";
		case VK_BLEND_FACTOR_SRC_COLOR:					return "VK_BLEND_FACTOR_SRC_COLOR";
		case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR:		return "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR";
		case VK_BLEND_FACTOR_DST_COLOR:					return "VK_BLEND_FACTOR_DST_COLOR";
		case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR:		return "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR";
		case VK_BLEND_FACTOR_SRC_ALPHA:					return "VK_BLEND_FACTOR_SRC_ALPHA";
		case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA:		return "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA";
		case VK_BLEND_FACTOR_DST_ALPHA:					return "VK_BLEND_FACTOR_DST_ALPHA";
		case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA:		return "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA";
		case VK_BLEND_FACTOR_CONSTANT_COLOR:			return "VK_BLEND_FACTOR_CONSTANT_COLOR";
		case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR:	return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR";
		case VK_BLEND_FACTOR_CONSTANT_ALPHA:			return "VK_BLEND_FACTOR_CONSTANT_ALPHA";
		case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA:	return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA";
		case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE:		return "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE";
		case VK_BLEND_FACTOR_SRC1_COLOR:				return "VK_BLEND_FACTOR_SRC1_COLOR";
		case VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR:		return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR";
		case VK_BLEND_FACTOR_SRC1_ALPHA:				return "VK_BLEND_FACTOR_SRC1_ALPHA";
		case VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA:		return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA";
		case VK_BLEND_FACTOR_MAX_ENUM:					return "VK_BLEND_FACTOR_MAX_ENUM";
		default:										return DE_NULL;
	}
}

const char* getBlendOpName (VkBlendOp value)
{
	switch (value)
	{
		case VK_BLEND_OP_ADD:						return "VK_BLEND_OP_ADD";
		case VK_BLEND_OP_SUBTRACT:					return "VK_BLEND_OP_SUBTRACT";
		case VK_BLEND_OP_REVERSE_SUBTRACT:			return "VK_BLEND_OP_REVERSE_SUBTRACT";
		case VK_BLEND_OP_MIN:						return "VK_BLEND_OP_MIN";
		case VK_BLEND_OP_MAX:						return "VK_BLEND_OP_MAX";
		case VK_BLEND_OP_ZERO_EXT:					return "VK_BLEND_OP_ZERO_EXT";
		case VK_BLEND_OP_SRC_EXT:					return "VK_BLEND_OP_SRC_EXT";
		case VK_BLEND_OP_DST_EXT:					return "VK_BLEND_OP_DST_EXT";
		case VK_BLEND_OP_SRC_OVER_EXT:				return "VK_BLEND_OP_SRC_OVER_EXT";
		case VK_BLEND_OP_DST_OVER_EXT:				return "VK_BLEND_OP_DST_OVER_EXT";
		case VK_BLEND_OP_SRC_IN_EXT:				return "VK_BLEND_OP_SRC_IN_EXT";
		case VK_BLEND_OP_DST_IN_EXT:				return "VK_BLEND_OP_DST_IN_EXT";
		case VK_BLEND_OP_SRC_OUT_EXT:				return "VK_BLEND_OP_SRC_OUT_EXT";
		case VK_BLEND_OP_DST_OUT_EXT:				return "VK_BLEND_OP_DST_OUT_EXT";
		case VK_BLEND_OP_SRC_ATOP_EXT:				return "VK_BLEND_OP_SRC_ATOP_EXT";
		case VK_BLEND_OP_DST_ATOP_EXT:				return "VK_BLEND_OP_DST_ATOP_EXT";
		case VK_BLEND_OP_XOR_EXT:					return "VK_BLEND_OP_XOR_EXT";
		case VK_BLEND_OP_MULTIPLY_EXT:				return "VK_BLEND_OP_MULTIPLY_EXT";
		case VK_BLEND_OP_SCREEN_EXT:				return "VK_BLEND_OP_SCREEN_EXT";
		case VK_BLEND_OP_OVERLAY_EXT:				return "VK_BLEND_OP_OVERLAY_EXT";
		case VK_BLEND_OP_DARKEN_EXT:				return "VK_BLEND_OP_DARKEN_EXT";
		case VK_BLEND_OP_LIGHTEN_EXT:				return "VK_BLEND_OP_LIGHTEN_EXT";
		case VK_BLEND_OP_COLORDODGE_EXT:			return "VK_BLEND_OP_COLORDODGE_EXT";
		case VK_BLEND_OP_COLORBURN_EXT:				return "VK_BLEND_OP_COLORBURN_EXT";
		case VK_BLEND_OP_HARDLIGHT_EXT:				return "VK_BLEND_OP_HARDLIGHT_EXT";
		case VK_BLEND_OP_SOFTLIGHT_EXT:				return "VK_BLEND_OP_SOFTLIGHT_EXT";
		case VK_BLEND_OP_DIFFERENCE_EXT:			return "VK_BLEND_OP_DIFFERENCE_EXT";
		case VK_BLEND_OP_EXCLUSION_EXT:				return "VK_BLEND_OP_EXCLUSION_EXT";
		case VK_BLEND_OP_INVERT_EXT:				return "VK_BLEND_OP_INVERT_EXT";
		case VK_BLEND_OP_INVERT_RGB_EXT:			return "VK_BLEND_OP_INVERT_RGB_EXT";
		case VK_BLEND_OP_LINEARDODGE_EXT:			return "VK_BLEND_OP_LINEARDODGE_EXT";
		case VK_BLEND_OP_LINEARBURN_EXT:			return "VK_BLEND_OP_LINEARBURN_EXT";
		case VK_BLEND_OP_VIVIDLIGHT_EXT:			return "VK_BLEND_OP_VIVIDLIGHT_EXT";
		case VK_BLEND_OP_LINEARLIGHT_EXT:			return "VK_BLEND_OP_LINEARLIGHT_EXT";
		case VK_BLEND_OP_PINLIGHT_EXT:				return "VK_BLEND_OP_PINLIGHT_EXT";
		case VK_BLEND_OP_HARDMIX_EXT:				return "VK_BLEND_OP_HARDMIX_EXT";
		case VK_BLEND_OP_HSL_HUE_EXT:				return "VK_BLEND_OP_HSL_HUE_EXT";
		case VK_BLEND_OP_HSL_SATURATION_EXT:		return "VK_BLEND_OP_HSL_SATURATION_EXT";
		case VK_BLEND_OP_HSL_COLOR_EXT:				return "VK_BLEND_OP_HSL_COLOR_EXT";
		case VK_BLEND_OP_HSL_LUMINOSITY_EXT:		return "VK_BLEND_OP_HSL_LUMINOSITY_EXT";
		case VK_BLEND_OP_PLUS_EXT:					return "VK_BLEND_OP_PLUS_EXT";
		case VK_BLEND_OP_PLUS_CLAMPED_EXT:			return "VK_BLEND_OP_PLUS_CLAMPED_EXT";
		case VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT:	return "VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT";
		case VK_BLEND_OP_PLUS_DARKER_EXT:			return "VK_BLEND_OP_PLUS_DARKER_EXT";
		case VK_BLEND_OP_MINUS_EXT:					return "VK_BLEND_OP_MINUS_EXT";
		case VK_BLEND_OP_MINUS_CLAMPED_EXT:			return "VK_BLEND_OP_MINUS_CLAMPED_EXT";
		case VK_BLEND_OP_CONTRAST_EXT:				return "VK_BLEND_OP_CONTRAST_EXT";
		case VK_BLEND_OP_INVERT_OVG_EXT:			return "VK_BLEND_OP_INVERT_OVG_EXT";
		case VK_BLEND_OP_RED_EXT:					return "VK_BLEND_OP_RED_EXT";
		case VK_BLEND_OP_GREEN_EXT:					return "VK_BLEND_OP_GREEN_EXT";
		case VK_BLEND_OP_BLUE_EXT:					return "VK_BLEND_OP_BLUE_EXT";
		case VK_BLEND_OP_MAX_ENUM:					return "VK_BLEND_OP_MAX_ENUM";
		default:									return DE_NULL;
	}
}

const char* getCompareOpName (VkCompareOp value)
{
	switch (value)
	{
		case VK_COMPARE_OP_NEVER:				return "VK_COMPARE_OP_NEVER";
		case VK_COMPARE_OP_LESS:				return "VK_COMPARE_OP_LESS";
		case VK_COMPARE_OP_EQUAL:				return "VK_COMPARE_OP_EQUAL";
		case VK_COMPARE_OP_LESS_OR_EQUAL:		return "VK_COMPARE_OP_LESS_OR_EQUAL";
		case VK_COMPARE_OP_GREATER:				return "VK_COMPARE_OP_GREATER";
		case VK_COMPARE_OP_NOT_EQUAL:			return "VK_COMPARE_OP_NOT_EQUAL";
		case VK_COMPARE_OP_GREATER_OR_EQUAL:	return "VK_COMPARE_OP_GREATER_OR_EQUAL";
		case VK_COMPARE_OP_ALWAYS:				return "VK_COMPARE_OP_ALWAYS";
		case VK_COMPARE_OP_MAX_ENUM:			return "VK_COMPARE_OP_MAX_ENUM";
		default:								return DE_NULL;
	}
}

const char* getDynamicStateName (VkDynamicState value)
{
	switch (value)
	{
		case VK_DYNAMIC_STATE_VIEWPORT:								return "VK_DYNAMIC_STATE_VIEWPORT";
		case VK_DYNAMIC_STATE_SCISSOR:								return "VK_DYNAMIC_STATE_SCISSOR";
		case VK_DYNAMIC_STATE_LINE_WIDTH:							return "VK_DYNAMIC_STATE_LINE_WIDTH";
		case VK_DYNAMIC_STATE_DEPTH_BIAS:							return "VK_DYNAMIC_STATE_DEPTH_BIAS";
		case VK_DYNAMIC_STATE_BLEND_CONSTANTS:						return "VK_DYNAMIC_STATE_BLEND_CONSTANTS";
		case VK_DYNAMIC_STATE_DEPTH_BOUNDS:							return "VK_DYNAMIC_STATE_DEPTH_BOUNDS";
		case VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK:					return "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK";
		case VK_DYNAMIC_STATE_STENCIL_WRITE_MASK:					return "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK";
		case VK_DYNAMIC_STATE_STENCIL_REFERENCE:					return "VK_DYNAMIC_STATE_STENCIL_REFERENCE";
		case VK_DYNAMIC_STATE_CULL_MODE:							return "VK_DYNAMIC_STATE_CULL_MODE";
		case VK_DYNAMIC_STATE_FRONT_FACE:							return "VK_DYNAMIC_STATE_FRONT_FACE";
		case VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY:					return "VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY";
		case VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT:					return "VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT";
		case VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT:					return "VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT";
		case VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE:			return "VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE";
		case VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE:					return "VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE";
		case VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE:					return "VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE";
		case VK_DYNAMIC_STATE_DEPTH_COMPARE_OP:						return "VK_DYNAMIC_STATE_DEPTH_COMPARE_OP";
		case VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE:				return "VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE";
		case VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE:					return "VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE";
		case VK_DYNAMIC_STATE_STENCIL_OP:							return "VK_DYNAMIC_STATE_STENCIL_OP";
		case VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE:			return "VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE";
		case VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE:					return "VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE";
		case VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE:				return "VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE";
		case VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV:				return "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV";
		case VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT:				return "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT";
		case VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT:					return "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT";
		case VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR:	return "VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR";
		case VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV:		return "VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV";
		case VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV:		return "VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV";
		case VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV:					return "VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV";
		case VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR:			return "VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR";
		case VK_DYNAMIC_STATE_LINE_STIPPLE_EXT:						return "VK_DYNAMIC_STATE_LINE_STIPPLE_EXT";
		case VK_DYNAMIC_STATE_VERTEX_INPUT_EXT:						return "VK_DYNAMIC_STATE_VERTEX_INPUT_EXT";
		case VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT:				return "VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT";
		case VK_DYNAMIC_STATE_LOGIC_OP_EXT:							return "VK_DYNAMIC_STATE_LOGIC_OP_EXT";
		case VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT:				return "VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT";
		case VK_DYNAMIC_STATE_MAX_ENUM:								return "VK_DYNAMIC_STATE_MAX_ENUM";
		default:													return DE_NULL;
	}
}

const char* getFrontFaceName (VkFrontFace value)
{
	switch (value)
	{
		case VK_FRONT_FACE_COUNTER_CLOCKWISE:	return "VK_FRONT_FACE_COUNTER_CLOCKWISE";
		case VK_FRONT_FACE_CLOCKWISE:			return "VK_FRONT_FACE_CLOCKWISE";
		case VK_FRONT_FACE_MAX_ENUM:			return "VK_FRONT_FACE_MAX_ENUM";
		default:								return DE_NULL;
	}
}

const char* getVertexInputRateName (VkVertexInputRate value)
{
	switch (value)
	{
		case VK_VERTEX_INPUT_RATE_VERTEX:	return "VK_VERTEX_INPUT_RATE_VERTEX";
		case VK_VERTEX_INPUT_RATE_INSTANCE:	return "VK_VERTEX_INPUT_RATE_INSTANCE";
		case VK_VERTEX_INPUT_RATE_MAX_ENUM:	return "VK_VERTEX_INPUT_RATE_MAX_ENUM";
		default:							return DE_NULL;
	}
}

const char* getPrimitiveTopologyName (VkPrimitiveTopology value)
{
	switch (value)
	{
		case VK_PRIMITIVE_TOPOLOGY_POINT_LIST:						return "VK_PRIMITIVE_TOPOLOGY_POINT_LIST";
		case VK_PRIMITIVE_TOPOLOGY_LINE_LIST:						return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST";
		case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:						return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP";
		case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:					return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST";
		case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:					return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP";
		case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:					return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN";
		case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY:		return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY";
		case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY:		return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY";
		case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY:	return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY";
		case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY:	return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY";
		case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST:						return "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST";
		case VK_PRIMITIVE_TOPOLOGY_MAX_ENUM:						return "VK_PRIMITIVE_TOPOLOGY_MAX_ENUM";
		default:													return DE_NULL;
	}
}

const char* getPolygonModeName (VkPolygonMode value)
{
	switch (value)
	{
		case VK_POLYGON_MODE_FILL:				return "VK_POLYGON_MODE_FILL";
		case VK_POLYGON_MODE_LINE:				return "VK_POLYGON_MODE_LINE";
		case VK_POLYGON_MODE_POINT:				return "VK_POLYGON_MODE_POINT";
		case VK_POLYGON_MODE_FILL_RECTANGLE_NV:	return "VK_POLYGON_MODE_FILL_RECTANGLE_NV";
		case VK_POLYGON_MODE_MAX_ENUM:			return "VK_POLYGON_MODE_MAX_ENUM";
		default:								return DE_NULL;
	}
}

const char* getStencilOpName (VkStencilOp value)
{
	switch (value)
	{
		case VK_STENCIL_OP_KEEP:				return "VK_STENCIL_OP_KEEP";
		case VK_STENCIL_OP_ZERO:				return "VK_STENCIL_OP_ZERO";
		case VK_STENCIL_OP_REPLACE:				return "VK_STENCIL_OP_REPLACE";
		case VK_STENCIL_OP_INCREMENT_AND_CLAMP:	return "VK_STENCIL_OP_INCREMENT_AND_CLAMP";
		case VK_STENCIL_OP_DECREMENT_AND_CLAMP:	return "VK_STENCIL_OP_DECREMENT_AND_CLAMP";
		case VK_STENCIL_OP_INVERT:				return "VK_STENCIL_OP_INVERT";
		case VK_STENCIL_OP_INCREMENT_AND_WRAP:	return "VK_STENCIL_OP_INCREMENT_AND_WRAP";
		case VK_STENCIL_OP_DECREMENT_AND_WRAP:	return "VK_STENCIL_OP_DECREMENT_AND_WRAP";
		case VK_STENCIL_OP_MAX_ENUM:			return "VK_STENCIL_OP_MAX_ENUM";
		default:								return DE_NULL;
	}
}

const char* getLogicOpName (VkLogicOp value)
{
	switch (value)
	{
		case VK_LOGIC_OP_CLEAR:			return "VK_LOGIC_OP_CLEAR";
		case VK_LOGIC_OP_AND:			return "VK_LOGIC_OP_AND";
		case VK_LOGIC_OP_AND_REVERSE:	return "VK_LOGIC_OP_AND_REVERSE";
		case VK_LOGIC_OP_COPY:			return "VK_LOGIC_OP_COPY";
		case VK_LOGIC_OP_AND_INVERTED:	return "VK_LOGIC_OP_AND_INVERTED";
		case VK_LOGIC_OP_NO_OP:			return "VK_LOGIC_OP_NO_OP";
		case VK_LOGIC_OP_XOR:			return "VK_LOGIC_OP_XOR";
		case VK_LOGIC_OP_OR:			return "VK_LOGIC_OP_OR";
		case VK_LOGIC_OP_NOR:			return "VK_LOGIC_OP_NOR";
		case VK_LOGIC_OP_EQUIVALENT:	return "VK_LOGIC_OP_EQUIVALENT";
		case VK_LOGIC_OP_INVERT:		return "VK_LOGIC_OP_INVERT";
		case VK_LOGIC_OP_OR_REVERSE:	return "VK_LOGIC_OP_OR_REVERSE";
		case VK_LOGIC_OP_COPY_INVERTED:	return "VK_LOGIC_OP_COPY_INVERTED";
		case VK_LOGIC_OP_OR_INVERTED:	return "VK_LOGIC_OP_OR_INVERTED";
		case VK_LOGIC_OP_NAND:			return "VK_LOGIC_OP_NAND";
		case VK_LOGIC_OP_SET:			return "VK_LOGIC_OP_SET";
		case VK_LOGIC_OP_MAX_ENUM:		return "VK_LOGIC_OP_MAX_ENUM";
		default:						return DE_NULL;
	}
}

const char* getBorderColorName (VkBorderColor value)
{
	switch (value)
	{
		case VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK:	return "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK";
		case VK_BORDER_COLOR_INT_TRANSPARENT_BLACK:		return "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK";
		case VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK:		return "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK";
		case VK_BORDER_COLOR_INT_OPAQUE_BLACK:			return "VK_BORDER_COLOR_INT_OPAQUE_BLACK";
		case VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE:		return "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE";
		case VK_BORDER_COLOR_INT_OPAQUE_WHITE:			return "VK_BORDER_COLOR_INT_OPAQUE_WHITE";
		case VK_BORDER_COLOR_FLOAT_CUSTOM_EXT:			return "VK_BORDER_COLOR_FLOAT_CUSTOM_EXT";
		case VK_BORDER_COLOR_INT_CUSTOM_EXT:			return "VK_BORDER_COLOR_INT_CUSTOM_EXT";
		case VK_BORDER_COLOR_MAX_ENUM:					return "VK_BORDER_COLOR_MAX_ENUM";
		default:										return DE_NULL;
	}
}

const char* getFilterName (VkFilter value)
{
	switch (value)
	{
		case VK_FILTER_NEAREST:		return "VK_FILTER_NEAREST";
		case VK_FILTER_LINEAR:		return "VK_FILTER_LINEAR";
		case VK_FILTER_CUBIC_IMG:	return "VK_FILTER_CUBIC_IMG";
		case VK_FILTER_MAX_ENUM:	return "VK_FILTER_MAX_ENUM";
		default:					return DE_NULL;
	}
}

const char* getSamplerAddressModeName (VkSamplerAddressMode value)
{
	switch (value)
	{
		case VK_SAMPLER_ADDRESS_MODE_REPEAT:				return "VK_SAMPLER_ADDRESS_MODE_REPEAT";
		case VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT:		return "VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT";
		case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE:			return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE";
		case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER:		return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER";
		case VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE:	return "VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE";
		case VK_SAMPLER_ADDRESS_MODE_MAX_ENUM:				return "VK_SAMPLER_ADDRESS_MODE_MAX_ENUM";
		default:											return DE_NULL;
	}
}

const char* getSamplerMipmapModeName (VkSamplerMipmapMode value)
{
	switch (value)
	{
		case VK_SAMPLER_MIPMAP_MODE_NEAREST:	return "VK_SAMPLER_MIPMAP_MODE_NEAREST";
		case VK_SAMPLER_MIPMAP_MODE_LINEAR:		return "VK_SAMPLER_MIPMAP_MODE_LINEAR";
		case VK_SAMPLER_MIPMAP_MODE_MAX_ENUM:	return "VK_SAMPLER_MIPMAP_MODE_MAX_ENUM";
		default:								return DE_NULL;
	}
}

const char* getDescriptorTypeName (VkDescriptorType value)
{
	switch (value)
	{
		case VK_DESCRIPTOR_TYPE_SAMPLER:					return "VK_DESCRIPTOR_TYPE_SAMPLER";
		case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:		return "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER";
		case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:				return "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE";
		case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:				return "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE";
		case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:		return "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER";
		case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:		return "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER";
		case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:				return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER";
		case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:				return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER";
		case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:		return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC";
		case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:		return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC";
		case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:			return "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT";
		case VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK:		return "VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK";
		case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR:	return "VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR";
		case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV:	return "VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV";
		case VK_DESCRIPTOR_TYPE_MUTABLE_VALVE:				return "VK_DESCRIPTOR_TYPE_MUTABLE_VALVE";
		case VK_DESCRIPTOR_TYPE_MAX_ENUM:					return "VK_DESCRIPTOR_TYPE_MAX_ENUM";
		default:											return DE_NULL;
	}
}

const char* getAttachmentLoadOpName (VkAttachmentLoadOp value)
{
	switch (value)
	{
		case VK_ATTACHMENT_LOAD_OP_LOAD:		return "VK_ATTACHMENT_LOAD_OP_LOAD";
		case VK_ATTACHMENT_LOAD_OP_CLEAR:		return "VK_ATTACHMENT_LOAD_OP_CLEAR";
		case VK_ATTACHMENT_LOAD_OP_DONT_CARE:	return "VK_ATTACHMENT_LOAD_OP_DONT_CARE";
		case VK_ATTACHMENT_LOAD_OP_NONE_EXT:	return "VK_ATTACHMENT_LOAD_OP_NONE_EXT";
		case VK_ATTACHMENT_LOAD_OP_MAX_ENUM:	return "VK_ATTACHMENT_LOAD_OP_MAX_ENUM";
		default:								return DE_NULL;
	}
}

const char* getAttachmentStoreOpName (VkAttachmentStoreOp value)
{
	switch (value)
	{
		case VK_ATTACHMENT_STORE_OP_STORE:		return "VK_ATTACHMENT_STORE_OP_STORE";
		case VK_ATTACHMENT_STORE_OP_DONT_CARE:	return "VK_ATTACHMENT_STORE_OP_DONT_CARE";
		case VK_ATTACHMENT_STORE_OP_NONE:		return "VK_ATTACHMENT_STORE_OP_NONE";
		case VK_ATTACHMENT_STORE_OP_MAX_ENUM:	return "VK_ATTACHMENT_STORE_OP_MAX_ENUM";
		default:								return DE_NULL;
	}
}

const char* getPipelineBindPointName (VkPipelineBindPoint value)
{
	switch (value)
	{
		case VK_PIPELINE_BIND_POINT_GRAPHICS:				return "VK_PIPELINE_BIND_POINT_GRAPHICS";
		case VK_PIPELINE_BIND_POINT_COMPUTE:				return "VK_PIPELINE_BIND_POINT_COMPUTE";
		case VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR:		return "VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR";
		case VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI:	return "VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI";
		case VK_PIPELINE_BIND_POINT_MAX_ENUM:				return "VK_PIPELINE_BIND_POINT_MAX_ENUM";
		default:											return DE_NULL;
	}
}

const char* getCommandBufferLevelName (VkCommandBufferLevel value)
{
	switch (value)
	{
		case VK_COMMAND_BUFFER_LEVEL_PRIMARY:	return "VK_COMMAND_BUFFER_LEVEL_PRIMARY";
		case VK_COMMAND_BUFFER_LEVEL_SECONDARY:	return "VK_COMMAND_BUFFER_LEVEL_SECONDARY";
		case VK_COMMAND_BUFFER_LEVEL_MAX_ENUM:	return "VK_COMMAND_BUFFER_LEVEL_MAX_ENUM";
		default:								return DE_NULL;
	}
}

const char* getIndexTypeName (VkIndexType value)
{
	switch (value)
	{
		case VK_INDEX_TYPE_UINT16:		return "VK_INDEX_TYPE_UINT16";
		case VK_INDEX_TYPE_UINT32:		return "VK_INDEX_TYPE_UINT32";
		case VK_INDEX_TYPE_NONE_KHR:	return "VK_INDEX_TYPE_NONE_KHR";
		case VK_INDEX_TYPE_UINT8_EXT:	return "VK_INDEX_TYPE_UINT8_EXT";
		case VK_INDEX_TYPE_MAX_ENUM:	return "VK_INDEX_TYPE_MAX_ENUM";
		default:						return DE_NULL;
	}
}

const char* getSubpassContentsName (VkSubpassContents value)
{
	switch (value)
	{
		case VK_SUBPASS_CONTENTS_INLINE:					return "VK_SUBPASS_CONTENTS_INLINE";
		case VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS:	return "VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS";
		case VK_SUBPASS_CONTENTS_MAX_ENUM:					return "VK_SUBPASS_CONTENTS_MAX_ENUM";
		default:											return DE_NULL;
	}
}

const char* getPointClippingBehaviorName (VkPointClippingBehavior value)
{
	switch (value)
	{
		case VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES:		return "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES";
		case VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY:	return "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY";
		case VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM:				return "VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM";
		default:												return DE_NULL;
	}
}

const char* getTessellationDomainOriginName (VkTessellationDomainOrigin value)
{
	switch (value)
	{
		case VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT:	return "VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT";
		case VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT:	return "VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT";
		case VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM:	return "VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM";
		default:										return DE_NULL;
	}
}

const char* getSamplerYcbcrModelConversionName (VkSamplerYcbcrModelConversion value)
{
	switch (value)
	{
		case VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY:	return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY";
		case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY:	return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY";
		case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709:		return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709";
		case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601:		return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601";
		case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020:		return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020";
		case VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM:		return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM";
		default:												return DE_NULL;
	}
}

const char* getSamplerYcbcrRangeName (VkSamplerYcbcrRange value)
{
	switch (value)
	{
		case VK_SAMPLER_YCBCR_RANGE_ITU_FULL:	return "VK_SAMPLER_YCBCR_RANGE_ITU_FULL";
		case VK_SAMPLER_YCBCR_RANGE_ITU_NARROW:	return "VK_SAMPLER_YCBCR_RANGE_ITU_NARROW";
		case VK_SAMPLER_YCBCR_RANGE_MAX_ENUM:	return "VK_SAMPLER_YCBCR_RANGE_MAX_ENUM";
		default:								return DE_NULL;
	}
}

const char* getChromaLocationName (VkChromaLocation value)
{
	switch (value)
	{
		case VK_CHROMA_LOCATION_COSITED_EVEN:	return "VK_CHROMA_LOCATION_COSITED_EVEN";
		case VK_CHROMA_LOCATION_MIDPOINT:		return "VK_CHROMA_LOCATION_MIDPOINT";
		case VK_CHROMA_LOCATION_MAX_ENUM:		return "VK_CHROMA_LOCATION_MAX_ENUM";
		default:								return DE_NULL;
	}
}

const char* getDescriptorUpdateTemplateTypeName (VkDescriptorUpdateTemplateType value)
{
	switch (value)
	{
		case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET:			return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET";
		case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR:	return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR";
		case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM:				return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM";
		default:														return DE_NULL;
	}
}

const char* getDriverIdName (VkDriverId value)
{
	switch (value)
	{
		case VK_DRIVER_ID_AMD_PROPRIETARY:				return "VK_DRIVER_ID_AMD_PROPRIETARY";
		case VK_DRIVER_ID_AMD_OPEN_SOURCE:				return "VK_DRIVER_ID_AMD_OPEN_SOURCE";
		case VK_DRIVER_ID_MESA_RADV:					return "VK_DRIVER_ID_MESA_RADV";
		case VK_DRIVER_ID_NVIDIA_PROPRIETARY:			return "VK_DRIVER_ID_NVIDIA_PROPRIETARY";
		case VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS:	return "VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS";
		case VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA:		return "VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA";
		case VK_DRIVER_ID_IMAGINATION_PROPRIETARY:		return "VK_DRIVER_ID_IMAGINATION_PROPRIETARY";
		case VK_DRIVER_ID_QUALCOMM_PROPRIETARY:			return "VK_DRIVER_ID_QUALCOMM_PROPRIETARY";
		case VK_DRIVER_ID_ARM_PROPRIETARY:				return "VK_DRIVER_ID_ARM_PROPRIETARY";
		case VK_DRIVER_ID_GOOGLE_SWIFTSHADER:			return "VK_DRIVER_ID_GOOGLE_SWIFTSHADER";
		case VK_DRIVER_ID_GGP_PROPRIETARY:				return "VK_DRIVER_ID_GGP_PROPRIETARY";
		case VK_DRIVER_ID_BROADCOM_PROPRIETARY:			return "VK_DRIVER_ID_BROADCOM_PROPRIETARY";
		case VK_DRIVER_ID_MESA_LLVMPIPE:				return "VK_DRIVER_ID_MESA_LLVMPIPE";
		case VK_DRIVER_ID_MOLTENVK:						return "VK_DRIVER_ID_MOLTENVK";
		case VK_DRIVER_ID_COREAVI_PROPRIETARY:			return "VK_DRIVER_ID_COREAVI_PROPRIETARY";
		case VK_DRIVER_ID_JUICE_PROPRIETARY:			return "VK_DRIVER_ID_JUICE_PROPRIETARY";
		case VK_DRIVER_ID_VERISILICON_PROPRIETARY:		return "VK_DRIVER_ID_VERISILICON_PROPRIETARY";
		case VK_DRIVER_ID_MESA_TURNIP:					return "VK_DRIVER_ID_MESA_TURNIP";
		case VK_DRIVER_ID_MESA_V3DV:					return "VK_DRIVER_ID_MESA_V3DV";
		case VK_DRIVER_ID_MESA_PANVK:					return "VK_DRIVER_ID_MESA_PANVK";
		case VK_DRIVER_ID_SAMSUNG_PROPRIETARY:			return "VK_DRIVER_ID_SAMSUNG_PROPRIETARY";
		case VK_DRIVER_ID_MESA_VENUS:					return "VK_DRIVER_ID_MESA_VENUS";
		case VK_DRIVER_ID_MAX_ENUM:						return "VK_DRIVER_ID_MAX_ENUM";
		default:										return DE_NULL;
	}
}

const char* getShaderFloatControlsIndependenceName (VkShaderFloatControlsIndependence value)
{
	switch (value)
	{
		case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY:	return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY";
		case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL:			return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL";
		case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE:		return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE";
		case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM:	return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM";
		default:												return DE_NULL;
	}
}

const char* getSamplerReductionModeName (VkSamplerReductionMode value)
{
	switch (value)
	{
		case VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE:	return "VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE";
		case VK_SAMPLER_REDUCTION_MODE_MIN:					return "VK_SAMPLER_REDUCTION_MODE_MIN";
		case VK_SAMPLER_REDUCTION_MODE_MAX:					return "VK_SAMPLER_REDUCTION_MODE_MAX";
		case VK_SAMPLER_REDUCTION_MODE_MAX_ENUM:			return "VK_SAMPLER_REDUCTION_MODE_MAX_ENUM";
		default:											return DE_NULL;
	}
}

const char* getSemaphoreTypeName (VkSemaphoreType value)
{
	switch (value)
	{
		case VK_SEMAPHORE_TYPE_BINARY:		return "VK_SEMAPHORE_TYPE_BINARY";
		case VK_SEMAPHORE_TYPE_TIMELINE:	return "VK_SEMAPHORE_TYPE_TIMELINE";
		case VK_SEMAPHORE_TYPE_MAX_ENUM:	return "VK_SEMAPHORE_TYPE_MAX_ENUM";
		default:							return DE_NULL;
	}
}

const char* getPresentModeKHRName (VkPresentModeKHR value)
{
	switch (value)
	{
		case VK_PRESENT_MODE_IMMEDIATE_KHR:					return "VK_PRESENT_MODE_IMMEDIATE_KHR";
		case VK_PRESENT_MODE_MAILBOX_KHR:					return "VK_PRESENT_MODE_MAILBOX_KHR";
		case VK_PRESENT_MODE_FIFO_KHR:						return "VK_PRESENT_MODE_FIFO_KHR";
		case VK_PRESENT_MODE_FIFO_RELAXED_KHR:				return "VK_PRESENT_MODE_FIFO_RELAXED_KHR";
		case VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR:		return "VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR";
		case VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR:	return "VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR";
		case VK_PRESENT_MODE_MAX_ENUM_KHR:					return "VK_PRESENT_MODE_MAX_ENUM_KHR";
		default:											return DE_NULL;
	}
}

const char* getColorSpaceKHRName (VkColorSpaceKHR value)
{
	switch (value)
	{
		case VK_COLOR_SPACE_SRGB_NONLINEAR_KHR:				return "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR";
		case VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT:		return "VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT";
		case VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT:		return "VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT";
		case VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT:			return "VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT";
		case VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT:			return "VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT";
		case VK_COLOR_SPACE_BT709_LINEAR_EXT:				return "VK_COLOR_SPACE_BT709_LINEAR_EXT";
		case VK_COLOR_SPACE_BT709_NONLINEAR_EXT:			return "VK_COLOR_SPACE_BT709_NONLINEAR_EXT";
		case VK_COLOR_SPACE_BT2020_LINEAR_EXT:				return "VK_COLOR_SPACE_BT2020_LINEAR_EXT";
		case VK_COLOR_SPACE_HDR10_ST2084_EXT:				return "VK_COLOR_SPACE_HDR10_ST2084_EXT";
		case VK_COLOR_SPACE_DOLBYVISION_EXT:				return "VK_COLOR_SPACE_DOLBYVISION_EXT";
		case VK_COLOR_SPACE_HDR10_HLG_EXT:					return "VK_COLOR_SPACE_HDR10_HLG_EXT";
		case VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT:			return "VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT";
		case VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT:			return "VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT";
		case VK_COLOR_SPACE_PASS_THROUGH_EXT:				return "VK_COLOR_SPACE_PASS_THROUGH_EXT";
		case VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT:	return "VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT";
		case VK_COLOR_SPACE_DISPLAY_NATIVE_AMD:				return "VK_COLOR_SPACE_DISPLAY_NATIVE_AMD";
		case VK_COLOR_SPACE_MAX_ENUM_KHR:					return "VK_COLOR_SPACE_MAX_ENUM_KHR";
		default:											return DE_NULL;
	}
}

const char* getPerformanceCounterUnitKHRName (VkPerformanceCounterUnitKHR value)
{
	switch (value)
	{
		case VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR:			return "VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR";
		case VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR:		return "VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR";
		case VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR:		return "VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR";
		case VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR:				return "VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR";
		case VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR:	return "VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR";
		case VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR:			return "VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR";
		case VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR:				return "VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR";
		case VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR:				return "VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR";
		case VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR:				return "VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR";
		case VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR:				return "VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR";
		case VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR:			return "VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR";
		case VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR:			return "VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR";
		default:												return DE_NULL;
	}
}

const char* getPerformanceCounterScopeKHRName (VkPerformanceCounterScopeKHR value)
{
	switch (value)
	{
		case VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR:	return "VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR";
		case VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR:		return "VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR";
		case VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR:			return "VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR";
		case VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR:			return "VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR";
		default:												return DE_NULL;
	}
}

const char* getPerformanceCounterStorageKHRName (VkPerformanceCounterStorageKHR value)
{
	switch (value)
	{
		case VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR:		return "VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR";
		case VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR:		return "VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR";
		case VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR:		return "VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR";
		case VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR:		return "VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR";
		case VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR:	return "VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR";
		case VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR:	return "VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR";
		case VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR:	return "VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR";
		default:											return DE_NULL;
	}
}

const char* getQueueGlobalPriorityKHRName (VkQueueGlobalPriorityKHR value)
{
	switch (value)
	{
		case VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR:		return "VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR";
		case VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR:	return "VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR";
		case VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR:		return "VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR";
		case VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR:	return "VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR";
		case VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_KHR:	return "VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_KHR";
		default:									return DE_NULL;
	}
}

const char* getFragmentShadingRateCombinerOpKHRName (VkFragmentShadingRateCombinerOpKHR value)
{
	switch (value)
	{
		case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR:		return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR";
		case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR:	return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR";
		case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR:		return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR";
		case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR:		return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR";
		case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR:		return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR";
		case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_ENUM_KHR:	return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_ENUM_KHR";
		default:												return DE_NULL;
	}
}

const char* getPipelineExecutableStatisticFormatKHRName (VkPipelineExecutableStatisticFormatKHR value)
{
	switch (value)
	{
		case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR:	return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR";
		case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR:		return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR";
		case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR:	return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR";
		case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR:	return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR";
		case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR:	return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR";
		default:													return DE_NULL;
	}
}

const char* getDebugReportObjectTypeEXTName (VkDebugReportObjectTypeEXT value)
{
	switch (value)
	{
		case VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT:				return "VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT:							return "VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT:				return "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT:							return "VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT:							return "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT:							return "VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT:				return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT:				return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT:			return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT:				return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT:				return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT:		return "VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT:				return "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT:			return "VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT:		return "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT:	return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT:					return "VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT:				return "VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT:	return "VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT:		return "VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT:		return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT";
		case VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT:						return "VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT";
		default:															return DE_NULL;
	}
}

const char* getRasterizationOrderAMDName (VkRasterizationOrderAMD value)
{
	switch (value)
	{
		case VK_RASTERIZATION_ORDER_STRICT_AMD:		return "VK_RASTERIZATION_ORDER_STRICT_AMD";
		case VK_RASTERIZATION_ORDER_RELAXED_AMD:	return "VK_RASTERIZATION_ORDER_RELAXED_AMD";
		case VK_RASTERIZATION_ORDER_MAX_ENUM_AMD:	return "VK_RASTERIZATION_ORDER_MAX_ENUM_AMD";
		default:									return DE_NULL;
	}
}

const char* getShaderInfoTypeAMDName (VkShaderInfoTypeAMD value)
{
	switch (value)
	{
		case VK_SHADER_INFO_TYPE_STATISTICS_AMD:	return "VK_SHADER_INFO_TYPE_STATISTICS_AMD";
		case VK_SHADER_INFO_TYPE_BINARY_AMD:		return "VK_SHADER_INFO_TYPE_BINARY_AMD";
		case VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD:	return "VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD";
		case VK_SHADER_INFO_TYPE_MAX_ENUM_AMD:		return "VK_SHADER_INFO_TYPE_MAX_ENUM_AMD";
		default:									return DE_NULL;
	}
}

const char* getValidationCheckEXTName (VkValidationCheckEXT value)
{
	switch (value)
	{
		case VK_VALIDATION_CHECK_ALL_EXT:		return "VK_VALIDATION_CHECK_ALL_EXT";
		case VK_VALIDATION_CHECK_SHADERS_EXT:	return "VK_VALIDATION_CHECK_SHADERS_EXT";
		case VK_VALIDATION_CHECK_MAX_ENUM_EXT:	return "VK_VALIDATION_CHECK_MAX_ENUM_EXT";
		default:								return DE_NULL;
	}
}

const char* getDisplayPowerStateEXTName (VkDisplayPowerStateEXT value)
{
	switch (value)
	{
		case VK_DISPLAY_POWER_STATE_OFF_EXT:		return "VK_DISPLAY_POWER_STATE_OFF_EXT";
		case VK_DISPLAY_POWER_STATE_SUSPEND_EXT:	return "VK_DISPLAY_POWER_STATE_SUSPEND_EXT";
		case VK_DISPLAY_POWER_STATE_ON_EXT:			return "VK_DISPLAY_POWER_STATE_ON_EXT";
		case VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT:	return "VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT";
		default:									return DE_NULL;
	}
}

const char* getDeviceEventTypeEXTName (VkDeviceEventTypeEXT value)
{
	switch (value)
	{
		case VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT:	return "VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT";
		case VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT:			return "VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT";
		default:										return DE_NULL;
	}
}

const char* getDisplayEventTypeEXTName (VkDisplayEventTypeEXT value)
{
	switch (value)
	{
		case VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT:	return "VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT";
		case VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT:		return "VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT";
		default:										return DE_NULL;
	}
}

const char* getViewportCoordinateSwizzleNVName (VkViewportCoordinateSwizzleNV value)
{
	switch (value)
	{
		case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV:	return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV";
		case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV:	return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV";
		case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV:	return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV";
		case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV:	return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV";
		case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV:	return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV";
		case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV:	return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV";
		case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV:	return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV";
		case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV:	return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV";
		case VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV:	return "VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV";
		default:											return DE_NULL;
	}
}

const char* getDiscardRectangleModeEXTName (VkDiscardRectangleModeEXT value)
{
	switch (value)
	{
		case VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT:	return "VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT";
		case VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT:	return "VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT";
		case VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT:	return "VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT";
		default:										return DE_NULL;
	}
}

const char* getConservativeRasterizationModeEXTName (VkConservativeRasterizationModeEXT value)
{
	switch (value)
	{
		case VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT:		return "VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT";
		case VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT:	return "VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT";
		case VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT:	return "VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT";
		case VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT:		return "VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT";
		default:													return DE_NULL;
	}
}

const char* getBlendOverlapEXTName (VkBlendOverlapEXT value)
{
	switch (value)
	{
		case VK_BLEND_OVERLAP_UNCORRELATED_EXT:	return "VK_BLEND_OVERLAP_UNCORRELATED_EXT";
		case VK_BLEND_OVERLAP_DISJOINT_EXT:		return "VK_BLEND_OVERLAP_DISJOINT_EXT";
		case VK_BLEND_OVERLAP_CONJOINT_EXT:		return "VK_BLEND_OVERLAP_CONJOINT_EXT";
		case VK_BLEND_OVERLAP_MAX_ENUM_EXT:		return "VK_BLEND_OVERLAP_MAX_ENUM_EXT";
		default:								return DE_NULL;
	}
}

const char* getCoverageModulationModeNVName (VkCoverageModulationModeNV value)
{
	switch (value)
	{
		case VK_COVERAGE_MODULATION_MODE_NONE_NV:		return "VK_COVERAGE_MODULATION_MODE_NONE_NV";
		case VK_COVERAGE_MODULATION_MODE_RGB_NV:		return "VK_COVERAGE_MODULATION_MODE_RGB_NV";
		case VK_COVERAGE_MODULATION_MODE_ALPHA_NV:		return "VK_COVERAGE_MODULATION_MODE_ALPHA_NV";
		case VK_COVERAGE_MODULATION_MODE_RGBA_NV:		return "VK_COVERAGE_MODULATION_MODE_RGBA_NV";
		case VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV:	return "VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV";
		default:										return DE_NULL;
	}
}

const char* getValidationCacheHeaderVersionEXTName (VkValidationCacheHeaderVersionEXT value)
{
	switch (value)
	{
		case VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT:		return "VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT";
		case VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT:	return "VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT";
		default:												return DE_NULL;
	}
}

const char* getShadingRatePaletteEntryNVName (VkShadingRatePaletteEntryNV value)
{
	switch (value)
	{
		case VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV:				return "VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV";
		case VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV:		return "VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV";
		case VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV:		return "VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV";
		case VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV:		return "VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV";
		case VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV:		return "VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV";
		case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV:		return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV";
		case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV:	return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV";
		case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV:	return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV";
		case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV:	return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV";
		case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV:	return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV";
		case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV:	return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV";
		case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV:	return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV";
		case VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV:						return "VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV";
		default:															return DE_NULL;
	}
}

const char* getCoarseSampleOrderTypeNVName (VkCoarseSampleOrderTypeNV value)
{
	switch (value)
	{
		case VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV:		return "VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV";
		case VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV:			return "VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV";
		case VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV:	return "VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV";
		case VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV:	return "VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV";
		case VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV:		return "VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV";
		default:											return DE_NULL;
	}
}

const char* getRayTracingShaderGroupTypeKHRName (VkRayTracingShaderGroupTypeKHR value)
{
	switch (value)
	{
		case VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR:				return "VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR";
		case VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR:	return "VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR";
		case VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR:	return "VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR";
		case VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR:				return "VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR";
		default:														return DE_NULL;
	}
}

const char* getGeometryTypeKHRName (VkGeometryTypeKHR value)
{
	switch (value)
	{
		case VK_GEOMETRY_TYPE_TRIANGLES_KHR:	return "VK_GEOMETRY_TYPE_TRIANGLES_KHR";
		case VK_GEOMETRY_TYPE_AABBS_KHR:		return "VK_GEOMETRY_TYPE_AABBS_KHR";
		case VK_GEOMETRY_TYPE_INSTANCES_KHR:	return "VK_GEOMETRY_TYPE_INSTANCES_KHR";
		case VK_GEOMETRY_TYPE_MAX_ENUM_KHR:		return "VK_GEOMETRY_TYPE_MAX_ENUM_KHR";
		default:								return DE_NULL;
	}
}

const char* getAccelerationStructureTypeKHRName (VkAccelerationStructureTypeKHR value)
{
	switch (value)
	{
		case VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR:		return "VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR";
		case VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR:	return "VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR";
		case VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR:		return "VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR";
		case VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR:		return "VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR";
		default:												return DE_NULL;
	}
}

const char* getCopyAccelerationStructureModeKHRName (VkCopyAccelerationStructureModeKHR value)
{
	switch (value)
	{
		case VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR:			return "VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR";
		case VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR:		return "VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR";
		case VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR:		return "VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR";
		case VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR:	return "VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR";
		case VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR:		return "VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR";
		default:													return DE_NULL;
	}
}

const char* getAccelerationStructureMemoryRequirementsTypeNVName (VkAccelerationStructureMemoryRequirementsTypeNV value)
{
	switch (value)
	{
		case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV:			return "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV";
		case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV:	return "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV";
		case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV:	return "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV";
		case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_NV:		return "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_NV";
		default:																	return DE_NULL;
	}
}

const char* getTimeDomainEXTName (VkTimeDomainEXT value)
{
	switch (value)
	{
		case VK_TIME_DOMAIN_DEVICE_EXT:						return "VK_TIME_DOMAIN_DEVICE_EXT";
		case VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT:			return "VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT";
		case VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT:		return "VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT";
		case VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT:	return "VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT";
		case VK_TIME_DOMAIN_MAX_ENUM_EXT:					return "VK_TIME_DOMAIN_MAX_ENUM_EXT";
		default:											return DE_NULL;
	}
}

const char* getMemoryOverallocationBehaviorAMDName (VkMemoryOverallocationBehaviorAMD value)
{
	switch (value)
	{
		case VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD:		return "VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD";
		case VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD:		return "VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD";
		case VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD:	return "VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD";
		case VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD:	return "VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD";
		default:												return DE_NULL;
	}
}

const char* getPerformanceConfigurationTypeINTELName (VkPerformanceConfigurationTypeINTEL value)
{
	switch (value)
	{
		case VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL:	return "VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL";
		case VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL:									return "VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL";
		default:																				return DE_NULL;
	}
}

const char* getQueryPoolSamplingModeINTELName (VkQueryPoolSamplingModeINTEL value)
{
	switch (value)
	{
		case VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL:		return "VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL";
		case VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL:	return "VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL";
		default:											return DE_NULL;
	}
}

const char* getPerformanceOverrideTypeINTELName (VkPerformanceOverrideTypeINTEL value)
{
	switch (value)
	{
		case VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL:		return "VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL";
		case VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL:	return "VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL";
		case VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL:			return "VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL";
		default:													return DE_NULL;
	}
}

const char* getPerformanceParameterTypeINTELName (VkPerformanceParameterTypeINTEL value)
{
	switch (value)
	{
		case VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL:		return "VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL";
		case VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL:	return "VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL";
		case VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL:					return "VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL";
		default:															return DE_NULL;
	}
}

const char* getPerformanceValueTypeINTELName (VkPerformanceValueTypeINTEL value)
{
	switch (value)
	{
		case VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL:	return "VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL";
		case VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL:	return "VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL";
		case VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL:		return "VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL";
		case VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL:		return "VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL";
		case VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL:	return "VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL";
		case VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL:	return "VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL";
		default:										return DE_NULL;
	}
}

const char* getValidationFeatureEnableEXTName (VkValidationFeatureEnableEXT value)
{
	switch (value)
	{
		case VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT:							return "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT";
		case VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT:	return "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT";
		case VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT:						return "VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT";
		case VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT:							return "VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT";
		case VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT:			return "VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT";
		case VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT:								return "VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT";
		default:																	return DE_NULL;
	}
}

const char* getValidationFeatureDisableEXTName (VkValidationFeatureDisableEXT value)
{
	switch (value)
	{
		case VK_VALIDATION_FEATURE_DISABLE_ALL_EXT:						return "VK_VALIDATION_FEATURE_DISABLE_ALL_EXT";
		case VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT:					return "VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT";
		case VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT:			return "VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT";
		case VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT:			return "VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT";
		case VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT:		return "VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT";
		case VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT:				return "VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT";
		case VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT:			return "VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT";
		case VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT:	return "VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT";
		case VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT:				return "VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT";
		default:														return DE_NULL;
	}
}

const char* getComponentTypeNVName (VkComponentTypeNV value)
{
	switch (value)
	{
		case VK_COMPONENT_TYPE_FLOAT16_NV:	return "VK_COMPONENT_TYPE_FLOAT16_NV";
		case VK_COMPONENT_TYPE_FLOAT32_NV:	return "VK_COMPONENT_TYPE_FLOAT32_NV";
		case VK_COMPONENT_TYPE_FLOAT64_NV:	return "VK_COMPONENT_TYPE_FLOAT64_NV";
		case VK_COMPONENT_TYPE_SINT8_NV:	return "VK_COMPONENT_TYPE_SINT8_NV";
		case VK_COMPONENT_TYPE_SINT16_NV:	return "VK_COMPONENT_TYPE_SINT16_NV";
		case VK_COMPONENT_TYPE_SINT32_NV:	return "VK_COMPONENT_TYPE_SINT32_NV";
		case VK_COMPONENT_TYPE_SINT64_NV:	return "VK_COMPONENT_TYPE_SINT64_NV";
		case VK_COMPONENT_TYPE_UINT8_NV:	return "VK_COMPONENT_TYPE_UINT8_NV";
		case VK_COMPONENT_TYPE_UINT16_NV:	return "VK_COMPONENT_TYPE_UINT16_NV";
		case VK_COMPONENT_TYPE_UINT32_NV:	return "VK_COMPONENT_TYPE_UINT32_NV";
		case VK_COMPONENT_TYPE_UINT64_NV:	return "VK_COMPONENT_TYPE_UINT64_NV";
		case VK_COMPONENT_TYPE_MAX_ENUM_NV:	return "VK_COMPONENT_TYPE_MAX_ENUM_NV";
		default:							return DE_NULL;
	}
}

const char* getScopeNVName (VkScopeNV value)
{
	switch (value)
	{
		case VK_SCOPE_DEVICE_NV:		return "VK_SCOPE_DEVICE_NV";
		case VK_SCOPE_WORKGROUP_NV:		return "VK_SCOPE_WORKGROUP_NV";
		case VK_SCOPE_SUBGROUP_NV:		return "VK_SCOPE_SUBGROUP_NV";
		case VK_SCOPE_QUEUE_FAMILY_NV:	return "VK_SCOPE_QUEUE_FAMILY_NV";
		case VK_SCOPE_MAX_ENUM_NV:		return "VK_SCOPE_MAX_ENUM_NV";
		default:						return DE_NULL;
	}
}

const char* getCoverageReductionModeNVName (VkCoverageReductionModeNV value)
{
	switch (value)
	{
		case VK_COVERAGE_REDUCTION_MODE_MERGE_NV:		return "VK_COVERAGE_REDUCTION_MODE_MERGE_NV";
		case VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV:	return "VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV";
		case VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV:	return "VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV";
		default:										return DE_NULL;
	}
}

const char* getProvokingVertexModeEXTName (VkProvokingVertexModeEXT value)
{
	switch (value)
	{
		case VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT:	return "VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT";
		case VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT:	return "VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT";
		case VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT:		return "VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT";
		default:										return DE_NULL;
	}
}

const char* getLineRasterizationModeEXTName (VkLineRasterizationModeEXT value)
{
	switch (value)
	{
		case VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT:			return "VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT";
		case VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT:		return "VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT";
		case VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT:			return "VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT";
		case VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT:	return "VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT";
		case VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT:			return "VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT";
		default:												return DE_NULL;
	}
}

const char* getIndirectCommandsTokenTypeNVName (VkIndirectCommandsTokenTypeNV value)
{
	switch (value)
	{
		case VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV:	return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV";
		case VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV:	return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV";
		case VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV:	return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV";
		case VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV:	return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV";
		case VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV:	return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV";
		case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV:	return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV";
		case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV:			return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV";
		case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV:		return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV";
		case VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV:		return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV";
		default:												return DE_NULL;
	}
}

const char* getDeviceMemoryReportEventTypeEXTName (VkDeviceMemoryReportEventTypeEXT value)
{
	switch (value)
	{
		case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT:			return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT";
		case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT:				return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT";
		case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT:				return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT";
		case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT:			return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT";
		case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT:	return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT";
		case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_MAX_ENUM_EXT:			return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_MAX_ENUM_EXT";
		default:														return DE_NULL;
	}
}

const char* getFragmentShadingRateTypeNVName (VkFragmentShadingRateTypeNV value)
{
	switch (value)
	{
		case VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV:	return "VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV";
		case VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV:			return "VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV";
		case VK_FRAGMENT_SHADING_RATE_TYPE_MAX_ENUM_NV:			return "VK_FRAGMENT_SHADING_RATE_TYPE_MAX_ENUM_NV";
		default:												return DE_NULL;
	}
}

const char* getFragmentShadingRateNVName (VkFragmentShadingRateNV value)
{
	switch (value)
	{
		case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV:		return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV";
		case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV:	return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV";
		case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV:	return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV";
		case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV:	return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV";
		case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV:	return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV";
		case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV:	return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV";
		case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV:	return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV";
		case VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV:		return "VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV";
		case VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV:		return "VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV";
		case VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV:		return "VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV";
		case VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV:		return "VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV";
		case VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV:				return "VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV";
		case VK_FRAGMENT_SHADING_RATE_MAX_ENUM_NV:						return "VK_FRAGMENT_SHADING_RATE_MAX_ENUM_NV";
		default:														return DE_NULL;
	}
}

const char* getAccelerationStructureMotionInstanceTypeNVName (VkAccelerationStructureMotionInstanceTypeNV value)
{
	switch (value)
	{
		case VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV:			return "VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV";
		case VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV:	return "VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV";
		case VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV:		return "VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV";
		case VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV:		return "VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV";
		default:																return DE_NULL;
	}
}

const char* getBuildAccelerationStructureModeKHRName (VkBuildAccelerationStructureModeKHR value)
{
	switch (value)
	{
		case VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR:	return "VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR";
		case VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR:	return "VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR";
		case VK_BUILD_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR:	return "VK_BUILD_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR";
		default:												return DE_NULL;
	}
}

const char* getAccelerationStructureBuildTypeKHRName (VkAccelerationStructureBuildTypeKHR value)
{
	switch (value)
	{
		case VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR:				return "VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR";
		case VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR:			return "VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR";
		case VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR:	return "VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR";
		case VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR:			return "VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR";
		default:														return DE_NULL;
	}
}

const char* getAccelerationStructureCompatibilityKHRName (VkAccelerationStructureCompatibilityKHR value)
{
	switch (value)
	{
		case VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR:	return "VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR";
		case VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR:	return "VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR";
		case VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR:		return "VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR";
		default:														return DE_NULL;
	}
}

const char* getShaderGroupShaderKHRName (VkShaderGroupShaderKHR value)
{
	switch (value)
	{
		case VK_SHADER_GROUP_SHADER_GENERAL_KHR:		return "VK_SHADER_GROUP_SHADER_GENERAL_KHR";
		case VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR:	return "VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR";
		case VK_SHADER_GROUP_SHADER_ANY_HIT_KHR:		return "VK_SHADER_GROUP_SHADER_ANY_HIT_KHR";
		case VK_SHADER_GROUP_SHADER_INTERSECTION_KHR:	return "VK_SHADER_GROUP_SHADER_INTERSECTION_KHR";
		case VK_SHADER_GROUP_SHADER_MAX_ENUM_KHR:		return "VK_SHADER_GROUP_SHADER_MAX_ENUM_KHR";
		default:										return DE_NULL;
	}
}

const char* getQueryResultStatusKHRName (VkQueryResultStatusKHR value)
{
	switch (value)
	{
		case VK_QUERY_RESULT_STATUS_ERROR_KHR:		return "VK_QUERY_RESULT_STATUS_ERROR_KHR";
		case VK_QUERY_RESULT_STATUS_NOT_READY_KHR:	return "VK_QUERY_RESULT_STATUS_NOT_READY_KHR";
		case VK_QUERY_RESULT_STATUS_COMPLETE_KHR:	return "VK_QUERY_RESULT_STATUS_COMPLETE_KHR";
		case VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR:	return "VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR";
		default:									return DE_NULL;
	}
}

const char* getdVideoH264ChromaFormatIdcName (StdVideoH264ChromaFormatIdc value)
{
	switch (value)
	{
		case STD_VIDEO_H264_CHROMA_FORMAT_IDC_MONOCHROME:	return "STD_VIDEO_H264_CHROMA_FORMAT_IDC_MONOCHROME";
		case STD_VIDEO_H264_CHROMA_FORMAT_IDC_420:			return "STD_VIDEO_H264_CHROMA_FORMAT_IDC_420";
		case STD_VIDEO_H264_CHROMA_FORMAT_IDC_422:			return "STD_VIDEO_H264_CHROMA_FORMAT_IDC_422";
		case STD_VIDEO_H264_CHROMA_FORMAT_IDC_444:			return "STD_VIDEO_H264_CHROMA_FORMAT_IDC_444";
		case STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID:		return "STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID";
		default:											return DE_NULL;
	}
}

const char* getdVideoH264ProfileIdcName (StdVideoH264ProfileIdc value)
{
	switch (value)
	{
		case STD_VIDEO_H264_PROFILE_IDC_BASELINE:				return "STD_VIDEO_H264_PROFILE_IDC_BASELINE";
		case STD_VIDEO_H264_PROFILE_IDC_MAIN:					return "STD_VIDEO_H264_PROFILE_IDC_MAIN";
		case STD_VIDEO_H264_PROFILE_IDC_HIGH:					return "STD_VIDEO_H264_PROFILE_IDC_HIGH";
		case STD_VIDEO_H264_PROFILE_IDC_HIGH_444_PREDICTIVE:	return "STD_VIDEO_H264_PROFILE_IDC_HIGH_444_PREDICTIVE";
		case STD_VIDEO_H264_PROFILE_IDC_INVALID:				return "STD_VIDEO_H264_PROFILE_IDC_INVALID";
		default:												return DE_NULL;
	}
}

const char* getdVideoH264LevelName (StdVideoH264Level value)
{
	switch (value)
	{
		case STD_VIDEO_H264_LEVEL_1_0:		return "STD_VIDEO_H264_LEVEL_1_0";
		case STD_VIDEO_H264_LEVEL_1_1:		return "STD_VIDEO_H264_LEVEL_1_1";
		case STD_VIDEO_H264_LEVEL_1_2:		return "STD_VIDEO_H264_LEVEL_1_2";
		case STD_VIDEO_H264_LEVEL_1_3:		return "STD_VIDEO_H264_LEVEL_1_3";
		case STD_VIDEO_H264_LEVEL_2_0:		return "STD_VIDEO_H264_LEVEL_2_0";
		case STD_VIDEO_H264_LEVEL_2_1:		return "STD_VIDEO_H264_LEVEL_2_1";
		case STD_VIDEO_H264_LEVEL_2_2:		return "STD_VIDEO_H264_LEVEL_2_2";
		case STD_VIDEO_H264_LEVEL_3_0:		return "STD_VIDEO_H264_LEVEL_3_0";
		case STD_VIDEO_H264_LEVEL_3_1:		return "STD_VIDEO_H264_LEVEL_3_1";
		case STD_VIDEO_H264_LEVEL_3_2:		return "STD_VIDEO_H264_LEVEL_3_2";
		case STD_VIDEO_H264_LEVEL_4_0:		return "STD_VIDEO_H264_LEVEL_4_0";
		case STD_VIDEO_H264_LEVEL_4_1:		return "STD_VIDEO_H264_LEVEL_4_1";
		case STD_VIDEO_H264_LEVEL_4_2:		return "STD_VIDEO_H264_LEVEL_4_2";
		case STD_VIDEO_H264_LEVEL_5_0:		return "STD_VIDEO_H264_LEVEL_5_0";
		case STD_VIDEO_H264_LEVEL_5_1:		return "STD_VIDEO_H264_LEVEL_5_1";
		case STD_VIDEO_H264_LEVEL_5_2:		return "STD_VIDEO_H264_LEVEL_5_2";
		case STD_VIDEO_H264_LEVEL_6_0:		return "STD_VIDEO_H264_LEVEL_6_0";
		case STD_VIDEO_H264_LEVEL_6_1:		return "STD_VIDEO_H264_LEVEL_6_1";
		case STD_VIDEO_H264_LEVEL_6_2:		return "STD_VIDEO_H264_LEVEL_6_2";
		case STD_VIDEO_H264_LEVEL_INVALID:	return "STD_VIDEO_H264_LEVEL_INVALID";
		default:							return DE_NULL;
	}
}

const char* getdVideoH264PocTypeName (StdVideoH264PocType value)
{
	switch (value)
	{
		case STD_VIDEO_H264_POC_TYPE_0:			return "STD_VIDEO_H264_POC_TYPE_0";
		case STD_VIDEO_H264_POC_TYPE_1:			return "STD_VIDEO_H264_POC_TYPE_1";
		case STD_VIDEO_H264_POC_TYPE_2:			return "STD_VIDEO_H264_POC_TYPE_2";
		case STD_VIDEO_H264_POC_TYPE_INVALID:	return "STD_VIDEO_H264_POC_TYPE_INVALID";
		default:								return DE_NULL;
	}
}

const char* getdVideoH264AspectRatioIdcName (StdVideoH264AspectRatioIdc value)
{
	switch (value)
	{
		case STD_VIDEO_H264_ASPECT_RATIO_IDC_UNSPECIFIED:	return "STD_VIDEO_H264_ASPECT_RATIO_IDC_UNSPECIFIED";
		case STD_VIDEO_H264_ASPECT_RATIO_IDC_SQUARE:		return "STD_VIDEO_H264_ASPECT_RATIO_IDC_SQUARE";
		case STD_VIDEO_H264_ASPECT_RATIO_IDC_12_11:			return "STD_VIDEO_H264_ASPECT_RATIO_IDC_12_11";
		case STD_VIDEO_H264_ASPECT_RATIO_IDC_10_11:			return "STD_VIDEO_H264_ASPECT_RATIO_IDC_10_11";
		case STD_VIDEO_H264_ASPECT_RATIO_IDC_16_11:			return "STD_VIDEO_H264_ASPECT_RATIO_IDC_16_11";
		case STD_VIDEO_H264_ASPECT_RATIO_IDC_40_33:			return "STD_VIDEO_H264_ASPECT_RATIO_IDC_40_33";
		case STD_VIDEO_H264_ASPECT_RATIO_IDC_24_11:			return "STD_VIDEO_H264_ASPECT_RATIO_IDC_24_11";
		case STD_VIDEO_H264_ASPECT_RATIO_IDC_20_11:			return "STD_VIDEO_H264_ASPECT_RATIO_IDC_20_11";
		case STD_VIDEO_H264_ASPECT_RATIO_IDC_32_11:			return "STD_VIDEO_H264_ASPECT_RATIO_IDC_32_11";
		case STD_VIDEO_H264_ASPECT_RATIO_IDC_80_33:			return "STD_VIDEO_H264_ASPECT_RATIO_IDC_80_33";
		case STD_VIDEO_H264_ASPECT_RATIO_IDC_18_11:			return "STD_VIDEO_H264_ASPECT_RATIO_IDC_18_11";
		case STD_VIDEO_H264_ASPECT_RATIO_IDC_15_11:			return "STD_VIDEO_H264_ASPECT_RATIO_IDC_15_11";
		case STD_VIDEO_H264_ASPECT_RATIO_IDC_64_33:			return "STD_VIDEO_H264_ASPECT_RATIO_IDC_64_33";
		case STD_VIDEO_H264_ASPECT_RATIO_IDC_160_99:		return "STD_VIDEO_H264_ASPECT_RATIO_IDC_160_99";
		case STD_VIDEO_H264_ASPECT_RATIO_IDC_4_3:			return "STD_VIDEO_H264_ASPECT_RATIO_IDC_4_3";
		case STD_VIDEO_H264_ASPECT_RATIO_IDC_3_2:			return "STD_VIDEO_H264_ASPECT_RATIO_IDC_3_2";
		case STD_VIDEO_H264_ASPECT_RATIO_IDC_2_1:			return "STD_VIDEO_H264_ASPECT_RATIO_IDC_2_1";
		case STD_VIDEO_H264_ASPECT_RATIO_IDC_EXTENDED_SAR:	return "STD_VIDEO_H264_ASPECT_RATIO_IDC_EXTENDED_SAR";
		case STD_VIDEO_H264_ASPECT_RATIO_IDC_INVALID:		return "STD_VIDEO_H264_ASPECT_RATIO_IDC_INVALID";
		default:											return DE_NULL;
	}
}

const char* getdVideoH264WeightedBipredIdcName (StdVideoH264WeightedBipredIdc value)
{
	switch (value)
	{
		case STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT:	return "STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT";
		case STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT:	return "STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT";
		case STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT:	return "STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT";
		case STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID:	return "STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID";
		default:											return DE_NULL;
	}
}

const char* getdVideoH264ModificationOfPicNumsIdcName (StdVideoH264ModificationOfPicNumsIdc value)
{
	switch (value)
	{
		case STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_SHORT_TERM_SUBTRACT:	return "STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_SHORT_TERM_SUBTRACT";
		case STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_SHORT_TERM_ADD:		return "STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_SHORT_TERM_ADD";
		case STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_LONG_TERM:				return "STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_LONG_TERM";
		case STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_END:					return "STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_END";
		case STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_INVALID:				return "STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_INVALID";
		default:																return DE_NULL;
	}
}

const char* getdVideoH264MemMgmtControlOpName (StdVideoH264MemMgmtControlOp value)
{
	switch (value)
	{
		case STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_END:						return "STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_END";
		case STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_SHORT_TERM:			return "STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_SHORT_TERM";
		case STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_LONG_TERM:			return "STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_LONG_TERM";
		case STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MARK_LONG_TERM:				return "STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MARK_LONG_TERM";
		case STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_SET_MAX_LONG_TERM_INDEX:	return "STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_SET_MAX_LONG_TERM_INDEX";
		case STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_ALL:					return "STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_ALL";
		case STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MARK_CURRENT_AS_LONG_TERM:	return "STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MARK_CURRENT_AS_LONG_TERM";
		case STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_INVALID:					return "STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_INVALID";
		default:															return DE_NULL;
	}
}

const char* getdVideoH264CabacInitIdcName (StdVideoH264CabacInitIdc value)
{
	switch (value)
	{
		case STD_VIDEO_H264_CABAC_INIT_IDC_0:		return "STD_VIDEO_H264_CABAC_INIT_IDC_0";
		case STD_VIDEO_H264_CABAC_INIT_IDC_1:		return "STD_VIDEO_H264_CABAC_INIT_IDC_1";
		case STD_VIDEO_H264_CABAC_INIT_IDC_2:		return "STD_VIDEO_H264_CABAC_INIT_IDC_2";
		case STD_VIDEO_H264_CABAC_INIT_IDC_INVALID:	return "STD_VIDEO_H264_CABAC_INIT_IDC_INVALID";
		default:									return DE_NULL;
	}
}

const char* getdVideoH264DisableDeblockingFilterIdcName (StdVideoH264DisableDeblockingFilterIdc value)
{
	switch (value)
	{
		case STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_DISABLED:	return "STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_DISABLED";
		case STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_ENABLED:	return "STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_ENABLED";
		case STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_PARTIAL:	return "STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_PARTIAL";
		case STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_INVALID:	return "STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_INVALID";
		default:													return DE_NULL;
	}
}

const char* getdVideoH264SliceTypeName (StdVideoH264SliceType value)
{
	switch (value)
	{
		case STD_VIDEO_H264_SLICE_TYPE_P:		return "STD_VIDEO_H264_SLICE_TYPE_P";
		case STD_VIDEO_H264_SLICE_TYPE_B:		return "STD_VIDEO_H264_SLICE_TYPE_B";
		case STD_VIDEO_H264_SLICE_TYPE_I:		return "STD_VIDEO_H264_SLICE_TYPE_I";
		case STD_VIDEO_H264_SLICE_TYPE_INVALID:	return "STD_VIDEO_H264_SLICE_TYPE_INVALID";
		default:								return DE_NULL;
	}
}

const char* getdVideoH264PictureTypeName (StdVideoH264PictureType value)
{
	switch (value)
	{
		case STD_VIDEO_H264_PICTURE_TYPE_P:			return "STD_VIDEO_H264_PICTURE_TYPE_P";
		case STD_VIDEO_H264_PICTURE_TYPE_B:			return "STD_VIDEO_H264_PICTURE_TYPE_B";
		case STD_VIDEO_H264_PICTURE_TYPE_I:			return "STD_VIDEO_H264_PICTURE_TYPE_I";
		case STD_VIDEO_H264_PICTURE_TYPE_IDR:		return "STD_VIDEO_H264_PICTURE_TYPE_IDR";
		case STD_VIDEO_H264_PICTURE_TYPE_INVALID:	return "STD_VIDEO_H264_PICTURE_TYPE_INVALID";
		default:									return DE_NULL;
	}
}

const char* getdVideoH264NonVclNaluTypeName (StdVideoH264NonVclNaluType value)
{
	switch (value)
	{
		case STD_VIDEO_H264_NON_VCL_NALU_TYPE_SPS:				return "STD_VIDEO_H264_NON_VCL_NALU_TYPE_SPS";
		case STD_VIDEO_H264_NON_VCL_NALU_TYPE_PPS:				return "STD_VIDEO_H264_NON_VCL_NALU_TYPE_PPS";
		case STD_VIDEO_H264_NON_VCL_NALU_TYPE_AUD:				return "STD_VIDEO_H264_NON_VCL_NALU_TYPE_AUD";
		case STD_VIDEO_H264_NON_VCL_NALU_TYPE_PREFIX:			return "STD_VIDEO_H264_NON_VCL_NALU_TYPE_PREFIX";
		case STD_VIDEO_H264_NON_VCL_NALU_TYPE_END_OF_SEQUENCE:	return "STD_VIDEO_H264_NON_VCL_NALU_TYPE_END_OF_SEQUENCE";
		case STD_VIDEO_H264_NON_VCL_NALU_TYPE_END_OF_STREAM:	return "STD_VIDEO_H264_NON_VCL_NALU_TYPE_END_OF_STREAM";
		case STD_VIDEO_H264_NON_VCL_NALU_TYPE_PRECODED:			return "STD_VIDEO_H264_NON_VCL_NALU_TYPE_PRECODED";
		case STD_VIDEO_H264_NON_VCL_NALU_TYPE_INVALID:			return "STD_VIDEO_H264_NON_VCL_NALU_TYPE_INVALID";
		default:												return DE_NULL;
	}
}

const char* getdVideoH265ChromaFormatIdcName (StdVideoH265ChromaFormatIdc value)
{
	switch (value)
	{
		case STD_VIDEO_H265_CHROMA_FORMAT_IDC_MONOCHROME:	return "STD_VIDEO_H265_CHROMA_FORMAT_IDC_MONOCHROME";
		case STD_VIDEO_H265_CHROMA_FORMAT_IDC_420:			return "STD_VIDEO_H265_CHROMA_FORMAT_IDC_420";
		case STD_VIDEO_H265_CHROMA_FORMAT_IDC_422:			return "STD_VIDEO_H265_CHROMA_FORMAT_IDC_422";
		case STD_VIDEO_H265_CHROMA_FORMAT_IDC_444:			return "STD_VIDEO_H265_CHROMA_FORMAT_IDC_444";
		case STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID:		return "STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID";
		default:											return DE_NULL;
	}
}

const char* getdVideoH265ProfileIdcName (StdVideoH265ProfileIdc value)
{
	switch (value)
	{
		case STD_VIDEO_H265_PROFILE_IDC_MAIN:						return "STD_VIDEO_H265_PROFILE_IDC_MAIN";
		case STD_VIDEO_H265_PROFILE_IDC_MAIN_10:					return "STD_VIDEO_H265_PROFILE_IDC_MAIN_10";
		case STD_VIDEO_H265_PROFILE_IDC_MAIN_STILL_PICTURE:			return "STD_VIDEO_H265_PROFILE_IDC_MAIN_STILL_PICTURE";
		case STD_VIDEO_H265_PROFILE_IDC_FORMAT_RANGE_EXTENSIONS:	return "STD_VIDEO_H265_PROFILE_IDC_FORMAT_RANGE_EXTENSIONS";
		case STD_VIDEO_H265_PROFILE_IDC_SCC_EXTENSIONS:				return "STD_VIDEO_H265_PROFILE_IDC_SCC_EXTENSIONS";
		case STD_VIDEO_H265_PROFILE_IDC_INVALID:					return "STD_VIDEO_H265_PROFILE_IDC_INVALID";
		default:													return DE_NULL;
	}
}

const char* getdVideoH265LevelName (StdVideoH265Level value)
{
	switch (value)
	{
		case STD_VIDEO_H265_LEVEL_1_0:		return "STD_VIDEO_H265_LEVEL_1_0";
		case STD_VIDEO_H265_LEVEL_2_0:		return "STD_VIDEO_H265_LEVEL_2_0";
		case STD_VIDEO_H265_LEVEL_2_1:		return "STD_VIDEO_H265_LEVEL_2_1";
		case STD_VIDEO_H265_LEVEL_3_0:		return "STD_VIDEO_H265_LEVEL_3_0";
		case STD_VIDEO_H265_LEVEL_3_1:		return "STD_VIDEO_H265_LEVEL_3_1";
		case STD_VIDEO_H265_LEVEL_4_0:		return "STD_VIDEO_H265_LEVEL_4_0";
		case STD_VIDEO_H265_LEVEL_4_1:		return "STD_VIDEO_H265_LEVEL_4_1";
		case STD_VIDEO_H265_LEVEL_5_0:		return "STD_VIDEO_H265_LEVEL_5_0";
		case STD_VIDEO_H265_LEVEL_5_1:		return "STD_VIDEO_H265_LEVEL_5_1";
		case STD_VIDEO_H265_LEVEL_5_2:		return "STD_VIDEO_H265_LEVEL_5_2";
		case STD_VIDEO_H265_LEVEL_6_0:		return "STD_VIDEO_H265_LEVEL_6_0";
		case STD_VIDEO_H265_LEVEL_6_1:		return "STD_VIDEO_H265_LEVEL_6_1";
		case STD_VIDEO_H265_LEVEL_6_2:		return "STD_VIDEO_H265_LEVEL_6_2";
		case STD_VIDEO_H265_LEVEL_INVALID:	return "STD_VIDEO_H265_LEVEL_INVALID";
		default:							return DE_NULL;
	}
}

const char* getdVideoH265SliceTypeName (StdVideoH265SliceType value)
{
	switch (value)
	{
		case STD_VIDEO_H265_SLICE_TYPE_B:		return "STD_VIDEO_H265_SLICE_TYPE_B";
		case STD_VIDEO_H265_SLICE_TYPE_P:		return "STD_VIDEO_H265_SLICE_TYPE_P";
		case STD_VIDEO_H265_SLICE_TYPE_I:		return "STD_VIDEO_H265_SLICE_TYPE_I";
		case STD_VIDEO_H265_SLICE_TYPE_INVALID:	return "STD_VIDEO_H265_SLICE_TYPE_INVALID";
		default:								return DE_NULL;
	}
}

const char* getdVideoH265PictureTypeName (StdVideoH265PictureType value)
{
	switch (value)
	{
		case STD_VIDEO_H265_PICTURE_TYPE_P:			return "STD_VIDEO_H265_PICTURE_TYPE_P";
		case STD_VIDEO_H265_PICTURE_TYPE_B:			return "STD_VIDEO_H265_PICTURE_TYPE_B";
		case STD_VIDEO_H265_PICTURE_TYPE_I:			return "STD_VIDEO_H265_PICTURE_TYPE_I";
		case STD_VIDEO_H265_PICTURE_TYPE_IDR:		return "STD_VIDEO_H265_PICTURE_TYPE_IDR";
		case STD_VIDEO_H265_PICTURE_TYPE_INVALID:	return "STD_VIDEO_H265_PICTURE_TYPE_INVALID";
		default:									return DE_NULL;
	}
}

const char* getdVideoDecodeH264FieldOrderCountName (StdVideoDecodeH264FieldOrderCount value)
{
	switch (value)
	{
		case STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP:		return "STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP";
		case STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM:	return "STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM";
		case STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID:	return "STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID";
		default:												return DE_NULL;
	}
}

const char* getFullScreenExclusiveEXTName (VkFullScreenExclusiveEXT value)
{
	switch (value)
	{
		case VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT:					return "VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT";
		case VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT:					return "VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT";
		case VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT:				return "VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT";
		case VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT:	return "VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT";
		case VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT:					return "VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT";
		default:													return DE_NULL;
	}
}

tcu::Format::Bitfield<32> getAccessFlagsStr (VkAccessFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_ACCESS_INDIRECT_COMMAND_READ_BIT,						"VK_ACCESS_INDIRECT_COMMAND_READ_BIT"),
		tcu::Format::BitDesc(VK_ACCESS_INDEX_READ_BIT,									"VK_ACCESS_INDEX_READ_BIT"),
		tcu::Format::BitDesc(VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,						"VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"),
		tcu::Format::BitDesc(VK_ACCESS_UNIFORM_READ_BIT,								"VK_ACCESS_UNIFORM_READ_BIT"),
		tcu::Format::BitDesc(VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,						"VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"),
		tcu::Format::BitDesc(VK_ACCESS_SHADER_READ_BIT,									"VK_ACCESS_SHADER_READ_BIT"),
		tcu::Format::BitDesc(VK_ACCESS_SHADER_WRITE_BIT,								"VK_ACCESS_SHADER_WRITE_BIT"),
		tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,						"VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"),
		tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,						"VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"),
		tcu::Format::BitDesc(VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,				"VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"),
		tcu::Format::BitDesc(VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,				"VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"),
		tcu::Format::BitDesc(VK_ACCESS_TRANSFER_READ_BIT,								"VK_ACCESS_TRANSFER_READ_BIT"),
		tcu::Format::BitDesc(VK_ACCESS_TRANSFER_WRITE_BIT,								"VK_ACCESS_TRANSFER_WRITE_BIT"),
		tcu::Format::BitDesc(VK_ACCESS_HOST_READ_BIT,									"VK_ACCESS_HOST_READ_BIT"),
		tcu::Format::BitDesc(VK_ACCESS_HOST_WRITE_BIT,									"VK_ACCESS_HOST_WRITE_BIT"),
		tcu::Format::BitDesc(VK_ACCESS_MEMORY_READ_BIT,									"VK_ACCESS_MEMORY_READ_BIT"),
		tcu::Format::BitDesc(VK_ACCESS_MEMORY_WRITE_BIT,								"VK_ACCESS_MEMORY_WRITE_BIT"),
		tcu::Format::BitDesc(VK_ACCESS_NONE,											"VK_ACCESS_NONE"),
		tcu::Format::BitDesc(VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT,				"VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT"),
		tcu::Format::BitDesc(VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT,			"VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"),
		tcu::Format::BitDesc(VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT,		"VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"),
		tcu::Format::BitDesc(VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT,				"VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT"),
		tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT,		"VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"),
		tcu::Format::BitDesc(VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR,				"VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR"),
		tcu::Format::BitDesc(VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR,			"VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"),
		tcu::Format::BitDesc(VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT,				"VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT"),
		tcu::Format::BitDesc(VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR,	"VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"),
		tcu::Format::BitDesc(VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV,					"VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV"),
		tcu::Format::BitDesc(VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV,					"VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV"),
		tcu::Format::BitDesc(VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV,					"VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV"),
		tcu::Format::BitDesc(VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV,				"VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV"),
		tcu::Format::BitDesc(VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV,				"VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV"),
		tcu::Format::BitDesc(VK_ACCESS_NONE_KHR,										"VK_ACCESS_NONE_KHR"),
		tcu::Format::BitDesc(VK_ACCESS_FLAG_BITS_MAX_ENUM,								"VK_ACCESS_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getImageAspectFlagsStr (VkImageAspectFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_IMAGE_ASPECT_COLOR_BIT,					"VK_IMAGE_ASPECT_COLOR_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_ASPECT_DEPTH_BIT,					"VK_IMAGE_ASPECT_DEPTH_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_ASPECT_STENCIL_BIT,				"VK_IMAGE_ASPECT_STENCIL_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_ASPECT_METADATA_BIT,				"VK_IMAGE_ASPECT_METADATA_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_0_BIT,				"VK_IMAGE_ASPECT_PLANE_0_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_1_BIT,				"VK_IMAGE_ASPECT_PLANE_1_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_2_BIT,				"VK_IMAGE_ASPECT_PLANE_2_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT,	"VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT"),
		tcu::Format::BitDesc(VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT,	"VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT"),
		tcu::Format::BitDesc(VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT,	"VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT"),
		tcu::Format::BitDesc(VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT,	"VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT"),
		tcu::Format::BitDesc(VK_IMAGE_ASPECT_NONE_KHR,					"VK_IMAGE_ASPECT_NONE_KHR"),
		tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,			"VK_IMAGE_ASPECT_PLANE_0_BIT_KHR"),
		tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_1_BIT_KHR,			"VK_IMAGE_ASPECT_PLANE_1_BIT_KHR"),
		tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_2_BIT_KHR,			"VK_IMAGE_ASPECT_PLANE_2_BIT_KHR"),
		tcu::Format::BitDesc(VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM,		"VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getFormatFeatureFlagsStr (VkFormatFeatureFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,																"VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,																"VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,														"VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,														"VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,														"VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,													"VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,																"VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,															"VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,														"VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,													"VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_BLIT_SRC_BIT,																	"VK_FORMAT_FEATURE_BLIT_SRC_BIT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_BLIT_DST_BIT,																	"VK_FORMAT_FEATURE_BLIT_DST_BIT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,													"VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,																"VK_FORMAT_FEATURE_TRANSFER_SRC_BIT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_DST_BIT,																"VK_FORMAT_FEATURE_TRANSFER_DST_BIT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,														"VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,								"VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"),
		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"),
		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"),
		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"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_DISJOINT_BIT,																	"VK_FORMAT_FEATURE_DISJOINT_BIT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,														"VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT,													"VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,												"VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR,														"VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR,														"VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR,									"VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT,													"VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,										"VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR,														"VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR,														"VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,															"VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR,															"VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT,												"VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR,													"VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR,							"VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR,			"VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR,			"VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR,	"VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_DISJOINT_BIT_KHR,																"VK_FORMAT_FEATURE_DISJOINT_BIT_KHR"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR,													"VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT,												"VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT"),
		tcu::Format::BitDesc(VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM,																"VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getImageCreateFlagsStr (VkImageCreateFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_BINDING_BIT,						"VK_IMAGE_CREATE_SPARSE_BINDING_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,						"VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,						"VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,						"VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,						"VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_ALIAS_BIT,									"VK_IMAGE_CREATE_ALIAS_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,			"VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,					"VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,			"VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,						"VK_IMAGE_CREATE_EXTENDED_USAGE_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_PROTECTED_BIT,								"VK_IMAGE_CREATE_PROTECTED_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_DISJOINT_BIT,								"VK_IMAGE_CREATE_DISJOINT_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV,						"VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT,	"VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT,						"VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM,		"VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR,		"VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR,				"VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR,		"VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR,					"VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_DISJOINT_BIT_KHR,							"VK_IMAGE_CREATE_DISJOINT_BIT_KHR"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_ALIAS_BIT_KHR,								"VK_IMAGE_CREATE_ALIAS_BIT_KHR"),
		tcu::Format::BitDesc(VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM,						"VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getSampleCountFlagsStr (VkSampleCountFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_SAMPLE_COUNT_1_BIT,					"VK_SAMPLE_COUNT_1_BIT"),
		tcu::Format::BitDesc(VK_SAMPLE_COUNT_2_BIT,					"VK_SAMPLE_COUNT_2_BIT"),
		tcu::Format::BitDesc(VK_SAMPLE_COUNT_4_BIT,					"VK_SAMPLE_COUNT_4_BIT"),
		tcu::Format::BitDesc(VK_SAMPLE_COUNT_8_BIT,					"VK_SAMPLE_COUNT_8_BIT"),
		tcu::Format::BitDesc(VK_SAMPLE_COUNT_16_BIT,				"VK_SAMPLE_COUNT_16_BIT"),
		tcu::Format::BitDesc(VK_SAMPLE_COUNT_32_BIT,				"VK_SAMPLE_COUNT_32_BIT"),
		tcu::Format::BitDesc(VK_SAMPLE_COUNT_64_BIT,				"VK_SAMPLE_COUNT_64_BIT"),
		tcu::Format::BitDesc(VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM,	"VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getImageUsageFlagsStr (VkImageUsageFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_SRC_BIT,							"VK_IMAGE_USAGE_TRANSFER_SRC_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_DST_BIT,							"VK_IMAGE_USAGE_TRANSFER_DST_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_USAGE_SAMPLED_BIT,								"VK_IMAGE_USAGE_SAMPLED_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_USAGE_STORAGE_BIT,								"VK_IMAGE_USAGE_STORAGE_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,						"VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,				"VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,					"VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,						"VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"),
		tcu::Format::BitDesc(VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR,					"VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR"),
		tcu::Format::BitDesc(VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR,					"VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR"),
		tcu::Format::BitDesc(VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR,					"VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR"),
		tcu::Format::BitDesc(VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT,				"VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT"),
		tcu::Format::BitDesc(VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,	"VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"),
		tcu::Format::BitDesc(VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR,					"VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR"),
		tcu::Format::BitDesc(VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR,					"VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR"),
		tcu::Format::BitDesc(VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR,					"VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR"),
		tcu::Format::BitDesc(VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI,					"VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI"),
		tcu::Format::BitDesc(VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV,					"VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV"),
		tcu::Format::BitDesc(VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM,							"VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getMemoryHeapFlagsStr (VkMemoryHeapFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,		"VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"),
		tcu::Format::BitDesc(VK_MEMORY_HEAP_MULTI_INSTANCE_BIT,		"VK_MEMORY_HEAP_MULTI_INSTANCE_BIT"),
		tcu::Format::BitDesc(VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR,	"VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR"),
		tcu::Format::BitDesc(VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM,		"VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getMemoryPropertyFlagsStr (VkMemoryPropertyFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,			"VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"),
		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,			"VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"),
		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,			"VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"),
		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_CACHED_BIT,			"VK_MEMORY_PROPERTY_HOST_CACHED_BIT"),
		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT,		"VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"),
		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_PROTECTED_BIT,				"VK_MEMORY_PROPERTY_PROTECTED_BIT"),
		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD,	"VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD"),
		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD,	"VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD"),
		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV,		"VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV"),
		tcu::Format::BitDesc(VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM,			"VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getQueueFlagsStr (VkQueueFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_QUEUE_GRAPHICS_BIT,			"VK_QUEUE_GRAPHICS_BIT"),
		tcu::Format::BitDesc(VK_QUEUE_COMPUTE_BIT,			"VK_QUEUE_COMPUTE_BIT"),
		tcu::Format::BitDesc(VK_QUEUE_TRANSFER_BIT,			"VK_QUEUE_TRANSFER_BIT"),
		tcu::Format::BitDesc(VK_QUEUE_SPARSE_BINDING_BIT,	"VK_QUEUE_SPARSE_BINDING_BIT"),
		tcu::Format::BitDesc(VK_QUEUE_PROTECTED_BIT,		"VK_QUEUE_PROTECTED_BIT"),
		tcu::Format::BitDesc(VK_QUEUE_VIDEO_DECODE_BIT_KHR,	"VK_QUEUE_VIDEO_DECODE_BIT_KHR"),
		tcu::Format::BitDesc(VK_QUEUE_VIDEO_ENCODE_BIT_KHR,	"VK_QUEUE_VIDEO_ENCODE_BIT_KHR"),
		tcu::Format::BitDesc(VK_QUEUE_FLAG_BITS_MAX_ENUM,	"VK_QUEUE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getDeviceQueueCreateFlagsStr (VkDeviceQueueCreateFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT,		"VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT"),
		tcu::Format::BitDesc(VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM,	"VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getPipelineStageFlagsStr (VkPipelineStageFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,								"VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,							"VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,							"VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,							"VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,				"VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,			"VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,							"VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,							"VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,					"VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,						"VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,					"VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,							"VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_TRANSFER_BIT,								"VK_PIPELINE_STAGE_TRANSFER_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,							"VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_HOST_BIT,									"VK_PIPELINE_STAGE_HOST_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,							"VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,							"VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_NONE,										"VK_PIPELINE_STAGE_NONE"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT,					"VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT,				"VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,		"VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR,					"VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV,							"VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV,							"VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT,			"VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,	"VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV,					"VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV,					"VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV,					"VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV,			"VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_NONE_KHR,									"VK_PIPELINE_STAGE_NONE_KHR"),
		tcu::Format::BitDesc(VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM,							"VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getSparseMemoryBindFlagsStr (VkSparseMemoryBindFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_SPARSE_MEMORY_BIND_METADATA_BIT,		"VK_SPARSE_MEMORY_BIND_METADATA_BIT"),
		tcu::Format::BitDesc(VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM,	"VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getSparseImageFormatFlagsStr (VkSparseImageFormatFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,			"VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT"),
		tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,		"VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT"),
		tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT,	"VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT"),
		tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM,			"VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getFenceCreateFlagsStr (VkFenceCreateFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_FENCE_CREATE_SIGNALED_BIT,			"VK_FENCE_CREATE_SIGNALED_BIT"),
		tcu::Format::BitDesc(VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM,	"VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getEventCreateFlagsStr (VkEventCreateFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_EVENT_CREATE_DEVICE_ONLY_BIT,		"VK_EVENT_CREATE_DEVICE_ONLY_BIT"),
		tcu::Format::BitDesc(VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR,	"VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR"),
		tcu::Format::BitDesc(VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM,	"VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getQueryPipelineStatisticFlagsStr (VkQueryPipelineStatisticFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,						"VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT"),
		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,						"VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT"),
		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,						"VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT"),
		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,					"VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT"),
		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,					"VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT"),
		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,							"VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT"),
		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,							"VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT"),
		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,					"VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT"),
		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,			"VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT"),
		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,	"VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT"),
		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT,					"VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT"),
		tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM,								"VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getQueryResultFlagsStr (VkQueryResultFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_QUERY_RESULT_64_BIT,				"VK_QUERY_RESULT_64_BIT"),
		tcu::Format::BitDesc(VK_QUERY_RESULT_WAIT_BIT,				"VK_QUERY_RESULT_WAIT_BIT"),
		tcu::Format::BitDesc(VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,	"VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"),
		tcu::Format::BitDesc(VK_QUERY_RESULT_PARTIAL_BIT,			"VK_QUERY_RESULT_PARTIAL_BIT"),
		tcu::Format::BitDesc(VK_QUERY_RESULT_WITH_STATUS_BIT_KHR,	"VK_QUERY_RESULT_WITH_STATUS_BIT_KHR"),
		tcu::Format::BitDesc(VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM,	"VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getBufferCreateFlagsStr (VkBufferCreateFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_BINDING_BIT,						"VK_BUFFER_CREATE_SPARSE_BINDING_BIT"),
		tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,						"VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"),
		tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_ALIASED_BIT,						"VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"),
		tcu::Format::BitDesc(VK_BUFFER_CREATE_PROTECTED_BIT,							"VK_BUFFER_CREATE_PROTECTED_BIT"),
		tcu::Format::BitDesc(VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,		"VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"),
		tcu::Format::BitDesc(VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT,	"VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT"),
		tcu::Format::BitDesc(VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR,	"VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"),
		tcu::Format::BitDesc(VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM,						"VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getBufferUsageFlagsStr (VkBufferUsageFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_SRC_BIT,										"VK_BUFFER_USAGE_TRANSFER_SRC_BIT"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_DST_BIT,										"VK_BUFFER_USAGE_TRANSFER_DST_BIT"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,								"VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,								"VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,									"VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,									"VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_INDEX_BUFFER_BIT,										"VK_BUFFER_USAGE_INDEX_BUFFER_BIT"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,										"VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT,									"VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,								"VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR,								"VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR,								"VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT,						"VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT,				"VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT,							"VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR,	"VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR,				"VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR,							"VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR,								"VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR,								"VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_RAY_TRACING_BIT_NV,									"VK_BUFFER_USAGE_RAY_TRACING_BIT_NV"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT,							"VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR,							"VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR"),
		tcu::Format::BitDesc(VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM,									"VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getImageViewCreateFlagsStr (VkImageViewCreateFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT,		"VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT"),
		tcu::Format::BitDesc(VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT,	"VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT"),
		tcu::Format::BitDesc(VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM,						"VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getPipelineCacheCreateFlagsStr (VkPipelineCacheCreateFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT,		"VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT,	"VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT"),
		tcu::Format::BitDesc(VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM,				"VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getColorComponentFlagsStr (VkColorComponentFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_COLOR_COMPONENT_R_BIT,				"VK_COLOR_COMPONENT_R_BIT"),
		tcu::Format::BitDesc(VK_COLOR_COMPONENT_G_BIT,				"VK_COLOR_COMPONENT_G_BIT"),
		tcu::Format::BitDesc(VK_COLOR_COMPONENT_B_BIT,				"VK_COLOR_COMPONENT_B_BIT"),
		tcu::Format::BitDesc(VK_COLOR_COMPONENT_A_BIT,				"VK_COLOR_COMPONENT_A_BIT"),
		tcu::Format::BitDesc(VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM,	"VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getPipelineCreateFlagsStr (VkPipelineCreateFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,										"VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,											"VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_DERIVATIVE_BIT,													"VK_PIPELINE_CREATE_DERIVATIVE_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,								"VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISPATCH_BASE_BIT,												"VK_PIPELINE_CREATE_DISPATCH_BASE_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT,							"VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT,									"VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,				"VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT,				"VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR,					"VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR,				"VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR,						"VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR,				"VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR,								"VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR,									"VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR,			"VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV,											"VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR,										"VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR,						"VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV,										"VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_LIBRARY_BIT_KHR,												"VK_PIPELINE_CREATE_LIBRARY_BIT_KHR"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV,								"VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISPATCH_BASE,													"VK_PIPELINE_CREATE_DISPATCH_BASE"),
		tcu::Format::BitDesc(VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,	"VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"),
		tcu::Format::BitDesc(VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT,	"VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR,							"VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISPATCH_BASE_KHR,												"VK_PIPELINE_CREATE_DISPATCH_BASE_KHR"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT,						"VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT,								"VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM,												"VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getPipelineShaderStageCreateFlagsStr (VkPipelineShaderStageCreateFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT,		"VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT,			"VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT"),
		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"),
		tcu::Format::BitDesc(VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT,		"VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT"),
		tcu::Format::BitDesc(VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM,					"VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getShaderStageFlagsStr (VkShaderStageFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_SHADER_STAGE_VERTEX_BIT,					"VK_SHADER_STAGE_VERTEX_BIT"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,		"VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,	"VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_GEOMETRY_BIT,					"VK_SHADER_STAGE_GEOMETRY_BIT"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_FRAGMENT_BIT,					"VK_SHADER_STAGE_FRAGMENT_BIT"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_COMPUTE_BIT,					"VK_SHADER_STAGE_COMPUTE_BIT"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_ALL_GRAPHICS,					"VK_SHADER_STAGE_ALL_GRAPHICS"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_ALL,							"VK_SHADER_STAGE_ALL"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_RAYGEN_BIT_KHR,				"VK_SHADER_STAGE_RAYGEN_BIT_KHR"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_ANY_HIT_BIT_KHR,				"VK_SHADER_STAGE_ANY_HIT_BIT_KHR"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR,			"VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_MISS_BIT_KHR,					"VK_SHADER_STAGE_MISS_BIT_KHR"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_INTERSECTION_BIT_KHR,			"VK_SHADER_STAGE_INTERSECTION_BIT_KHR"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_CALLABLE_BIT_KHR,				"VK_SHADER_STAGE_CALLABLE_BIT_KHR"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_TASK_BIT_NV,					"VK_SHADER_STAGE_TASK_BIT_NV"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_MESH_BIT_NV,					"VK_SHADER_STAGE_MESH_BIT_NV"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI,	"VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_RAYGEN_BIT_NV,					"VK_SHADER_STAGE_RAYGEN_BIT_NV"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_ANY_HIT_BIT_NV,				"VK_SHADER_STAGE_ANY_HIT_BIT_NV"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV,			"VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_MISS_BIT_NV,					"VK_SHADER_STAGE_MISS_BIT_NV"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_INTERSECTION_BIT_NV,			"VK_SHADER_STAGE_INTERSECTION_BIT_NV"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_CALLABLE_BIT_NV,				"VK_SHADER_STAGE_CALLABLE_BIT_NV"),
		tcu::Format::BitDesc(VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM,			"VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getCullModeFlagsStr (VkCullModeFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_CULL_MODE_NONE,					"VK_CULL_MODE_NONE"),
		tcu::Format::BitDesc(VK_CULL_MODE_FRONT_BIT,			"VK_CULL_MODE_FRONT_BIT"),
		tcu::Format::BitDesc(VK_CULL_MODE_BACK_BIT,				"VK_CULL_MODE_BACK_BIT"),
		tcu::Format::BitDesc(VK_CULL_MODE_FRONT_AND_BACK,		"VK_CULL_MODE_FRONT_AND_BACK"),
		tcu::Format::BitDesc(VK_CULL_MODE_FLAG_BITS_MAX_ENUM,	"VK_CULL_MODE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getPipelineDepthStencilStateCreateFlagsStr (VkPipelineDepthStencilStateCreateFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM,	"VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM"),
		tcu::Format::BitDesc(VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM,	"VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM"),
		tcu::Format::BitDesc(VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_FLAG_BITS_MAX_ENUM,										"VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getPipelineColorBlendStateCreateFlagsStr (VkPipelineColorBlendStateCreateFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM,	"VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM"),
		tcu::Format::BitDesc(VK_PIPELINE_COLOR_BLEND_STATE_CREATE_FLAG_BITS_MAX_ENUM,								"VK_PIPELINE_COLOR_BLEND_STATE_CREATE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getSamplerCreateFlagsStr (VkSamplerCreateFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT,							"VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT"),
		tcu::Format::BitDesc(VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT,	"VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT"),
		tcu::Format::BitDesc(VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM,							"VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getDescriptorPoolCreateFlagsStr (VkDescriptorPoolCreateFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT,		"VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"),
		tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT,		"VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT"),
		tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE,			"VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE"),
		tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT,	"VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT"),
		tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM,			"VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getDescriptorSetLayoutCreateFlagsStr (VkDescriptorSetLayoutCreateFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT,		"VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT"),
		tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR,			"VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR"),
		tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE,			"VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE"),
		tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT,	"VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT"),
		tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM,				"VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getAttachmentDescriptionFlagsStr (VkAttachmentDescriptionFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT,		"VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"),
		tcu::Format::BitDesc(VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM,	"VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getDependencyFlagsStr (VkDependencyFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_DEPENDENCY_BY_REGION_BIT,			"VK_DEPENDENCY_BY_REGION_BIT"),
		tcu::Format::BitDesc(VK_DEPENDENCY_DEVICE_GROUP_BIT,		"VK_DEPENDENCY_DEVICE_GROUP_BIT"),
		tcu::Format::BitDesc(VK_DEPENDENCY_VIEW_LOCAL_BIT,			"VK_DEPENDENCY_VIEW_LOCAL_BIT"),
		tcu::Format::BitDesc(VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR,		"VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR"),
		tcu::Format::BitDesc(VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR,	"VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR"),
		tcu::Format::BitDesc(VK_DEPENDENCY_FLAG_BITS_MAX_ENUM,		"VK_DEPENDENCY_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getFramebufferCreateFlagsStr (VkFramebufferCreateFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT,		"VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT"),
		tcu::Format::BitDesc(VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR,	"VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR"),
		tcu::Format::BitDesc(VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM,	"VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getRenderPassCreateFlagsStr (VkRenderPassCreateFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM,	"VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM"),
		tcu::Format::BitDesc(VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM,	"VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getSubpassDescriptionFlagsStr (VkSubpassDescriptionFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,							"VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX"),
		tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX,						"VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX"),
		tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM,								"VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM"),
		tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM,								"VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM"),
		tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_ARM,	"VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_ARM"),
		tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM,	"VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM"),
		tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM,	"VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM"),
		tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM,										"VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getCommandPoolCreateFlagsStr (VkCommandPoolCreateFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,				"VK_COMMAND_POOL_CREATE_TRANSIENT_BIT"),
		tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT,	"VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"),
		tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_PROTECTED_BIT,				"VK_COMMAND_POOL_CREATE_PROTECTED_BIT"),
		tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM,			"VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getCommandPoolResetFlagsStr (VkCommandPoolResetFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT,	"VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"),
		tcu::Format::BitDesc(VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM,		"VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getCommandBufferUsageFlagsStr (VkCommandBufferUsageFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,		"VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"),
		tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,	"VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"),
		tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT,		"VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"),
		tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM,		"VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getQueryControlFlagsStr (VkQueryControlFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_QUERY_CONTROL_PRECISE_BIT,			"VK_QUERY_CONTROL_PRECISE_BIT"),
		tcu::Format::BitDesc(VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM,	"VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getCommandBufferResetFlagsStr (VkCommandBufferResetFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT,	"VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT"),
		tcu::Format::BitDesc(VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM,	"VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getStencilFaceFlagsStr (VkStencilFaceFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_STENCIL_FACE_FRONT_BIT,				"VK_STENCIL_FACE_FRONT_BIT"),
		tcu::Format::BitDesc(VK_STENCIL_FACE_BACK_BIT,				"VK_STENCIL_FACE_BACK_BIT"),
		tcu::Format::BitDesc(VK_STENCIL_FACE_FRONT_AND_BACK,		"VK_STENCIL_FACE_FRONT_AND_BACK"),
		tcu::Format::BitDesc(VK_STENCIL_FRONT_AND_BACK,				"VK_STENCIL_FRONT_AND_BACK"),
		tcu::Format::BitDesc(VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM,	"VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getSubgroupFeatureFlagsStr (VkSubgroupFeatureFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_BASIC_BIT,				"VK_SUBGROUP_FEATURE_BASIC_BIT"),
		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_VOTE_BIT,				"VK_SUBGROUP_FEATURE_VOTE_BIT"),
		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_ARITHMETIC_BIT,		"VK_SUBGROUP_FEATURE_ARITHMETIC_BIT"),
		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_BALLOT_BIT,			"VK_SUBGROUP_FEATURE_BALLOT_BIT"),
		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_SHUFFLE_BIT,			"VK_SUBGROUP_FEATURE_SHUFFLE_BIT"),
		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT,	"VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"),
		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_CLUSTERED_BIT,			"VK_SUBGROUP_FEATURE_CLUSTERED_BIT"),
		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_QUAD_BIT,				"VK_SUBGROUP_FEATURE_QUAD_BIT"),
		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV,	"VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV"),
		tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM,	"VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getPeerMemoryFeatureFlagsStr (VkPeerMemoryFeatureFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT,			"VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT"),
		tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_COPY_DST_BIT,			"VK_PEER_MEMORY_FEATURE_COPY_DST_BIT"),
		tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT,		"VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT"),
		tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT,		"VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT"),
		tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR,		"VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR"),
		tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR,		"VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR"),
		tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR,	"VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR"),
		tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR,	"VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR"),
		tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM,		"VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getMemoryAllocateFlagsStr (VkMemoryAllocateFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,						"VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"),
		tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT,						"VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT"),
		tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,		"VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"),
		tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR,					"VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR"),
		tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR,					"VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR"),
		tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR,	"VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"),
		tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM,						"VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getExternalMemoryHandleTypeFlagsStr (VkExternalMemoryHandleTypeFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,							"VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,						"VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,					"VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,						"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,					"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT,							"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT,						"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT,						"VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID,	"VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT,				"VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT"),
		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"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA,					"VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV,					"VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,						"VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,					"VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,				"VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR,					"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR,				"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR,						"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR,					"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM,						"VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getExternalMemoryFeatureFlagsStr (VkExternalMemoryFeatureFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT,		"VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT,			"VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT,			"VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR,	"VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR,		"VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR,		"VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM,		"VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getExternalFenceHandleTypeFlagsStr (VkExternalFenceHandleTypeFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,				"VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT,			"VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,		"VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT,					"VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,			"VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,		"VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,	"VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR,				"VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM,			"VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getExternalFenceFeatureFlagsStr (VkExternalFenceFeatureFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT,		"VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT,		"VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR,	"VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR,	"VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM,	"VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getFenceImportFlagsStr (VkFenceImportFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_FENCE_IMPORT_TEMPORARY_BIT,			"VK_FENCE_IMPORT_TEMPORARY_BIT"),
		tcu::Format::BitDesc(VK_FENCE_IMPORT_TEMPORARY_BIT_KHR,		"VK_FENCE_IMPORT_TEMPORARY_BIT_KHR"),
		tcu::Format::BitDesc(VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM,	"VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getSemaphoreImportFlagsStr (VkSemaphoreImportFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_SEMAPHORE_IMPORT_TEMPORARY_BIT,			"VK_SEMAPHORE_IMPORT_TEMPORARY_BIT"),
		tcu::Format::BitDesc(VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR,		"VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR"),
		tcu::Format::BitDesc(VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM,	"VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getExternalSemaphoreHandleTypeFlagsStr (VkExternalSemaphoreHandleTypeFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,				"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT,			"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,		"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,				"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT,					"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA,	"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA"),
		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT,				"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,			"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,		"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,	"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR,			"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR,				"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM,			"VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getExternalSemaphoreFeatureFlagsStr (VkExternalSemaphoreFeatureFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT,		"VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT,		"VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"),
		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR,	"VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR,	"VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR"),
		tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM,	"VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getResolveModeFlagsStr (VkResolveModeFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_RESOLVE_MODE_NONE,					"VK_RESOLVE_MODE_NONE"),
		tcu::Format::BitDesc(VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,		"VK_RESOLVE_MODE_SAMPLE_ZERO_BIT"),
		tcu::Format::BitDesc(VK_RESOLVE_MODE_AVERAGE_BIT,			"VK_RESOLVE_MODE_AVERAGE_BIT"),
		tcu::Format::BitDesc(VK_RESOLVE_MODE_MIN_BIT,				"VK_RESOLVE_MODE_MIN_BIT"),
		tcu::Format::BitDesc(VK_RESOLVE_MODE_MAX_BIT,				"VK_RESOLVE_MODE_MAX_BIT"),
		tcu::Format::BitDesc(VK_RESOLVE_MODE_NONE_KHR,				"VK_RESOLVE_MODE_NONE_KHR"),
		tcu::Format::BitDesc(VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR,	"VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR"),
		tcu::Format::BitDesc(VK_RESOLVE_MODE_AVERAGE_BIT_KHR,		"VK_RESOLVE_MODE_AVERAGE_BIT_KHR"),
		tcu::Format::BitDesc(VK_RESOLVE_MODE_MIN_BIT_KHR,			"VK_RESOLVE_MODE_MIN_BIT_KHR"),
		tcu::Format::BitDesc(VK_RESOLVE_MODE_MAX_BIT_KHR,			"VK_RESOLVE_MODE_MAX_BIT_KHR"),
		tcu::Format::BitDesc(VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM,	"VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getDescriptorBindingFlagsStr (VkDescriptorBindingFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT,				"VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT"),
		tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT,		"VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT"),
		tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT,					"VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT"),
		tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT,		"VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT"),
		tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT,			"VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT"),
		tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT,	"VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT"),
		tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT,				"VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT"),
		tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT,	"VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT"),
		tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM,					"VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getSemaphoreWaitFlagsStr (VkSemaphoreWaitFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_ANY_BIT,				"VK_SEMAPHORE_WAIT_ANY_BIT"),
		tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_ANY_BIT_KHR,			"VK_SEMAPHORE_WAIT_ANY_BIT_KHR"),
		tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM,	"VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getPipelineCreationFeedbackFlagsStr (VkPipelineCreationFeedbackFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT,								"VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT,		"VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT,			"VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT,							"VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT,	"VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT,		"VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT"),
		tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM,						"VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getToolPurposeFlagsStr (VkToolPurposeFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_TOOL_PURPOSE_VALIDATION_BIT,				"VK_TOOL_PURPOSE_VALIDATION_BIT"),
		tcu::Format::BitDesc(VK_TOOL_PURPOSE_PROFILING_BIT,					"VK_TOOL_PURPOSE_PROFILING_BIT"),
		tcu::Format::BitDesc(VK_TOOL_PURPOSE_TRACING_BIT,					"VK_TOOL_PURPOSE_TRACING_BIT"),
		tcu::Format::BitDesc(VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT,		"VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT"),
		tcu::Format::BitDesc(VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT,		"VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT"),
		tcu::Format::BitDesc(VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT,		"VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT"),
		tcu::Format::BitDesc(VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT,			"VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT"),
		tcu::Format::BitDesc(VK_TOOL_PURPOSE_VALIDATION_BIT_EXT,			"VK_TOOL_PURPOSE_VALIDATION_BIT_EXT"),
		tcu::Format::BitDesc(VK_TOOL_PURPOSE_PROFILING_BIT_EXT,				"VK_TOOL_PURPOSE_PROFILING_BIT_EXT"),
		tcu::Format::BitDesc(VK_TOOL_PURPOSE_TRACING_BIT_EXT,				"VK_TOOL_PURPOSE_TRACING_BIT_EXT"),
		tcu::Format::BitDesc(VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT,	"VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT"),
		tcu::Format::BitDesc(VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT,	"VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT"),
		tcu::Format::BitDesc(VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM,			"VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getPrivateDataSlotCreateFlagsStr (VkPrivateDataSlotCreateFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM,	"VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getSubmitFlagsStr (VkSubmitFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_SUBMIT_PROTECTED_BIT,		"VK_SUBMIT_PROTECTED_BIT"),
		tcu::Format::BitDesc(VK_SUBMIT_PROTECTED_BIT_KHR,	"VK_SUBMIT_PROTECTED_BIT_KHR"),
		tcu::Format::BitDesc(VK_SUBMIT_FLAG_BITS_MAX_ENUM,	"VK_SUBMIT_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getRenderingFlagsStr (VkRenderingFlags value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT,		"VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT"),
		tcu::Format::BitDesc(VK_RENDERING_SUSPENDING_BIT,								"VK_RENDERING_SUSPENDING_BIT"),
		tcu::Format::BitDesc(VK_RENDERING_RESUMING_BIT,									"VK_RENDERING_RESUMING_BIT"),
		tcu::Format::BitDesc(VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR,	"VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR"),
		tcu::Format::BitDesc(VK_RENDERING_SUSPENDING_BIT_KHR,							"VK_RENDERING_SUSPENDING_BIT_KHR"),
		tcu::Format::BitDesc(VK_RENDERING_RESUMING_BIT_KHR,								"VK_RENDERING_RESUMING_BIT_KHR"),
		tcu::Format::BitDesc(VK_RENDERING_FLAG_BITS_MAX_ENUM,							"VK_RENDERING_FLAG_BITS_MAX_ENUM"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getSurfaceTransformFlagsKHRStr (VkSurfaceTransformFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,						"VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR"),
		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,					"VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"),
		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,					"VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"),
		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,					"VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"),
		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,			"VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"),
		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,	"VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"),
		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,	"VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"),
		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,	"VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"),
		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR,						"VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"),
		tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR,				"VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getCompositeAlphaFlagsKHRStr (VkCompositeAlphaFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,				"VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"),
		tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,		"VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"),
		tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,	"VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"),
		tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR,			"VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"),
		tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR,		"VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getSwapchainCreateFlagsKHRStr (VkSwapchainCreateFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR,	"VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR"),
		tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR,						"VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR"),
		tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR,				"VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR"),
		tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR,				"VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getDeviceGroupPresentModeFlagsKHRStr (VkDeviceGroupPresentModeFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR,				"VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR"),
		tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR,				"VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR"),
		tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR,					"VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR"),
		tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR,	"VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR"),
		tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR,		"VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getDisplayPlaneAlphaFlagsKHRStr (VkDisplayPlaneAlphaFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,						"VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"),
		tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,						"VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"),
		tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,					"VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"),
		tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR,	"VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"),
		tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR,				"VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getPerformanceCounterDescriptionFlagsKHRStr (VkPerformanceCounterDescriptionFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR,	"VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR"),
		tcu::Format::BitDesc(VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR,	"VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR"),
		tcu::Format::BitDesc(VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR,		"VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR"),
		tcu::Format::BitDesc(VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR,		"VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR"),
		tcu::Format::BitDesc(VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR,			"VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getAcquireProfilingLockFlagsKHRStr (VkAcquireProfilingLockFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR,	"VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getDebugReportFlagsEXTStr (VkDebugReportFlagsEXT value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_DEBUG_REPORT_INFORMATION_BIT_EXT,			"VK_DEBUG_REPORT_INFORMATION_BIT_EXT"),
		tcu::Format::BitDesc(VK_DEBUG_REPORT_WARNING_BIT_EXT,				"VK_DEBUG_REPORT_WARNING_BIT_EXT"),
		tcu::Format::BitDesc(VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,	"VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT"),
		tcu::Format::BitDesc(VK_DEBUG_REPORT_ERROR_BIT_EXT,					"VK_DEBUG_REPORT_ERROR_BIT_EXT"),
		tcu::Format::BitDesc(VK_DEBUG_REPORT_DEBUG_BIT_EXT,					"VK_DEBUG_REPORT_DEBUG_BIT_EXT"),
		tcu::Format::BitDesc(VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT,		"VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getExternalMemoryHandleTypeFlagsNVStr (VkExternalMemoryHandleTypeFlagsNV value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,		"VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,	"VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,			"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV,		"VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV,		"VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getExternalMemoryFeatureFlagsNVStr (VkExternalMemoryFeatureFlagsNV value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,	"VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,		"VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV,		"VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV"),
		tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV,	"VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getConditionalRenderingFlagsEXTStr (VkConditionalRenderingFlagsEXT value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT,			"VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT"),
		tcu::Format::BitDesc(VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT,	"VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getSurfaceCounterFlagsEXTStr (VkSurfaceCounterFlagsEXT value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_SURFACE_COUNTER_VBLANK_BIT_EXT,			"VK_SURFACE_COUNTER_VBLANK_BIT_EXT"),
		tcu::Format::BitDesc(VK_SURFACE_COUNTER_VBLANK_EXT,				"VK_SURFACE_COUNTER_VBLANK_EXT"),
		tcu::Format::BitDesc(VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT,	"VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getDebugUtilsMessageSeverityFlagsEXTStr (VkDebugUtilsMessageSeverityFlagsEXT value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT,			"VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT"),
		tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT,				"VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT"),
		tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT,			"VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT"),
		tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT,				"VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT"),
		tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT,	"VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getDebugUtilsMessageTypeFlagsEXTStr (VkDebugUtilsMessageTypeFlagsEXT value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT,			"VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT"),
		tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT,		"VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT"),
		tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT,		"VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT"),
		tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT,	"VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getGeometryFlagsKHRStr (VkGeometryFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_GEOMETRY_OPAQUE_BIT_KHR,							"VK_GEOMETRY_OPAQUE_BIT_KHR"),
		tcu::Format::BitDesc(VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR,	"VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR"),
		tcu::Format::BitDesc(VK_GEOMETRY_OPAQUE_BIT_NV,								"VK_GEOMETRY_OPAQUE_BIT_NV"),
		tcu::Format::BitDesc(VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV,	"VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV"),
		tcu::Format::BitDesc(VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR,					"VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getGeometryInstanceFlagsKHRStr (VkGeometryInstanceFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR,		"VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR"),
		tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR,				"VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR"),
		tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR,						"VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR"),
		tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR,					"VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR"),
		tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR,	"VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR"),
		tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV,				"VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV"),
		tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV,	"VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV"),
		tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV,						"VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV"),
		tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV,					"VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV"),
		tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR,					"VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getBuildAccelerationStructureFlagsKHRStr (VkBuildAccelerationStructureFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR,		"VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR,	"VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR,	"VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR,	"VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR,		"VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV,				"VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV,		"VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV,	"VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV,	"VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV,	"VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV,			"VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR,	"VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getPipelineCompilerControlFlagsAMDStr (VkPipelineCompilerControlFlagsAMD value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD,	"VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getShaderCorePropertiesFlagsAMDStr (VkShaderCorePropertiesFlagsAMD value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD,	"VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getIndirectStateFlagsNVStr (VkIndirectStateFlagsNV value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV,	"VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV"),
		tcu::Format::BitDesc(VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV,	"VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getIndirectCommandsLayoutUsageFlagsNVStr (VkIndirectCommandsLayoutUsageFlagsNV value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV,	"VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV"),
		tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV,	"VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV"),
		tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV,	"VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV"),
		tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV,		"VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getDeviceDiagnosticsConfigFlagsNVStr (VkDeviceDiagnosticsConfigFlagsNV value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV,		"VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV"),
		tcu::Format::BitDesc(VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV,		"VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV"),
		tcu::Format::BitDesc(VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV,	"VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV"),
		tcu::Format::BitDesc(VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV,				"VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getAccelerationStructureCreateFlagsKHRStr (VkAccelerationStructureCreateFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR,	"VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"),
		tcu::Format::BitDesc(VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV,							"VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV"),
		tcu::Format::BitDesc(VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR,					"VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getVideoCodecOperationFlagsKHRStr (VkVideoCodecOperationFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_VIDEO_CODEC_OPERATION_INVALID_BIT_KHR,			"VK_VIDEO_CODEC_OPERATION_INVALID_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT,		"VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT,		"VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT,		"VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT,		"VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR,	"VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getVideoChromaSubsamplingFlagsKHRStr (VkVideoChromaSubsamplingFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_BIT_KHR,			"VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR,		"VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR,				"VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR,				"VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR,				"VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR,	"VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getVideoComponentBitDepthFlagsKHRStr (VkVideoComponentBitDepthFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR,				"VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR,				"VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR,				"VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR,				"VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR,	"VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getVideoCapabilityFlagsKHRStr (VkVideoCapabilityFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR,			"VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR,	"VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR,			"VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getVideoSessionCreateFlagsKHRStr (VkVideoSessionCreateFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_VIDEO_SESSION_CREATE_DEFAULT_KHR,				"VK_VIDEO_SESSION_CREATE_DEFAULT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR,	"VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR,	"VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getVideoCodingControlFlagsKHRStr (VkVideoCodingControlFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_VIDEO_CODING_CONTROL_DEFAULT_KHR,				"VK_VIDEO_CODING_CONTROL_DEFAULT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR,				"VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR,	"VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getVideoCodingQualityPresetFlagsKHRStr (VkVideoCodingQualityPresetFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_VIDEO_CODING_QUALITY_PRESET_NORMAL_BIT_KHR,			"VK_VIDEO_CODING_QUALITY_PRESET_NORMAL_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_CODING_QUALITY_PRESET_POWER_BIT_KHR,			"VK_VIDEO_CODING_QUALITY_PRESET_POWER_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_CODING_QUALITY_PRESET_QUALITY_BIT_KHR,		"VK_VIDEO_CODING_QUALITY_PRESET_QUALITY_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_CODING_QUALITY_PRESET_FLAG_BITS_MAX_ENUM_KHR,	"VK_VIDEO_CODING_QUALITY_PRESET_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getVideoDecodeFlagsKHRStr (VkVideoDecodeFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_VIDEO_DECODE_DEFAULT_KHR,				"VK_VIDEO_DECODE_DEFAULT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_DECODE_RESERVED_0_BIT_KHR,		"VK_VIDEO_DECODE_RESERVED_0_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_DECODE_FLAG_BITS_MAX_ENUM_KHR,	"VK_VIDEO_DECODE_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getVideoEncodeFlagsKHRStr (VkVideoEncodeFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_DEFAULT_KHR,				"VK_VIDEO_ENCODE_DEFAULT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_RESERVED_0_BIT_KHR,		"VK_VIDEO_ENCODE_RESERVED_0_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR,	"VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getVideoEncodeRateControlFlagsKHRStr (VkVideoEncodeRateControlFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_RATE_CONTROL_DEFAULT_KHR,				"VK_VIDEO_ENCODE_RATE_CONTROL_DEFAULT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_RATE_CONTROL_RESERVED_0_BIT_KHR,		"VK_VIDEO_ENCODE_RATE_CONTROL_RESERVED_0_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR,	"VK_VIDEO_ENCODE_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getVideoEncodeRateControlModeFlagsKHRStr (VkVideoEncodeRateControlModeFlagsKHR value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR,			"VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR,				"VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR,				"VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR,	"VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getVideoEncodeH264CapabilityFlagsEXTStr (VkVideoEncodeH264CapabilityFlagsEXT value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT,							"VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT,							"VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BI_PRED_IMPLICIT_BIT_EXT,		"VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BI_PRED_IMPLICIT_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT,					"VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT,				"VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT,		"VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT,	"VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT,		"VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT,		"VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT,		"VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_EVENLY_DISTRIBUTED_SLICE_SIZE_BIT_EXT,	"VK_VIDEO_ENCODE_H264_CAPABILITY_EVENLY_DISTRIBUTED_SLICE_SIZE_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT,				"VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getVideoEncodeH264InputModeFlagsEXTStr (VkVideoEncodeH264InputModeFlagsEXT value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT,				"VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT,				"VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT,			"VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT,	"VK_VIDEO_ENCODE_H264_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getVideoEncodeH264OutputModeFlagsEXTStr (VkVideoEncodeH264OutputModeFlagsEXT value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT,			"VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT,			"VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT,			"VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT,	"VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getVideoEncodeH264CreateFlagsEXTStr (VkVideoEncodeH264CreateFlagsEXT value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CREATE_DEFAULT_EXT,				"VK_VIDEO_ENCODE_H264_CREATE_DEFAULT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXT,		"VK_VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_CREATE_FLAG_BITS_MAX_ENUM_EXT,	"VK_VIDEO_ENCODE_H264_CREATE_FLAG_BITS_MAX_ENUM_EXT"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getVideoEncodeH264RateControlStructureFlagsEXTStr (VkVideoEncodeH264RateControlStructureFlagsEXT value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT,				"VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT,				"VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT,			"VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAG_BITS_MAX_ENUM_EXT,	"VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAG_BITS_MAX_ENUM_EXT"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getVideoEncodeH265InputModeFlagsEXTStr (VkVideoEncodeH265InputModeFlagsEXT value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT,				"VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_BIT_EXT,				"VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT,			"VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H265_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT,	"VK_VIDEO_ENCODE_H265_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getVideoEncodeH265OutputModeFlagsEXTStr (VkVideoEncodeH265OutputModeFlagsEXT value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT,			"VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_BIT_EXT,			"VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT,			"VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT,	"VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getVideoEncodeH265CtbSizeFlagsEXTStr (VkVideoEncodeH265CtbSizeFlagsEXT value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H265_CTB_SIZE_8_BIT_EXT,				"VK_VIDEO_ENCODE_H265_CTB_SIZE_8_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT,				"VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT,				"VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT,				"VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_EXT,	"VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_EXT"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getVideoEncodeH265RateControlStructureFlagsEXTStr (VkVideoEncodeH265RateControlStructureFlagsEXT value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT,				"VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT,				"VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT,			"VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAG_BITS_MAX_ENUM_EXT,	"VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAG_BITS_MAX_ENUM_EXT"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getVideoDecodeH264PictureLayoutFlagsEXTStr (VkVideoDecodeH264PictureLayoutFlagsEXT value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT,						"VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT,	"VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT,	"VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT"),
		tcu::Format::BitDesc(VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_EXT,				"VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_EXT"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getImageConstraintsInfoFlagsFUCHSIAStr (VkImageConstraintsInfoFlagsFUCHSIA value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA,		"VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA"),
		tcu::Format::BitDesc(VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA,		"VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA"),
		tcu::Format::BitDesc(VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA,	"VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA"),
		tcu::Format::BitDesc(VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA,		"VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA"),
		tcu::Format::BitDesc(VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA,	"VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA"),
		tcu::Format::BitDesc(VK_IMAGE_CONSTRAINTS_INFO_FLAG_BITS_MAX_ENUM_FUCHSIA,	"VK_IMAGE_CONSTRAINTS_INFO_FLAG_BITS_MAX_ENUM_FUCHSIA"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

tcu::Format::Bitfield<32> getInstanceCreateFlagsStr (VkInstanceCreateFlags value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getDeviceCreateFlagsStr (VkDeviceCreateFlags value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getMemoryMapFlagsStr (VkMemoryMapFlags value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getSemaphoreCreateFlagsStr (VkSemaphoreCreateFlags value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getQueryPoolCreateFlagsStr (VkQueryPoolCreateFlags value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getBufferViewCreateFlagsStr (VkBufferViewCreateFlags value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getShaderModuleCreateFlagsStr (VkShaderModuleCreateFlags value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getPipelineVertexInputStateCreateFlagsStr (VkPipelineVertexInputStateCreateFlags value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getPipelineInputAssemblyStateCreateFlagsStr (VkPipelineInputAssemblyStateCreateFlags value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getPipelineTessellationStateCreateFlagsStr (VkPipelineTessellationStateCreateFlags value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getPipelineViewportStateCreateFlagsStr (VkPipelineViewportStateCreateFlags value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getPipelineRasterizationStateCreateFlagsStr (VkPipelineRasterizationStateCreateFlags value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getPipelineMultisampleStateCreateFlagsStr (VkPipelineMultisampleStateCreateFlags value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getPipelineDynamicStateCreateFlagsStr (VkPipelineDynamicStateCreateFlags value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getPipelineLayoutCreateFlagsStr (VkPipelineLayoutCreateFlags value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getDescriptorPoolResetFlagsStr (VkDescriptorPoolResetFlags value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getCommandPoolTrimFlagsStr (VkCommandPoolTrimFlags value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getDescriptorUpdateTemplateCreateFlagsStr (VkDescriptorUpdateTemplateCreateFlags value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getDisplayModeCreateFlagsKHRStr (VkDisplayModeCreateFlagsKHR value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getDisplaySurfaceCreateFlagsKHRStr (VkDisplaySurfaceCreateFlagsKHR value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getPipelineRasterizationStateStreamCreateFlagsEXTStr (VkPipelineRasterizationStateStreamCreateFlagsEXT value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getPipelineViewportSwizzleStateCreateFlagsNVStr (VkPipelineViewportSwizzleStateCreateFlagsNV value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getPipelineDiscardRectangleStateCreateFlagsEXTStr (VkPipelineDiscardRectangleStateCreateFlagsEXT value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getPipelineRasterizationConservativeStateCreateFlagsEXTStr (VkPipelineRasterizationConservativeStateCreateFlagsEXT value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getPipelineRasterizationDepthClipStateCreateFlagsEXTStr (VkPipelineRasterizationDepthClipStateCreateFlagsEXT value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getDebugUtilsMessengerCallbackDataFlagsEXTStr (VkDebugUtilsMessengerCallbackDataFlagsEXT value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getDebugUtilsMessengerCreateFlagsEXTStr (VkDebugUtilsMessengerCreateFlagsEXT value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getPipelineCoverageToColorStateCreateFlagsNVStr (VkPipelineCoverageToColorStateCreateFlagsNV value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getPipelineCoverageModulationStateCreateFlagsNVStr (VkPipelineCoverageModulationStateCreateFlagsNV value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getValidationCacheCreateFlagsEXTStr (VkValidationCacheCreateFlagsEXT value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getPipelineCoverageReductionStateCreateFlagsNVStr (VkPipelineCoverageReductionStateCreateFlagsNV value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getHeadlessSurfaceCreateFlagsEXTStr (VkHeadlessSurfaceCreateFlagsEXT value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getDeviceMemoryReportFlagsEXTStr (VkDeviceMemoryReportFlagsEXT value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getAccelerationStructureMotionInfoFlagsNVStr (VkAccelerationStructureMotionInfoFlagsNV value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getAccelerationStructureMotionInstanceFlagsNVStr (VkAccelerationStructureMotionInstanceFlagsNV value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getAndroidSurfaceCreateFlagsKHRStr (VkAndroidSurfaceCreateFlagsKHR value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getVideoBeginCodingFlagsKHRStr (VkVideoBeginCodingFlagsKHR value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getVideoEndCodingFlagsKHRStr (VkVideoEndCodingFlagsKHR value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getVideoEncodeH265CapabilityFlagsEXTStr (VkVideoEncodeH265CapabilityFlagsEXT value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getVideoEncodeH265CreateFlagsEXTStr (VkVideoEncodeH265CreateFlagsEXT value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getVideoDecodeH264CreateFlagsEXTStr (VkVideoDecodeH264CreateFlagsEXT value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getVideoDecodeH265CreateFlagsEXTStr (VkVideoDecodeH265CreateFlagsEXT value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getImagePipeSurfaceCreateFlagsFUCHSIAStr (VkImagePipeSurfaceCreateFlagsFUCHSIA value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getImageFormatConstraintsFlagsFUCHSIAStr (VkImageFormatConstraintsFlagsFUCHSIA value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getStreamDescriptorSurfaceCreateFlagsGGPStr (VkStreamDescriptorSurfaceCreateFlagsGGP value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getIOSSurfaceCreateFlagsMVKStr (VkIOSSurfaceCreateFlagsMVK value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getMacOSSurfaceCreateFlagsMVKStr (VkMacOSSurfaceCreateFlagsMVK value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getMetalSurfaceCreateFlagsEXTStr (VkMetalSurfaceCreateFlagsEXT value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getViSurfaceCreateFlagsNNStr (VkViSurfaceCreateFlagsNN value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getWaylandSurfaceCreateFlagsKHRStr (VkWaylandSurfaceCreateFlagsKHR value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getWin32SurfaceCreateFlagsKHRStr (VkWin32SurfaceCreateFlagsKHR value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getXcbSurfaceCreateFlagsKHRStr (VkXcbSurfaceCreateFlagsKHR value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getXlibSurfaceCreateFlagsKHRStr (VkXlibSurfaceCreateFlagsKHR value)
{
	return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
}

tcu::Format::Bitfield<32> getBuildAccelerationStructureFlagsNVStr (VkBuildAccelerationStructureFlagsNV value)
{
	static const tcu::Format::BitDesc s_desc[] =
	{
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR,		"VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR,	"VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR,	"VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR,	"VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR,		"VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV,				"VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV,		"VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV,	"VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV,	"VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV,	"VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV,			"VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV"),
		tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR,	"VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR"),
	};
	return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
}

std::ostream& operator<< (std::ostream& s, const VkExtent2D& value)
{
	s << "VkExtent2D = {\n";
	s << "\twidth = " << value.width << '\n';
	s << "\theight = " << value.height << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkExtent3D& value)
{
	s << "VkExtent3D = {\n";
	s << "\twidth = " << value.width << '\n';
	s << "\theight = " << value.height << '\n';
	s << "\tdepth = " << value.depth << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkOffset2D& value)
{
	s << "VkOffset2D = {\n";
	s << "\tx = " << value.x << '\n';
	s << "\ty = " << value.y << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkOffset3D& value)
{
	s << "VkOffset3D = {\n";
	s << "\tx = " << value.x << '\n';
	s << "\ty = " << value.y << '\n';
	s << "\tz = " << value.z << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkRect2D& value)
{
	s << "VkRect2D = {\n";
	s << "\toffset = " << value.offset << '\n';
	s << "\textent = " << value.extent << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBaseInStructure& value)
{
	s << "VkBaseInStructure = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBaseOutStructure& value)
{
	s << "VkBaseOutStructure = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBufferMemoryBarrier& value)
{
	s << "VkBufferMemoryBarrier = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
	s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
	s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
	s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
	s << "\tbuffer = " << value.buffer << '\n';
	s << "\toffset = " << value.offset << '\n';
	s << "\tsize = " << value.size << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDispatchIndirectCommand& value)
{
	s << "VkDispatchIndirectCommand = {\n";
	s << "\tx = " << value.x << '\n';
	s << "\ty = " << value.y << '\n';
	s << "\tz = " << value.z << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDrawIndexedIndirectCommand& value)
{
	s << "VkDrawIndexedIndirectCommand = {\n";
	s << "\tindexCount = " << value.indexCount << '\n';
	s << "\tinstanceCount = " << value.instanceCount << '\n';
	s << "\tfirstIndex = " << value.firstIndex << '\n';
	s << "\tvertexOffset = " << value.vertexOffset << '\n';
	s << "\tfirstInstance = " << value.firstInstance << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDrawIndirectCommand& value)
{
	s << "VkDrawIndirectCommand = {\n";
	s << "\tvertexCount = " << value.vertexCount << '\n';
	s << "\tinstanceCount = " << value.instanceCount << '\n';
	s << "\tfirstVertex = " << value.firstVertex << '\n';
	s << "\tfirstInstance = " << value.firstInstance << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageSubresourceRange& value)
{
	s << "VkImageSubresourceRange = {\n";
	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
	s << "\tbaseMipLevel = " << value.baseMipLevel << '\n';
	s << "\tlevelCount = " << value.levelCount << '\n';
	s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
	s << "\tlayerCount = " << value.layerCount << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageMemoryBarrier& value)
{
	s << "VkImageMemoryBarrier = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
	s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
	s << "\toldLayout = " << value.oldLayout << '\n';
	s << "\tnewLayout = " << value.newLayout << '\n';
	s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
	s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
	s << "\timage = " << value.image << '\n';
	s << "\tsubresourceRange = " << value.subresourceRange << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMemoryBarrier& value)
{
	s << "VkMemoryBarrier = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
	s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineCacheHeaderVersionOne& value)
{
	s << "VkPipelineCacheHeaderVersionOne = {\n";
	s << "\theaderSize = " << value.headerSize << '\n';
	s << "\theaderVersion = " << value.headerVersion << '\n';
	s << "\tvendorID = " << value.vendorID << '\n';
	s << "\tdeviceID = " << value.deviceID << '\n';
	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';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAllocationCallbacks& value)
{
	s << "VkAllocationCallbacks = {\n";
	s << "\tpUserData = " << value.pUserData << '\n';
	s << "\tpfnAllocation = " << value.pfnAllocation << '\n';
	s << "\tpfnReallocation = " << value.pfnReallocation << '\n';
	s << "\tpfnFree = " << value.pfnFree << '\n';
	s << "\tpfnInternalAllocation = " << value.pfnInternalAllocation << '\n';
	s << "\tpfnInternalFree = " << value.pfnInternalFree << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkApplicationInfo& value)
{
	s << "VkApplicationInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpApplicationName = " << getCharPtrStr(value.pApplicationName) << '\n';
	s << "\tapplicationVersion = " << value.applicationVersion << '\n';
	s << "\tpEngineName = " << getCharPtrStr(value.pEngineName) << '\n';
	s << "\tengineVersion = " << value.engineVersion << '\n';
	s << "\tapiVersion = " << value.apiVersion << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkFormatProperties& value)
{
	s << "VkFormatProperties = {\n";
	s << "\tlinearTilingFeatures = " << getFormatFeatureFlagsStr(value.linearTilingFeatures) << '\n';
	s << "\toptimalTilingFeatures = " << getFormatFeatureFlagsStr(value.optimalTilingFeatures) << '\n';
	s << "\tbufferFeatures = " << getFormatFeatureFlagsStr(value.bufferFeatures) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageFormatProperties& value)
{
	s << "VkImageFormatProperties = {\n";
	s << "\tmaxExtent = " << value.maxExtent << '\n';
	s << "\tmaxMipLevels = " << value.maxMipLevels << '\n';
	s << "\tmaxArrayLayers = " << value.maxArrayLayers << '\n';
	s << "\tsampleCounts = " << getSampleCountFlagsStr(value.sampleCounts) << '\n';
	s << "\tmaxResourceSize = " << value.maxResourceSize << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkInstanceCreateInfo& value)
{
	s << "VkInstanceCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getInstanceCreateFlagsStr(value.flags) << '\n';
	s << "\tpApplicationInfo = " << value.pApplicationInfo << '\n';
	s << "\tenabledLayerCount = " << value.enabledLayerCount << '\n';
	s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
	s << "\tenabledExtensionCount = " << value.enabledExtensionCount << '\n';
	s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMemoryHeap& value)
{
	s << "VkMemoryHeap = {\n";
	s << "\tsize = " << value.size << '\n';
	s << "\tflags = " << getMemoryHeapFlagsStr(value.flags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMemoryType& value)
{
	s << "VkMemoryType = {\n";
	s << "\tpropertyFlags = " << getMemoryPropertyFlagsStr(value.propertyFlags) << '\n';
	s << "\theapIndex = " << value.heapIndex << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures& value)
{
	s << "VkPhysicalDeviceFeatures = {\n";
	s << "\trobustBufferAccess = " << value.robustBufferAccess << '\n';
	s << "\tfullDrawIndexUint32 = " << value.fullDrawIndexUint32 << '\n';
	s << "\timageCubeArray = " << value.imageCubeArray << '\n';
	s << "\tindependentBlend = " << value.independentBlend << '\n';
	s << "\tgeometryShader = " << value.geometryShader << '\n';
	s << "\ttessellationShader = " << value.tessellationShader << '\n';
	s << "\tsampleRateShading = " << value.sampleRateShading << '\n';
	s << "\tdualSrcBlend = " << value.dualSrcBlend << '\n';
	s << "\tlogicOp = " << value.logicOp << '\n';
	s << "\tmultiDrawIndirect = " << value.multiDrawIndirect << '\n';
	s << "\tdrawIndirectFirstInstance = " << value.drawIndirectFirstInstance << '\n';
	s << "\tdepthClamp = " << value.depthClamp << '\n';
	s << "\tdepthBiasClamp = " << value.depthBiasClamp << '\n';
	s << "\tfillModeNonSolid = " << value.fillModeNonSolid << '\n';
	s << "\tdepthBounds = " << value.depthBounds << '\n';
	s << "\twideLines = " << value.wideLines << '\n';
	s << "\tlargePoints = " << value.largePoints << '\n';
	s << "\talphaToOne = " << value.alphaToOne << '\n';
	s << "\tmultiViewport = " << value.multiViewport << '\n';
	s << "\tsamplerAnisotropy = " << value.samplerAnisotropy << '\n';
	s << "\ttextureCompressionETC2 = " << value.textureCompressionETC2 << '\n';
	s << "\ttextureCompressionASTC_LDR = " << value.textureCompressionASTC_LDR << '\n';
	s << "\ttextureCompressionBC = " << value.textureCompressionBC << '\n';
	s << "\tocclusionQueryPrecise = " << value.occlusionQueryPrecise << '\n';
	s << "\tpipelineStatisticsQuery = " << value.pipelineStatisticsQuery << '\n';
	s << "\tvertexPipelineStoresAndAtomics = " << value.vertexPipelineStoresAndAtomics << '\n';
	s << "\tfragmentStoresAndAtomics = " << value.fragmentStoresAndAtomics << '\n';
	s << "\tshaderTessellationAndGeometryPointSize = " << value.shaderTessellationAndGeometryPointSize << '\n';
	s << "\tshaderImageGatherExtended = " << value.shaderImageGatherExtended << '\n';
	s << "\tshaderStorageImageExtendedFormats = " << value.shaderStorageImageExtendedFormats << '\n';
	s << "\tshaderStorageImageMultisample = " << value.shaderStorageImageMultisample << '\n';
	s << "\tshaderStorageImageReadWithoutFormat = " << value.shaderStorageImageReadWithoutFormat << '\n';
	s << "\tshaderStorageImageWriteWithoutFormat = " << value.shaderStorageImageWriteWithoutFormat << '\n';
	s << "\tshaderUniformBufferArrayDynamicIndexing = " << value.shaderUniformBufferArrayDynamicIndexing << '\n';
	s << "\tshaderSampledImageArrayDynamicIndexing = " << value.shaderSampledImageArrayDynamicIndexing << '\n';
	s << "\tshaderStorageBufferArrayDynamicIndexing = " << value.shaderStorageBufferArrayDynamicIndexing << '\n';
	s << "\tshaderStorageImageArrayDynamicIndexing = " << value.shaderStorageImageArrayDynamicIndexing << '\n';
	s << "\tshaderClipDistance = " << value.shaderClipDistance << '\n';
	s << "\tshaderCullDistance = " << value.shaderCullDistance << '\n';
	s << "\tshaderFloat64 = " << value.shaderFloat64 << '\n';
	s << "\tshaderInt64 = " << value.shaderInt64 << '\n';
	s << "\tshaderInt16 = " << value.shaderInt16 << '\n';
	s << "\tshaderResourceResidency = " << value.shaderResourceResidency << '\n';
	s << "\tshaderResourceMinLod = " << value.shaderResourceMinLod << '\n';
	s << "\tsparseBinding = " << value.sparseBinding << '\n';
	s << "\tsparseResidencyBuffer = " << value.sparseResidencyBuffer << '\n';
	s << "\tsparseResidencyImage2D = " << value.sparseResidencyImage2D << '\n';
	s << "\tsparseResidencyImage3D = " << value.sparseResidencyImage3D << '\n';
	s << "\tsparseResidency2Samples = " << value.sparseResidency2Samples << '\n';
	s << "\tsparseResidency4Samples = " << value.sparseResidency4Samples << '\n';
	s << "\tsparseResidency8Samples = " << value.sparseResidency8Samples << '\n';
	s << "\tsparseResidency16Samples = " << value.sparseResidency16Samples << '\n';
	s << "\tsparseResidencyAliased = " << value.sparseResidencyAliased << '\n';
	s << "\tvariableMultisampleRate = " << value.variableMultisampleRate << '\n';
	s << "\tinheritedQueries = " << value.inheritedQueries << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLimits& value)
{
	s << "VkPhysicalDeviceLimits = {\n";
	s << "\tmaxImageDimension1D = " << value.maxImageDimension1D << '\n';
	s << "\tmaxImageDimension2D = " << value.maxImageDimension2D << '\n';
	s << "\tmaxImageDimension3D = " << value.maxImageDimension3D << '\n';
	s << "\tmaxImageDimensionCube = " << value.maxImageDimensionCube << '\n';
	s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
	s << "\tmaxTexelBufferElements = " << value.maxTexelBufferElements << '\n';
	s << "\tmaxUniformBufferRange = " << value.maxUniformBufferRange << '\n';
	s << "\tmaxStorageBufferRange = " << value.maxStorageBufferRange << '\n';
	s << "\tmaxPushConstantsSize = " << value.maxPushConstantsSize << '\n';
	s << "\tmaxMemoryAllocationCount = " << value.maxMemoryAllocationCount << '\n';
	s << "\tmaxSamplerAllocationCount = " << value.maxSamplerAllocationCount << '\n';
	s << "\tbufferImageGranularity = " << value.bufferImageGranularity << '\n';
	s << "\tsparseAddressSpaceSize = " << value.sparseAddressSpaceSize << '\n';
	s << "\tmaxBoundDescriptorSets = " << value.maxBoundDescriptorSets << '\n';
	s << "\tmaxPerStageDescriptorSamplers = " << value.maxPerStageDescriptorSamplers << '\n';
	s << "\tmaxPerStageDescriptorUniformBuffers = " << value.maxPerStageDescriptorUniformBuffers << '\n';
	s << "\tmaxPerStageDescriptorStorageBuffers = " << value.maxPerStageDescriptorStorageBuffers << '\n';
	s << "\tmaxPerStageDescriptorSampledImages = " << value.maxPerStageDescriptorSampledImages << '\n';
	s << "\tmaxPerStageDescriptorStorageImages = " << value.maxPerStageDescriptorStorageImages << '\n';
	s << "\tmaxPerStageDescriptorInputAttachments = " << value.maxPerStageDescriptorInputAttachments << '\n';
	s << "\tmaxPerStageResources = " << value.maxPerStageResources << '\n';
	s << "\tmaxDescriptorSetSamplers = " << value.maxDescriptorSetSamplers << '\n';
	s << "\tmaxDescriptorSetUniformBuffers = " << value.maxDescriptorSetUniformBuffers << '\n';
	s << "\tmaxDescriptorSetUniformBuffersDynamic = " << value.maxDescriptorSetUniformBuffersDynamic << '\n';
	s << "\tmaxDescriptorSetStorageBuffers = " << value.maxDescriptorSetStorageBuffers << '\n';
	s << "\tmaxDescriptorSetStorageBuffersDynamic = " << value.maxDescriptorSetStorageBuffersDynamic << '\n';
	s << "\tmaxDescriptorSetSampledImages = " << value.maxDescriptorSetSampledImages << '\n';
	s << "\tmaxDescriptorSetStorageImages = " << value.maxDescriptorSetStorageImages << '\n';
	s << "\tmaxDescriptorSetInputAttachments = " << value.maxDescriptorSetInputAttachments << '\n';
	s << "\tmaxVertexInputAttributes = " << value.maxVertexInputAttributes << '\n';
	s << "\tmaxVertexInputBindings = " << value.maxVertexInputBindings << '\n';
	s << "\tmaxVertexInputAttributeOffset = " << value.maxVertexInputAttributeOffset << '\n';
	s << "\tmaxVertexInputBindingStride = " << value.maxVertexInputBindingStride << '\n';
	s << "\tmaxVertexOutputComponents = " << value.maxVertexOutputComponents << '\n';
	s << "\tmaxTessellationGenerationLevel = " << value.maxTessellationGenerationLevel << '\n';
	s << "\tmaxTessellationPatchSize = " << value.maxTessellationPatchSize << '\n';
	s << "\tmaxTessellationControlPerVertexInputComponents = " << value.maxTessellationControlPerVertexInputComponents << '\n';
	s << "\tmaxTessellationControlPerVertexOutputComponents = " << value.maxTessellationControlPerVertexOutputComponents << '\n';
	s << "\tmaxTessellationControlPerPatchOutputComponents = " << value.maxTessellationControlPerPatchOutputComponents << '\n';
	s << "\tmaxTessellationControlTotalOutputComponents = " << value.maxTessellationControlTotalOutputComponents << '\n';
	s << "\tmaxTessellationEvaluationInputComponents = " << value.maxTessellationEvaluationInputComponents << '\n';
	s << "\tmaxTessellationEvaluationOutputComponents = " << value.maxTessellationEvaluationOutputComponents << '\n';
	s << "\tmaxGeometryShaderInvocations = " << value.maxGeometryShaderInvocations << '\n';
	s << "\tmaxGeometryInputComponents = " << value.maxGeometryInputComponents << '\n';
	s << "\tmaxGeometryOutputComponents = " << value.maxGeometryOutputComponents << '\n';
	s << "\tmaxGeometryOutputVertices = " << value.maxGeometryOutputVertices << '\n';
	s << "\tmaxGeometryTotalOutputComponents = " << value.maxGeometryTotalOutputComponents << '\n';
	s << "\tmaxFragmentInputComponents = " << value.maxFragmentInputComponents << '\n';
	s << "\tmaxFragmentOutputAttachments = " << value.maxFragmentOutputAttachments << '\n';
	s << "\tmaxFragmentDualSrcAttachments = " << value.maxFragmentDualSrcAttachments << '\n';
	s << "\tmaxFragmentCombinedOutputResources = " << value.maxFragmentCombinedOutputResources << '\n';
	s << "\tmaxComputeSharedMemorySize = " << value.maxComputeSharedMemorySize << '\n';
	s << "\tmaxComputeWorkGroupCount = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupCount), DE_ARRAY_END(value.maxComputeWorkGroupCount)) << '\n';
	s << "\tmaxComputeWorkGroupInvocations = " << value.maxComputeWorkGroupInvocations << '\n';
	s << "\tmaxComputeWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupSize), DE_ARRAY_END(value.maxComputeWorkGroupSize)) << '\n';
	s << "\tsubPixelPrecisionBits = " << value.subPixelPrecisionBits << '\n';
	s << "\tsubTexelPrecisionBits = " << value.subTexelPrecisionBits << '\n';
	s << "\tmipmapPrecisionBits = " << value.mipmapPrecisionBits << '\n';
	s << "\tmaxDrawIndexedIndexValue = " << value.maxDrawIndexedIndexValue << '\n';
	s << "\tmaxDrawIndirectCount = " << value.maxDrawIndirectCount << '\n';
	s << "\tmaxSamplerLodBias = " << value.maxSamplerLodBias << '\n';
	s << "\tmaxSamplerAnisotropy = " << value.maxSamplerAnisotropy << '\n';
	s << "\tmaxViewports = " << value.maxViewports << '\n';
	s << "\tmaxViewportDimensions = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxViewportDimensions), DE_ARRAY_END(value.maxViewportDimensions)) << '\n';
	s << "\tviewportBoundsRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.viewportBoundsRange), DE_ARRAY_END(value.viewportBoundsRange)) << '\n';
	s << "\tviewportSubPixelBits = " << value.viewportSubPixelBits << '\n';
	s << "\tminMemoryMapAlignment = " << value.minMemoryMapAlignment << '\n';
	s << "\tminTexelBufferOffsetAlignment = " << value.minTexelBufferOffsetAlignment << '\n';
	s << "\tminUniformBufferOffsetAlignment = " << value.minUniformBufferOffsetAlignment << '\n';
	s << "\tminStorageBufferOffsetAlignment = " << value.minStorageBufferOffsetAlignment << '\n';
	s << "\tminTexelOffset = " << value.minTexelOffset << '\n';
	s << "\tmaxTexelOffset = " << value.maxTexelOffset << '\n';
	s << "\tminTexelGatherOffset = " << value.minTexelGatherOffset << '\n';
	s << "\tmaxTexelGatherOffset = " << value.maxTexelGatherOffset << '\n';
	s << "\tminInterpolationOffset = " << value.minInterpolationOffset << '\n';
	s << "\tmaxInterpolationOffset = " << value.maxInterpolationOffset << '\n';
	s << "\tsubPixelInterpolationOffsetBits = " << value.subPixelInterpolationOffsetBits << '\n';
	s << "\tmaxFramebufferWidth = " << value.maxFramebufferWidth << '\n';
	s << "\tmaxFramebufferHeight = " << value.maxFramebufferHeight << '\n';
	s << "\tmaxFramebufferLayers = " << value.maxFramebufferLayers << '\n';
	s << "\tframebufferColorSampleCounts = " << getSampleCountFlagsStr(value.framebufferColorSampleCounts) << '\n';
	s << "\tframebufferDepthSampleCounts = " << getSampleCountFlagsStr(value.framebufferDepthSampleCounts) << '\n';
	s << "\tframebufferStencilSampleCounts = " << getSampleCountFlagsStr(value.framebufferStencilSampleCounts) << '\n';
	s << "\tframebufferNoAttachmentsSampleCounts = " << getSampleCountFlagsStr(value.framebufferNoAttachmentsSampleCounts) << '\n';
	s << "\tmaxColorAttachments = " << value.maxColorAttachments << '\n';
	s << "\tsampledImageColorSampleCounts = " << getSampleCountFlagsStr(value.sampledImageColorSampleCounts) << '\n';
	s << "\tsampledImageIntegerSampleCounts = " << getSampleCountFlagsStr(value.sampledImageIntegerSampleCounts) << '\n';
	s << "\tsampledImageDepthSampleCounts = " << getSampleCountFlagsStr(value.sampledImageDepthSampleCounts) << '\n';
	s << "\tsampledImageStencilSampleCounts = " << getSampleCountFlagsStr(value.sampledImageStencilSampleCounts) << '\n';
	s << "\tstorageImageSampleCounts = " << getSampleCountFlagsStr(value.storageImageSampleCounts) << '\n';
	s << "\tmaxSampleMaskWords = " << value.maxSampleMaskWords << '\n';
	s << "\ttimestampComputeAndGraphics = " << value.timestampComputeAndGraphics << '\n';
	s << "\ttimestampPeriod = " << value.timestampPeriod << '\n';
	s << "\tmaxClipDistances = " << value.maxClipDistances << '\n';
	s << "\tmaxCullDistances = " << value.maxCullDistances << '\n';
	s << "\tmaxCombinedClipAndCullDistances = " << value.maxCombinedClipAndCullDistances << '\n';
	s << "\tdiscreteQueuePriorities = " << value.discreteQueuePriorities << '\n';
	s << "\tpointSizeRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.pointSizeRange), DE_ARRAY_END(value.pointSizeRange)) << '\n';
	s << "\tlineWidthRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.lineWidthRange), DE_ARRAY_END(value.lineWidthRange)) << '\n';
	s << "\tpointSizeGranularity = " << value.pointSizeGranularity << '\n';
	s << "\tlineWidthGranularity = " << value.lineWidthGranularity << '\n';
	s << "\tstrictLines = " << value.strictLines << '\n';
	s << "\tstandardSampleLocations = " << value.standardSampleLocations << '\n';
	s << "\toptimalBufferCopyOffsetAlignment = " << value.optimalBufferCopyOffsetAlignment << '\n';
	s << "\toptimalBufferCopyRowPitchAlignment = " << value.optimalBufferCopyRowPitchAlignment << '\n';
	s << "\tnonCoherentAtomSize = " << value.nonCoherentAtomSize << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties& value)
{
	s << "VkPhysicalDeviceMemoryProperties = {\n";
	s << "\tmemoryTypeCount = " << value.memoryTypeCount << '\n';
	s << "\tmemoryTypes = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryTypes), DE_ARRAY_BEGIN(value.memoryTypes) + value.memoryTypeCount) << '\n';
	s << "\tmemoryHeapCount = " << value.memoryHeapCount << '\n';
	s << "\tmemoryHeaps = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryHeaps), DE_ARRAY_BEGIN(value.memoryHeaps) + value.memoryHeapCount) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSparseProperties& value)
{
	s << "VkPhysicalDeviceSparseProperties = {\n";
	s << "\tresidencyStandard2DBlockShape = " << value.residencyStandard2DBlockShape << '\n';
	s << "\tresidencyStandard2DMultisampleBlockShape = " << value.residencyStandard2DMultisampleBlockShape << '\n';
	s << "\tresidencyStandard3DBlockShape = " << value.residencyStandard3DBlockShape << '\n';
	s << "\tresidencyAlignedMipSize = " << value.residencyAlignedMipSize << '\n';
	s << "\tresidencyNonResidentStrict = " << value.residencyNonResidentStrict << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProperties& value)
{
	s << "VkPhysicalDeviceProperties = {\n";
	s << "\tapiVersion = " << value.apiVersion << '\n';
	s << "\tdriverVersion = " << value.driverVersion << '\n';
	s << "\tvendorID = " << value.vendorID << '\n';
	s << "\tdeviceID = " << value.deviceID << '\n';
	s << "\tdeviceType = " << value.deviceType << '\n';
	s << "\tdeviceName = " << (const char*)value.deviceName << '\n';
	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';
	s << "\tlimits = " << value.limits << '\n';
	s << "\tsparseProperties = " << value.sparseProperties << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkQueueFamilyProperties& value)
{
	s << "VkQueueFamilyProperties = {\n";
	s << "\tqueueFlags = " << getQueueFlagsStr(value.queueFlags) << '\n';
	s << "\tqueueCount = " << value.queueCount << '\n';
	s << "\ttimestampValidBits = " << value.timestampValidBits << '\n';
	s << "\tminImageTransferGranularity = " << value.minImageTransferGranularity << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceQueueCreateInfo& value)
{
	s << "VkDeviceQueueCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getDeviceQueueCreateFlagsStr(value.flags) << '\n';
	s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
	s << "\tqueueCount = " << value.queueCount << '\n';
	s << "\tpQueuePriorities = " << value.pQueuePriorities << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceCreateInfo& value)
{
	s << "VkDeviceCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getDeviceCreateFlagsStr(value.flags) << '\n';
	s << "\tqueueCreateInfoCount = " << value.queueCreateInfoCount << '\n';
	s << "\tpQueueCreateInfos = " << value.pQueueCreateInfos << '\n';
	s << "\tenabledLayerCount = " << value.enabledLayerCount << '\n';
	s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
	s << "\tenabledExtensionCount = " << value.enabledExtensionCount << '\n';
	s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
	s << "\tpEnabledFeatures = " << value.pEnabledFeatures << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkExtensionProperties& value)
{
	s << "VkExtensionProperties = {\n";
	s << "\textensionName = " << (const char*)value.extensionName << '\n';
	s << "\tspecVersion = " << value.specVersion << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkLayerProperties& value)
{
	s << "VkLayerProperties = {\n";
	s << "\tlayerName = " << (const char*)value.layerName << '\n';
	s << "\tspecVersion = " << value.specVersion << '\n';
	s << "\timplementationVersion = " << value.implementationVersion << '\n';
	s << "\tdescription = " << (const char*)value.description << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSubmitInfo& value)
{
	s << "VkSubmitInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
	s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
	s << "\tpWaitDstStageMask = " << value.pWaitDstStageMask << '\n';
	s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
	s << "\tpCommandBuffers = " << value.pCommandBuffers << '\n';
	s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
	s << "\tpSignalSemaphores = " << value.pSignalSemaphores << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMappedMemoryRange& value)
{
	s << "VkMappedMemoryRange = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmemory = " << value.memory << '\n';
	s << "\toffset = " << value.offset << '\n';
	s << "\tsize = " << value.size << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMemoryAllocateInfo& value)
{
	s << "VkMemoryAllocateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tallocationSize = " << value.allocationSize << '\n';
	s << "\tmemoryTypeIndex = " << value.memoryTypeIndex << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements& value)
{
	s << "VkMemoryRequirements = {\n";
	s << "\tsize = " << value.size << '\n';
	s << "\talignment = " << value.alignment << '\n';
	s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSparseMemoryBind& value)
{
	s << "VkSparseMemoryBind = {\n";
	s << "\tresourceOffset = " << value.resourceOffset << '\n';
	s << "\tsize = " << value.size << '\n';
	s << "\tmemory = " << value.memory << '\n';
	s << "\tmemoryOffset = " << value.memoryOffset << '\n';
	s << "\tflags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSparseBufferMemoryBindInfo& value)
{
	s << "VkSparseBufferMemoryBindInfo = {\n";
	s << "\tbuffer = " << value.buffer << '\n';
	s << "\tbindCount = " << value.bindCount << '\n';
	s << "\tpBinds = " << value.pBinds << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSparseImageOpaqueMemoryBindInfo& value)
{
	s << "VkSparseImageOpaqueMemoryBindInfo = {\n";
	s << "\timage = " << value.image << '\n';
	s << "\tbindCount = " << value.bindCount << '\n';
	s << "\tpBinds = " << value.pBinds << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageSubresource& value)
{
	s << "VkImageSubresource = {\n";
	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
	s << "\tmipLevel = " << value.mipLevel << '\n';
	s << "\tarrayLayer = " << value.arrayLayer << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBind& value)
{
	s << "VkSparseImageMemoryBind = {\n";
	s << "\tsubresource = " << value.subresource << '\n';
	s << "\toffset = " << value.offset << '\n';
	s << "\textent = " << value.extent << '\n';
	s << "\tmemory = " << value.memory << '\n';
	s << "\tmemoryOffset = " << value.memoryOffset << '\n';
	s << "\tflags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBindInfo& value)
{
	s << "VkSparseImageMemoryBindInfo = {\n";
	s << "\timage = " << value.image << '\n';
	s << "\tbindCount = " << value.bindCount << '\n';
	s << "\tpBinds = " << value.pBinds << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBindSparseInfo& value)
{
	s << "VkBindSparseInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
	s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
	s << "\tbufferBindCount = " << value.bufferBindCount << '\n';
	s << "\tpBufferBinds = " << value.pBufferBinds << '\n';
	s << "\timageOpaqueBindCount = " << value.imageOpaqueBindCount << '\n';
	s << "\tpImageOpaqueBinds = " << value.pImageOpaqueBinds << '\n';
	s << "\timageBindCount = " << value.imageBindCount << '\n';
	s << "\tpImageBinds = " << value.pImageBinds << '\n';
	s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
	s << "\tpSignalSemaphores = " << value.pSignalSemaphores << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties& value)
{
	s << "VkSparseImageFormatProperties = {\n";
	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
	s << "\timageGranularity = " << value.imageGranularity << '\n';
	s << "\tflags = " << getSparseImageFormatFlagsStr(value.flags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements& value)
{
	s << "VkSparseImageMemoryRequirements = {\n";
	s << "\tformatProperties = " << value.formatProperties << '\n';
	s << "\timageMipTailFirstLod = " << value.imageMipTailFirstLod << '\n';
	s << "\timageMipTailSize = " << value.imageMipTailSize << '\n';
	s << "\timageMipTailOffset = " << value.imageMipTailOffset << '\n';
	s << "\timageMipTailStride = " << value.imageMipTailStride << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkFenceCreateInfo& value)
{
	s << "VkFenceCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getFenceCreateFlagsStr(value.flags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSemaphoreCreateInfo& value)
{
	s << "VkSemaphoreCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getSemaphoreCreateFlagsStr(value.flags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkEventCreateInfo& value)
{
	s << "VkEventCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getEventCreateFlagsStr(value.flags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkQueryPoolCreateInfo& value)
{
	s << "VkQueryPoolCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getQueryPoolCreateFlagsStr(value.flags) << '\n';
	s << "\tqueryType = " << value.queryType << '\n';
	s << "\tqueryCount = " << value.queryCount << '\n';
	s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBufferCreateInfo& value)
{
	s << "VkBufferCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getBufferCreateFlagsStr(value.flags) << '\n';
	s << "\tsize = " << value.size << '\n';
	s << "\tusage = " << getBufferUsageFlagsStr(value.usage) << '\n';
	s << "\tsharingMode = " << value.sharingMode << '\n';
	s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
	s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBufferViewCreateInfo& value)
{
	s << "VkBufferViewCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getBufferViewCreateFlagsStr(value.flags) << '\n';
	s << "\tbuffer = " << value.buffer << '\n';
	s << "\tformat = " << value.format << '\n';
	s << "\toffset = " << value.offset << '\n';
	s << "\trange = " << value.range << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageCreateInfo& value)
{
	s << "VkImageCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
	s << "\timageType = " << value.imageType << '\n';
	s << "\tformat = " << value.format << '\n';
	s << "\textent = " << value.extent << '\n';
	s << "\tmipLevels = " << value.mipLevels << '\n';
	s << "\tarrayLayers = " << value.arrayLayers << '\n';
	s << "\tsamples = " << value.samples << '\n';
	s << "\ttiling = " << value.tiling << '\n';
	s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
	s << "\tsharingMode = " << value.sharingMode << '\n';
	s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
	s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
	s << "\tinitialLayout = " << value.initialLayout << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSubresourceLayout& value)
{
	s << "VkSubresourceLayout = {\n";
	s << "\toffset = " << value.offset << '\n';
	s << "\tsize = " << value.size << '\n';
	s << "\trowPitch = " << value.rowPitch << '\n';
	s << "\tarrayPitch = " << value.arrayPitch << '\n';
	s << "\tdepthPitch = " << value.depthPitch << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkComponentMapping& value)
{
	s << "VkComponentMapping = {\n";
	s << "\tr = " << value.r << '\n';
	s << "\tg = " << value.g << '\n';
	s << "\tb = " << value.b << '\n';
	s << "\ta = " << value.a << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageViewCreateInfo& value)
{
	s << "VkImageViewCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getImageViewCreateFlagsStr(value.flags) << '\n';
	s << "\timage = " << value.image << '\n';
	s << "\tviewType = " << value.viewType << '\n';
	s << "\tformat = " << value.format << '\n';
	s << "\tcomponents = " << value.components << '\n';
	s << "\tsubresourceRange = " << value.subresourceRange << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkShaderModuleCreateInfo& value)
{
	s << "VkShaderModuleCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getShaderModuleCreateFlagsStr(value.flags) << '\n';
	s << "\tcodeSize = " << value.codeSize << '\n';
	s << "\tpCode = " << value.pCode << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineCacheCreateInfo& value)
{
	s << "VkPipelineCacheCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineCacheCreateFlagsStr(value.flags) << '\n';
	s << "\tinitialDataSize = " << value.initialDataSize << '\n';
	s << "\tpInitialData = " << value.pInitialData << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSpecializationMapEntry& value)
{
	s << "VkSpecializationMapEntry = {\n";
	s << "\tconstantID = " << value.constantID << '\n';
	s << "\toffset = " << value.offset << '\n';
	s << "\tsize = " << value.size << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSpecializationInfo& value)
{
	s << "VkSpecializationInfo = {\n";
	s << "\tmapEntryCount = " << value.mapEntryCount << '\n';
	s << "\tpMapEntries = " << value.pMapEntries << '\n';
	s << "\tdataSize = " << value.dataSize << '\n';
	s << "\tpData = " << value.pData << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineShaderStageCreateInfo& value)
{
	s << "VkPipelineShaderStageCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineShaderStageCreateFlagsStr(value.flags) << '\n';
	s << "\tstage = " << value.stage << '\n';
	s << "\tmodule = " << value.module << '\n';
	s << "\tpName = " << getCharPtrStr(value.pName) << '\n';
	s << "\tpSpecializationInfo = " << value.pSpecializationInfo << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkComputePipelineCreateInfo& value)
{
	s << "VkComputePipelineCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
	s << "\tstage = " << value.stage << '\n';
	s << "\tlayout = " << value.layout << '\n';
	s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
	s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDescription& value)
{
	s << "VkVertexInputBindingDescription = {\n";
	s << "\tbinding = " << value.binding << '\n';
	s << "\tstride = " << value.stride << '\n';
	s << "\tinputRate = " << value.inputRate << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVertexInputAttributeDescription& value)
{
	s << "VkVertexInputAttributeDescription = {\n";
	s << "\tlocation = " << value.location << '\n';
	s << "\tbinding = " << value.binding << '\n';
	s << "\tformat = " << value.format << '\n';
	s << "\toffset = " << value.offset << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineVertexInputStateCreateInfo& value)
{
	s << "VkPipelineVertexInputStateCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineVertexInputStateCreateFlagsStr(value.flags) << '\n';
	s << "\tvertexBindingDescriptionCount = " << value.vertexBindingDescriptionCount << '\n';
	s << "\tpVertexBindingDescriptions = " << value.pVertexBindingDescriptions << '\n';
	s << "\tvertexAttributeDescriptionCount = " << value.vertexAttributeDescriptionCount << '\n';
	s << "\tpVertexAttributeDescriptions = " << value.pVertexAttributeDescriptions << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineInputAssemblyStateCreateInfo& value)
{
	s << "VkPipelineInputAssemblyStateCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineInputAssemblyStateCreateFlagsStr(value.flags) << '\n';
	s << "\ttopology = " << value.topology << '\n';
	s << "\tprimitiveRestartEnable = " << value.primitiveRestartEnable << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineTessellationStateCreateInfo& value)
{
	s << "VkPipelineTessellationStateCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineTessellationStateCreateFlagsStr(value.flags) << '\n';
	s << "\tpatchControlPoints = " << value.patchControlPoints << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkViewport& value)
{
	s << "VkViewport = {\n";
	s << "\tx = " << value.x << '\n';
	s << "\ty = " << value.y << '\n';
	s << "\twidth = " << value.width << '\n';
	s << "\theight = " << value.height << '\n';
	s << "\tminDepth = " << value.minDepth << '\n';
	s << "\tmaxDepth = " << value.maxDepth << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineViewportStateCreateInfo& value)
{
	s << "VkPipelineViewportStateCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineViewportStateCreateFlagsStr(value.flags) << '\n';
	s << "\tviewportCount = " << value.viewportCount << '\n';
	s << "\tpViewports = " << value.pViewports << '\n';
	s << "\tscissorCount = " << value.scissorCount << '\n';
	s << "\tpScissors = " << value.pScissors << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateCreateInfo& value)
{
	s << "VkPipelineRasterizationStateCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineRasterizationStateCreateFlagsStr(value.flags) << '\n';
	s << "\tdepthClampEnable = " << value.depthClampEnable << '\n';
	s << "\trasterizerDiscardEnable = " << value.rasterizerDiscardEnable << '\n';
	s << "\tpolygonMode = " << value.polygonMode << '\n';
	s << "\tcullMode = " << getCullModeFlagsStr(value.cullMode) << '\n';
	s << "\tfrontFace = " << value.frontFace << '\n';
	s << "\tdepthBiasEnable = " << value.depthBiasEnable << '\n';
	s << "\tdepthBiasConstantFactor = " << value.depthBiasConstantFactor << '\n';
	s << "\tdepthBiasClamp = " << value.depthBiasClamp << '\n';
	s << "\tdepthBiasSlopeFactor = " << value.depthBiasSlopeFactor << '\n';
	s << "\tlineWidth = " << value.lineWidth << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineMultisampleStateCreateInfo& value)
{
	s << "VkPipelineMultisampleStateCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineMultisampleStateCreateFlagsStr(value.flags) << '\n';
	s << "\trasterizationSamples = " << value.rasterizationSamples << '\n';
	s << "\tsampleShadingEnable = " << value.sampleShadingEnable << '\n';
	s << "\tminSampleShading = " << value.minSampleShading << '\n';
	s << "\tpSampleMask = " << value.pSampleMask << '\n';
	s << "\talphaToCoverageEnable = " << value.alphaToCoverageEnable << '\n';
	s << "\talphaToOneEnable = " << value.alphaToOneEnable << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkStencilOpState& value)
{
	s << "VkStencilOpState = {\n";
	s << "\tfailOp = " << value.failOp << '\n';
	s << "\tpassOp = " << value.passOp << '\n';
	s << "\tdepthFailOp = " << value.depthFailOp << '\n';
	s << "\tcompareOp = " << value.compareOp << '\n';
	s << "\tcompareMask = " << value.compareMask << '\n';
	s << "\twriteMask = " << value.writeMask << '\n';
	s << "\treference = " << value.reference << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineDepthStencilStateCreateInfo& value)
{
	s << "VkPipelineDepthStencilStateCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineDepthStencilStateCreateFlagsStr(value.flags) << '\n';
	s << "\tdepthTestEnable = " << value.depthTestEnable << '\n';
	s << "\tdepthWriteEnable = " << value.depthWriteEnable << '\n';
	s << "\tdepthCompareOp = " << value.depthCompareOp << '\n';
	s << "\tdepthBoundsTestEnable = " << value.depthBoundsTestEnable << '\n';
	s << "\tstencilTestEnable = " << value.stencilTestEnable << '\n';
	s << "\tfront = " << value.front << '\n';
	s << "\tback = " << value.back << '\n';
	s << "\tminDepthBounds = " << value.minDepthBounds << '\n';
	s << "\tmaxDepthBounds = " << value.maxDepthBounds << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendAttachmentState& value)
{
	s << "VkPipelineColorBlendAttachmentState = {\n";
	s << "\tblendEnable = " << value.blendEnable << '\n';
	s << "\tsrcColorBlendFactor = " << value.srcColorBlendFactor << '\n';
	s << "\tdstColorBlendFactor = " << value.dstColorBlendFactor << '\n';
	s << "\tcolorBlendOp = " << value.colorBlendOp << '\n';
	s << "\tsrcAlphaBlendFactor = " << value.srcAlphaBlendFactor << '\n';
	s << "\tdstAlphaBlendFactor = " << value.dstAlphaBlendFactor << '\n';
	s << "\talphaBlendOp = " << value.alphaBlendOp << '\n';
	s << "\tcolorWriteMask = " << getColorComponentFlagsStr(value.colorWriteMask) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendStateCreateInfo& value)
{
	s << "VkPipelineColorBlendStateCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineColorBlendStateCreateFlagsStr(value.flags) << '\n';
	s << "\tlogicOpEnable = " << value.logicOpEnable << '\n';
	s << "\tlogicOp = " << value.logicOp << '\n';
	s << "\tattachmentCount = " << value.attachmentCount << '\n';
	s << "\tpAttachments = " << value.pAttachments << '\n';
	s << "\tblendConstants = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.blendConstants), DE_ARRAY_END(value.blendConstants)) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineDynamicStateCreateInfo& value)
{
	s << "VkPipelineDynamicStateCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineDynamicStateCreateFlagsStr(value.flags) << '\n';
	s << "\tdynamicStateCount = " << value.dynamicStateCount << '\n';
	s << "\tpDynamicStates = " << value.pDynamicStates << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkGraphicsPipelineCreateInfo& value)
{
	s << "VkGraphicsPipelineCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
	s << "\tstageCount = " << value.stageCount << '\n';
	s << "\tpStages = " << value.pStages << '\n';
	s << "\tpVertexInputState = " << value.pVertexInputState << '\n';
	s << "\tpInputAssemblyState = " << value.pInputAssemblyState << '\n';
	s << "\tpTessellationState = " << value.pTessellationState << '\n';
	s << "\tpViewportState = " << value.pViewportState << '\n';
	s << "\tpRasterizationState = " << value.pRasterizationState << '\n';
	s << "\tpMultisampleState = " << value.pMultisampleState << '\n';
	s << "\tpDepthStencilState = " << value.pDepthStencilState << '\n';
	s << "\tpColorBlendState = " << value.pColorBlendState << '\n';
	s << "\tpDynamicState = " << value.pDynamicState << '\n';
	s << "\tlayout = " << value.layout << '\n';
	s << "\trenderPass = " << value.renderPass << '\n';
	s << "\tsubpass = " << value.subpass << '\n';
	s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
	s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPushConstantRange& value)
{
	s << "VkPushConstantRange = {\n";
	s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
	s << "\toffset = " << value.offset << '\n';
	s << "\tsize = " << value.size << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineLayoutCreateInfo& value)
{
	s << "VkPipelineLayoutCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineLayoutCreateFlagsStr(value.flags) << '\n';
	s << "\tsetLayoutCount = " << value.setLayoutCount << '\n';
	s << "\tpSetLayouts = " << value.pSetLayouts << '\n';
	s << "\tpushConstantRangeCount = " << value.pushConstantRangeCount << '\n';
	s << "\tpPushConstantRanges = " << value.pPushConstantRanges << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSamplerCreateInfo& value)
{
	s << "VkSamplerCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getSamplerCreateFlagsStr(value.flags) << '\n';
	s << "\tmagFilter = " << value.magFilter << '\n';
	s << "\tminFilter = " << value.minFilter << '\n';
	s << "\tmipmapMode = " << value.mipmapMode << '\n';
	s << "\taddressModeU = " << value.addressModeU << '\n';
	s << "\taddressModeV = " << value.addressModeV << '\n';
	s << "\taddressModeW = " << value.addressModeW << '\n';
	s << "\tmipLodBias = " << value.mipLodBias << '\n';
	s << "\tanisotropyEnable = " << value.anisotropyEnable << '\n';
	s << "\tmaxAnisotropy = " << value.maxAnisotropy << '\n';
	s << "\tcompareEnable = " << value.compareEnable << '\n';
	s << "\tcompareOp = " << value.compareOp << '\n';
	s << "\tminLod = " << value.minLod << '\n';
	s << "\tmaxLod = " << value.maxLod << '\n';
	s << "\tborderColor = " << value.borderColor << '\n';
	s << "\tunnormalizedCoordinates = " << value.unnormalizedCoordinates << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCopyDescriptorSet& value)
{
	s << "VkCopyDescriptorSet = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrcSet = " << value.srcSet << '\n';
	s << "\tsrcBinding = " << value.srcBinding << '\n';
	s << "\tsrcArrayElement = " << value.srcArrayElement << '\n';
	s << "\tdstSet = " << value.dstSet << '\n';
	s << "\tdstBinding = " << value.dstBinding << '\n';
	s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
	s << "\tdescriptorCount = " << value.descriptorCount << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDescriptorBufferInfo& value)
{
	s << "VkDescriptorBufferInfo = {\n";
	s << "\tbuffer = " << value.buffer << '\n';
	s << "\toffset = " << value.offset << '\n';
	s << "\trange = " << value.range << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDescriptorImageInfo& value)
{
	s << "VkDescriptorImageInfo = {\n";
	s << "\tsampler = " << value.sampler << '\n';
	s << "\timageView = " << value.imageView << '\n';
	s << "\timageLayout = " << value.imageLayout << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolSize& value)
{
	s << "VkDescriptorPoolSize = {\n";
	s << "\ttype = " << value.type << '\n';
	s << "\tdescriptorCount = " << value.descriptorCount << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolCreateInfo& value)
{
	s << "VkDescriptorPoolCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getDescriptorPoolCreateFlagsStr(value.flags) << '\n';
	s << "\tmaxSets = " << value.maxSets << '\n';
	s << "\tpoolSizeCount = " << value.poolSizeCount << '\n';
	s << "\tpPoolSizes = " << value.pPoolSizes << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDescriptorSetAllocateInfo& value)
{
	s << "VkDescriptorSetAllocateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdescriptorPool = " << value.descriptorPool << '\n';
	s << "\tdescriptorSetCount = " << value.descriptorSetCount << '\n';
	s << "\tpSetLayouts = " << value.pSetLayouts << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBinding& value)
{
	s << "VkDescriptorSetLayoutBinding = {\n";
	s << "\tbinding = " << value.binding << '\n';
	s << "\tdescriptorType = " << value.descriptorType << '\n';
	s << "\tdescriptorCount = " << value.descriptorCount << '\n';
	s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
	s << "\tpImmutableSamplers = " << value.pImmutableSamplers << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutCreateInfo& value)
{
	s << "VkDescriptorSetLayoutCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getDescriptorSetLayoutCreateFlagsStr(value.flags) << '\n';
	s << "\tbindingCount = " << value.bindingCount << '\n';
	s << "\tpBindings = " << value.pBindings << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSet& value)
{
	s << "VkWriteDescriptorSet = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdstSet = " << value.dstSet << '\n';
	s << "\tdstBinding = " << value.dstBinding << '\n';
	s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
	s << "\tdescriptorCount = " << value.descriptorCount << '\n';
	s << "\tdescriptorType = " << value.descriptorType << '\n';
	s << "\tpImageInfo = " << value.pImageInfo << '\n';
	s << "\tpBufferInfo = " << value.pBufferInfo << '\n';
	s << "\tpTexelBufferView = " << value.pTexelBufferView << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription& value)
{
	s << "VkAttachmentDescription = {\n";
	s << "\tflags = " << getAttachmentDescriptionFlagsStr(value.flags) << '\n';
	s << "\tformat = " << value.format << '\n';
	s << "\tsamples = " << value.samples << '\n';
	s << "\tloadOp = " << value.loadOp << '\n';
	s << "\tstoreOp = " << value.storeOp << '\n';
	s << "\tstencilLoadOp = " << value.stencilLoadOp << '\n';
	s << "\tstencilStoreOp = " << value.stencilStoreOp << '\n';
	s << "\tinitialLayout = " << value.initialLayout << '\n';
	s << "\tfinalLayout = " << value.finalLayout << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAttachmentReference& value)
{
	s << "VkAttachmentReference = {\n";
	s << "\tattachment = " << value.attachment << '\n';
	s << "\tlayout = " << value.layout << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkFramebufferCreateInfo& value)
{
	s << "VkFramebufferCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getFramebufferCreateFlagsStr(value.flags) << '\n';
	s << "\trenderPass = " << value.renderPass << '\n';
	s << "\tattachmentCount = " << value.attachmentCount << '\n';
	s << "\tpAttachments = " << value.pAttachments << '\n';
	s << "\twidth = " << value.width << '\n';
	s << "\theight = " << value.height << '\n';
	s << "\tlayers = " << value.layers << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSubpassDescription& value)
{
	s << "VkSubpassDescription = {\n";
	s << "\tflags = " << getSubpassDescriptionFlagsStr(value.flags) << '\n';
	s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
	s << "\tinputAttachmentCount = " << value.inputAttachmentCount << '\n';
	s << "\tpInputAttachments = " << value.pInputAttachments << '\n';
	s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
	s << "\tpColorAttachments = " << value.pColorAttachments << '\n';
	s << "\tpResolveAttachments = " << value.pResolveAttachments << '\n';
	s << "\tpDepthStencilAttachment = " << value.pDepthStencilAttachment << '\n';
	s << "\tpreserveAttachmentCount = " << value.preserveAttachmentCount << '\n';
	s << "\tpPreserveAttachments = " << value.pPreserveAttachments << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSubpassDependency& value)
{
	s << "VkSubpassDependency = {\n";
	s << "\tsrcSubpass = " << value.srcSubpass << '\n';
	s << "\tdstSubpass = " << value.dstSubpass << '\n';
	s << "\tsrcStageMask = " << getPipelineStageFlagsStr(value.srcStageMask) << '\n';
	s << "\tdstStageMask = " << getPipelineStageFlagsStr(value.dstStageMask) << '\n';
	s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
	s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
	s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo& value)
{
	s << "VkRenderPassCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getRenderPassCreateFlagsStr(value.flags) << '\n';
	s << "\tattachmentCount = " << value.attachmentCount << '\n';
	s << "\tpAttachments = " << value.pAttachments << '\n';
	s << "\tsubpassCount = " << value.subpassCount << '\n';
	s << "\tpSubpasses = " << value.pSubpasses << '\n';
	s << "\tdependencyCount = " << value.dependencyCount << '\n';
	s << "\tpDependencies = " << value.pDependencies << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCommandPoolCreateInfo& value)
{
	s << "VkCommandPoolCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getCommandPoolCreateFlagsStr(value.flags) << '\n';
	s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCommandBufferAllocateInfo& value)
{
	s << "VkCommandBufferAllocateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcommandPool = " << value.commandPool << '\n';
	s << "\tlevel = " << value.level << '\n';
	s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceInfo& value)
{
	s << "VkCommandBufferInheritanceInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\trenderPass = " << value.renderPass << '\n';
	s << "\tsubpass = " << value.subpass << '\n';
	s << "\tframebuffer = " << value.framebuffer << '\n';
	s << "\tocclusionQueryEnable = " << value.occlusionQueryEnable << '\n';
	s << "\tqueryFlags = " << getQueryControlFlagsStr(value.queryFlags) << '\n';
	s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCommandBufferBeginInfo& value)
{
	s << "VkCommandBufferBeginInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getCommandBufferUsageFlagsStr(value.flags) << '\n';
	s << "\tpInheritanceInfo = " << value.pInheritanceInfo << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBufferCopy& value)
{
	s << "VkBufferCopy = {\n";
	s << "\tsrcOffset = " << value.srcOffset << '\n';
	s << "\tdstOffset = " << value.dstOffset << '\n';
	s << "\tsize = " << value.size << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageSubresourceLayers& value)
{
	s << "VkImageSubresourceLayers = {\n";
	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
	s << "\tmipLevel = " << value.mipLevel << '\n';
	s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
	s << "\tlayerCount = " << value.layerCount << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBufferImageCopy& value)
{
	s << "VkBufferImageCopy = {\n";
	s << "\tbufferOffset = " << value.bufferOffset << '\n';
	s << "\tbufferRowLength = " << value.bufferRowLength << '\n';
	s << "\tbufferImageHeight = " << value.bufferImageHeight << '\n';
	s << "\timageSubresource = " << value.imageSubresource << '\n';
	s << "\timageOffset = " << value.imageOffset << '\n';
	s << "\timageExtent = " << value.imageExtent << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkClearColorValue& value)
{
	s << "VkClearColorValue = {\n";
	s << "\tfloat32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.float32), DE_ARRAY_END(value.float32)) << '\n';
	s << "\tint32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.int32), DE_ARRAY_END(value.int32)) << '\n';
	s << "\tuint32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.uint32), DE_ARRAY_END(value.uint32)) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkClearDepthStencilValue& value)
{
	s << "VkClearDepthStencilValue = {\n";
	s << "\tdepth = " << value.depth << '\n';
	s << "\tstencil = " << value.stencil << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkClearValue& value)
{
	s << "VkClearValue = {\n";
	s << "\tcolor = " << value.color << '\n';
	s << "\tdepthStencil = " << value.depthStencil << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkClearAttachment& value)
{
	s << "VkClearAttachment = {\n";
	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
	s << "\tcolorAttachment = " << value.colorAttachment << '\n';
	s << "\tclearValue = " << value.clearValue << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkClearRect& value)
{
	s << "VkClearRect = {\n";
	s << "\trect = " << value.rect << '\n';
	s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
	s << "\tlayerCount = " << value.layerCount << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageBlit& value)
{
	s << "VkImageBlit = {\n";
	s << "\tsrcSubresource = " << value.srcSubresource << '\n';
	s << "\tsrcOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.srcOffsets), DE_ARRAY_END(value.srcOffsets)) << '\n';
	s << "\tdstSubresource = " << value.dstSubresource << '\n';
	s << "\tdstOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.dstOffsets), DE_ARRAY_END(value.dstOffsets)) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageCopy& value)
{
	s << "VkImageCopy = {\n";
	s << "\tsrcSubresource = " << value.srcSubresource << '\n';
	s << "\tsrcOffset = " << value.srcOffset << '\n';
	s << "\tdstSubresource = " << value.dstSubresource << '\n';
	s << "\tdstOffset = " << value.dstOffset << '\n';
	s << "\textent = " << value.extent << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageResolve& value)
{
	s << "VkImageResolve = {\n";
	s << "\tsrcSubresource = " << value.srcSubresource << '\n';
	s << "\tsrcOffset = " << value.srcOffset << '\n';
	s << "\tdstSubresource = " << value.dstSubresource << '\n';
	s << "\tdstOffset = " << value.dstOffset << '\n';
	s << "\textent = " << value.extent << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkRenderPassBeginInfo& value)
{
	s << "VkRenderPassBeginInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\trenderPass = " << value.renderPass << '\n';
	s << "\tframebuffer = " << value.framebuffer << '\n';
	s << "\trenderArea = " << value.renderArea << '\n';
	s << "\tclearValueCount = " << value.clearValueCount << '\n';
	s << "\tpClearValues = " << value.pClearValues << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubgroupProperties& value)
{
	s << "VkPhysicalDeviceSubgroupProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsubgroupSize = " << value.subgroupSize << '\n';
	s << "\tsupportedStages = " << getShaderStageFlagsStr(value.supportedStages) << '\n';
	s << "\tsupportedOperations = " << getSubgroupFeatureFlagsStr(value.supportedOperations) << '\n';
	s << "\tquadOperationsInAllStages = " << value.quadOperationsInAllStages << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBindBufferMemoryInfo& value)
{
	s << "VkBindBufferMemoryInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tbuffer = " << value.buffer << '\n';
	s << "\tmemory = " << value.memory << '\n';
	s << "\tmemoryOffset = " << value.memoryOffset << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBindImageMemoryInfo& value)
{
	s << "VkBindImageMemoryInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\timage = " << value.image << '\n';
	s << "\tmemory = " << value.memory << '\n';
	s << "\tmemoryOffset = " << value.memoryOffset << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice16BitStorageFeatures& value)
{
	s << "VkPhysicalDevice16BitStorageFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tstorageBuffer16BitAccess = " << value.storageBuffer16BitAccess << '\n';
	s << "\tuniformAndStorageBuffer16BitAccess = " << value.uniformAndStorageBuffer16BitAccess << '\n';
	s << "\tstoragePushConstant16 = " << value.storagePushConstant16 << '\n';
	s << "\tstorageInputOutput16 = " << value.storageInputOutput16 << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMemoryDedicatedRequirements& value)
{
	s << "VkMemoryDedicatedRequirements = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tprefersDedicatedAllocation = " << value.prefersDedicatedAllocation << '\n';
	s << "\trequiresDedicatedAllocation = " << value.requiresDedicatedAllocation << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMemoryDedicatedAllocateInfo& value)
{
	s << "VkMemoryDedicatedAllocateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\timage = " << value.image << '\n';
	s << "\tbuffer = " << value.buffer << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMemoryAllocateFlagsInfo& value)
{
	s << "VkMemoryAllocateFlagsInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getMemoryAllocateFlagsStr(value.flags) << '\n';
	s << "\tdeviceMask = " << value.deviceMask << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceGroupRenderPassBeginInfo& value)
{
	s << "VkDeviceGroupRenderPassBeginInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdeviceMask = " << value.deviceMask << '\n';
	s << "\tdeviceRenderAreaCount = " << value.deviceRenderAreaCount << '\n';
	s << "\tpDeviceRenderAreas = " << value.pDeviceRenderAreas << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceGroupCommandBufferBeginInfo& value)
{
	s << "VkDeviceGroupCommandBufferBeginInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdeviceMask = " << value.deviceMask << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceGroupSubmitInfo& value)
{
	s << "VkDeviceGroupSubmitInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
	s << "\tpWaitSemaphoreDeviceIndices = " << value.pWaitSemaphoreDeviceIndices << '\n';
	s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
	s << "\tpCommandBufferDeviceMasks = " << value.pCommandBufferDeviceMasks << '\n';
	s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
	s << "\tpSignalSemaphoreDeviceIndices = " << value.pSignalSemaphoreDeviceIndices << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceGroupBindSparseInfo& value)
{
	s << "VkDeviceGroupBindSparseInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tresourceDeviceIndex = " << value.resourceDeviceIndex << '\n';
	s << "\tmemoryDeviceIndex = " << value.memoryDeviceIndex << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBindBufferMemoryDeviceGroupInfo& value)
{
	s << "VkBindBufferMemoryDeviceGroupInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdeviceIndexCount = " << value.deviceIndexCount << '\n';
	s << "\tpDeviceIndices = " << value.pDeviceIndices << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBindImageMemoryDeviceGroupInfo& value)
{
	s << "VkBindImageMemoryDeviceGroupInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdeviceIndexCount = " << value.deviceIndexCount << '\n';
	s << "\tpDeviceIndices = " << value.pDeviceIndices << '\n';
	s << "\tsplitInstanceBindRegionCount = " << value.splitInstanceBindRegionCount << '\n';
	s << "\tpSplitInstanceBindRegions = " << value.pSplitInstanceBindRegions << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceGroupProperties& value)
{
	s << "VkPhysicalDeviceGroupProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tphysicalDeviceCount = " << value.physicalDeviceCount << '\n';
	s << "\tphysicalDevices = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.physicalDevices), DE_ARRAY_END(value.physicalDevices)) << '\n';
	s << "\tsubsetAllocation = " << value.subsetAllocation << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceGroupDeviceCreateInfo& value)
{
	s << "VkDeviceGroupDeviceCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tphysicalDeviceCount = " << value.physicalDeviceCount << '\n';
	s << "\tpPhysicalDevices = " << value.pPhysicalDevices << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBufferMemoryRequirementsInfo2& value)
{
	s << "VkBufferMemoryRequirementsInfo2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tbuffer = " << value.buffer << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageMemoryRequirementsInfo2& value)
{
	s << "VkImageMemoryRequirementsInfo2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\timage = " << value.image << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageSparseMemoryRequirementsInfo2& value)
{
	s << "VkImageSparseMemoryRequirementsInfo2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\timage = " << value.image << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements2& value)
{
	s << "VkMemoryRequirements2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmemoryRequirements = " << value.memoryRequirements << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements2& value)
{
	s << "VkSparseImageMemoryRequirements2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmemoryRequirements = " << value.memoryRequirements << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures2& value)
{
	s << "VkPhysicalDeviceFeatures2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tfeatures = " << value.features << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProperties2& value)
{
	s << "VkPhysicalDeviceProperties2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tproperties = " << value.properties << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkFormatProperties2& value)
{
	s << "VkFormatProperties2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tformatProperties = " << value.formatProperties << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageFormatProperties2& value)
{
	s << "VkImageFormatProperties2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\timageFormatProperties = " << value.imageFormatProperties << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageFormatInfo2& value)
{
	s << "VkPhysicalDeviceImageFormatInfo2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tformat = " << value.format << '\n';
	s << "\ttype = " << value.type << '\n';
	s << "\ttiling = " << value.tiling << '\n';
	s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
	s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkQueueFamilyProperties2& value)
{
	s << "VkQueueFamilyProperties2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tqueueFamilyProperties = " << value.queueFamilyProperties << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties2& value)
{
	s << "VkPhysicalDeviceMemoryProperties2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmemoryProperties = " << value.memoryProperties << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties2& value)
{
	s << "VkSparseImageFormatProperties2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tproperties = " << value.properties << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSparseImageFormatInfo2& value)
{
	s << "VkPhysicalDeviceSparseImageFormatInfo2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tformat = " << value.format << '\n';
	s << "\ttype = " << value.type << '\n';
	s << "\tsamples = " << value.samples << '\n';
	s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
	s << "\ttiling = " << value.tiling << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePointClippingProperties& value)
{
	s << "VkPhysicalDevicePointClippingProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpointClippingBehavior = " << value.pointClippingBehavior << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkInputAttachmentAspectReference& value)
{
	s << "VkInputAttachmentAspectReference = {\n";
	s << "\tsubpass = " << value.subpass << '\n';
	s << "\tinputAttachmentIndex = " << value.inputAttachmentIndex << '\n';
	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkRenderPassInputAttachmentAspectCreateInfo& value)
{
	s << "VkRenderPassInputAttachmentAspectCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\taspectReferenceCount = " << value.aspectReferenceCount << '\n';
	s << "\tpAspectReferences = " << value.pAspectReferences << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageViewUsageCreateInfo& value)
{
	s << "VkImageViewUsageCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineTessellationDomainOriginStateCreateInfo& value)
{
	s << "VkPipelineTessellationDomainOriginStateCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdomainOrigin = " << value.domainOrigin << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkRenderPassMultiviewCreateInfo& value)
{
	s << "VkRenderPassMultiviewCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsubpassCount = " << value.subpassCount << '\n';
	s << "\tpViewMasks = " << value.pViewMasks << '\n';
	s << "\tdependencyCount = " << value.dependencyCount << '\n';
	s << "\tpViewOffsets = " << value.pViewOffsets << '\n';
	s << "\tcorrelationMaskCount = " << value.correlationMaskCount << '\n';
	s << "\tpCorrelationMasks = " << value.pCorrelationMasks << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewFeatures& value)
{
	s << "VkPhysicalDeviceMultiviewFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmultiview = " << value.multiview << '\n';
	s << "\tmultiviewGeometryShader = " << value.multiviewGeometryShader << '\n';
	s << "\tmultiviewTessellationShader = " << value.multiviewTessellationShader << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewProperties& value)
{
	s << "VkPhysicalDeviceMultiviewProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxMultiviewViewCount = " << value.maxMultiviewViewCount << '\n';
	s << "\tmaxMultiviewInstanceIndex = " << value.maxMultiviewInstanceIndex << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVariablePointersFeatures& value)
{
	s << "VkPhysicalDeviceVariablePointersFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tvariablePointersStorageBuffer = " << value.variablePointersStorageBuffer << '\n';
	s << "\tvariablePointers = " << value.variablePointers << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProtectedMemoryFeatures& value)
{
	s << "VkPhysicalDeviceProtectedMemoryFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tprotectedMemory = " << value.protectedMemory << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProtectedMemoryProperties& value)
{
	s << "VkPhysicalDeviceProtectedMemoryProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tprotectedNoFault = " << value.protectedNoFault << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceQueueInfo2& value)
{
	s << "VkDeviceQueueInfo2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getDeviceQueueCreateFlagsStr(value.flags) << '\n';
	s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
	s << "\tqueueIndex = " << value.queueIndex << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkProtectedSubmitInfo& value)
{
	s << "VkProtectedSubmitInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tprotectedSubmit = " << value.protectedSubmit << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionCreateInfo& value)
{
	s << "VkSamplerYcbcrConversionCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tformat = " << value.format << '\n';
	s << "\tycbcrModel = " << value.ycbcrModel << '\n';
	s << "\tycbcrRange = " << value.ycbcrRange << '\n';
	s << "\tcomponents = " << value.components << '\n';
	s << "\txChromaOffset = " << value.xChromaOffset << '\n';
	s << "\tyChromaOffset = " << value.yChromaOffset << '\n';
	s << "\tchromaFilter = " << value.chromaFilter << '\n';
	s << "\tforceExplicitReconstruction = " << value.forceExplicitReconstruction << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionInfo& value)
{
	s << "VkSamplerYcbcrConversionInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tconversion = " << value.conversion << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBindImagePlaneMemoryInfo& value)
{
	s << "VkBindImagePlaneMemoryInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tplaneAspect = " << value.planeAspect << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImagePlaneMemoryRequirementsInfo& value)
{
	s << "VkImagePlaneMemoryRequirementsInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tplaneAspect = " << value.planeAspect << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSamplerYcbcrConversionFeatures& value)
{
	s << "VkPhysicalDeviceSamplerYcbcrConversionFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsamplerYcbcrConversion = " << value.samplerYcbcrConversion << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionImageFormatProperties& value)
{
	s << "VkSamplerYcbcrConversionImageFormatProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcombinedImageSamplerDescriptorCount = " << value.combinedImageSamplerDescriptorCount << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDescriptorUpdateTemplateEntry& value)
{
	s << "VkDescriptorUpdateTemplateEntry = {\n";
	s << "\tdstBinding = " << value.dstBinding << '\n';
	s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
	s << "\tdescriptorCount = " << value.descriptorCount << '\n';
	s << "\tdescriptorType = " << value.descriptorType << '\n';
	s << "\toffset = " << value.offset << '\n';
	s << "\tstride = " << value.stride << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDescriptorUpdateTemplateCreateInfo& value)
{
	s << "VkDescriptorUpdateTemplateCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getDescriptorUpdateTemplateCreateFlagsStr(value.flags) << '\n';
	s << "\tdescriptorUpdateEntryCount = " << value.descriptorUpdateEntryCount << '\n';
	s << "\tpDescriptorUpdateEntries = " << value.pDescriptorUpdateEntries << '\n';
	s << "\ttemplateType = " << value.templateType << '\n';
	s << "\tdescriptorSetLayout = " << value.descriptorSetLayout << '\n';
	s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
	s << "\tpipelineLayout = " << value.pipelineLayout << '\n';
	s << "\tset = " << value.set << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkExternalMemoryProperties& value)
{
	s << "VkExternalMemoryProperties = {\n";
	s << "\texternalMemoryFeatures = " << getExternalMemoryFeatureFlagsStr(value.externalMemoryFeatures) << '\n';
	s << "\texportFromImportedHandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.exportFromImportedHandleTypes) << '\n';
	s << "\tcompatibleHandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.compatibleHandleTypes) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalImageFormatInfo& value)
{
	s << "VkPhysicalDeviceExternalImageFormatInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkExternalImageFormatProperties& value)
{
	s << "VkExternalImageFormatProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\texternalMemoryProperties = " << value.externalMemoryProperties << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalBufferInfo& value)
{
	s << "VkPhysicalDeviceExternalBufferInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getBufferCreateFlagsStr(value.flags) << '\n';
	s << "\tusage = " << getBufferUsageFlagsStr(value.usage) << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkExternalBufferProperties& value)
{
	s << "VkExternalBufferProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\texternalMemoryProperties = " << value.externalMemoryProperties << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceIDProperties& value)
{
	s << "VkPhysicalDeviceIDProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	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';
	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';
	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';
	s << "\tdeviceNodeMask = " << value.deviceNodeMask << '\n';
	s << "\tdeviceLUIDValid = " << value.deviceLUIDValid << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkExternalMemoryImageCreateInfo& value)
{
	s << "VkExternalMemoryImageCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.handleTypes) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkExternalMemoryBufferCreateInfo& value)
{
	s << "VkExternalMemoryBufferCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.handleTypes) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkExportMemoryAllocateInfo& value)
{
	s << "VkExportMemoryAllocateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.handleTypes) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalFenceInfo& value)
{
	s << "VkPhysicalDeviceExternalFenceInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkExternalFenceProperties& value)
{
	s << "VkExternalFenceProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\texportFromImportedHandleTypes = " << getExternalFenceHandleTypeFlagsStr(value.exportFromImportedHandleTypes) << '\n';
	s << "\tcompatibleHandleTypes = " << getExternalFenceHandleTypeFlagsStr(value.compatibleHandleTypes) << '\n';
	s << "\texternalFenceFeatures = " << getExternalFenceFeatureFlagsStr(value.externalFenceFeatures) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkExportFenceCreateInfo& value)
{
	s << "VkExportFenceCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\thandleTypes = " << getExternalFenceHandleTypeFlagsStr(value.handleTypes) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkExportSemaphoreCreateInfo& value)
{
	s << "VkExportSemaphoreCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\thandleTypes = " << getExternalSemaphoreHandleTypeFlagsStr(value.handleTypes) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalSemaphoreInfo& value)
{
	s << "VkPhysicalDeviceExternalSemaphoreInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkExternalSemaphoreProperties& value)
{
	s << "VkExternalSemaphoreProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\texportFromImportedHandleTypes = " << getExternalSemaphoreHandleTypeFlagsStr(value.exportFromImportedHandleTypes) << '\n';
	s << "\tcompatibleHandleTypes = " << getExternalSemaphoreHandleTypeFlagsStr(value.compatibleHandleTypes) << '\n';
	s << "\texternalSemaphoreFeatures = " << getExternalSemaphoreFeatureFlagsStr(value.externalSemaphoreFeatures) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMaintenance3Properties& value)
{
	s << "VkPhysicalDeviceMaintenance3Properties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxPerSetDescriptors = " << value.maxPerSetDescriptors << '\n';
	s << "\tmaxMemoryAllocationSize = " << value.maxMemoryAllocationSize << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutSupport& value)
{
	s << "VkDescriptorSetLayoutSupport = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsupported = " << value.supported << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderDrawParametersFeatures& value)
{
	s << "VkPhysicalDeviceShaderDrawParametersFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshaderDrawParameters = " << value.shaderDrawParameters << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan11Features& value)
{
	s << "VkPhysicalDeviceVulkan11Features = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tstorageBuffer16BitAccess = " << value.storageBuffer16BitAccess << '\n';
	s << "\tuniformAndStorageBuffer16BitAccess = " << value.uniformAndStorageBuffer16BitAccess << '\n';
	s << "\tstoragePushConstant16 = " << value.storagePushConstant16 << '\n';
	s << "\tstorageInputOutput16 = " << value.storageInputOutput16 << '\n';
	s << "\tmultiview = " << value.multiview << '\n';
	s << "\tmultiviewGeometryShader = " << value.multiviewGeometryShader << '\n';
	s << "\tmultiviewTessellationShader = " << value.multiviewTessellationShader << '\n';
	s << "\tvariablePointersStorageBuffer = " << value.variablePointersStorageBuffer << '\n';
	s << "\tvariablePointers = " << value.variablePointers << '\n';
	s << "\tprotectedMemory = " << value.protectedMemory << '\n';
	s << "\tsamplerYcbcrConversion = " << value.samplerYcbcrConversion << '\n';
	s << "\tshaderDrawParameters = " << value.shaderDrawParameters << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan11Properties& value)
{
	s << "VkPhysicalDeviceVulkan11Properties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	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';
	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';
	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';
	s << "\tdeviceNodeMask = " << value.deviceNodeMask << '\n';
	s << "\tdeviceLUIDValid = " << value.deviceLUIDValid << '\n';
	s << "\tsubgroupSize = " << value.subgroupSize << '\n';
	s << "\tsubgroupSupportedStages = " << getShaderStageFlagsStr(value.subgroupSupportedStages) << '\n';
	s << "\tsubgroupSupportedOperations = " << getSubgroupFeatureFlagsStr(value.subgroupSupportedOperations) << '\n';
	s << "\tsubgroupQuadOperationsInAllStages = " << value.subgroupQuadOperationsInAllStages << '\n';
	s << "\tpointClippingBehavior = " << value.pointClippingBehavior << '\n';
	s << "\tmaxMultiviewViewCount = " << value.maxMultiviewViewCount << '\n';
	s << "\tmaxMultiviewInstanceIndex = " << value.maxMultiviewInstanceIndex << '\n';
	s << "\tprotectedNoFault = " << value.protectedNoFault << '\n';
	s << "\tmaxPerSetDescriptors = " << value.maxPerSetDescriptors << '\n';
	s << "\tmaxMemoryAllocationSize = " << value.maxMemoryAllocationSize << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan12Features& value)
{
	s << "VkPhysicalDeviceVulkan12Features = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsamplerMirrorClampToEdge = " << value.samplerMirrorClampToEdge << '\n';
	s << "\tdrawIndirectCount = " << value.drawIndirectCount << '\n';
	s << "\tstorageBuffer8BitAccess = " << value.storageBuffer8BitAccess << '\n';
	s << "\tuniformAndStorageBuffer8BitAccess = " << value.uniformAndStorageBuffer8BitAccess << '\n';
	s << "\tstoragePushConstant8 = " << value.storagePushConstant8 << '\n';
	s << "\tshaderBufferInt64Atomics = " << value.shaderBufferInt64Atomics << '\n';
	s << "\tshaderSharedInt64Atomics = " << value.shaderSharedInt64Atomics << '\n';
	s << "\tshaderFloat16 = " << value.shaderFloat16 << '\n';
	s << "\tshaderInt8 = " << value.shaderInt8 << '\n';
	s << "\tdescriptorIndexing = " << value.descriptorIndexing << '\n';
	s << "\tshaderInputAttachmentArrayDynamicIndexing = " << value.shaderInputAttachmentArrayDynamicIndexing << '\n';
	s << "\tshaderUniformTexelBufferArrayDynamicIndexing = " << value.shaderUniformTexelBufferArrayDynamicIndexing << '\n';
	s << "\tshaderStorageTexelBufferArrayDynamicIndexing = " << value.shaderStorageTexelBufferArrayDynamicIndexing << '\n';
	s << "\tshaderUniformBufferArrayNonUniformIndexing = " << value.shaderUniformBufferArrayNonUniformIndexing << '\n';
	s << "\tshaderSampledImageArrayNonUniformIndexing = " << value.shaderSampledImageArrayNonUniformIndexing << '\n';
	s << "\tshaderStorageBufferArrayNonUniformIndexing = " << value.shaderStorageBufferArrayNonUniformIndexing << '\n';
	s << "\tshaderStorageImageArrayNonUniformIndexing = " << value.shaderStorageImageArrayNonUniformIndexing << '\n';
	s << "\tshaderInputAttachmentArrayNonUniformIndexing = " << value.shaderInputAttachmentArrayNonUniformIndexing << '\n';
	s << "\tshaderUniformTexelBufferArrayNonUniformIndexing = " << value.shaderUniformTexelBufferArrayNonUniformIndexing << '\n';
	s << "\tshaderStorageTexelBufferArrayNonUniformIndexing = " << value.shaderStorageTexelBufferArrayNonUniformIndexing << '\n';
	s << "\tdescriptorBindingUniformBufferUpdateAfterBind = " << value.descriptorBindingUniformBufferUpdateAfterBind << '\n';
	s << "\tdescriptorBindingSampledImageUpdateAfterBind = " << value.descriptorBindingSampledImageUpdateAfterBind << '\n';
	s << "\tdescriptorBindingStorageImageUpdateAfterBind = " << value.descriptorBindingStorageImageUpdateAfterBind << '\n';
	s << "\tdescriptorBindingStorageBufferUpdateAfterBind = " << value.descriptorBindingStorageBufferUpdateAfterBind << '\n';
	s << "\tdescriptorBindingUniformTexelBufferUpdateAfterBind = " << value.descriptorBindingUniformTexelBufferUpdateAfterBind << '\n';
	s << "\tdescriptorBindingStorageTexelBufferUpdateAfterBind = " << value.descriptorBindingStorageTexelBufferUpdateAfterBind << '\n';
	s << "\tdescriptorBindingUpdateUnusedWhilePending = " << value.descriptorBindingUpdateUnusedWhilePending << '\n';
	s << "\tdescriptorBindingPartiallyBound = " << value.descriptorBindingPartiallyBound << '\n';
	s << "\tdescriptorBindingVariableDescriptorCount = " << value.descriptorBindingVariableDescriptorCount << '\n';
	s << "\truntimeDescriptorArray = " << value.runtimeDescriptorArray << '\n';
	s << "\tsamplerFilterMinmax = " << value.samplerFilterMinmax << '\n';
	s << "\tscalarBlockLayout = " << value.scalarBlockLayout << '\n';
	s << "\timagelessFramebuffer = " << value.imagelessFramebuffer << '\n';
	s << "\tuniformBufferStandardLayout = " << value.uniformBufferStandardLayout << '\n';
	s << "\tshaderSubgroupExtendedTypes = " << value.shaderSubgroupExtendedTypes << '\n';
	s << "\tseparateDepthStencilLayouts = " << value.separateDepthStencilLayouts << '\n';
	s << "\thostQueryReset = " << value.hostQueryReset << '\n';
	s << "\ttimelineSemaphore = " << value.timelineSemaphore << '\n';
	s << "\tbufferDeviceAddress = " << value.bufferDeviceAddress << '\n';
	s << "\tbufferDeviceAddressCaptureReplay = " << value.bufferDeviceAddressCaptureReplay << '\n';
	s << "\tbufferDeviceAddressMultiDevice = " << value.bufferDeviceAddressMultiDevice << '\n';
	s << "\tvulkanMemoryModel = " << value.vulkanMemoryModel << '\n';
	s << "\tvulkanMemoryModelDeviceScope = " << value.vulkanMemoryModelDeviceScope << '\n';
	s << "\tvulkanMemoryModelAvailabilityVisibilityChains = " << value.vulkanMemoryModelAvailabilityVisibilityChains << '\n';
	s << "\tshaderOutputViewportIndex = " << value.shaderOutputViewportIndex << '\n';
	s << "\tshaderOutputLayer = " << value.shaderOutputLayer << '\n';
	s << "\tsubgroupBroadcastDynamicId = " << value.subgroupBroadcastDynamicId << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkConformanceVersion& value)
{
	s << "VkConformanceVersion = {\n";
	s << "\tmajor = " << value.major << '\n';
	s << "\tminor = " << value.minor << '\n';
	s << "\tsubminor = " << value.subminor << '\n';
	s << "\tpatch = " << value.patch << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan12Properties& value)
{
	s << "VkPhysicalDeviceVulkan12Properties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdriverID = " << value.driverID << '\n';
	s << "\tdriverName = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverName)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverName))) << '\n';
	s << "\tdriverInfo = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverInfo)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverInfo))) << '\n';
	s << "\tconformanceVersion = " << value.conformanceVersion << '\n';
	s << "\tdenormBehaviorIndependence = " << value.denormBehaviorIndependence << '\n';
	s << "\troundingModeIndependence = " << value.roundingModeIndependence << '\n';
	s << "\tshaderSignedZeroInfNanPreserveFloat16 = " << value.shaderSignedZeroInfNanPreserveFloat16 << '\n';
	s << "\tshaderSignedZeroInfNanPreserveFloat32 = " << value.shaderSignedZeroInfNanPreserveFloat32 << '\n';
	s << "\tshaderSignedZeroInfNanPreserveFloat64 = " << value.shaderSignedZeroInfNanPreserveFloat64 << '\n';
	s << "\tshaderDenormPreserveFloat16 = " << value.shaderDenormPreserveFloat16 << '\n';
	s << "\tshaderDenormPreserveFloat32 = " << value.shaderDenormPreserveFloat32 << '\n';
	s << "\tshaderDenormPreserveFloat64 = " << value.shaderDenormPreserveFloat64 << '\n';
	s << "\tshaderDenormFlushToZeroFloat16 = " << value.shaderDenormFlushToZeroFloat16 << '\n';
	s << "\tshaderDenormFlushToZeroFloat32 = " << value.shaderDenormFlushToZeroFloat32 << '\n';
	s << "\tshaderDenormFlushToZeroFloat64 = " << value.shaderDenormFlushToZeroFloat64 << '\n';
	s << "\tshaderRoundingModeRTEFloat16 = " << value.shaderRoundingModeRTEFloat16 << '\n';
	s << "\tshaderRoundingModeRTEFloat32 = " << value.shaderRoundingModeRTEFloat32 << '\n';
	s << "\tshaderRoundingModeRTEFloat64 = " << value.shaderRoundingModeRTEFloat64 << '\n';
	s << "\tshaderRoundingModeRTZFloat16 = " << value.shaderRoundingModeRTZFloat16 << '\n';
	s << "\tshaderRoundingModeRTZFloat32 = " << value.shaderRoundingModeRTZFloat32 << '\n';
	s << "\tshaderRoundingModeRTZFloat64 = " << value.shaderRoundingModeRTZFloat64 << '\n';
	s << "\tmaxUpdateAfterBindDescriptorsInAllPools = " << value.maxUpdateAfterBindDescriptorsInAllPools << '\n';
	s << "\tshaderUniformBufferArrayNonUniformIndexingNative = " << value.shaderUniformBufferArrayNonUniformIndexingNative << '\n';
	s << "\tshaderSampledImageArrayNonUniformIndexingNative = " << value.shaderSampledImageArrayNonUniformIndexingNative << '\n';
	s << "\tshaderStorageBufferArrayNonUniformIndexingNative = " << value.shaderStorageBufferArrayNonUniformIndexingNative << '\n';
	s << "\tshaderStorageImageArrayNonUniformIndexingNative = " << value.shaderStorageImageArrayNonUniformIndexingNative << '\n';
	s << "\tshaderInputAttachmentArrayNonUniformIndexingNative = " << value.shaderInputAttachmentArrayNonUniformIndexingNative << '\n';
	s << "\trobustBufferAccessUpdateAfterBind = " << value.robustBufferAccessUpdateAfterBind << '\n';
	s << "\tquadDivergentImplicitLod = " << value.quadDivergentImplicitLod << '\n';
	s << "\tmaxPerStageDescriptorUpdateAfterBindSamplers = " << value.maxPerStageDescriptorUpdateAfterBindSamplers << '\n';
	s << "\tmaxPerStageDescriptorUpdateAfterBindUniformBuffers = " << value.maxPerStageDescriptorUpdateAfterBindUniformBuffers << '\n';
	s << "\tmaxPerStageDescriptorUpdateAfterBindStorageBuffers = " << value.maxPerStageDescriptorUpdateAfterBindStorageBuffers << '\n';
	s << "\tmaxPerStageDescriptorUpdateAfterBindSampledImages = " << value.maxPerStageDescriptorUpdateAfterBindSampledImages << '\n';
	s << "\tmaxPerStageDescriptorUpdateAfterBindStorageImages = " << value.maxPerStageDescriptorUpdateAfterBindStorageImages << '\n';
	s << "\tmaxPerStageDescriptorUpdateAfterBindInputAttachments = " << value.maxPerStageDescriptorUpdateAfterBindInputAttachments << '\n';
	s << "\tmaxPerStageUpdateAfterBindResources = " << value.maxPerStageUpdateAfterBindResources << '\n';
	s << "\tmaxDescriptorSetUpdateAfterBindSamplers = " << value.maxDescriptorSetUpdateAfterBindSamplers << '\n';
	s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffers = " << value.maxDescriptorSetUpdateAfterBindUniformBuffers << '\n';
	s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic << '\n';
	s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffers = " << value.maxDescriptorSetUpdateAfterBindStorageBuffers << '\n';
	s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic << '\n';
	s << "\tmaxDescriptorSetUpdateAfterBindSampledImages = " << value.maxDescriptorSetUpdateAfterBindSampledImages << '\n';
	s << "\tmaxDescriptorSetUpdateAfterBindStorageImages = " << value.maxDescriptorSetUpdateAfterBindStorageImages << '\n';
	s << "\tmaxDescriptorSetUpdateAfterBindInputAttachments = " << value.maxDescriptorSetUpdateAfterBindInputAttachments << '\n';
	s << "\tsupportedDepthResolveModes = " << getResolveModeFlagsStr(value.supportedDepthResolveModes) << '\n';
	s << "\tsupportedStencilResolveModes = " << getResolveModeFlagsStr(value.supportedStencilResolveModes) << '\n';
	s << "\tindependentResolveNone = " << value.independentResolveNone << '\n';
	s << "\tindependentResolve = " << value.independentResolve << '\n';
	s << "\tfilterMinmaxSingleComponentFormats = " << value.filterMinmaxSingleComponentFormats << '\n';
	s << "\tfilterMinmaxImageComponentMapping = " << value.filterMinmaxImageComponentMapping << '\n';
	s << "\tmaxTimelineSemaphoreValueDifference = " << value.maxTimelineSemaphoreValueDifference << '\n';
	s << "\tframebufferIntegerColorSampleCounts = " << getSampleCountFlagsStr(value.framebufferIntegerColorSampleCounts) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageFormatListCreateInfo& value)
{
	s << "VkImageFormatListCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tviewFormatCount = " << value.viewFormatCount << '\n';
	s << "\tpViewFormats = " << value.pViewFormats << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription2& value)
{
	s << "VkAttachmentDescription2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getAttachmentDescriptionFlagsStr(value.flags) << '\n';
	s << "\tformat = " << value.format << '\n';
	s << "\tsamples = " << value.samples << '\n';
	s << "\tloadOp = " << value.loadOp << '\n';
	s << "\tstoreOp = " << value.storeOp << '\n';
	s << "\tstencilLoadOp = " << value.stencilLoadOp << '\n';
	s << "\tstencilStoreOp = " << value.stencilStoreOp << '\n';
	s << "\tinitialLayout = " << value.initialLayout << '\n';
	s << "\tfinalLayout = " << value.finalLayout << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAttachmentReference2& value)
{
	s << "VkAttachmentReference2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tattachment = " << value.attachment << '\n';
	s << "\tlayout = " << value.layout << '\n';
	s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSubpassDescription2& value)
{
	s << "VkSubpassDescription2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getSubpassDescriptionFlagsStr(value.flags) << '\n';
	s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
	s << "\tviewMask = " << value.viewMask << '\n';
	s << "\tinputAttachmentCount = " << value.inputAttachmentCount << '\n';
	s << "\tpInputAttachments = " << value.pInputAttachments << '\n';
	s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
	s << "\tpColorAttachments = " << value.pColorAttachments << '\n';
	s << "\tpResolveAttachments = " << value.pResolveAttachments << '\n';
	s << "\tpDepthStencilAttachment = " << value.pDepthStencilAttachment << '\n';
	s << "\tpreserveAttachmentCount = " << value.preserveAttachmentCount << '\n';
	s << "\tpPreserveAttachments = " << value.pPreserveAttachments << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSubpassDependency2& value)
{
	s << "VkSubpassDependency2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrcSubpass = " << value.srcSubpass << '\n';
	s << "\tdstSubpass = " << value.dstSubpass << '\n';
	s << "\tsrcStageMask = " << getPipelineStageFlagsStr(value.srcStageMask) << '\n';
	s << "\tdstStageMask = " << getPipelineStageFlagsStr(value.dstStageMask) << '\n';
	s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
	s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
	s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
	s << "\tviewOffset = " << value.viewOffset << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo2& value)
{
	s << "VkRenderPassCreateInfo2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getRenderPassCreateFlagsStr(value.flags) << '\n';
	s << "\tattachmentCount = " << value.attachmentCount << '\n';
	s << "\tpAttachments = " << value.pAttachments << '\n';
	s << "\tsubpassCount = " << value.subpassCount << '\n';
	s << "\tpSubpasses = " << value.pSubpasses << '\n';
	s << "\tdependencyCount = " << value.dependencyCount << '\n';
	s << "\tpDependencies = " << value.pDependencies << '\n';
	s << "\tcorrelatedViewMaskCount = " << value.correlatedViewMaskCount << '\n';
	s << "\tpCorrelatedViewMasks = " << value.pCorrelatedViewMasks << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSubpassBeginInfo& value)
{
	s << "VkSubpassBeginInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcontents = " << value.contents << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSubpassEndInfo& value)
{
	s << "VkSubpassEndInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice8BitStorageFeatures& value)
{
	s << "VkPhysicalDevice8BitStorageFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tstorageBuffer8BitAccess = " << value.storageBuffer8BitAccess << '\n';
	s << "\tuniformAndStorageBuffer8BitAccess = " << value.uniformAndStorageBuffer8BitAccess << '\n';
	s << "\tstoragePushConstant8 = " << value.storagePushConstant8 << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDriverProperties& value)
{
	s << "VkPhysicalDeviceDriverProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdriverID = " << value.driverID << '\n';
	s << "\tdriverName = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverName)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverName))) << '\n';
	s << "\tdriverInfo = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverInfo)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverInfo))) << '\n';
	s << "\tconformanceVersion = " << value.conformanceVersion << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderAtomicInt64Features& value)
{
	s << "VkPhysicalDeviceShaderAtomicInt64Features = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshaderBufferInt64Atomics = " << value.shaderBufferInt64Atomics << '\n';
	s << "\tshaderSharedInt64Atomics = " << value.shaderSharedInt64Atomics << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderFloat16Int8Features& value)
{
	s << "VkPhysicalDeviceShaderFloat16Int8Features = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshaderFloat16 = " << value.shaderFloat16 << '\n';
	s << "\tshaderInt8 = " << value.shaderInt8 << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFloatControlsProperties& value)
{
	s << "VkPhysicalDeviceFloatControlsProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdenormBehaviorIndependence = " << value.denormBehaviorIndependence << '\n';
	s << "\troundingModeIndependence = " << value.roundingModeIndependence << '\n';
	s << "\tshaderSignedZeroInfNanPreserveFloat16 = " << value.shaderSignedZeroInfNanPreserveFloat16 << '\n';
	s << "\tshaderSignedZeroInfNanPreserveFloat32 = " << value.shaderSignedZeroInfNanPreserveFloat32 << '\n';
	s << "\tshaderSignedZeroInfNanPreserveFloat64 = " << value.shaderSignedZeroInfNanPreserveFloat64 << '\n';
	s << "\tshaderDenormPreserveFloat16 = " << value.shaderDenormPreserveFloat16 << '\n';
	s << "\tshaderDenormPreserveFloat32 = " << value.shaderDenormPreserveFloat32 << '\n';
	s << "\tshaderDenormPreserveFloat64 = " << value.shaderDenormPreserveFloat64 << '\n';
	s << "\tshaderDenormFlushToZeroFloat16 = " << value.shaderDenormFlushToZeroFloat16 << '\n';
	s << "\tshaderDenormFlushToZeroFloat32 = " << value.shaderDenormFlushToZeroFloat32 << '\n';
	s << "\tshaderDenormFlushToZeroFloat64 = " << value.shaderDenormFlushToZeroFloat64 << '\n';
	s << "\tshaderRoundingModeRTEFloat16 = " << value.shaderRoundingModeRTEFloat16 << '\n';
	s << "\tshaderRoundingModeRTEFloat32 = " << value.shaderRoundingModeRTEFloat32 << '\n';
	s << "\tshaderRoundingModeRTEFloat64 = " << value.shaderRoundingModeRTEFloat64 << '\n';
	s << "\tshaderRoundingModeRTZFloat16 = " << value.shaderRoundingModeRTZFloat16 << '\n';
	s << "\tshaderRoundingModeRTZFloat32 = " << value.shaderRoundingModeRTZFloat32 << '\n';
	s << "\tshaderRoundingModeRTZFloat64 = " << value.shaderRoundingModeRTZFloat64 << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBindingFlagsCreateInfo& value)
{
	s << "VkDescriptorSetLayoutBindingFlagsCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tbindingCount = " << value.bindingCount << '\n';
	s << "\tpBindingFlags = " << value.pBindingFlags << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingFeatures& value)
{
	s << "VkPhysicalDeviceDescriptorIndexingFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshaderInputAttachmentArrayDynamicIndexing = " << value.shaderInputAttachmentArrayDynamicIndexing << '\n';
	s << "\tshaderUniformTexelBufferArrayDynamicIndexing = " << value.shaderUniformTexelBufferArrayDynamicIndexing << '\n';
	s << "\tshaderStorageTexelBufferArrayDynamicIndexing = " << value.shaderStorageTexelBufferArrayDynamicIndexing << '\n';
	s << "\tshaderUniformBufferArrayNonUniformIndexing = " << value.shaderUniformBufferArrayNonUniformIndexing << '\n';
	s << "\tshaderSampledImageArrayNonUniformIndexing = " << value.shaderSampledImageArrayNonUniformIndexing << '\n';
	s << "\tshaderStorageBufferArrayNonUniformIndexing = " << value.shaderStorageBufferArrayNonUniformIndexing << '\n';
	s << "\tshaderStorageImageArrayNonUniformIndexing = " << value.shaderStorageImageArrayNonUniformIndexing << '\n';
	s << "\tshaderInputAttachmentArrayNonUniformIndexing = " << value.shaderInputAttachmentArrayNonUniformIndexing << '\n';
	s << "\tshaderUniformTexelBufferArrayNonUniformIndexing = " << value.shaderUniformTexelBufferArrayNonUniformIndexing << '\n';
	s << "\tshaderStorageTexelBufferArrayNonUniformIndexing = " << value.shaderStorageTexelBufferArrayNonUniformIndexing << '\n';
	s << "\tdescriptorBindingUniformBufferUpdateAfterBind = " << value.descriptorBindingUniformBufferUpdateAfterBind << '\n';
	s << "\tdescriptorBindingSampledImageUpdateAfterBind = " << value.descriptorBindingSampledImageUpdateAfterBind << '\n';
	s << "\tdescriptorBindingStorageImageUpdateAfterBind = " << value.descriptorBindingStorageImageUpdateAfterBind << '\n';
	s << "\tdescriptorBindingStorageBufferUpdateAfterBind = " << value.descriptorBindingStorageBufferUpdateAfterBind << '\n';
	s << "\tdescriptorBindingUniformTexelBufferUpdateAfterBind = " << value.descriptorBindingUniformTexelBufferUpdateAfterBind << '\n';
	s << "\tdescriptorBindingStorageTexelBufferUpdateAfterBind = " << value.descriptorBindingStorageTexelBufferUpdateAfterBind << '\n';
	s << "\tdescriptorBindingUpdateUnusedWhilePending = " << value.descriptorBindingUpdateUnusedWhilePending << '\n';
	s << "\tdescriptorBindingPartiallyBound = " << value.descriptorBindingPartiallyBound << '\n';
	s << "\tdescriptorBindingVariableDescriptorCount = " << value.descriptorBindingVariableDescriptorCount << '\n';
	s << "\truntimeDescriptorArray = " << value.runtimeDescriptorArray << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingProperties& value)
{
	s << "VkPhysicalDeviceDescriptorIndexingProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxUpdateAfterBindDescriptorsInAllPools = " << value.maxUpdateAfterBindDescriptorsInAllPools << '\n';
	s << "\tshaderUniformBufferArrayNonUniformIndexingNative = " << value.shaderUniformBufferArrayNonUniformIndexingNative << '\n';
	s << "\tshaderSampledImageArrayNonUniformIndexingNative = " << value.shaderSampledImageArrayNonUniformIndexingNative << '\n';
	s << "\tshaderStorageBufferArrayNonUniformIndexingNative = " << value.shaderStorageBufferArrayNonUniformIndexingNative << '\n';
	s << "\tshaderStorageImageArrayNonUniformIndexingNative = " << value.shaderStorageImageArrayNonUniformIndexingNative << '\n';
	s << "\tshaderInputAttachmentArrayNonUniformIndexingNative = " << value.shaderInputAttachmentArrayNonUniformIndexingNative << '\n';
	s << "\trobustBufferAccessUpdateAfterBind = " << value.robustBufferAccessUpdateAfterBind << '\n';
	s << "\tquadDivergentImplicitLod = " << value.quadDivergentImplicitLod << '\n';
	s << "\tmaxPerStageDescriptorUpdateAfterBindSamplers = " << value.maxPerStageDescriptorUpdateAfterBindSamplers << '\n';
	s << "\tmaxPerStageDescriptorUpdateAfterBindUniformBuffers = " << value.maxPerStageDescriptorUpdateAfterBindUniformBuffers << '\n';
	s << "\tmaxPerStageDescriptorUpdateAfterBindStorageBuffers = " << value.maxPerStageDescriptorUpdateAfterBindStorageBuffers << '\n';
	s << "\tmaxPerStageDescriptorUpdateAfterBindSampledImages = " << value.maxPerStageDescriptorUpdateAfterBindSampledImages << '\n';
	s << "\tmaxPerStageDescriptorUpdateAfterBindStorageImages = " << value.maxPerStageDescriptorUpdateAfterBindStorageImages << '\n';
	s << "\tmaxPerStageDescriptorUpdateAfterBindInputAttachments = " << value.maxPerStageDescriptorUpdateAfterBindInputAttachments << '\n';
	s << "\tmaxPerStageUpdateAfterBindResources = " << value.maxPerStageUpdateAfterBindResources << '\n';
	s << "\tmaxDescriptorSetUpdateAfterBindSamplers = " << value.maxDescriptorSetUpdateAfterBindSamplers << '\n';
	s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffers = " << value.maxDescriptorSetUpdateAfterBindUniformBuffers << '\n';
	s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic << '\n';
	s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffers = " << value.maxDescriptorSetUpdateAfterBindStorageBuffers << '\n';
	s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic << '\n';
	s << "\tmaxDescriptorSetUpdateAfterBindSampledImages = " << value.maxDescriptorSetUpdateAfterBindSampledImages << '\n';
	s << "\tmaxDescriptorSetUpdateAfterBindStorageImages = " << value.maxDescriptorSetUpdateAfterBindStorageImages << '\n';
	s << "\tmaxDescriptorSetUpdateAfterBindInputAttachments = " << value.maxDescriptorSetUpdateAfterBindInputAttachments << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountAllocateInfo& value)
{
	s << "VkDescriptorSetVariableDescriptorCountAllocateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdescriptorSetCount = " << value.descriptorSetCount << '\n';
	s << "\tpDescriptorCounts = " << value.pDescriptorCounts << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountLayoutSupport& value)
{
	s << "VkDescriptorSetVariableDescriptorCountLayoutSupport = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxVariableDescriptorCount = " << value.maxVariableDescriptorCount << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSubpassDescriptionDepthStencilResolve& value)
{
	s << "VkSubpassDescriptionDepthStencilResolve = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdepthResolveMode = " << value.depthResolveMode << '\n';
	s << "\tstencilResolveMode = " << value.stencilResolveMode << '\n';
	s << "\tpDepthStencilResolveAttachment = " << value.pDepthStencilResolveAttachment << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDepthStencilResolveProperties& value)
{
	s << "VkPhysicalDeviceDepthStencilResolveProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsupportedDepthResolveModes = " << getResolveModeFlagsStr(value.supportedDepthResolveModes) << '\n';
	s << "\tsupportedStencilResolveModes = " << getResolveModeFlagsStr(value.supportedStencilResolveModes) << '\n';
	s << "\tindependentResolveNone = " << value.independentResolveNone << '\n';
	s << "\tindependentResolve = " << value.independentResolve << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceScalarBlockLayoutFeatures& value)
{
	s << "VkPhysicalDeviceScalarBlockLayoutFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tscalarBlockLayout = " << value.scalarBlockLayout << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageStencilUsageCreateInfo& value)
{
	s << "VkImageStencilUsageCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tstencilUsage = " << getImageUsageFlagsStr(value.stencilUsage) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSamplerReductionModeCreateInfo& value)
{
	s << "VkSamplerReductionModeCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\treductionMode = " << value.reductionMode << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSamplerFilterMinmaxProperties& value)
{
	s << "VkPhysicalDeviceSamplerFilterMinmaxProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tfilterMinmaxSingleComponentFormats = " << value.filterMinmaxSingleComponentFormats << '\n';
	s << "\tfilterMinmaxImageComponentMapping = " << value.filterMinmaxImageComponentMapping << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkanMemoryModelFeatures& value)
{
	s << "VkPhysicalDeviceVulkanMemoryModelFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tvulkanMemoryModel = " << value.vulkanMemoryModel << '\n';
	s << "\tvulkanMemoryModelDeviceScope = " << value.vulkanMemoryModelDeviceScope << '\n';
	s << "\tvulkanMemoryModelAvailabilityVisibilityChains = " << value.vulkanMemoryModelAvailabilityVisibilityChains << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImagelessFramebufferFeatures& value)
{
	s << "VkPhysicalDeviceImagelessFramebufferFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\timagelessFramebuffer = " << value.imagelessFramebuffer << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkFramebufferAttachmentImageInfo& value)
{
	s << "VkFramebufferAttachmentImageInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
	s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
	s << "\twidth = " << value.width << '\n';
	s << "\theight = " << value.height << '\n';
	s << "\tlayerCount = " << value.layerCount << '\n';
	s << "\tviewFormatCount = " << value.viewFormatCount << '\n';
	s << "\tpViewFormats = " << value.pViewFormats << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkFramebufferAttachmentsCreateInfo& value)
{
	s << "VkFramebufferAttachmentsCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tattachmentImageInfoCount = " << value.attachmentImageInfoCount << '\n';
	s << "\tpAttachmentImageInfos = " << value.pAttachmentImageInfos << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkRenderPassAttachmentBeginInfo& value)
{
	s << "VkRenderPassAttachmentBeginInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tattachmentCount = " << value.attachmentCount << '\n';
	s << "\tpAttachments = " << value.pAttachments << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceUniformBufferStandardLayoutFeatures& value)
{
	s << "VkPhysicalDeviceUniformBufferStandardLayoutFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tuniformBufferStandardLayout = " << value.uniformBufferStandardLayout << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures& value)
{
	s << "VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshaderSubgroupExtendedTypes = " << value.shaderSubgroupExtendedTypes << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures& value)
{
	s << "VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tseparateDepthStencilLayouts = " << value.separateDepthStencilLayouts << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAttachmentReferenceStencilLayout& value)
{
	s << "VkAttachmentReferenceStencilLayout = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tstencilLayout = " << value.stencilLayout << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAttachmentDescriptionStencilLayout& value)
{
	s << "VkAttachmentDescriptionStencilLayout = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tstencilInitialLayout = " << value.stencilInitialLayout << '\n';
	s << "\tstencilFinalLayout = " << value.stencilFinalLayout << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceHostQueryResetFeatures& value)
{
	s << "VkPhysicalDeviceHostQueryResetFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\thostQueryReset = " << value.hostQueryReset << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTimelineSemaphoreFeatures& value)
{
	s << "VkPhysicalDeviceTimelineSemaphoreFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\ttimelineSemaphore = " << value.timelineSemaphore << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTimelineSemaphoreProperties& value)
{
	s << "VkPhysicalDeviceTimelineSemaphoreProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxTimelineSemaphoreValueDifference = " << value.maxTimelineSemaphoreValueDifference << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSemaphoreTypeCreateInfo& value)
{
	s << "VkSemaphoreTypeCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsemaphoreType = " << value.semaphoreType << '\n';
	s << "\tinitialValue = " << value.initialValue << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkTimelineSemaphoreSubmitInfo& value)
{
	s << "VkTimelineSemaphoreSubmitInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\twaitSemaphoreValueCount = " << value.waitSemaphoreValueCount << '\n';
	s << "\tpWaitSemaphoreValues = " << value.pWaitSemaphoreValues << '\n';
	s << "\tsignalSemaphoreValueCount = " << value.signalSemaphoreValueCount << '\n';
	s << "\tpSignalSemaphoreValues = " << value.pSignalSemaphoreValues << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSemaphoreWaitInfo& value)
{
	s << "VkSemaphoreWaitInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getSemaphoreWaitFlagsStr(value.flags) << '\n';
	s << "\tsemaphoreCount = " << value.semaphoreCount << '\n';
	s << "\tpSemaphores = " << value.pSemaphores << '\n';
	s << "\tpValues = " << value.pValues << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSemaphoreSignalInfo& value)
{
	s << "VkSemaphoreSignalInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsemaphore = " << value.semaphore << '\n';
	s << "\tvalue = " << value.value << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBufferDeviceAddressFeatures& value)
{
	s << "VkPhysicalDeviceBufferDeviceAddressFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tbufferDeviceAddress = " << value.bufferDeviceAddress << '\n';
	s << "\tbufferDeviceAddressCaptureReplay = " << value.bufferDeviceAddressCaptureReplay << '\n';
	s << "\tbufferDeviceAddressMultiDevice = " << value.bufferDeviceAddressMultiDevice << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBufferDeviceAddressInfo& value)
{
	s << "VkBufferDeviceAddressInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tbuffer = " << value.buffer << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBufferOpaqueCaptureAddressCreateInfo& value)
{
	s << "VkBufferOpaqueCaptureAddressCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\topaqueCaptureAddress = " << value.opaqueCaptureAddress << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMemoryOpaqueCaptureAddressAllocateInfo& value)
{
	s << "VkMemoryOpaqueCaptureAddressAllocateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\topaqueCaptureAddress = " << value.opaqueCaptureAddress << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceMemoryOpaqueCaptureAddressInfo& value)
{
	s << "VkDeviceMemoryOpaqueCaptureAddressInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmemory = " << value.memory << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan13Features& value)
{
	s << "VkPhysicalDeviceVulkan13Features = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\trobustImageAccess = " << value.robustImageAccess << '\n';
	s << "\tinlineUniformBlock = " << value.inlineUniformBlock << '\n';
	s << "\tdescriptorBindingInlineUniformBlockUpdateAfterBind = " << value.descriptorBindingInlineUniformBlockUpdateAfterBind << '\n';
	s << "\tpipelineCreationCacheControl = " << value.pipelineCreationCacheControl << '\n';
	s << "\tprivateData = " << value.privateData << '\n';
	s << "\tshaderDemoteToHelperInvocation = " << value.shaderDemoteToHelperInvocation << '\n';
	s << "\tshaderTerminateInvocation = " << value.shaderTerminateInvocation << '\n';
	s << "\tsubgroupSizeControl = " << value.subgroupSizeControl << '\n';
	s << "\tcomputeFullSubgroups = " << value.computeFullSubgroups << '\n';
	s << "\tsynchronization2 = " << value.synchronization2 << '\n';
	s << "\ttextureCompressionASTC_HDR = " << value.textureCompressionASTC_HDR << '\n';
	s << "\tshaderZeroInitializeWorkgroupMemory = " << value.shaderZeroInitializeWorkgroupMemory << '\n';
	s << "\tdynamicRendering = " << value.dynamicRendering << '\n';
	s << "\tshaderIntegerDotProduct = " << value.shaderIntegerDotProduct << '\n';
	s << "\tmaintenance4 = " << value.maintenance4 << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan13Properties& value)
{
	s << "VkPhysicalDeviceVulkan13Properties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tminSubgroupSize = " << value.minSubgroupSize << '\n';
	s << "\tmaxSubgroupSize = " << value.maxSubgroupSize << '\n';
	s << "\tmaxComputeWorkgroupSubgroups = " << value.maxComputeWorkgroupSubgroups << '\n';
	s << "\trequiredSubgroupSizeStages = " << getShaderStageFlagsStr(value.requiredSubgroupSizeStages) << '\n';
	s << "\tmaxInlineUniformBlockSize = " << value.maxInlineUniformBlockSize << '\n';
	s << "\tmaxPerStageDescriptorInlineUniformBlocks = " << value.maxPerStageDescriptorInlineUniformBlocks << '\n';
	s << "\tmaxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = " << value.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks << '\n';
	s << "\tmaxDescriptorSetInlineUniformBlocks = " << value.maxDescriptorSetInlineUniformBlocks << '\n';
	s << "\tmaxDescriptorSetUpdateAfterBindInlineUniformBlocks = " << value.maxDescriptorSetUpdateAfterBindInlineUniformBlocks << '\n';
	s << "\tmaxInlineUniformTotalSize = " << value.maxInlineUniformTotalSize << '\n';
	s << "\tintegerDotProduct8BitUnsignedAccelerated = " << value.integerDotProduct8BitUnsignedAccelerated << '\n';
	s << "\tintegerDotProduct8BitSignedAccelerated = " << value.integerDotProduct8BitSignedAccelerated << '\n';
	s << "\tintegerDotProduct8BitMixedSignednessAccelerated = " << value.integerDotProduct8BitMixedSignednessAccelerated << '\n';
	s << "\tintegerDotProduct4x8BitPackedUnsignedAccelerated = " << value.integerDotProduct4x8BitPackedUnsignedAccelerated << '\n';
	s << "\tintegerDotProduct4x8BitPackedSignedAccelerated = " << value.integerDotProduct4x8BitPackedSignedAccelerated << '\n';
	s << "\tintegerDotProduct4x8BitPackedMixedSignednessAccelerated = " << value.integerDotProduct4x8BitPackedMixedSignednessAccelerated << '\n';
	s << "\tintegerDotProduct16BitUnsignedAccelerated = " << value.integerDotProduct16BitUnsignedAccelerated << '\n';
	s << "\tintegerDotProduct16BitSignedAccelerated = " << value.integerDotProduct16BitSignedAccelerated << '\n';
	s << "\tintegerDotProduct16BitMixedSignednessAccelerated = " << value.integerDotProduct16BitMixedSignednessAccelerated << '\n';
	s << "\tintegerDotProduct32BitUnsignedAccelerated = " << value.integerDotProduct32BitUnsignedAccelerated << '\n';
	s << "\tintegerDotProduct32BitSignedAccelerated = " << value.integerDotProduct32BitSignedAccelerated << '\n';
	s << "\tintegerDotProduct32BitMixedSignednessAccelerated = " << value.integerDotProduct32BitMixedSignednessAccelerated << '\n';
	s << "\tintegerDotProduct64BitUnsignedAccelerated = " << value.integerDotProduct64BitUnsignedAccelerated << '\n';
	s << "\tintegerDotProduct64BitSignedAccelerated = " << value.integerDotProduct64BitSignedAccelerated << '\n';
	s << "\tintegerDotProduct64BitMixedSignednessAccelerated = " << value.integerDotProduct64BitMixedSignednessAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating8BitUnsignedAccelerated = " << value.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating8BitSignedAccelerated = " << value.integerDotProductAccumulatingSaturating8BitSignedAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated = " << value.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated = " << value.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated = " << value.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = " << value.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating16BitUnsignedAccelerated = " << value.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating16BitSignedAccelerated = " << value.integerDotProductAccumulatingSaturating16BitSignedAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated = " << value.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating32BitUnsignedAccelerated = " << value.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating32BitSignedAccelerated = " << value.integerDotProductAccumulatingSaturating32BitSignedAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated = " << value.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating64BitUnsignedAccelerated = " << value.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating64BitSignedAccelerated = " << value.integerDotProductAccumulatingSaturating64BitSignedAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated = " << value.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated << '\n';
	s << "\tstorageTexelBufferOffsetAlignmentBytes = " << value.storageTexelBufferOffsetAlignmentBytes << '\n';
	s << "\tstorageTexelBufferOffsetSingleTexelAlignment = " << value.storageTexelBufferOffsetSingleTexelAlignment << '\n';
	s << "\tuniformTexelBufferOffsetAlignmentBytes = " << value.uniformTexelBufferOffsetAlignmentBytes << '\n';
	s << "\tuniformTexelBufferOffsetSingleTexelAlignment = " << value.uniformTexelBufferOffsetSingleTexelAlignment << '\n';
	s << "\tmaxBufferSize = " << value.maxBufferSize << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineCreationFeedback& value)
{
	s << "VkPipelineCreationFeedback = {\n";
	s << "\tflags = " << getPipelineCreationFeedbackFlagsStr(value.flags) << '\n';
	s << "\tduration = " << value.duration << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineCreationFeedbackCreateInfo& value)
{
	s << "VkPipelineCreationFeedbackCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpPipelineCreationFeedback = " << value.pPipelineCreationFeedback << '\n';
	s << "\tpipelineStageCreationFeedbackCount = " << value.pipelineStageCreationFeedbackCount << '\n';
	s << "\tpPipelineStageCreationFeedbacks = " << value.pPipelineStageCreationFeedbacks << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderTerminateInvocationFeatures& value)
{
	s << "VkPhysicalDeviceShaderTerminateInvocationFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshaderTerminateInvocation = " << value.shaderTerminateInvocation << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceToolProperties& value)
{
	s << "VkPhysicalDeviceToolProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tname = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.name)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.name))) << '\n';
	s << "\tversion = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.version)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.version))) << '\n';
	s << "\tpurposes = " << getToolPurposeFlagsStr(value.purposes) << '\n';
	s << "\tdescription = " << (const char*)value.description << '\n';
	s << "\tlayer = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.layer)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.layer))) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures& value)
{
	s << "VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshaderDemoteToHelperInvocation = " << value.shaderDemoteToHelperInvocation << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePrivateDataFeatures& value)
{
	s << "VkPhysicalDevicePrivateDataFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tprivateData = " << value.privateData << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDevicePrivateDataCreateInfo& value)
{
	s << "VkDevicePrivateDataCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tprivateDataSlotRequestCount = " << value.privateDataSlotRequestCount << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPrivateDataSlotCreateInfo& value)
{
	s << "VkPrivateDataSlotCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPrivateDataSlotCreateFlagsStr(value.flags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePipelineCreationCacheControlFeatures& value)
{
	s << "VkPhysicalDevicePipelineCreationCacheControlFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpipelineCreationCacheControl = " << value.pipelineCreationCacheControl << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMemoryBarrier2& value)
{
	s << "VkMemoryBarrier2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrcStageMask = " << value.srcStageMask << '\n';
	s << "\tsrcAccessMask = " << value.srcAccessMask << '\n';
	s << "\tdstStageMask = " << value.dstStageMask << '\n';
	s << "\tdstAccessMask = " << value.dstAccessMask << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBufferMemoryBarrier2& value)
{
	s << "VkBufferMemoryBarrier2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrcStageMask = " << value.srcStageMask << '\n';
	s << "\tsrcAccessMask = " << value.srcAccessMask << '\n';
	s << "\tdstStageMask = " << value.dstStageMask << '\n';
	s << "\tdstAccessMask = " << value.dstAccessMask << '\n';
	s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
	s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
	s << "\tbuffer = " << value.buffer << '\n';
	s << "\toffset = " << value.offset << '\n';
	s << "\tsize = " << value.size << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageMemoryBarrier2& value)
{
	s << "VkImageMemoryBarrier2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrcStageMask = " << value.srcStageMask << '\n';
	s << "\tsrcAccessMask = " << value.srcAccessMask << '\n';
	s << "\tdstStageMask = " << value.dstStageMask << '\n';
	s << "\tdstAccessMask = " << value.dstAccessMask << '\n';
	s << "\toldLayout = " << value.oldLayout << '\n';
	s << "\tnewLayout = " << value.newLayout << '\n';
	s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
	s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
	s << "\timage = " << value.image << '\n';
	s << "\tsubresourceRange = " << value.subresourceRange << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDependencyInfo& value)
{
	s << "VkDependencyInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
	s << "\tmemoryBarrierCount = " << value.memoryBarrierCount << '\n';
	s << "\tpMemoryBarriers = " << value.pMemoryBarriers << '\n';
	s << "\tbufferMemoryBarrierCount = " << value.bufferMemoryBarrierCount << '\n';
	s << "\tpBufferMemoryBarriers = " << value.pBufferMemoryBarriers << '\n';
	s << "\timageMemoryBarrierCount = " << value.imageMemoryBarrierCount << '\n';
	s << "\tpImageMemoryBarriers = " << value.pImageMemoryBarriers << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSemaphoreSubmitInfo& value)
{
	s << "VkSemaphoreSubmitInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsemaphore = " << value.semaphore << '\n';
	s << "\tvalue = " << value.value << '\n';
	s << "\tstageMask = " << value.stageMask << '\n';
	s << "\tdeviceIndex = " << value.deviceIndex << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCommandBufferSubmitInfo& value)
{
	s << "VkCommandBufferSubmitInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcommandBuffer = " << value.commandBuffer << '\n';
	s << "\tdeviceMask = " << value.deviceMask << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSubmitInfo2& value)
{
	s << "VkSubmitInfo2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getSubmitFlagsStr(value.flags) << '\n';
	s << "\twaitSemaphoreInfoCount = " << value.waitSemaphoreInfoCount << '\n';
	s << "\tpWaitSemaphoreInfos = " << value.pWaitSemaphoreInfos << '\n';
	s << "\tcommandBufferInfoCount = " << value.commandBufferInfoCount << '\n';
	s << "\tpCommandBufferInfos = " << value.pCommandBufferInfos << '\n';
	s << "\tsignalSemaphoreInfoCount = " << value.signalSemaphoreInfoCount << '\n';
	s << "\tpSignalSemaphoreInfos = " << value.pSignalSemaphoreInfos << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSynchronization2Features& value)
{
	s << "VkPhysicalDeviceSynchronization2Features = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsynchronization2 = " << value.synchronization2 << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures& value)
{
	s << "VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshaderZeroInitializeWorkgroupMemory = " << value.shaderZeroInitializeWorkgroupMemory << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageRobustnessFeatures& value)
{
	s << "VkPhysicalDeviceImageRobustnessFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\trobustImageAccess = " << value.robustImageAccess << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBufferCopy2& value)
{
	s << "VkBufferCopy2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrcOffset = " << value.srcOffset << '\n';
	s << "\tdstOffset = " << value.dstOffset << '\n';
	s << "\tsize = " << value.size << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCopyBufferInfo2& value)
{
	s << "VkCopyBufferInfo2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrcBuffer = " << value.srcBuffer << '\n';
	s << "\tdstBuffer = " << value.dstBuffer << '\n';
	s << "\tregionCount = " << value.regionCount << '\n';
	s << "\tpRegions = " << value.pRegions << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageCopy2& value)
{
	s << "VkImageCopy2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrcSubresource = " << value.srcSubresource << '\n';
	s << "\tsrcOffset = " << value.srcOffset << '\n';
	s << "\tdstSubresource = " << value.dstSubresource << '\n';
	s << "\tdstOffset = " << value.dstOffset << '\n';
	s << "\textent = " << value.extent << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCopyImageInfo2& value)
{
	s << "VkCopyImageInfo2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrcImage = " << value.srcImage << '\n';
	s << "\tsrcImageLayout = " << value.srcImageLayout << '\n';
	s << "\tdstImage = " << value.dstImage << '\n';
	s << "\tdstImageLayout = " << value.dstImageLayout << '\n';
	s << "\tregionCount = " << value.regionCount << '\n';
	s << "\tpRegions = " << value.pRegions << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBufferImageCopy2& value)
{
	s << "VkBufferImageCopy2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tbufferOffset = " << value.bufferOffset << '\n';
	s << "\tbufferRowLength = " << value.bufferRowLength << '\n';
	s << "\tbufferImageHeight = " << value.bufferImageHeight << '\n';
	s << "\timageSubresource = " << value.imageSubresource << '\n';
	s << "\timageOffset = " << value.imageOffset << '\n';
	s << "\timageExtent = " << value.imageExtent << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCopyBufferToImageInfo2& value)
{
	s << "VkCopyBufferToImageInfo2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrcBuffer = " << value.srcBuffer << '\n';
	s << "\tdstImage = " << value.dstImage << '\n';
	s << "\tdstImageLayout = " << value.dstImageLayout << '\n';
	s << "\tregionCount = " << value.regionCount << '\n';
	s << "\tpRegions = " << value.pRegions << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCopyImageToBufferInfo2& value)
{
	s << "VkCopyImageToBufferInfo2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrcImage = " << value.srcImage << '\n';
	s << "\tsrcImageLayout = " << value.srcImageLayout << '\n';
	s << "\tdstBuffer = " << value.dstBuffer << '\n';
	s << "\tregionCount = " << value.regionCount << '\n';
	s << "\tpRegions = " << value.pRegions << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageBlit2& value)
{
	s << "VkImageBlit2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrcSubresource = " << value.srcSubresource << '\n';
	s << "\tsrcOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.srcOffsets), DE_ARRAY_END(value.srcOffsets)) << '\n';
	s << "\tdstSubresource = " << value.dstSubresource << '\n';
	s << "\tdstOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.dstOffsets), DE_ARRAY_END(value.dstOffsets)) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBlitImageInfo2& value)
{
	s << "VkBlitImageInfo2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrcImage = " << value.srcImage << '\n';
	s << "\tsrcImageLayout = " << value.srcImageLayout << '\n';
	s << "\tdstImage = " << value.dstImage << '\n';
	s << "\tdstImageLayout = " << value.dstImageLayout << '\n';
	s << "\tregionCount = " << value.regionCount << '\n';
	s << "\tpRegions = " << value.pRegions << '\n';
	s << "\tfilter = " << value.filter << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageResolve2& value)
{
	s << "VkImageResolve2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrcSubresource = " << value.srcSubresource << '\n';
	s << "\tsrcOffset = " << value.srcOffset << '\n';
	s << "\tdstSubresource = " << value.dstSubresource << '\n';
	s << "\tdstOffset = " << value.dstOffset << '\n';
	s << "\textent = " << value.extent << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkResolveImageInfo2& value)
{
	s << "VkResolveImageInfo2 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrcImage = " << value.srcImage << '\n';
	s << "\tsrcImageLayout = " << value.srcImageLayout << '\n';
	s << "\tdstImage = " << value.dstImage << '\n';
	s << "\tdstImageLayout = " << value.dstImageLayout << '\n';
	s << "\tregionCount = " << value.regionCount << '\n';
	s << "\tpRegions = " << value.pRegions << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubgroupSizeControlFeatures& value)
{
	s << "VkPhysicalDeviceSubgroupSizeControlFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsubgroupSizeControl = " << value.subgroupSizeControl << '\n';
	s << "\tcomputeFullSubgroups = " << value.computeFullSubgroups << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubgroupSizeControlProperties& value)
{
	s << "VkPhysicalDeviceSubgroupSizeControlProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tminSubgroupSize = " << value.minSubgroupSize << '\n';
	s << "\tmaxSubgroupSize = " << value.maxSubgroupSize << '\n';
	s << "\tmaxComputeWorkgroupSubgroups = " << value.maxComputeWorkgroupSubgroups << '\n';
	s << "\trequiredSubgroupSizeStages = " << getShaderStageFlagsStr(value.requiredSubgroupSizeStages) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineShaderStageRequiredSubgroupSizeCreateInfo& value)
{
	s << "VkPipelineShaderStageRequiredSubgroupSizeCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\trequiredSubgroupSize = " << value.requiredSubgroupSize << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceInlineUniformBlockFeatures& value)
{
	s << "VkPhysicalDeviceInlineUniformBlockFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tinlineUniformBlock = " << value.inlineUniformBlock << '\n';
	s << "\tdescriptorBindingInlineUniformBlockUpdateAfterBind = " << value.descriptorBindingInlineUniformBlockUpdateAfterBind << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceInlineUniformBlockProperties& value)
{
	s << "VkPhysicalDeviceInlineUniformBlockProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxInlineUniformBlockSize = " << value.maxInlineUniformBlockSize << '\n';
	s << "\tmaxPerStageDescriptorInlineUniformBlocks = " << value.maxPerStageDescriptorInlineUniformBlocks << '\n';
	s << "\tmaxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = " << value.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks << '\n';
	s << "\tmaxDescriptorSetInlineUniformBlocks = " << value.maxDescriptorSetInlineUniformBlocks << '\n';
	s << "\tmaxDescriptorSetUpdateAfterBindInlineUniformBlocks = " << value.maxDescriptorSetUpdateAfterBindInlineUniformBlocks << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSetInlineUniformBlock& value)
{
	s << "VkWriteDescriptorSetInlineUniformBlock = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdataSize = " << value.dataSize << '\n';
	s << "\tpData = " << value.pData << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolInlineUniformBlockCreateInfo& value)
{
	s << "VkDescriptorPoolInlineUniformBlockCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxInlineUniformBlockBindings = " << value.maxInlineUniformBlockBindings << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTextureCompressionASTCHDRFeatures& value)
{
	s << "VkPhysicalDeviceTextureCompressionASTCHDRFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\ttextureCompressionASTC_HDR = " << value.textureCompressionASTC_HDR << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkRenderingAttachmentInfo& value)
{
	s << "VkRenderingAttachmentInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\timageView = " << value.imageView << '\n';
	s << "\timageLayout = " << value.imageLayout << '\n';
	s << "\tresolveMode = " << value.resolveMode << '\n';
	s << "\tresolveImageView = " << value.resolveImageView << '\n';
	s << "\tresolveImageLayout = " << value.resolveImageLayout << '\n';
	s << "\tloadOp = " << value.loadOp << '\n';
	s << "\tstoreOp = " << value.storeOp << '\n';
	s << "\tclearValue = " << value.clearValue << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkRenderingInfo& value)
{
	s << "VkRenderingInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getRenderingFlagsStr(value.flags) << '\n';
	s << "\trenderArea = " << value.renderArea << '\n';
	s << "\tlayerCount = " << value.layerCount << '\n';
	s << "\tviewMask = " << value.viewMask << '\n';
	s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
	s << "\tpColorAttachments = " << value.pColorAttachments << '\n';
	s << "\tpDepthAttachment = " << value.pDepthAttachment << '\n';
	s << "\tpStencilAttachment = " << value.pStencilAttachment << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineRenderingCreateInfo& value)
{
	s << "VkPipelineRenderingCreateInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tviewMask = " << value.viewMask << '\n';
	s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
	s << "\tpColorAttachmentFormats = " << value.pColorAttachmentFormats << '\n';
	s << "\tdepthAttachmentFormat = " << value.depthAttachmentFormat << '\n';
	s << "\tstencilAttachmentFormat = " << value.stencilAttachmentFormat << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDynamicRenderingFeatures& value)
{
	s << "VkPhysicalDeviceDynamicRenderingFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdynamicRendering = " << value.dynamicRendering << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceRenderingInfo& value)
{
	s << "VkCommandBufferInheritanceRenderingInfo = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getRenderingFlagsStr(value.flags) << '\n';
	s << "\tviewMask = " << value.viewMask << '\n';
	s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
	s << "\tpColorAttachmentFormats = " << value.pColorAttachmentFormats << '\n';
	s << "\tdepthAttachmentFormat = " << value.depthAttachmentFormat << '\n';
	s << "\tstencilAttachmentFormat = " << value.stencilAttachmentFormat << '\n';
	s << "\trasterizationSamples = " << value.rasterizationSamples << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderIntegerDotProductFeatures& value)
{
	s << "VkPhysicalDeviceShaderIntegerDotProductFeatures = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshaderIntegerDotProduct = " << value.shaderIntegerDotProduct << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderIntegerDotProductProperties& value)
{
	s << "VkPhysicalDeviceShaderIntegerDotProductProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tintegerDotProduct8BitUnsignedAccelerated = " << value.integerDotProduct8BitUnsignedAccelerated << '\n';
	s << "\tintegerDotProduct8BitSignedAccelerated = " << value.integerDotProduct8BitSignedAccelerated << '\n';
	s << "\tintegerDotProduct8BitMixedSignednessAccelerated = " << value.integerDotProduct8BitMixedSignednessAccelerated << '\n';
	s << "\tintegerDotProduct4x8BitPackedUnsignedAccelerated = " << value.integerDotProduct4x8BitPackedUnsignedAccelerated << '\n';
	s << "\tintegerDotProduct4x8BitPackedSignedAccelerated = " << value.integerDotProduct4x8BitPackedSignedAccelerated << '\n';
	s << "\tintegerDotProduct4x8BitPackedMixedSignednessAccelerated = " << value.integerDotProduct4x8BitPackedMixedSignednessAccelerated << '\n';
	s << "\tintegerDotProduct16BitUnsignedAccelerated = " << value.integerDotProduct16BitUnsignedAccelerated << '\n';
	s << "\tintegerDotProduct16BitSignedAccelerated = " << value.integerDotProduct16BitSignedAccelerated << '\n';
	s << "\tintegerDotProduct16BitMixedSignednessAccelerated = " << value.integerDotProduct16BitMixedSignednessAccelerated << '\n';
	s << "\tintegerDotProduct32BitUnsignedAccelerated = " << value.integerDotProduct32BitUnsignedAccelerated << '\n';
	s << "\tintegerDotProduct32BitSignedAccelerated = " << value.integerDotProduct32BitSignedAccelerated << '\n';
	s << "\tintegerDotProduct32BitMixedSignednessAccelerated = " << value.integerDotProduct32BitMixedSignednessAccelerated << '\n';
	s << "\tintegerDotProduct64BitUnsignedAccelerated = " << value.integerDotProduct64BitUnsignedAccelerated << '\n';
	s << "\tintegerDotProduct64BitSignedAccelerated = " << value.integerDotProduct64BitSignedAccelerated << '\n';
	s << "\tintegerDotProduct64BitMixedSignednessAccelerated = " << value.integerDotProduct64BitMixedSignednessAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating8BitUnsignedAccelerated = " << value.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating8BitSignedAccelerated = " << value.integerDotProductAccumulatingSaturating8BitSignedAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated = " << value.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated = " << value.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated = " << value.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = " << value.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating16BitUnsignedAccelerated = " << value.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating16BitSignedAccelerated = " << value.integerDotProductAccumulatingSaturating16BitSignedAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated = " << value.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating32BitUnsignedAccelerated = " << value.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating32BitSignedAccelerated = " << value.integerDotProductAccumulatingSaturating32BitSignedAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated = " << value.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating64BitUnsignedAccelerated = " << value.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating64BitSignedAccelerated = " << value.integerDotProductAccumulatingSaturating64BitSignedAccelerated << '\n';
	s << "\tintegerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated = " << value.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTexelBufferAlignmentProperties& value)
{
	s << "VkPhysicalDeviceTexelBufferAlignmentProperties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tstorageTexelBufferOffsetAlignmentBytes = " << value.storageTexelBufferOffsetAlignmentBytes << '\n';
	s << "\tstorageTexelBufferOffsetSingleTexelAlignment = " << value.storageTexelBufferOffsetSingleTexelAlignment << '\n';
	s << "\tuniformTexelBufferOffsetAlignmentBytes = " << value.uniformTexelBufferOffsetAlignmentBytes << '\n';
	s << "\tuniformTexelBufferOffsetSingleTexelAlignment = " << value.uniformTexelBufferOffsetSingleTexelAlignment << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkFormatProperties3& value)
{
	s << "VkFormatProperties3 = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tlinearTilingFeatures = " << value.linearTilingFeatures << '\n';
	s << "\toptimalTilingFeatures = " << value.optimalTilingFeatures << '\n';
	s << "\tbufferFeatures = " << value.bufferFeatures << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMaintenance4Features& value)
{
	s << "VkPhysicalDeviceMaintenance4Features = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaintenance4 = " << value.maintenance4 << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMaintenance4Properties& value)
{
	s << "VkPhysicalDeviceMaintenance4Properties = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxBufferSize = " << value.maxBufferSize << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceBufferMemoryRequirements& value)
{
	s << "VkDeviceBufferMemoryRequirements = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpCreateInfo = " << value.pCreateInfo << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceImageMemoryRequirements& value)
{
	s << "VkDeviceImageMemoryRequirements = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpCreateInfo = " << value.pCreateInfo << '\n';
	s << "\tplaneAspect = " << value.planeAspect << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilitiesKHR& value)
{
	s << "VkSurfaceCapabilitiesKHR = {\n";
	s << "\tminImageCount = " << value.minImageCount << '\n';
	s << "\tmaxImageCount = " << value.maxImageCount << '\n';
	s << "\tcurrentExtent = " << value.currentExtent << '\n';
	s << "\tminImageExtent = " << value.minImageExtent << '\n';
	s << "\tmaxImageExtent = " << value.maxImageExtent << '\n';
	s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
	s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
	s << "\tcurrentTransform = " << value.currentTransform << '\n';
	s << "\tsupportedCompositeAlpha = " << getCompositeAlphaFlagsKHRStr(value.supportedCompositeAlpha) << '\n';
	s << "\tsupportedUsageFlags = " << getImageUsageFlagsStr(value.supportedUsageFlags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSurfaceFormatKHR& value)
{
	s << "VkSurfaceFormatKHR = {\n";
	s << "\tformat = " << value.format << '\n';
	s << "\tcolorSpace = " << value.colorSpace << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSwapchainCreateInfoKHR& value)
{
	s << "VkSwapchainCreateInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getSwapchainCreateFlagsKHRStr(value.flags) << '\n';
	s << "\tsurface = " << value.surface << '\n';
	s << "\tminImageCount = " << value.minImageCount << '\n';
	s << "\timageFormat = " << value.imageFormat << '\n';
	s << "\timageColorSpace = " << value.imageColorSpace << '\n';
	s << "\timageExtent = " << value.imageExtent << '\n';
	s << "\timageArrayLayers = " << value.imageArrayLayers << '\n';
	s << "\timageUsage = " << getImageUsageFlagsStr(value.imageUsage) << '\n';
	s << "\timageSharingMode = " << value.imageSharingMode << '\n';
	s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
	s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
	s << "\tpreTransform = " << value.preTransform << '\n';
	s << "\tcompositeAlpha = " << value.compositeAlpha << '\n';
	s << "\tpresentMode = " << value.presentMode << '\n';
	s << "\tclipped = " << value.clipped << '\n';
	s << "\toldSwapchain = " << value.oldSwapchain << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPresentInfoKHR& value)
{
	s << "VkPresentInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
	s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
	s << "\tswapchainCount = " << value.swapchainCount << '\n';
	s << "\tpSwapchains = " << value.pSwapchains << '\n';
	s << "\tpImageIndices = " << value.pImageIndices << '\n';
	s << "\tpResults = " << value.pResults << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageSwapchainCreateInfoKHR& value)
{
	s << "VkImageSwapchainCreateInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tswapchain = " << value.swapchain << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBindImageMemorySwapchainInfoKHR& value)
{
	s << "VkBindImageMemorySwapchainInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tswapchain = " << value.swapchain << '\n';
	s << "\timageIndex = " << value.imageIndex << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAcquireNextImageInfoKHR& value)
{
	s << "VkAcquireNextImageInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tswapchain = " << value.swapchain << '\n';
	s << "\ttimeout = " << value.timeout << '\n';
	s << "\tsemaphore = " << value.semaphore << '\n';
	s << "\tfence = " << value.fence << '\n';
	s << "\tdeviceMask = " << value.deviceMask << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentCapabilitiesKHR& value)
{
	s << "VkDeviceGroupPresentCapabilitiesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpresentMask = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.presentMask), DE_ARRAY_END(value.presentMask)) << '\n';
	s << "\tmodes = " << getDeviceGroupPresentModeFlagsKHRStr(value.modes) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentInfoKHR& value)
{
	s << "VkDeviceGroupPresentInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tswapchainCount = " << value.swapchainCount << '\n';
	s << "\tpDeviceMasks = " << value.pDeviceMasks << '\n';
	s << "\tmode = " << value.mode << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceGroupSwapchainCreateInfoKHR& value)
{
	s << "VkDeviceGroupSwapchainCreateInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmodes = " << getDeviceGroupPresentModeFlagsKHRStr(value.modes) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDisplayModeParametersKHR& value)
{
	s << "VkDisplayModeParametersKHR = {\n";
	s << "\tvisibleRegion = " << value.visibleRegion << '\n';
	s << "\trefreshRate = " << value.refreshRate << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDisplayModeCreateInfoKHR& value)
{
	s << "VkDisplayModeCreateInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getDisplayModeCreateFlagsKHRStr(value.flags) << '\n';
	s << "\tparameters = " << value.parameters << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDisplayModePropertiesKHR& value)
{
	s << "VkDisplayModePropertiesKHR = {\n";
	s << "\tdisplayMode = " << value.displayMode << '\n';
	s << "\tparameters = " << value.parameters << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilitiesKHR& value)
{
	s << "VkDisplayPlaneCapabilitiesKHR = {\n";
	s << "\tsupportedAlpha = " << getDisplayPlaneAlphaFlagsKHRStr(value.supportedAlpha) << '\n';
	s << "\tminSrcPosition = " << value.minSrcPosition << '\n';
	s << "\tmaxSrcPosition = " << value.maxSrcPosition << '\n';
	s << "\tminSrcExtent = " << value.minSrcExtent << '\n';
	s << "\tmaxSrcExtent = " << value.maxSrcExtent << '\n';
	s << "\tminDstPosition = " << value.minDstPosition << '\n';
	s << "\tmaxDstPosition = " << value.maxDstPosition << '\n';
	s << "\tminDstExtent = " << value.minDstExtent << '\n';
	s << "\tmaxDstExtent = " << value.maxDstExtent << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDisplayPlanePropertiesKHR& value)
{
	s << "VkDisplayPlanePropertiesKHR = {\n";
	s << "\tcurrentDisplay = " << value.currentDisplay << '\n';
	s << "\tcurrentStackIndex = " << value.currentStackIndex << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDisplayPropertiesKHR& value)
{
	s << "VkDisplayPropertiesKHR = {\n";
	s << "\tdisplay = " << value.display << '\n';
	s << "\tdisplayName = " << getCharPtrStr(value.displayName) << '\n';
	s << "\tphysicalDimensions = " << value.physicalDimensions << '\n';
	s << "\tphysicalResolution = " << value.physicalResolution << '\n';
	s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
	s << "\tplaneReorderPossible = " << value.planeReorderPossible << '\n';
	s << "\tpersistentContent = " << value.persistentContent << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDisplaySurfaceCreateInfoKHR& value)
{
	s << "VkDisplaySurfaceCreateInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getDisplaySurfaceCreateFlagsKHRStr(value.flags) << '\n';
	s << "\tdisplayMode = " << value.displayMode << '\n';
	s << "\tplaneIndex = " << value.planeIndex << '\n';
	s << "\tplaneStackIndex = " << value.planeStackIndex << '\n';
	s << "\ttransform = " << value.transform << '\n';
	s << "\tglobalAlpha = " << value.globalAlpha << '\n';
	s << "\talphaMode = " << value.alphaMode << '\n';
	s << "\timageExtent = " << value.imageExtent << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDisplayPresentInfoKHR& value)
{
	s << "VkDisplayPresentInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrcRect = " << value.srcRect << '\n';
	s << "\tdstRect = " << value.dstRect << '\n';
	s << "\tpersistent = " << value.persistent << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkRenderingFragmentShadingRateAttachmentInfoKHR& value)
{
	s << "VkRenderingFragmentShadingRateAttachmentInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\timageView = " << value.imageView << '\n';
	s << "\timageLayout = " << value.imageLayout << '\n';
	s << "\tshadingRateAttachmentTexelSize = " << value.shadingRateAttachmentTexelSize << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkRenderingFragmentDensityMapAttachmentInfoEXT& value)
{
	s << "VkRenderingFragmentDensityMapAttachmentInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\timageView = " << value.imageView << '\n';
	s << "\timageLayout = " << value.imageLayout << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAttachmentSampleCountInfoAMD& value)
{
	s << "VkAttachmentSampleCountInfoAMD = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
	s << "\tpColorAttachmentSamples = " << value.pColorAttachmentSamples << '\n';
	s << "\tdepthStencilAttachmentSamples = " << value.depthStencilAttachmentSamples << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMultiviewPerViewAttributesInfoNVX& value)
{
	s << "VkMultiviewPerViewAttributesInfoNVX = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tperViewAttributes = " << value.perViewAttributes << '\n';
	s << "\tperViewAttributesPositionXOnly = " << value.perViewAttributesPositionXOnly << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImportMemoryFdInfoKHR& value)
{
	s << "VkImportMemoryFdInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << "\tfd = " << value.fd << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMemoryFdPropertiesKHR& value)
{
	s << "VkMemoryFdPropertiesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMemoryGetFdInfoKHR& value)
{
	s << "VkMemoryGetFdInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmemory = " << value.memory << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreFdInfoKHR& value)
{
	s << "VkImportSemaphoreFdInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsemaphore = " << value.semaphore << '\n';
	s << "\tflags = " << getSemaphoreImportFlagsStr(value.flags) << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << "\tfd = " << value.fd << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetFdInfoKHR& value)
{
	s << "VkSemaphoreGetFdInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsemaphore = " << value.semaphore << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePushDescriptorPropertiesKHR& value)
{
	s << "VkPhysicalDevicePushDescriptorPropertiesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxPushDescriptors = " << value.maxPushDescriptors << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkRectLayerKHR& value)
{
	s << "VkRectLayerKHR = {\n";
	s << "\toffset = " << value.offset << '\n';
	s << "\textent = " << value.extent << '\n';
	s << "\tlayer = " << value.layer << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPresentRegionKHR& value)
{
	s << "VkPresentRegionKHR = {\n";
	s << "\trectangleCount = " << value.rectangleCount << '\n';
	s << "\tpRectangles = " << value.pRectangles << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPresentRegionsKHR& value)
{
	s << "VkPresentRegionsKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tswapchainCount = " << value.swapchainCount << '\n';
	s << "\tpRegions = " << value.pRegions << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSharedPresentSurfaceCapabilitiesKHR& value)
{
	s << "VkSharedPresentSurfaceCapabilitiesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsharedPresentSupportedUsageFlags = " << getImageUsageFlagsStr(value.sharedPresentSupportedUsageFlags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImportFenceFdInfoKHR& value)
{
	s << "VkImportFenceFdInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tfence = " << value.fence << '\n';
	s << "\tflags = " << getFenceImportFlagsStr(value.flags) << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << "\tfd = " << value.fd << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkFenceGetFdInfoKHR& value)
{
	s << "VkFenceGetFdInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tfence = " << value.fence << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePerformanceQueryFeaturesKHR& value)
{
	s << "VkPhysicalDevicePerformanceQueryFeaturesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tperformanceCounterQueryPools = " << value.performanceCounterQueryPools << '\n';
	s << "\tperformanceCounterMultipleQueryPools = " << value.performanceCounterMultipleQueryPools << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePerformanceQueryPropertiesKHR& value)
{
	s << "VkPhysicalDevicePerformanceQueryPropertiesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tallowCommandBufferQueryCopies = " << value.allowCommandBufferQueryCopies << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterKHR& value)
{
	s << "VkPerformanceCounterKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tunit = " << value.unit << '\n';
	s << "\tscope = " << value.scope << '\n';
	s << "\tstorage = " << value.storage << '\n';
	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';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterDescriptionKHR& value)
{
	s << "VkPerformanceCounterDescriptionKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPerformanceCounterDescriptionFlagsKHRStr(value.flags) << '\n';
	s << "\tname = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.name)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.name))) << '\n';
	s << "\tcategory = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.category)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.category))) << '\n';
	s << "\tdescription = " << (const char*)value.description << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkQueryPoolPerformanceCreateInfoKHR& value)
{
	s << "VkQueryPoolPerformanceCreateInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
	s << "\tcounterIndexCount = " << value.counterIndexCount << '\n';
	s << "\tpCounterIndices = " << value.pCounterIndices << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterResultKHR& value)
{
	s << "VkPerformanceCounterResultKHR = {\n";
	s << "\tint32 = " << value.int32 << '\n';
	s << "\tint64 = " << value.int64 << '\n';
	s << "\tuint32 = " << value.uint32 << '\n';
	s << "\tuint64 = " << value.uint64 << '\n';
	s << "\tfloat32 = " << value.float32 << '\n';
	s << "\tfloat64 = " << value.float64 << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAcquireProfilingLockInfoKHR& value)
{
	s << "VkAcquireProfilingLockInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getAcquireProfilingLockFlagsKHRStr(value.flags) << '\n';
	s << "\ttimeout = " << value.timeout << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPerformanceQuerySubmitInfoKHR& value)
{
	s << "VkPerformanceQuerySubmitInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcounterPassIndex = " << value.counterPassIndex << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSurfaceInfo2KHR& value)
{
	s << "VkPhysicalDeviceSurfaceInfo2KHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsurface = " << value.surface << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilities2KHR& value)
{
	s << "VkSurfaceCapabilities2KHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsurfaceCapabilities = " << value.surfaceCapabilities << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSurfaceFormat2KHR& value)
{
	s << "VkSurfaceFormat2KHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsurfaceFormat = " << value.surfaceFormat << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDisplayProperties2KHR& value)
{
	s << "VkDisplayProperties2KHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdisplayProperties = " << value.displayProperties << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneProperties2KHR& value)
{
	s << "VkDisplayPlaneProperties2KHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdisplayPlaneProperties = " << value.displayPlaneProperties << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDisplayModeProperties2KHR& value)
{
	s << "VkDisplayModeProperties2KHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdisplayModeProperties = " << value.displayModeProperties << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneInfo2KHR& value)
{
	s << "VkDisplayPlaneInfo2KHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmode = " << value.mode << '\n';
	s << "\tplaneIndex = " << value.planeIndex << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilities2KHR& value)
{
	s << "VkDisplayPlaneCapabilities2KHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcapabilities = " << value.capabilities << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderClockFeaturesKHR& value)
{
	s << "VkPhysicalDeviceShaderClockFeaturesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshaderSubgroupClock = " << value.shaderSubgroupClock << '\n';
	s << "\tshaderDeviceClock = " << value.shaderDeviceClock << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceQueueGlobalPriorityCreateInfoKHR& value)
{
	s << "VkDeviceQueueGlobalPriorityCreateInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tglobalPriority = " << value.globalPriority << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR& value)
{
	s << "VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tglobalPriorityQuery = " << value.globalPriorityQuery << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkQueueFamilyGlobalPriorityPropertiesKHR& value)
{
	s << "VkQueueFamilyGlobalPriorityPropertiesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpriorityCount = " << value.priorityCount << '\n';
	s << "\tpriorities = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.priorities), DE_ARRAY_END(value.priorities)) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkFragmentShadingRateAttachmentInfoKHR& value)
{
	s << "VkFragmentShadingRateAttachmentInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpFragmentShadingRateAttachment = " << value.pFragmentShadingRateAttachment << '\n';
	s << "\tshadingRateAttachmentTexelSize = " << value.shadingRateAttachmentTexelSize << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineFragmentShadingRateStateCreateInfoKHR& value)
{
	s << "VkPipelineFragmentShadingRateStateCreateInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tfragmentSize = " << value.fragmentSize << '\n';
	s << "\tcombinerOps = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.combinerOps), DE_ARRAY_END(value.combinerOps)) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShadingRateFeaturesKHR& value)
{
	s << "VkPhysicalDeviceFragmentShadingRateFeaturesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpipelineFragmentShadingRate = " << value.pipelineFragmentShadingRate << '\n';
	s << "\tprimitiveFragmentShadingRate = " << value.primitiveFragmentShadingRate << '\n';
	s << "\tattachmentFragmentShadingRate = " << value.attachmentFragmentShadingRate << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShadingRatePropertiesKHR& value)
{
	s << "VkPhysicalDeviceFragmentShadingRatePropertiesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tminFragmentShadingRateAttachmentTexelSize = " << value.minFragmentShadingRateAttachmentTexelSize << '\n';
	s << "\tmaxFragmentShadingRateAttachmentTexelSize = " << value.maxFragmentShadingRateAttachmentTexelSize << '\n';
	s << "\tmaxFragmentShadingRateAttachmentTexelSizeAspectRatio = " << value.maxFragmentShadingRateAttachmentTexelSizeAspectRatio << '\n';
	s << "\tprimitiveFragmentShadingRateWithMultipleViewports = " << value.primitiveFragmentShadingRateWithMultipleViewports << '\n';
	s << "\tlayeredShadingRateAttachments = " << value.layeredShadingRateAttachments << '\n';
	s << "\tfragmentShadingRateNonTrivialCombinerOps = " << value.fragmentShadingRateNonTrivialCombinerOps << '\n';
	s << "\tmaxFragmentSize = " << value.maxFragmentSize << '\n';
	s << "\tmaxFragmentSizeAspectRatio = " << value.maxFragmentSizeAspectRatio << '\n';
	s << "\tmaxFragmentShadingRateCoverageSamples = " << value.maxFragmentShadingRateCoverageSamples << '\n';
	s << "\tmaxFragmentShadingRateRasterizationSamples = " << value.maxFragmentShadingRateRasterizationSamples << '\n';
	s << "\tfragmentShadingRateWithShaderDepthStencilWrites = " << value.fragmentShadingRateWithShaderDepthStencilWrites << '\n';
	s << "\tfragmentShadingRateWithSampleMask = " << value.fragmentShadingRateWithSampleMask << '\n';
	s << "\tfragmentShadingRateWithShaderSampleMask = " << value.fragmentShadingRateWithShaderSampleMask << '\n';
	s << "\tfragmentShadingRateWithConservativeRasterization = " << value.fragmentShadingRateWithConservativeRasterization << '\n';
	s << "\tfragmentShadingRateWithFragmentShaderInterlock = " << value.fragmentShadingRateWithFragmentShaderInterlock << '\n';
	s << "\tfragmentShadingRateWithCustomSampleLocations = " << value.fragmentShadingRateWithCustomSampleLocations << '\n';
	s << "\tfragmentShadingRateStrictMultiplyCombiner = " << value.fragmentShadingRateStrictMultiplyCombiner << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShadingRateKHR& value)
{
	s << "VkPhysicalDeviceFragmentShadingRateKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsampleCounts = " << getSampleCountFlagsStr(value.sampleCounts) << '\n';
	s << "\tfragmentSize = " << value.fragmentSize << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSurfaceProtectedCapabilitiesKHR& value)
{
	s << "VkSurfaceProtectedCapabilitiesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsupportsProtected = " << value.supportsProtected << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePresentWaitFeaturesKHR& value)
{
	s << "VkPhysicalDevicePresentWaitFeaturesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpresentWait = " << value.presentWait << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR& value)
{
	s << "VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpipelineExecutableInfo = " << value.pipelineExecutableInfo << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineInfoKHR& value)
{
	s << "VkPipelineInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpipeline = " << value.pipeline << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineExecutablePropertiesKHR& value)
{
	s << "VkPipelineExecutablePropertiesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tstages = " << getShaderStageFlagsStr(value.stages) << '\n';
	s << "\tname = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.name)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.name))) << '\n';
	s << "\tdescription = " << (const char*)value.description << '\n';
	s << "\tsubgroupSize = " << value.subgroupSize << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineExecutableInfoKHR& value)
{
	s << "VkPipelineExecutableInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpipeline = " << value.pipeline << '\n';
	s << "\texecutableIndex = " << value.executableIndex << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineExecutableStatisticValueKHR& value)
{
	s << "VkPipelineExecutableStatisticValueKHR = {\n";
	s << "\tb32 = " << value.b32 << '\n';
	s << "\ti64 = " << value.i64 << '\n';
	s << "\tu64 = " << value.u64 << '\n';
	s << "\tf64 = " << value.f64 << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineExecutableStatisticKHR& value)
{
	s << "VkPipelineExecutableStatisticKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tname = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.name)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.name))) << '\n';
	s << "\tdescription = " << (const char*)value.description << '\n';
	s << "\tformat = " << value.format << '\n';
	s << "\tvalue = " << value.value << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineExecutableInternalRepresentationKHR& value)
{
	s << "VkPipelineExecutableInternalRepresentationKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tname = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.name)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.name))) << '\n';
	s << "\tdescription = " << (const char*)value.description << '\n';
	s << "\tisText = " << value.isText << '\n';
	s << "\tdataSize = " << value.dataSize << '\n';
	s << "\tpData = " << value.pData << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineLibraryCreateInfoKHR& value)
{
	s << "VkPipelineLibraryCreateInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tlibraryCount = " << value.libraryCount << '\n';
	s << "\tpLibraries = " << value.pLibraries << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPresentIdKHR& value)
{
	s << "VkPresentIdKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tswapchainCount = " << value.swapchainCount << '\n';
	s << "\tpPresentIds = " << value.pPresentIds << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePresentIdFeaturesKHR& value)
{
	s << "VkPhysicalDevicePresentIdFeaturesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpresentId = " << value.presentId << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkQueueFamilyCheckpointProperties2NV& value)
{
	s << "VkQueueFamilyCheckpointProperties2NV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcheckpointExecutionStageMask = " << value.checkpointExecutionStageMask << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCheckpointData2NV& value)
{
	s << "VkCheckpointData2NV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tstage = " << value.stage << '\n';
	s << "\tpCheckpointMarker = " << value.pCheckpointMarker << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR& value)
{
	s << "VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshaderSubgroupUniformControlFlow = " << value.shaderSubgroupUniformControlFlow << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR& value)
{
	s << "VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tworkgroupMemoryExplicitLayout = " << value.workgroupMemoryExplicitLayout << '\n';
	s << "\tworkgroupMemoryExplicitLayoutScalarBlockLayout = " << value.workgroupMemoryExplicitLayoutScalarBlockLayout << '\n';
	s << "\tworkgroupMemoryExplicitLayout8BitAccess = " << value.workgroupMemoryExplicitLayout8BitAccess << '\n';
	s << "\tworkgroupMemoryExplicitLayout16BitAccess = " << value.workgroupMemoryExplicitLayout16BitAccess << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDebugReportCallbackCreateInfoEXT& value)
{
	s << "VkDebugReportCallbackCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getDebugReportFlagsEXTStr(value.flags) << '\n';
	s << "\tpfnCallback = " << value.pfnCallback << '\n';
	s << "\tpUserData = " << value.pUserData << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateRasterizationOrderAMD& value)
{
	s << "VkPipelineRasterizationStateRasterizationOrderAMD = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\trasterizationOrder = " << value.rasterizationOrder << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDebugMarkerObjectNameInfoEXT& value)
{
	s << "VkDebugMarkerObjectNameInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tobjectType = " << value.objectType << '\n';
	s << "\tobject = " << value.object << '\n';
	s << "\tpObjectName = " << getCharPtrStr(value.pObjectName) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDebugMarkerObjectTagInfoEXT& value)
{
	s << "VkDebugMarkerObjectTagInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tobjectType = " << value.objectType << '\n';
	s << "\tobject = " << value.object << '\n';
	s << "\ttagName = " << value.tagName << '\n';
	s << "\ttagSize = " << value.tagSize << '\n';
	s << "\tpTag = " << value.pTag << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDebugMarkerMarkerInfoEXT& value)
{
	s << "VkDebugMarkerMarkerInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpMarkerName = " << getCharPtrStr(value.pMarkerName) << '\n';
	s << "\tcolor = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.color), DE_ARRAY_END(value.color)) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationImageCreateInfoNV& value)
{
	s << "VkDedicatedAllocationImageCreateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdedicatedAllocation = " << value.dedicatedAllocation << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationBufferCreateInfoNV& value)
{
	s << "VkDedicatedAllocationBufferCreateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdedicatedAllocation = " << value.dedicatedAllocation << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationMemoryAllocateInfoNV& value)
{
	s << "VkDedicatedAllocationMemoryAllocateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\timage = " << value.image << '\n';
	s << "\tbuffer = " << value.buffer << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTransformFeedbackFeaturesEXT& value)
{
	s << "VkPhysicalDeviceTransformFeedbackFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\ttransformFeedback = " << value.transformFeedback << '\n';
	s << "\tgeometryStreams = " << value.geometryStreams << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTransformFeedbackPropertiesEXT& value)
{
	s << "VkPhysicalDeviceTransformFeedbackPropertiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxTransformFeedbackStreams = " << value.maxTransformFeedbackStreams << '\n';
	s << "\tmaxTransformFeedbackBuffers = " << value.maxTransformFeedbackBuffers << '\n';
	s << "\tmaxTransformFeedbackBufferSize = " << value.maxTransformFeedbackBufferSize << '\n';
	s << "\tmaxTransformFeedbackStreamDataSize = " << value.maxTransformFeedbackStreamDataSize << '\n';
	s << "\tmaxTransformFeedbackBufferDataSize = " << value.maxTransformFeedbackBufferDataSize << '\n';
	s << "\tmaxTransformFeedbackBufferDataStride = " << value.maxTransformFeedbackBufferDataStride << '\n';
	s << "\ttransformFeedbackQueries = " << value.transformFeedbackQueries << '\n';
	s << "\ttransformFeedbackStreamsLinesTriangles = " << value.transformFeedbackStreamsLinesTriangles << '\n';
	s << "\ttransformFeedbackRasterizationStreamSelect = " << value.transformFeedbackRasterizationStreamSelect << '\n';
	s << "\ttransformFeedbackDraw = " << value.transformFeedbackDraw << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateStreamCreateInfoEXT& value)
{
	s << "VkPipelineRasterizationStateStreamCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineRasterizationStateStreamCreateFlagsEXTStr(value.flags) << '\n';
	s << "\trasterizationStream = " << value.rasterizationStream << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCuModuleCreateInfoNVX& value)
{
	s << "VkCuModuleCreateInfoNVX = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdataSize = " << value.dataSize << '\n';
	s << "\tpData = " << value.pData << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCuFunctionCreateInfoNVX& value)
{
	s << "VkCuFunctionCreateInfoNVX = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmodule = " << value.module << '\n';
	s << "\tpName = " << getCharPtrStr(value.pName) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCuLaunchInfoNVX& value)
{
	s << "VkCuLaunchInfoNVX = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tfunction = " << value.function << '\n';
	s << "\tgridDimX = " << value.gridDimX << '\n';
	s << "\tgridDimY = " << value.gridDimY << '\n';
	s << "\tgridDimZ = " << value.gridDimZ << '\n';
	s << "\tblockDimX = " << value.blockDimX << '\n';
	s << "\tblockDimY = " << value.blockDimY << '\n';
	s << "\tblockDimZ = " << value.blockDimZ << '\n';
	s << "\tsharedMemBytes = " << value.sharedMemBytes << '\n';
	s << "\tparamCount = " << value.paramCount << '\n';
	s << "\tpParams = " << value.pParams << '\n';
	s << "\textraCount = " << value.extraCount << '\n';
	s << "\tpExtras = " << value.pExtras << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageViewHandleInfoNVX& value)
{
	s << "VkImageViewHandleInfoNVX = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\timageView = " << value.imageView << '\n';
	s << "\tdescriptorType = " << value.descriptorType << '\n';
	s << "\tsampler = " << value.sampler << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageViewAddressPropertiesNVX& value)
{
	s << "VkImageViewAddressPropertiesNVX = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdeviceAddress = " << value.deviceAddress << '\n';
	s << "\tsize = " << value.size << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkTextureLODGatherFormatPropertiesAMD& value)
{
	s << "VkTextureLODGatherFormatPropertiesAMD = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsupportsTextureGatherLODBiasAMD = " << value.supportsTextureGatherLODBiasAMD << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkShaderResourceUsageAMD& value)
{
	s << "VkShaderResourceUsageAMD = {\n";
	s << "\tnumUsedVgprs = " << value.numUsedVgprs << '\n';
	s << "\tnumUsedSgprs = " << value.numUsedSgprs << '\n';
	s << "\tldsSizePerLocalWorkGroup = " << value.ldsSizePerLocalWorkGroup << '\n';
	s << "\tldsUsageSizeInBytes = " << value.ldsUsageSizeInBytes << '\n';
	s << "\tscratchMemUsageInBytes = " << value.scratchMemUsageInBytes << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkShaderStatisticsInfoAMD& value)
{
	s << "VkShaderStatisticsInfoAMD = {\n";
	s << "\tshaderStageMask = " << getShaderStageFlagsStr(value.shaderStageMask) << '\n';
	s << "\tresourceUsage = " << value.resourceUsage << '\n';
	s << "\tnumPhysicalVgprs = " << value.numPhysicalVgprs << '\n';
	s << "\tnumPhysicalSgprs = " << value.numPhysicalSgprs << '\n';
	s << "\tnumAvailableVgprs = " << value.numAvailableVgprs << '\n';
	s << "\tnumAvailableSgprs = " << value.numAvailableSgprs << '\n';
	s << "\tcomputeWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.computeWorkGroupSize), DE_ARRAY_END(value.computeWorkGroupSize)) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCornerSampledImageFeaturesNV& value)
{
	s << "VkPhysicalDeviceCornerSampledImageFeaturesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcornerSampledImage = " << value.cornerSampledImage << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkExternalImageFormatPropertiesNV& value)
{
	s << "VkExternalImageFormatPropertiesNV = {\n";
	s << "\timageFormatProperties = " << value.imageFormatProperties << '\n';
	s << "\texternalMemoryFeatures = " << getExternalMemoryFeatureFlagsNVStr(value.externalMemoryFeatures) << '\n';
	s << "\texportFromImportedHandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.exportFromImportedHandleTypes) << '\n';
	s << "\tcompatibleHandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.compatibleHandleTypes) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkExternalMemoryImageCreateInfoNV& value)
{
	s << "VkExternalMemoryImageCreateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.handleTypes) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkExportMemoryAllocateInfoNV& value)
{
	s << "VkExportMemoryAllocateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.handleTypes) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkValidationFlagsEXT& value)
{
	s << "VkValidationFlagsEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdisabledValidationCheckCount = " << value.disabledValidationCheckCount << '\n';
	s << "\tpDisabledValidationChecks = " << value.pDisabledValidationChecks << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageViewASTCDecodeModeEXT& value)
{
	s << "VkImageViewASTCDecodeModeEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdecodeMode = " << value.decodeMode << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceASTCDecodeFeaturesEXT& value)
{
	s << "VkPhysicalDeviceASTCDecodeFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdecodeModeSharedExponent = " << value.decodeModeSharedExponent << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkConditionalRenderingBeginInfoEXT& value)
{
	s << "VkConditionalRenderingBeginInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tbuffer = " << value.buffer << '\n';
	s << "\toffset = " << value.offset << '\n';
	s << "\tflags = " << getConditionalRenderingFlagsEXTStr(value.flags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceConditionalRenderingFeaturesEXT& value)
{
	s << "VkPhysicalDeviceConditionalRenderingFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tconditionalRendering = " << value.conditionalRendering << '\n';
	s << "\tinheritedConditionalRendering = " << value.inheritedConditionalRendering << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceConditionalRenderingInfoEXT& value)
{
	s << "VkCommandBufferInheritanceConditionalRenderingInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tconditionalRenderingEnable = " << value.conditionalRenderingEnable << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkViewportWScalingNV& value)
{
	s << "VkViewportWScalingNV = {\n";
	s << "\txcoeff = " << value.xcoeff << '\n';
	s << "\tycoeff = " << value.ycoeff << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineViewportWScalingStateCreateInfoNV& value)
{
	s << "VkPipelineViewportWScalingStateCreateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tviewportWScalingEnable = " << value.viewportWScalingEnable << '\n';
	s << "\tviewportCount = " << value.viewportCount << '\n';
	s << "\tpViewportWScalings = " << value.pViewportWScalings << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilities2EXT& value)
{
	s << "VkSurfaceCapabilities2EXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tminImageCount = " << value.minImageCount << '\n';
	s << "\tmaxImageCount = " << value.maxImageCount << '\n';
	s << "\tcurrentExtent = " << value.currentExtent << '\n';
	s << "\tminImageExtent = " << value.minImageExtent << '\n';
	s << "\tmaxImageExtent = " << value.maxImageExtent << '\n';
	s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
	s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
	s << "\tcurrentTransform = " << value.currentTransform << '\n';
	s << "\tsupportedCompositeAlpha = " << getCompositeAlphaFlagsKHRStr(value.supportedCompositeAlpha) << '\n';
	s << "\tsupportedUsageFlags = " << getImageUsageFlagsStr(value.supportedUsageFlags) << '\n';
	s << "\tsupportedSurfaceCounters = " << getSurfaceCounterFlagsEXTStr(value.supportedSurfaceCounters) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDisplayPowerInfoEXT& value)
{
	s << "VkDisplayPowerInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpowerState = " << value.powerState << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceEventInfoEXT& value)
{
	s << "VkDeviceEventInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdeviceEvent = " << value.deviceEvent << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDisplayEventInfoEXT& value)
{
	s << "VkDisplayEventInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdisplayEvent = " << value.displayEvent << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSwapchainCounterCreateInfoEXT& value)
{
	s << "VkSwapchainCounterCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsurfaceCounters = " << getSurfaceCounterFlagsEXTStr(value.surfaceCounters) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkRefreshCycleDurationGOOGLE& value)
{
	s << "VkRefreshCycleDurationGOOGLE = {\n";
	s << "\trefreshDuration = " << value.refreshDuration << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPastPresentationTimingGOOGLE& value)
{
	s << "VkPastPresentationTimingGOOGLE = {\n";
	s << "\tpresentID = " << value.presentID << '\n';
	s << "\tdesiredPresentTime = " << value.desiredPresentTime << '\n';
	s << "\tactualPresentTime = " << value.actualPresentTime << '\n';
	s << "\tearliestPresentTime = " << value.earliestPresentTime << '\n';
	s << "\tpresentMargin = " << value.presentMargin << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPresentTimeGOOGLE& value)
{
	s << "VkPresentTimeGOOGLE = {\n";
	s << "\tpresentID = " << value.presentID << '\n';
	s << "\tdesiredPresentTime = " << value.desiredPresentTime << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPresentTimesInfoGOOGLE& value)
{
	s << "VkPresentTimesInfoGOOGLE = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tswapchainCount = " << value.swapchainCount << '\n';
	s << "\tpTimes = " << value.pTimes << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX& value)
{
	s << "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tperViewPositionAllComponents = " << value.perViewPositionAllComponents << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkViewportSwizzleNV& value)
{
	s << "VkViewportSwizzleNV = {\n";
	s << "\tx = " << value.x << '\n';
	s << "\ty = " << value.y << '\n';
	s << "\tz = " << value.z << '\n';
	s << "\tw = " << value.w << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineViewportSwizzleStateCreateInfoNV& value)
{
	s << "VkPipelineViewportSwizzleStateCreateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineViewportSwizzleStateCreateFlagsNVStr(value.flags) << '\n';
	s << "\tviewportCount = " << value.viewportCount << '\n';
	s << "\tpViewportSwizzles = " << value.pViewportSwizzles << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDiscardRectanglePropertiesEXT& value)
{
	s << "VkPhysicalDeviceDiscardRectanglePropertiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxDiscardRectangles = " << value.maxDiscardRectangles << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineDiscardRectangleStateCreateInfoEXT& value)
{
	s << "VkPipelineDiscardRectangleStateCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineDiscardRectangleStateCreateFlagsEXTStr(value.flags) << '\n';
	s << "\tdiscardRectangleMode = " << value.discardRectangleMode << '\n';
	s << "\tdiscardRectangleCount = " << value.discardRectangleCount << '\n';
	s << "\tpDiscardRectangles = " << value.pDiscardRectangles << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceConservativeRasterizationPropertiesEXT& value)
{
	s << "VkPhysicalDeviceConservativeRasterizationPropertiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tprimitiveOverestimationSize = " << value.primitiveOverestimationSize << '\n';
	s << "\tmaxExtraPrimitiveOverestimationSize = " << value.maxExtraPrimitiveOverestimationSize << '\n';
	s << "\textraPrimitiveOverestimationSizeGranularity = " << value.extraPrimitiveOverestimationSizeGranularity << '\n';
	s << "\tprimitiveUnderestimation = " << value.primitiveUnderestimation << '\n';
	s << "\tconservativePointAndLineRasterization = " << value.conservativePointAndLineRasterization << '\n';
	s << "\tdegenerateTrianglesRasterized = " << value.degenerateTrianglesRasterized << '\n';
	s << "\tdegenerateLinesRasterized = " << value.degenerateLinesRasterized << '\n';
	s << "\tfullyCoveredFragmentShaderInputVariable = " << value.fullyCoveredFragmentShaderInputVariable << '\n';
	s << "\tconservativeRasterizationPostDepthCoverage = " << value.conservativeRasterizationPostDepthCoverage << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationConservativeStateCreateInfoEXT& value)
{
	s << "VkPipelineRasterizationConservativeStateCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineRasterizationConservativeStateCreateFlagsEXTStr(value.flags) << '\n';
	s << "\tconservativeRasterizationMode = " << value.conservativeRasterizationMode << '\n';
	s << "\textraPrimitiveOverestimationSize = " << value.extraPrimitiveOverestimationSize << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDepthClipEnableFeaturesEXT& value)
{
	s << "VkPhysicalDeviceDepthClipEnableFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdepthClipEnable = " << value.depthClipEnable << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationDepthClipStateCreateInfoEXT& value)
{
	s << "VkPipelineRasterizationDepthClipStateCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineRasterizationDepthClipStateCreateFlagsEXTStr(value.flags) << '\n';
	s << "\tdepthClipEnable = " << value.depthClipEnable << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkXYColorEXT& value)
{
	s << "VkXYColorEXT = {\n";
	s << "\tx = " << value.x << '\n';
	s << "\ty = " << value.y << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkHdrMetadataEXT& value)
{
	s << "VkHdrMetadataEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdisplayPrimaryRed = " << value.displayPrimaryRed << '\n';
	s << "\tdisplayPrimaryGreen = " << value.displayPrimaryGreen << '\n';
	s << "\tdisplayPrimaryBlue = " << value.displayPrimaryBlue << '\n';
	s << "\twhitePoint = " << value.whitePoint << '\n';
	s << "\tmaxLuminance = " << value.maxLuminance << '\n';
	s << "\tminLuminance = " << value.minLuminance << '\n';
	s << "\tmaxContentLightLevel = " << value.maxContentLightLevel << '\n';
	s << "\tmaxFrameAverageLightLevel = " << value.maxFrameAverageLightLevel << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDebugUtilsLabelEXT& value)
{
	s << "VkDebugUtilsLabelEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpLabelName = " << getCharPtrStr(value.pLabelName) << '\n';
	s << "\tcolor = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.color), DE_ARRAY_END(value.color)) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDebugUtilsObjectNameInfoEXT& value)
{
	s << "VkDebugUtilsObjectNameInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tobjectType = " << value.objectType << '\n';
	s << "\tobjectHandle = " << value.objectHandle << '\n';
	s << "\tpObjectName = " << getCharPtrStr(value.pObjectName) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDebugUtilsMessengerCallbackDataEXT& value)
{
	s << "VkDebugUtilsMessengerCallbackDataEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getDebugUtilsMessengerCallbackDataFlagsEXTStr(value.flags) << '\n';
	s << "\tpMessageIdName = " << getCharPtrStr(value.pMessageIdName) << '\n';
	s << "\tmessageIdNumber = " << value.messageIdNumber << '\n';
	s << "\tpMessage = " << getCharPtrStr(value.pMessage) << '\n';
	s << "\tqueueLabelCount = " << value.queueLabelCount << '\n';
	s << "\tpQueueLabels = " << value.pQueueLabels << '\n';
	s << "\tcmdBufLabelCount = " << value.cmdBufLabelCount << '\n';
	s << "\tpCmdBufLabels = " << value.pCmdBufLabels << '\n';
	s << "\tobjectCount = " << value.objectCount << '\n';
	s << "\tpObjects = " << value.pObjects << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDebugUtilsMessengerCreateInfoEXT& value)
{
	s << "VkDebugUtilsMessengerCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getDebugUtilsMessengerCreateFlagsEXTStr(value.flags) << '\n';
	s << "\tmessageSeverity = " << getDebugUtilsMessageSeverityFlagsEXTStr(value.messageSeverity) << '\n';
	s << "\tmessageType = " << getDebugUtilsMessageTypeFlagsEXTStr(value.messageType) << '\n';
	s << "\tpfnUserCallback = " << value.pfnUserCallback << '\n';
	s << "\tpUserData = " << value.pUserData << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDebugUtilsObjectTagInfoEXT& value)
{
	s << "VkDebugUtilsObjectTagInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tobjectType = " << value.objectType << '\n';
	s << "\tobjectHandle = " << value.objectHandle << '\n';
	s << "\ttagName = " << value.tagName << '\n';
	s << "\ttagSize = " << value.tagSize << '\n';
	s << "\tpTag = " << value.pTag << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSampleLocationEXT& value)
{
	s << "VkSampleLocationEXT = {\n";
	s << "\tx = " << value.x << '\n';
	s << "\ty = " << value.y << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSampleLocationsInfoEXT& value)
{
	s << "VkSampleLocationsInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsampleLocationsPerPixel = " << value.sampleLocationsPerPixel << '\n';
	s << "\tsampleLocationGridSize = " << value.sampleLocationGridSize << '\n';
	s << "\tsampleLocationsCount = " << value.sampleLocationsCount << '\n';
	s << "\tpSampleLocations = " << value.pSampleLocations << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAttachmentSampleLocationsEXT& value)
{
	s << "VkAttachmentSampleLocationsEXT = {\n";
	s << "\tattachmentIndex = " << value.attachmentIndex << '\n';
	s << "\tsampleLocationsInfo = " << value.sampleLocationsInfo << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSubpassSampleLocationsEXT& value)
{
	s << "VkSubpassSampleLocationsEXT = {\n";
	s << "\tsubpassIndex = " << value.subpassIndex << '\n';
	s << "\tsampleLocationsInfo = " << value.sampleLocationsInfo << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkRenderPassSampleLocationsBeginInfoEXT& value)
{
	s << "VkRenderPassSampleLocationsBeginInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tattachmentInitialSampleLocationsCount = " << value.attachmentInitialSampleLocationsCount << '\n';
	s << "\tpAttachmentInitialSampleLocations = " << value.pAttachmentInitialSampleLocations << '\n';
	s << "\tpostSubpassSampleLocationsCount = " << value.postSubpassSampleLocationsCount << '\n';
	s << "\tpPostSubpassSampleLocations = " << value.pPostSubpassSampleLocations << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineSampleLocationsStateCreateInfoEXT& value)
{
	s << "VkPipelineSampleLocationsStateCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsampleLocationsEnable = " << value.sampleLocationsEnable << '\n';
	s << "\tsampleLocationsInfo = " << value.sampleLocationsInfo << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSampleLocationsPropertiesEXT& value)
{
	s << "VkPhysicalDeviceSampleLocationsPropertiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsampleLocationSampleCounts = " << getSampleCountFlagsStr(value.sampleLocationSampleCounts) << '\n';
	s << "\tmaxSampleLocationGridSize = " << value.maxSampleLocationGridSize << '\n';
	s << "\tsampleLocationCoordinateRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.sampleLocationCoordinateRange), DE_ARRAY_END(value.sampleLocationCoordinateRange)) << '\n';
	s << "\tsampleLocationSubPixelBits = " << value.sampleLocationSubPixelBits << '\n';
	s << "\tvariableSampleLocations = " << value.variableSampleLocations << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMultisamplePropertiesEXT& value)
{
	s << "VkMultisamplePropertiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxSampleLocationGridSize = " << value.maxSampleLocationGridSize << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& value)
{
	s << "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tadvancedBlendCoherentOperations = " << value.advancedBlendCoherentOperations << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT& value)
{
	s << "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tadvancedBlendMaxColorAttachments = " << value.advancedBlendMaxColorAttachments << '\n';
	s << "\tadvancedBlendIndependentBlend = " << value.advancedBlendIndependentBlend << '\n';
	s << "\tadvancedBlendNonPremultipliedSrcColor = " << value.advancedBlendNonPremultipliedSrcColor << '\n';
	s << "\tadvancedBlendNonPremultipliedDstColor = " << value.advancedBlendNonPremultipliedDstColor << '\n';
	s << "\tadvancedBlendCorrelatedOverlap = " << value.advancedBlendCorrelatedOverlap << '\n';
	s << "\tadvancedBlendAllOperations = " << value.advancedBlendAllOperations << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendAdvancedStateCreateInfoEXT& value)
{
	s << "VkPipelineColorBlendAdvancedStateCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrcPremultiplied = " << value.srcPremultiplied << '\n';
	s << "\tdstPremultiplied = " << value.dstPremultiplied << '\n';
	s << "\tblendOverlap = " << value.blendOverlap << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineCoverageToColorStateCreateInfoNV& value)
{
	s << "VkPipelineCoverageToColorStateCreateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineCoverageToColorStateCreateFlagsNVStr(value.flags) << '\n';
	s << "\tcoverageToColorEnable = " << value.coverageToColorEnable << '\n';
	s << "\tcoverageToColorLocation = " << value.coverageToColorLocation << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineCoverageModulationStateCreateInfoNV& value)
{
	s << "VkPipelineCoverageModulationStateCreateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineCoverageModulationStateCreateFlagsNVStr(value.flags) << '\n';
	s << "\tcoverageModulationMode = " << value.coverageModulationMode << '\n';
	s << "\tcoverageModulationTableEnable = " << value.coverageModulationTableEnable << '\n';
	s << "\tcoverageModulationTableCount = " << value.coverageModulationTableCount << '\n';
	s << "\tpCoverageModulationTable = " << value.pCoverageModulationTable << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderSMBuiltinsPropertiesNV& value)
{
	s << "VkPhysicalDeviceShaderSMBuiltinsPropertiesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshaderSMCount = " << value.shaderSMCount << '\n';
	s << "\tshaderWarpsPerSM = " << value.shaderWarpsPerSM << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV& value)
{
	s << "VkPhysicalDeviceShaderSMBuiltinsFeaturesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshaderSMBuiltins = " << value.shaderSMBuiltins << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDrmFormatModifierPropertiesEXT& value)
{
	s << "VkDrmFormatModifierPropertiesEXT = {\n";
	s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
	s << "\tdrmFormatModifierPlaneCount = " << value.drmFormatModifierPlaneCount << '\n';
	s << "\tdrmFormatModifierTilingFeatures = " << getFormatFeatureFlagsStr(value.drmFormatModifierTilingFeatures) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDrmFormatModifierPropertiesListEXT& value)
{
	s << "VkDrmFormatModifierPropertiesListEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdrmFormatModifierCount = " << value.drmFormatModifierCount << '\n';
	s << "\tpDrmFormatModifierProperties = " << value.pDrmFormatModifierProperties << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageDrmFormatModifierInfoEXT& value)
{
	s << "VkPhysicalDeviceImageDrmFormatModifierInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
	s << "\tsharingMode = " << value.sharingMode << '\n';
	s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
	s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageDrmFormatModifierListCreateInfoEXT& value)
{
	s << "VkImageDrmFormatModifierListCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdrmFormatModifierCount = " << value.drmFormatModifierCount << '\n';
	s << "\tpDrmFormatModifiers = " << value.pDrmFormatModifiers << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageDrmFormatModifierExplicitCreateInfoEXT& value)
{
	s << "VkImageDrmFormatModifierExplicitCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
	s << "\tdrmFormatModifierPlaneCount = " << value.drmFormatModifierPlaneCount << '\n';
	s << "\tpPlaneLayouts = " << value.pPlaneLayouts << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageDrmFormatModifierPropertiesEXT& value)
{
	s << "VkImageDrmFormatModifierPropertiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDrmFormatModifierProperties2EXT& value)
{
	s << "VkDrmFormatModifierProperties2EXT = {\n";
	s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
	s << "\tdrmFormatModifierPlaneCount = " << value.drmFormatModifierPlaneCount << '\n';
	s << "\tdrmFormatModifierTilingFeatures = " << value.drmFormatModifierTilingFeatures << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDrmFormatModifierPropertiesList2EXT& value)
{
	s << "VkDrmFormatModifierPropertiesList2EXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdrmFormatModifierCount = " << value.drmFormatModifierCount << '\n';
	s << "\tpDrmFormatModifierProperties = " << value.pDrmFormatModifierProperties << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkValidationCacheCreateInfoEXT& value)
{
	s << "VkValidationCacheCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getValidationCacheCreateFlagsEXTStr(value.flags) << '\n';
	s << "\tinitialDataSize = " << value.initialDataSize << '\n';
	s << "\tpInitialData = " << value.pInitialData << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkShaderModuleValidationCacheCreateInfoEXT& value)
{
	s << "VkShaderModuleValidationCacheCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tvalidationCache = " << value.validationCache << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkShadingRatePaletteNV& value)
{
	s << "VkShadingRatePaletteNV = {\n";
	s << "\tshadingRatePaletteEntryCount = " << value.shadingRatePaletteEntryCount << '\n';
	s << "\tpShadingRatePaletteEntries = " << value.pShadingRatePaletteEntries << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineViewportShadingRateImageStateCreateInfoNV& value)
{
	s << "VkPipelineViewportShadingRateImageStateCreateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshadingRateImageEnable = " << value.shadingRateImageEnable << '\n';
	s << "\tviewportCount = " << value.viewportCount << '\n';
	s << "\tpShadingRatePalettes = " << value.pShadingRatePalettes << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShadingRateImageFeaturesNV& value)
{
	s << "VkPhysicalDeviceShadingRateImageFeaturesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshadingRateImage = " << value.shadingRateImage << '\n';
	s << "\tshadingRateCoarseSampleOrder = " << value.shadingRateCoarseSampleOrder << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShadingRateImagePropertiesNV& value)
{
	s << "VkPhysicalDeviceShadingRateImagePropertiesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshadingRateTexelSize = " << value.shadingRateTexelSize << '\n';
	s << "\tshadingRatePaletteSize = " << value.shadingRatePaletteSize << '\n';
	s << "\tshadingRateMaxCoarseSamples = " << value.shadingRateMaxCoarseSamples << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCoarseSampleLocationNV& value)
{
	s << "VkCoarseSampleLocationNV = {\n";
	s << "\tpixelX = " << value.pixelX << '\n';
	s << "\tpixelY = " << value.pixelY << '\n';
	s << "\tsample = " << value.sample << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCoarseSampleOrderCustomNV& value)
{
	s << "VkCoarseSampleOrderCustomNV = {\n";
	s << "\tshadingRate = " << value.shadingRate << '\n';
	s << "\tsampleCount = " << value.sampleCount << '\n';
	s << "\tsampleLocationCount = " << value.sampleLocationCount << '\n';
	s << "\tpSampleLocations = " << value.pSampleLocations << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV& value)
{
	s << "VkPipelineViewportCoarseSampleOrderStateCreateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsampleOrderType = " << value.sampleOrderType << '\n';
	s << "\tcustomSampleOrderCount = " << value.customSampleOrderCount << '\n';
	s << "\tpCustomSampleOrders = " << value.pCustomSampleOrders << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkRayTracingShaderGroupCreateInfoNV& value)
{
	s << "VkRayTracingShaderGroupCreateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\ttype = " << value.type << '\n';
	s << "\tgeneralShader = " << value.generalShader << '\n';
	s << "\tclosestHitShader = " << value.closestHitShader << '\n';
	s << "\tanyHitShader = " << value.anyHitShader << '\n';
	s << "\tintersectionShader = " << value.intersectionShader << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkRayTracingPipelineCreateInfoNV& value)
{
	s << "VkRayTracingPipelineCreateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
	s << "\tstageCount = " << value.stageCount << '\n';
	s << "\tpStages = " << value.pStages << '\n';
	s << "\tgroupCount = " << value.groupCount << '\n';
	s << "\tpGroups = " << value.pGroups << '\n';
	s << "\tmaxRecursionDepth = " << value.maxRecursionDepth << '\n';
	s << "\tlayout = " << value.layout << '\n';
	s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
	s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkGeometryTrianglesNV& value)
{
	s << "VkGeometryTrianglesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tvertexData = " << value.vertexData << '\n';
	s << "\tvertexOffset = " << value.vertexOffset << '\n';
	s << "\tvertexCount = " << value.vertexCount << '\n';
	s << "\tvertexStride = " << value.vertexStride << '\n';
	s << "\tvertexFormat = " << value.vertexFormat << '\n';
	s << "\tindexData = " << value.indexData << '\n';
	s << "\tindexOffset = " << value.indexOffset << '\n';
	s << "\tindexCount = " << value.indexCount << '\n';
	s << "\tindexType = " << value.indexType << '\n';
	s << "\ttransformData = " << value.transformData << '\n';
	s << "\ttransformOffset = " << value.transformOffset << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkGeometryAABBNV& value)
{
	s << "VkGeometryAABBNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\taabbData = " << value.aabbData << '\n';
	s << "\tnumAABBs = " << value.numAABBs << '\n';
	s << "\tstride = " << value.stride << '\n';
	s << "\toffset = " << value.offset << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkGeometryDataNV& value)
{
	s << "VkGeometryDataNV = {\n";
	s << "\ttriangles = " << value.triangles << '\n';
	s << "\taabbs = " << value.aabbs << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkGeometryNV& value)
{
	s << "VkGeometryNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tgeometryType = " << value.geometryType << '\n';
	s << "\tgeometry = " << value.geometry << '\n';
	s << "\tflags = " << getGeometryFlagsKHRStr(value.flags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureInfoNV& value)
{
	s << "VkAccelerationStructureInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\ttype = " << value.type << '\n';
	s << "\tflags = " << getBuildAccelerationStructureFlagsNVStr(value.flags) << '\n';
	s << "\tinstanceCount = " << value.instanceCount << '\n';
	s << "\tgeometryCount = " << value.geometryCount << '\n';
	s << "\tpGeometries = " << value.pGeometries << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureCreateInfoNV& value)
{
	s << "VkAccelerationStructureCreateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcompactedSize = " << value.compactedSize << '\n';
	s << "\tinfo = " << value.info << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBindAccelerationStructureMemoryInfoNV& value)
{
	s << "VkBindAccelerationStructureMemoryInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\taccelerationStructure = " << value.accelerationStructure << '\n';
	s << "\tmemory = " << value.memory << '\n';
	s << "\tmemoryOffset = " << value.memoryOffset << '\n';
	s << "\tdeviceIndexCount = " << value.deviceIndexCount << '\n';
	s << "\tpDeviceIndices = " << value.pDeviceIndices << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSetAccelerationStructureNV& value)
{
	s << "VkWriteDescriptorSetAccelerationStructureNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\taccelerationStructureCount = " << value.accelerationStructureCount << '\n';
	s << "\tpAccelerationStructures = " << value.pAccelerationStructures << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureMemoryRequirementsInfoNV& value)
{
	s << "VkAccelerationStructureMemoryRequirementsInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\ttype = " << value.type << '\n';
	s << "\taccelerationStructure = " << value.accelerationStructure << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRayTracingPropertiesNV& value)
{
	s << "VkPhysicalDeviceRayTracingPropertiesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshaderGroupHandleSize = " << value.shaderGroupHandleSize << '\n';
	s << "\tmaxRecursionDepth = " << value.maxRecursionDepth << '\n';
	s << "\tmaxShaderGroupStride = " << value.maxShaderGroupStride << '\n';
	s << "\tshaderGroupBaseAlignment = " << value.shaderGroupBaseAlignment << '\n';
	s << "\tmaxGeometryCount = " << value.maxGeometryCount << '\n';
	s << "\tmaxInstanceCount = " << value.maxInstanceCount << '\n';
	s << "\tmaxTriangleCount = " << value.maxTriangleCount << '\n';
	s << "\tmaxDescriptorSetAccelerationStructures = " << value.maxDescriptorSetAccelerationStructures << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkTransformMatrixKHR& value)
{
	s << "VkTransformMatrixKHR = {\n";
	s << "\tmatrix = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.matrix), DE_ARRAY_END(value.matrix)) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAabbPositionsKHR& value)
{
	s << "VkAabbPositionsKHR = {\n";
	s << "\tminX = " << value.minX << '\n';
	s << "\tminY = " << value.minY << '\n';
	s << "\tminZ = " << value.minZ << '\n';
	s << "\tmaxX = " << value.maxX << '\n';
	s << "\tmaxY = " << value.maxY << '\n';
	s << "\tmaxZ = " << value.maxZ << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureInstanceKHR& value)
{
	s << "VkAccelerationStructureInstanceKHR = {\n";
	s << "\ttransform = " << value.transform << '\n';
	s << "\tinstanceCustomIndex = " << value.instanceCustomIndex << '\n';
	s << "\tmask = " << value.mask << '\n';
	s << "\tinstanceShaderBindingTableRecordOffset = " << value.instanceShaderBindingTableRecordOffset << '\n';
	s << "\tflags = " << getGeometryInstanceFlagsKHRStr(value.flags) << '\n';
	s << "\taccelerationStructureReference = " << value.accelerationStructureReference << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV& value)
{
	s << "VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\trepresentativeFragmentTest = " << value.representativeFragmentTest << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineRepresentativeFragmentTestStateCreateInfoNV& value)
{
	s << "VkPipelineRepresentativeFragmentTestStateCreateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\trepresentativeFragmentTestEnable = " << value.representativeFragmentTestEnable << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageViewImageFormatInfoEXT& value)
{
	s << "VkPhysicalDeviceImageViewImageFormatInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\timageViewType = " << value.imageViewType << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkFilterCubicImageViewImageFormatPropertiesEXT& value)
{
	s << "VkFilterCubicImageViewImageFormatPropertiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tfilterCubic = " << value.filterCubic << '\n';
	s << "\tfilterCubicMinmax = " << value.filterCubicMinmax << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImportMemoryHostPointerInfoEXT& value)
{
	s << "VkImportMemoryHostPointerInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << "\tpHostPointer = " << value.pHostPointer << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMemoryHostPointerPropertiesEXT& value)
{
	s << "VkMemoryHostPointerPropertiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalMemoryHostPropertiesEXT& value)
{
	s << "VkPhysicalDeviceExternalMemoryHostPropertiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tminImportedHostPointerAlignment = " << value.minImportedHostPointerAlignment << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineCompilerControlCreateInfoAMD& value)
{
	s << "VkPipelineCompilerControlCreateInfoAMD = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcompilerControlFlags = " << getPipelineCompilerControlFlagsAMDStr(value.compilerControlFlags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCalibratedTimestampInfoEXT& value)
{
	s << "VkCalibratedTimestampInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\ttimeDomain = " << value.timeDomain << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderCorePropertiesAMD& value)
{
	s << "VkPhysicalDeviceShaderCorePropertiesAMD = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshaderEngineCount = " << value.shaderEngineCount << '\n';
	s << "\tshaderArraysPerEngineCount = " << value.shaderArraysPerEngineCount << '\n';
	s << "\tcomputeUnitsPerShaderArray = " << value.computeUnitsPerShaderArray << '\n';
	s << "\tsimdPerComputeUnit = " << value.simdPerComputeUnit << '\n';
	s << "\twavefrontsPerSimd = " << value.wavefrontsPerSimd << '\n';
	s << "\twavefrontSize = " << value.wavefrontSize << '\n';
	s << "\tsgprsPerSimd = " << value.sgprsPerSimd << '\n';
	s << "\tminSgprAllocation = " << value.minSgprAllocation << '\n';
	s << "\tmaxSgprAllocation = " << value.maxSgprAllocation << '\n';
	s << "\tsgprAllocationGranularity = " << value.sgprAllocationGranularity << '\n';
	s << "\tvgprsPerSimd = " << value.vgprsPerSimd << '\n';
	s << "\tminVgprAllocation = " << value.minVgprAllocation << '\n';
	s << "\tmaxVgprAllocation = " << value.maxVgprAllocation << '\n';
	s << "\tvgprAllocationGranularity = " << value.vgprAllocationGranularity << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceMemoryOverallocationCreateInfoAMD& value)
{
	s << "VkDeviceMemoryOverallocationCreateInfoAMD = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\toverallocationBehavior = " << value.overallocationBehavior << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT& value)
{
	s << "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxVertexAttribDivisor = " << value.maxVertexAttribDivisor << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDivisorDescriptionEXT& value)
{
	s << "VkVertexInputBindingDivisorDescriptionEXT = {\n";
	s << "\tbinding = " << value.binding << '\n';
	s << "\tdivisor = " << value.divisor << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineVertexInputDivisorStateCreateInfoEXT& value)
{
	s << "VkPipelineVertexInputDivisorStateCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tvertexBindingDivisorCount = " << value.vertexBindingDivisorCount << '\n';
	s << "\tpVertexBindingDivisors = " << value.pVertexBindingDivisors << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& value)
{
	s << "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tvertexAttributeInstanceRateDivisor = " << value.vertexAttributeInstanceRateDivisor << '\n';
	s << "\tvertexAttributeInstanceRateZeroDivisor = " << value.vertexAttributeInstanceRateZeroDivisor << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV& value)
{
	s << "VkPhysicalDeviceComputeShaderDerivativesFeaturesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcomputeDerivativeGroupQuads = " << value.computeDerivativeGroupQuads << '\n';
	s << "\tcomputeDerivativeGroupLinear = " << value.computeDerivativeGroupLinear << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMeshShaderFeaturesNV& value)
{
	s << "VkPhysicalDeviceMeshShaderFeaturesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\ttaskShader = " << value.taskShader << '\n';
	s << "\tmeshShader = " << value.meshShader << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMeshShaderPropertiesNV& value)
{
	s << "VkPhysicalDeviceMeshShaderPropertiesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxDrawMeshTasksCount = " << value.maxDrawMeshTasksCount << '\n';
	s << "\tmaxTaskWorkGroupInvocations = " << value.maxTaskWorkGroupInvocations << '\n';
	s << "\tmaxTaskWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxTaskWorkGroupSize), DE_ARRAY_END(value.maxTaskWorkGroupSize)) << '\n';
	s << "\tmaxTaskTotalMemorySize = " << value.maxTaskTotalMemorySize << '\n';
	s << "\tmaxTaskOutputCount = " << value.maxTaskOutputCount << '\n';
	s << "\tmaxMeshWorkGroupInvocations = " << value.maxMeshWorkGroupInvocations << '\n';
	s << "\tmaxMeshWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxMeshWorkGroupSize), DE_ARRAY_END(value.maxMeshWorkGroupSize)) << '\n';
	s << "\tmaxMeshTotalMemorySize = " << value.maxMeshTotalMemorySize << '\n';
	s << "\tmaxMeshOutputVertices = " << value.maxMeshOutputVertices << '\n';
	s << "\tmaxMeshOutputPrimitives = " << value.maxMeshOutputPrimitives << '\n';
	s << "\tmaxMeshMultiviewViewCount = " << value.maxMeshMultiviewViewCount << '\n';
	s << "\tmeshOutputPerVertexGranularity = " << value.meshOutputPerVertexGranularity << '\n';
	s << "\tmeshOutputPerPrimitiveGranularity = " << value.meshOutputPerPrimitiveGranularity << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDrawMeshTasksIndirectCommandNV& value)
{
	s << "VkDrawMeshTasksIndirectCommandNV = {\n";
	s << "\ttaskCount = " << value.taskCount << '\n';
	s << "\tfirstTask = " << value.firstTask << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV& value)
{
	s << "VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tfragmentShaderBarycentric = " << value.fragmentShaderBarycentric << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderImageFootprintFeaturesNV& value)
{
	s << "VkPhysicalDeviceShaderImageFootprintFeaturesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\timageFootprint = " << value.imageFootprint << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineViewportExclusiveScissorStateCreateInfoNV& value)
{
	s << "VkPipelineViewportExclusiveScissorStateCreateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\texclusiveScissorCount = " << value.exclusiveScissorCount << '\n';
	s << "\tpExclusiveScissors = " << value.pExclusiveScissors << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExclusiveScissorFeaturesNV& value)
{
	s << "VkPhysicalDeviceExclusiveScissorFeaturesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\texclusiveScissor = " << value.exclusiveScissor << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkQueueFamilyCheckpointPropertiesNV& value)
{
	s << "VkQueueFamilyCheckpointPropertiesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcheckpointExecutionStageMask = " << getPipelineStageFlagsStr(value.checkpointExecutionStageMask) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCheckpointDataNV& value)
{
	s << "VkCheckpointDataNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tstage = " << value.stage << '\n';
	s << "\tpCheckpointMarker = " << value.pCheckpointMarker << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL& value)
{
	s << "VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshaderIntegerFunctions2 = " << value.shaderIntegerFunctions2 << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPerformanceValueDataINTEL& value)
{
	s << "VkPerformanceValueDataINTEL = {\n";
	s << "\tvalue32 = " << value.value32 << '\n';
	s << "\tvalue64 = " << value.value64 << '\n';
	s << "\tvalueFloat = " << value.valueFloat << '\n';
	s << "\tvalueBool = " << value.valueBool << '\n';
	s << "\tvalueString = " << getCharPtrStr(value.valueString) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPerformanceValueINTEL& value)
{
	s << "VkPerformanceValueINTEL = {\n";
	s << "\ttype = " << value.type << '\n';
	s << "\tdata = " << value.data << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkInitializePerformanceApiInfoINTEL& value)
{
	s << "VkInitializePerformanceApiInfoINTEL = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpUserData = " << value.pUserData << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkQueryPoolPerformanceQueryCreateInfoINTEL& value)
{
	s << "VkQueryPoolPerformanceQueryCreateInfoINTEL = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tperformanceCountersSampling = " << value.performanceCountersSampling << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPerformanceMarkerInfoINTEL& value)
{
	s << "VkPerformanceMarkerInfoINTEL = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmarker = " << value.marker << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPerformanceStreamMarkerInfoINTEL& value)
{
	s << "VkPerformanceStreamMarkerInfoINTEL = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmarker = " << value.marker << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPerformanceOverrideInfoINTEL& value)
{
	s << "VkPerformanceOverrideInfoINTEL = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\ttype = " << value.type << '\n';
	s << "\tenable = " << value.enable << '\n';
	s << "\tparameter = " << value.parameter << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPerformanceConfigurationAcquireInfoINTEL& value)
{
	s << "VkPerformanceConfigurationAcquireInfoINTEL = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\ttype = " << value.type << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePCIBusInfoPropertiesEXT& value)
{
	s << "VkPhysicalDevicePCIBusInfoPropertiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpciDomain = " << value.pciDomain << '\n';
	s << "\tpciBus = " << value.pciBus << '\n';
	s << "\tpciDevice = " << value.pciDevice << '\n';
	s << "\tpciFunction = " << value.pciFunction << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDisplayNativeHdrSurfaceCapabilitiesAMD& value)
{
	s << "VkDisplayNativeHdrSurfaceCapabilitiesAMD = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tlocalDimmingSupport = " << value.localDimmingSupport << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSwapchainDisplayNativeHdrCreateInfoAMD& value)
{
	s << "VkSwapchainDisplayNativeHdrCreateInfoAMD = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tlocalDimmingEnable = " << value.localDimmingEnable << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentDensityMapFeaturesEXT& value)
{
	s << "VkPhysicalDeviceFragmentDensityMapFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tfragmentDensityMap = " << value.fragmentDensityMap << '\n';
	s << "\tfragmentDensityMapDynamic = " << value.fragmentDensityMapDynamic << '\n';
	s << "\tfragmentDensityMapNonSubsampledImages = " << value.fragmentDensityMapNonSubsampledImages << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentDensityMapPropertiesEXT& value)
{
	s << "VkPhysicalDeviceFragmentDensityMapPropertiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tminFragmentDensityTexelSize = " << value.minFragmentDensityTexelSize << '\n';
	s << "\tmaxFragmentDensityTexelSize = " << value.maxFragmentDensityTexelSize << '\n';
	s << "\tfragmentDensityInvocations = " << value.fragmentDensityInvocations << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkRenderPassFragmentDensityMapCreateInfoEXT& value)
{
	s << "VkRenderPassFragmentDensityMapCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tfragmentDensityMapAttachment = " << value.fragmentDensityMapAttachment << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderCoreProperties2AMD& value)
{
	s << "VkPhysicalDeviceShaderCoreProperties2AMD = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshaderCoreFeatures = " << getShaderCorePropertiesFlagsAMDStr(value.shaderCoreFeatures) << '\n';
	s << "\tactiveComputeUnitCount = " << value.activeComputeUnitCount << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCoherentMemoryFeaturesAMD& value)
{
	s << "VkPhysicalDeviceCoherentMemoryFeaturesAMD = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdeviceCoherentMemory = " << value.deviceCoherentMemory << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT& value)
{
	s << "VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshaderImageInt64Atomics = " << value.shaderImageInt64Atomics << '\n';
	s << "\tsparseImageInt64Atomics = " << value.sparseImageInt64Atomics << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryBudgetPropertiesEXT& value)
{
	s << "VkPhysicalDeviceMemoryBudgetPropertiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\theapBudget = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.heapBudget), DE_ARRAY_END(value.heapBudget)) << '\n';
	s << "\theapUsage = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.heapUsage), DE_ARRAY_END(value.heapUsage)) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryPriorityFeaturesEXT& value)
{
	s << "VkPhysicalDeviceMemoryPriorityFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmemoryPriority = " << value.memoryPriority << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMemoryPriorityAllocateInfoEXT& value)
{
	s << "VkMemoryPriorityAllocateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpriority = " << value.priority << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& value)
{
	s << "VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdedicatedAllocationImageAliasing = " << value.dedicatedAllocationImageAliasing << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& value)
{
	s << "VkPhysicalDeviceBufferDeviceAddressFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tbufferDeviceAddress = " << value.bufferDeviceAddress << '\n';
	s << "\tbufferDeviceAddressCaptureReplay = " << value.bufferDeviceAddressCaptureReplay << '\n';
	s << "\tbufferDeviceAddressMultiDevice = " << value.bufferDeviceAddressMultiDevice << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBufferDeviceAddressCreateInfoEXT& value)
{
	s << "VkBufferDeviceAddressCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdeviceAddress = " << value.deviceAddress << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkValidationFeaturesEXT& value)
{
	s << "VkValidationFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tenabledValidationFeatureCount = " << value.enabledValidationFeatureCount << '\n';
	s << "\tpEnabledValidationFeatures = " << value.pEnabledValidationFeatures << '\n';
	s << "\tdisabledValidationFeatureCount = " << value.disabledValidationFeatureCount << '\n';
	s << "\tpDisabledValidationFeatures = " << value.pDisabledValidationFeatures << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCooperativeMatrixPropertiesNV& value)
{
	s << "VkCooperativeMatrixPropertiesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tMSize = " << value.MSize << '\n';
	s << "\tNSize = " << value.NSize << '\n';
	s << "\tKSize = " << value.KSize << '\n';
	s << "\tAType = " << value.AType << '\n';
	s << "\tBType = " << value.BType << '\n';
	s << "\tCType = " << value.CType << '\n';
	s << "\tDType = " << value.DType << '\n';
	s << "\tscope = " << value.scope << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCooperativeMatrixFeaturesNV& value)
{
	s << "VkPhysicalDeviceCooperativeMatrixFeaturesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcooperativeMatrix = " << value.cooperativeMatrix << '\n';
	s << "\tcooperativeMatrixRobustBufferAccess = " << value.cooperativeMatrixRobustBufferAccess << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCooperativeMatrixPropertiesNV& value)
{
	s << "VkPhysicalDeviceCooperativeMatrixPropertiesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcooperativeMatrixSupportedStages = " << getShaderStageFlagsStr(value.cooperativeMatrixSupportedStages) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCoverageReductionModeFeaturesNV& value)
{
	s << "VkPhysicalDeviceCoverageReductionModeFeaturesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcoverageReductionMode = " << value.coverageReductionMode << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineCoverageReductionStateCreateInfoNV& value)
{
	s << "VkPipelineCoverageReductionStateCreateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineCoverageReductionStateCreateFlagsNVStr(value.flags) << '\n';
	s << "\tcoverageReductionMode = " << value.coverageReductionMode << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkFramebufferMixedSamplesCombinationNV& value)
{
	s << "VkFramebufferMixedSamplesCombinationNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcoverageReductionMode = " << value.coverageReductionMode << '\n';
	s << "\trasterizationSamples = " << value.rasterizationSamples << '\n';
	s << "\tdepthStencilSamples = " << getSampleCountFlagsStr(value.depthStencilSamples) << '\n';
	s << "\tcolorSamples = " << getSampleCountFlagsStr(value.colorSamples) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT& value)
{
	s << "VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tfragmentShaderSampleInterlock = " << value.fragmentShaderSampleInterlock << '\n';
	s << "\tfragmentShaderPixelInterlock = " << value.fragmentShaderPixelInterlock << '\n';
	s << "\tfragmentShaderShadingRateInterlock = " << value.fragmentShaderShadingRateInterlock << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT& value)
{
	s << "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tycbcrImageArrays = " << value.ycbcrImageArrays << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProvokingVertexFeaturesEXT& value)
{
	s << "VkPhysicalDeviceProvokingVertexFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tprovokingVertexLast = " << value.provokingVertexLast << '\n';
	s << "\ttransformFeedbackPreservesProvokingVertex = " << value.transformFeedbackPreservesProvokingVertex << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProvokingVertexPropertiesEXT& value)
{
	s << "VkPhysicalDeviceProvokingVertexPropertiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tprovokingVertexModePerPipeline = " << value.provokingVertexModePerPipeline << '\n';
	s << "\ttransformFeedbackPreservesTriangleFanProvokingVertex = " << value.transformFeedbackPreservesTriangleFanProvokingVertex << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationProvokingVertexStateCreateInfoEXT& value)
{
	s << "VkPipelineRasterizationProvokingVertexStateCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tprovokingVertexMode = " << value.provokingVertexMode << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkHeadlessSurfaceCreateInfoEXT& value)
{
	s << "VkHeadlessSurfaceCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getHeadlessSurfaceCreateFlagsEXTStr(value.flags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLineRasterizationFeaturesEXT& value)
{
	s << "VkPhysicalDeviceLineRasterizationFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\trectangularLines = " << value.rectangularLines << '\n';
	s << "\tbresenhamLines = " << value.bresenhamLines << '\n';
	s << "\tsmoothLines = " << value.smoothLines << '\n';
	s << "\tstippledRectangularLines = " << value.stippledRectangularLines << '\n';
	s << "\tstippledBresenhamLines = " << value.stippledBresenhamLines << '\n';
	s << "\tstippledSmoothLines = " << value.stippledSmoothLines << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLineRasterizationPropertiesEXT& value)
{
	s << "VkPhysicalDeviceLineRasterizationPropertiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tlineSubPixelPrecisionBits = " << value.lineSubPixelPrecisionBits << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationLineStateCreateInfoEXT& value)
{
	s << "VkPipelineRasterizationLineStateCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tlineRasterizationMode = " << value.lineRasterizationMode << '\n';
	s << "\tstippledLineEnable = " << value.stippledLineEnable << '\n';
	s << "\tlineStippleFactor = " << value.lineStippleFactor << '\n';
	s << "\tlineStipplePattern = " << value.lineStipplePattern << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT& value)
{
	s << "VkPhysicalDeviceShaderAtomicFloatFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshaderBufferFloat32Atomics = " << value.shaderBufferFloat32Atomics << '\n';
	s << "\tshaderBufferFloat32AtomicAdd = " << value.shaderBufferFloat32AtomicAdd << '\n';
	s << "\tshaderBufferFloat64Atomics = " << value.shaderBufferFloat64Atomics << '\n';
	s << "\tshaderBufferFloat64AtomicAdd = " << value.shaderBufferFloat64AtomicAdd << '\n';
	s << "\tshaderSharedFloat32Atomics = " << value.shaderSharedFloat32Atomics << '\n';
	s << "\tshaderSharedFloat32AtomicAdd = " << value.shaderSharedFloat32AtomicAdd << '\n';
	s << "\tshaderSharedFloat64Atomics = " << value.shaderSharedFloat64Atomics << '\n';
	s << "\tshaderSharedFloat64AtomicAdd = " << value.shaderSharedFloat64AtomicAdd << '\n';
	s << "\tshaderImageFloat32Atomics = " << value.shaderImageFloat32Atomics << '\n';
	s << "\tshaderImageFloat32AtomicAdd = " << value.shaderImageFloat32AtomicAdd << '\n';
	s << "\tsparseImageFloat32Atomics = " << value.sparseImageFloat32Atomics << '\n';
	s << "\tsparseImageFloat32AtomicAdd = " << value.sparseImageFloat32AtomicAdd << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceIndexTypeUint8FeaturesEXT& value)
{
	s << "VkPhysicalDeviceIndexTypeUint8FeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tindexTypeUint8 = " << value.indexTypeUint8 << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT& value)
{
	s << "VkPhysicalDeviceExtendedDynamicStateFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\textendedDynamicState = " << value.extendedDynamicState << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT& value)
{
	s << "VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshaderBufferFloat16Atomics = " << value.shaderBufferFloat16Atomics << '\n';
	s << "\tshaderBufferFloat16AtomicAdd = " << value.shaderBufferFloat16AtomicAdd << '\n';
	s << "\tshaderBufferFloat16AtomicMinMax = " << value.shaderBufferFloat16AtomicMinMax << '\n';
	s << "\tshaderBufferFloat32AtomicMinMax = " << value.shaderBufferFloat32AtomicMinMax << '\n';
	s << "\tshaderBufferFloat64AtomicMinMax = " << value.shaderBufferFloat64AtomicMinMax << '\n';
	s << "\tshaderSharedFloat16Atomics = " << value.shaderSharedFloat16Atomics << '\n';
	s << "\tshaderSharedFloat16AtomicAdd = " << value.shaderSharedFloat16AtomicAdd << '\n';
	s << "\tshaderSharedFloat16AtomicMinMax = " << value.shaderSharedFloat16AtomicMinMax << '\n';
	s << "\tshaderSharedFloat32AtomicMinMax = " << value.shaderSharedFloat32AtomicMinMax << '\n';
	s << "\tshaderSharedFloat64AtomicMinMax = " << value.shaderSharedFloat64AtomicMinMax << '\n';
	s << "\tshaderImageFloat32AtomicMinMax = " << value.shaderImageFloat32AtomicMinMax << '\n';
	s << "\tsparseImageFloat32AtomicMinMax = " << value.sparseImageFloat32AtomicMinMax << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV& value)
{
	s << "VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxGraphicsShaderGroupCount = " << value.maxGraphicsShaderGroupCount << '\n';
	s << "\tmaxIndirectSequenceCount = " << value.maxIndirectSequenceCount << '\n';
	s << "\tmaxIndirectCommandsTokenCount = " << value.maxIndirectCommandsTokenCount << '\n';
	s << "\tmaxIndirectCommandsStreamCount = " << value.maxIndirectCommandsStreamCount << '\n';
	s << "\tmaxIndirectCommandsTokenOffset = " << value.maxIndirectCommandsTokenOffset << '\n';
	s << "\tmaxIndirectCommandsStreamStride = " << value.maxIndirectCommandsStreamStride << '\n';
	s << "\tminSequencesCountBufferOffsetAlignment = " << value.minSequencesCountBufferOffsetAlignment << '\n';
	s << "\tminSequencesIndexBufferOffsetAlignment = " << value.minSequencesIndexBufferOffsetAlignment << '\n';
	s << "\tminIndirectCommandsBufferOffsetAlignment = " << value.minIndirectCommandsBufferOffsetAlignment << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV& value)
{
	s << "VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdeviceGeneratedCommands = " << value.deviceGeneratedCommands << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkGraphicsShaderGroupCreateInfoNV& value)
{
	s << "VkGraphicsShaderGroupCreateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tstageCount = " << value.stageCount << '\n';
	s << "\tpStages = " << value.pStages << '\n';
	s << "\tpVertexInputState = " << value.pVertexInputState << '\n';
	s << "\tpTessellationState = " << value.pTessellationState << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkGraphicsPipelineShaderGroupsCreateInfoNV& value)
{
	s << "VkGraphicsPipelineShaderGroupsCreateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tgroupCount = " << value.groupCount << '\n';
	s << "\tpGroups = " << value.pGroups << '\n';
	s << "\tpipelineCount = " << value.pipelineCount << '\n';
	s << "\tpPipelines = " << value.pPipelines << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBindShaderGroupIndirectCommandNV& value)
{
	s << "VkBindShaderGroupIndirectCommandNV = {\n";
	s << "\tgroupIndex = " << value.groupIndex << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBindIndexBufferIndirectCommandNV& value)
{
	s << "VkBindIndexBufferIndirectCommandNV = {\n";
	s << "\tbufferAddress = " << value.bufferAddress << '\n';
	s << "\tsize = " << value.size << '\n';
	s << "\tindexType = " << value.indexType << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBindVertexBufferIndirectCommandNV& value)
{
	s << "VkBindVertexBufferIndirectCommandNV = {\n";
	s << "\tbufferAddress = " << value.bufferAddress << '\n';
	s << "\tsize = " << value.size << '\n';
	s << "\tstride = " << value.stride << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSetStateFlagsIndirectCommandNV& value)
{
	s << "VkSetStateFlagsIndirectCommandNV = {\n";
	s << "\tdata = " << value.data << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkIndirectCommandsStreamNV& value)
{
	s << "VkIndirectCommandsStreamNV = {\n";
	s << "\tbuffer = " << value.buffer << '\n';
	s << "\toffset = " << value.offset << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkIndirectCommandsLayoutTokenNV& value)
{
	s << "VkIndirectCommandsLayoutTokenNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\ttokenType = " << value.tokenType << '\n';
	s << "\tstream = " << value.stream << '\n';
	s << "\toffset = " << value.offset << '\n';
	s << "\tvertexBindingUnit = " << value.vertexBindingUnit << '\n';
	s << "\tvertexDynamicStride = " << value.vertexDynamicStride << '\n';
	s << "\tpushconstantPipelineLayout = " << value.pushconstantPipelineLayout << '\n';
	s << "\tpushconstantShaderStageFlags = " << getShaderStageFlagsStr(value.pushconstantShaderStageFlags) << '\n';
	s << "\tpushconstantOffset = " << value.pushconstantOffset << '\n';
	s << "\tpushconstantSize = " << value.pushconstantSize << '\n';
	s << "\tindirectStateFlags = " << getIndirectStateFlagsNVStr(value.indirectStateFlags) << '\n';
	s << "\tindexTypeCount = " << value.indexTypeCount << '\n';
	s << "\tpIndexTypes = " << value.pIndexTypes << '\n';
	s << "\tpIndexTypeValues = " << value.pIndexTypeValues << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkIndirectCommandsLayoutCreateInfoNV& value)
{
	s << "VkIndirectCommandsLayoutCreateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getIndirectCommandsLayoutUsageFlagsNVStr(value.flags) << '\n';
	s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
	s << "\ttokenCount = " << value.tokenCount << '\n';
	s << "\tpTokens = " << value.pTokens << '\n';
	s << "\tstreamCount = " << value.streamCount << '\n';
	s << "\tpStreamStrides = " << value.pStreamStrides << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkGeneratedCommandsInfoNV& value)
{
	s << "VkGeneratedCommandsInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
	s << "\tpipeline = " << value.pipeline << '\n';
	s << "\tindirectCommandsLayout = " << value.indirectCommandsLayout << '\n';
	s << "\tstreamCount = " << value.streamCount << '\n';
	s << "\tpStreams = " << value.pStreams << '\n';
	s << "\tsequencesCount = " << value.sequencesCount << '\n';
	s << "\tpreprocessBuffer = " << value.preprocessBuffer << '\n';
	s << "\tpreprocessOffset = " << value.preprocessOffset << '\n';
	s << "\tpreprocessSize = " << value.preprocessSize << '\n';
	s << "\tsequencesCountBuffer = " << value.sequencesCountBuffer << '\n';
	s << "\tsequencesCountOffset = " << value.sequencesCountOffset << '\n';
	s << "\tsequencesIndexBuffer = " << value.sequencesIndexBuffer << '\n';
	s << "\tsequencesIndexOffset = " << value.sequencesIndexOffset << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkGeneratedCommandsMemoryRequirementsInfoNV& value)
{
	s << "VkGeneratedCommandsMemoryRequirementsInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
	s << "\tpipeline = " << value.pipeline << '\n';
	s << "\tindirectCommandsLayout = " << value.indirectCommandsLayout << '\n';
	s << "\tmaxSequencesCount = " << value.maxSequencesCount << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceInheritedViewportScissorFeaturesNV& value)
{
	s << "VkPhysicalDeviceInheritedViewportScissorFeaturesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tinheritedViewportScissor2D = " << value.inheritedViewportScissor2D << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceViewportScissorInfoNV& value)
{
	s << "VkCommandBufferInheritanceViewportScissorInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tviewportScissor2D = " << value.viewportScissor2D << '\n';
	s << "\tviewportDepthCount = " << value.viewportDepthCount << '\n';
	s << "\tpViewportDepths = " << value.pViewportDepths << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& value)
{
	s << "VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\ttexelBufferAlignment = " << value.texelBufferAlignment << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkRenderPassTransformBeginInfoQCOM& value)
{
	s << "VkRenderPassTransformBeginInfoQCOM = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\ttransform = " << value.transform << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceRenderPassTransformInfoQCOM& value)
{
	s << "VkCommandBufferInheritanceRenderPassTransformInfoQCOM = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\ttransform = " << value.transform << '\n';
	s << "\trenderArea = " << value.renderArea << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT& value)
{
	s << "VkPhysicalDeviceDeviceMemoryReportFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdeviceMemoryReport = " << value.deviceMemoryReport << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceMemoryReportCallbackDataEXT& value)
{
	s << "VkDeviceMemoryReportCallbackDataEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getDeviceMemoryReportFlagsEXTStr(value.flags) << '\n';
	s << "\ttype = " << value.type << '\n';
	s << "\tmemoryObjectId = " << value.memoryObjectId << '\n';
	s << "\tsize = " << value.size << '\n';
	s << "\tobjectType = " << value.objectType << '\n';
	s << "\tobjectHandle = " << value.objectHandle << '\n';
	s << "\theapIndex = " << value.heapIndex << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceDeviceMemoryReportCreateInfoEXT& value)
{
	s << "VkDeviceDeviceMemoryReportCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getDeviceMemoryReportFlagsEXTStr(value.flags) << '\n';
	s << "\tpfnUserCallback = " << value.pfnUserCallback << '\n';
	s << "\tpUserData = " << value.pUserData << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRobustness2FeaturesEXT& value)
{
	s << "VkPhysicalDeviceRobustness2FeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\trobustBufferAccess2 = " << value.robustBufferAccess2 << '\n';
	s << "\trobustImageAccess2 = " << value.robustImageAccess2 << '\n';
	s << "\tnullDescriptor = " << value.nullDescriptor << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRobustness2PropertiesEXT& value)
{
	s << "VkPhysicalDeviceRobustness2PropertiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\trobustStorageBufferAccessSizeAlignment = " << value.robustStorageBufferAccessSizeAlignment << '\n';
	s << "\trobustUniformBufferAccessSizeAlignment = " << value.robustUniformBufferAccessSizeAlignment << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSamplerCustomBorderColorCreateInfoEXT& value)
{
	s << "VkSamplerCustomBorderColorCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcustomBorderColor = " << value.customBorderColor << '\n';
	s << "\tformat = " << value.format << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCustomBorderColorPropertiesEXT& value)
{
	s << "VkPhysicalDeviceCustomBorderColorPropertiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxCustomBorderColorSamplers = " << value.maxCustomBorderColorSamplers << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCustomBorderColorFeaturesEXT& value)
{
	s << "VkPhysicalDeviceCustomBorderColorFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcustomBorderColors = " << value.customBorderColors << '\n';
	s << "\tcustomBorderColorWithoutFormat = " << value.customBorderColorWithoutFormat << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDiagnosticsConfigFeaturesNV& value)
{
	s << "VkPhysicalDeviceDiagnosticsConfigFeaturesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdiagnosticsConfig = " << value.diagnosticsConfig << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceDiagnosticsConfigCreateInfoNV& value)
{
	s << "VkDeviceDiagnosticsConfigCreateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getDeviceDiagnosticsConfigFlagsNVStr(value.flags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV& value)
{
	s << "VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tfragmentShadingRateEnums = " << value.fragmentShadingRateEnums << '\n';
	s << "\tsupersampleFragmentShadingRates = " << value.supersampleFragmentShadingRates << '\n';
	s << "\tnoInvocationFragmentShadingRates = " << value.noInvocationFragmentShadingRates << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV& value)
{
	s << "VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxFragmentShadingRateInvocationCount = " << value.maxFragmentShadingRateInvocationCount << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineFragmentShadingRateEnumStateCreateInfoNV& value)
{
	s << "VkPipelineFragmentShadingRateEnumStateCreateInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshadingRateType = " << value.shadingRateType << '\n';
	s << "\tshadingRate = " << value.shadingRate << '\n';
	s << "\tcombinerOps = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.combinerOps), DE_ARRAY_END(value.combinerOps)) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceOrHostAddressConstKHR& value)
{
	s << "VkDeviceOrHostAddressConstKHR = {\n";
	s << "\tdeviceAddress = " << value.deviceAddress << '\n';
	s << "\thostAddress = " << value.hostAddress << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureGeometryMotionTrianglesDataNV& value)
{
	s << "VkAccelerationStructureGeometryMotionTrianglesDataNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tvertexData = " << value.vertexData << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureMotionInfoNV& value)
{
	s << "VkAccelerationStructureMotionInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxInstances = " << value.maxInstances << '\n';
	s << "\tflags = " << getAccelerationStructureMotionInfoFlagsNVStr(value.flags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureMatrixMotionInstanceNV& value)
{
	s << "VkAccelerationStructureMatrixMotionInstanceNV = {\n";
	s << "\ttransformT0 = " << value.transformT0 << '\n';
	s << "\ttransformT1 = " << value.transformT1 << '\n';
	s << "\tinstanceCustomIndex = " << value.instanceCustomIndex << '\n';
	s << "\tmask = " << value.mask << '\n';
	s << "\tinstanceShaderBindingTableRecordOffset = " << value.instanceShaderBindingTableRecordOffset << '\n';
	s << "\tflags = " << getGeometryInstanceFlagsKHRStr(value.flags) << '\n';
	s << "\taccelerationStructureReference = " << value.accelerationStructureReference << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSRTDataNV& value)
{
	s << "VkSRTDataNV = {\n";
	s << "\tsx = " << value.sx << '\n';
	s << "\ta = " << value.a << '\n';
	s << "\tb = " << value.b << '\n';
	s << "\tpvx = " << value.pvx << '\n';
	s << "\tsy = " << value.sy << '\n';
	s << "\tc = " << value.c << '\n';
	s << "\tpvy = " << value.pvy << '\n';
	s << "\tsz = " << value.sz << '\n';
	s << "\tpvz = " << value.pvz << '\n';
	s << "\tqx = " << value.qx << '\n';
	s << "\tqy = " << value.qy << '\n';
	s << "\tqz = " << value.qz << '\n';
	s << "\tqw = " << value.qw << '\n';
	s << "\ttx = " << value.tx << '\n';
	s << "\tty = " << value.ty << '\n';
	s << "\ttz = " << value.tz << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureSRTMotionInstanceNV& value)
{
	s << "VkAccelerationStructureSRTMotionInstanceNV = {\n";
	s << "\ttransformT0 = " << value.transformT0 << '\n';
	s << "\ttransformT1 = " << value.transformT1 << '\n';
	s << "\tinstanceCustomIndex = " << value.instanceCustomIndex << '\n';
	s << "\tmask = " << value.mask << '\n';
	s << "\tinstanceShaderBindingTableRecordOffset = " << value.instanceShaderBindingTableRecordOffset << '\n';
	s << "\tflags = " << getGeometryInstanceFlagsKHRStr(value.flags) << '\n';
	s << "\taccelerationStructureReference = " << value.accelerationStructureReference << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureMotionInstanceDataNV& value)
{
	s << "VkAccelerationStructureMotionInstanceDataNV = {\n";
	s << "\tstaticInstance = " << value.staticInstance << '\n';
	s << "\tmatrixMotionInstance = " << value.matrixMotionInstance << '\n';
	s << "\tsrtMotionInstance = " << value.srtMotionInstance << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureMotionInstanceNV& value)
{
	s << "VkAccelerationStructureMotionInstanceNV = {\n";
	s << "\ttype = " << value.type << '\n';
	s << "\tflags = " << getAccelerationStructureMotionInstanceFlagsNVStr(value.flags) << '\n';
	s << "\tdata = " << value.data << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRayTracingMotionBlurFeaturesNV& value)
{
	s << "VkPhysicalDeviceRayTracingMotionBlurFeaturesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\trayTracingMotionBlur = " << value.rayTracingMotionBlur << '\n';
	s << "\trayTracingMotionBlurPipelineTraceRaysIndirect = " << value.rayTracingMotionBlurPipelineTraceRaysIndirect << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT& value)
{
	s << "VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tycbcr2plane444Formats = " << value.ycbcr2plane444Formats << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT& value)
{
	s << "VkPhysicalDeviceFragmentDensityMap2FeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tfragmentDensityMapDeferred = " << value.fragmentDensityMapDeferred << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT& value)
{
	s << "VkPhysicalDeviceFragmentDensityMap2PropertiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsubsampledLoads = " << value.subsampledLoads << '\n';
	s << "\tsubsampledCoarseReconstructionEarlyAccess = " << value.subsampledCoarseReconstructionEarlyAccess << '\n';
	s << "\tmaxSubsampledArrayLayers = " << value.maxSubsampledArrayLayers << '\n';
	s << "\tmaxDescriptorSetSubsampledSamplers = " << value.maxDescriptorSetSubsampledSamplers << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCopyCommandTransformInfoQCOM& value)
{
	s << "VkCopyCommandTransformInfoQCOM = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\ttransform = " << value.transform << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice4444FormatsFeaturesEXT& value)
{
	s << "VkPhysicalDevice4444FormatsFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tformatA4R4G4B4 = " << value.formatA4R4G4B4 << '\n';
	s << "\tformatA4B4G4R4 = " << value.formatA4B4G4R4 << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM& value)
{
	s << "VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\trasterizationOrderColorAttachmentAccess = " << value.rasterizationOrderColorAttachmentAccess << '\n';
	s << "\trasterizationOrderDepthAttachmentAccess = " << value.rasterizationOrderDepthAttachmentAccess << '\n';
	s << "\trasterizationOrderStencilAttachmentAccess = " << value.rasterizationOrderStencilAttachmentAccess << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT& value)
{
	s << "VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tformatRgba10x6WithoutYCbCrSampler = " << value.formatRgba10x6WithoutYCbCrSampler << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE& value)
{
	s << "VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmutableDescriptorType = " << value.mutableDescriptorType << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMutableDescriptorTypeListVALVE& value)
{
	s << "VkMutableDescriptorTypeListVALVE = {\n";
	s << "\tdescriptorTypeCount = " << value.descriptorTypeCount << '\n';
	s << "\tpDescriptorTypes = " << value.pDescriptorTypes << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMutableDescriptorTypeCreateInfoVALVE& value)
{
	s << "VkMutableDescriptorTypeCreateInfoVALVE = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmutableDescriptorTypeListCount = " << value.mutableDescriptorTypeListCount << '\n';
	s << "\tpMutableDescriptorTypeLists = " << value.pMutableDescriptorTypeLists << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT& value)
{
	s << "VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tvertexInputDynamicState = " << value.vertexInputDynamicState << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDescription2EXT& value)
{
	s << "VkVertexInputBindingDescription2EXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tbinding = " << value.binding << '\n';
	s << "\tstride = " << value.stride << '\n';
	s << "\tinputRate = " << value.inputRate << '\n';
	s << "\tdivisor = " << value.divisor << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVertexInputAttributeDescription2EXT& value)
{
	s << "VkVertexInputAttributeDescription2EXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tlocation = " << value.location << '\n';
	s << "\tbinding = " << value.binding << '\n';
	s << "\tformat = " << value.format << '\n';
	s << "\toffset = " << value.offset << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDrmPropertiesEXT& value)
{
	s << "VkPhysicalDeviceDrmPropertiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\thasPrimary = " << value.hasPrimary << '\n';
	s << "\thasRender = " << value.hasRender << '\n';
	s << "\tprimaryMajor = " << value.primaryMajor << '\n';
	s << "\tprimaryMinor = " << value.primaryMinor << '\n';
	s << "\trenderMajor = " << value.renderMajor << '\n';
	s << "\trenderMinor = " << value.renderMinor << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDepthClipControlFeaturesEXT& value)
{
	s << "VkPhysicalDeviceDepthClipControlFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdepthClipControl = " << value.depthClipControl << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineViewportDepthClipControlCreateInfoEXT& value)
{
	s << "VkPipelineViewportDepthClipControlCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tnegativeOneToOne = " << value.negativeOneToOne << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT& value)
{
	s << "VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tprimitiveTopologyListRestart = " << value.primitiveTopologyListRestart << '\n';
	s << "\tprimitiveTopologyPatchListRestart = " << value.primitiveTopologyPatchListRestart << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSubpassShadingPipelineCreateInfoHUAWEI& value)
{
	s << "VkSubpassShadingPipelineCreateInfoHUAWEI = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\trenderPass = " << value.renderPass << '\n';
	s << "\tsubpass = " << value.subpass << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubpassShadingFeaturesHUAWEI& value)
{
	s << "VkPhysicalDeviceSubpassShadingFeaturesHUAWEI = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsubpassShading = " << value.subpassShading << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubpassShadingPropertiesHUAWEI& value)
{
	s << "VkPhysicalDeviceSubpassShadingPropertiesHUAWEI = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxSubpassShadingWorkgroupSizeAspectRatio = " << value.maxSubpassShadingWorkgroupSizeAspectRatio << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceInvocationMaskFeaturesHUAWEI& value)
{
	s << "VkPhysicalDeviceInvocationMaskFeaturesHUAWEI = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tinvocationMask = " << value.invocationMask << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMemoryGetRemoteAddressInfoNV& value)
{
	s << "VkMemoryGetRemoteAddressInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmemory = " << value.memory << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalMemoryRDMAFeaturesNV& value)
{
	s << "VkPhysicalDeviceExternalMemoryRDMAFeaturesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\texternalMemoryRDMA = " << value.externalMemoryRDMA << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT& value)
{
	s << "VkPhysicalDeviceExtendedDynamicState2FeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\textendedDynamicState2 = " << value.extendedDynamicState2 << '\n';
	s << "\textendedDynamicState2LogicOp = " << value.extendedDynamicState2LogicOp << '\n';
	s << "\textendedDynamicState2PatchControlPoints = " << value.extendedDynamicState2PatchControlPoints << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceColorWriteEnableFeaturesEXT& value)
{
	s << "VkPhysicalDeviceColorWriteEnableFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcolorWriteEnable = " << value.colorWriteEnable << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPipelineColorWriteCreateInfoEXT& value)
{
	s << "VkPipelineColorWriteCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tattachmentCount = " << value.attachmentCount << '\n';
	s << "\tpColorWriteEnables = " << value.pColorWriteEnables << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageViewMinLodFeaturesEXT& value)
{
	s << "VkPhysicalDeviceImageViewMinLodFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tminLod = " << value.minLod << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageViewMinLodCreateInfoEXT& value)
{
	s << "VkImageViewMinLodCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tminLod = " << value.minLod << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiDrawFeaturesEXT& value)
{
	s << "VkPhysicalDeviceMultiDrawFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmultiDraw = " << value.multiDraw << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiDrawPropertiesEXT& value)
{
	s << "VkPhysicalDeviceMultiDrawPropertiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxMultiDrawCount = " << value.maxMultiDrawCount << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMultiDrawInfoEXT& value)
{
	s << "VkMultiDrawInfoEXT = {\n";
	s << "\tfirstVertex = " << value.firstVertex << '\n';
	s << "\tvertexCount = " << value.vertexCount << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMultiDrawIndexedInfoEXT& value)
{
	s << "VkMultiDrawIndexedInfoEXT = {\n";
	s << "\tfirstIndex = " << value.firstIndex << '\n';
	s << "\tindexCount = " << value.indexCount << '\n';
	s << "\tvertexOffset = " << value.vertexOffset << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT& value)
{
	s << "VkPhysicalDeviceBorderColorSwizzleFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tborderColorSwizzle = " << value.borderColorSwizzle << '\n';
	s << "\tborderColorSwizzleFromImage = " << value.borderColorSwizzleFromImage << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSamplerBorderColorComponentMappingCreateInfoEXT& value)
{
	s << "VkSamplerBorderColorComponentMappingCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcomponents = " << value.components << '\n';
	s << "\tsrgb = " << value.srgb << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT& value)
{
	s << "VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpageableDeviceLocalMemory = " << value.pageableDeviceLocalMemory << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM& value)
{
	s << "VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tfragmentDensityMapOffset = " << value.fragmentDensityMapOffset << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM& value)
{
	s << "VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tfragmentDensityOffsetGranularity = " << value.fragmentDensityOffsetGranularity << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSubpassFragmentDensityMapOffsetEndInfoQCOM& value)
{
	s << "VkSubpassFragmentDensityMapOffsetEndInfoQCOM = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tfragmentDensityOffsetCount = " << value.fragmentDensityOffsetCount << '\n';
	s << "\tpFragmentDensityOffsets = " << value.pFragmentDensityOffsets << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLinearColorAttachmentFeaturesNV& value)
{
	s << "VkPhysicalDeviceLinearColorAttachmentFeaturesNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tlinearColorAttachment = " << value.linearColorAttachment << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkDeviceOrHostAddressKHR& value)
{
	s << "VkDeviceOrHostAddressKHR = {\n";
	s << "\tdeviceAddress = " << value.deviceAddress << '\n';
	s << "\thostAddress = " << value.hostAddress << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureBuildRangeInfoKHR& value)
{
	s << "VkAccelerationStructureBuildRangeInfoKHR = {\n";
	s << "\tprimitiveCount = " << value.primitiveCount << '\n';
	s << "\tprimitiveOffset = " << value.primitiveOffset << '\n';
	s << "\tfirstVertex = " << value.firstVertex << '\n';
	s << "\ttransformOffset = " << value.transformOffset << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureGeometryTrianglesDataKHR& value)
{
	s << "VkAccelerationStructureGeometryTrianglesDataKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tvertexFormat = " << value.vertexFormat << '\n';
	s << "\tvertexData = " << value.vertexData << '\n';
	s << "\tvertexStride = " << value.vertexStride << '\n';
	s << "\tmaxVertex = " << value.maxVertex << '\n';
	s << "\tindexType = " << value.indexType << '\n';
	s << "\tindexData = " << value.indexData << '\n';
	s << "\ttransformData = " << value.transformData << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureGeometryAabbsDataKHR& value)
{
	s << "VkAccelerationStructureGeometryAabbsDataKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tdata = " << value.data << '\n';
	s << "\tstride = " << value.stride << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureGeometryInstancesDataKHR& value)
{
	s << "VkAccelerationStructureGeometryInstancesDataKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tarrayOfPointers = " << value.arrayOfPointers << '\n';
	s << "\tdata = " << value.data << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureGeometryDataKHR& value)
{
	s << "VkAccelerationStructureGeometryDataKHR = {\n";
	s << "\ttriangles = " << value.triangles << '\n';
	s << "\taabbs = " << value.aabbs << '\n';
	s << "\tinstances = " << value.instances << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureGeometryKHR& value)
{
	s << "VkAccelerationStructureGeometryKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tgeometryType = " << value.geometryType << '\n';
	s << "\tgeometry = " << value.geometry << '\n';
	s << "\tflags = " << getGeometryFlagsKHRStr(value.flags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureBuildGeometryInfoKHR& value)
{
	s << "VkAccelerationStructureBuildGeometryInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\ttype = " << value.type << '\n';
	s << "\tflags = " << getBuildAccelerationStructureFlagsKHRStr(value.flags) << '\n';
	s << "\tmode = " << value.mode << '\n';
	s << "\tsrcAccelerationStructure = " << value.srcAccelerationStructure << '\n';
	s << "\tdstAccelerationStructure = " << value.dstAccelerationStructure << '\n';
	s << "\tgeometryCount = " << value.geometryCount << '\n';
	s << "\tpGeometries = " << value.pGeometries << '\n';
	s << "\tppGeometries = " << value.ppGeometries << '\n';
	s << "\tscratchData = " << value.scratchData << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureCreateInfoKHR& value)
{
	s << "VkAccelerationStructureCreateInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcreateFlags = " << getAccelerationStructureCreateFlagsKHRStr(value.createFlags) << '\n';
	s << "\tbuffer = " << value.buffer << '\n';
	s << "\toffset = " << value.offset << '\n';
	s << "\tsize = " << value.size << '\n';
	s << "\ttype = " << value.type << '\n';
	s << "\tdeviceAddress = " << value.deviceAddress << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSetAccelerationStructureKHR& value)
{
	s << "VkWriteDescriptorSetAccelerationStructureKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\taccelerationStructureCount = " << value.accelerationStructureCount << '\n';
	s << "\tpAccelerationStructures = " << value.pAccelerationStructures << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceAccelerationStructureFeaturesKHR& value)
{
	s << "VkPhysicalDeviceAccelerationStructureFeaturesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\taccelerationStructure = " << value.accelerationStructure << '\n';
	s << "\taccelerationStructureCaptureReplay = " << value.accelerationStructureCaptureReplay << '\n';
	s << "\taccelerationStructureIndirectBuild = " << value.accelerationStructureIndirectBuild << '\n';
	s << "\taccelerationStructureHostCommands = " << value.accelerationStructureHostCommands << '\n';
	s << "\tdescriptorBindingAccelerationStructureUpdateAfterBind = " << value.descriptorBindingAccelerationStructureUpdateAfterBind << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceAccelerationStructurePropertiesKHR& value)
{
	s << "VkPhysicalDeviceAccelerationStructurePropertiesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxGeometryCount = " << value.maxGeometryCount << '\n';
	s << "\tmaxInstanceCount = " << value.maxInstanceCount << '\n';
	s << "\tmaxPrimitiveCount = " << value.maxPrimitiveCount << '\n';
	s << "\tmaxPerStageDescriptorAccelerationStructures = " << value.maxPerStageDescriptorAccelerationStructures << '\n';
	s << "\tmaxPerStageDescriptorUpdateAfterBindAccelerationStructures = " << value.maxPerStageDescriptorUpdateAfterBindAccelerationStructures << '\n';
	s << "\tmaxDescriptorSetAccelerationStructures = " << value.maxDescriptorSetAccelerationStructures << '\n';
	s << "\tmaxDescriptorSetUpdateAfterBindAccelerationStructures = " << value.maxDescriptorSetUpdateAfterBindAccelerationStructures << '\n';
	s << "\tminAccelerationStructureScratchOffsetAlignment = " << value.minAccelerationStructureScratchOffsetAlignment << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureDeviceAddressInfoKHR& value)
{
	s << "VkAccelerationStructureDeviceAddressInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\taccelerationStructure = " << value.accelerationStructure << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureVersionInfoKHR& value)
{
	s << "VkAccelerationStructureVersionInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpVersionData = " << value.pVersionData << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCopyAccelerationStructureToMemoryInfoKHR& value)
{
	s << "VkCopyAccelerationStructureToMemoryInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrc = " << value.src << '\n';
	s << "\tdst = " << value.dst << '\n';
	s << "\tmode = " << value.mode << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCopyMemoryToAccelerationStructureInfoKHR& value)
{
	s << "VkCopyMemoryToAccelerationStructureInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrc = " << value.src << '\n';
	s << "\tdst = " << value.dst << '\n';
	s << "\tmode = " << value.mode << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkCopyAccelerationStructureInfoKHR& value)
{
	s << "VkCopyAccelerationStructureInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsrc = " << value.src << '\n';
	s << "\tdst = " << value.dst << '\n';
	s << "\tmode = " << value.mode << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureBuildSizesInfoKHR& value)
{
	s << "VkAccelerationStructureBuildSizesInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\taccelerationStructureSize = " << value.accelerationStructureSize << '\n';
	s << "\tupdateScratchSize = " << value.updateScratchSize << '\n';
	s << "\tbuildScratchSize = " << value.buildScratchSize << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkRayTracingShaderGroupCreateInfoKHR& value)
{
	s << "VkRayTracingShaderGroupCreateInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\ttype = " << value.type << '\n';
	s << "\tgeneralShader = " << value.generalShader << '\n';
	s << "\tclosestHitShader = " << value.closestHitShader << '\n';
	s << "\tanyHitShader = " << value.anyHitShader << '\n';
	s << "\tintersectionShader = " << value.intersectionShader << '\n';
	s << "\tpShaderGroupCaptureReplayHandle = " << value.pShaderGroupCaptureReplayHandle << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkRayTracingPipelineInterfaceCreateInfoKHR& value)
{
	s << "VkRayTracingPipelineInterfaceCreateInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxPipelineRayPayloadSize = " << value.maxPipelineRayPayloadSize << '\n';
	s << "\tmaxPipelineRayHitAttributeSize = " << value.maxPipelineRayHitAttributeSize << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkRayTracingPipelineCreateInfoKHR& value)
{
	s << "VkRayTracingPipelineCreateInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
	s << "\tstageCount = " << value.stageCount << '\n';
	s << "\tpStages = " << value.pStages << '\n';
	s << "\tgroupCount = " << value.groupCount << '\n';
	s << "\tpGroups = " << value.pGroups << '\n';
	s << "\tmaxPipelineRayRecursionDepth = " << value.maxPipelineRayRecursionDepth << '\n';
	s << "\tpLibraryInfo = " << value.pLibraryInfo << '\n';
	s << "\tpLibraryInterface = " << value.pLibraryInterface << '\n';
	s << "\tpDynamicState = " << value.pDynamicState << '\n';
	s << "\tlayout = " << value.layout << '\n';
	s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
	s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRayTracingPipelineFeaturesKHR& value)
{
	s << "VkPhysicalDeviceRayTracingPipelineFeaturesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\trayTracingPipeline = " << value.rayTracingPipeline << '\n';
	s << "\trayTracingPipelineShaderGroupHandleCaptureReplay = " << value.rayTracingPipelineShaderGroupHandleCaptureReplay << '\n';
	s << "\trayTracingPipelineShaderGroupHandleCaptureReplayMixed = " << value.rayTracingPipelineShaderGroupHandleCaptureReplayMixed << '\n';
	s << "\trayTracingPipelineTraceRaysIndirect = " << value.rayTracingPipelineTraceRaysIndirect << '\n';
	s << "\trayTraversalPrimitiveCulling = " << value.rayTraversalPrimitiveCulling << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRayTracingPipelinePropertiesKHR& value)
{
	s << "VkPhysicalDeviceRayTracingPipelinePropertiesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tshaderGroupHandleSize = " << value.shaderGroupHandleSize << '\n';
	s << "\tmaxRayRecursionDepth = " << value.maxRayRecursionDepth << '\n';
	s << "\tmaxShaderGroupStride = " << value.maxShaderGroupStride << '\n';
	s << "\tshaderGroupBaseAlignment = " << value.shaderGroupBaseAlignment << '\n';
	s << "\tshaderGroupHandleCaptureReplaySize = " << value.shaderGroupHandleCaptureReplaySize << '\n';
	s << "\tmaxRayDispatchInvocationCount = " << value.maxRayDispatchInvocationCount << '\n';
	s << "\tshaderGroupHandleAlignment = " << value.shaderGroupHandleAlignment << '\n';
	s << "\tmaxRayHitAttributeSize = " << value.maxRayHitAttributeSize << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkStridedDeviceAddressRegionKHR& value)
{
	s << "VkStridedDeviceAddressRegionKHR = {\n";
	s << "\tdeviceAddress = " << value.deviceAddress << '\n';
	s << "\tstride = " << value.stride << '\n';
	s << "\tsize = " << value.size << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkTraceRaysIndirectCommandKHR& value)
{
	s << "VkTraceRaysIndirectCommandKHR = {\n";
	s << "\twidth = " << value.width << '\n';
	s << "\theight = " << value.height << '\n';
	s << "\tdepth = " << value.depth << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRayQueryFeaturesKHR& value)
{
	s << "VkPhysicalDeviceRayQueryFeaturesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\trayQuery = " << value.rayQuery << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAndroidSurfaceCreateInfoKHR& value)
{
	s << "VkAndroidSurfaceCreateInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getAndroidSurfaceCreateFlagsKHRStr(value.flags) << '\n';
	s << "\twindow = " << value.window << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAndroidHardwareBufferUsageANDROID& value)
{
	s << "VkAndroidHardwareBufferUsageANDROID = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tandroidHardwareBufferUsage = " << value.androidHardwareBufferUsage << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAndroidHardwareBufferPropertiesANDROID& value)
{
	s << "VkAndroidHardwareBufferPropertiesANDROID = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tallocationSize = " << value.allocationSize << '\n';
	s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAndroidHardwareBufferFormatPropertiesANDROID& value)
{
	s << "VkAndroidHardwareBufferFormatPropertiesANDROID = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tformat = " << value.format << '\n';
	s << "\texternalFormat = " << value.externalFormat << '\n';
	s << "\tformatFeatures = " << getFormatFeatureFlagsStr(value.formatFeatures) << '\n';
	s << "\tsamplerYcbcrConversionComponents = " << value.samplerYcbcrConversionComponents << '\n';
	s << "\tsuggestedYcbcrModel = " << value.suggestedYcbcrModel << '\n';
	s << "\tsuggestedYcbcrRange = " << value.suggestedYcbcrRange << '\n';
	s << "\tsuggestedXChromaOffset = " << value.suggestedXChromaOffset << '\n';
	s << "\tsuggestedYChromaOffset = " << value.suggestedYChromaOffset << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImportAndroidHardwareBufferInfoANDROID& value)
{
	s << "VkImportAndroidHardwareBufferInfoANDROID = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tbuffer = " << value.buffer << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMemoryGetAndroidHardwareBufferInfoANDROID& value)
{
	s << "VkMemoryGetAndroidHardwareBufferInfoANDROID = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmemory = " << value.memory << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkExternalFormatANDROID& value)
{
	s << "VkExternalFormatANDROID = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\texternalFormat = " << value.externalFormat << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkAndroidHardwareBufferFormatProperties2ANDROID& value)
{
	s << "VkAndroidHardwareBufferFormatProperties2ANDROID = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tformat = " << value.format << '\n';
	s << "\texternalFormat = " << value.externalFormat << '\n';
	s << "\tformatFeatures = " << value.formatFeatures << '\n';
	s << "\tsamplerYcbcrConversionComponents = " << value.samplerYcbcrConversionComponents << '\n';
	s << "\tsuggestedYcbcrModel = " << value.suggestedYcbcrModel << '\n';
	s << "\tsuggestedYcbcrRange = " << value.suggestedYcbcrRange << '\n';
	s << "\tsuggestedXChromaOffset = " << value.suggestedXChromaOffset << '\n';
	s << "\tsuggestedYChromaOffset = " << value.suggestedYChromaOffset << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkQueueFamilyQueryResultStatusProperties2KHR& value)
{
	s << "VkQueueFamilyQueryResultStatusProperties2KHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsupported = " << value.supported << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoQueueFamilyProperties2KHR& value)
{
	s << "VkVideoQueueFamilyProperties2KHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tvideoCodecOperations = " << getVideoCodecOperationFlagsKHRStr(value.videoCodecOperations) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoProfileKHR& value)
{
	s << "VkVideoProfileKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tvideoCodecOperation = " << value.videoCodecOperation << '\n';
	s << "\tchromaSubsampling = " << getVideoChromaSubsamplingFlagsKHRStr(value.chromaSubsampling) << '\n';
	s << "\tlumaBitDepth = " << getVideoComponentBitDepthFlagsKHRStr(value.lumaBitDepth) << '\n';
	s << "\tchromaBitDepth = " << getVideoComponentBitDepthFlagsKHRStr(value.chromaBitDepth) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoProfilesKHR& value)
{
	s << "VkVideoProfilesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tprofileCount = " << value.profileCount << '\n';
	s << "\tpProfiles = " << value.pProfiles << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoCapabilitiesKHR& value)
{
	s << "VkVideoCapabilitiesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcapabilityFlags = " << getVideoCapabilityFlagsKHRStr(value.capabilityFlags) << '\n';
	s << "\tminBitstreamBufferOffsetAlignment = " << value.minBitstreamBufferOffsetAlignment << '\n';
	s << "\tminBitstreamBufferSizeAlignment = " << value.minBitstreamBufferSizeAlignment << '\n';
	s << "\tvideoPictureExtentGranularity = " << value.videoPictureExtentGranularity << '\n';
	s << "\tminExtent = " << value.minExtent << '\n';
	s << "\tmaxExtent = " << value.maxExtent << '\n';
	s << "\tmaxReferencePicturesSlotsCount = " << value.maxReferencePicturesSlotsCount << '\n';
	s << "\tmaxReferencePicturesActiveCount = " << value.maxReferencePicturesActiveCount << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVideoFormatInfoKHR& value)
{
	s << "VkPhysicalDeviceVideoFormatInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\timageUsage = " << getImageUsageFlagsStr(value.imageUsage) << '\n';
	s << "\tpVideoProfiles = " << value.pVideoProfiles << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoFormatPropertiesKHR& value)
{
	s << "VkVideoFormatPropertiesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tformat = " << value.format << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoPictureResourceKHR& value)
{
	s << "VkVideoPictureResourceKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcodedOffset = " << value.codedOffset << '\n';
	s << "\tcodedExtent = " << value.codedExtent << '\n';
	s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
	s << "\timageViewBinding = " << value.imageViewBinding << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoReferenceSlotKHR& value)
{
	s << "VkVideoReferenceSlotKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tslotIndex = " << value.slotIndex << '\n';
	s << "\tpPictureResource = " << value.pPictureResource << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoGetMemoryPropertiesKHR& value)
{
	s << "VkVideoGetMemoryPropertiesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmemoryBindIndex = " << value.memoryBindIndex << '\n';
	s << "\tpMemoryRequirements = " << value.pMemoryRequirements << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoBindMemoryKHR& value)
{
	s << "VkVideoBindMemoryKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmemoryBindIndex = " << value.memoryBindIndex << '\n';
	s << "\tmemory = " << value.memory << '\n';
	s << "\tmemoryOffset = " << value.memoryOffset << '\n';
	s << "\tmemorySize = " << value.memorySize << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoSessionCreateInfoKHR& value)
{
	s << "VkVideoSessionCreateInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
	s << "\tflags = " << getVideoSessionCreateFlagsKHRStr(value.flags) << '\n';
	s << "\tpVideoProfile = " << value.pVideoProfile << '\n';
	s << "\tpictureFormat = " << value.pictureFormat << '\n';
	s << "\tmaxCodedExtent = " << value.maxCodedExtent << '\n';
	s << "\treferencePicturesFormat = " << value.referencePicturesFormat << '\n';
	s << "\tmaxReferencePicturesSlotsCount = " << value.maxReferencePicturesSlotsCount << '\n';
	s << "\tmaxReferencePicturesActiveCount = " << value.maxReferencePicturesActiveCount << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoSessionParametersCreateInfoKHR& value)
{
	s << "VkVideoSessionParametersCreateInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tvideoSessionParametersTemplate = " << value.videoSessionParametersTemplate << '\n';
	s << "\tvideoSession = " << value.videoSession << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoSessionParametersUpdateInfoKHR& value)
{
	s << "VkVideoSessionParametersUpdateInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tupdateSequenceCount = " << value.updateSequenceCount << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoBeginCodingInfoKHR& value)
{
	s << "VkVideoBeginCodingInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getVideoBeginCodingFlagsKHRStr(value.flags) << '\n';
	s << "\tcodecQualityPreset = " << getVideoCodingQualityPresetFlagsKHRStr(value.codecQualityPreset) << '\n';
	s << "\tvideoSession = " << value.videoSession << '\n';
	s << "\tvideoSessionParameters = " << value.videoSessionParameters << '\n';
	s << "\treferenceSlotCount = " << value.referenceSlotCount << '\n';
	s << "\tpReferenceSlots = " << value.pReferenceSlots << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEndCodingInfoKHR& value)
{
	s << "VkVideoEndCodingInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getVideoEndCodingFlagsKHRStr(value.flags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoCodingControlInfoKHR& value)
{
	s << "VkVideoCodingControlInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getVideoCodingControlFlagsKHRStr(value.flags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoDecodeInfoKHR& value)
{
	s << "VkVideoDecodeInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getVideoDecodeFlagsKHRStr(value.flags) << '\n';
	s << "\tcodedOffset = " << value.codedOffset << '\n';
	s << "\tcodedExtent = " << value.codedExtent << '\n';
	s << "\tsrcBuffer = " << value.srcBuffer << '\n';
	s << "\tsrcBufferOffset = " << value.srcBufferOffset << '\n';
	s << "\tsrcBufferRange = " << value.srcBufferRange << '\n';
	s << "\tdstPictureResource = " << value.dstPictureResource << '\n';
	s << "\tpSetupReferenceSlot = " << value.pSetupReferenceSlot << '\n';
	s << "\treferenceSlotCount = " << value.referenceSlotCount << '\n';
	s << "\tpReferenceSlots = " << value.pReferenceSlots << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePortabilitySubsetFeaturesKHR& value)
{
	s << "VkPhysicalDevicePortabilitySubsetFeaturesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tconstantAlphaColorBlendFactors = " << value.constantAlphaColorBlendFactors << '\n';
	s << "\tevents = " << value.events << '\n';
	s << "\timageViewFormatReinterpretation = " << value.imageViewFormatReinterpretation << '\n';
	s << "\timageViewFormatSwizzle = " << value.imageViewFormatSwizzle << '\n';
	s << "\timageView2DOn3DImage = " << value.imageView2DOn3DImage << '\n';
	s << "\tmultisampleArrayImage = " << value.multisampleArrayImage << '\n';
	s << "\tmutableComparisonSamplers = " << value.mutableComparisonSamplers << '\n';
	s << "\tpointPolygons = " << value.pointPolygons << '\n';
	s << "\tsamplerMipLodBias = " << value.samplerMipLodBias << '\n';
	s << "\tseparateStencilMaskRef = " << value.separateStencilMaskRef << '\n';
	s << "\tshaderSampleRateInterpolationFunctions = " << value.shaderSampleRateInterpolationFunctions << '\n';
	s << "\ttessellationIsolines = " << value.tessellationIsolines << '\n';
	s << "\ttessellationPointMode = " << value.tessellationPointMode << '\n';
	s << "\ttriangleFans = " << value.triangleFans << '\n';
	s << "\tvertexAttributeAccessBeyondStride = " << value.vertexAttributeAccessBeyondStride << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePortabilitySubsetPropertiesKHR& value)
{
	s << "VkPhysicalDevicePortabilitySubsetPropertiesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tminVertexInputBindingStrideAlignment = " << value.minVertexInputBindingStrideAlignment << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeInfoKHR& value)
{
	s << "VkVideoEncodeInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getVideoEncodeFlagsKHRStr(value.flags) << '\n';
	s << "\tqualityLevel = " << value.qualityLevel << '\n';
	s << "\tcodedExtent = " << value.codedExtent << '\n';
	s << "\tdstBitstreamBuffer = " << value.dstBitstreamBuffer << '\n';
	s << "\tdstBitstreamBufferOffset = " << value.dstBitstreamBufferOffset << '\n';
	s << "\tdstBitstreamBufferMaxRange = " << value.dstBitstreamBufferMaxRange << '\n';
	s << "\tsrcPictureResource = " << value.srcPictureResource << '\n';
	s << "\tpSetupReferenceSlot = " << value.pSetupReferenceSlot << '\n';
	s << "\treferenceSlotCount = " << value.referenceSlotCount << '\n';
	s << "\tpReferenceSlots = " << value.pReferenceSlots << '\n';
	s << "\tprecedingExternallyEncodedBytes = " << value.precedingExternallyEncodedBytes << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeRateControlLayerInfoKHR& value)
{
	s << "VkVideoEncodeRateControlLayerInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\taverageBitrate = " << value.averageBitrate << '\n';
	s << "\tmaxBitrate = " << value.maxBitrate << '\n';
	s << "\tframeRateNumerator = " << value.frameRateNumerator << '\n';
	s << "\tframeRateDenominator = " << value.frameRateDenominator << '\n';
	s << "\tvirtualBufferSizeInMs = " << value.virtualBufferSizeInMs << '\n';
	s << "\tinitialVirtualBufferSizeInMs = " << value.initialVirtualBufferSizeInMs << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeRateControlInfoKHR& value)
{
	s << "VkVideoEncodeRateControlInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getVideoEncodeRateControlFlagsKHRStr(value.flags) << '\n';
	s << "\trateControlMode = " << value.rateControlMode << '\n';
	s << "\tlayerCount = " << value.layerCount << '\n';
	s << "\tpLayerConfigs = " << value.pLayerConfigs << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH264SpsVuiFlags& value)
{
	s << "StdVideoH264SpsVuiFlags = {\n";
	s << "\taspect_ratio_info_present_flag = " << value.aspect_ratio_info_present_flag << '\n';
	s << "\toverscan_info_present_flag = " << value.overscan_info_present_flag << '\n';
	s << "\toverscan_appropriate_flag = " << value.overscan_appropriate_flag << '\n';
	s << "\tvideo_signal_type_present_flag = " << value.video_signal_type_present_flag << '\n';
	s << "\tvideo_full_range_flag = " << value.video_full_range_flag << '\n';
	s << "\tcolor_description_present_flag = " << value.color_description_present_flag << '\n';
	s << "\tchroma_loc_info_present_flag = " << value.chroma_loc_info_present_flag << '\n';
	s << "\ttiming_info_present_flag = " << value.timing_info_present_flag << '\n';
	s << "\tfixed_frame_rate_flag = " << value.fixed_frame_rate_flag << '\n';
	s << "\tbitstream_restriction_flag = " << value.bitstream_restriction_flag << '\n';
	s << "\tnal_hrd_parameters_present_flag = " << value.nal_hrd_parameters_present_flag << '\n';
	s << "\tvcl_hrd_parameters_present_flag = " << value.vcl_hrd_parameters_present_flag << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH264HrdParameters& value)
{
	s << "StdVideoH264HrdParameters = {\n";
	s << "\tcpb_cnt_minus1 = " << value.cpb_cnt_minus1 << '\n';
	s << "\tbit_rate_scale = " << value.bit_rate_scale << '\n';
	s << "\tcpb_size_scale = " << value.cpb_size_scale << '\n';
	s << "\tbit_rate_value_minus1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.bit_rate_value_minus1), DE_ARRAY_END(value.bit_rate_value_minus1)) << '\n';
	s << "\tcpb_size_value_minus1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.cpb_size_value_minus1), DE_ARRAY_END(value.cpb_size_value_minus1)) << '\n';
	s << "\tcbr_flag = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.cbr_flag)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.cbr_flag))) << '\n';
	s << "\tinitial_cpb_removal_delay_length_minus1 = " << value.initial_cpb_removal_delay_length_minus1 << '\n';
	s << "\tcpb_removal_delay_length_minus1 = " << value.cpb_removal_delay_length_minus1 << '\n';
	s << "\tdpb_output_delay_length_minus1 = " << value.dpb_output_delay_length_minus1 << '\n';
	s << "\ttime_offset_length = " << value.time_offset_length << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH264SequenceParameterSetVui& value)
{
	s << "StdVideoH264SequenceParameterSetVui = {\n";
	s << "\taspect_ratio_idc = " << value.aspect_ratio_idc << '\n';
	s << "\tsar_width = " << value.sar_width << '\n';
	s << "\tsar_height = " << value.sar_height << '\n';
	s << "\tvideo_format = " << value.video_format << '\n';
	s << "\tcolor_primaries = " << value.color_primaries << '\n';
	s << "\ttransfer_characteristics = " << value.transfer_characteristics << '\n';
	s << "\tmatrix_coefficients = " << value.matrix_coefficients << '\n';
	s << "\tnum_units_in_tick = " << value.num_units_in_tick << '\n';
	s << "\ttime_scale = " << value.time_scale << '\n';
	s << "\tpHrdParameters = " << value.pHrdParameters << '\n';
	s << "\tmax_num_reorder_frames = " << value.max_num_reorder_frames << '\n';
	s << "\tmax_dec_frame_buffering = " << value.max_dec_frame_buffering << '\n';
	s << "\tflags = " << value.flags << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH264SpsFlags& value)
{
	s << "StdVideoH264SpsFlags = {\n";
	s << "\tconstraint_set0_flag = " << value.constraint_set0_flag << '\n';
	s << "\tconstraint_set1_flag = " << value.constraint_set1_flag << '\n';
	s << "\tconstraint_set2_flag = " << value.constraint_set2_flag << '\n';
	s << "\tconstraint_set3_flag = " << value.constraint_set3_flag << '\n';
	s << "\tconstraint_set4_flag = " << value.constraint_set4_flag << '\n';
	s << "\tconstraint_set5_flag = " << value.constraint_set5_flag << '\n';
	s << "\tdirect_8x8_inference_flag = " << value.direct_8x8_inference_flag << '\n';
	s << "\tmb_adaptive_frame_field_flag = " << value.mb_adaptive_frame_field_flag << '\n';
	s << "\tframe_mbs_only_flag = " << value.frame_mbs_only_flag << '\n';
	s << "\tdelta_pic_order_always_zero_flag = " << value.delta_pic_order_always_zero_flag << '\n';
	s << "\tseparate_colour_plane_flag = " << value.separate_colour_plane_flag << '\n';
	s << "\tgaps_in_frame_num_value_allowed_flag = " << value.gaps_in_frame_num_value_allowed_flag << '\n';
	s << "\tqpprime_y_zero_transform_bypass_flag = " << value.qpprime_y_zero_transform_bypass_flag << '\n';
	s << "\tframe_cropping_flag = " << value.frame_cropping_flag << '\n';
	s << "\tseq_scaling_matrix_present_flag = " << value.seq_scaling_matrix_present_flag << '\n';
	s << "\tvui_parameters_present_flag = " << value.vui_parameters_present_flag << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH264ScalingLists& value)
{
	s << "StdVideoH264ScalingLists = {\n";
	s << "\tscaling_list_present_mask = " << value.scaling_list_present_mask << '\n';
	s << "\tuse_default_scaling_matrix_mask = " << value.use_default_scaling_matrix_mask << '\n';
	s << "\tScalingList4x4 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.ScalingList4x4), DE_ARRAY_END(value.ScalingList4x4)) << '\n';
	s << "\tScalingList8x8 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.ScalingList8x8), DE_ARRAY_END(value.ScalingList8x8)) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH264SequenceParameterSet& value)
{
	s << "StdVideoH264SequenceParameterSet = {\n";
	s << "\tprofile_idc = " << value.profile_idc << '\n';
	s << "\tlevel_idc = " << value.level_idc << '\n';
	s << "\tseq_parameter_set_id = " << value.seq_parameter_set_id << '\n';
	s << "\tchroma_format_idc = " << value.chroma_format_idc << '\n';
	s << "\tbit_depth_luma_minus8 = " << value.bit_depth_luma_minus8 << '\n';
	s << "\tbit_depth_chroma_minus8 = " << value.bit_depth_chroma_minus8 << '\n';
	s << "\tlog2_max_frame_num_minus4 = " << value.log2_max_frame_num_minus4 << '\n';
	s << "\tpic_order_cnt_type = " << value.pic_order_cnt_type << '\n';
	s << "\tlog2_max_pic_order_cnt_lsb_minus4 = " << value.log2_max_pic_order_cnt_lsb_minus4 << '\n';
	s << "\toffset_for_non_ref_pic = " << value.offset_for_non_ref_pic << '\n';
	s << "\toffset_for_top_to_bottom_field = " << value.offset_for_top_to_bottom_field << '\n';
	s << "\tnum_ref_frames_in_pic_order_cnt_cycle = " << value.num_ref_frames_in_pic_order_cnt_cycle << '\n';
	s << "\tmax_num_ref_frames = " << value.max_num_ref_frames << '\n';
	s << "\tpic_width_in_mbs_minus1 = " << value.pic_width_in_mbs_minus1 << '\n';
	s << "\tpic_height_in_map_units_minus1 = " << value.pic_height_in_map_units_minus1 << '\n';
	s << "\tframe_crop_left_offset = " << value.frame_crop_left_offset << '\n';
	s << "\tframe_crop_right_offset = " << value.frame_crop_right_offset << '\n';
	s << "\tframe_crop_top_offset = " << value.frame_crop_top_offset << '\n';
	s << "\tframe_crop_bottom_offset = " << value.frame_crop_bottom_offset << '\n';
	s << "\tflags = " << value.flags << '\n';
	s << "\tpOffsetForRefFrame = " << value.pOffsetForRefFrame << '\n';
	s << "\tpScalingLists = " << value.pScalingLists << '\n';
	s << "\tpSequenceParameterSetVui = " << value.pSequenceParameterSetVui << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH264PpsFlags& value)
{
	s << "StdVideoH264PpsFlags = {\n";
	s << "\ttransform_8x8_mode_flag = " << value.transform_8x8_mode_flag << '\n';
	s << "\tredundant_pic_cnt_present_flag = " << value.redundant_pic_cnt_present_flag << '\n';
	s << "\tconstrained_intra_pred_flag = " << value.constrained_intra_pred_flag << '\n';
	s << "\tdeblocking_filter_control_present_flag = " << value.deblocking_filter_control_present_flag << '\n';
	s << "\tweighted_bipred_idc_flag = " << value.weighted_bipred_idc_flag << '\n';
	s << "\tweighted_pred_flag = " << value.weighted_pred_flag << '\n';
	s << "\tpic_order_present_flag = " << value.pic_order_present_flag << '\n';
	s << "\tentropy_coding_mode_flag = " << value.entropy_coding_mode_flag << '\n';
	s << "\tpic_scaling_matrix_present_flag = " << value.pic_scaling_matrix_present_flag << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH264PictureParameterSet& value)
{
	s << "StdVideoH264PictureParameterSet = {\n";
	s << "\tseq_parameter_set_id = " << value.seq_parameter_set_id << '\n';
	s << "\tpic_parameter_set_id = " << value.pic_parameter_set_id << '\n';
	s << "\tnum_ref_idx_l0_default_active_minus1 = " << value.num_ref_idx_l0_default_active_minus1 << '\n';
	s << "\tnum_ref_idx_l1_default_active_minus1 = " << value.num_ref_idx_l1_default_active_minus1 << '\n';
	s << "\tweighted_bipred_idc = " << value.weighted_bipred_idc << '\n';
	s << "\tpic_init_qp_minus26 = " << value.pic_init_qp_minus26 << '\n';
	s << "\tpic_init_qs_minus26 = " << value.pic_init_qs_minus26 << '\n';
	s << "\tchroma_qp_index_offset = " << value.chroma_qp_index_offset << '\n';
	s << "\tsecond_chroma_qp_index_offset = " << value.second_chroma_qp_index_offset << '\n';
	s << "\tflags = " << value.flags << '\n';
	s << "\tpScalingLists = " << value.pScalingLists << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH264SliceHeaderFlags& value)
{
	s << "StdVideoEncodeH264SliceHeaderFlags = {\n";
	s << "\tidr_flag = " << value.idr_flag << '\n';
	s << "\tis_reference_flag = " << value.is_reference_flag << '\n';
	s << "\tnum_ref_idx_active_override_flag = " << value.num_ref_idx_active_override_flag << '\n';
	s << "\tno_output_of_prior_pics_flag = " << value.no_output_of_prior_pics_flag << '\n';
	s << "\tlong_term_reference_flag = " << value.long_term_reference_flag << '\n';
	s << "\tadaptive_ref_pic_marking_mode_flag = " << value.adaptive_ref_pic_marking_mode_flag << '\n';
	s << "\tno_prior_references_available_flag = " << value.no_prior_references_available_flag << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH264PictureInfoFlags& value)
{
	s << "StdVideoEncodeH264PictureInfoFlags = {\n";
	s << "\tidr_flag = " << value.idr_flag << '\n';
	s << "\tis_reference_flag = " << value.is_reference_flag << '\n';
	s << "\tlong_term_reference_flag = " << value.long_term_reference_flag << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH264RefMgmtFlags& value)
{
	s << "StdVideoEncodeH264RefMgmtFlags = {\n";
	s << "\tref_pic_list_modification_l0_flag = " << value.ref_pic_list_modification_l0_flag << '\n';
	s << "\tref_pic_list_modification_l1_flag = " << value.ref_pic_list_modification_l1_flag << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH264RefListModEntry& value)
{
	s << "StdVideoEncodeH264RefListModEntry = {\n";
	s << "\tmodification_of_pic_nums_idc = " << value.modification_of_pic_nums_idc << '\n';
	s << "\tabs_diff_pic_num_minus1 = " << value.abs_diff_pic_num_minus1 << '\n';
	s << "\tlong_term_pic_num = " << value.long_term_pic_num << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH264RefPicMarkingEntry& value)
{
	s << "StdVideoEncodeH264RefPicMarkingEntry = {\n";
	s << "\toperation = " << value.operation << '\n';
	s << "\tdifference_of_pic_nums_minus1 = " << value.difference_of_pic_nums_minus1 << '\n';
	s << "\tlong_term_pic_num = " << value.long_term_pic_num << '\n';
	s << "\tlong_term_frame_idx = " << value.long_term_frame_idx << '\n';
	s << "\tmax_long_term_frame_idx_plus1 = " << value.max_long_term_frame_idx_plus1 << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH264RefMemMgmtCtrlOperations& value)
{
	s << "StdVideoEncodeH264RefMemMgmtCtrlOperations = {\n";
	s << "\tflags = " << value.flags << '\n';
	s << "\trefList0ModOpCount = " << value.refList0ModOpCount << '\n';
	s << "\tpRefList0ModOperations = " << value.pRefList0ModOperations << '\n';
	s << "\trefList1ModOpCount = " << value.refList1ModOpCount << '\n';
	s << "\tpRefList1ModOperations = " << value.pRefList1ModOperations << '\n';
	s << "\trefPicMarkingOpCount = " << value.refPicMarkingOpCount << '\n';
	s << "\tpRefPicMarkingOperations = " << value.pRefPicMarkingOperations << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH264PictureInfo& value)
{
	s << "StdVideoEncodeH264PictureInfo = {\n";
	s << "\tflags = " << value.flags << '\n';
	s << "\tpictureType = " << value.pictureType << '\n';
	s << "\tframeNum = " << value.frameNum << '\n';
	s << "\tpictureOrderCount = " << value.pictureOrderCount << '\n';
	s << "\tlong_term_pic_num = " << value.long_term_pic_num << '\n';
	s << "\tlong_term_frame_idx = " << value.long_term_frame_idx << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH264SliceHeader& value)
{
	s << "StdVideoEncodeH264SliceHeader = {\n";
	s << "\tflags = " << value.flags << '\n';
	s << "\tslice_type = " << value.slice_type << '\n';
	s << "\tseq_parameter_set_id = " << value.seq_parameter_set_id << '\n';
	s << "\tpic_parameter_set_id = " << value.pic_parameter_set_id << '\n';
	s << "\tidr_pic_id = " << value.idr_pic_id << '\n';
	s << "\tnum_ref_idx_l0_active_minus1 = " << value.num_ref_idx_l0_active_minus1 << '\n';
	s << "\tnum_ref_idx_l1_active_minus1 = " << value.num_ref_idx_l1_active_minus1 << '\n';
	s << "\tcabac_init_idc = " << value.cabac_init_idc << '\n';
	s << "\tdisable_deblocking_filter_idc = " << value.disable_deblocking_filter_idc << '\n';
	s << "\tslice_alpha_c0_offset_div2 = " << value.slice_alpha_c0_offset_div2 << '\n';
	s << "\tslice_beta_offset_div2 = " << value.slice_beta_offset_div2 << '\n';
	s << "\tpMemMgmtCtrlOperations = " << value.pMemMgmtCtrlOperations << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264CapabilitiesEXT& value)
{
	s << "VkVideoEncodeH264CapabilitiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getVideoEncodeH264CapabilityFlagsEXTStr(value.flags) << '\n';
	s << "\tinputModeFlags = " << getVideoEncodeH264InputModeFlagsEXTStr(value.inputModeFlags) << '\n';
	s << "\toutputModeFlags = " << getVideoEncodeH264OutputModeFlagsEXTStr(value.outputModeFlags) << '\n';
	s << "\tminPictureSizeInMbs = " << value.minPictureSizeInMbs << '\n';
	s << "\tmaxPictureSizeInMbs = " << value.maxPictureSizeInMbs << '\n';
	s << "\tinputImageDataAlignment = " << value.inputImageDataAlignment << '\n';
	s << "\tmaxNumL0ReferenceForP = " << value.maxNumL0ReferenceForP << '\n';
	s << "\tmaxNumL0ReferenceForB = " << value.maxNumL0ReferenceForB << '\n';
	s << "\tmaxNumL1Reference = " << value.maxNumL1Reference << '\n';
	s << "\tqualityLevelCount = " << value.qualityLevelCount << '\n';
	s << "\tstdExtensionVersion = " << value.stdExtensionVersion << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264SessionCreateInfoEXT& value)
{
	s << "VkVideoEncodeH264SessionCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getVideoEncodeH264CreateFlagsEXTStr(value.flags) << '\n';
	s << "\tmaxPictureSizeInMbs = " << value.maxPictureSizeInMbs << '\n';
	s << "\tpStdExtensionVersion = " << value.pStdExtensionVersion << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264SessionParametersAddInfoEXT& value)
{
	s << "VkVideoEncodeH264SessionParametersAddInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tspsStdCount = " << value.spsStdCount << '\n';
	s << "\tpSpsStd = " << value.pSpsStd << '\n';
	s << "\tppsStdCount = " << value.ppsStdCount << '\n';
	s << "\tpPpsStd = " << value.pPpsStd << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264SessionParametersCreateInfoEXT& value)
{
	s << "VkVideoEncodeH264SessionParametersCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxSpsStdCount = " << value.maxSpsStdCount << '\n';
	s << "\tmaxPpsStdCount = " << value.maxPpsStdCount << '\n';
	s << "\tpParametersAddInfo = " << value.pParametersAddInfo << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264DpbSlotInfoEXT& value)
{
	s << "VkVideoEncodeH264DpbSlotInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tslotIndex = " << value.slotIndex << '\n';
	s << "\tpStdPictureInfo = " << value.pStdPictureInfo << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264NaluSliceEXT& value)
{
	s << "VkVideoEncodeH264NaluSliceEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpSliceHeaderStd = " << value.pSliceHeaderStd << '\n';
	s << "\tmbCount = " << value.mbCount << '\n';
	s << "\trefFinalList0EntryCount = " << value.refFinalList0EntryCount << '\n';
	s << "\tpRefFinalList0Entries = " << value.pRefFinalList0Entries << '\n';
	s << "\trefFinalList1EntryCount = " << value.refFinalList1EntryCount << '\n';
	s << "\tpRefFinalList1Entries = " << value.pRefFinalList1Entries << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264VclFrameInfoEXT& value)
{
	s << "VkVideoEncodeH264VclFrameInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\trefDefaultFinalList0EntryCount = " << value.refDefaultFinalList0EntryCount << '\n';
	s << "\tpRefDefaultFinalList0Entries = " << value.pRefDefaultFinalList0Entries << '\n';
	s << "\trefDefaultFinalList1EntryCount = " << value.refDefaultFinalList1EntryCount << '\n';
	s << "\tpRefDefaultFinalList1Entries = " << value.pRefDefaultFinalList1Entries << '\n';
	s << "\tnaluSliceEntryCount = " << value.naluSliceEntryCount << '\n';
	s << "\tpNaluSliceEntries = " << value.pNaluSliceEntries << '\n';
	s << "\tpCurrentPictureInfo = " << value.pCurrentPictureInfo << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264EmitPictureParametersEXT& value)
{
	s << "VkVideoEncodeH264EmitPictureParametersEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tspsId = " << value.spsId << '\n';
	s << "\temitSpsEnable = " << value.emitSpsEnable << '\n';
	s << "\tppsIdEntryCount = " << value.ppsIdEntryCount << '\n';
	s << "\tppsIdEntries = " << value.ppsIdEntries << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264ProfileEXT& value)
{
	s << "VkVideoEncodeH264ProfileEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tstdProfileIdc = " << value.stdProfileIdc << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264RateControlInfoEXT& value)
{
	s << "VkVideoEncodeH264RateControlInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tgopFrameCount = " << value.gopFrameCount << '\n';
	s << "\tidrPeriod = " << value.idrPeriod << '\n';
	s << "\tconsecutiveBFrameCount = " << value.consecutiveBFrameCount << '\n';
	s << "\trateControlStructure = " << value.rateControlStructure << '\n';
	s << "\ttemporalLayerCount = " << value.temporalLayerCount << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264QpEXT& value)
{
	s << "VkVideoEncodeH264QpEXT = {\n";
	s << "\tqpI = " << value.qpI << '\n';
	s << "\tqpP = " << value.qpP << '\n';
	s << "\tqpB = " << value.qpB << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264FrameSizeEXT& value)
{
	s << "VkVideoEncodeH264FrameSizeEXT = {\n";
	s << "\tframeISize = " << value.frameISize << '\n';
	s << "\tframePSize = " << value.framePSize << '\n';
	s << "\tframeBSize = " << value.frameBSize << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH264RateControlLayerInfoEXT& value)
{
	s << "VkVideoEncodeH264RateControlLayerInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\ttemporalLayerId = " << value.temporalLayerId << '\n';
	s << "\tuseInitialRcQp = " << value.useInitialRcQp << '\n';
	s << "\tinitialRcQp = " << value.initialRcQp << '\n';
	s << "\tuseMinQp = " << value.useMinQp << '\n';
	s << "\tminQp = " << value.minQp << '\n';
	s << "\tuseMaxQp = " << value.useMaxQp << '\n';
	s << "\tmaxQp = " << value.maxQp << '\n';
	s << "\tuseMaxFrameSize = " << value.useMaxFrameSize << '\n';
	s << "\tmaxFrameSize = " << value.maxFrameSize << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH265DecPicBufMgr& value)
{
	s << "StdVideoH265DecPicBufMgr = {\n";
	s << "\tmax_latency_increase_plus1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.max_latency_increase_plus1), DE_ARRAY_END(value.max_latency_increase_plus1)) << '\n';
	s << "\tmax_dec_pic_buffering_minus1 = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.max_dec_pic_buffering_minus1)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.max_dec_pic_buffering_minus1))) << '\n';
	s << "\tmax_num_reorder_pics = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.max_num_reorder_pics)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.max_num_reorder_pics))) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH265SubLayerHrdParameters& value)
{
	s << "StdVideoH265SubLayerHrdParameters = {\n";
	s << "\tbit_rate_value_minus1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.bit_rate_value_minus1), DE_ARRAY_END(value.bit_rate_value_minus1)) << '\n';
	s << "\tcpb_size_value_minus1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.cpb_size_value_minus1), DE_ARRAY_END(value.cpb_size_value_minus1)) << '\n';
	s << "\tcpb_size_du_value_minus1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.cpb_size_du_value_minus1), DE_ARRAY_END(value.cpb_size_du_value_minus1)) << '\n';
	s << "\tbit_rate_du_value_minus1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.bit_rate_du_value_minus1), DE_ARRAY_END(value.bit_rate_du_value_minus1)) << '\n';
	s << "\tcbr_flag = " << value.cbr_flag << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH265HrdFlags& value)
{
	s << "StdVideoH265HrdFlags = {\n";
	s << "\tnal_hrd_parameters_present_flag = " << value.nal_hrd_parameters_present_flag << '\n';
	s << "\tvcl_hrd_parameters_present_flag = " << value.vcl_hrd_parameters_present_flag << '\n';
	s << "\tsub_pic_hrd_params_present_flag = " << value.sub_pic_hrd_params_present_flag << '\n';
	s << "\tsub_pic_cpb_params_in_pic_timing_sei_flag = " << value.sub_pic_cpb_params_in_pic_timing_sei_flag << '\n';
	s << "\tfixed_pic_rate_general_flag = " << value.fixed_pic_rate_general_flag << '\n';
	s << "\tfixed_pic_rate_within_cvs_flag = " << value.fixed_pic_rate_within_cvs_flag << '\n';
	s << "\tlow_delay_hrd_flag = " << value.low_delay_hrd_flag << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH265HrdParameters& value)
{
	s << "StdVideoH265HrdParameters = {\n";
	s << "\ttick_divisor_minus2 = " << value.tick_divisor_minus2 << '\n';
	s << "\tdu_cpb_removal_delay_increment_length_minus1 = " << value.du_cpb_removal_delay_increment_length_minus1 << '\n';
	s << "\tdpb_output_delay_du_length_minus1 = " << value.dpb_output_delay_du_length_minus1 << '\n';
	s << "\tbit_rate_scale = " << value.bit_rate_scale << '\n';
	s << "\tcpb_size_scale = " << value.cpb_size_scale << '\n';
	s << "\tcpb_size_du_scale = " << value.cpb_size_du_scale << '\n';
	s << "\tinitial_cpb_removal_delay_length_minus1 = " << value.initial_cpb_removal_delay_length_minus1 << '\n';
	s << "\tau_cpb_removal_delay_length_minus1 = " << value.au_cpb_removal_delay_length_minus1 << '\n';
	s << "\tdpb_output_delay_length_minus1 = " << value.dpb_output_delay_length_minus1 << '\n';
	s << "\tcpb_cnt_minus1 = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.cpb_cnt_minus1)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.cpb_cnt_minus1))) << '\n';
	s << "\telemental_duration_in_tc_minus1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.elemental_duration_in_tc_minus1), DE_ARRAY_END(value.elemental_duration_in_tc_minus1)) << '\n';
	s << "\tpSubLayerHrdParametersNal = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.pSubLayerHrdParametersNal), DE_ARRAY_END(value.pSubLayerHrdParametersNal)) << '\n';
	s << "\tpSubLayerHrdParametersVcl = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.pSubLayerHrdParametersVcl), DE_ARRAY_END(value.pSubLayerHrdParametersVcl)) << '\n';
	s << "\tflags = " << value.flags << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH265VpsFlags& value)
{
	s << "StdVideoH265VpsFlags = {\n";
	s << "\tvps_temporal_id_nesting_flag = " << value.vps_temporal_id_nesting_flag << '\n';
	s << "\tvps_sub_layer_ordering_info_present_flag = " << value.vps_sub_layer_ordering_info_present_flag << '\n';
	s << "\tvps_timing_info_present_flag = " << value.vps_timing_info_present_flag << '\n';
	s << "\tvps_poc_proportional_to_timing_flag = " << value.vps_poc_proportional_to_timing_flag << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH265VideoParameterSet& value)
{
	s << "StdVideoH265VideoParameterSet = {\n";
	s << "\tvps_video_parameter_set_id = " << value.vps_video_parameter_set_id << '\n';
	s << "\tvps_max_sub_layers_minus1 = " << value.vps_max_sub_layers_minus1 << '\n';
	s << "\tvps_num_units_in_tick = " << value.vps_num_units_in_tick << '\n';
	s << "\tvps_time_scale = " << value.vps_time_scale << '\n';
	s << "\tvps_num_ticks_poc_diff_one_minus1 = " << value.vps_num_ticks_poc_diff_one_minus1 << '\n';
	s << "\tpDecPicBufMgr = " << value.pDecPicBufMgr << '\n';
	s << "\tpHrdParameters = " << value.pHrdParameters << '\n';
	s << "\tflags = " << value.flags << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH265ScalingLists& value)
{
	s << "StdVideoH265ScalingLists = {\n";
	s << "\tScalingList4x4 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.ScalingList4x4), DE_ARRAY_END(value.ScalingList4x4)) << '\n';
	s << "\tScalingList8x8 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.ScalingList8x8), DE_ARRAY_END(value.ScalingList8x8)) << '\n';
	s << "\tScalingList16x16 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.ScalingList16x16), DE_ARRAY_END(value.ScalingList16x16)) << '\n';
	s << "\tScalingList32x32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.ScalingList32x32), DE_ARRAY_END(value.ScalingList32x32)) << '\n';
	s << "\tScalingListDCCoef16x16 = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.ScalingListDCCoef16x16)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.ScalingListDCCoef16x16))) << '\n';
	s << "\tScalingListDCCoef32x32 = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.ScalingListDCCoef32x32)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.ScalingListDCCoef32x32))) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH265SpsVuiFlags& value)
{
	s << "StdVideoH265SpsVuiFlags = {\n";
	s << "\taspect_ratio_info_present_flag = " << value.aspect_ratio_info_present_flag << '\n';
	s << "\toverscan_info_present_flag = " << value.overscan_info_present_flag << '\n';
	s << "\toverscan_appropriate_flag = " << value.overscan_appropriate_flag << '\n';
	s << "\tvideo_signal_type_present_flag = " << value.video_signal_type_present_flag << '\n';
	s << "\tvideo_full_range_flag = " << value.video_full_range_flag << '\n';
	s << "\tcolour_description_present_flag = " << value.colour_description_present_flag << '\n';
	s << "\tchroma_loc_info_present_flag = " << value.chroma_loc_info_present_flag << '\n';
	s << "\tneutral_chroma_indication_flag = " << value.neutral_chroma_indication_flag << '\n';
	s << "\tfield_seq_flag = " << value.field_seq_flag << '\n';
	s << "\tframe_field_info_present_flag = " << value.frame_field_info_present_flag << '\n';
	s << "\tdefault_display_window_flag = " << value.default_display_window_flag << '\n';
	s << "\tvui_timing_info_present_flag = " << value.vui_timing_info_present_flag << '\n';
	s << "\tvui_poc_proportional_to_timing_flag = " << value.vui_poc_proportional_to_timing_flag << '\n';
	s << "\tvui_hrd_parameters_present_flag = " << value.vui_hrd_parameters_present_flag << '\n';
	s << "\tbitstream_restriction_flag = " << value.bitstream_restriction_flag << '\n';
	s << "\ttiles_fixed_structure_flag = " << value.tiles_fixed_structure_flag << '\n';
	s << "\tmotion_vectors_over_pic_boundaries_flag = " << value.motion_vectors_over_pic_boundaries_flag << '\n';
	s << "\trestricted_ref_pic_lists_flag = " << value.restricted_ref_pic_lists_flag << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH265SequenceParameterSetVui& value)
{
	s << "StdVideoH265SequenceParameterSetVui = {\n";
	s << "\taspect_ratio_idc = " << value.aspect_ratio_idc << '\n';
	s << "\tsar_width = " << value.sar_width << '\n';
	s << "\tsar_height = " << value.sar_height << '\n';
	s << "\tvideo_format = " << value.video_format << '\n';
	s << "\tcolour_primaries = " << value.colour_primaries << '\n';
	s << "\ttransfer_characteristics = " << value.transfer_characteristics << '\n';
	s << "\tmatrix_coeffs = " << value.matrix_coeffs << '\n';
	s << "\tchroma_sample_loc_type_top_field = " << value.chroma_sample_loc_type_top_field << '\n';
	s << "\tchroma_sample_loc_type_bottom_field = " << value.chroma_sample_loc_type_bottom_field << '\n';
	s << "\tdef_disp_win_left_offset = " << value.def_disp_win_left_offset << '\n';
	s << "\tdef_disp_win_right_offset = " << value.def_disp_win_right_offset << '\n';
	s << "\tdef_disp_win_top_offset = " << value.def_disp_win_top_offset << '\n';
	s << "\tdef_disp_win_bottom_offset = " << value.def_disp_win_bottom_offset << '\n';
	s << "\tvui_num_units_in_tick = " << value.vui_num_units_in_tick << '\n';
	s << "\tvui_time_scale = " << value.vui_time_scale << '\n';
	s << "\tvui_num_ticks_poc_diff_one_minus1 = " << value.vui_num_ticks_poc_diff_one_minus1 << '\n';
	s << "\tpHrdParameters = " << value.pHrdParameters << '\n';
	s << "\tmin_spatial_segmentation_idc = " << value.min_spatial_segmentation_idc << '\n';
	s << "\tmax_bytes_per_pic_denom = " << value.max_bytes_per_pic_denom << '\n';
	s << "\tmax_bits_per_min_cu_denom = " << value.max_bits_per_min_cu_denom << '\n';
	s << "\tlog2_max_mv_length_horizontal = " << value.log2_max_mv_length_horizontal << '\n';
	s << "\tlog2_max_mv_length_vertical = " << value.log2_max_mv_length_vertical << '\n';
	s << "\tflags = " << value.flags << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH265PredictorPaletteEntries& value)
{
	s << "StdVideoH265PredictorPaletteEntries = {\n";
	s << "\tPredictorPaletteEntries = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.PredictorPaletteEntries), DE_ARRAY_END(value.PredictorPaletteEntries)) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH265SpsFlags& value)
{
	s << "StdVideoH265SpsFlags = {\n";
	s << "\tsps_temporal_id_nesting_flag = " << value.sps_temporal_id_nesting_flag << '\n';
	s << "\tseparate_colour_plane_flag = " << value.separate_colour_plane_flag << '\n';
	s << "\tscaling_list_enabled_flag = " << value.scaling_list_enabled_flag << '\n';
	s << "\tsps_scaling_list_data_present_flag = " << value.sps_scaling_list_data_present_flag << '\n';
	s << "\tamp_enabled_flag = " << value.amp_enabled_flag << '\n';
	s << "\tsample_adaptive_offset_enabled_flag = " << value.sample_adaptive_offset_enabled_flag << '\n';
	s << "\tpcm_enabled_flag = " << value.pcm_enabled_flag << '\n';
	s << "\tpcm_loop_filter_disabled_flag = " << value.pcm_loop_filter_disabled_flag << '\n';
	s << "\tlong_term_ref_pics_present_flag = " << value.long_term_ref_pics_present_flag << '\n';
	s << "\tsps_temporal_mvp_enabled_flag = " << value.sps_temporal_mvp_enabled_flag << '\n';
	s << "\tstrong_intra_smoothing_enabled_flag = " << value.strong_intra_smoothing_enabled_flag << '\n';
	s << "\tvui_parameters_present_flag = " << value.vui_parameters_present_flag << '\n';
	s << "\tsps_extension_present_flag = " << value.sps_extension_present_flag << '\n';
	s << "\tsps_range_extension_flag = " << value.sps_range_extension_flag << '\n';
	s << "\ttransform_skip_rotation_enabled_flag = " << value.transform_skip_rotation_enabled_flag << '\n';
	s << "\ttransform_skip_context_enabled_flag = " << value.transform_skip_context_enabled_flag << '\n';
	s << "\timplicit_rdpcm_enabled_flag = " << value.implicit_rdpcm_enabled_flag << '\n';
	s << "\texplicit_rdpcm_enabled_flag = " << value.explicit_rdpcm_enabled_flag << '\n';
	s << "\textended_precision_processing_flag = " << value.extended_precision_processing_flag << '\n';
	s << "\tintra_smoothing_disabled_flag = " << value.intra_smoothing_disabled_flag << '\n';
	s << "\thigh_precision_offsets_enabled_flag = " << value.high_precision_offsets_enabled_flag << '\n';
	s << "\tpersistent_rice_adaptation_enabled_flag = " << value.persistent_rice_adaptation_enabled_flag << '\n';
	s << "\tcabac_bypass_alignment_enabled_flag = " << value.cabac_bypass_alignment_enabled_flag << '\n';
	s << "\tsps_curr_pic_ref_enabled_flag = " << value.sps_curr_pic_ref_enabled_flag << '\n';
	s << "\tpalette_mode_enabled_flag = " << value.palette_mode_enabled_flag << '\n';
	s << "\tsps_palette_predictor_initializer_present_flag = " << value.sps_palette_predictor_initializer_present_flag << '\n';
	s << "\tintra_boundary_filtering_disabled_flag = " << value.intra_boundary_filtering_disabled_flag << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH265SequenceParameterSet& value)
{
	s << "StdVideoH265SequenceParameterSet = {\n";
	s << "\tprofile_idc = " << value.profile_idc << '\n';
	s << "\tlevel_idc = " << value.level_idc << '\n';
	s << "\tpic_width_in_luma_samples = " << value.pic_width_in_luma_samples << '\n';
	s << "\tpic_height_in_luma_samples = " << value.pic_height_in_luma_samples << '\n';
	s << "\tsps_video_parameter_set_id = " << value.sps_video_parameter_set_id << '\n';
	s << "\tsps_max_sub_layers_minus1 = " << value.sps_max_sub_layers_minus1 << '\n';
	s << "\tsps_seq_parameter_set_id = " << value.sps_seq_parameter_set_id << '\n';
	s << "\tchroma_format_idc = " << value.chroma_format_idc << '\n';
	s << "\tbit_depth_luma_minus8 = " << value.bit_depth_luma_minus8 << '\n';
	s << "\tbit_depth_chroma_minus8 = " << value.bit_depth_chroma_minus8 << '\n';
	s << "\tlog2_max_pic_order_cnt_lsb_minus4 = " << value.log2_max_pic_order_cnt_lsb_minus4 << '\n';
	s << "\tsps_max_dec_pic_buffering_minus1 = " << value.sps_max_dec_pic_buffering_minus1 << '\n';
	s << "\tlog2_min_luma_coding_block_size_minus3 = " << value.log2_min_luma_coding_block_size_minus3 << '\n';
	s << "\tlog2_diff_max_min_luma_coding_block_size = " << value.log2_diff_max_min_luma_coding_block_size << '\n';
	s << "\tlog2_min_luma_transform_block_size_minus2 = " << value.log2_min_luma_transform_block_size_minus2 << '\n';
	s << "\tlog2_diff_max_min_luma_transform_block_size = " << value.log2_diff_max_min_luma_transform_block_size << '\n';
	s << "\tmax_transform_hierarchy_depth_inter = " << value.max_transform_hierarchy_depth_inter << '\n';
	s << "\tmax_transform_hierarchy_depth_intra = " << value.max_transform_hierarchy_depth_intra << '\n';
	s << "\tnum_short_term_ref_pic_sets = " << value.num_short_term_ref_pic_sets << '\n';
	s << "\tnum_long_term_ref_pics_sps = " << value.num_long_term_ref_pics_sps << '\n';
	s << "\tpcm_sample_bit_depth_luma_minus1 = " << value.pcm_sample_bit_depth_luma_minus1 << '\n';
	s << "\tpcm_sample_bit_depth_chroma_minus1 = " << value.pcm_sample_bit_depth_chroma_minus1 << '\n';
	s << "\tlog2_min_pcm_luma_coding_block_size_minus3 = " << value.log2_min_pcm_luma_coding_block_size_minus3 << '\n';
	s << "\tlog2_diff_max_min_pcm_luma_coding_block_size = " << value.log2_diff_max_min_pcm_luma_coding_block_size << '\n';
	s << "\tconf_win_left_offset = " << value.conf_win_left_offset << '\n';
	s << "\tconf_win_right_offset = " << value.conf_win_right_offset << '\n';
	s << "\tconf_win_top_offset = " << value.conf_win_top_offset << '\n';
	s << "\tconf_win_bottom_offset = " << value.conf_win_bottom_offset << '\n';
	s << "\tpDecPicBufMgr = " << value.pDecPicBufMgr << '\n';
	s << "\tflags = " << value.flags << '\n';
	s << "\tpScalingLists = " << value.pScalingLists << '\n';
	s << "\tpSequenceParameterSetVui = " << value.pSequenceParameterSetVui << '\n';
	s << "\tpalette_max_size = " << value.palette_max_size << '\n';
	s << "\tdelta_palette_max_predictor_size = " << value.delta_palette_max_predictor_size << '\n';
	s << "\tmotion_vector_resolution_control_idc = " << value.motion_vector_resolution_control_idc << '\n';
	s << "\tsps_num_palette_predictor_initializer_minus1 = " << value.sps_num_palette_predictor_initializer_minus1 << '\n';
	s << "\tpPredictorPaletteEntries = " << value.pPredictorPaletteEntries << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH265PpsFlags& value)
{
	s << "StdVideoH265PpsFlags = {\n";
	s << "\tdependent_slice_segments_enabled_flag = " << value.dependent_slice_segments_enabled_flag << '\n';
	s << "\toutput_flag_present_flag = " << value.output_flag_present_flag << '\n';
	s << "\tsign_data_hiding_enabled_flag = " << value.sign_data_hiding_enabled_flag << '\n';
	s << "\tcabac_init_present_flag = " << value.cabac_init_present_flag << '\n';
	s << "\tconstrained_intra_pred_flag = " << value.constrained_intra_pred_flag << '\n';
	s << "\ttransform_skip_enabled_flag = " << value.transform_skip_enabled_flag << '\n';
	s << "\tcu_qp_delta_enabled_flag = " << value.cu_qp_delta_enabled_flag << '\n';
	s << "\tpps_slice_chroma_qp_offsets_present_flag = " << value.pps_slice_chroma_qp_offsets_present_flag << '\n';
	s << "\tweighted_pred_flag = " << value.weighted_pred_flag << '\n';
	s << "\tweighted_bipred_flag = " << value.weighted_bipred_flag << '\n';
	s << "\ttransquant_bypass_enabled_flag = " << value.transquant_bypass_enabled_flag << '\n';
	s << "\ttiles_enabled_flag = " << value.tiles_enabled_flag << '\n';
	s << "\tentropy_coding_sync_enabled_flag = " << value.entropy_coding_sync_enabled_flag << '\n';
	s << "\tuniform_spacing_flag = " << value.uniform_spacing_flag << '\n';
	s << "\tloop_filter_across_tiles_enabled_flag = " << value.loop_filter_across_tiles_enabled_flag << '\n';
	s << "\tpps_loop_filter_across_slices_enabled_flag = " << value.pps_loop_filter_across_slices_enabled_flag << '\n';
	s << "\tdeblocking_filter_control_present_flag = " << value.deblocking_filter_control_present_flag << '\n';
	s << "\tdeblocking_filter_override_enabled_flag = " << value.deblocking_filter_override_enabled_flag << '\n';
	s << "\tpps_deblocking_filter_disabled_flag = " << value.pps_deblocking_filter_disabled_flag << '\n';
	s << "\tpps_scaling_list_data_present_flag = " << value.pps_scaling_list_data_present_flag << '\n';
	s << "\tlists_modification_present_flag = " << value.lists_modification_present_flag << '\n';
	s << "\tslice_segment_header_extension_present_flag = " << value.slice_segment_header_extension_present_flag << '\n';
	s << "\tpps_extension_present_flag = " << value.pps_extension_present_flag << '\n';
	s << "\tcross_component_prediction_enabled_flag = " << value.cross_component_prediction_enabled_flag << '\n';
	s << "\tchroma_qp_offset_list_enabled_flag = " << value.chroma_qp_offset_list_enabled_flag << '\n';
	s << "\tpps_curr_pic_ref_enabled_flag = " << value.pps_curr_pic_ref_enabled_flag << '\n';
	s << "\tresidual_adaptive_colour_transform_enabled_flag = " << value.residual_adaptive_colour_transform_enabled_flag << '\n';
	s << "\tpps_slice_act_qp_offsets_present_flag = " << value.pps_slice_act_qp_offsets_present_flag << '\n';
	s << "\tpps_palette_predictor_initializer_present_flag = " << value.pps_palette_predictor_initializer_present_flag << '\n';
	s << "\tmonochrome_palette_flag = " << value.monochrome_palette_flag << '\n';
	s << "\tpps_range_extension_flag = " << value.pps_range_extension_flag << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoH265PictureParameterSet& value)
{
	s << "StdVideoH265PictureParameterSet = {\n";
	s << "\tpps_pic_parameter_set_id = " << value.pps_pic_parameter_set_id << '\n';
	s << "\tpps_seq_parameter_set_id = " << value.pps_seq_parameter_set_id << '\n';
	s << "\tnum_extra_slice_header_bits = " << value.num_extra_slice_header_bits << '\n';
	s << "\tnum_ref_idx_l0_default_active_minus1 = " << value.num_ref_idx_l0_default_active_minus1 << '\n';
	s << "\tnum_ref_idx_l1_default_active_minus1 = " << value.num_ref_idx_l1_default_active_minus1 << '\n';
	s << "\tinit_qp_minus26 = " << value.init_qp_minus26 << '\n';
	s << "\tdiff_cu_qp_delta_depth = " << value.diff_cu_qp_delta_depth << '\n';
	s << "\tpps_cb_qp_offset = " << value.pps_cb_qp_offset << '\n';
	s << "\tpps_cr_qp_offset = " << value.pps_cr_qp_offset << '\n';
	s << "\tnum_tile_columns_minus1 = " << value.num_tile_columns_minus1 << '\n';
	s << "\tnum_tile_rows_minus1 = " << value.num_tile_rows_minus1 << '\n';
	s << "\tcolumn_width_minus1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.column_width_minus1), DE_ARRAY_END(value.column_width_minus1)) << '\n';
	s << "\trow_height_minus1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.row_height_minus1), DE_ARRAY_END(value.row_height_minus1)) << '\n';
	s << "\tpps_beta_offset_div2 = " << value.pps_beta_offset_div2 << '\n';
	s << "\tpps_tc_offset_div2 = " << value.pps_tc_offset_div2 << '\n';
	s << "\tlog2_parallel_merge_level_minus2 = " << value.log2_parallel_merge_level_minus2 << '\n';
	s << "\tflags = " << value.flags << '\n';
	s << "\tpScalingLists = " << value.pScalingLists << '\n';
	s << "\tlog2_max_transform_skip_block_size_minus2 = " << value.log2_max_transform_skip_block_size_minus2 << '\n';
	s << "\tdiff_cu_chroma_qp_offset_depth = " << value.diff_cu_chroma_qp_offset_depth << '\n';
	s << "\tchroma_qp_offset_list_len_minus1 = " << value.chroma_qp_offset_list_len_minus1 << '\n';
	s << "\tcb_qp_offset_list = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.cb_qp_offset_list), DE_ARRAY_END(value.cb_qp_offset_list)) << '\n';
	s << "\tcr_qp_offset_list = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.cr_qp_offset_list), DE_ARRAY_END(value.cr_qp_offset_list)) << '\n';
	s << "\tlog2_sao_offset_scale_luma = " << value.log2_sao_offset_scale_luma << '\n';
	s << "\tlog2_sao_offset_scale_chroma = " << value.log2_sao_offset_scale_chroma << '\n';
	s << "\tpps_act_y_qp_offset_plus5 = " << value.pps_act_y_qp_offset_plus5 << '\n';
	s << "\tpps_act_cb_qp_offset_plus5 = " << value.pps_act_cb_qp_offset_plus5 << '\n';
	s << "\tpps_act_cr_qp_offset_plus5 = " << value.pps_act_cr_qp_offset_plus5 << '\n';
	s << "\tpps_num_palette_predictor_initializer = " << value.pps_num_palette_predictor_initializer << '\n';
	s << "\tluma_bit_depth_entry_minus8 = " << value.luma_bit_depth_entry_minus8 << '\n';
	s << "\tchroma_bit_depth_entry_minus8 = " << value.chroma_bit_depth_entry_minus8 << '\n';
	s << "\tpPredictorPaletteEntries = " << value.pPredictorPaletteEntries << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH265SliceHeaderFlags& value)
{
	s << "StdVideoEncodeH265SliceHeaderFlags = {\n";
	s << "\tfirst_slice_segment_in_pic_flag = " << value.first_slice_segment_in_pic_flag << '\n';
	s << "\tno_output_of_prior_pics_flag = " << value.no_output_of_prior_pics_flag << '\n';
	s << "\tdependent_slice_segment_flag = " << value.dependent_slice_segment_flag << '\n';
	s << "\tshort_term_ref_pic_set_sps_flag = " << value.short_term_ref_pic_set_sps_flag << '\n';
	s << "\tslice_temporal_mvp_enable_flag = " << value.slice_temporal_mvp_enable_flag << '\n';
	s << "\tslice_sao_luma_flag = " << value.slice_sao_luma_flag << '\n';
	s << "\tslice_sao_chroma_flag = " << value.slice_sao_chroma_flag << '\n';
	s << "\tnum_ref_idx_active_override_flag = " << value.num_ref_idx_active_override_flag << '\n';
	s << "\tmvd_l1_zero_flag = " << value.mvd_l1_zero_flag << '\n';
	s << "\tcabac_init_flag = " << value.cabac_init_flag << '\n';
	s << "\tslice_deblocking_filter_disable_flag = " << value.slice_deblocking_filter_disable_flag << '\n';
	s << "\tcollocated_from_l0_flag = " << value.collocated_from_l0_flag << '\n';
	s << "\tslice_loop_filter_across_slices_enabled_flag = " << value.slice_loop_filter_across_slices_enabled_flag << '\n';
	s << "\tbLastSliceInPic = " << value.bLastSliceInPic << '\n';
	s << "\treservedBits = " << value.reservedBits << '\n';
	s << "\tluma_weight_l0_flag = " << value.luma_weight_l0_flag << '\n';
	s << "\tchroma_weight_l0_flag = " << value.chroma_weight_l0_flag << '\n';
	s << "\tluma_weight_l1_flag = " << value.luma_weight_l1_flag << '\n';
	s << "\tchroma_weight_l1_flag = " << value.chroma_weight_l1_flag << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH265SliceHeader& value)
{
	s << "StdVideoEncodeH265SliceHeader = {\n";
	s << "\tslice_type = " << value.slice_type << '\n';
	s << "\tslice_pic_parameter_set_id = " << value.slice_pic_parameter_set_id << '\n';
	s << "\tnum_short_term_ref_pic_sets = " << value.num_short_term_ref_pic_sets << '\n';
	s << "\tslice_segment_address = " << value.slice_segment_address << '\n';
	s << "\tshort_term_ref_pic_set_idx = " << value.short_term_ref_pic_set_idx << '\n';
	s << "\tnum_long_term_sps = " << value.num_long_term_sps << '\n';
	s << "\tnum_long_term_pics = " << value.num_long_term_pics << '\n';
	s << "\tcollocated_ref_idx = " << value.collocated_ref_idx << '\n';
	s << "\tnum_ref_idx_l0_active_minus1 = " << value.num_ref_idx_l0_active_minus1 << '\n';
	s << "\tnum_ref_idx_l1_active_minus1 = " << value.num_ref_idx_l1_active_minus1 << '\n';
	s << "\tluma_log2_weight_denom = " << value.luma_log2_weight_denom << '\n';
	s << "\tdelta_chroma_log2_weight_denom = " << value.delta_chroma_log2_weight_denom << '\n';
	s << "\tdelta_luma_weight_l0 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.delta_luma_weight_l0), DE_ARRAY_END(value.delta_luma_weight_l0)) << '\n';
	s << "\tluma_offset_l0 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.luma_offset_l0), DE_ARRAY_END(value.luma_offset_l0)) << '\n';
	s << "\tdelta_chroma_weight_l0 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.delta_chroma_weight_l0), DE_ARRAY_END(value.delta_chroma_weight_l0)) << '\n';
	s << "\tdelta_chroma_offset_l0 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.delta_chroma_offset_l0), DE_ARRAY_END(value.delta_chroma_offset_l0)) << '\n';
	s << "\tdelta_luma_weight_l1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.delta_luma_weight_l1), DE_ARRAY_END(value.delta_luma_weight_l1)) << '\n';
	s << "\tluma_offset_l1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.luma_offset_l1), DE_ARRAY_END(value.luma_offset_l1)) << '\n';
	s << "\tdelta_chroma_weight_l1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.delta_chroma_weight_l1), DE_ARRAY_END(value.delta_chroma_weight_l1)) << '\n';
	s << "\tdelta_chroma_offset_l1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.delta_chroma_offset_l1), DE_ARRAY_END(value.delta_chroma_offset_l1)) << '\n';
	s << "\tMaxNumMergeCand = " << value.MaxNumMergeCand << '\n';
	s << "\tslice_qp_delta = " << value.slice_qp_delta << '\n';
	s << "\tslice_cb_qp_offset = " << value.slice_cb_qp_offset << '\n';
	s << "\tslice_cr_qp_offset = " << value.slice_cr_qp_offset << '\n';
	s << "\tslice_beta_offset_div2 = " << value.slice_beta_offset_div2 << '\n';
	s << "\tslice_tc_offset_div2 = " << value.slice_tc_offset_div2 << '\n';
	s << "\tslice_act_y_qp_offset = " << value.slice_act_y_qp_offset << '\n';
	s << "\tslice_act_cb_qp_offset = " << value.slice_act_cb_qp_offset << '\n';
	s << "\tslice_act_cr_qp_offset = " << value.slice_act_cr_qp_offset << '\n';
	s << "\tflags = " << value.flags << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH265ReferenceModificationFlags& value)
{
	s << "StdVideoEncodeH265ReferenceModificationFlags = {\n";
	s << "\tref_pic_list_modification_flag_l0 = " << value.ref_pic_list_modification_flag_l0 << '\n';
	s << "\tref_pic_list_modification_flag_l1 = " << value.ref_pic_list_modification_flag_l1 << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH265ReferenceModifications& value)
{
	s << "StdVideoEncodeH265ReferenceModifications = {\n";
	s << "\tflags = " << value.flags << '\n';
	s << "\treferenceList0ModificationsCount = " << value.referenceList0ModificationsCount << '\n';
	s << "\tpReferenceList0Modifications = " << value.pReferenceList0Modifications << '\n';
	s << "\treferenceList1ModificationsCount = " << value.referenceList1ModificationsCount << '\n';
	s << "\tpReferenceList1Modifications = " << value.pReferenceList1Modifications << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH265PictureInfoFlags& value)
{
	s << "StdVideoEncodeH265PictureInfoFlags = {\n";
	s << "\tis_reference_flag = " << value.is_reference_flag << '\n';
	s << "\tIrapPicFlag = " << value.IrapPicFlag << '\n';
	s << "\tlong_term_flag = " << value.long_term_flag << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH265PictureInfo& value)
{
	s << "StdVideoEncodeH265PictureInfo = {\n";
	s << "\tPictureType = " << value.PictureType << '\n';
	s << "\tsps_video_parameter_set_id = " << value.sps_video_parameter_set_id << '\n';
	s << "\tpps_seq_parameter_set_id = " << value.pps_seq_parameter_set_id << '\n';
	s << "\tPicOrderCntVal = " << value.PicOrderCntVal << '\n';
	s << "\tTemporalId = " << value.TemporalId << '\n';
	s << "\tflags = " << value.flags << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH265ReferenceInfoFlags& value)
{
	s << "StdVideoEncodeH265ReferenceInfoFlags = {\n";
	s << "\tis_long_term = " << value.is_long_term << '\n';
	s << "\tisUsedFlag = " << value.isUsedFlag << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoEncodeH265ReferenceInfo& value)
{
	s << "StdVideoEncodeH265ReferenceInfo = {\n";
	s << "\tPicOrderCntVal = " << value.PicOrderCntVal << '\n';
	s << "\tTemporalId = " << value.TemporalId << '\n';
	s << "\tflags = " << value.flags << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH265CapabilitiesEXT& value)
{
	s << "VkVideoEncodeH265CapabilitiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getVideoEncodeH265CapabilityFlagsEXTStr(value.flags) << '\n';
	s << "\tinputModeFlags = " << getVideoEncodeH265InputModeFlagsEXTStr(value.inputModeFlags) << '\n';
	s << "\toutputModeFlags = " << getVideoEncodeH265OutputModeFlagsEXTStr(value.outputModeFlags) << '\n';
	s << "\tctbSizes = " << getVideoEncodeH265CtbSizeFlagsEXTStr(value.ctbSizes) << '\n';
	s << "\tinputImageDataAlignment = " << value.inputImageDataAlignment << '\n';
	s << "\tmaxNumL0ReferenceForP = " << value.maxNumL0ReferenceForP << '\n';
	s << "\tmaxNumL0ReferenceForB = " << value.maxNumL0ReferenceForB << '\n';
	s << "\tmaxNumL1Reference = " << value.maxNumL1Reference << '\n';
	s << "\tmaxNumSubLayers = " << value.maxNumSubLayers << '\n';
	s << "\tqualityLevelCount = " << value.qualityLevelCount << '\n';
	s << "\tstdExtensionVersion = " << value.stdExtensionVersion << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH265SessionCreateInfoEXT& value)
{
	s << "VkVideoEncodeH265SessionCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getVideoEncodeH265CreateFlagsEXTStr(value.flags) << '\n';
	s << "\tpStdExtensionVersion = " << value.pStdExtensionVersion << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH265SessionParametersAddInfoEXT& value)
{
	s << "VkVideoEncodeH265SessionParametersAddInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tvpsStdCount = " << value.vpsStdCount << '\n';
	s << "\tpVpsStd = " << value.pVpsStd << '\n';
	s << "\tspsStdCount = " << value.spsStdCount << '\n';
	s << "\tpSpsStd = " << value.pSpsStd << '\n';
	s << "\tppsStdCount = " << value.ppsStdCount << '\n';
	s << "\tpPpsStd = " << value.pPpsStd << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH265SessionParametersCreateInfoEXT& value)
{
	s << "VkVideoEncodeH265SessionParametersCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxVpsStdCount = " << value.maxVpsStdCount << '\n';
	s << "\tmaxSpsStdCount = " << value.maxSpsStdCount << '\n';
	s << "\tmaxPpsStdCount = " << value.maxPpsStdCount << '\n';
	s << "\tpParametersAddInfo = " << value.pParametersAddInfo << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH265DpbSlotInfoEXT& value)
{
	s << "VkVideoEncodeH265DpbSlotInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tslotIndex = " << value.slotIndex << '\n';
	s << "\tpStdReferenceInfo = " << value.pStdReferenceInfo << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH265ReferenceListsEXT& value)
{
	s << "VkVideoEncodeH265ReferenceListsEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\treferenceList0EntryCount = " << value.referenceList0EntryCount << '\n';
	s << "\tpReferenceList0Entries = " << value.pReferenceList0Entries << '\n';
	s << "\treferenceList1EntryCount = " << value.referenceList1EntryCount << '\n';
	s << "\tpReferenceList1Entries = " << value.pReferenceList1Entries << '\n';
	s << "\tpReferenceModifications = " << value.pReferenceModifications << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH265NaluSliceEXT& value)
{
	s << "VkVideoEncodeH265NaluSliceEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tctbCount = " << value.ctbCount << '\n';
	s << "\tpReferenceFinalLists = " << value.pReferenceFinalLists << '\n';
	s << "\tpSliceHeaderStd = " << value.pSliceHeaderStd << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH265VclFrameInfoEXT& value)
{
	s << "VkVideoEncodeH265VclFrameInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpReferenceFinalLists = " << value.pReferenceFinalLists << '\n';
	s << "\tnaluSliceEntryCount = " << value.naluSliceEntryCount << '\n';
	s << "\tpNaluSliceEntries = " << value.pNaluSliceEntries << '\n';
	s << "\tpCurrentPictureInfo = " << value.pCurrentPictureInfo << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH265EmitPictureParametersEXT& value)
{
	s << "VkVideoEncodeH265EmitPictureParametersEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tvpsId = " << value.vpsId << '\n';
	s << "\tspsId = " << value.spsId << '\n';
	s << "\temitVpsEnable = " << value.emitVpsEnable << '\n';
	s << "\temitSpsEnable = " << value.emitSpsEnable << '\n';
	s << "\tppsIdEntryCount = " << value.ppsIdEntryCount << '\n';
	s << "\tppsIdEntries = " << value.ppsIdEntries << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH265ProfileEXT& value)
{
	s << "VkVideoEncodeH265ProfileEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tstdProfileIdc = " << value.stdProfileIdc << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH265RateControlInfoEXT& value)
{
	s << "VkVideoEncodeH265RateControlInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tgopFrameCount = " << value.gopFrameCount << '\n';
	s << "\tidrPeriod = " << value.idrPeriod << '\n';
	s << "\tconsecutiveBFrameCount = " << value.consecutiveBFrameCount << '\n';
	s << "\trateControlStructure = " << value.rateControlStructure << '\n';
	s << "\tsubLayerCount = " << value.subLayerCount << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH265QpEXT& value)
{
	s << "VkVideoEncodeH265QpEXT = {\n";
	s << "\tqpI = " << value.qpI << '\n';
	s << "\tqpP = " << value.qpP << '\n';
	s << "\tqpB = " << value.qpB << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH265FrameSizeEXT& value)
{
	s << "VkVideoEncodeH265FrameSizeEXT = {\n";
	s << "\tframeISize = " << value.frameISize << '\n';
	s << "\tframePSize = " << value.framePSize << '\n';
	s << "\tframeBSize = " << value.frameBSize << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoEncodeH265RateControlLayerInfoEXT& value)
{
	s << "VkVideoEncodeH265RateControlLayerInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\ttemporalId = " << value.temporalId << '\n';
	s << "\tuseInitialRcQp = " << value.useInitialRcQp << '\n';
	s << "\tinitialRcQp = " << value.initialRcQp << '\n';
	s << "\tuseMinQp = " << value.useMinQp << '\n';
	s << "\tminQp = " << value.minQp << '\n';
	s << "\tuseMaxQp = " << value.useMaxQp << '\n';
	s << "\tmaxQp = " << value.maxQp << '\n';
	s << "\tuseMaxFrameSize = " << value.useMaxFrameSize << '\n';
	s << "\tmaxFrameSize = " << value.maxFrameSize << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH264PictureInfoFlags& value)
{
	s << "StdVideoDecodeH264PictureInfoFlags = {\n";
	s << "\tfield_pic_flag = " << value.field_pic_flag << '\n';
	s << "\tis_intra = " << value.is_intra << '\n';
	s << "\tIdrPicFlag = " << value.IdrPicFlag << '\n';
	s << "\tbottom_field_flag = " << value.bottom_field_flag << '\n';
	s << "\tis_reference = " << value.is_reference << '\n';
	s << "\tcomplementary_field_pair = " << value.complementary_field_pair << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH264PictureInfo& value)
{
	s << "StdVideoDecodeH264PictureInfo = {\n";
	s << "\tseq_parameter_set_id = " << value.seq_parameter_set_id << '\n';
	s << "\tpic_parameter_set_id = " << value.pic_parameter_set_id << '\n';
	s << "\treserved = " << value.reserved << '\n';
	s << "\tframe_num = " << value.frame_num << '\n';
	s << "\tidr_pic_id = " << value.idr_pic_id << '\n';
	s << "\tPicOrderCnt = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.PicOrderCnt), DE_ARRAY_END(value.PicOrderCnt)) << '\n';
	s << "\tflags = " << value.flags << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH264ReferenceInfoFlags& value)
{
	s << "StdVideoDecodeH264ReferenceInfoFlags = {\n";
	s << "\ttop_field_flag = " << value.top_field_flag << '\n';
	s << "\tbottom_field_flag = " << value.bottom_field_flag << '\n';
	s << "\tis_long_term = " << value.is_long_term << '\n';
	s << "\tis_non_existing = " << value.is_non_existing << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH264ReferenceInfo& value)
{
	s << "StdVideoDecodeH264ReferenceInfo = {\n";
	s << "\tFrameNum = " << value.FrameNum << '\n';
	s << "\treserved = " << value.reserved << '\n';
	s << "\tPicOrderCnt = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.PicOrderCnt), DE_ARRAY_END(value.PicOrderCnt)) << '\n';
	s << "\tflags = " << value.flags << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH264MvcElementFlags& value)
{
	s << "StdVideoDecodeH264MvcElementFlags = {\n";
	s << "\tnon_idr = " << value.non_idr << '\n';
	s << "\tanchor_pic = " << value.anchor_pic << '\n';
	s << "\tinter_view = " << value.inter_view << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH264MvcElement& value)
{
	s << "StdVideoDecodeH264MvcElement = {\n";
	s << "\tflags = " << value.flags << '\n';
	s << "\tviewOrderIndex = " << value.viewOrderIndex << '\n';
	s << "\tviewId = " << value.viewId << '\n';
	s << "\ttemporalId = " << value.temporalId << '\n';
	s << "\tpriorityId = " << value.priorityId << '\n';
	s << "\tnumOfAnchorRefsInL0 = " << value.numOfAnchorRefsInL0 << '\n';
	s << "\tviewIdOfAnchorRefsInL0 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.viewIdOfAnchorRefsInL0), DE_ARRAY_END(value.viewIdOfAnchorRefsInL0)) << '\n';
	s << "\tnumOfAnchorRefsInL1 = " << value.numOfAnchorRefsInL1 << '\n';
	s << "\tviewIdOfAnchorRefsInL1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.viewIdOfAnchorRefsInL1), DE_ARRAY_END(value.viewIdOfAnchorRefsInL1)) << '\n';
	s << "\tnumOfNonAnchorRefsInL0 = " << value.numOfNonAnchorRefsInL0 << '\n';
	s << "\tviewIdOfNonAnchorRefsInL0 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.viewIdOfNonAnchorRefsInL0), DE_ARRAY_END(value.viewIdOfNonAnchorRefsInL0)) << '\n';
	s << "\tnumOfNonAnchorRefsInL1 = " << value.numOfNonAnchorRefsInL1 << '\n';
	s << "\tviewIdOfNonAnchorRefsInL1 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.viewIdOfNonAnchorRefsInL1), DE_ARRAY_END(value.viewIdOfNonAnchorRefsInL1)) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH264Mvc& value)
{
	s << "StdVideoDecodeH264Mvc = {\n";
	s << "\tviewId0 = " << value.viewId0 << '\n';
	s << "\tmvcElementCount = " << value.mvcElementCount << '\n';
	s << "\tpMvcElements = " << value.pMvcElements << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH264ProfileEXT& value)
{
	s << "VkVideoDecodeH264ProfileEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tstdProfileIdc = " << value.stdProfileIdc << '\n';
	s << "\tpictureLayout = " << getVideoDecodeH264PictureLayoutFlagsEXTStr(value.pictureLayout) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH264CapabilitiesEXT& value)
{
	s << "VkVideoDecodeH264CapabilitiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxLevel = " << value.maxLevel << '\n';
	s << "\tfieldOffsetGranularity = " << value.fieldOffsetGranularity << '\n';
	s << "\tstdExtensionVersion = " << value.stdExtensionVersion << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH264SessionCreateInfoEXT& value)
{
	s << "VkVideoDecodeH264SessionCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getVideoDecodeH264CreateFlagsEXTStr(value.flags) << '\n';
	s << "\tpStdExtensionVersion = " << value.pStdExtensionVersion << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH264SessionParametersAddInfoEXT& value)
{
	s << "VkVideoDecodeH264SessionParametersAddInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tspsStdCount = " << value.spsStdCount << '\n';
	s << "\tpSpsStd = " << value.pSpsStd << '\n';
	s << "\tppsStdCount = " << value.ppsStdCount << '\n';
	s << "\tpPpsStd = " << value.pPpsStd << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH264SessionParametersCreateInfoEXT& value)
{
	s << "VkVideoDecodeH264SessionParametersCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxSpsStdCount = " << value.maxSpsStdCount << '\n';
	s << "\tmaxPpsStdCount = " << value.maxPpsStdCount << '\n';
	s << "\tpParametersAddInfo = " << value.pParametersAddInfo << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH264PictureInfoEXT& value)
{
	s << "VkVideoDecodeH264PictureInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpStdPictureInfo = " << value.pStdPictureInfo << '\n';
	s << "\tslicesCount = " << value.slicesCount << '\n';
	s << "\tpSlicesDataOffsets = " << value.pSlicesDataOffsets << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH264MvcEXT& value)
{
	s << "VkVideoDecodeH264MvcEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpStdMvc = " << value.pStdMvc << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH264DpbSlotInfoEXT& value)
{
	s << "VkVideoDecodeH264DpbSlotInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpStdReferenceInfo = " << value.pStdReferenceInfo << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH265PictureInfoFlags& value)
{
	s << "StdVideoDecodeH265PictureInfoFlags = {\n";
	s << "\tIrapPicFlag = " << value.IrapPicFlag << '\n';
	s << "\tIdrPicFlag = " << value.IdrPicFlag << '\n';
	s << "\tIsReference = " << value.IsReference << '\n';
	s << "\tshort_term_ref_pic_set_sps_flag = " << value.short_term_ref_pic_set_sps_flag << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH265PictureInfo& value)
{
	s << "StdVideoDecodeH265PictureInfo = {\n";
	s << "\tvps_video_parameter_set_id = " << value.vps_video_parameter_set_id << '\n';
	s << "\tsps_seq_parameter_set_id = " << value.sps_seq_parameter_set_id << '\n';
	s << "\tpps_pic_parameter_set_id = " << value.pps_pic_parameter_set_id << '\n';
	s << "\tnum_short_term_ref_pic_sets = " << value.num_short_term_ref_pic_sets << '\n';
	s << "\tPicOrderCntVal = " << value.PicOrderCntVal << '\n';
	s << "\tNumBitsForSTRefPicSetInSlice = " << value.NumBitsForSTRefPicSetInSlice << '\n';
	s << "\tNumDeltaPocsOfRefRpsIdx = " << value.NumDeltaPocsOfRefRpsIdx << '\n';
	s << "\tRefPicSetStCurrBefore = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.RefPicSetStCurrBefore)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.RefPicSetStCurrBefore))) << '\n';
	s << "\tRefPicSetStCurrAfter = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.RefPicSetStCurrAfter)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.RefPicSetStCurrAfter))) << '\n';
	s << "\tRefPicSetLtCurr = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<uint8_t>(DE_ARRAY_BEGIN(value.RefPicSetLtCurr)), tcu::Format::HexIterator<uint8_t>(DE_ARRAY_END(value.RefPicSetLtCurr))) << '\n';
	s << "\tflags = " << value.flags << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH265ReferenceInfoFlags& value)
{
	s << "StdVideoDecodeH265ReferenceInfoFlags = {\n";
	s << "\tis_long_term = " << value.is_long_term << '\n';
	s << "\tis_non_existing = " << value.is_non_existing << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const StdVideoDecodeH265ReferenceInfo& value)
{
	s << "StdVideoDecodeH265ReferenceInfo = {\n";
	s << "\tPicOrderCntVal = " << value.PicOrderCntVal << '\n';
	s << "\tflags = " << value.flags << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH265ProfileEXT& value)
{
	s << "VkVideoDecodeH265ProfileEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tstdProfileIdc = " << value.stdProfileIdc << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH265CapabilitiesEXT& value)
{
	s << "VkVideoDecodeH265CapabilitiesEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxLevel = " << value.maxLevel << '\n';
	s << "\tstdExtensionVersion = " << value.stdExtensionVersion << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH265SessionCreateInfoEXT& value)
{
	s << "VkVideoDecodeH265SessionCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getVideoDecodeH265CreateFlagsEXTStr(value.flags) << '\n';
	s << "\tpStdExtensionVersion = " << value.pStdExtensionVersion << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH265SessionParametersAddInfoEXT& value)
{
	s << "VkVideoDecodeH265SessionParametersAddInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tspsStdCount = " << value.spsStdCount << '\n';
	s << "\tpSpsStd = " << value.pSpsStd << '\n';
	s << "\tppsStdCount = " << value.ppsStdCount << '\n';
	s << "\tpPpsStd = " << value.pPpsStd << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH265SessionParametersCreateInfoEXT& value)
{
	s << "VkVideoDecodeH265SessionParametersCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmaxSpsStdCount = " << value.maxSpsStdCount << '\n';
	s << "\tmaxPpsStdCount = " << value.maxPpsStdCount << '\n';
	s << "\tpParametersAddInfo = " << value.pParametersAddInfo << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH265PictureInfoEXT& value)
{
	s << "VkVideoDecodeH265PictureInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpStdPictureInfo = " << value.pStdPictureInfo << '\n';
	s << "\tslicesCount = " << value.slicesCount << '\n';
	s << "\tpSlicesDataOffsets = " << value.pSlicesDataOffsets << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkVideoDecodeH265DpbSlotInfoEXT& value)
{
	s << "VkVideoDecodeH265DpbSlotInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpStdReferenceInfo = " << value.pStdReferenceInfo << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImagePipeSurfaceCreateInfoFUCHSIA& value)
{
	s << "VkImagePipeSurfaceCreateInfoFUCHSIA = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getImagePipeSurfaceCreateFlagsFUCHSIAStr(value.flags) << '\n';
	s << "\timagePipeHandle = " << value.imagePipeHandle << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImportMemoryZirconHandleInfoFUCHSIA& value)
{
	s << "VkImportMemoryZirconHandleInfoFUCHSIA = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << "\thandle = " << value.handle << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMemoryZirconHandlePropertiesFUCHSIA& value)
{
	s << "VkMemoryZirconHandlePropertiesFUCHSIA = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMemoryGetZirconHandleInfoFUCHSIA& value)
{
	s << "VkMemoryGetZirconHandleInfoFUCHSIA = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmemory = " << value.memory << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreZirconHandleInfoFUCHSIA& value)
{
	s << "VkImportSemaphoreZirconHandleInfoFUCHSIA = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsemaphore = " << value.semaphore << '\n';
	s << "\tflags = " << getSemaphoreImportFlagsStr(value.flags) << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << "\tzirconHandle = " << value.zirconHandle << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetZirconHandleInfoFUCHSIA& value)
{
	s << "VkSemaphoreGetZirconHandleInfoFUCHSIA = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsemaphore = " << value.semaphore << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBufferCollectionCreateInfoFUCHSIA& value)
{
	s << "VkBufferCollectionCreateInfoFUCHSIA = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcollectionToken = " << value.collectionToken << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImportMemoryBufferCollectionFUCHSIA& value)
{
	s << "VkImportMemoryBufferCollectionFUCHSIA = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcollection = " << value.collection << '\n';
	s << "\tindex = " << value.index << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBufferCollectionImageCreateInfoFUCHSIA& value)
{
	s << "VkBufferCollectionImageCreateInfoFUCHSIA = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcollection = " << value.collection << '\n';
	s << "\tindex = " << value.index << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBufferCollectionConstraintsInfoFUCHSIA& value)
{
	s << "VkBufferCollectionConstraintsInfoFUCHSIA = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tminBufferCount = " << value.minBufferCount << '\n';
	s << "\tmaxBufferCount = " << value.maxBufferCount << '\n';
	s << "\tminBufferCountForCamping = " << value.minBufferCountForCamping << '\n';
	s << "\tminBufferCountForDedicatedSlack = " << value.minBufferCountForDedicatedSlack << '\n';
	s << "\tminBufferCountForSharedSlack = " << value.minBufferCountForSharedSlack << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBufferConstraintsInfoFUCHSIA& value)
{
	s << "VkBufferConstraintsInfoFUCHSIA = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcreateInfo = " << value.createInfo << '\n';
	s << "\trequiredFormatFeatures = " << getFormatFeatureFlagsStr(value.requiredFormatFeatures) << '\n';
	s << "\tbufferCollectionConstraints = " << value.bufferCollectionConstraints << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBufferCollectionBufferCreateInfoFUCHSIA& value)
{
	s << "VkBufferCollectionBufferCreateInfoFUCHSIA = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcollection = " << value.collection << '\n';
	s << "\tindex = " << value.index << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSysmemColorSpaceFUCHSIA& value)
{
	s << "VkSysmemColorSpaceFUCHSIA = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tcolorSpace = " << value.colorSpace << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkBufferCollectionPropertiesFUCHSIA& value)
{
	s << "VkBufferCollectionPropertiesFUCHSIA = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
	s << "\tbufferCount = " << value.bufferCount << '\n';
	s << "\tcreateInfoIndex = " << value.createInfoIndex << '\n';
	s << "\tsysmemPixelFormat = " << value.sysmemPixelFormat << '\n';
	s << "\tformatFeatures = " << getFormatFeatureFlagsStr(value.formatFeatures) << '\n';
	s << "\tsysmemColorSpaceIndex = " << value.sysmemColorSpaceIndex << '\n';
	s << "\tsamplerYcbcrConversionComponents = " << value.samplerYcbcrConversionComponents << '\n';
	s << "\tsuggestedYcbcrModel = " << value.suggestedYcbcrModel << '\n';
	s << "\tsuggestedYcbcrRange = " << value.suggestedYcbcrRange << '\n';
	s << "\tsuggestedXChromaOffset = " << value.suggestedXChromaOffset << '\n';
	s << "\tsuggestedYChromaOffset = " << value.suggestedYChromaOffset << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageFormatConstraintsInfoFUCHSIA& value)
{
	s << "VkImageFormatConstraintsInfoFUCHSIA = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\timageCreateInfo = " << value.imageCreateInfo << '\n';
	s << "\trequiredFormatFeatures = " << getFormatFeatureFlagsStr(value.requiredFormatFeatures) << '\n';
	s << "\tflags = " << getImageFormatConstraintsFlagsFUCHSIAStr(value.flags) << '\n';
	s << "\tsysmemPixelFormat = " << value.sysmemPixelFormat << '\n';
	s << "\tcolorSpaceCount = " << value.colorSpaceCount << '\n';
	s << "\tpColorSpaces = " << value.pColorSpaces << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImageConstraintsInfoFUCHSIA& value)
{
	s << "VkImageConstraintsInfoFUCHSIA = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tformatConstraintsCount = " << value.formatConstraintsCount << '\n';
	s << "\tpFormatConstraints = " << value.pFormatConstraints << '\n';
	s << "\tbufferCollectionConstraints = " << value.bufferCollectionConstraints << '\n';
	s << "\tflags = " << getImageConstraintsInfoFlagsFUCHSIAStr(value.flags) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkStreamDescriptorSurfaceCreateInfoGGP& value)
{
	s << "VkStreamDescriptorSurfaceCreateInfoGGP = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getStreamDescriptorSurfaceCreateFlagsGGPStr(value.flags) << '\n';
	s << "\tstreamDescriptor = " << value.streamDescriptor << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkPresentFrameTokenGGP& value)
{
	s << "VkPresentFrameTokenGGP = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tframeToken = " << value.frameToken << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkIOSSurfaceCreateInfoMVK& value)
{
	s << "VkIOSSurfaceCreateInfoMVK = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getIOSSurfaceCreateFlagsMVKStr(value.flags) << '\n';
	s << "\tpView = " << value.pView << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMacOSSurfaceCreateInfoMVK& value)
{
	s << "VkMacOSSurfaceCreateInfoMVK = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getMacOSSurfaceCreateFlagsMVKStr(value.flags) << '\n';
	s << "\tpView = " << value.pView << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMetalSurfaceCreateInfoEXT& value)
{
	s << "VkMetalSurfaceCreateInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getMetalSurfaceCreateFlagsEXTStr(value.flags) << '\n';
	s << "\tpLayer = " << value.pLayer << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkViSurfaceCreateInfoNN& value)
{
	s << "VkViSurfaceCreateInfoNN = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getViSurfaceCreateFlagsNNStr(value.flags) << '\n';
	s << "\twindow = " << value.window << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkWaylandSurfaceCreateInfoKHR& value)
{
	s << "VkWaylandSurfaceCreateInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getWaylandSurfaceCreateFlagsKHRStr(value.flags) << '\n';
	s << "\tdisplay = " << value.display << '\n';
	s << "\tsurface = " << value.surface << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkWin32SurfaceCreateInfoKHR& value)
{
	s << "VkWin32SurfaceCreateInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getWin32SurfaceCreateFlagsKHRStr(value.flags) << '\n';
	s << "\thinstance = " << value.hinstance << '\n';
	s << "\thwnd = " << value.hwnd << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImportMemoryWin32HandleInfoKHR& value)
{
	s << "VkImportMemoryWin32HandleInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << "\thandle = " << value.handle << '\n';
	s << "\tname = " << getWStr(value.name) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkExportMemoryWin32HandleInfoKHR& value)
{
	s << "VkExportMemoryWin32HandleInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpAttributes = " << value.pAttributes << '\n';
	s << "\tdwAccess = " << value.dwAccess << '\n';
	s << "\tname = " << getWStr(value.name) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMemoryWin32HandlePropertiesKHR& value)
{
	s << "VkMemoryWin32HandlePropertiesKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkMemoryGetWin32HandleInfoKHR& value)
{
	s << "VkMemoryGetWin32HandleInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tmemory = " << value.memory << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkWin32KeyedMutexAcquireReleaseInfoKHR& value)
{
	s << "VkWin32KeyedMutexAcquireReleaseInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tacquireCount = " << value.acquireCount << '\n';
	s << "\tpAcquireSyncs = " << value.pAcquireSyncs << '\n';
	s << "\tpAcquireKeys = " << value.pAcquireKeys << '\n';
	s << "\tpAcquireTimeouts = " << value.pAcquireTimeouts << '\n';
	s << "\treleaseCount = " << value.releaseCount << '\n';
	s << "\tpReleaseSyncs = " << value.pReleaseSyncs << '\n';
	s << "\tpReleaseKeys = " << value.pReleaseKeys << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreWin32HandleInfoKHR& value)
{
	s << "VkImportSemaphoreWin32HandleInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsemaphore = " << value.semaphore << '\n';
	s << "\tflags = " << getSemaphoreImportFlagsStr(value.flags) << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << "\thandle = " << value.handle << '\n';
	s << "\tname = " << getWStr(value.name) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkExportSemaphoreWin32HandleInfoKHR& value)
{
	s << "VkExportSemaphoreWin32HandleInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpAttributes = " << value.pAttributes << '\n';
	s << "\tdwAccess = " << value.dwAccess << '\n';
	s << "\tname = " << getWStr(value.name) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkD3D12FenceSubmitInfoKHR& value)
{
	s << "VkD3D12FenceSubmitInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\twaitSemaphoreValuesCount = " << value.waitSemaphoreValuesCount << '\n';
	s << "\tpWaitSemaphoreValues = " << value.pWaitSemaphoreValues << '\n';
	s << "\tsignalSemaphoreValuesCount = " << value.signalSemaphoreValuesCount << '\n';
	s << "\tpSignalSemaphoreValues = " << value.pSignalSemaphoreValues << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetWin32HandleInfoKHR& value)
{
	s << "VkSemaphoreGetWin32HandleInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tsemaphore = " << value.semaphore << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImportFenceWin32HandleInfoKHR& value)
{
	s << "VkImportFenceWin32HandleInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tfence = " << value.fence << '\n';
	s << "\tflags = " << getFenceImportFlagsStr(value.flags) << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << "\thandle = " << value.handle << '\n';
	s << "\tname = " << getWStr(value.name) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkExportFenceWin32HandleInfoKHR& value)
{
	s << "VkExportFenceWin32HandleInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpAttributes = " << value.pAttributes << '\n';
	s << "\tdwAccess = " << value.dwAccess << '\n';
	s << "\tname = " << getWStr(value.name) << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkFenceGetWin32HandleInfoKHR& value)
{
	s << "VkFenceGetWin32HandleInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tfence = " << value.fence << '\n';
	s << "\thandleType = " << value.handleType << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkImportMemoryWin32HandleInfoNV& value)
{
	s << "VkImportMemoryWin32HandleInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\thandleType = " << getExternalMemoryHandleTypeFlagsNVStr(value.handleType) << '\n';
	s << "\thandle = " << value.handle << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkExportMemoryWin32HandleInfoNV& value)
{
	s << "VkExportMemoryWin32HandleInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tpAttributes = " << value.pAttributes << '\n';
	s << "\tdwAccess = " << value.dwAccess << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkWin32KeyedMutexAcquireReleaseInfoNV& value)
{
	s << "VkWin32KeyedMutexAcquireReleaseInfoNV = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tacquireCount = " << value.acquireCount << '\n';
	s << "\tpAcquireSyncs = " << value.pAcquireSyncs << '\n';
	s << "\tpAcquireKeys = " << value.pAcquireKeys << '\n';
	s << "\tpAcquireTimeoutMilliseconds = " << value.pAcquireTimeoutMilliseconds << '\n';
	s << "\treleaseCount = " << value.releaseCount << '\n';
	s << "\tpReleaseSyncs = " << value.pReleaseSyncs << '\n';
	s << "\tpReleaseKeys = " << value.pReleaseKeys << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSurfaceFullScreenExclusiveInfoEXT& value)
{
	s << "VkSurfaceFullScreenExclusiveInfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tfullScreenExclusive = " << value.fullScreenExclusive << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilitiesFullScreenExclusiveEXT& value)
{
	s << "VkSurfaceCapabilitiesFullScreenExclusiveEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tfullScreenExclusiveSupported = " << value.fullScreenExclusiveSupported << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkSurfaceFullScreenExclusiveWin32InfoEXT& value)
{
	s << "VkSurfaceFullScreenExclusiveWin32InfoEXT = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\thmonitor = " << value.hmonitor << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkXcbSurfaceCreateInfoKHR& value)
{
	s << "VkXcbSurfaceCreateInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getXcbSurfaceCreateFlagsKHRStr(value.flags) << '\n';
	s << "\tconnection = " << value.connection << '\n';
	s << "\twindow = " << value.window << '\n';
	s << '}';
	return s;
}

std::ostream& operator<< (std::ostream& s, const VkXlibSurfaceCreateInfoKHR& value)
{
	s << "VkXlibSurfaceCreateInfoKHR = {\n";
	s << "\tsType = " << value.sType << '\n';
	s << "\tpNext = " << value.pNext << '\n';
	s << "\tflags = " << getXlibSurfaceCreateFlagsKHRStr(value.flags) << '\n';
	s << "\tdpy = " << value.dpy << '\n';
	s << "\twindow = " << value.window << '\n';
	s << '}';
	return s;
}
