1 /**************************************************************************
3 * Copyright 2010 VMware, Inc.
4 * Copyright 2004 IBM Corporation
7 * Permission is hereby granted, free of charge, to any person obtaining a
8 * copy of this software and associated documentation files (the "Software"),
9 * to deal in the Software without restriction, including without limitation
10 * the rights to use, copy, modify, merge, publish, distribute, sub license,
11 * and/or sell copies of the Software, and to permit persons to whom the
12 * Software is furnished to do so, subject to the following conditions:
14 * The above copyright notice and this permission notice (including the next
15 * paragraph) shall be included in all copies or substantial portions of the
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
22 * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
23 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
24 * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27 **************************************************************************/
30 * Auxiliary functions to compute the size of array/blob arguments, depending.
32 * Some of these functions were semi-automatically generated with
33 * apigen/glsize.py script from Mesa's XML description of the GL enums.
35 * Other functions were done by hand.
38 #ifndef _GL_HELPERS_HPP_
39 #define _GL_HELPERS_HPP_
43 #include "glimports.hpp"
47 __gl_type_size(GLenum type)
52 case GL_UNSIGNED_BYTE:
55 case GL_UNSIGNED_SHORT:
69 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, type);
75 __glArrayPointer_size(GLint size, GLenum type, GLsizei stride, GLsizei maxIndex)
77 size_t elementSize = size*__gl_type_size(type);
79 stride = (GLsizei)elementSize;
81 return stride*maxIndex + elementSize;
84 #define __glVertexPointer_size(size, type, stride, maxIndex) __glArrayPointer_size(size, type, stride, maxIndex)
85 #define __glNormalPointer_size(type, stride, maxIndex) __glArrayPointer_size(3, type, stride, maxIndex)
86 #define __glColorPointer_size(size, type, stride, maxIndex) __glArrayPointer_size(size, type, stride, maxIndex)
87 #define __glIndexPointer_size(type, stride, maxIndex) __glArrayPointer_size(1, type, stride, maxIndex)
88 #define __glTexCoordPointer_size(size, type, stride, maxIndex) __glArrayPointer_size(size, type, stride, maxIndex)
89 #define __glEdgeFlagPointer_size(stride, maxIndex) __glArrayPointer_size(1, GL_BOOL, stride, maxIndex)
90 #define __glFogCoordPointer_size(type, stride, maxIndex) __glArrayPointer_size(1, type, stride, maxIndex)
91 #define __glSecondaryColorPointer_size(size, type, stride, maxIndex) __glArrayPointer_size(size, type, stride, maxIndex)
92 #define __glVertexAttribPointer_size(size, type, normalized, stride, maxIndex) __glArrayPointer_size(size, type, stride, maxIndex)
95 __glDrawArrays_maxindex(GLint first, GLsizei count)
100 return first + count - 1;
104 __glDrawElements_maxindex(GLsizei count, GLenum type, const GLvoid *indices)
107 GLint __element_array_buffer = 0;
112 __glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, &__element_array_buffer);
113 if (__element_array_buffer) {
114 // Read indices from index buffer object
115 GLintptr offset = (GLintptr)indices;
116 GLsizeiptr size = count*__gl_type_size(type);
117 GLvoid *temp = malloc(size);
121 memset(temp, 0, size);
122 __glGetBufferSubData(GL_ELEMENT_ARRAY_BUFFER, offset, size, temp);
132 if (type == GL_UNSIGNED_BYTE) {
133 const GLubyte *p = (const GLubyte *)indices;
134 for (i = 0; i < count; ++i) {
135 if (p[i] > maxindex) {
139 } else if (type == GL_UNSIGNED_SHORT) {
140 const GLushort *p = (const GLushort *)indices;
141 for (i = 0; i < count; ++i) {
142 if (p[i] > maxindex) {
146 } else if (type == GL_UNSIGNED_INT) {
147 const GLuint *p = (const GLuint *)indices;
148 for (i = 0; i < count; ++i) {
149 if (p[i] > maxindex) {
154 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, type);
157 if (__element_array_buffer) {
165 __glDrawRangeElements_maxindex(GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices)
169 return __glDrawElements_maxindex(count, type, indices);
173 __glCallLists_size(GLsizei n, GLenum type)
175 return n*__gl_type_size(type);
179 __glFogfv_size(GLenum pname)
187 case GL_FOG_OFFSET_VALUE_SGIX:
188 case GL_FOG_DISTANCE_MODE_NV:
193 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
198 #define __glFogiv_size __glFogfv_size
201 __glLightfv_size(GLenum pname)
204 case GL_SPOT_EXPONENT:
206 case GL_CONSTANT_ATTENUATION:
207 case GL_LINEAR_ATTENUATION:
208 case GL_QUADRATIC_ATTENUATION:
210 case GL_SPOT_DIRECTION:
218 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
223 #define __glLightiv_size __glLightfv_size
226 __glLightModelfv_size(GLenum pname)
229 case GL_LIGHT_MODEL_LOCAL_VIEWER:
230 case GL_LIGHT_MODEL_TWO_SIDE:
231 case GL_LIGHT_MODEL_COLOR_CONTROL:
232 /* case GL_LIGHT_MODEL_COLOR_CONTROL_EXT:*/
234 case GL_LIGHT_MODEL_AMBIENT:
237 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
242 #define __glLightModeliv_size __glLightModelfv_size
245 __glMaterialfv_size(GLenum pname)
250 case GL_COLOR_INDEXES:
256 case GL_AMBIENT_AND_DIFFUSE:
259 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
264 #define __glMaterialiv_size __glMaterialfv_size
267 __glTexParameterfv_size(GLenum pname)
270 case GL_TEXTURE_MAG_FILTER:
271 case GL_TEXTURE_MIN_FILTER:
272 case GL_TEXTURE_WRAP_S:
273 case GL_TEXTURE_WRAP_T:
274 case GL_TEXTURE_PRIORITY:
275 case GL_TEXTURE_WRAP_R:
276 case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB:
277 /* case GL_SHADOW_AMBIENT_SGIX:*/
278 case GL_TEXTURE_MIN_LOD:
279 case GL_TEXTURE_MAX_LOD:
280 case GL_TEXTURE_BASE_LEVEL:
281 case GL_TEXTURE_MAX_LEVEL:
282 case GL_TEXTURE_CLIPMAP_FRAME_SGIX:
283 case GL_TEXTURE_LOD_BIAS_S_SGIX:
284 case GL_TEXTURE_LOD_BIAS_T_SGIX:
285 case GL_TEXTURE_LOD_BIAS_R_SGIX:
286 case GL_GENERATE_MIPMAP:
287 /* case GL_GENERATE_MIPMAP_SGIS:*/
288 case GL_TEXTURE_COMPARE_SGIX:
289 case GL_TEXTURE_COMPARE_OPERATOR_SGIX:
290 case GL_TEXTURE_MAX_CLAMP_S_SGIX:
291 case GL_TEXTURE_MAX_CLAMP_T_SGIX:
292 case GL_TEXTURE_MAX_CLAMP_R_SGIX:
293 case GL_TEXTURE_MAX_ANISOTROPY_EXT:
294 case GL_TEXTURE_LOD_BIAS:
295 /* case GL_TEXTURE_LOD_BIAS_EXT:*/
296 case GL_TEXTURE_STORAGE_HINT_APPLE:
297 case GL_STORAGE_PRIVATE_APPLE:
298 case GL_STORAGE_CACHED_APPLE:
299 case GL_STORAGE_SHARED_APPLE:
300 case GL_DEPTH_TEXTURE_MODE:
301 /* case GL_DEPTH_TEXTURE_MODE_ARB:*/
302 case GL_TEXTURE_COMPARE_MODE:
303 /* case GL_TEXTURE_COMPARE_MODE_ARB:*/
304 case GL_TEXTURE_COMPARE_FUNC:
305 /* case GL_TEXTURE_COMPARE_FUNC_ARB:*/
306 case GL_TEXTURE_UNSIGNED_REMAP_MODE_NV:
308 case GL_TEXTURE_CLIPMAP_CENTER_SGIX:
309 case GL_TEXTURE_CLIPMAP_OFFSET_SGIX:
311 case GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX:
313 case GL_TEXTURE_BORDER_COLOR:
314 case GL_POST_TEXTURE_FILTER_BIAS_SGIX:
315 case GL_POST_TEXTURE_FILTER_SCALE_SGIX:
316 case GL_TEXTURE_SWIZZLE_RGBA:
319 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
324 #define __glTexParameteriv_size __glTexParameterfv_size
327 __glTexEnvfv_size(GLenum pname)
331 case GL_TEXTURE_ENV_MODE:
332 case GL_TEXTURE_LOD_BIAS:
334 case GL_COMBINE_ALPHA:
339 case GL_SOURCE3_RGB_NV:
340 case GL_SOURCE0_ALPHA:
341 case GL_SOURCE1_ALPHA:
342 case GL_SOURCE2_ALPHA:
343 case GL_SOURCE3_ALPHA_NV:
344 case GL_OPERAND0_RGB:
345 case GL_OPERAND1_RGB:
346 case GL_OPERAND2_RGB:
347 case GL_OPERAND3_RGB_NV:
348 case GL_OPERAND0_ALPHA:
349 case GL_OPERAND1_ALPHA:
350 case GL_OPERAND2_ALPHA:
351 case GL_OPERAND3_ALPHA_NV:
352 case GL_BUMP_TARGET_ATI:
353 case GL_COORD_REPLACE_ARB:
354 case GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV:
355 case GL_SHADER_OPERATION_NV:
356 case GL_PREVIOUS_TEXTURE_INPUT_NV:
357 case GL_OFFSET_TEXTURE_SCALE_NV:
358 case GL_OFFSET_TEXTURE_BIAS_NV:
359 case GL_SHADER_CONSISTENT_NV:
360 /* case GL_COORD_REPLACE_NV:*/
362 case GL_CONST_EYE_NV:
364 case GL_CULL_MODES_NV:
365 case GL_OFFSET_TEXTURE_MATRIX_NV:
366 case GL_TEXTURE_ENV_COLOR:
369 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
374 #define __glTexEnviv_size __glTexEnvfv_size
377 __glTexGendv_size(GLenum pname)
380 case GL_TEXTURE_GEN_MODE:
382 case GL_OBJECT_PLANE:
386 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
391 #define __glTexGenfv_size __glTexGendv_size
393 #define __glTexGeniv_size __glTexGendv_size
396 __glMap1d_size(GLenum pname)
400 case GL_MAP1_TEXTURE_COORD_1:
402 case GL_MAP1_TEXTURE_COORD_2:
405 case GL_MAP1_TEXTURE_COORD_3:
406 case GL_MAP1_VERTEX_3:
408 case GL_MAP1_COLOR_4:
409 case GL_MAP1_TEXTURE_COORD_4:
410 case GL_MAP1_VERTEX_4:
413 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
418 #define __glMap1f_size __glMap1d_size
421 __glMap2d_size(GLenum pname)
425 case GL_MAP2_TEXTURE_COORD_1:
427 case GL_MAP2_TEXTURE_COORD_2:
430 case GL_MAP2_TEXTURE_COORD_3:
431 case GL_MAP2_VERTEX_3:
433 case GL_MAP2_COLOR_4:
434 case GL_MAP2_TEXTURE_COORD_4:
435 case GL_MAP2_VERTEX_4:
438 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
443 #define __glMap2f_size __glMap2d_size
446 __glGetBooleanv_size(GLenum pname)
449 case GL_CURRENT_INDEX:
450 case GL_CURRENT_PROGRAM:
451 case GL_CURRENT_RASTER_INDEX:
452 case GL_CURRENT_RASTER_POSITION_VALID:
453 case GL_CURRENT_RASTER_DISTANCE:
454 case GL_POINT_SMOOTH:
456 case GL_SMOOTH_POINT_SIZE_GRANULARITY:
459 case GL_LINE_WIDTH_GRANULARITY:
460 case GL_LINE_STIPPLE:
461 case GL_LINE_STIPPLE_PATTERN:
462 case GL_LINE_STIPPLE_REPEAT:
464 case GL_MAX_LIST_NESTING:
467 case GL_POLYGON_SMOOTH:
468 case GL_POLYGON_STIPPLE:
471 case GL_CULL_FACE_MODE:
474 case GL_LIGHT_MODEL_LOCAL_VIEWER:
475 case GL_LIGHT_MODEL_TWO_SIDE:
477 case GL_COLOR_MATERIAL_FACE:
478 case GL_COLOR_MATERIAL_PARAMETER:
479 case GL_COLOR_MATERIAL:
487 case GL_DEPTH_WRITEMASK:
488 case GL_DEPTH_CLEAR_VALUE:
490 case GL_STENCIL_TEST:
491 case GL_STENCIL_CLEAR_VALUE:
492 case GL_STENCIL_FUNC:
493 case GL_STENCIL_VALUE_MASK:
494 case GL_STENCIL_FAIL:
495 case GL_STENCIL_PASS_DEPTH_FAIL:
496 case GL_STENCIL_PASS_DEPTH_PASS:
498 case GL_STENCIL_WRITEMASK:
501 case GL_MODELVIEW_STACK_DEPTH:
502 case GL_PROJECTION_STACK_DEPTH:
503 case GL_TEXTURE_STACK_DEPTH:
504 case GL_ATTRIB_STACK_DEPTH:
505 case GL_CLIENT_ATTRIB_STACK_DEPTH:
507 case GL_ALPHA_TEST_FUNC:
508 case GL_ALPHA_TEST_REF:
513 case GL_LOGIC_OP_MODE:
518 case GL_SCISSOR_TEST:
519 case GL_INDEX_CLEAR_VALUE:
520 case GL_INDEX_WRITEMASK:
523 case GL_DOUBLEBUFFER:
526 case GL_PERSPECTIVE_CORRECTION_HINT:
527 case GL_POINT_SMOOTH_HINT:
528 case GL_LINE_SMOOTH_HINT:
529 case GL_POLYGON_SMOOTH_HINT:
531 case GL_TEXTURE_GEN_S:
532 case GL_TEXTURE_GEN_T:
533 case GL_TEXTURE_GEN_R:
534 case GL_TEXTURE_GEN_Q:
535 case GL_PIXEL_MAP_I_TO_I:
536 case GL_PIXEL_MAP_I_TO_I_SIZE:
537 case GL_PIXEL_MAP_S_TO_S_SIZE:
538 case GL_PIXEL_MAP_I_TO_R_SIZE:
539 case GL_PIXEL_MAP_I_TO_G_SIZE:
540 case GL_PIXEL_MAP_I_TO_B_SIZE:
541 case GL_PIXEL_MAP_I_TO_A_SIZE:
542 case GL_PIXEL_MAP_R_TO_R_SIZE:
543 case GL_PIXEL_MAP_G_TO_G_SIZE:
544 case GL_PIXEL_MAP_B_TO_B_SIZE:
545 case GL_PIXEL_MAP_A_TO_A_SIZE:
546 case GL_UNPACK_SWAP_BYTES:
547 case GL_UNPACK_LSB_FIRST:
548 case GL_UNPACK_ROW_LENGTH:
549 case GL_UNPACK_SKIP_ROWS:
550 case GL_UNPACK_SKIP_PIXELS:
551 case GL_UNPACK_ALIGNMENT:
552 case GL_PACK_SWAP_BYTES:
553 case GL_PACK_LSB_FIRST:
554 case GL_PACK_ROW_LENGTH:
555 case GL_PACK_SKIP_ROWS:
556 case GL_PACK_SKIP_PIXELS:
557 case GL_PACK_ALIGNMENT:
561 case GL_INDEX_OFFSET:
574 case GL_MAX_EVAL_ORDER:
576 case GL_MAX_CLIP_PLANES:
577 case GL_MAX_TEXTURE_SIZE:
578 case GL_MAX_PIXEL_MAP_TABLE:
579 case GL_MAX_ATTRIB_STACK_DEPTH:
580 case GL_MAX_MODELVIEW_STACK_DEPTH:
581 case GL_MAX_NAME_STACK_DEPTH:
582 case GL_MAX_PROJECTION_STACK_DEPTH:
583 case GL_MAX_TEXTURE_STACK_DEPTH:
584 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
585 case GL_SUBPIXEL_BITS:
592 case GL_STENCIL_BITS:
593 case GL_ACCUM_RED_BITS:
594 case GL_ACCUM_GREEN_BITS:
595 case GL_ACCUM_BLUE_BITS:
596 case GL_ACCUM_ALPHA_BITS:
597 case GL_NAME_STACK_DEPTH:
599 case GL_MAP1_COLOR_4:
602 case GL_MAP1_TEXTURE_COORD_1:
603 case GL_MAP1_TEXTURE_COORD_2:
604 case GL_MAP1_TEXTURE_COORD_3:
605 case GL_MAP1_TEXTURE_COORD_4:
606 case GL_MAP1_VERTEX_3:
607 case GL_MAP1_VERTEX_4:
608 case GL_MAP2_COLOR_4:
611 case GL_MAP2_TEXTURE_COORD_1:
612 case GL_MAP2_TEXTURE_COORD_2:
613 case GL_MAP2_TEXTURE_COORD_3:
614 case GL_MAP2_TEXTURE_COORD_4:
615 case GL_MAP2_VERTEX_3:
616 case GL_MAP2_VERTEX_4:
617 case GL_MAP1_GRID_SEGMENTS:
620 case GL_POLYGON_OFFSET_UNITS:
635 case GL_BLEND_EQUATION:
636 /* case GL_BLEND_EQUATION_EXT:*/
637 case GL_CONVOLUTION_1D:
638 case GL_CONVOLUTION_2D:
639 case GL_SEPARABLE_2D:
640 case GL_MAX_CONVOLUTION_WIDTH:
641 /* case GL_MAX_CONVOLUTION_WIDTH_EXT:*/
642 case GL_MAX_CONVOLUTION_HEIGHT:
643 /* case GL_MAX_CONVOLUTION_HEIGHT_EXT:*/
644 case GL_POST_CONVOLUTION_RED_SCALE:
645 /* case GL_POST_CONVOLUTION_RED_SCALE_EXT:*/
646 case GL_POST_CONVOLUTION_GREEN_SCALE:
647 /* case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:*/
648 case GL_POST_CONVOLUTION_BLUE_SCALE:
649 /* case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:*/
650 case GL_POST_CONVOLUTION_ALPHA_SCALE:
651 /* case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:*/
652 case GL_POST_CONVOLUTION_RED_BIAS:
653 /* case GL_POST_CONVOLUTION_RED_BIAS_EXT:*/
654 case GL_POST_CONVOLUTION_GREEN_BIAS:
655 /* case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:*/
656 case GL_POST_CONVOLUTION_BLUE_BIAS:
657 /* case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:*/
658 case GL_POST_CONVOLUTION_ALPHA_BIAS:
659 /* case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:*/
662 case GL_POLYGON_OFFSET_FACTOR:
663 case GL_RESCALE_NORMAL:
664 /* case GL_RESCALE_NORMAL_EXT:*/
665 case GL_TEXTURE_BINDING_1D:
666 case GL_TEXTURE_BINDING_2D:
667 case GL_TEXTURE_BINDING_3D:
668 case GL_PACK_SKIP_IMAGES:
669 case GL_PACK_IMAGE_HEIGHT:
670 case GL_UNPACK_SKIP_IMAGES:
671 case GL_UNPACK_IMAGE_HEIGHT:
673 case GL_MAX_3D_TEXTURE_SIZE:
674 case GL_VERTEX_ARRAY:
675 case GL_NORMAL_ARRAY:
678 case GL_TEXTURE_COORD_ARRAY:
679 case GL_EDGE_FLAG_ARRAY:
680 case GL_VERTEX_ARRAY_SIZE:
681 case GL_VERTEX_ARRAY_TYPE:
682 case GL_VERTEX_ARRAY_STRIDE:
683 case GL_NORMAL_ARRAY_TYPE:
684 case GL_NORMAL_ARRAY_STRIDE:
685 case GL_COLOR_ARRAY_SIZE:
686 case GL_COLOR_ARRAY_TYPE:
687 case GL_COLOR_ARRAY_STRIDE:
688 case GL_INDEX_ARRAY_TYPE:
689 case GL_INDEX_ARRAY_STRIDE:
690 case GL_TEXTURE_COORD_ARRAY_SIZE:
691 case GL_TEXTURE_COORD_ARRAY_TYPE:
692 case GL_TEXTURE_COORD_ARRAY_STRIDE:
693 case GL_EDGE_FLAG_ARRAY_STRIDE:
695 /* case GL_MULTISAMPLE_ARB:*/
696 case GL_SAMPLE_ALPHA_TO_COVERAGE:
697 /* case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:*/
698 case GL_SAMPLE_ALPHA_TO_ONE:
699 /* case GL_SAMPLE_ALPHA_TO_ONE_ARB:*/
700 case GL_SAMPLE_COVERAGE:
701 /* case GL_SAMPLE_COVERAGE_ARB:*/
702 case GL_SAMPLE_BUFFERS:
703 /* case GL_SAMPLE_BUFFERS_ARB:*/
705 /* case GL_SAMPLES_ARB:*/
706 case GL_SAMPLE_COVERAGE_VALUE:
707 /* case GL_SAMPLE_COVERAGE_VALUE_ARB:*/
708 case GL_SAMPLE_COVERAGE_INVERT:
709 /* case GL_SAMPLE_COVERAGE_INVERT_ARB:*/
710 case GL_COLOR_MATRIX_STACK_DEPTH:
711 case GL_MAX_COLOR_MATRIX_STACK_DEPTH:
712 case GL_POST_COLOR_MATRIX_RED_SCALE:
713 case GL_POST_COLOR_MATRIX_GREEN_SCALE:
714 case GL_POST_COLOR_MATRIX_BLUE_SCALE:
715 case GL_POST_COLOR_MATRIX_ALPHA_SCALE:
716 case GL_POST_COLOR_MATRIX_RED_BIAS:
717 case GL_POST_COLOR_MATRIX_GREEN_BIAS:
718 case GL_POST_COLOR_MATRIX_BLUE_BIAS:
719 case GL_POST_COLOR_MATRIX_ALPHA_BIAS:
720 case GL_BLEND_DST_RGB:
721 case GL_BLEND_SRC_RGB:
722 case GL_BLEND_DST_ALPHA:
723 case GL_BLEND_SRC_ALPHA:
725 case GL_POST_CONVOLUTION_COLOR_TABLE:
726 case GL_POST_COLOR_MATRIX_COLOR_TABLE:
727 case GL_MAX_ELEMENTS_VERTICES:
728 case GL_MAX_ELEMENTS_INDICES:
729 case GL_CLIP_VOLUME_CLIPPING_HINT_EXT:
730 case GL_POINT_SIZE_MIN:
731 case GL_POINT_SIZE_MAX:
732 case GL_POINT_FADE_THRESHOLD_SIZE:
733 case GL_OCCLUSION_TEST_HP:
734 case GL_OCCLUSION_TEST_RESULT_HP:
735 case GL_LIGHT_MODEL_COLOR_CONTROL:
736 case GL_CURRENT_FOG_COORD:
737 case GL_FOG_COORDINATE_ARRAY_TYPE:
738 case GL_FOG_COORDINATE_ARRAY_STRIDE:
739 case GL_FOG_COORD_ARRAY:
740 case GL_COLOR_SUM_ARB:
741 case GL_SECONDARY_COLOR_ARRAY_SIZE:
742 case GL_SECONDARY_COLOR_ARRAY_TYPE:
743 case GL_SECONDARY_COLOR_ARRAY_STRIDE:
744 case GL_SECONDARY_COLOR_ARRAY:
745 case GL_ACTIVE_TEXTURE:
746 /* case GL_ACTIVE_TEXTURE_ARB:*/
747 case GL_CLIENT_ACTIVE_TEXTURE:
748 /* case GL_CLIENT_ACTIVE_TEXTURE_ARB:*/
749 case GL_MAX_TEXTURE_UNITS:
750 /* case GL_MAX_TEXTURE_UNITS_ARB:*/
751 case GL_MAX_RENDERBUFFER_SIZE:
752 /* case GL_MAX_RENDERBUFFER_SIZE_EXT:*/
753 case GL_TEXTURE_COMPRESSION_HINT:
754 /* case GL_TEXTURE_COMPRESSION_HINT_ARB:*/
755 case GL_TEXTURE_RECTANGLE_ARB:
756 /* case GL_TEXTURE_RECTANGLE_NV:*/
757 case GL_TEXTURE_BINDING_RECTANGLE_ARB:
758 /* case GL_TEXTURE_BINDING_RECTANGLE_NV:*/
759 case GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB:
760 /* case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:*/
761 case GL_MAX_TEXTURE_LOD_BIAS:
762 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
763 case GL_MAX_SHININESS_NV:
764 case GL_MAX_SPOT_EXPONENT_NV:
765 case GL_TEXTURE_CUBE_MAP:
766 /* case GL_TEXTURE_CUBE_MAP_ARB:*/
767 case GL_TEXTURE_BINDING_CUBE_MAP:
768 /* case GL_TEXTURE_BINDING_CUBE_MAP_ARB:*/
769 case GL_MAX_CUBE_MAP_TEXTURE_SIZE:
770 /* case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:*/
771 case GL_MULTISAMPLE_FILTER_HINT_NV:
772 case GL_FOG_DISTANCE_MODE_NV:
773 case GL_VERTEX_PROGRAM_ARB:
774 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
775 case GL_MAX_PROGRAM_MATRICES_ARB:
776 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
777 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
778 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
779 case GL_PROGRAM_ERROR_POSITION_ARB:
781 /* case GL_DEPTH_CLAMP_NV:*/
782 case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
783 /* case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:*/
784 case GL_MAX_VERTEX_UNITS_ARB:
785 case GL_ACTIVE_VERTEX_UNITS_ARB:
786 case GL_WEIGHT_SUM_UNITY_ARB:
787 case GL_VERTEX_BLEND_ARB:
788 case GL_CURRENT_WEIGHT_ARB:
789 case GL_WEIGHT_ARRAY_TYPE_ARB:
790 case GL_WEIGHT_ARRAY_STRIDE_ARB:
791 case GL_WEIGHT_ARRAY_SIZE_ARB:
792 case GL_WEIGHT_ARRAY_ARB:
793 case GL_PACK_INVERT_MESA:
794 case GL_STENCIL_BACK_FUNC_ATI:
795 case GL_STENCIL_BACK_FAIL_ATI:
796 case GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI:
797 case GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI:
798 case GL_FRAGMENT_PROGRAM_ARB:
799 case GL_MAX_DRAW_BUFFERS_ARB:
800 /* case GL_MAX_DRAW_BUFFERS_ATI:*/
801 case GL_DRAW_BUFFER0_ARB:
802 /* case GL_DRAW_BUFFER0_ATI:*/
803 case GL_DRAW_BUFFER1_ARB:
804 /* case GL_DRAW_BUFFER1_ATI:*/
805 case GL_DRAW_BUFFER2_ARB:
806 /* case GL_DRAW_BUFFER2_ATI:*/
807 case GL_DRAW_BUFFER3_ARB:
808 /* case GL_DRAW_BUFFER3_ATI:*/
809 case GL_DRAW_BUFFER4_ARB:
810 /* case GL_DRAW_BUFFER4_ATI:*/
811 case GL_DRAW_BUFFER5_ARB:
812 /* case GL_DRAW_BUFFER5_ATI:*/
813 case GL_DRAW_BUFFER6_ARB:
814 /* case GL_DRAW_BUFFER6_ATI:*/
815 case GL_DRAW_BUFFER7_ARB:
816 /* case GL_DRAW_BUFFER7_ATI:*/
817 case GL_DRAW_BUFFER8_ARB:
818 /* case GL_DRAW_BUFFER8_ATI:*/
819 case GL_DRAW_BUFFER9_ARB:
820 /* case GL_DRAW_BUFFER9_ATI:*/
821 case GL_DRAW_BUFFER10_ARB:
822 /* case GL_DRAW_BUFFER10_ATI:*/
823 case GL_DRAW_BUFFER11_ARB:
824 /* case GL_DRAW_BUFFER11_ATI:*/
825 case GL_DRAW_BUFFER12_ARB:
826 /* case GL_DRAW_BUFFER12_ATI:*/
827 case GL_DRAW_BUFFER13_ARB:
828 /* case GL_DRAW_BUFFER13_ATI:*/
829 case GL_DRAW_BUFFER14_ARB:
830 /* case GL_DRAW_BUFFER14_ATI:*/
831 case GL_DRAW_BUFFER15_ARB:
832 /* case GL_DRAW_BUFFER15_ATI:*/
833 case GL_BLEND_EQUATION_ALPHA_EXT:
834 case GL_MATRIX_PALETTE_ARB:
835 case GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB:
836 case GL_MAX_PALETTE_MATRICES_ARB:
837 case GL_CURRENT_PALETTE_MATRIX_ARB:
838 case GL_MATRIX_INDEX_ARRAY_ARB:
839 case GL_CURRENT_MATRIX_INDEX_ARB:
840 case GL_MATRIX_INDEX_ARRAY_SIZE_ARB:
841 case GL_MATRIX_INDEX_ARRAY_TYPE_ARB:
842 case GL_MATRIX_INDEX_ARRAY_STRIDE_ARB:
843 case GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT:
844 case GL_POINT_SPRITE_ARB:
845 /* case GL_POINT_SPRITE_NV:*/
846 case GL_POINT_SPRITE_R_MODE_NV:
847 case GL_MAX_VERTEX_ATTRIBS_ARB:
848 case GL_MAX_TEXTURE_COORDS_ARB:
849 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
850 case GL_DEPTH_BOUNDS_TEST_EXT:
851 case GL_ARRAY_BUFFER_BINDING_ARB:
852 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
853 case GL_PIXEL_PACK_BUFFER_BINDING:
854 case GL_PIXEL_UNPACK_BUFFER_BINDING:
855 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
856 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
857 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
858 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
859 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
860 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
861 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
862 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
863 case GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB:
864 case GL_TEXTURE_CUBE_MAP_SEAMLESS:
865 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT:
866 case GL_STENCIL_TEST_TWO_SIDE_EXT:
867 case GL_ACTIVE_STENCIL_FACE_EXT:
868 case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
869 case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
870 case GL_FRAMEBUFFER_BINDING:
871 /* case GL_DRAW_FRAMEBUFFER_BINDING_EXT:*/
872 case GL_RENDERBUFFER_BINDING:
873 /* case GL_RENDERBUFFER_BINDING_EXT:*/
874 case GL_READ_FRAMEBUFFER_BINDING:
875 /* case GL_READ_FRAMEBUFFER_BINDING_EXT:*/
876 case GL_MAX_COLOR_ATTACHMENTS:
877 /* case GL_MAX_COLOR_ATTACHMENTS_EXT:*/
879 /* case GL_MAX_SAMPLES_EXT:*/
880 case GL_MAX_SERVER_WAIT_TIMEOUT:
881 case GL_RASTER_POSITION_UNCLIPPED_IBM:
882 case GL_PROVOKING_VERTEX_EXT:
883 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT:
884 case GL_VERTEX_ARRAY_RANGE_LENGTH_NV:
885 case GL_VERTEX_ARRAY_RANGE_VALID_NV:
886 case GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV:
887 case GL_VERTEX_ARRAY_BINDING:
889 case GL_SMOOTH_POINT_SIZE_RANGE:
890 case GL_LINE_WIDTH_RANGE:
891 case GL_POLYGON_MODE:
893 case GL_MAX_VIEWPORT_DIMS:
894 case GL_MAP1_GRID_DOMAIN:
895 case GL_MAP2_GRID_SEGMENTS:
896 case GL_ALIASED_POINT_SIZE_RANGE:
897 case GL_ALIASED_LINE_WIDTH_RANGE:
898 case GL_DEPTH_BOUNDS_EXT:
900 case GL_CURRENT_NORMAL:
901 case GL_POINT_DISTANCE_ATTENUATION:
903 case GL_CURRENT_COLOR:
904 case GL_CURRENT_TEXTURE_COORDS:
905 case GL_CURRENT_RASTER_COLOR:
906 case GL_CURRENT_RASTER_TEXTURE_COORDS:
907 case GL_CURRENT_RASTER_POSITION:
908 case GL_LIGHT_MODEL_AMBIENT:
910 case GL_ACCUM_CLEAR_VALUE:
913 case GL_COLOR_CLEAR_VALUE:
914 case GL_COLOR_WRITEMASK:
915 case GL_MAP2_GRID_DOMAIN:
917 /* case GL_BLEND_COLOR_EXT:*/
918 case GL_CURRENT_SECONDARY_COLOR:
920 case GL_MODELVIEW_MATRIX:
921 case GL_PROJECTION_MATRIX:
922 case GL_TEXTURE_MATRIX:
923 case GL_MODELVIEW0_ARB:
924 case GL_COLOR_MATRIX:
925 case GL_MODELVIEW1_ARB:
926 case GL_CURRENT_MATRIX_ARB:
927 case GL_MODELVIEW2_ARB:
928 case GL_MODELVIEW3_ARB:
929 case GL_MODELVIEW4_ARB:
930 case GL_MODELVIEW5_ARB:
931 case GL_MODELVIEW6_ARB:
932 case GL_MODELVIEW7_ARB:
933 case GL_MODELVIEW8_ARB:
934 case GL_MODELVIEW9_ARB:
935 case GL_MODELVIEW10_ARB:
936 case GL_MODELVIEW11_ARB:
937 case GL_MODELVIEW12_ARB:
938 case GL_MODELVIEW13_ARB:
939 case GL_MODELVIEW14_ARB:
940 case GL_MODELVIEW15_ARB:
941 case GL_MODELVIEW16_ARB:
942 case GL_MODELVIEW17_ARB:
943 case GL_MODELVIEW18_ARB:
944 case GL_MODELVIEW19_ARB:
945 case GL_MODELVIEW20_ARB:
946 case GL_MODELVIEW21_ARB:
947 case GL_MODELVIEW22_ARB:
948 case GL_MODELVIEW23_ARB:
949 case GL_MODELVIEW24_ARB:
950 case GL_MODELVIEW25_ARB:
951 case GL_MODELVIEW26_ARB:
952 case GL_MODELVIEW27_ARB:
953 case GL_MODELVIEW28_ARB:
954 case GL_MODELVIEW29_ARB:
955 case GL_MODELVIEW30_ARB:
956 case GL_MODELVIEW31_ARB:
957 case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
960 case GL_FOG_COORDINATE_SOURCE:
961 case GL_COMPRESSED_TEXTURE_FORMATS:
962 case GL_MIN_PROGRAM_TEXEL_OFFSET_EXT:
963 case GL_MAX_PROGRAM_TEXEL_OFFSET_EXT:
964 case GL_RGBA_INTEGER_MODE_EXT:
965 return __glGetBooleanv_variable_size(pname);
967 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS:
968 case GL_MAX_VERTEX_UNIFORM_COMPONENTS:
969 case GL_MAX_VARYING_FLOATS:
970 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:
971 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:
972 case GL_MAX_GEOMETRY_UNIFORM_COMPONENTS:
973 case GL_MAX_GEOMETRY_OUTPUT_VERTICES:
974 case GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS:
977 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
982 #define __glGetDoublev_size __glGetBooleanv_size
984 #define __glGetFloatv_size __glGetBooleanv_size
986 #define __glGetIntegerv_size __glGetBooleanv_size
988 #define __glGetInteger64v_size __glGetBooleanv_size
990 #define __glGetLightfv_size __glLightfv_size
992 #define __glGetLightiv_size __glLightfv_size
994 #define __glGetMaterialfv_size __glMaterialfv_size
996 #define __glGetMaterialiv_size __glMaterialfv_size
998 #define __glGetTexEnvfv_size __glTexEnvfv_size
1000 #define __glGetTexEnviv_size __glTexEnvfv_size
1002 #define __glGetTexGendv_size __glTexGendv_size
1004 #define __glGetTexGenfv_size __glTexGendv_size
1006 #define __glGetTexGeniv_size __glTexGendv_size
1008 static inline size_t
1009 __glGetTexParameterfv_size(GLenum pname)
1012 case GL_TEXTURE_MAG_FILTER:
1013 case GL_TEXTURE_MIN_FILTER:
1014 case GL_TEXTURE_WRAP_S:
1015 case GL_TEXTURE_WRAP_T:
1016 case GL_TEXTURE_PRIORITY:
1017 case GL_TEXTURE_RESIDENT:
1018 case GL_TEXTURE_WRAP_R:
1019 case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB:
1020 /* case GL_SHADOW_AMBIENT_SGIX:*/
1021 case GL_TEXTURE_MIN_LOD:
1022 case GL_TEXTURE_MAX_LOD:
1023 case GL_TEXTURE_BASE_LEVEL:
1024 case GL_TEXTURE_MAX_LEVEL:
1025 case GL_TEXTURE_CLIPMAP_FRAME_SGIX:
1026 case GL_TEXTURE_LOD_BIAS_S_SGIX:
1027 case GL_TEXTURE_LOD_BIAS_T_SGIX:
1028 case GL_TEXTURE_LOD_BIAS_R_SGIX:
1029 case GL_GENERATE_MIPMAP:
1030 /* case GL_GENERATE_MIPMAP_SGIS:*/
1031 case GL_TEXTURE_COMPARE_SGIX:
1032 case GL_TEXTURE_COMPARE_OPERATOR_SGIX:
1033 case GL_TEXTURE_MAX_CLAMP_S_SGIX:
1034 case GL_TEXTURE_MAX_CLAMP_T_SGIX:
1035 case GL_TEXTURE_MAX_CLAMP_R_SGIX:
1036 case GL_TEXTURE_MAX_ANISOTROPY_EXT:
1037 case GL_TEXTURE_LOD_BIAS:
1038 /* case GL_TEXTURE_LOD_BIAS_EXT:*/
1039 case GL_TEXTURE_RANGE_LENGTH_APPLE:
1040 case GL_TEXTURE_STORAGE_HINT_APPLE:
1041 case GL_DEPTH_TEXTURE_MODE:
1042 /* case GL_DEPTH_TEXTURE_MODE_ARB:*/
1043 case GL_TEXTURE_COMPARE_MODE:
1044 /* case GL_TEXTURE_COMPARE_MODE_ARB:*/
1045 case GL_TEXTURE_COMPARE_FUNC:
1046 /* case GL_TEXTURE_COMPARE_FUNC_ARB:*/
1047 case GL_TEXTURE_UNSIGNED_REMAP_MODE_NV:
1049 case GL_TEXTURE_CLIPMAP_CENTER_SGIX:
1050 case GL_TEXTURE_CLIPMAP_OFFSET_SGIX:
1052 case GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX:
1054 case GL_TEXTURE_BORDER_COLOR:
1055 case GL_POST_TEXTURE_FILTER_BIAS_SGIX:
1056 case GL_POST_TEXTURE_FILTER_SCALE_SGIX:
1059 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1064 #define __glGetTexParameteriv_size __glGetTexParameterfv_size
1066 static inline size_t
1067 __glGetTexLevelParameterfv_size(GLenum pname)
1070 case GL_TEXTURE_WIDTH:
1071 case GL_TEXTURE_HEIGHT:
1072 case GL_TEXTURE_COMPONENTS:
1073 case GL_TEXTURE_BORDER:
1074 case GL_TEXTURE_RED_SIZE:
1075 /* case GL_TEXTURE_RED_SIZE_EXT:*/
1076 case GL_TEXTURE_GREEN_SIZE:
1077 /* case GL_TEXTURE_GREEN_SIZE_EXT:*/
1078 case GL_TEXTURE_BLUE_SIZE:
1079 /* case GL_TEXTURE_BLUE_SIZE_EXT:*/
1080 case GL_TEXTURE_ALPHA_SIZE:
1081 /* case GL_TEXTURE_ALPHA_SIZE_EXT:*/
1082 case GL_TEXTURE_LUMINANCE_SIZE:
1083 /* case GL_TEXTURE_LUMINANCE_SIZE_EXT:*/
1084 case GL_TEXTURE_INTENSITY_SIZE:
1085 /* case GL_TEXTURE_INTENSITY_SIZE_EXT:*/
1086 case GL_TEXTURE_DEPTH:
1087 case GL_TEXTURE_INDEX_SIZE_EXT:
1088 case GL_TEXTURE_COMPRESSED_IMAGE_SIZE:
1089 /* case GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB:*/
1090 case GL_TEXTURE_COMPRESSED:
1091 /* case GL_TEXTURE_COMPRESSED_ARB:*/
1092 case GL_TEXTURE_DEPTH_SIZE:
1093 /* case GL_TEXTURE_DEPTH_SIZE_ARB:*/
1094 case GL_TEXTURE_STENCIL_SIZE:
1095 /* case GL_TEXTURE_STENCIL_SIZE_EXT:*/
1098 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1103 #define __glGetTexLevelParameteriv_size __glGetTexLevelParameterfv_size
1105 static inline size_t
1106 __glColorTableParameterfv_size(GLenum pname)
1109 case GL_COLOR_TABLE_SCALE:
1110 case GL_COLOR_TABLE_BIAS:
1113 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1118 #define __glColorTableParameteriv_size __glColorTableParameterfv_size
1120 static inline size_t
1121 __glGetColorTableParameterfv_size(GLenum pname)
1124 case GL_COLOR_TABLE_FORMAT:
1125 /* case GL_COLOR_TABLE_FORMAT_EXT:*/
1126 case GL_COLOR_TABLE_WIDTH:
1127 /* case GL_COLOR_TABLE_WIDTH_EXT:*/
1128 case GL_COLOR_TABLE_RED_SIZE:
1129 /* case GL_COLOR_TABLE_RED_SIZE_EXT:*/
1130 case GL_COLOR_TABLE_GREEN_SIZE:
1131 /* case GL_COLOR_TABLE_GREEN_SIZE_EXT:*/
1132 case GL_COLOR_TABLE_BLUE_SIZE:
1133 /* case GL_COLOR_TABLE_BLUE_SIZE_EXT:*/
1134 case GL_COLOR_TABLE_ALPHA_SIZE:
1135 /* case GL_COLOR_TABLE_ALPHA_SIZE_EXT:*/
1136 case GL_COLOR_TABLE_LUMINANCE_SIZE:
1137 /* case GL_COLOR_TABLE_LUMINANCE_SIZE_EXT:*/
1138 case GL_COLOR_TABLE_INTENSITY_SIZE:
1139 /* case GL_COLOR_TABLE_INTENSITY_SIZE_EXT:*/
1141 case GL_COLOR_TABLE_SCALE:
1142 case GL_COLOR_TABLE_BIAS:
1145 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1150 #define __glGetColorTableParameteriv_size __glGetColorTableParameterfv_size
1152 static inline size_t
1153 __glConvolutionParameterfv_size(GLenum pname)
1156 case GL_CONVOLUTION_BORDER_MODE:
1157 /* case GL_CONVOLUTION_BORDER_MODE_EXT:*/
1159 case GL_CONVOLUTION_FILTER_SCALE:
1160 /* case GL_CONVOLUTION_FILTER_SCALE_EXT:*/
1161 case GL_CONVOLUTION_FILTER_BIAS:
1162 /* case GL_CONVOLUTION_FILTER_BIAS_EXT:*/
1163 case GL_CONVOLUTION_BORDER_COLOR:
1164 /* case GL_CONVOLUTION_BORDER_COLOR_HP:*/
1167 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1172 #define __glConvolutionParameteriv_size __glConvolutionParameterfv_size
1174 static inline size_t
1175 __glGetConvolutionParameterfv_size(GLenum pname)
1178 case GL_CONVOLUTION_BORDER_MODE:
1179 /* case GL_CONVOLUTION_BORDER_MODE_EXT:*/
1180 case GL_CONVOLUTION_FORMAT:
1181 /* case GL_CONVOLUTION_FORMAT_EXT:*/
1182 case GL_CONVOLUTION_WIDTH:
1183 /* case GL_CONVOLUTION_WIDTH_EXT:*/
1184 case GL_CONVOLUTION_HEIGHT:
1185 /* case GL_CONVOLUTION_HEIGHT_EXT:*/
1186 case GL_MAX_CONVOLUTION_WIDTH:
1187 /* case GL_MAX_CONVOLUTION_WIDTH_EXT:*/
1188 case GL_MAX_CONVOLUTION_HEIGHT:
1189 /* case GL_MAX_CONVOLUTION_HEIGHT_EXT:*/
1191 case GL_CONVOLUTION_FILTER_SCALE:
1192 /* case GL_CONVOLUTION_FILTER_SCALE_EXT:*/
1193 case GL_CONVOLUTION_FILTER_BIAS:
1194 /* case GL_CONVOLUTION_FILTER_BIAS_EXT:*/
1195 case GL_CONVOLUTION_BORDER_COLOR:
1196 /* case GL_CONVOLUTION_BORDER_COLOR_HP:*/
1199 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1204 #define __glGetConvolutionParameteriv_size __glGetConvolutionParameterfv_size
1206 static inline size_t
1207 __glGetHistogramParameterfv_size(GLenum pname)
1210 case GL_HISTOGRAM_WIDTH:
1211 case GL_HISTOGRAM_FORMAT:
1212 case GL_HISTOGRAM_RED_SIZE:
1213 case GL_HISTOGRAM_GREEN_SIZE:
1214 case GL_HISTOGRAM_BLUE_SIZE:
1215 case GL_HISTOGRAM_ALPHA_SIZE:
1216 case GL_HISTOGRAM_LUMINANCE_SIZE:
1217 case GL_HISTOGRAM_SINK:
1220 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1225 #define __glGetHistogramParameteriv_size __glGetHistogramParameterfv_size
1227 static inline size_t
1228 __glGetMinmaxParameterfv_size(GLenum pname)
1231 case GL_MINMAX_FORMAT:
1232 case GL_MINMAX_SINK:
1235 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1240 #define __glGetMinmaxParameteriv_size __glGetMinmaxParameterfv_size
1242 static inline size_t
1243 __glGetProgramivARB_size(GLenum pname)
1246 case GL_PROGRAM_LENGTH_ARB:
1247 case GL_PROGRAM_BINDING_ARB:
1248 case GL_PROGRAM_ALU_INSTRUCTIONS_ARB:
1249 case GL_PROGRAM_TEX_INSTRUCTIONS_ARB:
1250 case GL_PROGRAM_TEX_INDIRECTIONS_ARB:
1251 case GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB:
1252 case GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB:
1253 case GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB:
1254 case GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB:
1255 case GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB:
1256 case GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB:
1257 case GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB:
1258 case GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB:
1259 case GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB:
1260 case GL_PROGRAM_FORMAT_ARB:
1261 case GL_PROGRAM_INSTRUCTIONS_ARB:
1262 case GL_MAX_PROGRAM_INSTRUCTIONS_ARB:
1263 case GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB:
1264 case GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB:
1265 case GL_PROGRAM_TEMPORARIES_ARB:
1266 case GL_MAX_PROGRAM_TEMPORARIES_ARB:
1267 case GL_PROGRAM_NATIVE_TEMPORARIES_ARB:
1268 case GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB:
1269 case GL_PROGRAM_PARAMETERS_ARB:
1270 case GL_MAX_PROGRAM_PARAMETERS_ARB:
1271 case GL_PROGRAM_NATIVE_PARAMETERS_ARB:
1272 case GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB:
1273 case GL_PROGRAM_ATTRIBS_ARB:
1274 case GL_MAX_PROGRAM_ATTRIBS_ARB:
1275 case GL_PROGRAM_NATIVE_ATTRIBS_ARB:
1276 case GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB:
1277 case GL_PROGRAM_ADDRESS_REGISTERS_ARB:
1278 case GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB:
1279 case GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB:
1280 case GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB:
1281 case GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB:
1282 case GL_MAX_PROGRAM_ENV_PARAMETERS_ARB:
1283 case GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB:
1284 case GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV:
1285 case GL_MAX_PROGRAM_CALL_DEPTH_NV:
1286 case GL_MAX_PROGRAM_IF_DEPTH_NV:
1287 case GL_MAX_PROGRAM_LOOP_DEPTH_NV:
1288 case GL_MAX_PROGRAM_LOOP_COUNT_NV:
1291 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1296 static inline size_t
1297 __glGetVertexAttribdvARB_size(GLenum pname)
1300 case GL_VERTEX_PROGRAM_ARB:
1301 case GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB:
1302 case GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB:
1303 case GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB:
1304 case GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB:
1305 case GL_CURRENT_VERTEX_ATTRIB_ARB:
1306 case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB:
1309 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1314 #define __glGetVertexAttribfvARB_size __glGetVertexAttribdvARB_size
1316 #define __glGetVertexAttribivARB_size __glGetVertexAttribdvARB_size
1318 static inline size_t
1319 __glGetQueryObjectivARB_size(GLenum pname)
1322 case GL_QUERY_RESULT_ARB:
1323 case GL_QUERY_RESULT_AVAILABLE_ARB:
1326 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1331 #define __glGetQueryObjectuivARB_size __glGetQueryObjectivARB_size
1333 static inline size_t
1334 __glGetQueryivARB_size(GLenum pname)
1337 case GL_QUERY_COUNTER_BITS_ARB:
1338 case GL_CURRENT_QUERY_ARB:
1341 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1346 static inline size_t
1347 __glPointParameterfvEXT_size(GLenum pname)
1350 case GL_POINT_SIZE_MIN:
1351 /* case GL_POINT_SIZE_MIN_ARB:*/
1352 /* case GL_POINT_SIZE_MIN_SGIS:*/
1353 case GL_POINT_SIZE_MAX:
1354 /* case GL_POINT_SIZE_MAX_ARB:*/
1355 /* case GL_POINT_SIZE_MAX_SGIS:*/
1356 case GL_POINT_FADE_THRESHOLD_SIZE:
1357 /* case GL_POINT_FADE_THRESHOLD_SIZE_ARB:*/
1358 /* case GL_POINT_FADE_THRESHOLD_SIZE_SGIS:*/
1359 case GL_POINT_SPRITE_R_MODE_NV:
1360 case GL_POINT_SPRITE_COORD_ORIGIN:
1362 case GL_POINT_DISTANCE_ATTENUATION:
1363 /* case GL_POINT_DISTANCE_ATTENUATION_ARB:*/
1364 /* case GL_POINT_DISTANCE_ATTENUATION_SGIS:*/
1367 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1372 #define __glPointParameterfv_size __glPointParameterfvEXT_size
1373 #define __glPointParameteriv_size __glPointParameterfvEXT_size
1374 #define __glPointParameterfvARB_size __glPointParameterfvEXT_size
1375 #define __glPointParameterivNV_size __glPointParameterfvEXT_size
1377 static inline size_t
1378 __glGetProgramivNV_size(GLenum pname)
1381 case GL_PROGRAM_LENGTH_NV:
1382 case GL_PROGRAM_TARGET_NV:
1383 case GL_PROGRAM_RESIDENT_NV:
1386 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1391 static inline size_t
1392 __glGetVertexAttribdvNV_size(GLenum pname)
1395 case GL_ATTRIB_ARRAY_SIZE_NV:
1396 case GL_ATTRIB_ARRAY_STRIDE_NV:
1397 case GL_ATTRIB_ARRAY_TYPE_NV:
1398 case GL_CURRENT_ATTRIB_NV:
1401 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1406 #define __glGetVertexAttribfvNV_size __glGetVertexAttribdvNV_size
1408 #define __glGetVertexAttribivNV_size __glGetVertexAttribdvNV_size
1410 static inline size_t
1411 __glGetFramebufferAttachmentParameterivEXT_size(GLenum pname)
1414 case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT:
1415 case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT:
1416 case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT:
1417 case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT:
1418 case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT:
1421 OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1426 #define __glGetFramebufferAttachmentParameteriv_size __glGetFramebufferAttachmentParameterivEXT_size
1428 static inline size_t
1429 __gl_format_channels(GLenum format) {
1431 case GL_COLOR_INDEX:
1438 case GL_DEPTH_COMPONENT:
1439 case GL_STENCIL_INDEX:
1441 case GL_DEPTH_STENCIL:
1442 case GL_LUMINANCE_ALPHA:
1452 OS::DebugMessage("warning: %s: unexpected format GLenum 0x%04X\n", __FUNCTION__, format);
1457 static inline size_t
1458 __glTexImage3D_size(GLenum format, GLenum type, GLsizei width, GLsizei height, GLsizei depth, GLint border) {
1459 size_t num_channels = __gl_format_channels(format);
1461 size_t bits_per_pixel;
1467 case GL_UNSIGNED_BYTE:
1468 bits_per_pixel = 8 * num_channels;
1471 case GL_UNSIGNED_SHORT:
1473 bits_per_pixel = 16 * num_channels;
1476 case GL_UNSIGNED_INT:
1478 bits_per_pixel = 32 * num_channels;
1480 case GL_UNSIGNED_BYTE_3_3_2:
1481 case GL_UNSIGNED_BYTE_2_3_3_REV:
1484 case GL_UNSIGNED_SHORT_4_4_4_4:
1485 case GL_UNSIGNED_SHORT_4_4_4_4_REV:
1486 case GL_UNSIGNED_SHORT_5_5_5_1:
1487 case GL_UNSIGNED_SHORT_1_5_5_5_REV:
1488 case GL_UNSIGNED_SHORT_5_6_5:
1489 case GL_UNSIGNED_SHORT_5_6_5_REV:
1490 case GL_UNSIGNED_SHORT_8_8_MESA:
1491 case GL_UNSIGNED_SHORT_8_8_REV_MESA:
1492 bits_per_pixel = 16;
1494 case GL_UNSIGNED_INT_8_8_8_8:
1495 case GL_UNSIGNED_INT_8_8_8_8_REV:
1496 case GL_UNSIGNED_INT_10_10_10_2:
1497 case GL_UNSIGNED_INT_2_10_10_10_REV:
1498 case GL_UNSIGNED_INT_24_8:
1499 case GL_UNSIGNED_INT_10F_11F_11F_REV:
1500 case GL_UNSIGNED_INT_5_9_9_9_REV:
1501 case GL_UNSIGNED_INT_S8_S8_8_8_NV:
1502 case GL_UNSIGNED_INT_8_8_S8_S8_REV_NV:
1503 bits_per_pixel = 32;
1505 case GL_FLOAT_32_UNSIGNED_INT_24_8_REV:
1506 bits_per_pixel = 64;
1509 OS::DebugMessage("warning: %s: unexpected type GLenum 0x%04X\n", __FUNCTION__, type);
1514 /* FIXME: consider glPixelStore settings */
1516 size_t row_stride = (width*bits_per_pixel + 7)/8;
1518 size_t slice_stride = height*row_stride;
1520 return depth*slice_stride;
1523 #define __glTexImage2D_size(format, type, width, height, border) __glTexImage3D_size(format, type, width, height, 1, border)
1524 #define __glTexImage1D_size(format, type, width, border) __glTexImage3D_size(format, type, width, 1, 1, border)
1526 #define __glTexSubImage3D_size(format, type, width, height, depth) __glTexImage3D_size(format, type, width, height, depth, 0)
1527 #define __glTexSubImage2D_size(format, type, width, height) __glTexImage2D_size(format, type, width, height, 0)
1528 #define __glTexSubImage1D_size(format, type, width) __glTexImage1D_size(format, type, width, 0)
1530 #define __glTexImage3DEXT_size __glTexImage3D_size
1531 #define __glTexImage2DEXT_size __glTexImage2D_size
1532 #define __glTexImage1DEXT_size __glTexImage1D_size
1533 #define __glTexSubImage3DEXT_size __glTexSubImage3D_size
1534 #define __glTexSubImage2DEXT_size __glTexSubImage2D_size
1535 #define __glTexSubImage1DEXT_size __glTexSubImage1D_size
1537 #define __glDrawPixels_size(format, type, width, height) __glTexImage2D_size(format, type, width, height, 0)
1539 #define __glBitmap_size(width, height) __glTexImage2D_size(GL_COLOR_INDEX, GL_BITMAP, width, height, 0)
1540 #define __glPolygonStipple_size() __glBitmap_size(32, 32)
1544 * 0 terminated integer/float attribute list.
1547 static inline size_t
1548 __AttribList_size(const T *pAttribList)
1555 } while (*pAttribList++);
1562 #endif /* _GL_HELPERS_HPP_ */