13c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*-------------------------------------------------------------------------
23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * drawElements Quality Program OpenGL ES 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 Reference context utils
223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/
233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "sglrReferenceUtils.hpp"
253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "glwEnums.hpp"
263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
273c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace sglr
283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
293c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace rr_util
303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
323c827367444ee418f129b2c238299f49d3264554Jarkko Poyryrr::VertexAttribType mapGLPureIntegerVertexAttributeType (deUint32 type)
333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	switch (type)
353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_UNSIGNED_BYTE:					return rr::VERTEXATTRIBTYPE_PURE_UINT8;
373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_UNSIGNED_SHORT:					return rr::VERTEXATTRIBTYPE_PURE_UINT16;
383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_UNSIGNED_INT:					return rr::VERTEXATTRIBTYPE_PURE_UINT32;
393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_BYTE:							return rr::VERTEXATTRIBTYPE_PURE_INT8;
403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_SHORT:							return rr::VERTEXATTRIBTYPE_PURE_INT16;
413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_INT:							return rr::VERTEXATTRIBTYPE_PURE_INT32;
423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		default:
433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			DE_ASSERT(false);
443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return rr::VERTEXATTRIBTYPE_LAST;
453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
483c827367444ee418f129b2c238299f49d3264554Jarkko Poyryrr::VertexAttribType mapGLFloatVertexAttributeType (deUint32 type, bool normalizedInteger, int size, glu::ContextType ctxType)
493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const bool useClampingNormalization	= (ctxType.getProfile() == glu::PROFILE_ES && ctxType.getMajorVersion() >= 3) ||
513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry										  (ctxType.getMajorVersion() == 4 && ctxType.getMinorVersion() >= 2);
523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const bool bgraComponentOrder		= (size == GL_BGRA);
533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	switch (type)
553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_FLOAT:
573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return rr::VERTEXATTRIBTYPE_FLOAT;
583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_HALF_FLOAT:
603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return rr::VERTEXATTRIBTYPE_HALF;
613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_FIXED:
633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return rr::VERTEXATTRIBTYPE_FIXED;
643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_DOUBLE:
663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return rr::VERTEXATTRIBTYPE_DOUBLE;
673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_UNSIGNED_BYTE:
693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			if (!normalizedInteger)
703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return rr::VERTEXATTRIBTYPE_NONPURE_UINT8;
713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			else
723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return (!bgraComponentOrder) ? (rr::VERTEXATTRIBTYPE_NONPURE_UNORM8) : (rr::VERTEXATTRIBTYPE_NONPURE_UNORM8_BGRA);
733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_UNSIGNED_SHORT:
753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			if (!normalizedInteger)
763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return rr::VERTEXATTRIBTYPE_NONPURE_UINT16;
773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			else
783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return rr::VERTEXATTRIBTYPE_NONPURE_UNORM16;
793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_UNSIGNED_INT:
813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			if (!normalizedInteger)
823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return rr::VERTEXATTRIBTYPE_NONPURE_UINT32;
833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			else
843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return rr::VERTEXATTRIBTYPE_NONPURE_UNORM32;
853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_UNSIGNED_INT_2_10_10_10_REV:
873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			if (!normalizedInteger)
883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return rr::VERTEXATTRIBTYPE_NONPURE_UINT_2_10_10_10_REV;
893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			else
903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return (!bgraComponentOrder) ? (rr::VERTEXATTRIBTYPE_NONPURE_UNORM_2_10_10_10_REV) : (rr::VERTEXATTRIBTYPE_NONPURE_UNORM_2_10_10_10_REV_BGRA);
913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_BYTE:
933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			if (!normalizedInteger)
943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return rr::VERTEXATTRIBTYPE_NONPURE_INT8;
953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			else if (useClampingNormalization)
963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return rr::VERTEXATTRIBTYPE_NONPURE_SNORM8_CLAMP;
973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			else
983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return rr::VERTEXATTRIBTYPE_NONPURE_SNORM8_SCALE;
993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_SHORT:
1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			if (!normalizedInteger)
1023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return rr::VERTEXATTRIBTYPE_NONPURE_INT16;
1033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			else if (useClampingNormalization)
1043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return rr::VERTEXATTRIBTYPE_NONPURE_SNORM16_CLAMP;
1053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			else
1063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return rr::VERTEXATTRIBTYPE_NONPURE_SNORM16_SCALE;
1073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_INT:
1093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			if (!normalizedInteger)
1103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return rr::VERTEXATTRIBTYPE_NONPURE_INT32;
1113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			else if (useClampingNormalization)
1123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return rr::VERTEXATTRIBTYPE_NONPURE_SNORM32_CLAMP;
1133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			else
1143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return rr::VERTEXATTRIBTYPE_NONPURE_SNORM32_SCALE;
1153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_INT_2_10_10_10_REV:
1173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			if (!normalizedInteger)
1183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return rr::VERTEXATTRIBTYPE_NONPURE_INT_2_10_10_10_REV;
1193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			else if (useClampingNormalization)
1203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return (!bgraComponentOrder) ? (rr::VERTEXATTRIBTYPE_NONPURE_SNORM_2_10_10_10_REV_CLAMP) : (rr::VERTEXATTRIBTYPE_NONPURE_SNORM_2_10_10_10_REV_CLAMP_BGRA);
1213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			else
1223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				return (!bgraComponentOrder) ? (rr::VERTEXATTRIBTYPE_NONPURE_SNORM_2_10_10_10_REV_SCALE) : (rr::VERTEXATTRIBTYPE_NONPURE_SNORM_2_10_10_10_REV_SCALE_BGRA);
1233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		default:
1253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			DE_ASSERT(false);
1263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return rr::VERTEXATTRIBTYPE_LAST;
1273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
1283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1303c827367444ee418f129b2c238299f49d3264554Jarkko Poyryint mapGLSize (int size)
1313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	switch (size)
1333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
1343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case 1:			return 1;
1353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case 2:			return 2;
1363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case 3:			return 3;
1373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case 4:			return 4;
1383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_BGRA:	return 4;
1393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		default:
1413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			DE_ASSERT(false);
1423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return 0;
1433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
1443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1463c827367444ee418f129b2c238299f49d3264554Jarkko Poyryrr::PrimitiveType mapGLPrimitiveType (deUint32 type)
1473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	switch (type)
1493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
1503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_TRIANGLES:					return rr::PRIMITIVETYPE_TRIANGLES;
1513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_TRIANGLE_STRIP:				return rr::PRIMITIVETYPE_TRIANGLE_STRIP;
1523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_TRIANGLE_FAN:				return rr::PRIMITIVETYPE_TRIANGLE_FAN;
1533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_LINES:						return rr::PRIMITIVETYPE_LINES;
1543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_LINE_STRIP:					return rr::PRIMITIVETYPE_LINE_STRIP;
1553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_LINE_LOOP:					return rr::PRIMITIVETYPE_LINE_LOOP;
1563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_POINTS:						return rr::PRIMITIVETYPE_POINTS;
1573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_LINES_ADJACENCY:			return rr::PRIMITIVETYPE_LINES_ADJACENCY;
1583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_LINE_STRIP_ADJACENCY:		return rr::PRIMITIVETYPE_LINE_STRIP_ADJACENCY;
1593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_TRIANGLES_ADJACENCY:		return rr::PRIMITIVETYPE_TRIANGLES_ADJACENCY;
1603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_TRIANGLE_STRIP_ADJACENCY:	return rr::PRIMITIVETYPE_TRIANGLE_STRIP_ADJACENCY;
1613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		default:
1623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			DE_ASSERT(false);
1633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return rr::PRIMITIVETYPE_LAST;
1643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
1653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1673c827367444ee418f129b2c238299f49d3264554Jarkko Poyryrr::IndexType mapGLIndexType (deUint32 type)
1683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	switch (type)
1703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
1713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_UNSIGNED_BYTE:	return rr::INDEXTYPE_UINT8;
1723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_UNSIGNED_SHORT:	return rr::INDEXTYPE_UINT16;
1733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_UNSIGNED_INT:	return rr::INDEXTYPE_UINT32;
1743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		default:
1753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			DE_ASSERT(false);
1763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return rr::INDEXTYPE_LAST;
1773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
1783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1813c827367444ee418f129b2c238299f49d3264554Jarkko Poyryrr::GeometryShaderOutputType mapGLGeometryShaderOutputType (deUint32 primitive)
1823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	switch (primitive)
1843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
1853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_POINTS:				return rr::GEOMETRYSHADEROUTPUTTYPE_POINTS;
1863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_LINE_STRIP:			return rr::GEOMETRYSHADEROUTPUTTYPE_LINE_STRIP;
1873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_TRIANGLE_STRIP:		return rr::GEOMETRYSHADEROUTPUTTYPE_TRIANGLE_STRIP;
1883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		default:
1893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			DE_ASSERT(DE_FALSE);
1903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return rr::GEOMETRYSHADEROUTPUTTYPE_LAST;
1913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
1923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1943c827367444ee418f129b2c238299f49d3264554Jarkko Poyryrr::GeometryShaderInputType mapGLGeometryShaderInputType (deUint32 primitive)
1953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	switch (primitive)
1973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
1983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_POINTS:						return rr::GEOMETRYSHADERINPUTTYPE_POINTS;
1993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_LINES:						return rr::GEOMETRYSHADERINPUTTYPE_LINES;
2003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_LINE_STRIP:					return rr::GEOMETRYSHADERINPUTTYPE_LINES;
2013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_LINE_LOOP:					return rr::GEOMETRYSHADERINPUTTYPE_LINES;
2023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_TRIANGLES:					return rr::GEOMETRYSHADERINPUTTYPE_TRIANGLES;
2033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_TRIANGLE_STRIP:				return rr::GEOMETRYSHADERINPUTTYPE_TRIANGLES;
2043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_TRIANGLE_FAN:				return rr::GEOMETRYSHADERINPUTTYPE_TRIANGLES;
2053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_LINES_ADJACENCY:			return rr::GEOMETRYSHADERINPUTTYPE_LINES_ADJACENCY;
2063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_LINE_STRIP_ADJACENCY:		return rr::GEOMETRYSHADERINPUTTYPE_LINES_ADJACENCY;
2073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_TRIANGLES_ADJACENCY:		return rr::GEOMETRYSHADERINPUTTYPE_TRIANGLES_ADJACENCY;
2083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_TRIANGLE_STRIP_ADJACENCY:	return rr::GEOMETRYSHADERINPUTTYPE_TRIANGLES_ADJACENCY;
2093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		default:
2103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			DE_ASSERT(DE_FALSE);
2113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return rr::GEOMETRYSHADERINPUTTYPE_LAST;
2123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
2133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
2143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2153c827367444ee418f129b2c238299f49d3264554Jarkko Poyryrr::TestFunc mapGLTestFunc (deUint32 func)
2163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
2173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	switch (func)
2183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
2193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_ALWAYS:		return rr::TESTFUNC_ALWAYS;
2203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_EQUAL:		return rr::TESTFUNC_EQUAL;
2213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_GEQUAL:		return rr::TESTFUNC_GEQUAL;
2223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_GREATER:	return rr::TESTFUNC_GREATER;
2233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_LEQUAL:		return rr::TESTFUNC_LEQUAL;
2243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_LESS:		return rr::TESTFUNC_LESS;
2253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_NEVER:		return rr::TESTFUNC_NEVER;
2263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_NOTEQUAL:	return rr::TESTFUNC_NOTEQUAL;
2273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		default:
2283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			DE_ASSERT(false);
2293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return rr::TESTFUNC_LAST;
2303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
2313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
2323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2333c827367444ee418f129b2c238299f49d3264554Jarkko Poyryrr::StencilOp mapGLStencilOp (deUint32 op)
2343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
2353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	switch (op)
2363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
2373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_KEEP:		return rr::STENCILOP_KEEP;
2383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_ZERO:		return rr::STENCILOP_ZERO;
2393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_REPLACE:	return rr::STENCILOP_REPLACE;
2403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_INCR:		return rr::STENCILOP_INCR;
2413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_DECR:		return rr::STENCILOP_DECR;
2423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_INCR_WRAP:	return rr::STENCILOP_INCR_WRAP;
2433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_DECR_WRAP:	return rr::STENCILOP_DECR_WRAP;
2443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_INVERT:		return rr::STENCILOP_INVERT;
2453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		default:
2463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			DE_ASSERT(false);
2473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return rr::STENCILOP_LAST;
2483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
2493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
2503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2513c827367444ee418f129b2c238299f49d3264554Jarkko Poyryrr::BlendEquation mapGLBlendEquation (deUint32 equation)
2523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
2533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	switch (equation)
2543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
2553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_FUNC_ADD:				return rr::BLENDEQUATION_ADD;
2563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_FUNC_SUBTRACT:			return rr::BLENDEQUATION_SUBTRACT;
2573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_FUNC_REVERSE_SUBTRACT:	return rr::BLENDEQUATION_REVERSE_SUBTRACT;
2583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_MIN:					return rr::BLENDEQUATION_MIN;
2593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_MAX:					return rr::BLENDEQUATION_MAX;
2603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		default:
2613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			DE_ASSERT(false);
2623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return rr::BLENDEQUATION_LAST;
2633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
2643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
2653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2663c827367444ee418f129b2c238299f49d3264554Jarkko Poyryrr::BlendEquationAdvanced mapGLBlendEquationAdvanced (deUint32 equation)
2673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
2683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	switch (equation)
2693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
2703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_MULTIPLY_KHR:		return rr::BLENDEQUATION_ADVANCED_MULTIPLY;
2713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_SCREEN_KHR:			return rr::BLENDEQUATION_ADVANCED_SCREEN;
2723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_OVERLAY_KHR:		return rr::BLENDEQUATION_ADVANCED_OVERLAY;
2733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_DARKEN_KHR:			return rr::BLENDEQUATION_ADVANCED_DARKEN;
2743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_LIGHTEN_KHR:		return rr::BLENDEQUATION_ADVANCED_LIGHTEN;
2753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_COLORDODGE_KHR:		return rr::BLENDEQUATION_ADVANCED_COLORDODGE;
2763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_COLORBURN_KHR:		return rr::BLENDEQUATION_ADVANCED_COLORBURN;
2773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_HARDLIGHT_KHR:		return rr::BLENDEQUATION_ADVANCED_HARDLIGHT;
2783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_SOFTLIGHT_KHR:		return rr::BLENDEQUATION_ADVANCED_SOFTLIGHT;
2793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_DIFFERENCE_KHR:		return rr::BLENDEQUATION_ADVANCED_DIFFERENCE;
2803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_EXCLUSION_KHR:		return rr::BLENDEQUATION_ADVANCED_EXCLUSION;
2813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_HSL_HUE_KHR:		return rr::BLENDEQUATION_ADVANCED_HSL_HUE;
2823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_HSL_SATURATION_KHR:	return rr::BLENDEQUATION_ADVANCED_HSL_SATURATION;
2833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_HSL_COLOR_KHR:		return rr::BLENDEQUATION_ADVANCED_HSL_COLOR;
2843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_HSL_LUMINOSITY_KHR:	return rr::BLENDEQUATION_ADVANCED_HSL_LUMINOSITY;
2853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		default:
2863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			DE_ASSERT(false);
2873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return rr::BLENDEQUATION_ADVANCED_LAST;
2883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
2893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
2903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2913c827367444ee418f129b2c238299f49d3264554Jarkko Poyryrr::BlendFunc mapGLBlendFunc (deUint32 func)
2923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
2933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	switch (func)
2943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
2953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_ZERO:						return rr::BLENDFUNC_ZERO;
2963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_ONE:						return rr::BLENDFUNC_ONE;
2973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_SRC_COLOR:					return rr::BLENDFUNC_SRC_COLOR;
2983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_ONE_MINUS_SRC_COLOR:		return rr::BLENDFUNC_ONE_MINUS_SRC_COLOR;
2993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_DST_COLOR:					return rr::BLENDFUNC_DST_COLOR;
3003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_ONE_MINUS_DST_COLOR:		return rr::BLENDFUNC_ONE_MINUS_DST_COLOR;
3013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_SRC_ALPHA:					return rr::BLENDFUNC_SRC_ALPHA;
3023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_ONE_MINUS_SRC_ALPHA:		return rr::BLENDFUNC_ONE_MINUS_SRC_ALPHA;
3033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_DST_ALPHA:					return rr::BLENDFUNC_DST_ALPHA;
3043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_ONE_MINUS_DST_ALPHA:		return rr::BLENDFUNC_ONE_MINUS_DST_ALPHA;
3053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_CONSTANT_COLOR:				return rr::BLENDFUNC_CONSTANT_COLOR;
3063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_ONE_MINUS_CONSTANT_COLOR:	return rr::BLENDFUNC_ONE_MINUS_CONSTANT_COLOR;
3073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_CONSTANT_ALPHA:				return rr::BLENDFUNC_CONSTANT_ALPHA;
3083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_ONE_MINUS_CONSTANT_ALPHA:	return rr::BLENDFUNC_ONE_MINUS_CONSTANT_ALPHA;
3093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_SRC_ALPHA_SATURATE:			return rr::BLENDFUNC_SRC_ALPHA_SATURATE;
3103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_SRC1_COLOR:					return rr::BLENDFUNC_SRC1_COLOR;
3113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_ONE_MINUS_SRC1_COLOR:		return rr::BLENDFUNC_ONE_MINUS_SRC1_COLOR;
3123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_SRC1_ALPHA:					return rr::BLENDFUNC_SRC1_ALPHA;
3133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		case GL_ONE_MINUS_SRC1_ALPHA:		return rr::BLENDFUNC_ONE_MINUS_SRC1_ALPHA;
3143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		default:
3153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			DE_ASSERT(false);
3163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return rr::BLENDFUNC_LAST;
3173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
3183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
3193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // rr_util
3213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // sglr
322