13c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*-------------------------------------------------------------------------
23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * drawElements Quality Program EGL Utilities
33c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * ------------------------------------------
43c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
53c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Copyright 2014 The Android Open Source Project
63c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
73c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Licensed under the Apache License, Version 2.0 (the "License");
83c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * you may not use this file except in compliance with the License.
93c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * You may obtain a copy of the License at
103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *      http://www.apache.org/licenses/LICENSE-2.0
123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Unless required by applicable law or agreed to in writing, software
143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * distributed under the License is distributed on an "AS IS" BASIS,
153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * See the License for the specific language governing permissions and
173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * limitations under the License.
183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*!
203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \file
213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief EGL String Utilities.
223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/
233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "egluStrUtil.hpp"
253c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos#include "eglwEnums.hpp"
263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
273c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace eglu
283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
303c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystd::ostream& operator<< (std::ostream& str, const ConfigAttribValueFmt& attribFmt)
313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	switch (attribFmt.attribute)
333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_COLOR_BUFFER_TYPE:
353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return str << getColorBufferTypeStr(attribFmt.value);
363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_CONFIG_CAVEAT:
383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return str << getConfigCaveatStr(attribFmt.value);
393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_CONFORMANT:
413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_RENDERABLE_TYPE:
423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return str << getAPIBitsStr(attribFmt.value);
433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_SURFACE_TYPE:
453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return str << getSurfaceBitsStr(attribFmt.value);
463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_MATCH_NATIVE_PIXMAP:
483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			if (attribFmt.value == EGL_NONE)
493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return str << "EGL_NONE";
503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			else
513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return str << tcu::toHex(attribFmt.value);
523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_TRANSPARENT_TYPE:
543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return str << getTransparentTypeStr(attribFmt.value);
553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_BIND_TO_TEXTURE_RGB:
573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_BIND_TO_TEXTURE_RGBA:
583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_NATIVE_RENDERABLE:
593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return str << getBoolDontCareStr(attribFmt.value);
603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_ALPHA_MASK_SIZE:
623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_ALPHA_SIZE:
633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_BLUE_SIZE:
643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_BUFFER_SIZE:
653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_CONFIG_ID:
663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_DEPTH_SIZE:
673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_GREEN_SIZE:
683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_LEVEL:
693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_LUMINANCE_SIZE:
703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_MAX_SWAP_INTERVAL:
713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_MIN_SWAP_INTERVAL:
723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_RED_SIZE:
733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_SAMPLE_BUFFERS:
743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_SAMPLES:
753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_STENCIL_SIZE:
763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_TRANSPARENT_RED_VALUE:
773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_TRANSPARENT_GREEN_VALUE:
783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_TRANSPARENT_BLUE_VALUE:
793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return str << (int)attribFmt.value;
803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		default:
823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return str << tcu::toHex(attribFmt.value);
833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
863c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystd::ostream& operator<< (std::ostream& str, const ContextAttribValueFmt& attribFmt)
873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	switch (attribFmt.attribute)
893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_CONFIG_ID:
913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_CONTEXT_CLIENT_VERSION:
923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return str << (int)attribFmt.value;
933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_CONTEXT_CLIENT_TYPE:
953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return str << getAPIStr(attribFmt.value);
963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_RENDER_BUFFER:
983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return str << getRenderBufferStr(attribFmt.value);
993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		default:
1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return str << tcu::toHex(attribFmt.value);
1023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
1033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1053c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystd::ostream& operator<< (std::ostream& str, const SurfaceAttribValueFmt& attribFmt)
1063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	switch (attribFmt.attribute)
1083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
1093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_CONFIG_ID:
1103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_WIDTH:
1113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_HEIGHT:
1123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_HORIZONTAL_RESOLUTION:
1133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_VERTICAL_RESOLUTION:
1143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_PIXEL_ASPECT_RATIO:
1153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return str << (int)attribFmt.value;
1163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_LARGEST_PBUFFER:
1183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_MIPMAP_TEXTURE:
1193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return str << getBoolDontCareStr(attribFmt.value);
1203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_MULTISAMPLE_RESOLVE:
1223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return str << getMultisampleResolveStr(attribFmt.value);
1233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_RENDER_BUFFER:
1253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return str << getRenderBufferStr(attribFmt.value);
1263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_SWAP_BEHAVIOR:
1283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return str << getSwapBehaviorStr(attribFmt.value);
1293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_TEXTURE_FORMAT:
1313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return str << getTextureFormatStr(attribFmt.value);
1323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case EGL_TEXTURE_TARGET:
1343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return str << getTextureTargetStr(attribFmt.value);
1353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1363c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos		case EGL_ALPHA_FORMAT:
1373c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos			return str << getAlphaFormatStr(attribFmt.value);
1383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1393c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos		case EGL_COLORSPACE:
1403c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos			return str << getColorspaceStr(attribFmt.value);
1413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		default:
1433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return str << tcu::toHex(attribFmt.value);
1443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
1453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1473c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystd::ostream& operator<< (std::ostream& str, const ConfigAttribListFmt& fmt)
1483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	int pos = 0;
1503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	str << "{ ";
1523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	for (;;)
1543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
1553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		int attrib = fmt.attribs[pos];
1563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		if (pos != 0)
1583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			str << ", ";
1593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		if (attrib == EGL_NONE)
1613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{
1623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			// Terminate.
1633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			str << "EGL_NONE";
1643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			break;
1653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		}
1663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		const char*	attribName = getConfigAttribName(attrib);
1683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		if (attribName)
1703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{
1713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			// Valid attribute, print value.
1723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			str << attribName << ", " << getConfigAttribValueStr(attrib, fmt.attribs[pos+1]);
1733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			pos += 2;
1743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		}
1753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		else
1763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{
1773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			// Invalid attribute. Terminate parsing.
1783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			str << tcu::toHex(attrib) << ", ???";
1793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			break;
1803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		}
1813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
1823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	str << " }";
1843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	return str;
1853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1873c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystd::ostream& operator<< (std::ostream& str, const SurfaceAttribListFmt& fmt)
1883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	int pos = 0;
1903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	str << "{ ";
1923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	for (;;)
1943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
1953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		int attrib = fmt.attribs[pos];
1963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		if (pos != 0)
1983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			str << ", ";
1993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		if (attrib == EGL_NONE)
2013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{
2023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			// Terminate.
2033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			str << "EGL_NONE";
2043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			break;
2053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		}
2063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		const char*	attribName = getSurfaceAttribName(attrib);
2083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		if (attribName)
2103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{
2113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			// Valid attribute, print value.
2123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			str << attribName << ", " << getSurfaceAttribValueStr(attrib, fmt.attribs[pos+1]);
2133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			pos += 2;
2143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		}
2153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		else
2163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{
2173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			// Invalid attribute. Terminate parsing.
2183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			str << tcu::toHex(attrib) << ", ???";
2193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			break;
2203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		}
2213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
2223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	str << " }";
2243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	return str;
2253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
2263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2273c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystd::ostream& operator<< (std::ostream& str, const ContextAttribListFmt& fmt)
2283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
2293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	int pos = 0;
2303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	str << "{ ";
2323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	for (;;)
2343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
2353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		int attrib = fmt.attribs[pos];
2363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		if (pos != 0)
2383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			str << ", ";
2393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		if (attrib == EGL_NONE)
2413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{
2423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			// Terminate.
2433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			str << "EGL_NONE";
2443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			break;
2453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		}
2463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		const char*	attribName = getContextAttribName(attrib);
2483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		if (attribName)
2503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{
2513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			// Valid attribute, print value.
2523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			str << attribName << ", " << getContextAttribValueStr(attrib, fmt.attribs[pos+1]);
2533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			pos += 2;
2543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		}
2553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		else
2563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{
2573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			// Invalid attribute. Terminate parsing.
2583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			str << tcu::toHex(attrib) << ", ???";
2593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			break;
2603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		}
2613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
2623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	str << " }";
2643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	return str;
2653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
2663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "egluStrUtil.inl"
2683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // eglu
270