/* 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);

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 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);				}

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>	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>	getDescriptorSetLayoutCreateFlagsStr		(VkDescriptorSetLayoutCreateFlags 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);

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 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);
