/* WARNING: This is auto-generated file. Do not modify, since changes will
 * be lost! Modify the generating script instead.
 */
const char*	getPipelineCacheHeaderVersionName		(VkPipelineCacheHeaderVersion value);
const char*	getResultName							(VkResult value);
const char*	getStructureTypeName					(VkStructureType value);
const char*	getSystemAllocationScopeName			(VkSystemAllocationScope value);
const char*	getInternalAllocationTypeName			(VkInternalAllocationType value);
const char*	getFormatName							(VkFormat value);
const char*	getImageTypeName						(VkImageType value);
const char*	getImageTilingName						(VkImageTiling value);
const char*	getPhysicalDeviceTypeName				(VkPhysicalDeviceType value);
const char*	getQueryTypeName						(VkQueryType value);
const char*	getSharingModeName						(VkSharingMode value);
const char*	getImageLayoutName						(VkImageLayout value);
const char*	getImageViewTypeName					(VkImageViewType value);
const char*	getComponentSwizzleName					(VkComponentSwizzle value);
const char*	getVertexInputRateName					(VkVertexInputRate value);
const char*	getPrimitiveTopologyName				(VkPrimitiveTopology value);
const char*	getPolygonModeName						(VkPolygonMode value);
const char*	getFrontFaceName						(VkFrontFace value);
const char*	getCompareOpName						(VkCompareOp value);
const char*	getStencilOpName						(VkStencilOp value);
const char*	getLogicOpName							(VkLogicOp value);
const char*	getBlendFactorName						(VkBlendFactor value);
const char*	getBlendOpName							(VkBlendOp value);
const char*	getDynamicStateName						(VkDynamicState value);
const char*	getFilterName							(VkFilter value);
const char*	getSamplerMipmapModeName				(VkSamplerMipmapMode value);
const char*	getSamplerAddressModeName				(VkSamplerAddressMode value);
const char*	getBorderColorName						(VkBorderColor value);
const char*	getDescriptorTypeName					(VkDescriptorType value);
const char*	getAttachmentLoadOpName					(VkAttachmentLoadOp value);
const char*	getAttachmentStoreOpName				(VkAttachmentStoreOp value);
const char*	getPipelineBindPointName				(VkPipelineBindPoint value);
const char*	getCommandBufferLevelName				(VkCommandBufferLevel value);
const char*	getIndexTypeName						(VkIndexType value);
const char*	getSubpassContentsName					(VkSubpassContents value);
const char*	getColorSpaceKHRName					(VkColorSpaceKHR value);
const char*	getPresentModeKHRName					(VkPresentModeKHR value);
const char*	getDebugReportObjectTypeEXTName			(VkDebugReportObjectTypeEXT value);
const char*	getDebugReportErrorEXTName				(VkDebugReportErrorEXT value);
const char*	getRasterizationOrderAMDName			(VkRasterizationOrderAMD value);
const char*	getValidationCheckEXTName				(VkValidationCheckEXT value);
const char*	getIndirectCommandsTokenTypeNVXName		(VkIndirectCommandsTokenTypeNVX value);
const char*	getObjectEntryTypeNVXName				(VkObjectEntryTypeNVX value);
const char*	getDescriptorUpdateTemplateTypeKHRName	(VkDescriptorUpdateTemplateTypeKHR value);

inline tcu::Format::Enum<VkPipelineCacheHeaderVersion>		getPipelineCacheHeaderVersionStr		(VkPipelineCacheHeaderVersion value)		{ return tcu::Format::Enum<VkPipelineCacheHeaderVersion>(getPipelineCacheHeaderVersionName, value);				}
inline tcu::Format::Enum<VkResult>							getResultStr							(VkResult value)							{ return tcu::Format::Enum<VkResult>(getResultName, value);														}
inline tcu::Format::Enum<VkStructureType>					getStructureTypeStr						(VkStructureType value)						{ return tcu::Format::Enum<VkStructureType>(getStructureTypeName, value);										}
inline tcu::Format::Enum<VkSystemAllocationScope>			getSystemAllocationScopeStr				(VkSystemAllocationScope value)				{ return tcu::Format::Enum<VkSystemAllocationScope>(getSystemAllocationScopeName, value);						}
inline tcu::Format::Enum<VkInternalAllocationType>			getInternalAllocationTypeStr			(VkInternalAllocationType value)			{ return tcu::Format::Enum<VkInternalAllocationType>(getInternalAllocationTypeName, value);						}
inline tcu::Format::Enum<VkFormat>							getFormatStr							(VkFormat value)							{ return tcu::Format::Enum<VkFormat>(getFormatName, value);														}
inline tcu::Format::Enum<VkImageType>						getImageTypeStr							(VkImageType value)							{ return tcu::Format::Enum<VkImageType>(getImageTypeName, value);												}
inline tcu::Format::Enum<VkImageTiling>						getImageTilingStr						(VkImageTiling value)						{ return tcu::Format::Enum<VkImageTiling>(getImageTilingName, value);											}
inline tcu::Format::Enum<VkPhysicalDeviceType>				getPhysicalDeviceTypeStr				(VkPhysicalDeviceType value)				{ return tcu::Format::Enum<VkPhysicalDeviceType>(getPhysicalDeviceTypeName, value);								}
inline tcu::Format::Enum<VkQueryType>						getQueryTypeStr							(VkQueryType value)							{ return tcu::Format::Enum<VkQueryType>(getQueryTypeName, value);												}
inline tcu::Format::Enum<VkSharingMode>						getSharingModeStr						(VkSharingMode value)						{ return tcu::Format::Enum<VkSharingMode>(getSharingModeName, value);											}
inline tcu::Format::Enum<VkImageLayout>						getImageLayoutStr						(VkImageLayout value)						{ return tcu::Format::Enum<VkImageLayout>(getImageLayoutName, value);											}
inline tcu::Format::Enum<VkImageViewType>					getImageViewTypeStr						(VkImageViewType value)						{ return tcu::Format::Enum<VkImageViewType>(getImageViewTypeName, value);										}
inline tcu::Format::Enum<VkComponentSwizzle>				getComponentSwizzleStr					(VkComponentSwizzle value)					{ return tcu::Format::Enum<VkComponentSwizzle>(getComponentSwizzleName, value);									}
inline tcu::Format::Enum<VkVertexInputRate>					getVertexInputRateStr					(VkVertexInputRate value)					{ return tcu::Format::Enum<VkVertexInputRate>(getVertexInputRateName, value);									}
inline tcu::Format::Enum<VkPrimitiveTopology>				getPrimitiveTopologyStr					(VkPrimitiveTopology value)					{ return tcu::Format::Enum<VkPrimitiveTopology>(getPrimitiveTopologyName, value);								}
inline tcu::Format::Enum<VkPolygonMode>						getPolygonModeStr						(VkPolygonMode value)						{ return tcu::Format::Enum<VkPolygonMode>(getPolygonModeName, value);											}
inline tcu::Format::Enum<VkFrontFace>						getFrontFaceStr							(VkFrontFace value)							{ return tcu::Format::Enum<VkFrontFace>(getFrontFaceName, value);												}
inline tcu::Format::Enum<VkCompareOp>						getCompareOpStr							(VkCompareOp value)							{ return tcu::Format::Enum<VkCompareOp>(getCompareOpName, value);												}
inline tcu::Format::Enum<VkStencilOp>						getStencilOpStr							(VkStencilOp value)							{ return tcu::Format::Enum<VkStencilOp>(getStencilOpName, value);												}
inline tcu::Format::Enum<VkLogicOp>							getLogicOpStr							(VkLogicOp value)							{ return tcu::Format::Enum<VkLogicOp>(getLogicOpName, value);													}
inline tcu::Format::Enum<VkBlendFactor>						getBlendFactorStr						(VkBlendFactor value)						{ return tcu::Format::Enum<VkBlendFactor>(getBlendFactorName, value);											}
inline tcu::Format::Enum<VkBlendOp>							getBlendOpStr							(VkBlendOp value)							{ return tcu::Format::Enum<VkBlendOp>(getBlendOpName, value);													}
inline tcu::Format::Enum<VkDynamicState>					getDynamicStateStr						(VkDynamicState value)						{ return tcu::Format::Enum<VkDynamicState>(getDynamicStateName, value);											}
inline tcu::Format::Enum<VkFilter>							getFilterStr							(VkFilter value)							{ return tcu::Format::Enum<VkFilter>(getFilterName, value);														}
inline tcu::Format::Enum<VkSamplerMipmapMode>				getSamplerMipmapModeStr					(VkSamplerMipmapMode value)					{ return tcu::Format::Enum<VkSamplerMipmapMode>(getSamplerMipmapModeName, value);								}
inline tcu::Format::Enum<VkSamplerAddressMode>				getSamplerAddressModeStr				(VkSamplerAddressMode value)				{ return tcu::Format::Enum<VkSamplerAddressMode>(getSamplerAddressModeName, value);								}
inline tcu::Format::Enum<VkBorderColor>						getBorderColorStr						(VkBorderColor value)						{ return tcu::Format::Enum<VkBorderColor>(getBorderColorName, value);											}
inline tcu::Format::Enum<VkDescriptorType>					getDescriptorTypeStr					(VkDescriptorType value)					{ return tcu::Format::Enum<VkDescriptorType>(getDescriptorTypeName, value);										}
inline tcu::Format::Enum<VkAttachmentLoadOp>				getAttachmentLoadOpStr					(VkAttachmentLoadOp value)					{ return tcu::Format::Enum<VkAttachmentLoadOp>(getAttachmentLoadOpName, value);									}
inline tcu::Format::Enum<VkAttachmentStoreOp>				getAttachmentStoreOpStr					(VkAttachmentStoreOp value)					{ return tcu::Format::Enum<VkAttachmentStoreOp>(getAttachmentStoreOpName, value);								}
inline tcu::Format::Enum<VkPipelineBindPoint>				getPipelineBindPointStr					(VkPipelineBindPoint value)					{ return tcu::Format::Enum<VkPipelineBindPoint>(getPipelineBindPointName, value);								}
inline tcu::Format::Enum<VkCommandBufferLevel>				getCommandBufferLevelStr				(VkCommandBufferLevel value)				{ return tcu::Format::Enum<VkCommandBufferLevel>(getCommandBufferLevelName, value);								}
inline tcu::Format::Enum<VkIndexType>						getIndexTypeStr							(VkIndexType value)							{ return tcu::Format::Enum<VkIndexType>(getIndexTypeName, value);												}
inline tcu::Format::Enum<VkSubpassContents>					getSubpassContentsStr					(VkSubpassContents value)					{ return tcu::Format::Enum<VkSubpassContents>(getSubpassContentsName, value);									}
inline tcu::Format::Enum<VkColorSpaceKHR>					getColorSpaceKHRStr						(VkColorSpaceKHR value)						{ return tcu::Format::Enum<VkColorSpaceKHR>(getColorSpaceKHRName, value);										}
inline tcu::Format::Enum<VkPresentModeKHR>					getPresentModeKHRStr					(VkPresentModeKHR value)					{ return tcu::Format::Enum<VkPresentModeKHR>(getPresentModeKHRName, value);										}
inline tcu::Format::Enum<VkDebugReportObjectTypeEXT>		getDebugReportObjectTypeEXTStr			(VkDebugReportObjectTypeEXT value)			{ return tcu::Format::Enum<VkDebugReportObjectTypeEXT>(getDebugReportObjectTypeEXTName, value);					}
inline tcu::Format::Enum<VkDebugReportErrorEXT>				getDebugReportErrorEXTStr				(VkDebugReportErrorEXT value)				{ return tcu::Format::Enum<VkDebugReportErrorEXT>(getDebugReportErrorEXTName, value);							}
inline tcu::Format::Enum<VkRasterizationOrderAMD>			getRasterizationOrderAMDStr				(VkRasterizationOrderAMD value)				{ return tcu::Format::Enum<VkRasterizationOrderAMD>(getRasterizationOrderAMDName, value);						}
inline tcu::Format::Enum<VkValidationCheckEXT>				getValidationCheckEXTStr				(VkValidationCheckEXT value)				{ return tcu::Format::Enum<VkValidationCheckEXT>(getValidationCheckEXTName, value);								}
inline tcu::Format::Enum<VkIndirectCommandsTokenTypeNVX>	getIndirectCommandsTokenTypeNVXStr		(VkIndirectCommandsTokenTypeNVX value)		{ return tcu::Format::Enum<VkIndirectCommandsTokenTypeNVX>(getIndirectCommandsTokenTypeNVXName, value);			}
inline tcu::Format::Enum<VkObjectEntryTypeNVX>				getObjectEntryTypeNVXStr				(VkObjectEntryTypeNVX value)				{ return tcu::Format::Enum<VkObjectEntryTypeNVX>(getObjectEntryTypeNVXName, value);								}
inline tcu::Format::Enum<VkDescriptorUpdateTemplateTypeKHR>	getDescriptorUpdateTemplateTypeKHRStr	(VkDescriptorUpdateTemplateTypeKHR value)	{ return tcu::Format::Enum<VkDescriptorUpdateTemplateTypeKHR>(getDescriptorUpdateTemplateTypeKHRName, value);	}

inline std::ostream&	operator<<	(std::ostream& s, VkPipelineCacheHeaderVersion value)		{ return s << getPipelineCacheHeaderVersionStr(value);		}
inline std::ostream&	operator<<	(std::ostream& s, VkResult value)							{ return s << getResultStr(value);							}
inline std::ostream&	operator<<	(std::ostream& s, VkStructureType value)					{ return s << getStructureTypeStr(value);					}
inline std::ostream&	operator<<	(std::ostream& s, VkSystemAllocationScope value)			{ return s << getSystemAllocationScopeStr(value);			}
inline std::ostream&	operator<<	(std::ostream& s, VkInternalAllocationType value)			{ return s << getInternalAllocationTypeStr(value);			}
inline std::ostream&	operator<<	(std::ostream& s, VkFormat value)							{ return s << getFormatStr(value);							}
inline std::ostream&	operator<<	(std::ostream& s, VkImageType value)						{ return s << getImageTypeStr(value);						}
inline std::ostream&	operator<<	(std::ostream& s, VkImageTiling value)						{ return s << getImageTilingStr(value);						}
inline std::ostream&	operator<<	(std::ostream& s, VkPhysicalDeviceType value)				{ return s << getPhysicalDeviceTypeStr(value);				}
inline std::ostream&	operator<<	(std::ostream& s, VkQueryType value)						{ return s << getQueryTypeStr(value);						}
inline std::ostream&	operator<<	(std::ostream& s, VkSharingMode value)						{ return s << getSharingModeStr(value);						}
inline std::ostream&	operator<<	(std::ostream& s, VkImageLayout value)						{ return s << getImageLayoutStr(value);						}
inline std::ostream&	operator<<	(std::ostream& s, VkImageViewType value)					{ return s << getImageViewTypeStr(value);					}
inline std::ostream&	operator<<	(std::ostream& s, VkComponentSwizzle value)					{ return s << getComponentSwizzleStr(value);				}
inline std::ostream&	operator<<	(std::ostream& s, VkVertexInputRate value)					{ return s << getVertexInputRateStr(value);					}
inline std::ostream&	operator<<	(std::ostream& s, VkPrimitiveTopology value)				{ return s << getPrimitiveTopologyStr(value);				}
inline std::ostream&	operator<<	(std::ostream& s, VkPolygonMode value)						{ return s << getPolygonModeStr(value);						}
inline std::ostream&	operator<<	(std::ostream& s, VkFrontFace value)						{ return s << getFrontFaceStr(value);						}
inline std::ostream&	operator<<	(std::ostream& s, VkCompareOp value)						{ return s << getCompareOpStr(value);						}
inline std::ostream&	operator<<	(std::ostream& s, VkStencilOp value)						{ return s << getStencilOpStr(value);						}
inline std::ostream&	operator<<	(std::ostream& s, VkLogicOp value)							{ return s << getLogicOpStr(value);							}
inline std::ostream&	operator<<	(std::ostream& s, VkBlendFactor value)						{ return s << getBlendFactorStr(value);						}
inline std::ostream&	operator<<	(std::ostream& s, VkBlendOp value)							{ return s << getBlendOpStr(value);							}
inline std::ostream&	operator<<	(std::ostream& s, VkDynamicState value)						{ return s << getDynamicStateStr(value);					}
inline std::ostream&	operator<<	(std::ostream& s, VkFilter value)							{ return s << getFilterStr(value);							}
inline std::ostream&	operator<<	(std::ostream& s, VkSamplerMipmapMode value)				{ return s << getSamplerMipmapModeStr(value);				}
inline std::ostream&	operator<<	(std::ostream& s, VkSamplerAddressMode value)				{ return s << getSamplerAddressModeStr(value);				}
inline std::ostream&	operator<<	(std::ostream& s, VkBorderColor value)						{ return s << getBorderColorStr(value);						}
inline std::ostream&	operator<<	(std::ostream& s, VkDescriptorType value)					{ return s << getDescriptorTypeStr(value);					}
inline std::ostream&	operator<<	(std::ostream& s, VkAttachmentLoadOp value)					{ return s << getAttachmentLoadOpStr(value);				}
inline std::ostream&	operator<<	(std::ostream& s, VkAttachmentStoreOp value)				{ return s << getAttachmentStoreOpStr(value);				}
inline std::ostream&	operator<<	(std::ostream& s, VkPipelineBindPoint value)				{ return s << getPipelineBindPointStr(value);				}
inline std::ostream&	operator<<	(std::ostream& s, VkCommandBufferLevel value)				{ return s << getCommandBufferLevelStr(value);				}
inline std::ostream&	operator<<	(std::ostream& s, VkIndexType value)						{ return s << getIndexTypeStr(value);						}
inline std::ostream&	operator<<	(std::ostream& s, VkSubpassContents value)					{ return s << getSubpassContentsStr(value);					}
inline std::ostream&	operator<<	(std::ostream& s, VkColorSpaceKHR value)					{ return s << getColorSpaceKHRStr(value);					}
inline std::ostream&	operator<<	(std::ostream& s, VkPresentModeKHR value)					{ return s << getPresentModeKHRStr(value);					}
inline std::ostream&	operator<<	(std::ostream& s, VkDebugReportObjectTypeEXT value)			{ return s << getDebugReportObjectTypeEXTStr(value);		}
inline std::ostream&	operator<<	(std::ostream& s, VkDebugReportErrorEXT value)				{ return s << getDebugReportErrorEXTStr(value);				}
inline std::ostream&	operator<<	(std::ostream& s, VkRasterizationOrderAMD value)			{ return s << getRasterizationOrderAMDStr(value);			}
inline std::ostream&	operator<<	(std::ostream& s, VkValidationCheckEXT value)				{ return s << getValidationCheckEXTStr(value);				}
inline std::ostream&	operator<<	(std::ostream& s, VkIndirectCommandsTokenTypeNVX value)		{ return s << getIndirectCommandsTokenTypeNVXStr(value);	}
inline std::ostream&	operator<<	(std::ostream& s, VkObjectEntryTypeNVX value)				{ return s << getObjectEntryTypeNVXStr(value);				}
inline std::ostream&	operator<<	(std::ostream& s, VkDescriptorUpdateTemplateTypeKHR value)	{ return s << getDescriptorUpdateTemplateTypeKHRStr(value);	}

tcu::Format::Bitfield<32>	getFormatFeatureFlagsStr						(VkFormatFeatureFlags value);
tcu::Format::Bitfield<32>	getImageUsageFlagsStr							(VkImageUsageFlags value);
tcu::Format::Bitfield<32>	getImageCreateFlagsStr							(VkImageCreateFlags value);
tcu::Format::Bitfield<32>	getSampleCountFlagsStr							(VkSampleCountFlags value);
tcu::Format::Bitfield<32>	getQueueFlagsStr								(VkQueueFlags value);
tcu::Format::Bitfield<32>	getMemoryPropertyFlagsStr						(VkMemoryPropertyFlags value);
tcu::Format::Bitfield<32>	getMemoryHeapFlagsStr							(VkMemoryHeapFlags value);
tcu::Format::Bitfield<32>	getPipelineStageFlagsStr						(VkPipelineStageFlags value);
tcu::Format::Bitfield<32>	getImageAspectFlagsStr							(VkImageAspectFlags value);
tcu::Format::Bitfield<32>	getSparseImageFormatFlagsStr					(VkSparseImageFormatFlags value);
tcu::Format::Bitfield<32>	getSparseMemoryBindFlagsStr						(VkSparseMemoryBindFlags value);
tcu::Format::Bitfield<32>	getFenceCreateFlagsStr							(VkFenceCreateFlags value);
tcu::Format::Bitfield<32>	getQueryPipelineStatisticFlagsStr				(VkQueryPipelineStatisticFlags value);
tcu::Format::Bitfield<32>	getQueryResultFlagsStr							(VkQueryResultFlags value);
tcu::Format::Bitfield<32>	getBufferCreateFlagsStr							(VkBufferCreateFlags value);
tcu::Format::Bitfield<32>	getBufferUsageFlagsStr							(VkBufferUsageFlags value);
tcu::Format::Bitfield<32>	getPipelineCreateFlagsStr						(VkPipelineCreateFlags value);
tcu::Format::Bitfield<32>	getShaderStageFlagsStr							(VkShaderStageFlags value);
tcu::Format::Bitfield<32>	getCullModeFlagsStr								(VkCullModeFlags value);
tcu::Format::Bitfield<32>	getColorComponentFlagsStr						(VkColorComponentFlags value);
tcu::Format::Bitfield<32>	getDescriptorSetLayoutCreateFlagsStr			(VkDescriptorSetLayoutCreateFlags value);
tcu::Format::Bitfield<32>	getDescriptorPoolCreateFlagsStr					(VkDescriptorPoolCreateFlags value);
tcu::Format::Bitfield<32>	getAttachmentDescriptionFlagsStr				(VkAttachmentDescriptionFlags value);
tcu::Format::Bitfield<32>	getAccessFlagsStr								(VkAccessFlags value);
tcu::Format::Bitfield<32>	getDependencyFlagsStr							(VkDependencyFlags value);
tcu::Format::Bitfield<32>	getCommandPoolCreateFlagsStr					(VkCommandPoolCreateFlags value);
tcu::Format::Bitfield<32>	getCommandPoolResetFlagsStr						(VkCommandPoolResetFlags value);
tcu::Format::Bitfield<32>	getCommandBufferUsageFlagsStr					(VkCommandBufferUsageFlags value);
tcu::Format::Bitfield<32>	getQueryControlFlagsStr							(VkQueryControlFlags value);
tcu::Format::Bitfield<32>	getCommandBufferResetFlagsStr					(VkCommandBufferResetFlags value);
tcu::Format::Bitfield<32>	getStencilFaceFlagsStr							(VkStencilFaceFlags value);
tcu::Format::Bitfield<32>	getSurfaceTransformFlagsKHRStr					(VkSurfaceTransformFlagsKHR value);
tcu::Format::Bitfield<32>	getCompositeAlphaFlagsKHRStr					(VkCompositeAlphaFlagsKHR value);
tcu::Format::Bitfield<32>	getDisplayPlaneAlphaFlagsKHRStr					(VkDisplayPlaneAlphaFlagsKHR value);
tcu::Format::Bitfield<32>	getDebugReportFlagsEXTStr						(VkDebugReportFlagsEXT value);
tcu::Format::Bitfield<32>	getExternalMemoryHandleTypeFlagsNVStr			(VkExternalMemoryHandleTypeFlagsNV value);
tcu::Format::Bitfield<32>	getExternalMemoryFeatureFlagsNVStr				(VkExternalMemoryFeatureFlagsNV value);
tcu::Format::Bitfield<32>	getIndirectCommandsLayoutUsageFlagsNVXStr		(VkIndirectCommandsLayoutUsageFlagsNVX value);
tcu::Format::Bitfield<32>	getObjectEntryUsageFlagsNVXStr					(VkObjectEntryUsageFlagsNVX value);
tcu::Format::Bitfield<32>	getInstanceCreateFlagsStr						(VkInstanceCreateFlags value);
tcu::Format::Bitfield<32>	getDeviceCreateFlagsStr							(VkDeviceCreateFlags value);
tcu::Format::Bitfield<32>	getDeviceQueueCreateFlagsStr					(VkDeviceQueueCreateFlags value);
tcu::Format::Bitfield<32>	getMemoryMapFlagsStr							(VkMemoryMapFlags value);
tcu::Format::Bitfield<32>	getSemaphoreCreateFlagsStr						(VkSemaphoreCreateFlags value);
tcu::Format::Bitfield<32>	getEventCreateFlagsStr							(VkEventCreateFlags value);
tcu::Format::Bitfield<32>	getQueryPoolCreateFlagsStr						(VkQueryPoolCreateFlags value);
tcu::Format::Bitfield<32>	getBufferViewCreateFlagsStr						(VkBufferViewCreateFlags value);
tcu::Format::Bitfield<32>	getImageViewCreateFlagsStr						(VkImageViewCreateFlags value);
tcu::Format::Bitfield<32>	getShaderModuleCreateFlagsStr					(VkShaderModuleCreateFlags value);
tcu::Format::Bitfield<32>	getPipelineCacheCreateFlagsStr					(VkPipelineCacheCreateFlags value);
tcu::Format::Bitfield<32>	getPipelineShaderStageCreateFlagsStr			(VkPipelineShaderStageCreateFlags value);
tcu::Format::Bitfield<32>	getPipelineVertexInputStateCreateFlagsStr		(VkPipelineVertexInputStateCreateFlags value);
tcu::Format::Bitfield<32>	getPipelineInputAssemblyStateCreateFlagsStr		(VkPipelineInputAssemblyStateCreateFlags value);
tcu::Format::Bitfield<32>	getPipelineTessellationStateCreateFlagsStr		(VkPipelineTessellationStateCreateFlags value);
tcu::Format::Bitfield<32>	getPipelineViewportStateCreateFlagsStr			(VkPipelineViewportStateCreateFlags value);
tcu::Format::Bitfield<32>	getPipelineRasterizationStateCreateFlagsStr		(VkPipelineRasterizationStateCreateFlags value);
tcu::Format::Bitfield<32>	getPipelineMultisampleStateCreateFlagsStr		(VkPipelineMultisampleStateCreateFlags value);
tcu::Format::Bitfield<32>	getPipelineDepthStencilStateCreateFlagsStr		(VkPipelineDepthStencilStateCreateFlags value);
tcu::Format::Bitfield<32>	getPipelineColorBlendStateCreateFlagsStr		(VkPipelineColorBlendStateCreateFlags value);
tcu::Format::Bitfield<32>	getPipelineDynamicStateCreateFlagsStr			(VkPipelineDynamicStateCreateFlags value);
tcu::Format::Bitfield<32>	getPipelineLayoutCreateFlagsStr					(VkPipelineLayoutCreateFlags value);
tcu::Format::Bitfield<32>	getSamplerCreateFlagsStr						(VkSamplerCreateFlags value);
tcu::Format::Bitfield<32>	getDescriptorPoolResetFlagsStr					(VkDescriptorPoolResetFlags value);
tcu::Format::Bitfield<32>	getFramebufferCreateFlagsStr					(VkFramebufferCreateFlags value);
tcu::Format::Bitfield<32>	getRenderPassCreateFlagsStr						(VkRenderPassCreateFlags value);
tcu::Format::Bitfield<32>	getSubpassDescriptionFlagsStr					(VkSubpassDescriptionFlags value);
tcu::Format::Bitfield<32>	getSwapchainCreateFlagsKHRStr					(VkSwapchainCreateFlagsKHR value);
tcu::Format::Bitfield<32>	getDisplayModeCreateFlagsKHRStr					(VkDisplayModeCreateFlagsKHR value);
tcu::Format::Bitfield<32>	getDisplaySurfaceCreateFlagsKHRStr				(VkDisplaySurfaceCreateFlagsKHR value);
tcu::Format::Bitfield<32>	getXlibSurfaceCreateFlagsKHRStr					(VkXlibSurfaceCreateFlagsKHR value);
tcu::Format::Bitfield<32>	getXcbSurfaceCreateFlagsKHRStr					(VkXcbSurfaceCreateFlagsKHR value);
tcu::Format::Bitfield<32>	getWaylandSurfaceCreateFlagsKHRStr				(VkWaylandSurfaceCreateFlagsKHR value);
tcu::Format::Bitfield<32>	getMirSurfaceCreateFlagsKHRStr					(VkMirSurfaceCreateFlagsKHR value);
tcu::Format::Bitfield<32>	getAndroidSurfaceCreateFlagsKHRStr				(VkAndroidSurfaceCreateFlagsKHR value);
tcu::Format::Bitfield<32>	getWin32SurfaceCreateFlagsKHRStr				(VkWin32SurfaceCreateFlagsKHR value);
tcu::Format::Bitfield<32>	getCommandPoolTrimFlagsKHRStr					(VkCommandPoolTrimFlagsKHR value);
tcu::Format::Bitfield<32>	getDescriptorUpdateTemplateCreateFlagsKHRStr	(VkDescriptorUpdateTemplateCreateFlagsKHR value);

std::ostream&	operator<<	(std::ostream& s, const VkApplicationInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkInstanceCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkAllocationCallbacks& value);
std::ostream&	operator<<	(std::ostream& s, const VkPhysicalDeviceFeatures& value);
std::ostream&	operator<<	(std::ostream& s, const VkFormatProperties& value);
std::ostream&	operator<<	(std::ostream& s, const VkExtent3D& value);
std::ostream&	operator<<	(std::ostream& s, const VkImageFormatProperties& value);
std::ostream&	operator<<	(std::ostream& s, const VkPhysicalDeviceLimits& value);
std::ostream&	operator<<	(std::ostream& s, const VkPhysicalDeviceSparseProperties& value);
std::ostream&	operator<<	(std::ostream& s, const VkPhysicalDeviceProperties& value);
std::ostream&	operator<<	(std::ostream& s, const VkQueueFamilyProperties& value);
std::ostream&	operator<<	(std::ostream& s, const VkMemoryType& value);
std::ostream&	operator<<	(std::ostream& s, const VkMemoryHeap& value);
std::ostream&	operator<<	(std::ostream& s, const VkPhysicalDeviceMemoryProperties& value);
std::ostream&	operator<<	(std::ostream& s, const VkDeviceQueueCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkDeviceCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkExtensionProperties& value);
std::ostream&	operator<<	(std::ostream& s, const VkLayerProperties& value);
std::ostream&	operator<<	(std::ostream& s, const VkSubmitInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkMemoryAllocateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkMappedMemoryRange& value);
std::ostream&	operator<<	(std::ostream& s, const VkMemoryRequirements& value);
std::ostream&	operator<<	(std::ostream& s, const VkSparseImageFormatProperties& value);
std::ostream&	operator<<	(std::ostream& s, const VkSparseImageMemoryRequirements& value);
std::ostream&	operator<<	(std::ostream& s, const VkSparseMemoryBind& value);
std::ostream&	operator<<	(std::ostream& s, const VkSparseBufferMemoryBindInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkSparseImageOpaqueMemoryBindInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkImageSubresource& value);
std::ostream&	operator<<	(std::ostream& s, const VkOffset3D& value);
std::ostream&	operator<<	(std::ostream& s, const VkSparseImageMemoryBind& value);
std::ostream&	operator<<	(std::ostream& s, const VkSparseImageMemoryBindInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkBindSparseInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkFenceCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkSemaphoreCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkEventCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkQueryPoolCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkBufferCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkBufferViewCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkImageCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkSubresourceLayout& value);
std::ostream&	operator<<	(std::ostream& s, const VkComponentMapping& value);
std::ostream&	operator<<	(std::ostream& s, const VkImageSubresourceRange& value);
std::ostream&	operator<<	(std::ostream& s, const VkImageViewCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkShaderModuleCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkPipelineCacheCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkSpecializationMapEntry& value);
std::ostream&	operator<<	(std::ostream& s, const VkSpecializationInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkPipelineShaderStageCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkVertexInputBindingDescription& value);
std::ostream&	operator<<	(std::ostream& s, const VkVertexInputAttributeDescription& value);
std::ostream&	operator<<	(std::ostream& s, const VkPipelineVertexInputStateCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkPipelineInputAssemblyStateCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkPipelineTessellationStateCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkViewport& value);
std::ostream&	operator<<	(std::ostream& s, const VkOffset2D& value);
std::ostream&	operator<<	(std::ostream& s, const VkExtent2D& value);
std::ostream&	operator<<	(std::ostream& s, const VkRect2D& value);
std::ostream&	operator<<	(std::ostream& s, const VkPipelineViewportStateCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkPipelineRasterizationStateCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkPipelineMultisampleStateCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkStencilOpState& value);
std::ostream&	operator<<	(std::ostream& s, const VkPipelineDepthStencilStateCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkPipelineColorBlendAttachmentState& value);
std::ostream&	operator<<	(std::ostream& s, const VkPipelineColorBlendStateCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkPipelineDynamicStateCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkGraphicsPipelineCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkComputePipelineCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkPushConstantRange& value);
std::ostream&	operator<<	(std::ostream& s, const VkPipelineLayoutCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkSamplerCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkDescriptorSetLayoutBinding& value);
std::ostream&	operator<<	(std::ostream& s, const VkDescriptorSetLayoutCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkDescriptorPoolSize& value);
std::ostream&	operator<<	(std::ostream& s, const VkDescriptorPoolCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkDescriptorSetAllocateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkDescriptorImageInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkDescriptorBufferInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkWriteDescriptorSet& value);
std::ostream&	operator<<	(std::ostream& s, const VkCopyDescriptorSet& value);
std::ostream&	operator<<	(std::ostream& s, const VkFramebufferCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkAttachmentDescription& value);
std::ostream&	operator<<	(std::ostream& s, const VkAttachmentReference& value);
std::ostream&	operator<<	(std::ostream& s, const VkSubpassDescription& value);
std::ostream&	operator<<	(std::ostream& s, const VkSubpassDependency& value);
std::ostream&	operator<<	(std::ostream& s, const VkRenderPassCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkCommandPoolCreateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkCommandBufferAllocateInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkCommandBufferInheritanceInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkCommandBufferBeginInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkBufferCopy& value);
std::ostream&	operator<<	(std::ostream& s, const VkImageSubresourceLayers& value);
std::ostream&	operator<<	(std::ostream& s, const VkImageCopy& value);
std::ostream&	operator<<	(std::ostream& s, const VkImageBlit& value);
std::ostream&	operator<<	(std::ostream& s, const VkBufferImageCopy& value);
std::ostream&	operator<<	(std::ostream& s, const VkClearColorValue& value);
std::ostream&	operator<<	(std::ostream& s, const VkClearDepthStencilValue& value);
std::ostream&	operator<<	(std::ostream& s, const VkClearValue& value);
std::ostream&	operator<<	(std::ostream& s, const VkClearAttachment& value);
std::ostream&	operator<<	(std::ostream& s, const VkClearRect& value);
std::ostream&	operator<<	(std::ostream& s, const VkImageResolve& value);
std::ostream&	operator<<	(std::ostream& s, const VkMemoryBarrier& value);
std::ostream&	operator<<	(std::ostream& s, const VkBufferMemoryBarrier& value);
std::ostream&	operator<<	(std::ostream& s, const VkImageMemoryBarrier& value);
std::ostream&	operator<<	(std::ostream& s, const VkRenderPassBeginInfo& value);
std::ostream&	operator<<	(std::ostream& s, const VkDispatchIndirectCommand& value);
std::ostream&	operator<<	(std::ostream& s, const VkDrawIndexedIndirectCommand& value);
std::ostream&	operator<<	(std::ostream& s, const VkDrawIndirectCommand& value);
std::ostream&	operator<<	(std::ostream& s, const VkSurfaceCapabilitiesKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkSurfaceFormatKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkSwapchainCreateInfoKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkPresentInfoKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkDisplayPropertiesKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkDisplayModeParametersKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkDisplayModePropertiesKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkDisplayModeCreateInfoKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkDisplayPlaneCapabilitiesKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkDisplayPlanePropertiesKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkDisplaySurfaceCreateInfoKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkDisplayPresentInfoKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkXlibSurfaceCreateInfoKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkXcbSurfaceCreateInfoKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkWaylandSurfaceCreateInfoKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkMirSurfaceCreateInfoKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkAndroidSurfaceCreateInfoKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkWin32SurfaceCreateInfoKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkPhysicalDeviceFeatures2KHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkPhysicalDeviceProperties2KHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkFormatProperties2KHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkImageFormatProperties2KHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkPhysicalDeviceImageFormatInfo2KHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkQueueFamilyProperties2KHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkPhysicalDeviceMemoryProperties2KHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkSparseImageFormatProperties2KHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkPhysicalDeviceSparseImageFormatInfo2KHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkRectLayerKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkPresentRegionKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkPresentRegionsKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkPhysicalDeviceSurfaceInfo2KHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkSurfaceCapabilities2KHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkSurfaceFormat2KHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkSharedPresentSurfaceCapabilitiesKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkDebugReportCallbackCreateInfoEXT& value);
std::ostream&	operator<<	(std::ostream& s, const VkPipelineRasterizationStateRasterizationOrderAMD& value);
std::ostream&	operator<<	(std::ostream& s, const VkDebugMarkerObjectNameInfoEXT& value);
std::ostream&	operator<<	(std::ostream& s, const VkDebugMarkerObjectTagInfoEXT& value);
std::ostream&	operator<<	(std::ostream& s, const VkDebugMarkerMarkerInfoEXT& value);
std::ostream&	operator<<	(std::ostream& s, const VkDedicatedAllocationImageCreateInfoNV& value);
std::ostream&	operator<<	(std::ostream& s, const VkDedicatedAllocationBufferCreateInfoNV& value);
std::ostream&	operator<<	(std::ostream& s, const VkDedicatedAllocationMemoryAllocateInfoNV& value);
std::ostream&	operator<<	(std::ostream& s, const VkExternalImageFormatPropertiesNV& value);
std::ostream&	operator<<	(std::ostream& s, const VkExternalMemoryImageCreateInfoNV& value);
std::ostream&	operator<<	(std::ostream& s, const VkExportMemoryAllocateInfoNV& value);
std::ostream&	operator<<	(std::ostream& s, const VkImportMemoryWin32HandleInfoNV& value);
std::ostream&	operator<<	(std::ostream& s, const VkExportMemoryWin32HandleInfoNV& value);
std::ostream&	operator<<	(std::ostream& s, const VkWin32KeyedMutexAcquireReleaseInfoNV& value);
std::ostream&	operator<<	(std::ostream& s, const VkValidationFlagsEXT& value);
std::ostream&	operator<<	(std::ostream& s, const VkDeviceGeneratedCommandsFeaturesNVX& value);
std::ostream&	operator<<	(std::ostream& s, const VkDeviceGeneratedCommandsLimitsNVX& value);
std::ostream&	operator<<	(std::ostream& s, const VkIndirectCommandsTokenNVX& value);
std::ostream&	operator<<	(std::ostream& s, const VkIndirectCommandsLayoutTokenNVX& value);
std::ostream&	operator<<	(std::ostream& s, const VkIndirectCommandsLayoutCreateInfoNVX& value);
std::ostream&	operator<<	(std::ostream& s, const VkCmdProcessCommandsInfoNVX& value);
std::ostream&	operator<<	(std::ostream& s, const VkCmdReserveSpaceForCommandsInfoNVX& value);
std::ostream&	operator<<	(std::ostream& s, const VkObjectTableCreateInfoNVX& value);
std::ostream&	operator<<	(std::ostream& s, const VkObjectTableEntryNVX& value);
std::ostream&	operator<<	(std::ostream& s, const VkObjectTablePipelineEntryNVX& value);
std::ostream&	operator<<	(std::ostream& s, const VkObjectTableDescriptorSetEntryNVX& value);
std::ostream&	operator<<	(std::ostream& s, const VkObjectTableVertexBufferEntryNVX& value);
std::ostream&	operator<<	(std::ostream& s, const VkObjectTableIndexBufferEntryNVX& value);
std::ostream&	operator<<	(std::ostream& s, const VkObjectTablePushConstantEntryNVX& value);
std::ostream&	operator<<	(std::ostream& s, const VkPhysicalDevicePushDescriptorPropertiesKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkDescriptorUpdateTemplateEntryKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkDescriptorUpdateTemplateCreateInfoKHR& value);
std::ostream&	operator<<	(std::ostream& s, const VkRefreshCycleDurationGOOGLE& value);
std::ostream&	operator<<	(std::ostream& s, const VkPastPresentationTimingGOOGLE& value);
std::ostream&	operator<<	(std::ostream& s, const VkPresentTimeGOOGLE& value);
std::ostream&	operator<<	(std::ostream& s, const VkPresentTimesInfoGOOGLE& value);
