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