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 /* The first appearance of the GLfixed datatype in Mesa was with
51 * glext.h of version 20130624. So we'll assume that any older glext.h
52 * cannot have any function accepting a GLfixed parameter. */
53 #if GL_GLEXT_VERSION >= 20130624
54 #define HAVE_GLFIXED 1
57 /* As of glext.h version 20131008 some types changed.
59 * I have no idea why some internalFormats changed from GLenum to
60 * GLint while others changed from GLint to GLenum.
62 * But, in order to compile with either version, we track these.
64 #if GL_GLEXT_VERSION >= 20131008
65 #define GLint_or_enum GLenum
66 #define GLenum_or_int GLint
68 #define GLint_or_enum GLint
69 #define GLenum_or_int GLenum
72 static void *gl_handle;
74 /* Switch metrics operation persistently, (until next SWITCH) */
75 #define SWITCH_METRICS_OP(op) \
76 context_counter_stop (); \
77 context_set_current_op (op); \
78 context_counter_start ();
80 /* Switch metrics operation temporarily, see RESTORE_METRICS_OP */
81 #define SAVE_THEN_SWITCH_METRICS_OP(op) \
82 metrics_op_t save = context_get_current_op (); \
83 SWITCH_METRICS_OP (op);
85 /* Switch back to metrics operation saved by SAVE_THEN_SWITCH_METRICS_OP */
86 #define RESTORE_METRICS_OP() \
87 SWITCH_METRICS_OP (save);
90 glwrap_set_gl_handle (void *handle)
92 if (gl_handle == NULL)
97 glwrap_lookup (char *name)
101 /* We don't call dlopen here to find the library in which to
102 * perform a dlsym lookup. That's because the application may
103 * be loading libGL.so or libGLESv2.so for its OpenGL symbols.
105 * So we instead watch for one of those filenames to go by in
106 * our dlopen wrapper, which will then call
107 * glwrap_set_gl_handle to give us the handle to use here.
109 * If the application hasn't called dlopen on a "libGL"
110 * library, then presumably the application is linked directly
111 * to an OpenGL implementation. In this case, we can use
112 * RTLD_NEXT to find the symbol.
114 * But just in case, we also let the user override that by
115 * specifying the FIPS_LIBGL environment variable to the path
116 * of the real libGL.so library that fips should dlopen here.
118 if (gl_handle == NULL) {
121 path = getenv ("FIPS_LIBGL");
123 path = getenv ("GLAZE_LIBGL");
125 gl_handle = dlopen (path, RTLD_LAZY);
127 if (gl_handle == NULL) {
128 fprintf (stderr, "Failed to dlopen FIPS_LIBGL: "
133 gl_handle = RTLD_NEXT;
137 ret = dlwrap_real_dlsym (gl_handle, name);
140 fprintf (stderr, "fips: Error: glwrap_lookup failed to dlsym %s\n",
148 /* With a program change, we stop the counter, update the
149 * active program, then start the counter up again. */
151 glUseProgram (GLuint program)
153 SWITCH_METRICS_OP (METRICS_OP_SHADER + program);
155 GLWRAP_DEFER(glUseProgram, program);
159 glUseProgramObjectARB (GLhandleARB programObj)
161 SWITCH_METRICS_OP (METRICS_OP_SHADER + programObj);
163 GLWRAP_DEFER(glUseProgramObjectARB, programObj);
166 /* METRICS_OP_ACCUM */
168 glAccum (GLenum op, GLfloat value)
170 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_ACCUM);
172 GLWRAP_DEFER (glAccum, op, value);
174 RESTORE_METRICS_OP ();
178 glClearAccum (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
180 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_ACCUM);
182 GLWRAP_DEFER (glClearAccum, red, green, blue, alpha);
184 RESTORE_METRICS_OP ();
189 glClearAccumxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
191 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_ACCUM);
193 GLWRAP_DEFER (glClearAccumxOES, red, green, blue, alpha);
195 RESTORE_METRICS_OP ();
199 /* METRICS_OP_BUFFER_DATA */
201 glBufferData (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage)
203 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
205 GLWRAP_DEFER (glBufferData, target, size, data, usage);
207 RESTORE_METRICS_OP ();
211 glNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const GLvoid *data,
214 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
216 GLWRAP_DEFER (glNamedBufferDataEXT, buffer, size, data, usage);
218 RESTORE_METRICS_OP ();
222 glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size,
225 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
227 GLWRAP_DEFER (glBufferSubData, target, offset, size, data);
229 RESTORE_METRICS_OP ();
233 glNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size,
236 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
238 GLWRAP_DEFER (glNamedBufferSubDataEXT, buffer, offset, size, data);
240 RESTORE_METRICS_OP ();
244 glMapBuffer (GLenum target, GLenum access)
248 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
250 GLWRAP_DEFER_WITH_RETURN (ret, glMapBuffer, target, access);
252 RESTORE_METRICS_OP ();
258 glMapBufferARB (GLenum target, GLenum access)
262 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
264 GLWRAP_DEFER_WITH_RETURN (ret, glMapBufferARB, target, access);
266 RESTORE_METRICS_OP ();
272 glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length,
277 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
279 GLWRAP_DEFER_WITH_RETURN (ret, glMapBufferRange, target, offset,
282 RESTORE_METRICS_OP ();
288 glUnmapBuffer (GLenum target)
292 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
294 GLWRAP_DEFER_WITH_RETURN (ret, glUnmapBuffer, target);
296 RESTORE_METRICS_OP ();
302 glUnmapNamedBufferEXT (GLuint buffer)
306 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
308 GLWRAP_DEFER_WITH_RETURN (ret, glUnmapNamedBufferEXT, buffer);
310 RESTORE_METRICS_OP ();
316 glUnmapBufferARB (GLenum target)
320 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
322 GLWRAP_DEFER_WITH_RETURN (ret, glUnmapBufferARB, target);
324 RESTORE_METRICS_OP ();
330 glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length)
332 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
334 GLWRAP_DEFER (glFlushMappedBufferRange, target, offset, length);
336 RESTORE_METRICS_OP ();
340 glFlushMappedBufferRangeAPPLE (GLenum target, GLintptr offset, GLsizeiptr size)
342 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
344 GLWRAP_DEFER (glFlushMappedBufferRangeAPPLE, target, offset, size);
346 RESTORE_METRICS_OP ();
350 glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset,
353 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
355 GLWRAP_DEFER (glFlushMappedNamedBufferRangeEXT, buffer, offset, length);
357 RESTORE_METRICS_OP ();
361 glMapNamedBufferEXT (GLuint buffer, GLenum access)
365 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
367 GLWRAP_DEFER_WITH_RETURN (ret, glMapNamedBufferEXT, buffer, access);
369 RESTORE_METRICS_OP ();
375 glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length,
380 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
382 GLWRAP_DEFER_WITH_RETURN (ret, glMapNamedBufferRangeEXT, buffer,
383 offset, length, access);
385 RESTORE_METRICS_OP ();
390 /* METRICS_OP_BUFFER_SUB_DATA */
392 glCopyBufferSubData (GLenum readTarget, GLenum writeTarget,
393 GLintptr readOffset, GLintptr writeOffset,
396 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_SUB_DATA);
398 GLWRAP_DEFER (glCopyBufferSubData, readTarget, writeTarget,
399 readOffset, writeOffset, size);
401 RESTORE_METRICS_OP ();
405 glNamedCopyBufferSubDataEXT (GLuint readBuffer, GLuint writeBuffer,
406 GLintptr readOffset, GLintptr writeOffset,
409 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_SUB_DATA);
411 GLWRAP_DEFER (glNamedCopyBufferSubDataEXT, readBuffer,
412 writeBuffer, readOffset, writeOffset, size);
414 RESTORE_METRICS_OP ();
417 /* METRICS_OP_BITMAP */
419 glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig,
420 GLfloat xmove, GLfloat ymove, const GLubyte *bitmap)
422 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BITMAP);
424 GLWRAP_DEFER (glBitmap, width, height, xorig, yorig,
425 xmove, ymove, bitmap);
427 RESTORE_METRICS_OP ();
432 glBitmapxOES (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig,
433 GLfixed xmove, GLfixed ymove, const GLubyte *bitmap)
435 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BITMAP);
437 GLWRAP_DEFER (glBitmapxOES, width, height, xorig, yorig,
438 xmove, ymove, bitmap);
440 RESTORE_METRICS_OP ();
444 /* METRICS_OP_BLIT_FRAMEBUFFER */
446 glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
447 GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
448 GLbitfield mask, GLenum filter)
450 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BLIT_FRAMEBUFFER);
452 GLWRAP_DEFER (glBlitFramebuffer, srcX0, srcY0, srcX1, srcY1,
453 dstX0, dstY0, dstX1, dstY1, mask, filter);
455 RESTORE_METRICS_OP ();
459 glBlitFramebufferEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
460 GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
461 GLbitfield mask, GLenum filter)
463 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BLIT_FRAMEBUFFER);
465 GLWRAP_DEFER (glBlitFramebufferEXT, srcX0, srcY0, srcX1, srcY1,
466 dstX0, dstY0, dstX1, dstY1, mask, filter);
468 RESTORE_METRICS_OP ();
471 /* METRICS_OP_CLEAR */
473 glClear (GLbitfield mask)
475 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR);
477 GLWRAP_DEFER (glClear, mask);
479 RESTORE_METRICS_OP ();
483 glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
485 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR);
487 GLWRAP_DEFER (glClearBufferfi, buffer, drawbuffer, depth, stencil);
489 RESTORE_METRICS_OP ();
493 glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value)
495 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR);
497 GLWRAP_DEFER (glClearBufferfv, buffer, drawbuffer, value);
499 RESTORE_METRICS_OP ();
503 glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value)
505 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR);
507 GLWRAP_DEFER (glClearBufferiv, buffer, drawbuffer, value);
509 RESTORE_METRICS_OP ();
513 glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value)
515 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR);
517 GLWRAP_DEFER (glClearBufferuiv, buffer, drawbuffer, value);
519 RESTORE_METRICS_OP ();
522 /* METRICS_OP_CLEAR_BUFFER_DATA */
525 glClearBufferData (GLenum target, GLenum internalformat, GLenum format,
526 GLenum type, const void *data)
528 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR_BUFFER_DATA);
530 GLWRAP_DEFER (glClearBufferData, target, internalformat, format,
533 RESTORE_METRICS_OP ();
537 glClearBufferSubData (GLenum target, GLenum internalformat, GLintptr offset,
538 GLsizeiptr size, GLenum format, GLenum type,
541 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR_BUFFER_DATA);
543 GLWRAP_DEFER (glClearBufferSubData, target, internalformat,
544 offset, size, format, type, data);
546 RESTORE_METRICS_OP ();
550 glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format,
551 GLenum type, const void *data)
553 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR_BUFFER_DATA);
555 GLWRAP_DEFER (glClearNamedBufferDataEXT, buffer, internalformat,
558 RESTORE_METRICS_OP ();
562 glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat,
563 GLsizeiptr offset, GLsizeiptr size,
564 GLenum format, GLenum type,
567 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR_BUFFER_DATA);
569 GLWRAP_DEFER (glClearNamedBufferSubDataEXT, buffer,
570 internalformat, offset, size, format, type, data);
572 RESTORE_METRICS_OP ();
575 /* METRICS_OP_CLEAR_TEX_IMAGE */
578 /* METRICS_OP_COPY_PIXELS */
580 glCopyPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type )
582 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_PIXELS);
584 GLWRAP_DEFER (glCopyPixels, x, y, width, height, type);
586 RESTORE_METRICS_OP ();
589 /* METRICS_OP_COPY_TEX_IMAGE */
591 glCopyTexImage1D (GLenum target, GLint level, GLenum internalformat,
592 GLint x, GLint y, GLsizei width, GLint border)
594 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
596 GLWRAP_DEFER (glCopyTexImage1D, target, level, internalformat,
597 x, y, width, border);
599 RESTORE_METRICS_OP ();
603 glCopyTexImage1DEXT (GLenum target, GLint level, GLenum internalformat,
604 GLint x, GLint y, GLsizei width, GLint border)
606 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
608 GLWRAP_DEFER (glCopyTexImage1DEXT, target, level, internalformat,
609 x, y, width, border);
611 RESTORE_METRICS_OP ();
615 glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat,
616 GLint x, GLint y, GLsizei width, GLsizei height,
619 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
621 GLWRAP_DEFER (glCopyTexImage2D, target, level, internalformat,
622 x, y, width, height, border);
624 RESTORE_METRICS_OP ();
628 glCopyTexImage2DEXT (GLenum target, GLint level, GLenum internalformat,
629 GLint x, GLint y, GLsizei width, GLsizei height,
632 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
634 GLWRAP_DEFER (glCopyTexImage2DEXT, target, level, internalformat,
635 x, y, width, height, border);
637 RESTORE_METRICS_OP ();
641 glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset,
642 GLint x, GLint y, GLsizei width)
644 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
646 GLWRAP_DEFER (glCopyTexSubImage1D, target, level, xoffset,
649 RESTORE_METRICS_OP ();
653 glCopyTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset,
654 GLint x, GLint y, GLsizei width)
656 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
658 GLWRAP_DEFER (glCopyTexSubImage1DEXT, target, level, xoffset,
661 RESTORE_METRICS_OP ();
665 glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset,
666 GLint yoffset, GLint x, GLint y, GLsizei width,
669 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
671 GLWRAP_DEFER (glCopyTexSubImage2D, target, level, xoffset, yoffset,
672 x, y, width, height);
674 RESTORE_METRICS_OP ();
678 glCopyTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset,
679 GLint yoffset, GLint x, GLint y, GLsizei width,
682 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
684 GLWRAP_DEFER (glCopyTexSubImage2DEXT, target, level, xoffset, yoffset,
685 x, y, width, height);
687 RESTORE_METRICS_OP ();
691 glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset,
692 GLint yoffset, GLint zoffset, GLint x, GLint y,
693 GLsizei width, GLsizei height)
695 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
697 GLWRAP_DEFER (glCopyTexSubImage3D, target, level, xoffset, yoffset,
698 zoffset, x, y, width, height);
700 RESTORE_METRICS_OP ();
704 glCopyTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset,
705 GLint yoffset, GLint zoffset, GLint x, GLint y,
706 GLsizei width, GLsizei height)
708 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
710 GLWRAP_DEFER (glCopyTexSubImage3DEXT, target, level, xoffset, yoffset,
711 zoffset, x, y, width, height);
713 RESTORE_METRICS_OP ();
717 glCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level,
718 GLenum internalformat, GLint x, GLint y,
719 GLsizei width, GLint border)
721 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
723 GLWRAP_DEFER (glCopyTextureImage1DEXT, texture, target, level,
724 internalformat, x, y, width, border);
726 RESTORE_METRICS_OP ();
730 glCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level,
731 GLenum internalformat, GLint x, GLint y, GLsizei width,
732 GLsizei height, GLint border)
734 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
736 GLWRAP_DEFER (glCopyTextureImage2DEXT, texture, target,
737 level, internalformat, x, y, width, height, border);
739 RESTORE_METRICS_OP ();
743 glCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level,
744 GLint xoffset, GLint x, GLint y, GLsizei width)
746 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
748 GLWRAP_DEFER (glCopyTextureSubImage1DEXT, texture, target, level,
749 xoffset, x, y, width);
751 RESTORE_METRICS_OP ();
755 glCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level,
756 GLint xoffset, GLint yoffset, GLint x, GLint y,
757 GLsizei width, GLsizei height)
759 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
761 GLWRAP_DEFER (glCopyTextureSubImage2DEXT, texture, target, level,
762 xoffset, yoffset, x, y, width, height);
764 RESTORE_METRICS_OP ();
768 glCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level,
769 GLint xoffset, GLint yoffset, GLint zoffset,
770 GLint x, GLint y, GLsizei width, GLsizei height)
772 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
774 GLWRAP_DEFER (glCopyTextureSubImage3DEXT, texture, target, level,
775 xoffset, yoffset, zoffset, x, y, width, height);
777 RESTORE_METRICS_OP ();
781 glCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level,
782 GLenum internalformat, GLint x, GLint y,
783 GLsizei width, GLint border)
785 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
787 GLWRAP_DEFER (glCopyMultiTexImage1DEXT, texunit, target, level,
788 internalformat, x, y, width, border);
790 RESTORE_METRICS_OP ();
794 glCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level,
795 GLenum internalformat, GLint x, GLint y,
796 GLsizei width, GLsizei height, GLint border)
798 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
800 GLWRAP_DEFER (glCopyMultiTexImage2DEXT, texunit, target, level,
801 internalformat, x, y, width, height, border);
803 RESTORE_METRICS_OP ();
807 glCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level,
808 GLint xoffset, GLint x, GLint y, GLsizei width)
810 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
812 GLWRAP_DEFER (glCopyMultiTexSubImage1DEXT, texunit, target, level,
813 xoffset, x, y, width);
815 RESTORE_METRICS_OP ();
819 glCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level,
820 GLint xoffset, GLint yoffset, GLint x, GLint y,
821 GLsizei width, GLsizei height)
823 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
825 GLWRAP_DEFER (glCopyMultiTexSubImage2DEXT, texunit, target, level,
826 xoffset, yoffset, x, y, width, height);
828 RESTORE_METRICS_OP ();
832 glCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level,
833 GLint xoffset, GLint yoffset, GLint zoffset,
834 GLint x, GLint y, GLsizei width, GLsizei height)
836 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
838 GLWRAP_DEFER (glCopyMultiTexSubImage3DEXT, texunit, target, level,
839 xoffset, yoffset, zoffset, x, y, width, height);
841 RESTORE_METRICS_OP ();
844 /* METRICS_OP_DRAW_PIXELS */
846 glDrawPixels (GLsizei width, GLsizei height, GLenum format, GLenum type,
847 const GLvoid *pixels)
849 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_DRAW_PIXELS);
851 GLWRAP_DEFER (glDrawPixels, width, height, format, type, pixels);
853 RESTORE_METRICS_OP ();
856 /* METRICS_OP_GET_TEX_IMAGE */
859 glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target,
860 GLint lod, GLvoid *img)
862 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
864 GLWRAP_DEFER (glGetCompressedMultiTexImageEXT, texunit,
867 RESTORE_METRICS_OP ();
871 glGetCompressedTexImage (GLenum target, GLint level, GLvoid *img)
873 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
875 GLWRAP_DEFER (glGetCompressedTexImage, target, level, img);
877 RESTORE_METRICS_OP ();
881 glGetCompressedTexImageARB (GLenum target, GLint level, GLvoid *img)
883 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
885 GLWRAP_DEFER (glGetCompressedTexImageARB, target, level, img);
887 RESTORE_METRICS_OP ();
891 glGetCompressedTextureImageEXT (GLuint texture, GLenum target,
892 GLint lod, GLvoid *img)
894 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
896 GLWRAP_DEFER (glGetCompressedTextureImageEXT, texture,
899 RESTORE_METRICS_OP ();
903 glGetMultiTexImageEXT (GLenum texunit, GLenum target, GLint level,
904 GLenum format, GLenum type, GLvoid *pixels)
906 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
908 GLWRAP_DEFER (glGetMultiTexImageEXT, texunit,
909 target, level, format, type, pixels);
911 RESTORE_METRICS_OP ();
915 glGetnCompressedTexImageARB (GLenum target, GLint lod,
916 GLsizei bufSize, GLvoid *img)
918 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
920 GLWRAP_DEFER (glGetnCompressedTexImageARB, target, lod, bufSize, img);
922 RESTORE_METRICS_OP ();
926 glGetnTexImageARB (GLenum target, GLint level, GLenum format,
927 GLenum type, GLsizei bufSize, GLvoid *img)
929 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
931 GLWRAP_DEFER (glGetnTexImageARB, target, level,
932 format, type, bufSize, img);
934 RESTORE_METRICS_OP ();
938 glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type,
941 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
943 GLWRAP_DEFER (glGetTexImage, target, level, format, type, pixels);
945 RESTORE_METRICS_OP ();
948 /* METRICS_OP_READ_PIXELS */
950 glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height,
951 GLenum format, GLenum type, GLvoid *pixels )
953 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_READ_PIXELS);
955 GLWRAP_DEFER (glReadPixels, x, y, width, height, format, type, pixels);
957 RESTORE_METRICS_OP ();
961 glReadnPixelsARB (GLint x, GLint y, GLsizei width, GLsizei height,
962 GLenum format, GLenum type, GLsizei bufSize, GLvoid *data)
964 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_READ_PIXELS);
966 GLWRAP_DEFER (glReadnPixelsARB, x, y, width, height,
967 format, type, bufSize, data);
969 RESTORE_METRICS_OP ();
972 /* METRICS_OP_TEX_IMAGE */
974 glTexImage1D (GLenum target, GLint level, GLint internalFormat,
975 GLsizei width, GLint border, GLenum format, GLenum type,
976 const GLvoid *pixels)
978 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
980 GLWRAP_DEFER (glTexImage1D, target, level, internalFormat, width,
981 border, format, type, pixels);
983 RESTORE_METRICS_OP ();
987 glTexImage2D (GLenum target, GLint level, GLint internalFormat,
988 GLsizei width, GLsizei height, GLint border, GLenum format,
989 GLenum type, const GLvoid *pixels )
991 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
993 GLWRAP_DEFER (glTexImage2D, target, level, internalFormat,
994 width, height, border, format, type, pixels);
996 RESTORE_METRICS_OP ();
1001 glTexImage2DMultisample (GLenum target, GLsizei samples,
1002 GLint_or_enum internalformat,
1003 GLsizei width, GLsizei height,
1004 GLboolean fixedsamplelocations)
1006 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1008 GLWRAP_DEFER (glTexImage2DMultisample, target, samples,
1009 internalformat, width, height, fixedsamplelocations);
1011 RESTORE_METRICS_OP ();
1015 glTexImage2DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples,
1016 GLsizei colorSamples, GLint internalFormat,
1017 GLsizei width, GLsizei height,
1018 GLboolean fixedSampleLocations)
1020 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1022 GLWRAP_DEFER (glTexImage2DMultisampleCoverageNV, target,
1023 coverageSamples, colorSamples, internalFormat,
1024 width, height, fixedSampleLocations);
1026 RESTORE_METRICS_OP ();
1030 glTexImage3D (GLenum target, GLint level, GLint internalformat,
1031 GLsizei width, GLsizei height, GLsizei depth, GLint border,
1032 GLenum format, GLenum type, const GLvoid *pixels)
1034 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1036 GLWRAP_DEFER (glTexImage3D, target, level, internalformat,
1037 width, height, depth, border, format, type, pixels);
1039 RESTORE_METRICS_OP ();
1043 glTexImage3DEXT (GLenum target, GLint level, GLenum internalformat,
1044 GLsizei width, GLsizei height, GLsizei depth, GLint border,
1045 GLenum format, GLenum type, const GLvoid *pixels)
1047 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1049 GLWRAP_DEFER (glTexImage3DEXT, target, level, internalformat,
1050 width, height, depth, border, format, type, pixels);
1052 RESTORE_METRICS_OP ();
1056 glTexImage3DMultisample (GLenum target, GLsizei samples,
1057 GLint_or_enum internalformat,
1058 GLsizei width, GLsizei height, GLsizei depth,
1059 GLboolean fixedsamplelocations)
1061 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1063 GLWRAP_DEFER (glTexImage3DMultisample, target, samples,
1064 internalformat, width, height, depth,
1065 fixedsamplelocations);
1067 RESTORE_METRICS_OP ();
1071 glTexImage3DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples,
1072 GLsizei colorSamples, GLint internalFormat,
1073 GLsizei width, GLsizei height, GLsizei depth,
1074 GLboolean fixedSampleLocations)
1076 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1078 GLWRAP_DEFER (glTexImage3DMultisampleCoverageNV, target,
1079 coverageSamples, colorSamples, internalFormat,
1080 width, height, depth, fixedSampleLocations);
1082 RESTORE_METRICS_OP ();
1086 glTexImage4DSGIS (GLenum target, GLint level, GLenum internalformat,
1087 GLsizei width, GLsizei height, GLsizei depth,
1088 GLsizei size4d, GLint border, GLenum format,
1089 GLenum type, const GLvoid *pixels)
1091 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1093 GLWRAP_DEFER (glTexImage4DSGIS, target, level,
1094 internalformat, width, height, depth,
1095 size4d, border, format, type, pixels);
1097 RESTORE_METRICS_OP ();
1101 glTexSubImage1D (GLenum target, GLint level, GLint xoffset,
1102 GLsizei width, GLenum format, GLenum type,
1103 const GLvoid *pixels)
1105 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1107 GLWRAP_DEFER (glTexSubImage1D, target, level, xoffset,
1108 width, format, type, pixels);
1110 RESTORE_METRICS_OP ();
1114 glTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset,
1115 GLsizei width, GLenum format, GLenum type,
1116 const GLvoid *pixels)
1118 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1120 GLWRAP_DEFER (glTexSubImage1DEXT, target, level, xoffset,
1121 width, format, type, pixels);
1123 RESTORE_METRICS_OP ();
1127 glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset,
1128 GLsizei width, GLsizei height, GLenum format, GLenum type,
1129 const GLvoid *pixels)
1131 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1133 GLWRAP_DEFER (glTexSubImage2D, target, level, xoffset, yoffset,
1134 width, height, format, type, pixels);
1136 RESTORE_METRICS_OP ();
1140 glTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset,
1141 GLsizei width, GLsizei height, GLenum format, GLenum type,
1142 const GLvoid *pixels)
1144 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1146 GLWRAP_DEFER (glTexSubImage2DEXT, target, level, xoffset, yoffset,
1147 width, height, format, type, pixels);
1149 RESTORE_METRICS_OP ();
1153 glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset,
1154 GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,
1155 GLenum format, GLenum type, const GLvoid *pixels)
1157 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1159 GLWRAP_DEFER (glTexSubImage3D, target, level, xoffset, yoffset,
1160 zoffset, width, height, depth, format, type, pixels);
1162 RESTORE_METRICS_OP ();
1166 glTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset,
1167 GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,
1168 GLenum format, GLenum type, const GLvoid *pixels)
1170 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1172 GLWRAP_DEFER (glTexSubImage3DEXT, target, level, xoffset, yoffset,
1173 zoffset, width, height, depth, format, type, pixels);
1175 RESTORE_METRICS_OP ();
1179 glTexSubImage4DSGIS (GLenum target, GLint level, GLint xoffset, GLint yoffset,
1180 GLint zoffset, GLint woffset, GLsizei width,
1181 GLsizei height, GLsizei depth, GLsizei size4d,
1182 GLenum format, GLenum type, const GLvoid *pixels)
1184 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1186 GLWRAP_DEFER (glTexSubImage4DSGIS, target, level, xoffset,
1187 yoffset, zoffset, woffset, width, height,
1188 depth, size4d, format, type, pixels);
1190 RESTORE_METRICS_OP ();
1194 glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level,
1195 GLenum internalformat, GLsizei width,
1196 GLint border, GLsizei imageSize,
1199 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1201 GLWRAP_DEFER (glCompressedMultiTexImage1DEXT, texunit, target,
1202 level, internalformat, width, border, imageSize, bits);
1204 RESTORE_METRICS_OP ();
1208 glCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level,
1209 GLenum internalformat, GLsizei width,
1210 GLsizei height, GLint border,
1211 GLsizei imageSize, const GLvoid *bits)
1213 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1215 GLWRAP_DEFER (glCompressedMultiTexImage2DEXT, texunit, target, level,
1216 internalformat, width, height, border, imageSize, bits);
1218 RESTORE_METRICS_OP ();
1222 glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level,
1223 GLenum internalformat, GLsizei width,
1224 GLsizei height, GLsizei depth, GLint border,
1225 GLsizei imageSize, const GLvoid *bits)
1227 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1229 GLWRAP_DEFER (glCompressedMultiTexImage3DEXT, texunit, target,
1230 level, internalformat, width, height, depth,
1231 border, imageSize, bits);
1233 RESTORE_METRICS_OP ();
1237 glCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level,
1238 GLint xoffset, GLsizei width, GLenum format,
1239 GLsizei imageSize, const GLvoid *bits)
1241 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1243 GLWRAP_DEFER (glCompressedMultiTexSubImage1DEXT, texunit, target,
1244 level, xoffset, width, format, imageSize, bits);
1246 RESTORE_METRICS_OP ();
1250 glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level,
1251 GLint xoffset, GLint yoffset, GLsizei width,
1252 GLsizei height, GLenum format,
1253 GLsizei imageSize, const GLvoid *bits)
1255 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1257 GLWRAP_DEFER (glCompressedMultiTexSubImage2DEXT, texunit, target, level,
1258 xoffset, yoffset, width, height, format, imageSize, bits);
1260 RESTORE_METRICS_OP ();
1264 glCompressedMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level,
1265 GLint xoffset, GLint yoffset, GLint zoffset,
1266 GLsizei width, GLsizei height, GLsizei depth,
1267 GLenum format, GLsizei imageSize,
1270 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1272 GLWRAP_DEFER (glCompressedMultiTexSubImage3DEXT, texunit, target,
1273 level, xoffset, yoffset, zoffset, width, height,
1274 depth, format, imageSize, bits);
1276 RESTORE_METRICS_OP ();
1280 glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat,
1281 GLsizei width, GLint border, GLsizei imageSize,
1284 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1286 GLWRAP_DEFER (glCompressedTexImage1D, target, level,
1287 internalformat, width, border, imageSize, data);
1289 RESTORE_METRICS_OP ();
1293 glCompressedTexImage1DARB (GLenum target, GLint level, GLenum internalformat,
1294 GLsizei width, GLint border, GLsizei imageSize,
1297 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1299 GLWRAP_DEFER (glCompressedTexImage1DARB, target, level, internalformat,
1300 width, border, imageSize, data);
1302 RESTORE_METRICS_OP ();
1306 glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat,
1307 GLsizei width, GLsizei height, GLint border,
1308 GLsizei imageSize, const GLvoid *data)
1310 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1312 GLWRAP_DEFER (glCompressedTexImage2D, target, level, internalformat,
1313 width, height, border, imageSize, data);
1315 RESTORE_METRICS_OP ();
1319 glCompressedTexImage2DARB (GLenum target, GLint level, GLenum internalformat,
1320 GLsizei width, GLsizei height, GLint border,
1321 GLsizei imageSize, const GLvoid *data)
1323 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1325 GLWRAP_DEFER (glCompressedTexImage2DARB, target, level, internalformat,
1326 width, height, border, imageSize, data);
1328 RESTORE_METRICS_OP ();
1332 glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat,
1333 GLsizei width, GLsizei height, GLsizei depth,
1334 GLint border, GLsizei imageSize, const GLvoid *data)
1336 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1338 GLWRAP_DEFER (glCompressedTexImage3D, target, level, internalformat,
1339 width, height, depth, border, imageSize, data);
1341 RESTORE_METRICS_OP ();
1345 glCompressedTexImage3DARB (GLenum target, GLint level, GLenum internalformat,
1346 GLsizei width, GLsizei height, GLsizei depth,
1347 GLint border, GLsizei imageSize, const GLvoid *data)
1349 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1351 GLWRAP_DEFER (glCompressedTexImage3DARB, target, level, internalformat,
1352 width, height, depth, border, imageSize, data);
1354 RESTORE_METRICS_OP ();
1358 glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset,
1359 GLsizei width, GLenum format, GLsizei imageSize,
1362 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1364 GLWRAP_DEFER (glCompressedTexSubImage1D, target, level, xoffset,
1365 width, format, imageSize, data);
1367 RESTORE_METRICS_OP ();
1371 glCompressedTexSubImage1DARB (GLenum target, GLint level, GLint xoffset,
1372 GLsizei width, GLenum format, GLsizei imageSize,
1375 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1377 GLWRAP_DEFER (glCompressedTexSubImage1DARB, target, level, xoffset,
1378 width, format, imageSize, data);
1380 RESTORE_METRICS_OP ();
1384 glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset,
1385 GLint yoffset, GLsizei width, GLsizei height,
1386 GLenum format, GLsizei imageSize, const GLvoid *data)
1388 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1390 GLWRAP_DEFER (glCompressedTexSubImage2D, target, level, xoffset,
1391 yoffset, width, height, format, imageSize, data);
1393 RESTORE_METRICS_OP ();
1397 glCompressedTexSubImage2DARB (GLenum target, GLint level, GLint xoffset,
1398 GLint yoffset, GLsizei width, GLsizei height,
1399 GLenum format, GLsizei imageSize,
1402 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1404 GLWRAP_DEFER (glCompressedTexSubImage2DARB, target, level, xoffset,
1405 yoffset, width, height, format, imageSize, data);
1407 RESTORE_METRICS_OP ();
1411 glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset,
1412 GLint yoffset, GLint zoffset, GLsizei width,
1413 GLsizei height, GLsizei depth, GLenum format,
1414 GLsizei imageSize, const GLvoid *data)
1416 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1418 GLWRAP_DEFER (glCompressedTexSubImage3D, target, level, xoffset,
1419 yoffset, zoffset, width, height, depth, format,
1422 RESTORE_METRICS_OP ();
1426 glCompressedTexSubImage3DARB (GLenum target, GLint level, GLint xoffset,
1427 GLint yoffset, GLint zoffset, GLsizei width,
1428 GLsizei height, GLsizei depth, GLenum format,
1429 GLsizei imageSize, const GLvoid *data)
1431 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1433 GLWRAP_DEFER (glCompressedTexSubImage3DARB, target, level, xoffset,
1434 yoffset, zoffset, width, height, depth, format,
1437 RESTORE_METRICS_OP ();
1441 glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level,
1442 GLenum internalformat, GLsizei width,
1443 GLint border, GLsizei imageSize,
1446 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1448 GLWRAP_DEFER (glCompressedTextureImage1DEXT, texture, target, level,
1449 internalformat, width, border, imageSize, bits);
1451 RESTORE_METRICS_OP ();
1455 glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level,
1456 GLenum internalformat, GLsizei width,
1457 GLsizei height, GLint border,
1458 GLsizei imageSize, const GLvoid *bits)
1460 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1462 GLWRAP_DEFER (glCompressedTextureImage2DEXT, texture, target, level,
1463 internalformat, width, height, border, imageSize, bits);
1465 RESTORE_METRICS_OP ();
1469 glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level,
1470 GLenum internalformat, GLsizei width,
1471 GLsizei height, GLsizei depth, GLint border,
1472 GLsizei imageSize, const GLvoid *bits)
1474 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1476 GLWRAP_DEFER (glCompressedTextureImage3DEXT, texture, target,
1477 level, internalformat, width, height, depth,
1478 border, imageSize, bits);
1480 RESTORE_METRICS_OP ();
1484 glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level,
1485 GLint xoffset, GLsizei width, GLenum format,
1486 GLsizei imageSize, const GLvoid *bits)
1488 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1490 GLWRAP_DEFER (glCompressedTextureSubImage1DEXT, texture, target,
1491 level, xoffset, width, format, imageSize, bits);
1493 RESTORE_METRICS_OP ();
1497 glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level,
1498 GLint xoffset, GLint yoffset, GLsizei width,
1499 GLsizei height, GLenum format,
1500 GLsizei imageSize, const GLvoid *bits)
1502 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1504 GLWRAP_DEFER (glCompressedTextureSubImage2DEXT, texture, target, level,
1505 xoffset, yoffset, width, height, format, imageSize, bits);
1507 RESTORE_METRICS_OP ();
1511 glCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level,
1512 GLint xoffset, GLint yoffset, GLint zoffset,
1513 GLsizei width, GLsizei height, GLsizei depth,
1514 GLenum format, GLsizei imageSize,
1517 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1519 GLWRAP_DEFER (glCompressedTextureSubImage3DEXT, texture, target,
1520 level, xoffset, yoffset, zoffset, width, height,
1521 depth, format, imageSize, bits);
1523 RESTORE_METRICS_OP ();
1527 glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level,
1528 GLenum_or_int internalformat,
1529 GLsizei width, GLint border,
1530 GLenum format, GLenum type, const GLvoid *pixels)
1532 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1534 GLWRAP_DEFER (glMultiTexImage1DEXT, texunit, target, level,
1535 internalformat, width, border, format, type, pixels);
1537 RESTORE_METRICS_OP ();
1541 glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level,
1542 GLenum_or_int internalformat,
1543 GLsizei width, GLsizei height,
1544 GLint border, GLenum format, GLenum type,
1545 const GLvoid *pixels)
1547 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1549 GLWRAP_DEFER (glMultiTexImage2DEXT, texunit, target, level,
1550 internalformat, width, height, border, format,
1553 RESTORE_METRICS_OP ();
1557 glMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level,
1558 GLenum_or_int internalformat,
1559 GLsizei width, GLsizei height,
1560 GLsizei depth, GLint border, GLenum format,
1561 GLenum type, const GLvoid *pixels)
1563 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1565 GLWRAP_DEFER (glMultiTexImage3DEXT, texunit, target, level,
1566 internalformat, width, height, depth, border,
1567 format, type, pixels);
1569 RESTORE_METRICS_OP ();
1573 glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level,
1574 GLint xoffset, GLsizei width, GLenum format,
1575 GLenum type, const GLvoid *pixels)
1577 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1579 GLWRAP_DEFER (glMultiTexSubImage1DEXT, texunit, target, level,
1580 xoffset, width, format, type, pixels);
1582 RESTORE_METRICS_OP ();
1586 glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level,
1587 GLint xoffset, GLint yoffset, GLsizei width,
1588 GLsizei height, GLenum format, GLenum type,
1589 const GLvoid *pixels)
1591 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1593 GLWRAP_DEFER (glMultiTexSubImage2DEXT, texunit, target, level, xoffset,
1594 yoffset, width, height, format, type, pixels);
1596 RESTORE_METRICS_OP ();
1600 glMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level,
1601 GLint xoffset, GLint yoffset, GLint zoffset,
1602 GLsizei width, GLsizei height, GLsizei depth,
1603 GLenum format, GLenum type, const GLvoid *pixels)
1605 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1607 GLWRAP_DEFER (glMultiTexSubImage3DEXT, texunit, target, level,
1608 xoffset, yoffset, zoffset, width, height, depth,
1609 format, type, pixels);
1611 RESTORE_METRICS_OP ();