]> git.cworth.org Git - apitrace/blob - glsize.hpp
8d46ea512006e4d7f73ccff772b23f408b9e31d8
[apitrace] / glsize.hpp
1 /**************************************************************************
2  *
3  * Copyright 2010 VMware, Inc.
4  * Copyright 2004 IBM Corporation
5  * All Rights Reserved.
6  * 
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:
13  * 
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
16  * Software.
17  * 
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
21  * AUTHORS,
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
25  * SOFTWARE.
26  *
27  **************************************************************************/
28
29 /*
30  * Auxiliary functions to compute the size of array/blob arguments, depending.
31  *
32  * Some of these functions were semi-automatically generated with
33  * apigen/glsize.py script from Mesa's XML description of the GL enums.
34  *
35  * Other functions were done by hand.
36  */
37
38 #ifndef _GL_HELPERS_HPP_
39 #define _GL_HELPERS_HPP_
40
41
42 #include "os.hpp"
43 #include "glimports.hpp"
44
45
46 static inline size_t
47 __gl_type_size(GLenum type)
48 {
49     switch (type) {
50     case GL_BOOL:
51     case GL_BYTE:
52     case GL_UNSIGNED_BYTE:
53         return 1;
54         break;
55     case GL_SHORT:
56     case GL_UNSIGNED_SHORT:
57     case GL_2_BYTES:
58     case GL_HALF_FLOAT:
59         return 2;
60         break;
61     case GL_3_BYTES:
62         return 3;
63         break;
64     case GL_INT:
65     case GL_UNSIGNED_INT:
66     case GL_FLOAT:
67     case GL_4_BYTES:
68         return 4;
69         break;
70     case GL_DOUBLE:
71         return 8;
72         break;
73     default:
74         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, type);
75         return 0;
76     }
77 }
78
79 static inline size_t
80 __glArrayPointer_size(GLint size, GLenum type, GLsizei stride, GLsizei maxIndex)
81 {
82     GLsizei elementSize = size*__gl_type_size(type);
83     if (!stride) {
84         stride = elementSize;
85     }
86     return stride*maxIndex + elementSize;
87 }
88
89 #define __glVertexPointer_size(size, type, stride, maxIndex) __glArrayPointer_size(size, type, stride, maxIndex)
90 #define __glNormalPointer_size(type, stride, maxIndex) __glArrayPointer_size(3, type, stride, maxIndex)
91 #define __glColorPointer_size(size, type, stride, maxIndex) __glArrayPointer_size(size, type, stride, maxIndex)
92 #define __glIndexPointer_size(type, stride, maxIndex) __glArrayPointer_size(1, type, stride, maxIndex)
93 #define __glTexCoordPointer_size(size, type, stride, maxIndex) __glArrayPointer_size(size, type, stride, maxIndex)
94 #define __glEdgeFlagPointer_size(stride, maxIndex) __glArrayPointer_size(1, GL_BOOL, stride, maxIndex)
95 #define __glFogCoordPointer_size(type, stride, maxIndex) __glArrayPointer_size(1, type, stride, maxIndex)
96 #define __glSecondaryColorPointer_size(size, type, stride, maxIndex) __glArrayPointer_size(size, type, stride, maxIndex)
97
98 static inline GLuint
99 __glDrawArrays_maxindex(GLint first, GLsizei count)
100 {
101     return first + count - 1;
102 }
103
104 static inline GLuint
105 __glDrawElements_maxindex(GLsizei count, GLenum type, const GLvoid *indices)
106 {
107     GLvoid *temp = 0;
108     GLint __element_array_buffer = 0;
109     __glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, &__element_array_buffer);
110     if (__element_array_buffer) {
111         // Read indices from index buffer object
112         GLintptr offset = (GLintptr)indices;
113         GLsizeiptr size = count*__gl_type_size(type);
114         GLvoid *temp = malloc(size);
115         if (!temp) {
116             return 0;
117         }
118         memset(temp, 0, size);
119         __glGetBufferSubData(GL_ELEMENT_ARRAY_BUFFER, offset, size, temp);
120         indices = temp;
121     } else {
122         if (!indices) {
123             return 0;
124         }
125     }
126
127     GLuint maxindex = 0;
128     GLsizei i;
129     if (type == GL_UNSIGNED_BYTE) {
130         const GLubyte *p = (const GLubyte *)indices;
131         for (i = 0; i < count; ++i) {
132             if (p[i] > maxindex) {
133                 maxindex = p[i];
134             }
135         }
136     } else if (type == GL_UNSIGNED_SHORT) {
137         const GLushort *p = (const GLushort *)indices;
138         for (i = 0; i < count; ++i) {
139             if (p[i] > maxindex) {
140                 maxindex = p[i];
141             }
142         }
143     } else if (type == GL_UNSIGNED_INT) {
144         const GLuint *p = (const GLuint *)indices;
145         for (i = 0; i < count; ++i) {
146             if (p[i] > maxindex) {
147                 maxindex = p[i];
148             }
149         }
150     } else {
151         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, type);
152     }
153
154     if (__element_array_buffer) {
155         free(temp);
156     }
157
158     return maxindex;
159 }
160
161 static inline GLuint
162 __glDrawRangeElements_maxindex(GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices)
163 {
164     (void)start;
165     (void)end;
166     return __glDrawElements_maxindex(count, type, indices);
167 }
168
169 static inline size_t
170 __glCallLists_size(GLsizei n, GLenum type)
171 {
172     return n*__gl_type_size(type);
173 }
174
175 static inline size_t
176 __glFogfv_size(GLenum pname)
177 {
178     switch (pname) {
179     case GL_FOG_INDEX:
180     case GL_FOG_DENSITY:
181     case GL_FOG_START:
182     case GL_FOG_END:
183     case GL_FOG_MODE:
184     case GL_FOG_OFFSET_VALUE_SGIX:
185     case GL_FOG_DISTANCE_MODE_NV:
186         return 1;
187     case GL_FOG_COLOR:
188         return 4;
189     default:
190         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
191         return 1;
192     }
193 }
194
195 #define __glFogiv_size __glFogfv_size
196
197 static inline size_t
198 __glLightfv_size(GLenum pname)
199 {
200     switch (pname) {
201     case GL_SPOT_EXPONENT:
202     case GL_SPOT_CUTOFF:
203     case GL_CONSTANT_ATTENUATION:
204     case GL_LINEAR_ATTENUATION:
205     case GL_QUADRATIC_ATTENUATION:
206         return 1;
207     case GL_SPOT_DIRECTION:
208         return 3;
209     case GL_AMBIENT:
210     case GL_DIFFUSE:
211     case GL_SPECULAR:
212     case GL_POSITION:
213         return 4;
214     default:
215         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
216         return 1;
217     }
218 }
219
220 #define __glLightiv_size __glLightfv_size
221
222 static inline size_t
223 __glLightModelfv_size(GLenum pname)
224 {
225     switch (pname) {
226     case GL_LIGHT_MODEL_LOCAL_VIEWER:
227     case GL_LIGHT_MODEL_TWO_SIDE:
228     case GL_LIGHT_MODEL_COLOR_CONTROL:
229 /*  case GL_LIGHT_MODEL_COLOR_CONTROL_EXT:*/
230         return 1;
231     case GL_LIGHT_MODEL_AMBIENT:
232         return 4;
233     default:
234         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
235         return 1;
236     }
237 }
238
239 #define __glLightModeliv_size __glLightModelfv_size
240
241 static inline size_t
242 __glMaterialfv_size(GLenum pname)
243 {
244     switch (pname) {
245     case GL_SHININESS:
246         return 1;
247     case GL_COLOR_INDEXES:
248         return 3;
249     case GL_AMBIENT:
250     case GL_DIFFUSE:
251     case GL_SPECULAR:
252     case GL_EMISSION:
253     case GL_AMBIENT_AND_DIFFUSE:
254         return 4;
255     default:
256         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
257         return 1;
258     }
259 }
260
261 #define __glMaterialiv_size __glMaterialfv_size
262
263 static inline size_t
264 __glTexParameterfv_size(GLenum pname)
265 {
266     switch (pname) {
267     case GL_TEXTURE_MAG_FILTER:
268     case GL_TEXTURE_MIN_FILTER:
269     case GL_TEXTURE_WRAP_S:
270     case GL_TEXTURE_WRAP_T:
271     case GL_TEXTURE_PRIORITY:
272     case GL_TEXTURE_WRAP_R:
273     case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB:
274 /*  case GL_SHADOW_AMBIENT_SGIX:*/
275     case GL_TEXTURE_MIN_LOD:
276     case GL_TEXTURE_MAX_LOD:
277     case GL_TEXTURE_BASE_LEVEL:
278     case GL_TEXTURE_MAX_LEVEL:
279     case GL_TEXTURE_CLIPMAP_FRAME_SGIX:
280     case GL_TEXTURE_LOD_BIAS_S_SGIX:
281     case GL_TEXTURE_LOD_BIAS_T_SGIX:
282     case GL_TEXTURE_LOD_BIAS_R_SGIX:
283     case GL_GENERATE_MIPMAP:
284 /*  case GL_GENERATE_MIPMAP_SGIS:*/
285     case GL_TEXTURE_COMPARE_SGIX:
286     case GL_TEXTURE_COMPARE_OPERATOR_SGIX:
287     case GL_TEXTURE_MAX_CLAMP_S_SGIX:
288     case GL_TEXTURE_MAX_CLAMP_T_SGIX:
289     case GL_TEXTURE_MAX_CLAMP_R_SGIX:
290     case GL_TEXTURE_MAX_ANISOTROPY_EXT:
291     case GL_TEXTURE_LOD_BIAS:
292 /*  case GL_TEXTURE_LOD_BIAS_EXT:*/
293     case GL_TEXTURE_STORAGE_HINT_APPLE:
294     case GL_STORAGE_PRIVATE_APPLE:
295     case GL_STORAGE_CACHED_APPLE:
296     case GL_STORAGE_SHARED_APPLE:
297     case GL_DEPTH_TEXTURE_MODE:
298 /*  case GL_DEPTH_TEXTURE_MODE_ARB:*/
299     case GL_TEXTURE_COMPARE_MODE:
300 /*  case GL_TEXTURE_COMPARE_MODE_ARB:*/
301     case GL_TEXTURE_COMPARE_FUNC:
302 /*  case GL_TEXTURE_COMPARE_FUNC_ARB:*/
303     case GL_TEXTURE_UNSIGNED_REMAP_MODE_NV:
304         return 1;
305     case GL_TEXTURE_CLIPMAP_CENTER_SGIX:
306     case GL_TEXTURE_CLIPMAP_OFFSET_SGIX:
307         return 2;
308     case GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX:
309         return 3;
310     case GL_TEXTURE_BORDER_COLOR:
311     case GL_POST_TEXTURE_FILTER_BIAS_SGIX:
312     case GL_POST_TEXTURE_FILTER_SCALE_SGIX:
313         return 4;
314     default:
315         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
316         return 1;
317     }
318 }
319
320 #define __glTexParameteriv_size __glTexParameterfv_size
321
322 static inline size_t
323 __glTexEnvfv_size(GLenum pname)
324 {
325     switch (pname) {
326     case GL_ALPHA_SCALE:
327     case GL_TEXTURE_ENV_MODE:
328     case GL_TEXTURE_LOD_BIAS:
329     case GL_COMBINE_RGB:
330     case GL_COMBINE_ALPHA:
331     case GL_RGB_SCALE:
332     case GL_SOURCE0_RGB:
333     case GL_SOURCE1_RGB:
334     case GL_SOURCE2_RGB:
335     case GL_SOURCE3_RGB_NV:
336     case GL_SOURCE0_ALPHA:
337     case GL_SOURCE1_ALPHA:
338     case GL_SOURCE2_ALPHA:
339     case GL_SOURCE3_ALPHA_NV:
340     case GL_OPERAND0_RGB:
341     case GL_OPERAND1_RGB:
342     case GL_OPERAND2_RGB:
343     case GL_OPERAND3_RGB_NV:
344     case GL_OPERAND0_ALPHA:
345     case GL_OPERAND1_ALPHA:
346     case GL_OPERAND2_ALPHA:
347     case GL_OPERAND3_ALPHA_NV:
348     case GL_BUMP_TARGET_ATI:
349     case GL_COORD_REPLACE_ARB:
350 /*  case GL_COORD_REPLACE_NV:*/
351         return 1;
352     case GL_TEXTURE_ENV_COLOR:
353         return 4;
354     default:
355         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
356         return 1;
357     }
358 }
359
360 #define __glTexEnviv_size __glTexEnvfv_size
361
362 static inline size_t
363 __glTexGendv_size(GLenum pname)
364 {
365     switch (pname) {
366     case GL_TEXTURE_GEN_MODE:
367         return 1;
368     case GL_OBJECT_PLANE:
369     case GL_EYE_PLANE:
370         return 4;
371     default:
372         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
373         return 1;
374     }
375 }
376
377 #define __glTexGenfv_size __glTexGendv_size
378
379 #define __glTexGeniv_size __glTexGendv_size
380
381 static inline size_t
382 __glMap1d_size(GLenum pname)
383 {
384     switch (pname) {
385     case GL_MAP1_INDEX:
386     case GL_MAP1_TEXTURE_COORD_1:
387         return 1;
388     case GL_MAP1_TEXTURE_COORD_2:
389         return 2;
390     case GL_MAP1_NORMAL:
391     case GL_MAP1_TEXTURE_COORD_3:
392     case GL_MAP1_VERTEX_3:
393         return 3;
394     case GL_MAP1_COLOR_4:
395     case GL_MAP1_TEXTURE_COORD_4:
396     case GL_MAP1_VERTEX_4:
397         return 4;
398     default:
399         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
400         return 1;
401     }
402 }
403
404 #define __glMap1f_size __glMap1d_size
405
406 static inline size_t
407 __glMap2d_size(GLenum pname)
408 {
409     switch (pname) {
410     case GL_MAP2_INDEX:
411     case GL_MAP2_TEXTURE_COORD_1:
412         return 1;
413     case GL_MAP2_TEXTURE_COORD_2:
414         return 2;
415     case GL_MAP2_NORMAL:
416     case GL_MAP2_TEXTURE_COORD_3:
417     case GL_MAP2_VERTEX_3:
418         return 3;
419     case GL_MAP2_COLOR_4:
420     case GL_MAP2_TEXTURE_COORD_4:
421     case GL_MAP2_VERTEX_4:
422         return 4;
423     default:
424         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
425         return 1;
426     }
427 }
428
429 #define __glMap2f_size __glMap2d_size
430
431 static inline size_t
432 __glGetBooleanv_size(GLenum pname)
433 {
434     switch (pname) {
435     case GL_CURRENT_INDEX:
436     case GL_CURRENT_RASTER_INDEX:
437     case GL_CURRENT_RASTER_POSITION_VALID:
438     case GL_CURRENT_RASTER_DISTANCE:
439     case GL_POINT_SMOOTH:
440     case GL_POINT_SIZE:
441     case GL_SMOOTH_POINT_SIZE_GRANULARITY:
442     case GL_LINE_SMOOTH:
443     case GL_LINE_WIDTH:
444     case GL_LINE_WIDTH_GRANULARITY:
445     case GL_LINE_STIPPLE:
446     case GL_LINE_STIPPLE_PATTERN:
447     case GL_LINE_STIPPLE_REPEAT:
448     case GL_LIST_MODE:
449     case GL_MAX_LIST_NESTING:
450     case GL_LIST_BASE:
451     case GL_LIST_INDEX:
452     case GL_POLYGON_SMOOTH:
453     case GL_POLYGON_STIPPLE:
454     case GL_EDGE_FLAG:
455     case GL_CULL_FACE:
456     case GL_CULL_FACE_MODE:
457     case GL_FRONT_FACE:
458     case GL_LIGHTING:
459     case GL_LIGHT_MODEL_LOCAL_VIEWER:
460     case GL_LIGHT_MODEL_TWO_SIDE:
461     case GL_SHADE_MODEL:
462     case GL_COLOR_MATERIAL_FACE:
463     case GL_COLOR_MATERIAL_PARAMETER:
464     case GL_COLOR_MATERIAL:
465     case GL_FOG:
466     case GL_FOG_INDEX:
467     case GL_FOG_DENSITY:
468     case GL_FOG_START:
469     case GL_FOG_END:
470     case GL_FOG_MODE:
471     case GL_DEPTH_TEST:
472     case GL_DEPTH_WRITEMASK:
473     case GL_DEPTH_CLEAR_VALUE:
474     case GL_DEPTH_FUNC:
475     case GL_STENCIL_TEST:
476     case GL_STENCIL_CLEAR_VALUE:
477     case GL_STENCIL_FUNC:
478     case GL_STENCIL_VALUE_MASK:
479     case GL_STENCIL_FAIL:
480     case GL_STENCIL_PASS_DEPTH_FAIL:
481     case GL_STENCIL_PASS_DEPTH_PASS:
482     case GL_STENCIL_REF:
483     case GL_STENCIL_WRITEMASK:
484     case GL_MATRIX_MODE:
485     case GL_NORMALIZE:
486     case GL_MODELVIEW_STACK_DEPTH:
487     case GL_PROJECTION_STACK_DEPTH:
488     case GL_TEXTURE_STACK_DEPTH:
489     case GL_ATTRIB_STACK_DEPTH:
490     case GL_CLIENT_ATTRIB_STACK_DEPTH:
491     case GL_ALPHA_TEST:
492     case GL_ALPHA_TEST_FUNC:
493     case GL_ALPHA_TEST_REF:
494     case GL_DITHER:
495     case GL_BLEND_DST:
496     case GL_BLEND_SRC:
497     case GL_BLEND:
498     case GL_LOGIC_OP_MODE:
499     case GL_LOGIC_OP:
500     case GL_AUX_BUFFERS:
501     case GL_DRAW_BUFFER:
502     case GL_READ_BUFFER:
503     case GL_SCISSOR_TEST:
504     case GL_INDEX_CLEAR_VALUE:
505     case GL_INDEX_WRITEMASK:
506     case GL_INDEX_MODE:
507     case GL_RGBA_MODE:
508     case GL_DOUBLEBUFFER:
509     case GL_STEREO:
510     case GL_RENDER_MODE:
511     case GL_PERSPECTIVE_CORRECTION_HINT:
512     case GL_POINT_SMOOTH_HINT:
513     case GL_LINE_SMOOTH_HINT:
514     case GL_POLYGON_SMOOTH_HINT:
515     case GL_FOG_HINT:
516     case GL_TEXTURE_GEN_S:
517     case GL_TEXTURE_GEN_T:
518     case GL_TEXTURE_GEN_R:
519     case GL_TEXTURE_GEN_Q:
520     case GL_PIXEL_MAP_I_TO_I:
521     case GL_PIXEL_MAP_I_TO_I_SIZE:
522     case GL_PIXEL_MAP_S_TO_S_SIZE:
523     case GL_PIXEL_MAP_I_TO_R_SIZE:
524     case GL_PIXEL_MAP_I_TO_G_SIZE:
525     case GL_PIXEL_MAP_I_TO_B_SIZE:
526     case GL_PIXEL_MAP_I_TO_A_SIZE:
527     case GL_PIXEL_MAP_R_TO_R_SIZE:
528     case GL_PIXEL_MAP_G_TO_G_SIZE:
529     case GL_PIXEL_MAP_B_TO_B_SIZE:
530     case GL_PIXEL_MAP_A_TO_A_SIZE:
531     case GL_UNPACK_SWAP_BYTES:
532     case GL_UNPACK_LSB_FIRST:
533     case GL_UNPACK_ROW_LENGTH:
534     case GL_UNPACK_SKIP_ROWS:
535     case GL_UNPACK_SKIP_PIXELS:
536     case GL_UNPACK_ALIGNMENT:
537     case GL_PACK_SWAP_BYTES:
538     case GL_PACK_LSB_FIRST:
539     case GL_PACK_ROW_LENGTH:
540     case GL_PACK_SKIP_ROWS:
541     case GL_PACK_SKIP_PIXELS:
542     case GL_PACK_ALIGNMENT:
543     case GL_MAP_COLOR:
544     case GL_MAP_STENCIL:
545     case GL_INDEX_SHIFT:
546     case GL_INDEX_OFFSET:
547     case GL_RED_SCALE:
548     case GL_RED_BIAS:
549     case GL_ZOOM_X:
550     case GL_ZOOM_Y:
551     case GL_GREEN_SCALE:
552     case GL_GREEN_BIAS:
553     case GL_BLUE_SCALE:
554     case GL_BLUE_BIAS:
555     case GL_ALPHA_SCALE:
556     case GL_ALPHA_BIAS:
557     case GL_DEPTH_SCALE:
558     case GL_DEPTH_BIAS:
559     case GL_MAX_EVAL_ORDER:
560     case GL_MAX_LIGHTS:
561     case GL_MAX_CLIP_PLANES:
562     case GL_MAX_TEXTURE_SIZE:
563     case GL_MAX_PIXEL_MAP_TABLE:
564     case GL_MAX_ATTRIB_STACK_DEPTH:
565     case GL_MAX_MODELVIEW_STACK_DEPTH:
566     case GL_MAX_NAME_STACK_DEPTH:
567     case GL_MAX_PROJECTION_STACK_DEPTH:
568     case GL_MAX_TEXTURE_STACK_DEPTH:
569     case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
570     case GL_SUBPIXEL_BITS:
571     case GL_INDEX_BITS:
572     case GL_RED_BITS:
573     case GL_GREEN_BITS:
574     case GL_BLUE_BITS:
575     case GL_ALPHA_BITS:
576     case GL_DEPTH_BITS:
577     case GL_STENCIL_BITS:
578     case GL_ACCUM_RED_BITS:
579     case GL_ACCUM_GREEN_BITS:
580     case GL_ACCUM_BLUE_BITS:
581     case GL_ACCUM_ALPHA_BITS:
582     case GL_NAME_STACK_DEPTH:
583     case GL_AUTO_NORMAL:
584     case GL_MAP1_COLOR_4:
585     case GL_MAP1_INDEX:
586     case GL_MAP1_NORMAL:
587     case GL_MAP1_TEXTURE_COORD_1:
588     case GL_MAP1_TEXTURE_COORD_2:
589     case GL_MAP1_TEXTURE_COORD_3:
590     case GL_MAP1_TEXTURE_COORD_4:
591     case GL_MAP1_VERTEX_3:
592     case GL_MAP1_VERTEX_4:
593     case GL_MAP2_COLOR_4:
594     case GL_MAP2_INDEX:
595     case GL_MAP2_NORMAL:
596     case GL_MAP2_TEXTURE_COORD_1:
597     case GL_MAP2_TEXTURE_COORD_2:
598     case GL_MAP2_TEXTURE_COORD_3:
599     case GL_MAP2_TEXTURE_COORD_4:
600     case GL_MAP2_VERTEX_3:
601     case GL_MAP2_VERTEX_4:
602     case GL_MAP1_GRID_SEGMENTS:
603     case GL_TEXTURE_1D:
604     case GL_TEXTURE_2D:
605     case GL_POLYGON_OFFSET_UNITS:
606     case GL_CLIP_PLANE0:
607     case GL_CLIP_PLANE1:
608     case GL_CLIP_PLANE2:
609     case GL_CLIP_PLANE3:
610     case GL_CLIP_PLANE4:
611     case GL_CLIP_PLANE5:
612     case GL_LIGHT0:
613     case GL_LIGHT1:
614     case GL_LIGHT2:
615     case GL_LIGHT3:
616     case GL_LIGHT4:
617     case GL_LIGHT5:
618     case GL_LIGHT6:
619     case GL_LIGHT7:
620     case GL_BLEND_EQUATION:
621 /*  case GL_BLEND_EQUATION_EXT:*/
622     case GL_CONVOLUTION_1D:
623     case GL_CONVOLUTION_2D:
624     case GL_SEPARABLE_2D:
625     case GL_MAX_CONVOLUTION_WIDTH:
626 /*  case GL_MAX_CONVOLUTION_WIDTH_EXT:*/
627     case GL_MAX_CONVOLUTION_HEIGHT:
628 /*  case GL_MAX_CONVOLUTION_HEIGHT_EXT:*/
629     case GL_POST_CONVOLUTION_RED_SCALE:
630 /*  case GL_POST_CONVOLUTION_RED_SCALE_EXT:*/
631     case GL_POST_CONVOLUTION_GREEN_SCALE:
632 /*  case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:*/
633     case GL_POST_CONVOLUTION_BLUE_SCALE:
634 /*  case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:*/
635     case GL_POST_CONVOLUTION_ALPHA_SCALE:
636 /*  case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:*/
637     case GL_POST_CONVOLUTION_RED_BIAS:
638 /*  case GL_POST_CONVOLUTION_RED_BIAS_EXT:*/
639     case GL_POST_CONVOLUTION_GREEN_BIAS:
640 /*  case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:*/
641     case GL_POST_CONVOLUTION_BLUE_BIAS:
642 /*  case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:*/
643     case GL_POST_CONVOLUTION_ALPHA_BIAS:
644 /*  case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:*/
645     case GL_HISTOGRAM:
646     case GL_MINMAX:
647     case GL_POLYGON_OFFSET_FACTOR:
648     case GL_RESCALE_NORMAL:
649 /*  case GL_RESCALE_NORMAL_EXT:*/
650     case GL_TEXTURE_BINDING_1D:
651     case GL_TEXTURE_BINDING_2D:
652     case GL_TEXTURE_BINDING_3D:
653     case GL_PACK_SKIP_IMAGES:
654     case GL_PACK_IMAGE_HEIGHT:
655     case GL_UNPACK_SKIP_IMAGES:
656     case GL_UNPACK_IMAGE_HEIGHT:
657     case GL_TEXTURE_3D:
658     case GL_MAX_3D_TEXTURE_SIZE:
659     case GL_VERTEX_ARRAY:
660     case GL_NORMAL_ARRAY:
661     case GL_COLOR_ARRAY:
662     case GL_INDEX_ARRAY:
663     case GL_TEXTURE_COORD_ARRAY:
664     case GL_EDGE_FLAG_ARRAY:
665     case GL_VERTEX_ARRAY_SIZE:
666     case GL_VERTEX_ARRAY_TYPE:
667     case GL_VERTEX_ARRAY_STRIDE:
668     case GL_NORMAL_ARRAY_TYPE:
669     case GL_NORMAL_ARRAY_STRIDE:
670     case GL_COLOR_ARRAY_SIZE:
671     case GL_COLOR_ARRAY_TYPE:
672     case GL_COLOR_ARRAY_STRIDE:
673     case GL_INDEX_ARRAY_TYPE:
674     case GL_INDEX_ARRAY_STRIDE:
675     case GL_TEXTURE_COORD_ARRAY_SIZE:
676     case GL_TEXTURE_COORD_ARRAY_TYPE:
677     case GL_TEXTURE_COORD_ARRAY_STRIDE:
678     case GL_EDGE_FLAG_ARRAY_STRIDE:
679     case GL_MULTISAMPLE:
680 /*  case GL_MULTISAMPLE_ARB:*/
681     case GL_SAMPLE_ALPHA_TO_COVERAGE:
682 /*  case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:*/
683     case GL_SAMPLE_ALPHA_TO_ONE:
684 /*  case GL_SAMPLE_ALPHA_TO_ONE_ARB:*/
685     case GL_SAMPLE_COVERAGE:
686 /*  case GL_SAMPLE_COVERAGE_ARB:*/
687     case GL_SAMPLE_BUFFERS:
688 /*  case GL_SAMPLE_BUFFERS_ARB:*/
689     case GL_SAMPLES:
690 /*  case GL_SAMPLES_ARB:*/
691     case GL_SAMPLE_COVERAGE_VALUE:
692 /*  case GL_SAMPLE_COVERAGE_VALUE_ARB:*/
693     case GL_SAMPLE_COVERAGE_INVERT:
694 /*  case GL_SAMPLE_COVERAGE_INVERT_ARB:*/
695     case GL_COLOR_MATRIX_STACK_DEPTH:
696     case GL_MAX_COLOR_MATRIX_STACK_DEPTH:
697     case GL_POST_COLOR_MATRIX_RED_SCALE:
698     case GL_POST_COLOR_MATRIX_GREEN_SCALE:
699     case GL_POST_COLOR_MATRIX_BLUE_SCALE:
700     case GL_POST_COLOR_MATRIX_ALPHA_SCALE:
701     case GL_POST_COLOR_MATRIX_RED_BIAS:
702     case GL_POST_COLOR_MATRIX_GREEN_BIAS:
703     case GL_POST_COLOR_MATRIX_BLUE_BIAS:
704     case GL_POST_COLOR_MATRIX_ALPHA_BIAS:
705     case GL_BLEND_DST_RGB:
706     case GL_BLEND_SRC_RGB:
707     case GL_BLEND_DST_ALPHA:
708     case GL_BLEND_SRC_ALPHA:
709     case GL_COLOR_TABLE:
710     case GL_POST_CONVOLUTION_COLOR_TABLE:
711     case GL_POST_COLOR_MATRIX_COLOR_TABLE:
712     case GL_MAX_ELEMENTS_VERTICES:
713     case GL_MAX_ELEMENTS_INDICES:
714     case GL_CLIP_VOLUME_CLIPPING_HINT_EXT:
715     case GL_POINT_SIZE_MIN:
716     case GL_POINT_SIZE_MAX:
717     case GL_POINT_FADE_THRESHOLD_SIZE:
718     case GL_OCCLUSION_TEST_HP:
719     case GL_OCCLUSION_TEST_RESULT_HP:
720     case GL_LIGHT_MODEL_COLOR_CONTROL:
721     case GL_CURRENT_FOG_COORD:
722     case GL_FOG_COORDINATE_ARRAY_TYPE:
723     case GL_FOG_COORDINATE_ARRAY_STRIDE:
724     case GL_FOG_COORD_ARRAY:
725     case GL_COLOR_SUM_ARB:
726     case GL_SECONDARY_COLOR_ARRAY_SIZE:
727     case GL_SECONDARY_COLOR_ARRAY_TYPE:
728     case GL_SECONDARY_COLOR_ARRAY_STRIDE:
729     case GL_SECONDARY_COLOR_ARRAY:
730     case GL_ACTIVE_TEXTURE:
731 /*  case GL_ACTIVE_TEXTURE_ARB:*/
732     case GL_CLIENT_ACTIVE_TEXTURE:
733 /*  case GL_CLIENT_ACTIVE_TEXTURE_ARB:*/
734     case GL_MAX_TEXTURE_UNITS:
735 /*  case GL_MAX_TEXTURE_UNITS_ARB:*/
736     case GL_MAX_RENDERBUFFER_SIZE:
737 /*  case GL_MAX_RENDERBUFFER_SIZE_EXT:*/
738     case GL_TEXTURE_COMPRESSION_HINT:
739 /*  case GL_TEXTURE_COMPRESSION_HINT_ARB:*/
740     case GL_TEXTURE_RECTANGLE_ARB:
741 /*  case GL_TEXTURE_RECTANGLE_NV:*/
742     case GL_TEXTURE_BINDING_RECTANGLE_ARB:
743 /*  case GL_TEXTURE_BINDING_RECTANGLE_NV:*/
744     case GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB:
745 /*  case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:*/
746     case GL_MAX_TEXTURE_LOD_BIAS:
747     case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
748     case GL_MAX_SHININESS_NV:
749     case GL_MAX_SPOT_EXPONENT_NV:
750     case GL_TEXTURE_CUBE_MAP:
751 /*  case GL_TEXTURE_CUBE_MAP_ARB:*/
752     case GL_TEXTURE_BINDING_CUBE_MAP:
753 /*  case GL_TEXTURE_BINDING_CUBE_MAP_ARB:*/
754     case GL_MAX_CUBE_MAP_TEXTURE_SIZE:
755 /*  case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:*/
756     case GL_MULTISAMPLE_FILTER_HINT_NV:
757     case GL_FOG_DISTANCE_MODE_NV:
758     case GL_VERTEX_PROGRAM_ARB:
759     case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
760     case GL_MAX_PROGRAM_MATRICES_ARB:
761     case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
762     case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
763     case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
764     case GL_PROGRAM_ERROR_POSITION_ARB:
765     case GL_DEPTH_CLAMP:
766 /*  case GL_DEPTH_CLAMP_NV:*/
767     case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
768 /*  case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:*/
769     case GL_MAX_VERTEX_UNITS_ARB:
770     case GL_ACTIVE_VERTEX_UNITS_ARB:
771     case GL_WEIGHT_SUM_UNITY_ARB:
772     case GL_VERTEX_BLEND_ARB:
773     case GL_CURRENT_WEIGHT_ARB:
774     case GL_WEIGHT_ARRAY_TYPE_ARB:
775     case GL_WEIGHT_ARRAY_STRIDE_ARB:
776     case GL_WEIGHT_ARRAY_SIZE_ARB:
777     case GL_WEIGHT_ARRAY_ARB:
778     case GL_PACK_INVERT_MESA:
779     case GL_STENCIL_BACK_FUNC_ATI:
780     case GL_STENCIL_BACK_FAIL_ATI:
781     case GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI:
782     case GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI:
783     case GL_FRAGMENT_PROGRAM_ARB:
784     case GL_MAX_DRAW_BUFFERS_ARB:
785 /*  case GL_MAX_DRAW_BUFFERS_ATI:*/
786     case GL_DRAW_BUFFER0_ARB:
787 /*  case GL_DRAW_BUFFER0_ATI:*/
788     case GL_DRAW_BUFFER1_ARB:
789 /*  case GL_DRAW_BUFFER1_ATI:*/
790     case GL_DRAW_BUFFER2_ARB:
791 /*  case GL_DRAW_BUFFER2_ATI:*/
792     case GL_DRAW_BUFFER3_ARB:
793 /*  case GL_DRAW_BUFFER3_ATI:*/
794     case GL_DRAW_BUFFER4_ARB:
795 /*  case GL_DRAW_BUFFER4_ATI:*/
796     case GL_DRAW_BUFFER5_ARB:
797 /*  case GL_DRAW_BUFFER5_ATI:*/
798     case GL_DRAW_BUFFER6_ARB:
799 /*  case GL_DRAW_BUFFER6_ATI:*/
800     case GL_DRAW_BUFFER7_ARB:
801 /*  case GL_DRAW_BUFFER7_ATI:*/
802     case GL_DRAW_BUFFER8_ARB:
803 /*  case GL_DRAW_BUFFER8_ATI:*/
804     case GL_DRAW_BUFFER9_ARB:
805 /*  case GL_DRAW_BUFFER9_ATI:*/
806     case GL_DRAW_BUFFER10_ARB:
807 /*  case GL_DRAW_BUFFER10_ATI:*/
808     case GL_DRAW_BUFFER11_ARB:
809 /*  case GL_DRAW_BUFFER11_ATI:*/
810     case GL_DRAW_BUFFER12_ARB:
811 /*  case GL_DRAW_BUFFER12_ATI:*/
812     case GL_DRAW_BUFFER13_ARB:
813 /*  case GL_DRAW_BUFFER13_ATI:*/
814     case GL_DRAW_BUFFER14_ARB:
815 /*  case GL_DRAW_BUFFER14_ATI:*/
816     case GL_DRAW_BUFFER15_ARB:
817 /*  case GL_DRAW_BUFFER15_ATI:*/
818     case GL_BLEND_EQUATION_ALPHA_EXT:
819     case GL_MATRIX_PALETTE_ARB:
820     case GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB:
821     case GL_MAX_PALETTE_MATRICES_ARB:
822     case GL_CURRENT_PALETTE_MATRIX_ARB:
823     case GL_MATRIX_INDEX_ARRAY_ARB:
824     case GL_CURRENT_MATRIX_INDEX_ARB:
825     case GL_MATRIX_INDEX_ARRAY_SIZE_ARB:
826     case GL_MATRIX_INDEX_ARRAY_TYPE_ARB:
827     case GL_MATRIX_INDEX_ARRAY_STRIDE_ARB:
828     case GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT:
829     case GL_POINT_SPRITE_ARB:
830 /*  case GL_POINT_SPRITE_NV:*/
831     case GL_POINT_SPRITE_R_MODE_NV:
832     case GL_MAX_VERTEX_ATTRIBS_ARB:
833     case GL_MAX_TEXTURE_COORDS_ARB:
834     case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
835     case GL_DEPTH_BOUNDS_TEST_EXT:
836     case GL_ARRAY_BUFFER_BINDING_ARB:
837     case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
838     case GL_PIXEL_PACK_BUFFER_BINDING:
839     case GL_PIXEL_UNPACK_BUFFER_BINDING:
840     case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
841     case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
842     case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
843     case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
844     case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
845     case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
846     case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
847     case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
848     case GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB:
849     case GL_TEXTURE_CUBE_MAP_SEAMLESS:
850     case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT:
851     case GL_STENCIL_TEST_TWO_SIDE_EXT:
852     case GL_ACTIVE_STENCIL_FACE_EXT:
853     case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
854     case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
855     case GL_FRAMEBUFFER_BINDING:
856 /*  case GL_DRAW_FRAMEBUFFER_BINDING_EXT:*/
857     case GL_RENDERBUFFER_BINDING:
858 /*  case GL_RENDERBUFFER_BINDING_EXT:*/
859     case GL_READ_FRAMEBUFFER_BINDING:
860 /*  case GL_READ_FRAMEBUFFER_BINDING_EXT:*/
861     case GL_MAX_COLOR_ATTACHMENTS:
862 /*  case GL_MAX_COLOR_ATTACHMENTS_EXT:*/
863     case GL_MAX_SAMPLES:
864 /*  case GL_MAX_SAMPLES_EXT:*/
865     case GL_MAX_SERVER_WAIT_TIMEOUT:
866     case GL_RASTER_POSITION_UNCLIPPED_IBM:
867         return 1;
868     case GL_SMOOTH_POINT_SIZE_RANGE:
869     case GL_LINE_WIDTH_RANGE:
870     case GL_POLYGON_MODE:
871     case GL_DEPTH_RANGE:
872     case GL_MAX_VIEWPORT_DIMS:
873     case GL_MAP1_GRID_DOMAIN:
874     case GL_MAP2_GRID_SEGMENTS:
875     case GL_ALIASED_POINT_SIZE_RANGE:
876     case GL_ALIASED_LINE_WIDTH_RANGE:
877     case GL_DEPTH_BOUNDS_EXT:
878         return 2;
879     case GL_CURRENT_NORMAL:
880     case GL_POINT_DISTANCE_ATTENUATION:
881         return 3;
882     case GL_CURRENT_COLOR:
883     case GL_CURRENT_TEXTURE_COORDS:
884     case GL_CURRENT_RASTER_COLOR:
885     case GL_CURRENT_RASTER_TEXTURE_COORDS:
886     case GL_CURRENT_RASTER_POSITION:
887     case GL_LIGHT_MODEL_AMBIENT:
888     case GL_FOG_COLOR:
889     case GL_ACCUM_CLEAR_VALUE:
890     case GL_VIEWPORT:
891     case GL_SCISSOR_BOX:
892     case GL_COLOR_CLEAR_VALUE:
893     case GL_COLOR_WRITEMASK:
894     case GL_MAP2_GRID_DOMAIN:
895     case GL_BLEND_COLOR:
896 /*  case GL_BLEND_COLOR_EXT:*/
897     case GL_CURRENT_SECONDARY_COLOR:
898         return 4;
899     case GL_MODELVIEW_MATRIX:
900     case GL_PROJECTION_MATRIX:
901     case GL_TEXTURE_MATRIX:
902     case GL_MODELVIEW0_ARB:
903     case GL_COLOR_MATRIX:
904     case GL_MODELVIEW1_ARB:
905     case GL_CURRENT_MATRIX_ARB:
906     case GL_MODELVIEW2_ARB:
907     case GL_MODELVIEW3_ARB:
908     case GL_MODELVIEW4_ARB:
909     case GL_MODELVIEW5_ARB:
910     case GL_MODELVIEW6_ARB:
911     case GL_MODELVIEW7_ARB:
912     case GL_MODELVIEW8_ARB:
913     case GL_MODELVIEW9_ARB:
914     case GL_MODELVIEW10_ARB:
915     case GL_MODELVIEW11_ARB:
916     case GL_MODELVIEW12_ARB:
917     case GL_MODELVIEW13_ARB:
918     case GL_MODELVIEW14_ARB:
919     case GL_MODELVIEW15_ARB:
920     case GL_MODELVIEW16_ARB:
921     case GL_MODELVIEW17_ARB:
922     case GL_MODELVIEW18_ARB:
923     case GL_MODELVIEW19_ARB:
924     case GL_MODELVIEW20_ARB:
925     case GL_MODELVIEW21_ARB:
926     case GL_MODELVIEW22_ARB:
927     case GL_MODELVIEW23_ARB:
928     case GL_MODELVIEW24_ARB:
929     case GL_MODELVIEW25_ARB:
930     case GL_MODELVIEW26_ARB:
931     case GL_MODELVIEW27_ARB:
932     case GL_MODELVIEW28_ARB:
933     case GL_MODELVIEW29_ARB:
934     case GL_MODELVIEW30_ARB:
935     case GL_MODELVIEW31_ARB:
936     case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
937         return 16;
938 #if 0
939     case GL_FOG_COORDINATE_SOURCE:
940     case GL_COMPRESSED_TEXTURE_FORMATS:
941     case GL_MIN_PROGRAM_TEXEL_OFFSET_EXT:
942     case GL_MAX_PROGRAM_TEXEL_OFFSET_EXT:
943     case GL_RGBA_INTEGER_MODE_EXT:
944         return __glGetBooleanv_variable_size(pname);
945 #endif
946     case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS:
947     case GL_MAX_VERTEX_UNIFORM_COMPONENTS:
948     case GL_MAX_VARYING_FLOATS:
949     case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:
950     case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:
951     case GL_MAX_GEOMETRY_UNIFORM_COMPONENTS:
952     case GL_MAX_GEOMETRY_OUTPUT_VERTICES:
953     case GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS:
954         return 1;
955     default:
956         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
957         return 1;
958     }
959 }
960
961 #define __glGetDoublev_size __glGetBooleanv_size
962
963 #define __glGetFloatv_size __glGetBooleanv_size
964
965 #define __glGetIntegerv_size __glGetBooleanv_size
966
967 #define __glGetLightfv_size __glLightfv_size
968
969 #define __glGetLightiv_size __glLightfv_size
970
971 #define __glGetMaterialfv_size __glMaterialfv_size
972
973 #define __glGetMaterialiv_size __glMaterialfv_size
974
975 #define __glGetTexEnvfv_size __glTexEnvfv_size
976
977 #define __glGetTexEnviv_size __glTexEnvfv_size
978
979 #define __glGetTexGendv_size __glTexGendv_size
980
981 #define __glGetTexGenfv_size __glTexGendv_size
982
983 #define __glGetTexGeniv_size __glTexGendv_size
984
985 static inline size_t
986 __glGetTexParameterfv_size(GLenum pname)
987 {
988     switch (pname) {
989     case GL_TEXTURE_MAG_FILTER:
990     case GL_TEXTURE_MIN_FILTER:
991     case GL_TEXTURE_WRAP_S:
992     case GL_TEXTURE_WRAP_T:
993     case GL_TEXTURE_PRIORITY:
994     case GL_TEXTURE_RESIDENT:
995     case GL_TEXTURE_WRAP_R:
996     case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB:
997 /*  case GL_SHADOW_AMBIENT_SGIX:*/
998     case GL_TEXTURE_MIN_LOD:
999     case GL_TEXTURE_MAX_LOD:
1000     case GL_TEXTURE_BASE_LEVEL:
1001     case GL_TEXTURE_MAX_LEVEL:
1002     case GL_TEXTURE_CLIPMAP_FRAME_SGIX:
1003     case GL_TEXTURE_LOD_BIAS_S_SGIX:
1004     case GL_TEXTURE_LOD_BIAS_T_SGIX:
1005     case GL_TEXTURE_LOD_BIAS_R_SGIX:
1006     case GL_GENERATE_MIPMAP:
1007 /*  case GL_GENERATE_MIPMAP_SGIS:*/
1008     case GL_TEXTURE_COMPARE_SGIX:
1009     case GL_TEXTURE_COMPARE_OPERATOR_SGIX:
1010     case GL_TEXTURE_MAX_CLAMP_S_SGIX:
1011     case GL_TEXTURE_MAX_CLAMP_T_SGIX:
1012     case GL_TEXTURE_MAX_CLAMP_R_SGIX:
1013     case GL_TEXTURE_MAX_ANISOTROPY_EXT:
1014     case GL_TEXTURE_LOD_BIAS:
1015 /*  case GL_TEXTURE_LOD_BIAS_EXT:*/
1016     case GL_TEXTURE_RANGE_LENGTH_APPLE:
1017     case GL_TEXTURE_STORAGE_HINT_APPLE:
1018     case GL_DEPTH_TEXTURE_MODE:
1019 /*  case GL_DEPTH_TEXTURE_MODE_ARB:*/
1020     case GL_TEXTURE_COMPARE_MODE:
1021 /*  case GL_TEXTURE_COMPARE_MODE_ARB:*/
1022     case GL_TEXTURE_COMPARE_FUNC:
1023 /*  case GL_TEXTURE_COMPARE_FUNC_ARB:*/
1024     case GL_TEXTURE_UNSIGNED_REMAP_MODE_NV:
1025         return 1;
1026     case GL_TEXTURE_CLIPMAP_CENTER_SGIX:
1027     case GL_TEXTURE_CLIPMAP_OFFSET_SGIX:
1028         return 2;
1029     case GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX:
1030         return 3;
1031     case GL_TEXTURE_BORDER_COLOR:
1032     case GL_POST_TEXTURE_FILTER_BIAS_SGIX:
1033     case GL_POST_TEXTURE_FILTER_SCALE_SGIX:
1034         return 4;
1035     default:
1036         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1037         return 1;
1038     }
1039 }
1040
1041 #define __glGetTexParameteriv_size __glGetTexParameterfv_size
1042
1043 static inline size_t
1044 __glGetTexLevelParameterfv_size(GLenum pname)
1045 {
1046     switch (pname) {
1047     case GL_TEXTURE_WIDTH:
1048     case GL_TEXTURE_HEIGHT:
1049     case GL_TEXTURE_COMPONENTS:
1050     case GL_TEXTURE_BORDER:
1051     case GL_TEXTURE_RED_SIZE:
1052 /*  case GL_TEXTURE_RED_SIZE_EXT:*/
1053     case GL_TEXTURE_GREEN_SIZE:
1054 /*  case GL_TEXTURE_GREEN_SIZE_EXT:*/
1055     case GL_TEXTURE_BLUE_SIZE:
1056 /*  case GL_TEXTURE_BLUE_SIZE_EXT:*/
1057     case GL_TEXTURE_ALPHA_SIZE:
1058 /*  case GL_TEXTURE_ALPHA_SIZE_EXT:*/
1059     case GL_TEXTURE_LUMINANCE_SIZE:
1060 /*  case GL_TEXTURE_LUMINANCE_SIZE_EXT:*/
1061     case GL_TEXTURE_INTENSITY_SIZE:
1062 /*  case GL_TEXTURE_INTENSITY_SIZE_EXT:*/
1063     case GL_TEXTURE_DEPTH:
1064     case GL_TEXTURE_INDEX_SIZE_EXT:
1065     case GL_TEXTURE_COMPRESSED_IMAGE_SIZE:
1066 /*  case GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB:*/
1067     case GL_TEXTURE_COMPRESSED:
1068 /*  case GL_TEXTURE_COMPRESSED_ARB:*/
1069     case GL_TEXTURE_DEPTH_SIZE:
1070 /*  case GL_TEXTURE_DEPTH_SIZE_ARB:*/
1071     case GL_TEXTURE_STENCIL_SIZE:
1072 /*  case GL_TEXTURE_STENCIL_SIZE_EXT:*/
1073         return 1;
1074     default:
1075         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1076         return 1;
1077     }
1078 }
1079
1080 #define __glGetTexLevelParameteriv_size __glGetTexLevelParameterfv_size
1081
1082 static inline size_t
1083 __glColorTableParameterfv_size(GLenum pname)
1084 {
1085     switch (pname) {
1086     case GL_COLOR_TABLE_SCALE:
1087     case GL_COLOR_TABLE_BIAS:
1088         return 4;
1089     default:
1090         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1091         return 1;
1092     }
1093 }
1094
1095 #define __glColorTableParameteriv_size __glColorTableParameterfv_size
1096
1097 static inline size_t
1098 __glGetColorTableParameterfv_size(GLenum pname)
1099 {
1100     switch (pname) {
1101     case GL_COLOR_TABLE_FORMAT:
1102 /*  case GL_COLOR_TABLE_FORMAT_EXT:*/
1103     case GL_COLOR_TABLE_WIDTH:
1104 /*  case GL_COLOR_TABLE_WIDTH_EXT:*/
1105     case GL_COLOR_TABLE_RED_SIZE:
1106 /*  case GL_COLOR_TABLE_RED_SIZE_EXT:*/
1107     case GL_COLOR_TABLE_GREEN_SIZE:
1108 /*  case GL_COLOR_TABLE_GREEN_SIZE_EXT:*/
1109     case GL_COLOR_TABLE_BLUE_SIZE:
1110 /*  case GL_COLOR_TABLE_BLUE_SIZE_EXT:*/
1111     case GL_COLOR_TABLE_ALPHA_SIZE:
1112 /*  case GL_COLOR_TABLE_ALPHA_SIZE_EXT:*/
1113     case GL_COLOR_TABLE_LUMINANCE_SIZE:
1114 /*  case GL_COLOR_TABLE_LUMINANCE_SIZE_EXT:*/
1115     case GL_COLOR_TABLE_INTENSITY_SIZE:
1116 /*  case GL_COLOR_TABLE_INTENSITY_SIZE_EXT:*/
1117         return 1;
1118     case GL_COLOR_TABLE_SCALE:
1119     case GL_COLOR_TABLE_BIAS:
1120         return 4;
1121     default:
1122         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1123         return 1;
1124     }
1125 }
1126
1127 #define __glGetColorTableParameteriv_size __glGetColorTableParameterfv_size
1128
1129 static inline size_t
1130 __glConvolutionParameterfv_size(GLenum pname)
1131 {
1132     switch (pname) {
1133     case GL_CONVOLUTION_BORDER_MODE:
1134 /*  case GL_CONVOLUTION_BORDER_MODE_EXT:*/
1135         return 1;
1136     case GL_CONVOLUTION_FILTER_SCALE:
1137 /*  case GL_CONVOLUTION_FILTER_SCALE_EXT:*/
1138     case GL_CONVOLUTION_FILTER_BIAS:
1139 /*  case GL_CONVOLUTION_FILTER_BIAS_EXT:*/
1140     case GL_CONVOLUTION_BORDER_COLOR:
1141 /*  case GL_CONVOLUTION_BORDER_COLOR_HP:*/
1142         return 4;
1143     default:
1144         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1145         return 1;
1146     }
1147 }
1148
1149 #define __glConvolutionParameteriv_size __glConvolutionParameterfv_size
1150
1151 static inline size_t
1152 __glGetConvolutionParameterfv_size(GLenum pname)
1153 {
1154     switch (pname) {
1155     case GL_CONVOLUTION_BORDER_MODE:
1156 /*  case GL_CONVOLUTION_BORDER_MODE_EXT:*/
1157     case GL_CONVOLUTION_FORMAT:
1158 /*  case GL_CONVOLUTION_FORMAT_EXT:*/
1159     case GL_CONVOLUTION_WIDTH:
1160 /*  case GL_CONVOLUTION_WIDTH_EXT:*/
1161     case GL_CONVOLUTION_HEIGHT:
1162 /*  case GL_CONVOLUTION_HEIGHT_EXT:*/
1163     case GL_MAX_CONVOLUTION_WIDTH:
1164 /*  case GL_MAX_CONVOLUTION_WIDTH_EXT:*/
1165     case GL_MAX_CONVOLUTION_HEIGHT:
1166 /*  case GL_MAX_CONVOLUTION_HEIGHT_EXT:*/
1167         return 1;
1168     case GL_CONVOLUTION_FILTER_SCALE:
1169 /*  case GL_CONVOLUTION_FILTER_SCALE_EXT:*/
1170     case GL_CONVOLUTION_FILTER_BIAS:
1171 /*  case GL_CONVOLUTION_FILTER_BIAS_EXT:*/
1172     case GL_CONVOLUTION_BORDER_COLOR:
1173 /*  case GL_CONVOLUTION_BORDER_COLOR_HP:*/
1174         return 4;
1175     default:
1176         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1177         return 1;
1178     }
1179 }
1180
1181 #define __glGetConvolutionParameteriv_size __glGetConvolutionParameterfv_size
1182
1183 static inline size_t
1184 __glGetHistogramParameterfv_size(GLenum pname)
1185 {
1186     switch (pname) {
1187     case GL_HISTOGRAM_WIDTH:
1188     case GL_HISTOGRAM_FORMAT:
1189     case GL_HISTOGRAM_RED_SIZE:
1190     case GL_HISTOGRAM_GREEN_SIZE:
1191     case GL_HISTOGRAM_BLUE_SIZE:
1192     case GL_HISTOGRAM_ALPHA_SIZE:
1193     case GL_HISTOGRAM_LUMINANCE_SIZE:
1194     case GL_HISTOGRAM_SINK:
1195         return 1;
1196     default:
1197         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1198         return 1;
1199     }
1200 }
1201
1202 #define __glGetHistogramParameteriv_size __glGetHistogramParameterfv_size
1203
1204 static inline size_t
1205 __glGetMinmaxParameterfv_size(GLenum pname)
1206 {
1207     switch (pname) {
1208     case GL_MINMAX_FORMAT:
1209     case GL_MINMAX_SINK:
1210         return 1;
1211     default:
1212         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1213         return 1;
1214     }
1215 }
1216
1217 #define __glGetMinmaxParameteriv_size __glGetMinmaxParameterfv_size
1218
1219 static inline size_t
1220 __glGetProgramivARB_size(GLenum pname)
1221 {
1222     switch (pname) {
1223     case GL_PROGRAM_LENGTH_ARB:
1224     case GL_PROGRAM_BINDING_ARB:
1225     case GL_PROGRAM_ALU_INSTRUCTIONS_ARB:
1226     case GL_PROGRAM_TEX_INSTRUCTIONS_ARB:
1227     case GL_PROGRAM_TEX_INDIRECTIONS_ARB:
1228     case GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB:
1229     case GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB:
1230     case GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB:
1231     case GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB:
1232     case GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB:
1233     case GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB:
1234     case GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB:
1235     case GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB:
1236     case GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB:
1237     case GL_PROGRAM_FORMAT_ARB:
1238     case GL_PROGRAM_INSTRUCTIONS_ARB:
1239     case GL_MAX_PROGRAM_INSTRUCTIONS_ARB:
1240     case GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB:
1241     case GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB:
1242     case GL_PROGRAM_TEMPORARIES_ARB:
1243     case GL_MAX_PROGRAM_TEMPORARIES_ARB:
1244     case GL_PROGRAM_NATIVE_TEMPORARIES_ARB:
1245     case GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB:
1246     case GL_PROGRAM_PARAMETERS_ARB:
1247     case GL_MAX_PROGRAM_PARAMETERS_ARB:
1248     case GL_PROGRAM_NATIVE_PARAMETERS_ARB:
1249     case GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB:
1250     case GL_PROGRAM_ATTRIBS_ARB:
1251     case GL_MAX_PROGRAM_ATTRIBS_ARB:
1252     case GL_PROGRAM_NATIVE_ATTRIBS_ARB:
1253     case GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB:
1254     case GL_PROGRAM_ADDRESS_REGISTERS_ARB:
1255     case GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB:
1256     case GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB:
1257     case GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB:
1258     case GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB:
1259     case GL_MAX_PROGRAM_ENV_PARAMETERS_ARB:
1260     case GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB:
1261     case GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV:
1262     case GL_MAX_PROGRAM_CALL_DEPTH_NV:
1263     case GL_MAX_PROGRAM_IF_DEPTH_NV:
1264     case GL_MAX_PROGRAM_LOOP_DEPTH_NV:
1265     case GL_MAX_PROGRAM_LOOP_COUNT_NV:
1266         return 1;
1267     default:
1268         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1269         return 1;
1270     }
1271 }
1272
1273 static inline size_t
1274 __glGetVertexAttribdvARB_size(GLenum pname)
1275 {
1276     switch (pname) {
1277     case GL_VERTEX_PROGRAM_ARB:
1278     case GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB:
1279     case GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB:
1280     case GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB:
1281     case GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB:
1282     case GL_CURRENT_VERTEX_ATTRIB_ARB:
1283     case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB:
1284         return 1;
1285     default:
1286         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1287         return 1;
1288     }
1289 }
1290
1291 #define __glGetVertexAttribfvARB_size __glGetVertexAttribdvARB_size
1292
1293 #define __glGetVertexAttribivARB_size __glGetVertexAttribdvARB_size
1294
1295 static inline size_t
1296 __glGetQueryObjectivARB_size(GLenum pname)
1297 {
1298     switch (pname) {
1299     case GL_QUERY_RESULT_ARB:
1300     case GL_QUERY_RESULT_AVAILABLE_ARB:
1301         return 1;
1302     default:
1303         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1304         return 1;
1305     }
1306 }
1307
1308 #define __glGetQueryObjectuivARB_size __glGetQueryObjectivARB_size
1309
1310 static inline size_t
1311 __glGetQueryivARB_size(GLenum pname)
1312 {
1313     switch (pname) {
1314     case GL_QUERY_COUNTER_BITS_ARB:
1315     case GL_CURRENT_QUERY_ARB:
1316         return 1;
1317     default:
1318         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1319         return 1;
1320     }
1321 }
1322
1323 static inline size_t
1324 __glPointParameterfvEXT_size(GLenum pname)
1325 {
1326     switch (pname) {
1327     case GL_POINT_SIZE_MIN:
1328 /*  case GL_POINT_SIZE_MIN_ARB:*/
1329 /*  case GL_POINT_SIZE_MIN_SGIS:*/
1330     case GL_POINT_SIZE_MAX:
1331 /*  case GL_POINT_SIZE_MAX_ARB:*/
1332 /*  case GL_POINT_SIZE_MAX_SGIS:*/
1333     case GL_POINT_FADE_THRESHOLD_SIZE:
1334 /*  case GL_POINT_FADE_THRESHOLD_SIZE_ARB:*/
1335 /*  case GL_POINT_FADE_THRESHOLD_SIZE_SGIS:*/
1336     case GL_POINT_SPRITE_R_MODE_NV:
1337     case GL_POINT_SPRITE_COORD_ORIGIN:
1338         return 1;
1339     case GL_POINT_DISTANCE_ATTENUATION:
1340 /*  case GL_POINT_DISTANCE_ATTENUATION_ARB:*/
1341 /*  case GL_POINT_DISTANCE_ATTENUATION_SGIS:*/
1342         return 3;
1343     default:
1344         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1345         return 1;
1346     }
1347 }
1348
1349 #define __glPointParameterfv_size __glPointParameterfvEXT_size
1350 #define __glPointParameteriv_size __glPointParameterfvEXT_size
1351 #define __glPointParameterfvARB_size __glPointParameterfvEXT_size
1352 #define __glPointParameterivNV_size __glPointParameterfvEXT_size
1353
1354 static inline size_t
1355 __glGetProgramivNV_size(GLenum pname)
1356 {
1357     switch (pname) {
1358     case GL_PROGRAM_LENGTH_NV:
1359     case GL_PROGRAM_TARGET_NV:
1360     case GL_PROGRAM_RESIDENT_NV:
1361         return 1;
1362     default:
1363         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1364         return 1;
1365     }
1366 }
1367
1368 static inline size_t
1369 __glGetVertexAttribdvNV_size(GLenum pname)
1370 {
1371     switch (pname) {
1372     case GL_ATTRIB_ARRAY_SIZE_NV:
1373     case GL_ATTRIB_ARRAY_STRIDE_NV:
1374     case GL_ATTRIB_ARRAY_TYPE_NV:
1375     case GL_CURRENT_ATTRIB_NV:
1376         return 1;
1377     default:
1378         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1379         return 1;
1380     }
1381 }
1382
1383 #define __glGetVertexAttribfvNV_size __glGetVertexAttribdvNV_size
1384
1385 #define __glGetVertexAttribivNV_size __glGetVertexAttribdvNV_size
1386
1387 static inline size_t
1388 __glGetFramebufferAttachmentParameterivEXT_size(GLenum pname)
1389 {
1390     switch (pname) {
1391     case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT:
1392     case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT:
1393     case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT:
1394     case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT:
1395     case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT:
1396         return 1;
1397     default:
1398         OS::DebugMessage("warning: %s: unknown GLenum 0x%04X\n", __FUNCTION__, pname);
1399         return 1;
1400     }
1401 }
1402
1403 #define __glGetFramebufferAttachmentParameteriv_size __glGetFramebufferAttachmentParameterivEXT_size
1404
1405 static inline size_t
1406 __glTexImage3D_size(GLenum format, GLenum type, GLsizei width, GLsizei height, GLsizei depth, GLint border) {
1407     size_t num_channels;
1408     switch (format) {
1409     case GL_COLOR_INDEX:
1410     case GL_RED:
1411     case GL_GREEN:
1412     case GL_BLUE:
1413     case GL_ALPHA:
1414     case GL_INTENSITY:
1415     case GL_DEPTH_COMPONENT:
1416     case GL_STENCIL_INDEX:
1417         num_channels = 1;
1418         break;
1419     case GL_LUMINANCE_ALPHA:
1420         num_channels = 2;
1421         break;
1422     case GL_RGB:
1423     case GL_BGR:
1424         num_channels = 3;
1425         break;
1426     case GL_RGBA:
1427     case GL_BGRA:
1428         num_channels = 4;
1429         break;
1430     default:
1431         OS::DebugMessage("warning: %s: unexpected GLenum 0x%04X\n", __FUNCTION__, format);
1432         num_channels = 0;
1433         break;
1434     }
1435
1436     size_t bits_per_pixel;
1437     switch (type) {
1438     case GL_BITMAP:
1439         bits_per_pixel = 1;
1440         break;
1441     case GL_BYTE:
1442     case GL_UNSIGNED_BYTE:
1443         bits_per_pixel = 8 * num_channels;
1444         break;
1445     case GL_SHORT:
1446     case GL_UNSIGNED_SHORT:
1447         bits_per_pixel = 16 * num_channels;
1448         break;
1449     case GL_INT:
1450     case GL_UNSIGNED_INT:
1451     case GL_FLOAT:
1452         bits_per_pixel = 32 * num_channels;
1453         break;
1454     case GL_UNSIGNED_BYTE_3_3_2:
1455     case GL_UNSIGNED_BYTE_2_3_3_REV:
1456     case GL_UNSIGNED_SHORT_5_6_5:
1457     case GL_UNSIGNED_SHORT_5_6_5_REV:
1458         bits_per_pixel = 8;
1459         break;
1460     case GL_UNSIGNED_SHORT_4_4_4_4:
1461     case GL_UNSIGNED_SHORT_4_4_4_4_REV:
1462     case GL_UNSIGNED_SHORT_5_5_5_1:
1463     case GL_UNSIGNED_SHORT_1_5_5_5_REV:
1464         bits_per_pixel = 16;
1465         break;
1466     case GL_UNSIGNED_INT_8_8_8_8:
1467     case GL_UNSIGNED_INT_8_8_8_8_REV:
1468     case GL_UNSIGNED_INT_10_10_10_2:
1469     case GL_UNSIGNED_INT_2_10_10_10_REV:
1470         bits_per_pixel = 32;
1471         break;
1472     default:
1473         OS::DebugMessage("warning: %s: unexpected GLenum 0x%04X\n", __FUNCTION__, type);
1474         bits_per_pixel = 0;
1475         break;
1476     }
1477
1478     /* FIXME: consider glPixelStore settings */
1479
1480     size_t row_stride = (width*bits_per_pixel + 7)/8;
1481
1482     size_t slice_stride = height*row_stride;
1483
1484     return depth*slice_stride;
1485 }
1486
1487 #define __glTexImage2D_size(format, type, width, height, border) __glTexImage3D_size(format, type, width, height, 1, border)
1488 #define __glTexImage1D_size(format, type, width, border)         __glTexImage3D_size(format, type, width, 1, 1, border)
1489
1490 #define __glTexSubImage3D_size(format, type, width, height, depth) __glTexImage3D_size(format, type, width, height, depth, 0)
1491 #define __glTexSubImage2D_size(format, type, width, height)        __glTexImage2D_size(format, type, width, height, 0)
1492 #define __glTexSubImage1D_size(format, type, width)                __glTexImage1D_size(format, type, width, 0)
1493
1494 #define __glTexImage3DEXT_size __glTexImage3D_size
1495 #define __glTexImage2DEXT_size __glTexImage2D_size
1496 #define __glTexImage1DEXT_size __glTexImage1D_size
1497 #define __glTexSubImage3DEXT_size __glTexSubImage3D_size
1498 #define __glTexSubImage2DEXT_size __glTexSubImage2D_size
1499 #define __glTexSubImage1DEXT_size __glTexSubImage1D_size
1500
1501 #define __glDrawPixels_size(format, type, width, height) __glTexImage2D_size(format, type, width, height, 0)
1502
1503 #define __glBitmap_size(width, height) __glTexImage2D_size(GL_COLOR_INDEX, GL_BITMAP, width, height, 0)
1504 #define __glPolygonStipple_size() __glBitmap_size(32, 32)
1505
1506 #endif /* _GL_HELPERS_HPP_ */