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 Shader utilities. 223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "gluShaderUtil.hpp" 253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "glwEnums.hpp" 26d6148171f88da1301f053e2e0236afc69416137cJarkko Pöyry#include "deArrayUtil.hpp" 273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 283c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace glu 293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry// ShadingLanguageVersion 323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 333c827367444ee418f129b2c238299f49d3264554Jarkko Poyryconst char* getGLSLVersionName (GLSLVersion version) 343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry static const char* s_names[] = 363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "GLSL ES 1.0", 383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "GLSL ES 3.0", 393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "GLSL ES 3.1", 403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "GLSL 1.3", 413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "GLSL 1.4", 423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "GLSL 1.5", 433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "GLSL 3.3", 443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "GLSL 4.0", 453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "GLSL 4.1", 463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "GLSL 4.2", 473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "GLSL 4.3", 483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "GLSL 4.4", 493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry }; 503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return de::getSizedArrayElement<GLSL_VERSION_LAST>(s_names, version); 523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 543c827367444ee418f129b2c238299f49d3264554Jarkko Poyryconst char* getGLSLVersionDeclaration (GLSLVersion version) 553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry static const char* s_decl[] = 573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "#version 100", 593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "#version 300 es", 603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "#version 310 es", 613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "#version 130", 623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "#version 140", 633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "#version 150", 643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "#version 330", 653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "#version 400", 663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "#version 410", 673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "#version 420", 683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "#version 430", 693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "#version 440", 703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry }; 713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return de::getSizedArrayElement<GLSL_VERSION_LAST>(s_decl, version); 733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 753c827367444ee418f129b2c238299f49d3264554Jarkko Poyrybool glslVersionUsesInOutQualifiers (GLSLVersion version) 763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return de::inRange<int>(version, GLSL_VERSION_300_ES, GLSL_VERSION_310_ES) || de::inRange<int>(version, GLSL_VERSION_330, GLSL_VERSION_430); 783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 803c827367444ee418f129b2c238299f49d3264554Jarkko Poyrybool glslVersionIsES (GLSLVersion version) 813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(version != GLSL_VERSION_LAST); 833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (version == GLSL_VERSION_100_ES || 853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry version == GLSL_VERSION_300_ES || 863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry version == GLSL_VERSION_310_ES) 873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return true; 883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry else 893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return false; 903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry// \todo [2014-10-06 pyry] Export this. 933c827367444ee418f129b2c238299f49d3264554Jarkko Poyrystatic ApiType getMinAPIForGLSLVersion (GLSLVersion version) 943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry static const ApiType s_minApi[] = 963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ApiType::es(2,0), 983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ApiType::es(3,0), 993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ApiType::es(3,1), 1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ApiType::core(3,0), 1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ApiType::core(3,1), 1023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ApiType::core(3,2), 1033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ApiType::core(3,3), 1043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ApiType::core(4,0), 1053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ApiType::core(4,1), 1063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ApiType::core(4,2), 1073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ApiType::core(4,3), 1083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ApiType::core(4,4), 1093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry }; 1103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return de::getSizedArrayElement<GLSL_VERSION_LAST>(s_minApi, version); 1123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1143c827367444ee418f129b2c238299f49d3264554Jarkko Poyrybool isGLSLVersionSupported (ContextType type, GLSLVersion version) 1153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return contextSupports(type, getMinAPIForGLSLVersion(version)); 1173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1193c827367444ee418f129b2c238299f49d3264554Jarkko PoyryGLSLVersion getContextTypeGLSLVersion (ContextType type) 1203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // \note From newer to older 1223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry for (int version = GLSL_VERSION_LAST-1; version >= 0; version--) 1233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 1243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (isGLSLVersionSupported(type, GLSLVersion(version))) 1253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return GLSLVersion(version); 1263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 1273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(false); 1293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return GLSL_VERSION_LAST; 1303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry// ShaderType 1333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1343c827367444ee418f129b2c238299f49d3264554Jarkko Poyryconst char* getShaderTypeName (ShaderType shaderType) 1353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry const char* s_names[] = 1373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 1383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "vertex", 1393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "fragment", 1403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "geometry", 1413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "tess_control", 1423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "tess_eval", 1433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "compute", 1443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry }; 1453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_STATIC_ASSERT(DE_LENGTH_OF_ARRAY(s_names) == SHADERTYPE_LAST); 1473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(deInBounds32((int)shaderType, 0, SHADERTYPE_LAST)); 1483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return s_names[(int)shaderType]; 1493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry// Precision 1523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1533c827367444ee418f129b2c238299f49d3264554Jarkko Poyryconst char* getPrecisionName (Precision precision) 1543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry const char* s_names[] = 1563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 1573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "lowp", 1583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "mediump", 1593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "highp" 1603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry }; 1613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_STATIC_ASSERT(DE_LENGTH_OF_ARRAY(s_names) == PRECISION_LAST); 1633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(deInBounds32((int)precision, 0, PRECISION_LAST)); 1643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return s_names[(int)precision]; 1653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry// DataType 1683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1693c827367444ee418f129b2c238299f49d3264554Jarkko Poyryconst char* getDataTypeName (DataType dataType) 1703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 1713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry const char* s_names[] = 1723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 1733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "invalid", 1743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "float", 1753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "vec2", 1763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "vec3", 1773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "vec4", 1783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "mat2", 1793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "mat2x3", 1803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "mat2x4", 1813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "mat3x2", 1823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "mat3", 1833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "mat3x4", 1843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "mat4x2", 1853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "mat4x3", 1863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "mat4", 1873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "int", 1883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "ivec2", 1893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "ivec3", 1903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "ivec4", 1913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "uint", 1923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "uvec2", 1933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "uvec3", 1943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "uvec4", 1953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "bool", 1963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "bvec2", 1973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "bvec3", 1983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "bvec4", 1993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "sampler1D", 2003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "sampler2D", 2013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "samplerCube", 2023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "sampler2DArray", 2033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "sampler3D", 2043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "samplerCubeArray", 2053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "sampler1DShadow", 2063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "sampler2DShadow", 2073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "samplerCubeShadow", 2083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "sampler2DArrayShadow", 2093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "samplerCubeArrayShadow", 2103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "isampler1D", 2113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "isampler2D", 2123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "isamplerCube", 2133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "isampler2DArray", 2143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "isampler3D", 2153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "isamplerCubeArray", 2163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "usampler1D", 2173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "usampler2D", 2183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "usamplerCube", 2193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "usampler2DArray", 2203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "usampler3D", 2213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "usamplerCubeArray", 2223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "sampler2DMS", 2233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "isampler2DMS", 2243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "usampler2DMS", 2253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "image2D", 2263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "imageCube", 2273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "image2DArray", 2283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "image3D", 2293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "imageCubeArray", 2303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "iimage2D", 2313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "iimageCube", 2323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "iimage2DArray", 2333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "iimage3D", 2343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "iimageCubeArray", 2353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "uimage2D", 2363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "uimageCube", 2373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "uimage2DArray", 2383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "uimage3D", 2393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "uimageCubeArray", 2403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry "atomic_uint", 2413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry }; 2423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_STATIC_ASSERT(DE_LENGTH_OF_ARRAY(s_names) == TYPE_LAST); 2443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(deInBounds32((int)dataType, 0, DE_LENGTH_OF_ARRAY(s_names))); 2453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return s_names[(int)dataType]; 2463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 2473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2483c827367444ee418f129b2c238299f49d3264554Jarkko Poyryint getDataTypeScalarSize (DataType dataType) 2493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 2503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry const int s_sizes[] = 2513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 2523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry -1, // invalid 2533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // float 2543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2, // vec2 2553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3, // vec3 2563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 4, // vec4 2573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 4, // mat2 2583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 6, // mat2x3 2593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 8, // mat2x4 2603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 6, // mat3x2 2613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 9, // mat3 2623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 12, // mat3x4 2633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 8, // mat4x2 2643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 12, // mat4x3 2653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 16, // mat4 2663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // int 2673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2, // ivec2 2683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3, // ivec3 2693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 4, // ivec4 2703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // uint 2713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2, // uvec2 2723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3, // uvec3 2733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 4, // uvec4 2743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // bool 2753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 2, // bvec2 2763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3, // bvec3 2773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 4, // bvec4 2783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // sampler1D 2793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // sampler2D 2803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // samplerCube 2813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // sampler2DArray 2823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // sampler3D 2833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // samplerCubeArray 2843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // sampler1DShadow 2853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // sampler2DShadow 2863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // samplerCubeShadow 2873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // sampler2DArrayShadow 2883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // samplerCubeArrayShadow 2893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // isampler1D 2903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // isampler2D 2913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // isamplerCube 2923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // isampler2DArray 2933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // isampler3D 2943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // isamplerCubeArray 2953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // usampler1D 2963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // usampler2D 2973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // usamplerCube 2983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // usampler2DArray 2993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // usampler3D 3003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // usamplerCubeArray 3013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // sampler2DMS 3023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // isampler2DMS 3033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // usampler2DMS 3043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // image2D 3053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // imageCube 3063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // image2DArray 3073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // image3D 3083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // imageCubeArray 3093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // iimage2D 3103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // iimageCube 3113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // iimage2DArray 3123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // iimage3D 3133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // iimageCubeArray 3143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // uimage2D 3153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // uimageCube 3163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // uimage2DArray 3173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // uimage3D 3183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // uimageCubeArray 3193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1, // atomic_uint 3203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry }; 3213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_STATIC_ASSERT(DE_LENGTH_OF_ARRAY(s_sizes) == TYPE_LAST); 3233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(deInBounds32((int)dataType, 0, DE_LENGTH_OF_ARRAY(s_sizes))); 3243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return s_sizes[(int)dataType]; 3253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 3263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 3273c827367444ee418f129b2c238299f49d3264554Jarkko PoyryDataType getDataTypeScalarType (DataType dataType) 3283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 3293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry const DataType s_scalarTypes[] = 3303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 3313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // invalid 3323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT, // float 3333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT, // vec2 3343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT, // vec3 3353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT, // vec4 3363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT, // mat2 3373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT, // mat2x3 3383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT, // mat2x4 3393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT, // mat3x2 3403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT, // mat3 3413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT, // mat3x4 3423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT, // mat4x2 3433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT, // mat4x3 3443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT, // mat4 3453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INT, // int 3463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INT, // ivec2 3473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INT, // ivec3 3483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INT, // ivec4 3493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_UINT, // uint 3503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_UINT, // uvec2 3513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_UINT, // uvec3 3523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_UINT, // uvec4 3533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_BOOL, // bool 3543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_BOOL, // bvec2 3553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_BOOL, // bvec3 3563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_BOOL, // bvec4 3573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_SAMPLER_1D, // sampler1D 3583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_SAMPLER_2D, // sampler2D 3593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_SAMPLER_CUBE, // samplerCube 3603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_SAMPLER_2D_ARRAY, // sampler2DArray 3613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_SAMPLER_3D, // sampler3D 3623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_SAMPLER_CUBE_ARRAY, // samplerCubeArray 3633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_SAMPLER_1D_SHADOW, // sampler1DShadow 3643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_SAMPLER_2D_SHADOW, // sampler2DShadow 3653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_SAMPLER_CUBE_SHADOW, // samplerCubeShadow 3663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_SAMPLER_2D_ARRAY_SHADOW, // sampler2DArrayShadow 3673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_SAMPLER_CUBE_ARRAY_SHADOW, // samplerCubeArrayShadow 3683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INT_SAMPLER_1D, // isampler1D 3693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INT_SAMPLER_2D, // isampler2D 3703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INT_SAMPLER_CUBE, // isamplerCube 3713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INT_SAMPLER_2D_ARRAY, // isampler2DArray 3723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INT_SAMPLER_3D, // isampler3D 3733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INT_SAMPLER_CUBE_ARRAY, // isamplerCubeArray 3743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_UINT_SAMPLER_1D, // usampler1D 3753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_UINT_SAMPLER_2D, // usampler2D 3763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_UINT_SAMPLER_CUBE, // usamplerCube 3773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_UINT_SAMPLER_2D_ARRAY, // usampler2DArray 3783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_UINT_SAMPLER_3D, // usampler3D 3793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_UINT_SAMPLER_CUBE_ARRAY, // usamplerCubeArray 3803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_SAMPLER_2D_MULTISAMPLE, // sampler2DMS 3813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INT_SAMPLER_2D_MULTISAMPLE, // isampler2DMS 3823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_UINT_SAMPLER_2D_MULTISAMPLE, // usampler2DMS 3833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_IMAGE_2D, // image2D 3843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_IMAGE_CUBE, // imageCube 3853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_IMAGE_2D_ARRAY, // image2DArray 3863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_IMAGE_3D, // image3D 3873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_IMAGE_CUBE_ARRAY, // imageCubeArray 3883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INT_IMAGE_2D, // iimage2D 3893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INT_IMAGE_CUBE, // iimageCube 3903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INT_IMAGE_2D_ARRAY, // iimage2DArray 3913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INT_IMAGE_3D, // iimage3D 3923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INT_IMAGE_CUBE_ARRAY, // iimageCubeArray 3933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_UINT_IMAGE_2D, // uimage2D 3943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_UINT_IMAGE_CUBE, // uimageCube 3953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_UINT_IMAGE_2D_ARRAY, // uimage2DArray 3963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_UINT_IMAGE_3D, // uimage3D 3973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_UINT_IMAGE_CUBE_ARRAY, // uimageCubeArray 3983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_UINT_ATOMIC_COUNTER, // atomic_uint 3993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry }; 4003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 4013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_STATIC_ASSERT(DE_LENGTH_OF_ARRAY(s_scalarTypes) == TYPE_LAST); 4023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(deInBounds32((int)dataType, 0, DE_LENGTH_OF_ARRAY(s_scalarTypes))); 4033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return s_scalarTypes[(int)dataType]; 4043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 4053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 4063c827367444ee418f129b2c238299f49d3264554Jarkko PoyryDataType getDataTypeFloatScalars (DataType dataType) 4073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 4083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry const DataType s_floatTypes[] = 4093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 4103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // invalid 4113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT, // float 4123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT_VEC2, // vec2 4133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT_VEC3, // vec3 4143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT_VEC4, // vec4 4153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT_MAT2, // mat2 4163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT_MAT2X3, // mat2x3 4173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT_MAT2X4, // mat2x4 4183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT_MAT3X2, // mat3x2 4193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT_MAT3, // mat3 4203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT_MAT3X4, // mat3x4 4213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT_MAT4X2, // mat4x2 4223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT_MAT4X3, // mat4x3 4233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT_MAT4, // mat4 4243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT, // int 4253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT_VEC2, // ivec2 4263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT_VEC3, // ivec3 4273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT_VEC4, // ivec4 4283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT, // uint 4293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT_VEC2, // uvec2 4303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT_VEC3, // uvec3 4313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT_VEC4, // uvec4 4323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT, // bool 4333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT_VEC2, // bvec2 4343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT_VEC3, // bvec3 4353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_FLOAT_VEC4, // bvec4 4363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // sampler1D 4373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // sampler2D 4383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // samplerCube 4393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // sampler2DArray 4403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // sampler3D 4413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // samplerCubeArray 4423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // sampler1DShadow 4433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // sampler2DShadow 4443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // samplerCubeShadow 4453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // sampler2DArrayShadow 4463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // samplerCubeArrayShadow 4473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // isampler1D 4483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // isampler2D 4493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // isamplerCube 4503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // isampler2DArray 4513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // isampler3D 4523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // isamplerCubeArray 4533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // usampler1D 4543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // usampler2D 4553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // usamplerCube 4563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // usampler2DArray 4573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // usampler3D 4583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // usamplerCubeArray 4593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // sampler2DMS 4603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // isampler2DMS 4613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // usampler2DMS 4623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // image2D 4633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // imageCube 4643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // image2DArray 4653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // image3D 4663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // imageCubeArray 4673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // iimage2D 4683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // iimageCube 4693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // iimage2DArray 4703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // iimage3D 4713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // iimageCubeArray 4723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // uimage2D 4733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // uimageCube 4743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // uimage2DArray 4753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // uimage3D 4763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // uimageCubeArray 4773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry TYPE_INVALID, // atomic_uint 4783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry }; 4793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 4803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_STATIC_ASSERT(DE_LENGTH_OF_ARRAY(s_floatTypes) == TYPE_LAST); 4813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(deInBounds32((int)dataType, 0, DE_LENGTH_OF_ARRAY(s_floatTypes))); 4823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return s_floatTypes[(int)dataType]; 4833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 4843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 4853c827367444ee418f129b2c238299f49d3264554Jarkko PoyryDataType getDataTypeVector (DataType scalarType, int size) 4863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 4873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(deInRange32(size, 1, 4)); 4883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (scalarType) 4893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 4903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_FLOAT: 4913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_INT: 4923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_UINT: 4933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_BOOL: 4943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return (DataType)((int)scalarType + size - 1); 4953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 4963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return TYPE_INVALID; 4973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 4983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 4993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 5003c827367444ee418f129b2c238299f49d3264554Jarkko PoyryDataType getDataTypeFloatVec (int vecSize) 5013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 5023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return getDataTypeVector(TYPE_FLOAT, vecSize); 5033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 5043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 5053c827367444ee418f129b2c238299f49d3264554Jarkko PoyryDataType getDataTypeIntVec (int vecSize) 5063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 5073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return getDataTypeVector(TYPE_INT, vecSize); 5083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 5093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 5103c827367444ee418f129b2c238299f49d3264554Jarkko PoyryDataType getDataTypeUintVec (int vecSize) 5113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 5123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return getDataTypeVector(TYPE_UINT, vecSize); 5133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 5143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 5153c827367444ee418f129b2c238299f49d3264554Jarkko PoyryDataType getDataTypeBoolVec (int vecSize) 5163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 5173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return getDataTypeVector(TYPE_BOOL, vecSize); 5183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 5193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 5203c827367444ee418f129b2c238299f49d3264554Jarkko PoyryDataType getDataTypeMatrix (int numCols, int numRows) 5213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 5223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(de::inRange(numCols, 2, 4) && de::inRange(numRows, 2, 4)); 5233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return (DataType)((int)TYPE_FLOAT_MAT2 + (numCols-2)*3 + (numRows-2)); 5243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 5253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 5263c827367444ee418f129b2c238299f49d3264554Jarkko Poyryint getDataTypeMatrixNumRows (DataType dataType) 5273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 5283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (dataType) 5293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 5303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_FLOAT_MAT2: return 2; 5313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_FLOAT_MAT2X3: return 3; 5323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_FLOAT_MAT2X4: return 4; 5333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_FLOAT_MAT3X2: return 2; 5343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_FLOAT_MAT3: return 3; 5353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_FLOAT_MAT3X4: return 4; 5363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_FLOAT_MAT4X2: return 2; 5373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_FLOAT_MAT4X3: return 3; 5383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_FLOAT_MAT4: return 4; 5393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 5403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(false); 5413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return 0; 5423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 5433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 5443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 5453c827367444ee418f129b2c238299f49d3264554Jarkko Poyryint getDataTypeMatrixNumColumns (DataType dataType) 5463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 5473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (dataType) 5483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 5493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_FLOAT_MAT2: return 2; 5503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_FLOAT_MAT2X3: return 2; 5513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_FLOAT_MAT2X4: return 2; 5523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_FLOAT_MAT3X2: return 3; 5533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_FLOAT_MAT3: return 3; 5543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_FLOAT_MAT3X4: return 3; 5553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_FLOAT_MAT4X2: return 4; 5563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_FLOAT_MAT4X3: return 4; 5573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case TYPE_FLOAT_MAT4: return 4; 5583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 5593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(false); 5603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return 0; 5613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 5623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 5633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 5643c827367444ee418f129b2c238299f49d3264554Jarkko Poyryint getDataTypeNumLocations (DataType dataType) 5653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 5663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (isDataTypeScalarOrVector(dataType)) 5673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return 1; 5683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry else if (isDataTypeMatrix(dataType)) 5693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return getDataTypeMatrixNumColumns(dataType); 5703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 5713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(!"Illegal datatype."); 5723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return 0; 5733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 5743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 5753c827367444ee418f129b2c238299f49d3264554Jarkko Poyryint getDataTypeNumComponents (DataType dataType) 5763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 5773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry if (isDataTypeScalarOrVector(dataType)) 5783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return getDataTypeScalarSize(dataType); 5793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry else if (isDataTypeMatrix(dataType)) 5803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return getDataTypeMatrixNumRows(dataType); 5813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 5823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry DE_ASSERT(!"Illegal datatype."); 5833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return 0; 5843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 5853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 5863c827367444ee418f129b2c238299f49d3264554Jarkko PoyryDataType getDataTypeFromGLType (deUint32 glType) 5873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 5883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry switch (glType) 5893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 5903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_FLOAT: return TYPE_FLOAT; 5913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_FLOAT_VEC2: return TYPE_FLOAT_VEC2; 5923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_FLOAT_VEC3: return TYPE_FLOAT_VEC3; 5933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_FLOAT_VEC4: return TYPE_FLOAT_VEC4; 5943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 5953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_FLOAT_MAT2: return TYPE_FLOAT_MAT2; 5963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_FLOAT_MAT2x3: return TYPE_FLOAT_MAT2X3; 5973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_FLOAT_MAT2x4: return TYPE_FLOAT_MAT2X4; 5983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 5993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_FLOAT_MAT3x2: return TYPE_FLOAT_MAT3X2; 6003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_FLOAT_MAT3: return TYPE_FLOAT_MAT3; 6013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_FLOAT_MAT3x4: return TYPE_FLOAT_MAT3X4; 6023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 6033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_FLOAT_MAT4x2: return TYPE_FLOAT_MAT4X2; 6043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_FLOAT_MAT4x3: return TYPE_FLOAT_MAT4X3; 6053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_FLOAT_MAT4: return TYPE_FLOAT_MAT4; 6063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 6073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_INT: return TYPE_INT; 6083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_INT_VEC2: return TYPE_INT_VEC2; 6093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_INT_VEC3: return TYPE_INT_VEC3; 6103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_INT_VEC4: return TYPE_INT_VEC4; 6113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 6123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_INT: return TYPE_UINT; 6133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_INT_VEC2: return TYPE_UINT_VEC2; 6143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_INT_VEC3: return TYPE_UINT_VEC3; 6153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_INT_VEC4: return TYPE_UINT_VEC4; 6163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 6173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_BOOL: return TYPE_BOOL; 6183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_BOOL_VEC2: return TYPE_BOOL_VEC2; 6193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_BOOL_VEC3: return TYPE_BOOL_VEC3; 6203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_BOOL_VEC4: return TYPE_BOOL_VEC4; 6213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 6223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_SAMPLER_1D: return TYPE_SAMPLER_1D; 6233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_SAMPLER_2D: return TYPE_SAMPLER_2D; 6243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_SAMPLER_CUBE: return TYPE_SAMPLER_CUBE; 6253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_SAMPLER_2D_ARRAY: return TYPE_SAMPLER_2D_ARRAY; 6263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_SAMPLER_3D: return TYPE_SAMPLER_3D; 6273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_SAMPLER_CUBE_MAP_ARRAY: return TYPE_SAMPLER_CUBE_ARRAY; 6283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 6293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_SAMPLER_1D_SHADOW: return TYPE_SAMPLER_1D_SHADOW; 6303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_SAMPLER_2D_SHADOW: return TYPE_SAMPLER_2D_SHADOW; 6313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_SAMPLER_CUBE_SHADOW: return TYPE_SAMPLER_CUBE_SHADOW; 6323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_SAMPLER_2D_ARRAY_SHADOW: return TYPE_SAMPLER_2D_ARRAY_SHADOW; 6333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW: return TYPE_SAMPLER_CUBE_ARRAY_SHADOW; 6343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 6353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_INT_SAMPLER_1D: return TYPE_INT_SAMPLER_1D; 6363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_INT_SAMPLER_2D: return TYPE_INT_SAMPLER_2D; 6373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_INT_SAMPLER_CUBE: return TYPE_INT_SAMPLER_CUBE; 6383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_INT_SAMPLER_2D_ARRAY: return TYPE_INT_SAMPLER_2D_ARRAY; 6393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_INT_SAMPLER_3D: return TYPE_INT_SAMPLER_3D; 6403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_INT_SAMPLER_CUBE_MAP_ARRAY: return TYPE_INT_SAMPLER_CUBE_ARRAY; 6413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 6423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_INT_SAMPLER_1D: return TYPE_UINT_SAMPLER_1D; 6433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_INT_SAMPLER_2D: return TYPE_UINT_SAMPLER_2D; 6443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_INT_SAMPLER_CUBE: return TYPE_UINT_SAMPLER_CUBE; 6453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_INT_SAMPLER_2D_ARRAY: return TYPE_UINT_SAMPLER_2D_ARRAY; 6463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_INT_SAMPLER_3D: return TYPE_UINT_SAMPLER_3D; 6473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY: return TYPE_UINT_SAMPLER_CUBE_ARRAY; 6483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 6493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_SAMPLER_2D_MULTISAMPLE: return TYPE_SAMPLER_2D_MULTISAMPLE; 6503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_INT_SAMPLER_2D_MULTISAMPLE: return TYPE_INT_SAMPLER_2D_MULTISAMPLE; 6513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE: return TYPE_UINT_SAMPLER_2D_MULTISAMPLE; 6523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 6533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_IMAGE_2D: return TYPE_IMAGE_2D; 6543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_IMAGE_CUBE: return TYPE_IMAGE_CUBE; 6553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_IMAGE_2D_ARRAY: return TYPE_IMAGE_2D_ARRAY; 6563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_IMAGE_3D: return TYPE_IMAGE_3D; 6573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_INT_IMAGE_2D: return TYPE_INT_IMAGE_2D; 6583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_INT_IMAGE_CUBE: return TYPE_INT_IMAGE_CUBE; 6593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_INT_IMAGE_2D_ARRAY: return TYPE_INT_IMAGE_2D_ARRAY; 6603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_INT_IMAGE_3D: return TYPE_INT_IMAGE_3D; 6613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_INT_IMAGE_2D: return TYPE_UINT_IMAGE_2D; 6623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_INT_IMAGE_CUBE: return TYPE_UINT_IMAGE_CUBE; 6633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_INT_IMAGE_2D_ARRAY: return TYPE_UINT_IMAGE_2D_ARRAY; 6643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_INT_IMAGE_3D: return TYPE_UINT_IMAGE_3D; 6653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 6663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry case GL_UNSIGNED_INT_ATOMIC_COUNTER: return TYPE_UINT_ATOMIC_COUNTER; 6673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 6683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry default: 6693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return TYPE_LAST; 6703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 6713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 6723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 6733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // glu 674