18a94683196406b83b14218d1beef66067f126a16keunyoung/* 28a94683196406b83b14218d1beef66067f126a16keunyoung* Copyright (C) 2011 The Android Open Source Project 38a94683196406b83b14218d1beef66067f126a16keunyoung* 48a94683196406b83b14218d1beef66067f126a16keunyoung* Licensed under the Apache License, Version 2.0 (the "License"); 58a94683196406b83b14218d1beef66067f126a16keunyoung* you may not use this file except in compliance with the License. 68a94683196406b83b14218d1beef66067f126a16keunyoung* You may obtain a copy of the License at 78a94683196406b83b14218d1beef66067f126a16keunyoung* 88a94683196406b83b14218d1beef66067f126a16keunyoung* http://www.apache.org/licenses/LICENSE-2.0 98a94683196406b83b14218d1beef66067f126a16keunyoung* 108a94683196406b83b14218d1beef66067f126a16keunyoung* Unless required by applicable law or agreed to in writing, software 118a94683196406b83b14218d1beef66067f126a16keunyoung* distributed under the License is distributed on an "AS IS" BASIS, 128a94683196406b83b14218d1beef66067f126a16keunyoung* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138a94683196406b83b14218d1beef66067f126a16keunyoung* See the License for the specific language governing permissions and 148a94683196406b83b14218d1beef66067f126a16keunyoung* limitations under the License. 158a94683196406b83b14218d1beef66067f126a16keunyoung*/ 168a94683196406b83b14218d1beef66067f126a16keunyoung#include "glUtils.h" 178a94683196406b83b14218d1beef66067f126a16keunyoung#include <string.h> 188a94683196406b83b14218d1beef66067f126a16keunyoung#include "ErrorLog.h" 198a94683196406b83b14218d1beef66067f126a16keunyoung#include <IOStream.h> 208a94683196406b83b14218d1beef66067f126a16keunyoung 218a94683196406b83b14218d1beef66067f126a16keunyoungsize_t glSizeof(GLenum type) 228a94683196406b83b14218d1beef66067f126a16keunyoung{ 238a94683196406b83b14218d1beef66067f126a16keunyoung size_t retval = 0; 248a94683196406b83b14218d1beef66067f126a16keunyoung switch(type) { 258a94683196406b83b14218d1beef66067f126a16keunyoung case GL_BYTE: 268a94683196406b83b14218d1beef66067f126a16keunyoung case GL_UNSIGNED_BYTE: 278a94683196406b83b14218d1beef66067f126a16keunyoung retval = 1; 288a94683196406b83b14218d1beef66067f126a16keunyoung break; 298a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SHORT: 308a94683196406b83b14218d1beef66067f126a16keunyoung case GL_UNSIGNED_SHORT: 318a94683196406b83b14218d1beef66067f126a16keunyoung case GL_HALF_FLOAT_OES: 328a94683196406b83b14218d1beef66067f126a16keunyoung retval = 2; 338a94683196406b83b14218d1beef66067f126a16keunyoung break; 348a94683196406b83b14218d1beef66067f126a16keunyoung case GL_INT: 358a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FLOAT: 368a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FIXED: 378a94683196406b83b14218d1beef66067f126a16keunyoung case GL_BOOL: 388a94683196406b83b14218d1beef66067f126a16keunyoung retval = 4; 398a94683196406b83b14218d1beef66067f126a16keunyoung break; 408a94683196406b83b14218d1beef66067f126a16keunyoung#ifdef GL_DOUBLE 418a94683196406b83b14218d1beef66067f126a16keunyoung case GL_DOUBLE: 428a94683196406b83b14218d1beef66067f126a16keunyoung retval = 8; 438a94683196406b83b14218d1beef66067f126a16keunyoung break; 448a94683196406b83b14218d1beef66067f126a16keunyoung#endif 458a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FLOAT_VEC2: 468a94683196406b83b14218d1beef66067f126a16keunyoung case GL_INT_VEC2: 478a94683196406b83b14218d1beef66067f126a16keunyoung case GL_BOOL_VEC2: 488a94683196406b83b14218d1beef66067f126a16keunyoung retval = 8; 498a94683196406b83b14218d1beef66067f126a16keunyoung break; 508a94683196406b83b14218d1beef66067f126a16keunyoung case GL_INT_VEC3: 518a94683196406b83b14218d1beef66067f126a16keunyoung case GL_BOOL_VEC3: 528a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FLOAT_VEC3: 538a94683196406b83b14218d1beef66067f126a16keunyoung retval = 12; 548a94683196406b83b14218d1beef66067f126a16keunyoung break; 558a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FLOAT_VEC4: 568a94683196406b83b14218d1beef66067f126a16keunyoung case GL_BOOL_VEC4: 578a94683196406b83b14218d1beef66067f126a16keunyoung case GL_INT_VEC4: 588a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FLOAT_MAT2: 598a94683196406b83b14218d1beef66067f126a16keunyoung retval = 16; 608a94683196406b83b14218d1beef66067f126a16keunyoung break; 618a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FLOAT_MAT3: 628a94683196406b83b14218d1beef66067f126a16keunyoung retval = 36; 638a94683196406b83b14218d1beef66067f126a16keunyoung break; 648a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FLOAT_MAT4: 658a94683196406b83b14218d1beef66067f126a16keunyoung retval = 64; 668a94683196406b83b14218d1beef66067f126a16keunyoung break; 678a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SAMPLER_2D: 688a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SAMPLER_CUBE: 698a94683196406b83b14218d1beef66067f126a16keunyoung retval = 4; 708a94683196406b83b14218d1beef66067f126a16keunyoung break; 718a94683196406b83b14218d1beef66067f126a16keunyoung default: 728a94683196406b83b14218d1beef66067f126a16keunyoung ERR("**** ERROR unknown type 0x%x (%s,%d)\n", type, __FUNCTION__,__LINE__); 738a94683196406b83b14218d1beef66067f126a16keunyoung } 748a94683196406b83b14218d1beef66067f126a16keunyoung return retval; 758a94683196406b83b14218d1beef66067f126a16keunyoung 768a94683196406b83b14218d1beef66067f126a16keunyoung} 778a94683196406b83b14218d1beef66067f126a16keunyoung 788a94683196406b83b14218d1beef66067f126a16keunyoungsize_t glUtilsParamSize(GLenum param) 798a94683196406b83b14218d1beef66067f126a16keunyoung{ 808a94683196406b83b14218d1beef66067f126a16keunyoung size_t s = 0; 818a94683196406b83b14218d1beef66067f126a16keunyoung 828a94683196406b83b14218d1beef66067f126a16keunyoung switch(param) 838a94683196406b83b14218d1beef66067f126a16keunyoung { 848a94683196406b83b14218d1beef66067f126a16keunyoung case GL_DEPTH_TEST: 858a94683196406b83b14218d1beef66067f126a16keunyoung case GL_DEPTH_FUNC: 868a94683196406b83b14218d1beef66067f126a16keunyoung case GL_DEPTH_BITS: 878a94683196406b83b14218d1beef66067f126a16keunyoung case GL_MAX_CLIP_PLANES: 888a94683196406b83b14218d1beef66067f126a16keunyoung case GL_GREEN_BITS: 898a94683196406b83b14218d1beef66067f126a16keunyoung case GL_MAX_MODELVIEW_STACK_DEPTH: 908a94683196406b83b14218d1beef66067f126a16keunyoung case GL_MAX_PROJECTION_STACK_DEPTH: 918a94683196406b83b14218d1beef66067f126a16keunyoung case GL_MAX_TEXTURE_STACK_DEPTH: 928a94683196406b83b14218d1beef66067f126a16keunyoung case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES: 938a94683196406b83b14218d1beef66067f126a16keunyoung case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES: 948a94683196406b83b14218d1beef66067f126a16keunyoung case GL_NUM_COMPRESSED_TEXTURE_FORMATS: 958a94683196406b83b14218d1beef66067f126a16keunyoung case GL_MAX_TEXTURE_SIZE: 968a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_GEN_MODE_OES: 978a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_ENV_MODE: 988a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FOG_MODE: 998a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FOG_DENSITY: 1008a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FOG_START: 1018a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FOG_END: 1028a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SPOT_EXPONENT: 1038a94683196406b83b14218d1beef66067f126a16keunyoung case GL_CONSTANT_ATTENUATION: 1048a94683196406b83b14218d1beef66067f126a16keunyoung case GL_LINEAR_ATTENUATION: 1058a94683196406b83b14218d1beef66067f126a16keunyoung case GL_QUADRATIC_ATTENUATION: 1068a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SHININESS: 1078a94683196406b83b14218d1beef66067f126a16keunyoung case GL_LIGHT_MODEL_TWO_SIDE: 1088a94683196406b83b14218d1beef66067f126a16keunyoung case GL_POINT_SIZE: 1098a94683196406b83b14218d1beef66067f126a16keunyoung case GL_POINT_SIZE_MIN: 1108a94683196406b83b14218d1beef66067f126a16keunyoung case GL_POINT_SIZE_MAX: 1118a94683196406b83b14218d1beef66067f126a16keunyoung case GL_POINT_FADE_THRESHOLD_SIZE: 1128a94683196406b83b14218d1beef66067f126a16keunyoung case GL_CULL_FACE_MODE: 1138a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FRONT_FACE: 1148a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SHADE_MODEL: 1158a94683196406b83b14218d1beef66067f126a16keunyoung case GL_DEPTH_WRITEMASK: 1168a94683196406b83b14218d1beef66067f126a16keunyoung case GL_DEPTH_CLEAR_VALUE: 1178a94683196406b83b14218d1beef66067f126a16keunyoung case GL_STENCIL_FAIL: 1188a94683196406b83b14218d1beef66067f126a16keunyoung case GL_STENCIL_PASS_DEPTH_FAIL: 1198a94683196406b83b14218d1beef66067f126a16keunyoung case GL_STENCIL_PASS_DEPTH_PASS: 1208a94683196406b83b14218d1beef66067f126a16keunyoung case GL_STENCIL_REF: 1218a94683196406b83b14218d1beef66067f126a16keunyoung case GL_STENCIL_WRITEMASK: 1228a94683196406b83b14218d1beef66067f126a16keunyoung case GL_MATRIX_MODE: 1238a94683196406b83b14218d1beef66067f126a16keunyoung case GL_MODELVIEW_STACK_DEPTH: 1248a94683196406b83b14218d1beef66067f126a16keunyoung case GL_PROJECTION_STACK_DEPTH: 1258a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_STACK_DEPTH: 1268a94683196406b83b14218d1beef66067f126a16keunyoung case GL_ALPHA_TEST_FUNC: 1278a94683196406b83b14218d1beef66067f126a16keunyoung case GL_ALPHA_TEST_REF: 1288a94683196406b83b14218d1beef66067f126a16keunyoung case GL_ALPHA_TEST: 1298a94683196406b83b14218d1beef66067f126a16keunyoung case GL_BLEND_DST: 1308a94683196406b83b14218d1beef66067f126a16keunyoung case GL_BLEND_SRC: 1318a94683196406b83b14218d1beef66067f126a16keunyoung case GL_BLEND: 1328a94683196406b83b14218d1beef66067f126a16keunyoung case GL_LOGIC_OP_MODE: 1338a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SCISSOR_TEST: 1348a94683196406b83b14218d1beef66067f126a16keunyoung case GL_MAX_TEXTURE_UNITS: 1358a94683196406b83b14218d1beef66067f126a16keunyoung case GL_ACTIVE_TEXTURE: 1368a94683196406b83b14218d1beef66067f126a16keunyoung case GL_ALPHA_BITS: 1378a94683196406b83b14218d1beef66067f126a16keunyoung case GL_ARRAY_BUFFER_BINDING: 1388a94683196406b83b14218d1beef66067f126a16keunyoung case GL_BLUE_BITS: 1398a94683196406b83b14218d1beef66067f126a16keunyoung case GL_CLIENT_ACTIVE_TEXTURE: 1408a94683196406b83b14218d1beef66067f126a16keunyoung case GL_CLIP_PLANE0: 1418a94683196406b83b14218d1beef66067f126a16keunyoung case GL_CLIP_PLANE1: 1428a94683196406b83b14218d1beef66067f126a16keunyoung case GL_CLIP_PLANE2: 1438a94683196406b83b14218d1beef66067f126a16keunyoung case GL_CLIP_PLANE3: 1448a94683196406b83b14218d1beef66067f126a16keunyoung case GL_CLIP_PLANE4: 1458a94683196406b83b14218d1beef66067f126a16keunyoung case GL_CLIP_PLANE5: 1468a94683196406b83b14218d1beef66067f126a16keunyoung case GL_COLOR_ARRAY: 1478a94683196406b83b14218d1beef66067f126a16keunyoung case GL_COLOR_ARRAY_BUFFER_BINDING: 1488a94683196406b83b14218d1beef66067f126a16keunyoung case GL_COLOR_ARRAY_SIZE: 1498a94683196406b83b14218d1beef66067f126a16keunyoung case GL_COLOR_ARRAY_STRIDE: 1508a94683196406b83b14218d1beef66067f126a16keunyoung case GL_COLOR_ARRAY_TYPE: 1518a94683196406b83b14218d1beef66067f126a16keunyoung case GL_COLOR_LOGIC_OP: 1528a94683196406b83b14218d1beef66067f126a16keunyoung case GL_COLOR_MATERIAL: 1538a94683196406b83b14218d1beef66067f126a16keunyoung case GL_PACK_ALIGNMENT: 1548a94683196406b83b14218d1beef66067f126a16keunyoung case GL_PERSPECTIVE_CORRECTION_HINT: 1558a94683196406b83b14218d1beef66067f126a16keunyoung case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES: 1568a94683196406b83b14218d1beef66067f126a16keunyoung case GL_POINT_SIZE_ARRAY_STRIDE_OES: 1578a94683196406b83b14218d1beef66067f126a16keunyoung case GL_POINT_SIZE_ARRAY_TYPE_OES: 1588a94683196406b83b14218d1beef66067f126a16keunyoung case GL_POINT_SMOOTH: 1598a94683196406b83b14218d1beef66067f126a16keunyoung case GL_POINT_SMOOTH_HINT: 1608a94683196406b83b14218d1beef66067f126a16keunyoung case GL_POINT_SPRITE_OES: 1618a94683196406b83b14218d1beef66067f126a16keunyoung case GL_COORD_REPLACE_OES: 1628a94683196406b83b14218d1beef66067f126a16keunyoung case GL_COMBINE_ALPHA: 1638a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SRC0_RGB: 1648a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SRC1_RGB: 1658a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SRC2_RGB: 1668a94683196406b83b14218d1beef66067f126a16keunyoung case GL_OPERAND0_RGB: 1678a94683196406b83b14218d1beef66067f126a16keunyoung case GL_OPERAND1_RGB: 1688a94683196406b83b14218d1beef66067f126a16keunyoung case GL_OPERAND2_RGB: 1698a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SRC0_ALPHA: 1708a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SRC1_ALPHA: 1718a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SRC2_ALPHA: 1728a94683196406b83b14218d1beef66067f126a16keunyoung case GL_OPERAND0_ALPHA: 1738a94683196406b83b14218d1beef66067f126a16keunyoung case GL_OPERAND1_ALPHA: 1748a94683196406b83b14218d1beef66067f126a16keunyoung case GL_OPERAND2_ALPHA: 1758a94683196406b83b14218d1beef66067f126a16keunyoung case GL_RGB_SCALE: 1768a94683196406b83b14218d1beef66067f126a16keunyoung case GL_ALPHA_SCALE: 1778a94683196406b83b14218d1beef66067f126a16keunyoung case GL_COMBINE_RGB: 1788a94683196406b83b14218d1beef66067f126a16keunyoung case GL_POLYGON_OFFSET_FACTOR: 1798a94683196406b83b14218d1beef66067f126a16keunyoung case GL_POLYGON_OFFSET_FILL: 1808a94683196406b83b14218d1beef66067f126a16keunyoung case GL_POLYGON_OFFSET_UNITS: 1818a94683196406b83b14218d1beef66067f126a16keunyoung case GL_RED_BITS: 1828a94683196406b83b14218d1beef66067f126a16keunyoung case GL_RESCALE_NORMAL: 1838a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SAMPLE_ALPHA_TO_COVERAGE: 1848a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SAMPLE_ALPHA_TO_ONE: 1858a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SAMPLE_BUFFERS: 1868a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SAMPLE_COVERAGE: 1878a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SAMPLE_COVERAGE_INVERT: 1888a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SAMPLE_COVERAGE_VALUE: 1898a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SAMPLES: 1908a94683196406b83b14218d1beef66067f126a16keunyoung case GL_STENCIL_BITS: 1918a94683196406b83b14218d1beef66067f126a16keunyoung case GL_STENCIL_CLEAR_VALUE: 1928a94683196406b83b14218d1beef66067f126a16keunyoung case GL_STENCIL_FUNC: 1938a94683196406b83b14218d1beef66067f126a16keunyoung case GL_STENCIL_TEST: 1948a94683196406b83b14218d1beef66067f126a16keunyoung case GL_STENCIL_VALUE_MASK: 1958a94683196406b83b14218d1beef66067f126a16keunyoung case GL_STENCIL_BACK_FUNC: 1968a94683196406b83b14218d1beef66067f126a16keunyoung case GL_STENCIL_BACK_VALUE_MASK: 1978a94683196406b83b14218d1beef66067f126a16keunyoung case GL_STENCIL_BACK_REF: 1988a94683196406b83b14218d1beef66067f126a16keunyoung case GL_STENCIL_BACK_FAIL: 1998a94683196406b83b14218d1beef66067f126a16keunyoung case GL_STENCIL_BACK_PASS_DEPTH_FAIL: 2008a94683196406b83b14218d1beef66067f126a16keunyoung case GL_STENCIL_BACK_PASS_DEPTH_PASS: 2018a94683196406b83b14218d1beef66067f126a16keunyoung case GL_STENCIL_BACK_WRITEMASK: 2028a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_2D: 2038a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_BINDING_2D: 2048a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_BINDING_CUBE_MAP: 2058a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_BINDING_EXTERNAL_OES: 2068a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_COORD_ARRAY: 2078a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING: 2088a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_COORD_ARRAY_SIZE: 2098a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_COORD_ARRAY_STRIDE: 2108a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_COORD_ARRAY_TYPE: 2118a94683196406b83b14218d1beef66067f126a16keunyoung case GL_UNPACK_ALIGNMENT: 2128a94683196406b83b14218d1beef66067f126a16keunyoung case GL_VERTEX_ARRAY: 2138a94683196406b83b14218d1beef66067f126a16keunyoung case GL_VERTEX_ARRAY_BUFFER_BINDING: 2148a94683196406b83b14218d1beef66067f126a16keunyoung case GL_VERTEX_ARRAY_SIZE: 2158a94683196406b83b14218d1beef66067f126a16keunyoung case GL_VERTEX_ARRAY_STRIDE: 2168a94683196406b83b14218d1beef66067f126a16keunyoung case GL_VERTEX_ARRAY_TYPE: 2178a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SPOT_CUTOFF: 2188a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_MIN_FILTER: 2198a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_MAG_FILTER: 2208a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_WRAP_S: 2218a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_WRAP_T: 2228a94683196406b83b14218d1beef66067f126a16keunyoung case GL_GENERATE_MIPMAP: 2238a94683196406b83b14218d1beef66067f126a16keunyoung case GL_GENERATE_MIPMAP_HINT: 2248a94683196406b83b14218d1beef66067f126a16keunyoung case GL_RENDERBUFFER_WIDTH_OES: 2258a94683196406b83b14218d1beef66067f126a16keunyoung case GL_RENDERBUFFER_HEIGHT_OES: 2268a94683196406b83b14218d1beef66067f126a16keunyoung case GL_RENDERBUFFER_INTERNAL_FORMAT_OES: 2278a94683196406b83b14218d1beef66067f126a16keunyoung case GL_RENDERBUFFER_RED_SIZE_OES: 2288a94683196406b83b14218d1beef66067f126a16keunyoung case GL_RENDERBUFFER_GREEN_SIZE_OES: 2298a94683196406b83b14218d1beef66067f126a16keunyoung case GL_RENDERBUFFER_BLUE_SIZE_OES: 2308a94683196406b83b14218d1beef66067f126a16keunyoung case GL_RENDERBUFFER_ALPHA_SIZE_OES: 2318a94683196406b83b14218d1beef66067f126a16keunyoung case GL_RENDERBUFFER_DEPTH_SIZE_OES: 2328a94683196406b83b14218d1beef66067f126a16keunyoung case GL_RENDERBUFFER_STENCIL_SIZE_OES: 2338a94683196406b83b14218d1beef66067f126a16keunyoung case GL_RENDERBUFFER_BINDING: 2348a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FRAMEBUFFER_BINDING: 2358a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES: 2368a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES: 2378a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES: 2388a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES: 2398a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FENCE_STATUS_NV: 2408a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FENCE_CONDITION_NV: 2418a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_WIDTH_QCOM: 2428a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_HEIGHT_QCOM: 2438a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_DEPTH_QCOM: 2448a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_INTERNAL_FORMAT_QCOM: 2458a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_FORMAT_QCOM: 2468a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_TYPE_QCOM: 2478a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_IMAGE_VALID_QCOM: 2488a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_NUM_LEVELS_QCOM: 2498a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_TARGET_QCOM: 2508a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_OBJECT_VALID_QCOM: 2518a94683196406b83b14218d1beef66067f126a16keunyoung case GL_BLEND_EQUATION_RGB_OES: 2528a94683196406b83b14218d1beef66067f126a16keunyoung case GL_BLEND_EQUATION_ALPHA_OES: 2538a94683196406b83b14218d1beef66067f126a16keunyoung case GL_BLEND_DST_RGB_OES: 2548a94683196406b83b14218d1beef66067f126a16keunyoung case GL_BLEND_SRC_RGB_OES: 2558a94683196406b83b14218d1beef66067f126a16keunyoung case GL_BLEND_DST_ALPHA_OES: 2568a94683196406b83b14218d1beef66067f126a16keunyoung case GL_BLEND_SRC_ALPHA_OES: 2578a94683196406b83b14218d1beef66067f126a16keunyoung case GL_MAX_LIGHTS: 2588a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SHADER_TYPE: 2598a94683196406b83b14218d1beef66067f126a16keunyoung case GL_DELETE_STATUS: 2608a94683196406b83b14218d1beef66067f126a16keunyoung case GL_COMPILE_STATUS: 2618a94683196406b83b14218d1beef66067f126a16keunyoung case GL_INFO_LOG_LENGTH: 2628a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SHADER_SOURCE_LENGTH: 2638a94683196406b83b14218d1beef66067f126a16keunyoung case GL_CURRENT_PROGRAM: 2648a94683196406b83b14218d1beef66067f126a16keunyoung case GL_LINK_STATUS: 2658a94683196406b83b14218d1beef66067f126a16keunyoung case GL_VALIDATE_STATUS: 2668a94683196406b83b14218d1beef66067f126a16keunyoung case GL_ATTACHED_SHADERS: 2678a94683196406b83b14218d1beef66067f126a16keunyoung case GL_ACTIVE_UNIFORMS: 2688a94683196406b83b14218d1beef66067f126a16keunyoung case GL_ACTIVE_ATTRIBUTES: 2698a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SUBPIXEL_BITS: 2708a94683196406b83b14218d1beef66067f126a16keunyoung case GL_MAX_CUBE_MAP_TEXTURE_SIZE: 2718a94683196406b83b14218d1beef66067f126a16keunyoung case GL_NUM_SHADER_BINARY_FORMATS: 2728a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SHADER_COMPILER: 2738a94683196406b83b14218d1beef66067f126a16keunyoung case GL_MAX_VERTEX_ATTRIBS: 2748a94683196406b83b14218d1beef66067f126a16keunyoung case GL_MAX_VERTEX_UNIFORM_VECTORS: 2758a94683196406b83b14218d1beef66067f126a16keunyoung case GL_MAX_VARYING_VECTORS: 2768a94683196406b83b14218d1beef66067f126a16keunyoung case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: 2778a94683196406b83b14218d1beef66067f126a16keunyoung case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: 2788a94683196406b83b14218d1beef66067f126a16keunyoung case GL_MAX_FRAGMENT_UNIFORM_VECTORS: 2798a94683196406b83b14218d1beef66067f126a16keunyoung case GL_MAX_RENDERBUFFER_SIZE: 2808a94683196406b83b14218d1beef66067f126a16keunyoung case GL_MAX_TEXTURE_IMAGE_UNITS: 2818a94683196406b83b14218d1beef66067f126a16keunyoung case GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES: 2828a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES: 2838a94683196406b83b14218d1beef66067f126a16keunyoung case GL_LINE_WIDTH: 2848a94683196406b83b14218d1beef66067f126a16keunyoung s = 1; 2858a94683196406b83b14218d1beef66067f126a16keunyoung break; 2868a94683196406b83b14218d1beef66067f126a16keunyoung case GL_ALIASED_LINE_WIDTH_RANGE: 2878a94683196406b83b14218d1beef66067f126a16keunyoung case GL_ALIASED_POINT_SIZE_RANGE: 2888a94683196406b83b14218d1beef66067f126a16keunyoung case GL_DEPTH_RANGE: 2898a94683196406b83b14218d1beef66067f126a16keunyoung case GL_MAX_VIEWPORT_DIMS: 2908a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SMOOTH_POINT_SIZE_RANGE: 2918a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SMOOTH_LINE_WIDTH_RANGE: 2928a94683196406b83b14218d1beef66067f126a16keunyoung s= 2; 2938a94683196406b83b14218d1beef66067f126a16keunyoung break; 2948a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SPOT_DIRECTION: 2958a94683196406b83b14218d1beef66067f126a16keunyoung case GL_POINT_DISTANCE_ATTENUATION: 2968a94683196406b83b14218d1beef66067f126a16keunyoung case GL_CURRENT_NORMAL: 2978a94683196406b83b14218d1beef66067f126a16keunyoung s = 3; 2988a94683196406b83b14218d1beef66067f126a16keunyoung break; 2998a94683196406b83b14218d1beef66067f126a16keunyoung case GL_CURRENT_VERTEX_ATTRIB: 3008a94683196406b83b14218d1beef66067f126a16keunyoung case GL_CURRENT_TEXTURE_COORDS: 3018a94683196406b83b14218d1beef66067f126a16keunyoung case GL_CURRENT_COLOR: 3028a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FOG_COLOR: 3038a94683196406b83b14218d1beef66067f126a16keunyoung case GL_AMBIENT: 3048a94683196406b83b14218d1beef66067f126a16keunyoung case GL_DIFFUSE: 3058a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SPECULAR: 3068a94683196406b83b14218d1beef66067f126a16keunyoung case GL_EMISSION: 3078a94683196406b83b14218d1beef66067f126a16keunyoung case GL_POSITION: 3088a94683196406b83b14218d1beef66067f126a16keunyoung case GL_LIGHT_MODEL_AMBIENT: 3098a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_ENV_COLOR: 3108a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SCISSOR_BOX: 3118a94683196406b83b14218d1beef66067f126a16keunyoung case GL_VIEWPORT: 3128a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_CROP_RECT_OES: 3138a94683196406b83b14218d1beef66067f126a16keunyoung case GL_COLOR_CLEAR_VALUE: 3148a94683196406b83b14218d1beef66067f126a16keunyoung case GL_COLOR_WRITEMASK: 3158a94683196406b83b14218d1beef66067f126a16keunyoung case GL_AMBIENT_AND_DIFFUSE: 3168a94683196406b83b14218d1beef66067f126a16keunyoung case GL_BLEND_COLOR: 3178a94683196406b83b14218d1beef66067f126a16keunyoung s = 4; 3188a94683196406b83b14218d1beef66067f126a16keunyoung break; 3198a94683196406b83b14218d1beef66067f126a16keunyoung case GL_MODELVIEW_MATRIX: 3208a94683196406b83b14218d1beef66067f126a16keunyoung case GL_PROJECTION_MATRIX: 3218a94683196406b83b14218d1beef66067f126a16keunyoung case GL_TEXTURE_MATRIX: 3228a94683196406b83b14218d1beef66067f126a16keunyoung s = 16; 3238a94683196406b83b14218d1beef66067f126a16keunyoung break; 3248a94683196406b83b14218d1beef66067f126a16keunyoung default: 3258a94683196406b83b14218d1beef66067f126a16keunyoung ERR("glUtilsParamSize: unknow param 0x%08x\n", param); 3268a94683196406b83b14218d1beef66067f126a16keunyoung s = 1; // assume 1 3278a94683196406b83b14218d1beef66067f126a16keunyoung } 3288a94683196406b83b14218d1beef66067f126a16keunyoung return s; 3298a94683196406b83b14218d1beef66067f126a16keunyoung} 3308a94683196406b83b14218d1beef66067f126a16keunyoung 3318a94683196406b83b14218d1beef66067f126a16keunyoungvoid glUtilsPackPointerData(unsigned char *dst, unsigned char *src, 3328a94683196406b83b14218d1beef66067f126a16keunyoung int size, GLenum type, unsigned int stride, 3338a94683196406b83b14218d1beef66067f126a16keunyoung unsigned int datalen) 3348a94683196406b83b14218d1beef66067f126a16keunyoung{ 3358a94683196406b83b14218d1beef66067f126a16keunyoung unsigned int vsize = size * glSizeof(type); 3368a94683196406b83b14218d1beef66067f126a16keunyoung if (stride == 0) stride = vsize; 3378a94683196406b83b14218d1beef66067f126a16keunyoung 3388a94683196406b83b14218d1beef66067f126a16keunyoung if (stride == vsize) { 3398a94683196406b83b14218d1beef66067f126a16keunyoung memcpy(dst, src, datalen); 3408a94683196406b83b14218d1beef66067f126a16keunyoung } else { 3418a94683196406b83b14218d1beef66067f126a16keunyoung for (unsigned int i = 0; i < datalen; i += vsize) { 3428a94683196406b83b14218d1beef66067f126a16keunyoung memcpy(dst, src, vsize); 3438a94683196406b83b14218d1beef66067f126a16keunyoung dst += vsize; 3448a94683196406b83b14218d1beef66067f126a16keunyoung src += stride; 3458a94683196406b83b14218d1beef66067f126a16keunyoung } 3468a94683196406b83b14218d1beef66067f126a16keunyoung } 3478a94683196406b83b14218d1beef66067f126a16keunyoung} 3488a94683196406b83b14218d1beef66067f126a16keunyoung 3498a94683196406b83b14218d1beef66067f126a16keunyoungvoid glUtilsWritePackPointerData(void* _stream, unsigned char *src, 3508a94683196406b83b14218d1beef66067f126a16keunyoung int size, GLenum type, unsigned int stride, 3518a94683196406b83b14218d1beef66067f126a16keunyoung unsigned int datalen) 3528a94683196406b83b14218d1beef66067f126a16keunyoung{ 3538a94683196406b83b14218d1beef66067f126a16keunyoung IOStream* stream = reinterpret_cast<IOStream*>(_stream); 3548a94683196406b83b14218d1beef66067f126a16keunyoung 3558a94683196406b83b14218d1beef66067f126a16keunyoung unsigned int vsize = size * glSizeof(type); 3568a94683196406b83b14218d1beef66067f126a16keunyoung if (stride == 0) stride = vsize; 3578a94683196406b83b14218d1beef66067f126a16keunyoung 3588a94683196406b83b14218d1beef66067f126a16keunyoung if (stride == vsize) { 3598a94683196406b83b14218d1beef66067f126a16keunyoung stream->writeFully(src, datalen); 3608a94683196406b83b14218d1beef66067f126a16keunyoung } else { 3618a94683196406b83b14218d1beef66067f126a16keunyoung for (unsigned int i = 0; i < datalen; i += vsize) { 3628a94683196406b83b14218d1beef66067f126a16keunyoung stream->writeFully(src, (size_t)vsize); 3638a94683196406b83b14218d1beef66067f126a16keunyoung src += stride; 3648a94683196406b83b14218d1beef66067f126a16keunyoung } 3658a94683196406b83b14218d1beef66067f126a16keunyoung } 3668a94683196406b83b14218d1beef66067f126a16keunyoung} 3678a94683196406b83b14218d1beef66067f126a16keunyoung 3688a94683196406b83b14218d1beef66067f126a16keunyoungint glUtilsPixelBitSize(GLenum format, GLenum type) 3698a94683196406b83b14218d1beef66067f126a16keunyoung{ 3708a94683196406b83b14218d1beef66067f126a16keunyoung int components = 0; 3718a94683196406b83b14218d1beef66067f126a16keunyoung int componentsize = 0; 3728a94683196406b83b14218d1beef66067f126a16keunyoung int pixelsize = 0; 3738a94683196406b83b14218d1beef66067f126a16keunyoung switch(type) { 3748a94683196406b83b14218d1beef66067f126a16keunyoung case GL_BYTE: 3758a94683196406b83b14218d1beef66067f126a16keunyoung case GL_UNSIGNED_BYTE: 3768a94683196406b83b14218d1beef66067f126a16keunyoung componentsize = 8; 3778a94683196406b83b14218d1beef66067f126a16keunyoung break; 3788a94683196406b83b14218d1beef66067f126a16keunyoung case GL_SHORT: 3798a94683196406b83b14218d1beef66067f126a16keunyoung case GL_UNSIGNED_SHORT: 3808a94683196406b83b14218d1beef66067f126a16keunyoung case GL_UNSIGNED_SHORT_5_6_5: 3818a94683196406b83b14218d1beef66067f126a16keunyoung case GL_UNSIGNED_SHORT_4_4_4_4: 3828a94683196406b83b14218d1beef66067f126a16keunyoung case GL_UNSIGNED_SHORT_5_5_5_1: 3838a94683196406b83b14218d1beef66067f126a16keunyoung case GL_RGB565_OES: 3848a94683196406b83b14218d1beef66067f126a16keunyoung case GL_RGB5_A1_OES: 3858a94683196406b83b14218d1beef66067f126a16keunyoung case GL_RGBA4_OES: 3868a94683196406b83b14218d1beef66067f126a16keunyoung pixelsize = 16; 3878a94683196406b83b14218d1beef66067f126a16keunyoung break; 3888a94683196406b83b14218d1beef66067f126a16keunyoung case GL_INT: 3898a94683196406b83b14218d1beef66067f126a16keunyoung case GL_UNSIGNED_INT: 3908a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FLOAT: 3918a94683196406b83b14218d1beef66067f126a16keunyoung case GL_FIXED: 3928a94683196406b83b14218d1beef66067f126a16keunyoung case GL_UNSIGNED_INT_24_8_OES: 3938a94683196406b83b14218d1beef66067f126a16keunyoung pixelsize = 32; 3948a94683196406b83b14218d1beef66067f126a16keunyoung break; 3958a94683196406b83b14218d1beef66067f126a16keunyoung default: 3968a94683196406b83b14218d1beef66067f126a16keunyoung ERR("glUtilsPixelBitSize: unknown pixel type - assuming pixel data 0\n"); 3978a94683196406b83b14218d1beef66067f126a16keunyoung componentsize = 0; 3988a94683196406b83b14218d1beef66067f126a16keunyoung } 3998a94683196406b83b14218d1beef66067f126a16keunyoung 4008a94683196406b83b14218d1beef66067f126a16keunyoung if (pixelsize == 0) { 4018a94683196406b83b14218d1beef66067f126a16keunyoung switch(format) { 4028a94683196406b83b14218d1beef66067f126a16keunyoung#if 0 4038a94683196406b83b14218d1beef66067f126a16keunyoung case GL_RED: 4048a94683196406b83b14218d1beef66067f126a16keunyoung case GL_GREEN: 4058a94683196406b83b14218d1beef66067f126a16keunyoung case GL_BLUE: 4068a94683196406b83b14218d1beef66067f126a16keunyoung#endif 4078a94683196406b83b14218d1beef66067f126a16keunyoung case GL_ALPHA: 4088a94683196406b83b14218d1beef66067f126a16keunyoung case GL_LUMINANCE: 4098a94683196406b83b14218d1beef66067f126a16keunyoung case GL_DEPTH_COMPONENT: 4108a94683196406b83b14218d1beef66067f126a16keunyoung case GL_DEPTH_STENCIL_OES: 4118a94683196406b83b14218d1beef66067f126a16keunyoung components = 1; 4128a94683196406b83b14218d1beef66067f126a16keunyoung break; 4138a94683196406b83b14218d1beef66067f126a16keunyoung case GL_LUMINANCE_ALPHA: 4148a94683196406b83b14218d1beef66067f126a16keunyoung components = 2; 4158a94683196406b83b14218d1beef66067f126a16keunyoung break; 4168a94683196406b83b14218d1beef66067f126a16keunyoung case GL_RGB: 4178a94683196406b83b14218d1beef66067f126a16keunyoung#if 0 4188a94683196406b83b14218d1beef66067f126a16keunyoung case GL_BGR: 4198a94683196406b83b14218d1beef66067f126a16keunyoung#endif 4208a94683196406b83b14218d1beef66067f126a16keunyoung components = 3; 4218a94683196406b83b14218d1beef66067f126a16keunyoung break; 4228a94683196406b83b14218d1beef66067f126a16keunyoung case GL_RGBA: 4238a94683196406b83b14218d1beef66067f126a16keunyoung case GL_BGRA_EXT: 4248a94683196406b83b14218d1beef66067f126a16keunyoung components = 4; 4258a94683196406b83b14218d1beef66067f126a16keunyoung break; 4268a94683196406b83b14218d1beef66067f126a16keunyoung default: 4278a94683196406b83b14218d1beef66067f126a16keunyoung ERR("glUtilsPixelBitSize: unknown pixel format...\n"); 4288a94683196406b83b14218d1beef66067f126a16keunyoung components = 0; 4298a94683196406b83b14218d1beef66067f126a16keunyoung } 4308a94683196406b83b14218d1beef66067f126a16keunyoung pixelsize = components * componentsize; 4318a94683196406b83b14218d1beef66067f126a16keunyoung } 4328a94683196406b83b14218d1beef66067f126a16keunyoung 4338a94683196406b83b14218d1beef66067f126a16keunyoung return pixelsize; 4348a94683196406b83b14218d1beef66067f126a16keunyoung} 4358a94683196406b83b14218d1beef66067f126a16keunyoung 4368a94683196406b83b14218d1beef66067f126a16keunyoung// pack a list of strings into one. 4378a94683196406b83b14218d1beef66067f126a16keunyoungvoid glUtilsPackStrings(char *ptr, char **strings, GLint *length, GLsizei count) 4388a94683196406b83b14218d1beef66067f126a16keunyoung{ 4398a94683196406b83b14218d1beef66067f126a16keunyoung char *p = ptr; 4408a94683196406b83b14218d1beef66067f126a16keunyoung *p = '\0'; 4418a94683196406b83b14218d1beef66067f126a16keunyoung for (int i = 0; i < count; i++) { 4428a94683196406b83b14218d1beef66067f126a16keunyoung int l=0; 4438a94683196406b83b14218d1beef66067f126a16keunyoung if (strings[i]!=NULL) { 4448a94683196406b83b14218d1beef66067f126a16keunyoung if (length == NULL || length[i] < 0) { 4458a94683196406b83b14218d1beef66067f126a16keunyoung l = strlen(strings[i]); 4468a94683196406b83b14218d1beef66067f126a16keunyoung strcat(p, strings[i]); 4478a94683196406b83b14218d1beef66067f126a16keunyoung } else { 4488a94683196406b83b14218d1beef66067f126a16keunyoung l = length[i]; 4498a94683196406b83b14218d1beef66067f126a16keunyoung strncat(p, strings[i], l); 4508a94683196406b83b14218d1beef66067f126a16keunyoung } 4518a94683196406b83b14218d1beef66067f126a16keunyoung } 4528a94683196406b83b14218d1beef66067f126a16keunyoung p += l; 4538a94683196406b83b14218d1beef66067f126a16keunyoung } 4548a94683196406b83b14218d1beef66067f126a16keunyoung} 4558a94683196406b83b14218d1beef66067f126a16keunyoung 4568a94683196406b83b14218d1beef66067f126a16keunyoung// claculate the length of a list of strings 4578a94683196406b83b14218d1beef66067f126a16keunyoungint glUtilsCalcShaderSourceLen( char **strings, GLint *length, GLsizei count) 4588a94683196406b83b14218d1beef66067f126a16keunyoung{ 4598a94683196406b83b14218d1beef66067f126a16keunyoung int len = 0; 4608a94683196406b83b14218d1beef66067f126a16keunyoung for (int i = 0; i < count; i++) { 4618a94683196406b83b14218d1beef66067f126a16keunyoung int l; 4628a94683196406b83b14218d1beef66067f126a16keunyoung if (length == NULL || length[i] < 0) { 4638a94683196406b83b14218d1beef66067f126a16keunyoung l = strings[i]!=NULL ? strlen(strings[i]) : 0; 4648a94683196406b83b14218d1beef66067f126a16keunyoung } else { 4658a94683196406b83b14218d1beef66067f126a16keunyoung l = length[i]; 4668a94683196406b83b14218d1beef66067f126a16keunyoung } 4678a94683196406b83b14218d1beef66067f126a16keunyoung len += l; 4688a94683196406b83b14218d1beef66067f126a16keunyoung } 4698a94683196406b83b14218d1beef66067f126a16keunyoung return len; 4708a94683196406b83b14218d1beef66067f126a16keunyoung 4718a94683196406b83b14218d1beef66067f126a16keunyoung} 472