1 /* Copyright © 2013, Intel Corporation
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24 /* The prototypes for some OpenGL functions changed at one point from:
26 * const void* *indices
28 * const void* const coist *indices
30 * This makes it difficult for us to provide an implementation of
31 * these functions that is consistent with the locally-available gl.h
32 * since we don't know if the extra const will be present or not.
34 * To workaround this problem, we simply #define away const altogether
35 * before including gl.h.
37 * Kudos to Keith Packard for suggesting this kludge.
41 #define GL_GLEXT_PROTOTYPES
50 static void *gl_handle;
52 /* Switch metrics operation persistently, (until next SWITCH) */
53 #define SWITCH_METRICS_OP(op) \
54 metrics_counter_stop (); \
55 metrics_set_current_op (op); \
56 metrics_counter_start ();
58 /* Switch metrics operation temporarily, see RESTORE_METRICS_OP */
59 #define SAVE_THEN_SWITCH_METRICS_OP(op) \
60 metrics_op_t save = metrics_get_current_op (); \
61 SWITCH_METRICS_OP (op);
63 /* Switch back to metrics operation saved by SAVE_THEN_SWITCH_METRICS_OP */
64 #define RESTORE_METRICS_OP(op) \
65 SWITCH_METRICS_OP (save);
68 glwrap_set_gl_handle (void *handle)
70 if (gl_handle == NULL)
75 glwrap_lookup (char *name)
79 /* We don't call dlopen here to find the library in which to
80 * perform a dlsym lookup. That's because the application may
81 * be loading libGL.so or libGLESv2.so for its OpenGL symbols.
83 * So we instead watch for one of those filenames to go by in
84 * our dlopen wrapper, which will then call
85 * glwrap_set_gl_handle to give us the handle to use here.
87 * If the application hasn't called dlopen on a "libGL"
88 * library, then presumably the application is linked directly
89 * to an OpenGL implementation. In this case, we can use
90 * RTLD_NEXT to find the symbol.
92 * But just in case, we also let the user override that by
93 * specifying the FIPS_LIBGL environment variable to the path
94 * of the real libGL.so library that fips should dlopen here.
96 if (gl_handle == NULL) {
99 path = getenv ("FIPS_LIBGL");
101 path = getenv ("GLAZE_LIBGL");
103 gl_handle = dlopen (path, RTLD_LAZY);
105 if (gl_handle == NULL) {
106 fprintf (stderr, "Failed to dlopen FIPS_LIBGL: "
111 gl_handle = RTLD_NEXT;
115 ret = dlwrap_real_dlsym (gl_handle, name);
118 fprintf (stderr, "fips: Error: glwrap_lookup failed to dlsym %s\n",
126 /* With a program change, we stop the counter, update the
127 * active program, then start the counter up again. */
129 glUseProgram (GLuint program)
131 SWITCH_METRICS_OP (METRICS_OP_SHADER + program);
133 GLWRAP_DEFER(glUseProgram, program);
137 glUseProgramObjectARB (GLhandleARB programObj)
139 SWITCH_METRICS_OP (METRICS_OP_SHADER + programObj);
141 GLWRAP_DEFER(glUseProgramObjectARB, programObj);
144 /* METRICS_OP_ACCUM */
146 glAccum (GLenum op, GLfloat value)
148 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_ACCUM);
150 GLWRAP_DEFER (glAccum, op, value);
152 RESTORE_METRICS_OP ();
156 glClearAccum (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
158 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_ACCUM);
160 GLWRAP_DEFER (glClearAccum, red, green, blue, alpha);
162 RESTORE_METRICS_OP ();
166 glClearAccumxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
168 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_ACCUM);
170 GLWRAP_DEFER (glClearAccumxOES, red, green, blue, alpha);
172 RESTORE_METRICS_OP ();
175 /* METRICS_OP_BUFFER_DATA */
177 glBufferData (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage)
179 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
181 GLWRAP_DEFER (glBufferData, target, size, data, usage);
183 RESTORE_METRICS_OP ();
187 glNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const GLvoid *data,
190 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
192 GLWRAP_DEFER (glNamedBufferDataEXT, buffer, size, data, usage);
194 RESTORE_METRICS_OP ();
198 glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size,
201 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
203 GLWRAP_DEFER (glBufferSubData, target, offset, size, data);
205 RESTORE_METRICS_OP ();
209 glNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size,
212 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
214 GLWRAP_DEFER (glNamedBufferSubDataEXT, buffer, offset, size, data);
216 RESTORE_METRICS_OP ();
220 glMapBuffer (GLenum target, GLenum access)
224 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
226 GLWRAP_DEFER_WITH_RETURN (ret, glMapBuffer, target, access);
228 RESTORE_METRICS_OP ();
234 glMapBufferARB (GLenum target, GLenum access)
238 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
240 GLWRAP_DEFER_WITH_RETURN (ret, glMapBufferARB, target, access);
242 RESTORE_METRICS_OP ();
248 glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length,
253 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
255 GLWRAP_DEFER_WITH_RETURN (ret, glMapBufferRange, target, offset,
258 RESTORE_METRICS_OP ();
264 glUnmapBuffer (GLenum target)
268 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
270 GLWRAP_DEFER_WITH_RETURN (ret, glUnmapBuffer, target);
272 RESTORE_METRICS_OP ();
278 glUnmapNamedBufferEXT (GLuint buffer)
282 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
284 GLWRAP_DEFER_WITH_RETURN (ret, glUnmapNamedBufferEXT, buffer);
286 RESTORE_METRICS_OP ();
292 glUnmapBufferARB (GLenum target)
296 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
298 GLWRAP_DEFER_WITH_RETURN (ret, glUnmapBufferARB, target);
300 RESTORE_METRICS_OP ();
306 glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length)
308 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
310 GLWRAP_DEFER (glFlushMappedBufferRange, target, offset, length);
312 RESTORE_METRICS_OP ();
316 glFlushMappedBufferRangeAPPLE (GLenum target, GLintptr offset, GLsizeiptr size)
318 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
320 GLWRAP_DEFER (glFlushMappedBufferRangeAPPLE, target, offset, size);
322 RESTORE_METRICS_OP ();
326 glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset,
329 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
331 GLWRAP_DEFER (glFlushMappedNamedBufferRangeEXT, buffer, offset, length);
333 RESTORE_METRICS_OP ();
337 glMapNamedBufferEXT (GLuint buffer, GLenum access)
341 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
343 GLWRAP_DEFER_WITH_RETURN (ret, glMapNamedBufferEXT, buffer, access);
345 RESTORE_METRICS_OP ();
351 glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length,
356 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
358 GLWRAP_DEFER_WITH_RETURN (ret, glMapNamedBufferRangeEXT, buffer,
359 offset, length, access);
361 RESTORE_METRICS_OP ();
366 /* METRICS_OP_BUFFER_SUB_DATA */
368 glCopyBufferSubData (GLenum readTarget, GLenum writeTarget,
369 GLintptr readOffset, GLintptr writeOffset,
372 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_SUB_DATA);
374 GLWRAP_DEFER (glCopyBufferSubData, readTarget, writeTarget,
375 readOffset, writeOffset, size);
377 RESTORE_METRICS_OP ();
381 glNamedCopyBufferSubDataEXT (GLuint readBuffer, GLuint writeBuffer,
382 GLintptr readOffset, GLintptr writeOffset,
385 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_SUB_DATA);
387 GLWRAP_DEFER (glNamedCopyBufferSubDataEXT, readBuffer,
388 writeBuffer, readOffset, writeOffset, size);
390 RESTORE_METRICS_OP ();
393 /* METRICS_OP_BITMAP */
395 glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig,
396 GLfloat xmove, GLfloat ymove, const GLubyte *bitmap)
398 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BITMAP);
400 GLWRAP_DEFER (glBitmap, width, height, xorig, yorig,
401 xmove, ymove, bitmap);
403 RESTORE_METRICS_OP ();
407 glBitmapxOES (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig,
408 GLfixed xmove, GLfixed ymove, const GLubyte *bitmap)
410 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BITMAP);
412 GLWRAP_DEFER (glBitmapxOES, width, height, xorig, yorig,
413 xmove, ymove, bitmap);
415 RESTORE_METRICS_OP ();
418 /* METRICS_OP_BLIT_FRAMEBUFFER */
420 glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
421 GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
422 GLbitfield mask, GLenum filter)
424 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BLIT_FRAMEBUFFER);
426 GLWRAP_DEFER (glBlitFramebuffer, srcX0, srcY0, srcX1, srcY1,
427 dstX0, dstY0, dstX1, dstY1, mask, filter);
429 RESTORE_METRICS_OP ();
433 glBlitFramebufferEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
434 GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
435 GLbitfield mask, GLenum filter)
437 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BLIT_FRAMEBUFFER);
439 GLWRAP_DEFER (glBlitFramebufferEXT, srcX0, srcY0, srcX1, srcY1,
440 dstX0, dstY0, dstX1, dstY1, mask, filter);
442 RESTORE_METRICS_OP ();
445 /* METRICS_OP_CLEAR */
447 glClear (GLbitfield mask)
449 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR);
451 GLWRAP_DEFER (glClear, mask);
453 RESTORE_METRICS_OP ();
457 glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
459 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR);
461 GLWRAP_DEFER (glClearBufferfi, buffer, drawbuffer, depth, stencil);
463 RESTORE_METRICS_OP ();
467 glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value)
469 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR);
471 GLWRAP_DEFER (glClearBufferfv, buffer, drawbuffer, value);
473 RESTORE_METRICS_OP ();
477 glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value)
479 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR);
481 GLWRAP_DEFER (glClearBufferiv, buffer, drawbuffer, value);
483 RESTORE_METRICS_OP ();
487 glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value)
489 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR);
491 GLWRAP_DEFER (glClearBufferuiv, buffer, drawbuffer, value);
493 RESTORE_METRICS_OP ();
496 /* METRICS_OP_CLEAR_BUFFER_DATA */
499 glClearBufferData (GLenum target, GLenum internalformat, GLenum format,
500 GLenum type, const void *data)
502 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR_BUFFER_DATA);
504 GLWRAP_DEFER (glClearBufferData, target, internalformat, format,
507 RESTORE_METRICS_OP ();
511 glClearBufferSubData (GLenum target, GLenum internalformat, GLintptr offset,
512 GLsizeiptr size, GLenum format, GLenum type,
515 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR_BUFFER_DATA);
517 GLWRAP_DEFER (glClearBufferSubData, target, internalformat,
518 offset, size, format, type, data);
520 RESTORE_METRICS_OP ();
524 glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format,
525 GLenum type, const void *data)
527 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR_BUFFER_DATA);
529 GLWRAP_DEFER (glClearNamedBufferDataEXT, buffer, internalformat,
532 RESTORE_METRICS_OP ();
536 glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat,
537 GLenum format, GLenum type, GLsizeiptr offset,
538 GLsizeiptr size, const void *data)
540 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR_BUFFER_DATA);
542 GLWRAP_DEFER (glClearNamedBufferSubDataEXT, buffer,
543 internalformat, format, type, offset, size, data);
545 RESTORE_METRICS_OP ();
548 /* METRICS_OP_CLEAR_TEX_IMAGE */
551 /* METRICS_OP_COPY_PIXELS */
553 glCopyPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type )
555 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_PIXELS);
557 GLWRAP_DEFER (glCopyPixels, x, y, width, height, type);
559 RESTORE_METRICS_OP ();
562 /* METRICS_OP_COPY_TEX_IMAGE */
564 glCopyTexImage1D (GLenum target, GLint level, GLenum internalformat,
565 GLint x, GLint y, GLsizei width, GLint border)
567 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
569 GLWRAP_DEFER (glCopyTexImage1D, target, level, internalformat,
570 x, y, width, border);
572 RESTORE_METRICS_OP ();
576 glCopyTexImage1DEXT (GLenum target, GLint level, GLenum internalformat,
577 GLint x, GLint y, GLsizei width, GLint border)
579 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
581 GLWRAP_DEFER (glCopyTexImage1DEXT, target, level, internalformat,
582 x, y, width, border);
584 RESTORE_METRICS_OP ();
588 glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat,
589 GLint x, GLint y, GLsizei width, GLsizei height,
592 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
594 GLWRAP_DEFER (glCopyTexImage2D, target, level, internalformat,
595 x, y, width, height, border);
597 RESTORE_METRICS_OP ();
601 glCopyTexImage2DEXT (GLenum target, GLint level, GLenum internalformat,
602 GLint x, GLint y, GLsizei width, GLsizei height,
605 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
607 GLWRAP_DEFER (glCopyTexImage2DEXT, target, level, internalformat,
608 x, y, width, height, border);
610 RESTORE_METRICS_OP ();
614 glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset,
615 GLint x, GLint y, GLsizei width)
617 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
619 GLWRAP_DEFER (glCopyTexSubImage1D, target, level, xoffset,
622 RESTORE_METRICS_OP ();
626 glCopyTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset,
627 GLint x, GLint y, GLsizei width)
629 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
631 GLWRAP_DEFER (glCopyTexSubImage1DEXT, target, level, xoffset,
634 RESTORE_METRICS_OP ();
638 glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset,
639 GLint yoffset, GLint x, GLint y, GLsizei width,
642 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
644 GLWRAP_DEFER (glCopyTexSubImage2D, target, level, xoffset, yoffset,
645 x, y, width, height);
647 RESTORE_METRICS_OP ();
651 glCopyTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset,
652 GLint yoffset, GLint x, GLint y, GLsizei width,
655 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
657 GLWRAP_DEFER (glCopyTexSubImage2DEXT, target, level, xoffset, yoffset,
658 x, y, width, height);
660 RESTORE_METRICS_OP ();
664 glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset,
665 GLint yoffset, GLint zoffset, GLint x, GLint y,
666 GLsizei width, GLsizei height)
668 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
670 GLWRAP_DEFER (glCopyTexSubImage3D, target, level, xoffset, yoffset,
671 zoffset, x, y, width, height);
673 RESTORE_METRICS_OP ();
677 glCopyTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset,
678 GLint yoffset, GLint zoffset, GLint x, GLint y,
679 GLsizei width, GLsizei height)
681 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
683 GLWRAP_DEFER (glCopyTexSubImage3DEXT, target, level, xoffset, yoffset,
684 zoffset, x, y, width, height);
686 RESTORE_METRICS_OP ();
690 glCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level,
691 GLenum internalformat, GLint x, GLint y,
692 GLsizei width, GLint border)
694 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
696 GLWRAP_DEFER (glCopyTextureImage1DEXT, texture, target, level,
697 internalformat, x, y, width, border);
699 RESTORE_METRICS_OP ();
703 glCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level,
704 GLenum internalformat, GLint x, GLint y, GLsizei width,
705 GLsizei height, GLint border)
707 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
709 GLWRAP_DEFER (glCopyTextureImage2DEXT, texture, target,
710 level, internalformat, x, y, width, height, border);
712 RESTORE_METRICS_OP ();
716 glCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level,
717 GLint xoffset, GLint x, GLint y, GLsizei width)
719 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
721 GLWRAP_DEFER (glCopyTextureSubImage1DEXT, texture, target, level,
722 xoffset, x, y, width);
724 RESTORE_METRICS_OP ();
728 glCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level,
729 GLint xoffset, GLint yoffset, GLint x, GLint y,
730 GLsizei width, GLsizei height)
732 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
734 GLWRAP_DEFER (glCopyTextureSubImage2DEXT, texture, target, level,
735 xoffset, yoffset, x, y, width, height);
737 RESTORE_METRICS_OP ();
741 glCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level,
742 GLint xoffset, GLint yoffset, GLint zoffset,
743 GLint x, GLint y, GLsizei width, GLsizei height)
745 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
747 GLWRAP_DEFER (glCopyTextureSubImage3DEXT, texture, target, level,
748 xoffset, yoffset, zoffset, x, y, width, height);
750 RESTORE_METRICS_OP ();
754 glCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level,
755 GLenum internalformat, GLint x, GLint y,
756 GLsizei width, GLint border)
758 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
760 GLWRAP_DEFER (glCopyMultiTexImage1DEXT, texunit, target, level,
761 internalformat, x, y, width, border);
763 RESTORE_METRICS_OP ();
767 glCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level,
768 GLenum internalformat, GLint x, GLint y,
769 GLsizei width, GLsizei height, GLint border)
771 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
773 GLWRAP_DEFER (glCopyMultiTexImage2DEXT, texunit, target, level,
774 internalformat, x, y, width, height, border);
776 RESTORE_METRICS_OP ();
780 glCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level,
781 GLint xoffset, GLint x, GLint y, GLsizei width)
783 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
785 GLWRAP_DEFER (glCopyMultiTexSubImage1DEXT, texunit, target, level,
786 xoffset, x, y, width);
788 RESTORE_METRICS_OP ();
792 glCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level,
793 GLint xoffset, GLint yoffset, GLint x, GLint y,
794 GLsizei width, GLsizei height)
796 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
798 GLWRAP_DEFER (glCopyMultiTexSubImage2DEXT, texunit, target, level,
799 xoffset, yoffset, x, y, width, height);
801 RESTORE_METRICS_OP ();
805 glCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level,
806 GLint xoffset, GLint yoffset, GLint zoffset,
807 GLint x, GLint y, GLsizei width, GLsizei height)
809 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
811 GLWRAP_DEFER (glCopyMultiTexSubImage3DEXT, texunit, target, level,
812 xoffset, yoffset, zoffset, x, y, width, height);
814 RESTORE_METRICS_OP ();
817 /* METRICS_OP_DRAW_PIXELS */
819 glDrawPixels (GLsizei width, GLsizei height, GLenum format, GLenum type,
820 const GLvoid *pixels)
822 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_DRAW_PIXELS);
824 GLWRAP_DEFER (glDrawPixels, width, height, format, type, pixels);
826 RESTORE_METRICS_OP ();
829 /* METRICS_OP_GET_TEX_IMAGE */
832 glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target,
833 GLint lod, GLvoid *img)
835 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
837 GLWRAP_DEFER (glGetCompressedMultiTexImageEXT, texunit,
840 RESTORE_METRICS_OP ();
844 glGetCompressedTexImage (GLenum target, GLint level, GLvoid *img)
846 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
848 GLWRAP_DEFER (glGetCompressedTexImage, target, level, img);
850 RESTORE_METRICS_OP ();
854 glGetCompressedTexImageARB (GLenum target, GLint level, GLvoid *img)
856 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
858 GLWRAP_DEFER (glGetCompressedTexImageARB, target, level, img);
860 RESTORE_METRICS_OP ();
864 glGetCompressedTextureImageEXT (GLuint texture, GLenum target,
865 GLint lod, GLvoid *img)
867 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
869 GLWRAP_DEFER (glGetCompressedTextureImageEXT, texture,
872 RESTORE_METRICS_OP ();
876 glGetMultiTexImageEXT (GLenum texunit, GLenum target, GLint level,
877 GLenum format, GLenum type, GLvoid *pixels)
879 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
881 GLWRAP_DEFER (glGetMultiTexImageEXT, texunit,
882 target, level, format, type, pixels);
884 RESTORE_METRICS_OP ();
888 glGetnCompressedTexImageARB (GLenum target, GLint lod,
889 GLsizei bufSize, GLvoid *img)
891 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
893 GLWRAP_DEFER (glGetnCompressedTexImageARB, target, lod, bufSize, img);
895 RESTORE_METRICS_OP ();
899 glGetnTexImageARB (GLenum target, GLint level, GLenum format,
900 GLenum type, GLsizei bufSize, GLvoid *img)
902 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
904 GLWRAP_DEFER (glGetnTexImageARB, target, level,
905 format, type, bufSize, img);
907 RESTORE_METRICS_OP ();
911 glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type,
914 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
916 GLWRAP_DEFER (glGetTexImage, target, level, format, type, pixels);
918 RESTORE_METRICS_OP ();
921 /* METRICS_OP_READ_PIXELS */
923 glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height,
924 GLenum format, GLenum type, GLvoid *pixels )
926 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_READ_PIXELS);
928 GLWRAP_DEFER (glReadPixels, x, y, width, height, format, type, pixels);
930 RESTORE_METRICS_OP ();
934 glReadnPixelsARB (GLint x, GLint y, GLsizei width, GLsizei height,
935 GLenum format, GLenum type, GLsizei bufSize, GLvoid *data)
937 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_READ_PIXELS);
939 GLWRAP_DEFER (glReadnPixelsARB, x, y, width, height,
940 format, type, bufSize, data);
942 RESTORE_METRICS_OP ();
945 /* METRICS_OP_TEX_IMAGE */
947 glTexImage1D (GLenum target, GLint level, GLint internalFormat,
948 GLsizei width, GLint border, GLenum format, GLenum type,
949 const GLvoid *pixels)
951 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
953 GLWRAP_DEFER (glTexImage1D, target, level, internalFormat, width,
954 border, format, type, pixels);
956 RESTORE_METRICS_OP ();
960 glTexImage2D (GLenum target, GLint level, GLint internalFormat,
961 GLsizei width, GLsizei height, GLint border, GLenum format,
962 GLenum type, const GLvoid *pixels )
964 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
966 GLWRAP_DEFER (glTexImage2D, target, level, internalFormat,
967 width, height, border, format, type, pixels);
969 RESTORE_METRICS_OP ();
974 glTexImage2DMultisample (GLenum target, GLsizei samples,
975 GLint internalformat, GLsizei width, GLsizei height,
976 GLboolean fixedsamplelocations)
978 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
980 GLWRAP_DEFER (glTexImage2DMultisample, target, samples,
981 internalformat, width, height, fixedsamplelocations);
983 RESTORE_METRICS_OP ();
987 glTexImage2DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples,
988 GLsizei colorSamples, GLint internalFormat,
989 GLsizei width, GLsizei height,
990 GLboolean fixedSampleLocations)
992 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
994 GLWRAP_DEFER (glTexImage2DMultisampleCoverageNV, target,
995 coverageSamples, colorSamples, internalFormat,
996 width, height, fixedSampleLocations);
998 RESTORE_METRICS_OP ();
1002 glTexImage3D (GLenum target, GLint level, GLint internalformat,
1003 GLsizei width, GLsizei height, GLsizei depth, GLint border,
1004 GLenum format, GLenum type, const GLvoid *pixels)
1006 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1008 GLWRAP_DEFER (glTexImage3D, target, level, internalformat,
1009 width, height, depth, border, format, type, pixels);
1011 RESTORE_METRICS_OP ();
1015 glTexImage3DEXT (GLenum target, GLint level, GLenum internalformat,
1016 GLsizei width, GLsizei height, GLsizei depth, GLint border,
1017 GLenum format, GLenum type, const GLvoid *pixels)
1019 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1021 GLWRAP_DEFER (glTexImage3DEXT, target, level, internalformat,
1022 width, height, depth, border, format, type, pixels);
1024 RESTORE_METRICS_OP ();
1028 glTexImage3DMultisample (GLenum target, GLsizei samples, GLint internalformat,
1029 GLsizei width, GLsizei height, GLsizei depth,
1030 GLboolean fixedsamplelocations)
1032 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1034 GLWRAP_DEFER (glTexImage3DMultisample, target, samples,
1035 internalformat, width, height, depth,
1036 fixedsamplelocations);
1038 RESTORE_METRICS_OP ();
1042 glTexImage3DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples,
1043 GLsizei colorSamples, GLint internalFormat,
1044 GLsizei width, GLsizei height, GLsizei depth,
1045 GLboolean fixedSampleLocations)
1047 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1049 GLWRAP_DEFER (glTexImage3DMultisampleCoverageNV, target,
1050 coverageSamples, colorSamples, internalFormat,
1051 width, height, depth, fixedSampleLocations);
1053 RESTORE_METRICS_OP ();
1057 glTexImage4DSGIS (GLenum target, GLint level, GLenum internalformat,
1058 GLsizei width, GLsizei height, GLsizei depth,
1059 GLsizei size4d, GLint border, GLenum format,
1060 GLenum type, const GLvoid *pixels)
1062 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1064 GLWRAP_DEFER (glTexImage4DSGIS, target, level,
1065 internalformat, width, height, depth,
1066 size4d, border, format, type, pixels);
1068 RESTORE_METRICS_OP ();
1072 glTexSubImage1D (GLenum target, GLint level, GLint xoffset,
1073 GLsizei width, GLenum format, GLenum type,
1074 const GLvoid *pixels)
1076 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1078 GLWRAP_DEFER (glTexSubImage1D, target, level, xoffset,
1079 width, format, type, pixels);
1081 RESTORE_METRICS_OP ();
1085 glTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset,
1086 GLsizei width, GLenum format, GLenum type,
1087 const GLvoid *pixels)
1089 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1091 GLWRAP_DEFER (glTexSubImage1DEXT, target, level, xoffset,
1092 width, format, type, pixels);
1094 RESTORE_METRICS_OP ();
1098 glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset,
1099 GLsizei width, GLsizei height, GLenum format, GLenum type,
1100 const GLvoid *pixels)
1102 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1104 GLWRAP_DEFER (glTexSubImage2D, target, level, xoffset, yoffset,
1105 width, height, format, type, pixels);
1107 RESTORE_METRICS_OP ();
1111 glTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset,
1112 GLsizei width, GLsizei height, GLenum format, GLenum type,
1113 const GLvoid *pixels)
1115 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1117 GLWRAP_DEFER (glTexSubImage2DEXT, target, level, xoffset, yoffset,
1118 width, height, format, type, pixels);
1120 RESTORE_METRICS_OP ();
1124 glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset,
1125 GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,
1126 GLenum format, GLenum type, const GLvoid *pixels)
1128 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1130 GLWRAP_DEFER (glTexSubImage3D, target, level, xoffset, yoffset,
1131 zoffset, width, height, depth, format, type, pixels);
1133 RESTORE_METRICS_OP ();
1137 glTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset,
1138 GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,
1139 GLenum format, GLenum type, const GLvoid *pixels)
1141 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1143 GLWRAP_DEFER (glTexSubImage3DEXT, target, level, xoffset, yoffset,
1144 zoffset, width, height, depth, format, type, pixels);
1146 RESTORE_METRICS_OP ();
1150 glTexSubImage4DSGIS (GLenum target, GLint level, GLint xoffset, GLint yoffset,
1151 GLint zoffset, GLint woffset, GLsizei width,
1152 GLsizei height, GLsizei depth, GLsizei size4d,
1153 GLenum format, GLenum type, const GLvoid *pixels)
1155 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1157 GLWRAP_DEFER (glTexSubImage4DSGIS, target, level, xoffset,
1158 yoffset, zoffset, woffset, width, height,
1159 depth, size4d, format, type, pixels);
1161 RESTORE_METRICS_OP ();
1165 glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level,
1166 GLenum internalformat, GLsizei width,
1167 GLint border, GLsizei imageSize,
1170 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1172 GLWRAP_DEFER (glCompressedMultiTexImage1DEXT, texunit, target,
1173 level, internalformat, width, border, imageSize, bits);
1175 RESTORE_METRICS_OP ();
1179 glCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level,
1180 GLenum internalformat, GLsizei width,
1181 GLsizei height, GLint border,
1182 GLsizei imageSize, const GLvoid *bits)
1184 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1186 GLWRAP_DEFER (glCompressedMultiTexImage2DEXT, texunit, target, level,
1187 internalformat, width, height, border, imageSize, bits);
1189 RESTORE_METRICS_OP ();
1193 glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level,
1194 GLenum internalformat, GLsizei width,
1195 GLsizei height, GLsizei depth, GLint border,
1196 GLsizei imageSize, const GLvoid *bits)
1198 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1200 GLWRAP_DEFER (glCompressedMultiTexImage3DEXT, texunit, target,
1201 level, internalformat, width, height, depth,
1202 border, imageSize, bits);
1204 RESTORE_METRICS_OP ();
1208 glCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level,
1209 GLint xoffset, GLsizei width, GLenum format,
1210 GLsizei imageSize, const GLvoid *bits)
1212 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1214 GLWRAP_DEFER (glCompressedMultiTexSubImage1DEXT, texunit, target,
1215 level, xoffset, width, format, imageSize, bits);
1217 RESTORE_METRICS_OP ();
1221 glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level,
1222 GLint xoffset, GLint yoffset, GLsizei width,
1223 GLsizei height, GLenum format,
1224 GLsizei imageSize, const GLvoid *bits)
1226 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1228 GLWRAP_DEFER (glCompressedMultiTexSubImage2DEXT, texunit, target, level,
1229 xoffset, yoffset, width, height, format, imageSize, bits);
1231 RESTORE_METRICS_OP ();
1235 glCompressedMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level,
1236 GLint xoffset, GLint yoffset, GLint zoffset,
1237 GLsizei width, GLsizei height, GLsizei depth,
1238 GLenum format, GLsizei imageSize,
1241 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1243 GLWRAP_DEFER (glCompressedMultiTexSubImage3DEXT, texunit, target,
1244 level, xoffset, yoffset, zoffset, width, height,
1245 depth, format, imageSize, bits);
1247 RESTORE_METRICS_OP ();
1251 glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat,
1252 GLsizei width, GLint border, GLsizei imageSize,
1255 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1257 GLWRAP_DEFER (glCompressedTexImage1D, target, level,
1258 internalformat, width, border, imageSize, data);
1260 RESTORE_METRICS_OP ();
1264 glCompressedTexImage1DARB (GLenum target, GLint level, GLenum internalformat,
1265 GLsizei width, GLint border, GLsizei imageSize,
1268 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1270 GLWRAP_DEFER (glCompressedTexImage1DARB, target, level, internalformat,
1271 width, border, imageSize, data);
1273 RESTORE_METRICS_OP ();
1277 glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat,
1278 GLsizei width, GLsizei height, GLint border,
1279 GLsizei imageSize, const GLvoid *data)
1281 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1283 GLWRAP_DEFER (glCompressedTexImage2D, target, level, internalformat,
1284 width, height, border, imageSize, data);
1286 RESTORE_METRICS_OP ();
1290 glCompressedTexImage2DARB (GLenum target, GLint level, GLenum internalformat,
1291 GLsizei width, GLsizei height, GLint border,
1292 GLsizei imageSize, const GLvoid *data)
1294 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1296 GLWRAP_DEFER (glCompressedTexImage2DARB, target, level, internalformat,
1297 width, height, border, imageSize, data);
1299 RESTORE_METRICS_OP ();
1303 glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat,
1304 GLsizei width, GLsizei height, GLsizei depth,
1305 GLint border, GLsizei imageSize, const GLvoid *data)
1307 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1309 GLWRAP_DEFER (glCompressedTexImage3D, target, level, internalformat,
1310 width, height, depth, border, imageSize, data);
1312 RESTORE_METRICS_OP ();
1316 glCompressedTexImage3DARB (GLenum target, GLint level, GLenum internalformat,
1317 GLsizei width, GLsizei height, GLsizei depth,
1318 GLint border, GLsizei imageSize, const GLvoid *data)
1320 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1322 GLWRAP_DEFER (glCompressedTexImage3DARB, target, level, internalformat,
1323 width, height, depth, border, imageSize, data);
1325 RESTORE_METRICS_OP ();
1329 glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset,
1330 GLsizei width, GLenum format, GLsizei imageSize,
1333 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1335 GLWRAP_DEFER (glCompressedTexSubImage1D, target, level, xoffset,
1336 width, format, imageSize, data);
1338 RESTORE_METRICS_OP ();
1342 glCompressedTexSubImage1DARB (GLenum target, GLint level, GLint xoffset,
1343 GLsizei width, GLenum format, GLsizei imageSize,
1346 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1348 GLWRAP_DEFER (glCompressedTexSubImage1DARB, target, level, xoffset,
1349 width, format, imageSize, data);
1351 RESTORE_METRICS_OP ();
1355 glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset,
1356 GLint yoffset, GLsizei width, GLsizei height,
1357 GLenum format, GLsizei imageSize, const GLvoid *data)
1359 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1361 GLWRAP_DEFER (glCompressedTexSubImage2D, target, level, xoffset,
1362 yoffset, width, height, format, imageSize, data);
1364 RESTORE_METRICS_OP ();
1368 glCompressedTexSubImage2DARB (GLenum target, GLint level, GLint xoffset,
1369 GLint yoffset, GLsizei width, GLsizei height,
1370 GLenum format, GLsizei imageSize,
1373 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1375 GLWRAP_DEFER (glCompressedTexSubImage2DARB, target, level, xoffset,
1376 yoffset, width, height, format, imageSize, data);
1378 RESTORE_METRICS_OP ();
1382 glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset,
1383 GLint yoffset, GLint zoffset, GLsizei width,
1384 GLsizei height, GLsizei depth, GLenum format,
1385 GLsizei imageSize, const GLvoid *data)
1387 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1389 GLWRAP_DEFER (glCompressedTexSubImage3D, target, level, xoffset,
1390 yoffset, zoffset, width, height, depth, format,
1393 RESTORE_METRICS_OP ();
1397 glCompressedTexSubImage3DARB (GLenum target, GLint level, GLint xoffset,
1398 GLint yoffset, GLint zoffset, GLsizei width,
1399 GLsizei height, GLsizei depth, GLenum format,
1400 GLsizei imageSize, const GLvoid *data)
1402 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1404 GLWRAP_DEFER (glCompressedTexSubImage3DARB, target, level, xoffset,
1405 yoffset, zoffset, width, height, depth, format,
1408 RESTORE_METRICS_OP ();
1412 glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level,
1413 GLenum internalformat, GLsizei width,
1414 GLint border, GLsizei imageSize,
1417 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1419 GLWRAP_DEFER (glCompressedTextureImage1DEXT, texture, target, level,
1420 internalformat, width, border, imageSize, bits);
1422 RESTORE_METRICS_OP ();
1426 glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level,
1427 GLenum internalformat, GLsizei width,
1428 GLsizei height, GLint border,
1429 GLsizei imageSize, const GLvoid *bits)
1431 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1433 GLWRAP_DEFER (glCompressedTextureImage2DEXT, texture, target, level,
1434 internalformat, width, height, border, imageSize, bits);
1436 RESTORE_METRICS_OP ();
1440 glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level,
1441 GLenum internalformat, GLsizei width,
1442 GLsizei height, GLsizei depth, GLint border,
1443 GLsizei imageSize, const GLvoid *bits)
1445 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1447 GLWRAP_DEFER (glCompressedTextureImage3DEXT, texture, target,
1448 level, internalformat, width, height, depth,
1449 border, imageSize, bits);
1451 RESTORE_METRICS_OP ();
1455 glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level,
1456 GLint xoffset, GLsizei width, GLenum format,
1457 GLsizei imageSize, const GLvoid *bits)
1459 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1461 GLWRAP_DEFER (glCompressedTextureSubImage1DEXT, texture, target,
1462 level, xoffset, width, format, imageSize, bits);
1464 RESTORE_METRICS_OP ();
1468 glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level,
1469 GLint xoffset, GLint yoffset, GLsizei width,
1470 GLsizei height, GLenum format,
1471 GLsizei imageSize, const GLvoid *bits)
1473 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1475 GLWRAP_DEFER (glCompressedTextureSubImage2DEXT, texture, target, level,
1476 xoffset, yoffset, width, height, format, imageSize, bits);
1478 RESTORE_METRICS_OP ();
1482 glCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level,
1483 GLint xoffset, GLint yoffset, GLint zoffset,
1484 GLsizei width, GLsizei height, GLsizei depth,
1485 GLenum format, GLsizei imageSize,
1488 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1490 GLWRAP_DEFER (glCompressedTextureSubImage3DEXT, texture, target,
1491 level, xoffset, yoffset, zoffset, width, height,
1492 depth, format, imageSize, bits);
1494 RESTORE_METRICS_OP ();
1498 glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level,
1499 GLenum internalformat, GLsizei width, GLint border,
1500 GLenum format, GLenum type, const GLvoid *pixels)
1502 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1504 GLWRAP_DEFER (glMultiTexImage1DEXT, texunit, target, level,
1505 internalformat, width, border, format, type, pixels);
1507 RESTORE_METRICS_OP ();
1511 glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level,
1512 GLenum internalformat, GLsizei width, GLsizei height,
1513 GLint border, GLenum format, GLenum type,
1514 const GLvoid *pixels)
1516 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1518 GLWRAP_DEFER (glMultiTexImage2DEXT, texunit, target, level,
1519 internalformat, width, height, border, format,
1522 RESTORE_METRICS_OP ();
1526 glMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level,
1527 GLenum internalformat, GLsizei width, GLsizei height,
1528 GLsizei depth, GLint border, GLenum format,
1529 GLenum type, const GLvoid *pixels)
1531 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1533 GLWRAP_DEFER (glMultiTexImage3DEXT, texunit, target, level,
1534 internalformat, width, height, depth, border,
1535 format, type, pixels);
1537 RESTORE_METRICS_OP ();
1541 glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level,
1542 GLint xoffset, GLsizei width, GLenum format,
1543 GLenum type, const GLvoid *pixels)
1545 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1547 GLWRAP_DEFER (glMultiTexSubImage1DEXT, texunit, target, level,
1548 xoffset, width, format, type, pixels);
1550 RESTORE_METRICS_OP ();
1554 glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level,
1555 GLint xoffset, GLint yoffset, GLsizei width,
1556 GLsizei height, GLenum format, GLenum type,
1557 const GLvoid *pixels)
1559 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1561 GLWRAP_DEFER (glMultiTexSubImage2DEXT, texunit, target, level, xoffset,
1562 yoffset, width, height, format, type, pixels);
1564 RESTORE_METRICS_OP ();
1568 glMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level,
1569 GLint xoffset, GLint yoffset, GLint zoffset,
1570 GLsizei width, GLsizei height, GLsizei depth,
1571 GLenum format, GLenum type, const GLvoid *pixels)
1573 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1575 GLWRAP_DEFER (glMultiTexSubImage3DEXT, texunit, target, level,
1576 xoffset, yoffset, zoffset, width, height, depth,
1577 format, type, pixels);
1579 RESTORE_METRICS_OP ();