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 /* As of glext.h version 20131008 some types changed.
52 * I have no idea why some internalFormats changed from GLenum to
53 * GLint while others changed from GLint to GLenum.
55 * But, in order to compile with either version, we track these.
57 #if GL_GLEXT_VERSION >= 20131008
58 #define GLint_or_enum GLenum
59 #define GLenum_or_int GLint
61 #define GLint_or_enum GLint
62 #define GLenum_or_int GLenum
65 static void *gl_handle;
67 /* Switch metrics operation persistently, (until next SWITCH) */
68 #define SWITCH_METRICS_OP(op) \
69 metrics_counter_stop (); \
70 metrics_set_current_op (op); \
71 metrics_counter_start ();
73 /* Switch metrics operation temporarily, see RESTORE_METRICS_OP */
74 #define SAVE_THEN_SWITCH_METRICS_OP(op) \
75 metrics_op_t save = metrics_get_current_op (); \
76 SWITCH_METRICS_OP (op);
78 /* Switch back to metrics operation saved by SAVE_THEN_SWITCH_METRICS_OP */
79 #define RESTORE_METRICS_OP(op) \
80 SWITCH_METRICS_OP (save);
83 glwrap_set_gl_handle (void *handle)
85 if (gl_handle == NULL)
90 glwrap_lookup (char *name)
94 /* We don't call dlopen here to find the library in which to
95 * perform a dlsym lookup. That's because the application may
96 * be loading libGL.so or libGLESv2.so for its OpenGL symbols.
98 * So we instead watch for one of those filenames to go by in
99 * our dlopen wrapper, which will then call
100 * glwrap_set_gl_handle to give us the handle to use here.
102 * If the application hasn't called dlopen on a "libGL"
103 * library, then presumably the application is linked directly
104 * to an OpenGL implementation. In this case, we can use
105 * RTLD_NEXT to find the symbol.
107 * But just in case, we also let the user override that by
108 * specifying the FIPS_LIBGL environment variable to the path
109 * of the real libGL.so library that fips should dlopen here.
111 if (gl_handle == NULL) {
114 path = getenv ("FIPS_LIBGL");
116 path = getenv ("GLAZE_LIBGL");
118 gl_handle = dlopen (path, RTLD_LAZY);
120 if (gl_handle == NULL) {
121 fprintf (stderr, "Failed to dlopen FIPS_LIBGL: "
126 gl_handle = RTLD_NEXT;
130 ret = dlwrap_real_dlsym (gl_handle, name);
133 fprintf (stderr, "fips: Error: glwrap_lookup failed to dlsym %s\n",
141 /* With a program change, we stop the counter, update the
142 * active program, then start the counter up again. */
144 glUseProgram (GLuint program)
146 SWITCH_METRICS_OP (METRICS_OP_SHADER + program);
148 GLWRAP_DEFER(glUseProgram, program);
152 glUseProgramObjectARB (GLhandleARB programObj)
154 SWITCH_METRICS_OP (METRICS_OP_SHADER + programObj);
156 GLWRAP_DEFER(glUseProgramObjectARB, programObj);
159 /* METRICS_OP_ACCUM */
161 glAccum (GLenum op, GLfloat value)
163 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_ACCUM);
165 GLWRAP_DEFER (glAccum, op, value);
167 RESTORE_METRICS_OP ();
171 glClearAccum (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
173 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_ACCUM);
175 GLWRAP_DEFER (glClearAccum, red, green, blue, alpha);
177 RESTORE_METRICS_OP ();
181 glClearAccumxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
183 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_ACCUM);
185 GLWRAP_DEFER (glClearAccumxOES, red, green, blue, alpha);
187 RESTORE_METRICS_OP ();
190 /* METRICS_OP_BUFFER_DATA */
192 glBufferData (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage)
194 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
196 GLWRAP_DEFER (glBufferData, target, size, data, usage);
198 RESTORE_METRICS_OP ();
202 glNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const GLvoid *data,
205 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
207 GLWRAP_DEFER (glNamedBufferDataEXT, buffer, size, data, usage);
209 RESTORE_METRICS_OP ();
213 glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size,
216 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
218 GLWRAP_DEFER (glBufferSubData, target, offset, size, data);
220 RESTORE_METRICS_OP ();
224 glNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size,
227 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
229 GLWRAP_DEFER (glNamedBufferSubDataEXT, buffer, offset, size, data);
231 RESTORE_METRICS_OP ();
235 glMapBuffer (GLenum target, GLenum access)
239 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
241 GLWRAP_DEFER_WITH_RETURN (ret, glMapBuffer, target, access);
243 RESTORE_METRICS_OP ();
249 glMapBufferARB (GLenum target, GLenum access)
253 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
255 GLWRAP_DEFER_WITH_RETURN (ret, glMapBufferARB, target, access);
257 RESTORE_METRICS_OP ();
263 glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length,
268 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
270 GLWRAP_DEFER_WITH_RETURN (ret, glMapBufferRange, target, offset,
273 RESTORE_METRICS_OP ();
279 glUnmapBuffer (GLenum target)
283 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
285 GLWRAP_DEFER_WITH_RETURN (ret, glUnmapBuffer, target);
287 RESTORE_METRICS_OP ();
293 glUnmapNamedBufferEXT (GLuint buffer)
297 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
299 GLWRAP_DEFER_WITH_RETURN (ret, glUnmapNamedBufferEXT, buffer);
301 RESTORE_METRICS_OP ();
307 glUnmapBufferARB (GLenum target)
311 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
313 GLWRAP_DEFER_WITH_RETURN (ret, glUnmapBufferARB, target);
315 RESTORE_METRICS_OP ();
321 glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length)
323 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
325 GLWRAP_DEFER (glFlushMappedBufferRange, target, offset, length);
327 RESTORE_METRICS_OP ();
331 glFlushMappedBufferRangeAPPLE (GLenum target, GLintptr offset, GLsizeiptr size)
333 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
335 GLWRAP_DEFER (glFlushMappedBufferRangeAPPLE, target, offset, size);
337 RESTORE_METRICS_OP ();
341 glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset,
344 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
346 GLWRAP_DEFER (glFlushMappedNamedBufferRangeEXT, buffer, offset, length);
348 RESTORE_METRICS_OP ();
352 glMapNamedBufferEXT (GLuint buffer, GLenum access)
356 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
358 GLWRAP_DEFER_WITH_RETURN (ret, glMapNamedBufferEXT, buffer, access);
360 RESTORE_METRICS_OP ();
366 glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length,
371 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_DATA);
373 GLWRAP_DEFER_WITH_RETURN (ret, glMapNamedBufferRangeEXT, buffer,
374 offset, length, access);
376 RESTORE_METRICS_OP ();
381 /* METRICS_OP_BUFFER_SUB_DATA */
383 glCopyBufferSubData (GLenum readTarget, GLenum writeTarget,
384 GLintptr readOffset, GLintptr writeOffset,
387 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_SUB_DATA);
389 GLWRAP_DEFER (glCopyBufferSubData, readTarget, writeTarget,
390 readOffset, writeOffset, size);
392 RESTORE_METRICS_OP ();
396 glNamedCopyBufferSubDataEXT (GLuint readBuffer, GLuint writeBuffer,
397 GLintptr readOffset, GLintptr writeOffset,
400 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BUFFER_SUB_DATA);
402 GLWRAP_DEFER (glNamedCopyBufferSubDataEXT, readBuffer,
403 writeBuffer, readOffset, writeOffset, size);
405 RESTORE_METRICS_OP ();
408 /* METRICS_OP_BITMAP */
410 glBitmap (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig,
411 GLfloat xmove, GLfloat ymove, const GLubyte *bitmap)
413 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BITMAP);
415 GLWRAP_DEFER (glBitmap, width, height, xorig, yorig,
416 xmove, ymove, bitmap);
418 RESTORE_METRICS_OP ();
422 glBitmapxOES (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig,
423 GLfixed xmove, GLfixed ymove, const GLubyte *bitmap)
425 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BITMAP);
427 GLWRAP_DEFER (glBitmapxOES, width, height, xorig, yorig,
428 xmove, ymove, bitmap);
430 RESTORE_METRICS_OP ();
433 /* METRICS_OP_BLIT_FRAMEBUFFER */
435 glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
436 GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
437 GLbitfield mask, GLenum filter)
439 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BLIT_FRAMEBUFFER);
441 GLWRAP_DEFER (glBlitFramebuffer, srcX0, srcY0, srcX1, srcY1,
442 dstX0, dstY0, dstX1, dstY1, mask, filter);
444 RESTORE_METRICS_OP ();
448 glBlitFramebufferEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
449 GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
450 GLbitfield mask, GLenum filter)
452 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_BLIT_FRAMEBUFFER);
454 GLWRAP_DEFER (glBlitFramebufferEXT, srcX0, srcY0, srcX1, srcY1,
455 dstX0, dstY0, dstX1, dstY1, mask, filter);
457 RESTORE_METRICS_OP ();
460 /* METRICS_OP_CLEAR */
462 glClear (GLbitfield mask)
464 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR);
466 GLWRAP_DEFER (glClear, mask);
468 RESTORE_METRICS_OP ();
472 glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
474 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR);
476 GLWRAP_DEFER (glClearBufferfi, buffer, drawbuffer, depth, stencil);
478 RESTORE_METRICS_OP ();
482 glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value)
484 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR);
486 GLWRAP_DEFER (glClearBufferfv, buffer, drawbuffer, value);
488 RESTORE_METRICS_OP ();
492 glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value)
494 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR);
496 GLWRAP_DEFER (glClearBufferiv, buffer, drawbuffer, value);
498 RESTORE_METRICS_OP ();
502 glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value)
504 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR);
506 GLWRAP_DEFER (glClearBufferuiv, buffer, drawbuffer, value);
508 RESTORE_METRICS_OP ();
511 /* METRICS_OP_CLEAR_BUFFER_DATA */
514 glClearBufferData (GLenum target, GLenum internalformat, GLenum format,
515 GLenum type, const void *data)
517 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR_BUFFER_DATA);
519 GLWRAP_DEFER (glClearBufferData, target, internalformat, format,
522 RESTORE_METRICS_OP ();
526 glClearBufferSubData (GLenum target, GLenum internalformat, GLintptr offset,
527 GLsizeiptr size, GLenum format, GLenum type,
530 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR_BUFFER_DATA);
532 GLWRAP_DEFER (glClearBufferSubData, target, internalformat,
533 offset, size, format, type, data);
535 RESTORE_METRICS_OP ();
539 glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format,
540 GLenum type, const void *data)
542 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR_BUFFER_DATA);
544 GLWRAP_DEFER (glClearNamedBufferDataEXT, buffer, internalformat,
547 RESTORE_METRICS_OP ();
551 glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat,
552 GLenum format, GLenum type, GLsizeiptr offset,
553 GLsizeiptr size, const void *data)
555 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_CLEAR_BUFFER_DATA);
557 GLWRAP_DEFER (glClearNamedBufferSubDataEXT, buffer,
558 internalformat, format, type, offset, size, data);
560 RESTORE_METRICS_OP ();
563 /* METRICS_OP_CLEAR_TEX_IMAGE */
566 /* METRICS_OP_COPY_PIXELS */
568 glCopyPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type )
570 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_PIXELS);
572 GLWRAP_DEFER (glCopyPixels, x, y, width, height, type);
574 RESTORE_METRICS_OP ();
577 /* METRICS_OP_COPY_TEX_IMAGE */
579 glCopyTexImage1D (GLenum target, GLint level, GLenum internalformat,
580 GLint x, GLint y, GLsizei width, GLint border)
582 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
584 GLWRAP_DEFER (glCopyTexImage1D, target, level, internalformat,
585 x, y, width, border);
587 RESTORE_METRICS_OP ();
591 glCopyTexImage1DEXT (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 (glCopyTexImage1DEXT, target, level, internalformat,
597 x, y, width, border);
599 RESTORE_METRICS_OP ();
603 glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat,
604 GLint x, GLint y, GLsizei width, GLsizei height,
607 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
609 GLWRAP_DEFER (glCopyTexImage2D, target, level, internalformat,
610 x, y, width, height, border);
612 RESTORE_METRICS_OP ();
616 glCopyTexImage2DEXT (GLenum target, GLint level, GLenum internalformat,
617 GLint x, GLint y, GLsizei width, GLsizei height,
620 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
622 GLWRAP_DEFER (glCopyTexImage2DEXT, target, level, internalformat,
623 x, y, width, height, border);
625 RESTORE_METRICS_OP ();
629 glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset,
630 GLint x, GLint y, GLsizei width)
632 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
634 GLWRAP_DEFER (glCopyTexSubImage1D, target, level, xoffset,
637 RESTORE_METRICS_OP ();
641 glCopyTexSubImage1DEXT (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 (glCopyTexSubImage1DEXT, target, level, xoffset,
649 RESTORE_METRICS_OP ();
653 glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset,
654 GLint yoffset, GLint x, GLint y, GLsizei width,
657 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
659 GLWRAP_DEFER (glCopyTexSubImage2D, target, level, xoffset, yoffset,
660 x, y, width, height);
662 RESTORE_METRICS_OP ();
666 glCopyTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset,
667 GLint yoffset, GLint x, GLint y, GLsizei width,
670 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
672 GLWRAP_DEFER (glCopyTexSubImage2DEXT, target, level, xoffset, yoffset,
673 x, y, width, height);
675 RESTORE_METRICS_OP ();
679 glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset,
680 GLint yoffset, GLint zoffset, GLint x, GLint y,
681 GLsizei width, GLsizei height)
683 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
685 GLWRAP_DEFER (glCopyTexSubImage3D, target, level, xoffset, yoffset,
686 zoffset, x, y, width, height);
688 RESTORE_METRICS_OP ();
692 glCopyTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset,
693 GLint yoffset, GLint zoffset, GLint x, GLint y,
694 GLsizei width, GLsizei height)
696 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
698 GLWRAP_DEFER (glCopyTexSubImage3DEXT, target, level, xoffset, yoffset,
699 zoffset, x, y, width, height);
701 RESTORE_METRICS_OP ();
705 glCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level,
706 GLenum internalformat, GLint x, GLint y,
707 GLsizei width, GLint border)
709 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
711 GLWRAP_DEFER (glCopyTextureImage1DEXT, texture, target, level,
712 internalformat, x, y, width, border);
714 RESTORE_METRICS_OP ();
718 glCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level,
719 GLenum internalformat, GLint x, GLint y, GLsizei width,
720 GLsizei height, GLint border)
722 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
724 GLWRAP_DEFER (glCopyTextureImage2DEXT, texture, target,
725 level, internalformat, x, y, width, height, border);
727 RESTORE_METRICS_OP ();
731 glCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level,
732 GLint xoffset, GLint x, GLint y, GLsizei width)
734 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
736 GLWRAP_DEFER (glCopyTextureSubImage1DEXT, texture, target, level,
737 xoffset, x, y, width);
739 RESTORE_METRICS_OP ();
743 glCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level,
744 GLint xoffset, GLint yoffset, GLint x, GLint y,
745 GLsizei width, GLsizei height)
747 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
749 GLWRAP_DEFER (glCopyTextureSubImage2DEXT, texture, target, level,
750 xoffset, yoffset, x, y, width, height);
752 RESTORE_METRICS_OP ();
756 glCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level,
757 GLint xoffset, GLint yoffset, GLint zoffset,
758 GLint x, GLint y, GLsizei width, GLsizei height)
760 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
762 GLWRAP_DEFER (glCopyTextureSubImage3DEXT, texture, target, level,
763 xoffset, yoffset, zoffset, x, y, width, height);
765 RESTORE_METRICS_OP ();
769 glCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level,
770 GLenum internalformat, GLint x, GLint y,
771 GLsizei width, GLint border)
773 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
775 GLWRAP_DEFER (glCopyMultiTexImage1DEXT, texunit, target, level,
776 internalformat, x, y, width, border);
778 RESTORE_METRICS_OP ();
782 glCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level,
783 GLenum internalformat, GLint x, GLint y,
784 GLsizei width, GLsizei height, GLint border)
786 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
788 GLWRAP_DEFER (glCopyMultiTexImage2DEXT, texunit, target, level,
789 internalformat, x, y, width, height, border);
791 RESTORE_METRICS_OP ();
795 glCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level,
796 GLint xoffset, GLint x, GLint y, GLsizei width)
798 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
800 GLWRAP_DEFER (glCopyMultiTexSubImage1DEXT, texunit, target, level,
801 xoffset, x, y, width);
803 RESTORE_METRICS_OP ();
807 glCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level,
808 GLint xoffset, GLint yoffset, GLint x, GLint y,
809 GLsizei width, GLsizei height)
811 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
813 GLWRAP_DEFER (glCopyMultiTexSubImage2DEXT, texunit, target, level,
814 xoffset, yoffset, x, y, width, height);
816 RESTORE_METRICS_OP ();
820 glCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level,
821 GLint xoffset, GLint yoffset, GLint zoffset,
822 GLint x, GLint y, GLsizei width, GLsizei height)
824 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_COPY_TEX_IMAGE);
826 GLWRAP_DEFER (glCopyMultiTexSubImage3DEXT, texunit, target, level,
827 xoffset, yoffset, zoffset, x, y, width, height);
829 RESTORE_METRICS_OP ();
832 /* METRICS_OP_DRAW_PIXELS */
834 glDrawPixels (GLsizei width, GLsizei height, GLenum format, GLenum type,
835 const GLvoid *pixels)
837 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_DRAW_PIXELS);
839 GLWRAP_DEFER (glDrawPixels, width, height, format, type, pixels);
841 RESTORE_METRICS_OP ();
844 /* METRICS_OP_GET_TEX_IMAGE */
847 glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target,
848 GLint lod, GLvoid *img)
850 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
852 GLWRAP_DEFER (glGetCompressedMultiTexImageEXT, texunit,
855 RESTORE_METRICS_OP ();
859 glGetCompressedTexImage (GLenum target, GLint level, GLvoid *img)
861 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
863 GLWRAP_DEFER (glGetCompressedTexImage, target, level, img);
865 RESTORE_METRICS_OP ();
869 glGetCompressedTexImageARB (GLenum target, GLint level, GLvoid *img)
871 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
873 GLWRAP_DEFER (glGetCompressedTexImageARB, target, level, img);
875 RESTORE_METRICS_OP ();
879 glGetCompressedTextureImageEXT (GLuint texture, GLenum target,
880 GLint lod, GLvoid *img)
882 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
884 GLWRAP_DEFER (glGetCompressedTextureImageEXT, texture,
887 RESTORE_METRICS_OP ();
891 glGetMultiTexImageEXT (GLenum texunit, GLenum target, GLint level,
892 GLenum format, GLenum type, GLvoid *pixels)
894 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
896 GLWRAP_DEFER (glGetMultiTexImageEXT, texunit,
897 target, level, format, type, pixels);
899 RESTORE_METRICS_OP ();
903 glGetnCompressedTexImageARB (GLenum target, GLint lod,
904 GLsizei bufSize, GLvoid *img)
906 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
908 GLWRAP_DEFER (glGetnCompressedTexImageARB, target, lod, bufSize, img);
910 RESTORE_METRICS_OP ();
914 glGetnTexImageARB (GLenum target, GLint level, GLenum format,
915 GLenum type, GLsizei bufSize, GLvoid *img)
917 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
919 GLWRAP_DEFER (glGetnTexImageARB, target, level,
920 format, type, bufSize, img);
922 RESTORE_METRICS_OP ();
926 glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type,
929 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_GET_TEX_IMAGE);
931 GLWRAP_DEFER (glGetTexImage, target, level, format, type, pixels);
933 RESTORE_METRICS_OP ();
936 /* METRICS_OP_READ_PIXELS */
938 glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height,
939 GLenum format, GLenum type, GLvoid *pixels )
941 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_READ_PIXELS);
943 GLWRAP_DEFER (glReadPixels, x, y, width, height, format, type, pixels);
945 RESTORE_METRICS_OP ();
949 glReadnPixelsARB (GLint x, GLint y, GLsizei width, GLsizei height,
950 GLenum format, GLenum type, GLsizei bufSize, GLvoid *data)
952 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_READ_PIXELS);
954 GLWRAP_DEFER (glReadnPixelsARB, x, y, width, height,
955 format, type, bufSize, data);
957 RESTORE_METRICS_OP ();
960 /* METRICS_OP_TEX_IMAGE */
962 glTexImage1D (GLenum target, GLint level, GLint internalFormat,
963 GLsizei width, GLint border, GLenum format, GLenum type,
964 const GLvoid *pixels)
966 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
968 GLWRAP_DEFER (glTexImage1D, target, level, internalFormat, width,
969 border, format, type, pixels);
971 RESTORE_METRICS_OP ();
975 glTexImage2D (GLenum target, GLint level, GLint internalFormat,
976 GLsizei width, GLsizei height, GLint border, GLenum format,
977 GLenum type, const GLvoid *pixels )
979 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
981 GLWRAP_DEFER (glTexImage2D, target, level, internalFormat,
982 width, height, border, format, type, pixels);
984 RESTORE_METRICS_OP ();
989 glTexImage2DMultisample (GLenum target, GLsizei samples,
990 GLint_or_enum internalformat,
991 GLsizei width, GLsizei height,
992 GLboolean fixedsamplelocations)
994 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
996 GLWRAP_DEFER (glTexImage2DMultisample, target, samples,
997 internalformat, width, height, fixedsamplelocations);
999 RESTORE_METRICS_OP ();
1003 glTexImage2DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples,
1004 GLsizei colorSamples, GLint internalFormat,
1005 GLsizei width, GLsizei height,
1006 GLboolean fixedSampleLocations)
1008 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1010 GLWRAP_DEFER (glTexImage2DMultisampleCoverageNV, target,
1011 coverageSamples, colorSamples, internalFormat,
1012 width, height, fixedSampleLocations);
1014 RESTORE_METRICS_OP ();
1018 glTexImage3D (GLenum target, GLint level, GLint internalformat,
1019 GLsizei width, GLsizei height, GLsizei depth, GLint border,
1020 GLenum format, GLenum type, const GLvoid *pixels)
1022 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1024 GLWRAP_DEFER (glTexImage3D, target, level, internalformat,
1025 width, height, depth, border, format, type, pixels);
1027 RESTORE_METRICS_OP ();
1031 glTexImage3DEXT (GLenum target, GLint level, GLenum internalformat,
1032 GLsizei width, GLsizei height, GLsizei depth, GLint border,
1033 GLenum format, GLenum type, const GLvoid *pixels)
1035 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1037 GLWRAP_DEFER (glTexImage3DEXT, target, level, internalformat,
1038 width, height, depth, border, format, type, pixels);
1040 RESTORE_METRICS_OP ();
1044 glTexImage3DMultisample (GLenum target, GLsizei samples,
1045 GLint_or_enum internalformat,
1046 GLsizei width, GLsizei height, GLsizei depth,
1047 GLboolean fixedsamplelocations)
1049 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1051 GLWRAP_DEFER (glTexImage3DMultisample, target, samples,
1052 internalformat, width, height, depth,
1053 fixedsamplelocations);
1055 RESTORE_METRICS_OP ();
1059 glTexImage3DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples,
1060 GLsizei colorSamples, GLint internalFormat,
1061 GLsizei width, GLsizei height, GLsizei depth,
1062 GLboolean fixedSampleLocations)
1064 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1066 GLWRAP_DEFER (glTexImage3DMultisampleCoverageNV, target,
1067 coverageSamples, colorSamples, internalFormat,
1068 width, height, depth, fixedSampleLocations);
1070 RESTORE_METRICS_OP ();
1074 glTexImage4DSGIS (GLenum target, GLint level, GLenum internalformat,
1075 GLsizei width, GLsizei height, GLsizei depth,
1076 GLsizei size4d, GLint border, GLenum format,
1077 GLenum type, const GLvoid *pixels)
1079 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1081 GLWRAP_DEFER (glTexImage4DSGIS, target, level,
1082 internalformat, width, height, depth,
1083 size4d, border, format, type, pixels);
1085 RESTORE_METRICS_OP ();
1089 glTexSubImage1D (GLenum target, GLint level, GLint xoffset,
1090 GLsizei width, GLenum format, GLenum type,
1091 const GLvoid *pixels)
1093 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1095 GLWRAP_DEFER (glTexSubImage1D, target, level, xoffset,
1096 width, format, type, pixels);
1098 RESTORE_METRICS_OP ();
1102 glTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset,
1103 GLsizei width, GLenum format, GLenum type,
1104 const GLvoid *pixels)
1106 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1108 GLWRAP_DEFER (glTexSubImage1DEXT, target, level, xoffset,
1109 width, format, type, pixels);
1111 RESTORE_METRICS_OP ();
1115 glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset,
1116 GLsizei width, GLsizei height, GLenum format, GLenum type,
1117 const GLvoid *pixels)
1119 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1121 GLWRAP_DEFER (glTexSubImage2D, target, level, xoffset, yoffset,
1122 width, height, format, type, pixels);
1124 RESTORE_METRICS_OP ();
1128 glTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset,
1129 GLsizei width, GLsizei height, GLenum format, GLenum type,
1130 const GLvoid *pixels)
1132 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1134 GLWRAP_DEFER (glTexSubImage2DEXT, target, level, xoffset, yoffset,
1135 width, height, format, type, pixels);
1137 RESTORE_METRICS_OP ();
1141 glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset,
1142 GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,
1143 GLenum format, GLenum type, const GLvoid *pixels)
1145 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1147 GLWRAP_DEFER (glTexSubImage3D, target, level, xoffset, yoffset,
1148 zoffset, width, height, depth, format, type, pixels);
1150 RESTORE_METRICS_OP ();
1154 glTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset,
1155 GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,
1156 GLenum format, GLenum type, const GLvoid *pixels)
1158 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1160 GLWRAP_DEFER (glTexSubImage3DEXT, target, level, xoffset, yoffset,
1161 zoffset, width, height, depth, format, type, pixels);
1163 RESTORE_METRICS_OP ();
1167 glTexSubImage4DSGIS (GLenum target, GLint level, GLint xoffset, GLint yoffset,
1168 GLint zoffset, GLint woffset, GLsizei width,
1169 GLsizei height, GLsizei depth, GLsizei size4d,
1170 GLenum format, GLenum type, const GLvoid *pixels)
1172 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1174 GLWRAP_DEFER (glTexSubImage4DSGIS, target, level, xoffset,
1175 yoffset, zoffset, woffset, width, height,
1176 depth, size4d, format, type, pixels);
1178 RESTORE_METRICS_OP ();
1182 glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level,
1183 GLenum internalformat, GLsizei width,
1184 GLint border, GLsizei imageSize,
1187 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1189 GLWRAP_DEFER (glCompressedMultiTexImage1DEXT, texunit, target,
1190 level, internalformat, width, border, imageSize, bits);
1192 RESTORE_METRICS_OP ();
1196 glCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level,
1197 GLenum internalformat, GLsizei width,
1198 GLsizei height, GLint border,
1199 GLsizei imageSize, const GLvoid *bits)
1201 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1203 GLWRAP_DEFER (glCompressedMultiTexImage2DEXT, texunit, target, level,
1204 internalformat, width, height, border, imageSize, bits);
1206 RESTORE_METRICS_OP ();
1210 glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level,
1211 GLenum internalformat, GLsizei width,
1212 GLsizei height, GLsizei depth, GLint border,
1213 GLsizei imageSize, const GLvoid *bits)
1215 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1217 GLWRAP_DEFER (glCompressedMultiTexImage3DEXT, texunit, target,
1218 level, internalformat, width, height, depth,
1219 border, imageSize, bits);
1221 RESTORE_METRICS_OP ();
1225 glCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level,
1226 GLint xoffset, GLsizei width, GLenum format,
1227 GLsizei imageSize, const GLvoid *bits)
1229 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1231 GLWRAP_DEFER (glCompressedMultiTexSubImage1DEXT, texunit, target,
1232 level, xoffset, width, format, imageSize, bits);
1234 RESTORE_METRICS_OP ();
1238 glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level,
1239 GLint xoffset, GLint yoffset, GLsizei width,
1240 GLsizei height, GLenum format,
1241 GLsizei imageSize, const GLvoid *bits)
1243 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1245 GLWRAP_DEFER (glCompressedMultiTexSubImage2DEXT, texunit, target, level,
1246 xoffset, yoffset, width, height, format, imageSize, bits);
1248 RESTORE_METRICS_OP ();
1252 glCompressedMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level,
1253 GLint xoffset, GLint yoffset, GLint zoffset,
1254 GLsizei width, GLsizei height, GLsizei depth,
1255 GLenum format, GLsizei imageSize,
1258 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1260 GLWRAP_DEFER (glCompressedMultiTexSubImage3DEXT, texunit, target,
1261 level, xoffset, yoffset, zoffset, width, height,
1262 depth, format, imageSize, bits);
1264 RESTORE_METRICS_OP ();
1268 glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat,
1269 GLsizei width, GLint border, GLsizei imageSize,
1272 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1274 GLWRAP_DEFER (glCompressedTexImage1D, target, level,
1275 internalformat, width, border, imageSize, data);
1277 RESTORE_METRICS_OP ();
1281 glCompressedTexImage1DARB (GLenum target, GLint level, GLenum internalformat,
1282 GLsizei width, GLint border, GLsizei imageSize,
1285 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1287 GLWRAP_DEFER (glCompressedTexImage1DARB, target, level, internalformat,
1288 width, border, imageSize, data);
1290 RESTORE_METRICS_OP ();
1294 glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat,
1295 GLsizei width, GLsizei height, GLint border,
1296 GLsizei imageSize, const GLvoid *data)
1298 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1300 GLWRAP_DEFER (glCompressedTexImage2D, target, level, internalformat,
1301 width, height, border, imageSize, data);
1303 RESTORE_METRICS_OP ();
1307 glCompressedTexImage2DARB (GLenum target, GLint level, GLenum internalformat,
1308 GLsizei width, GLsizei height, GLint border,
1309 GLsizei imageSize, const GLvoid *data)
1311 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1313 GLWRAP_DEFER (glCompressedTexImage2DARB, target, level, internalformat,
1314 width, height, border, imageSize, data);
1316 RESTORE_METRICS_OP ();
1320 glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat,
1321 GLsizei width, GLsizei height, GLsizei depth,
1322 GLint border, GLsizei imageSize, const GLvoid *data)
1324 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1326 GLWRAP_DEFER (glCompressedTexImage3D, target, level, internalformat,
1327 width, height, depth, border, imageSize, data);
1329 RESTORE_METRICS_OP ();
1333 glCompressedTexImage3DARB (GLenum target, GLint level, GLenum internalformat,
1334 GLsizei width, GLsizei height, GLsizei depth,
1335 GLint border, GLsizei imageSize, const GLvoid *data)
1337 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1339 GLWRAP_DEFER (glCompressedTexImage3DARB, target, level, internalformat,
1340 width, height, depth, border, imageSize, data);
1342 RESTORE_METRICS_OP ();
1346 glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset,
1347 GLsizei width, GLenum format, GLsizei imageSize,
1350 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1352 GLWRAP_DEFER (glCompressedTexSubImage1D, target, level, xoffset,
1353 width, format, imageSize, data);
1355 RESTORE_METRICS_OP ();
1359 glCompressedTexSubImage1DARB (GLenum target, GLint level, GLint xoffset,
1360 GLsizei width, GLenum format, GLsizei imageSize,
1363 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1365 GLWRAP_DEFER (glCompressedTexSubImage1DARB, target, level, xoffset,
1366 width, format, imageSize, data);
1368 RESTORE_METRICS_OP ();
1372 glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset,
1373 GLint yoffset, GLsizei width, GLsizei height,
1374 GLenum format, GLsizei imageSize, const GLvoid *data)
1376 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1378 GLWRAP_DEFER (glCompressedTexSubImage2D, target, level, xoffset,
1379 yoffset, width, height, format, imageSize, data);
1381 RESTORE_METRICS_OP ();
1385 glCompressedTexSubImage2DARB (GLenum target, GLint level, GLint xoffset,
1386 GLint yoffset, GLsizei width, GLsizei height,
1387 GLenum format, GLsizei imageSize,
1390 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1392 GLWRAP_DEFER (glCompressedTexSubImage2DARB, target, level, xoffset,
1393 yoffset, width, height, format, imageSize, data);
1395 RESTORE_METRICS_OP ();
1399 glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset,
1400 GLint yoffset, GLint zoffset, GLsizei width,
1401 GLsizei height, GLsizei depth, GLenum format,
1402 GLsizei imageSize, const GLvoid *data)
1404 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1406 GLWRAP_DEFER (glCompressedTexSubImage3D, target, level, xoffset,
1407 yoffset, zoffset, width, height, depth, format,
1410 RESTORE_METRICS_OP ();
1414 glCompressedTexSubImage3DARB (GLenum target, GLint level, GLint xoffset,
1415 GLint yoffset, GLint zoffset, GLsizei width,
1416 GLsizei height, GLsizei depth, GLenum format,
1417 GLsizei imageSize, const GLvoid *data)
1419 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1421 GLWRAP_DEFER (glCompressedTexSubImage3DARB, target, level, xoffset,
1422 yoffset, zoffset, width, height, depth, format,
1425 RESTORE_METRICS_OP ();
1429 glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level,
1430 GLenum internalformat, GLsizei width,
1431 GLint border, GLsizei imageSize,
1434 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1436 GLWRAP_DEFER (glCompressedTextureImage1DEXT, texture, target, level,
1437 internalformat, width, border, imageSize, bits);
1439 RESTORE_METRICS_OP ();
1443 glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level,
1444 GLenum internalformat, GLsizei width,
1445 GLsizei height, GLint border,
1446 GLsizei imageSize, const GLvoid *bits)
1448 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1450 GLWRAP_DEFER (glCompressedTextureImage2DEXT, texture, target, level,
1451 internalformat, width, height, border, imageSize, bits);
1453 RESTORE_METRICS_OP ();
1457 glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level,
1458 GLenum internalformat, GLsizei width,
1459 GLsizei height, GLsizei depth, GLint border,
1460 GLsizei imageSize, const GLvoid *bits)
1462 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1464 GLWRAP_DEFER (glCompressedTextureImage3DEXT, texture, target,
1465 level, internalformat, width, height, depth,
1466 border, imageSize, bits);
1468 RESTORE_METRICS_OP ();
1472 glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level,
1473 GLint xoffset, GLsizei width, GLenum format,
1474 GLsizei imageSize, const GLvoid *bits)
1476 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1478 GLWRAP_DEFER (glCompressedTextureSubImage1DEXT, texture, target,
1479 level, xoffset, width, format, imageSize, bits);
1481 RESTORE_METRICS_OP ();
1485 glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level,
1486 GLint xoffset, GLint yoffset, GLsizei width,
1487 GLsizei height, GLenum format,
1488 GLsizei imageSize, const GLvoid *bits)
1490 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1492 GLWRAP_DEFER (glCompressedTextureSubImage2DEXT, texture, target, level,
1493 xoffset, yoffset, width, height, format, imageSize, bits);
1495 RESTORE_METRICS_OP ();
1499 glCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level,
1500 GLint xoffset, GLint yoffset, GLint zoffset,
1501 GLsizei width, GLsizei height, GLsizei depth,
1502 GLenum format, GLsizei imageSize,
1505 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1507 GLWRAP_DEFER (glCompressedTextureSubImage3DEXT, texture, target,
1508 level, xoffset, yoffset, zoffset, width, height,
1509 depth, format, imageSize, bits);
1511 RESTORE_METRICS_OP ();
1515 glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level,
1516 GLenum_or_int internalformat,
1517 GLsizei width, GLint border,
1518 GLenum format, GLenum type, const GLvoid *pixels)
1520 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1522 GLWRAP_DEFER (glMultiTexImage1DEXT, texunit, target, level,
1523 internalformat, width, border, format, type, pixels);
1525 RESTORE_METRICS_OP ();
1529 glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level,
1530 GLenum_or_int internalformat,
1531 GLsizei width, GLsizei height,
1532 GLint border, GLenum format, GLenum type,
1533 const GLvoid *pixels)
1535 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1537 GLWRAP_DEFER (glMultiTexImage2DEXT, texunit, target, level,
1538 internalformat, width, height, border, format,
1541 RESTORE_METRICS_OP ();
1545 glMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level,
1546 GLenum_or_int internalformat,
1547 GLsizei width, GLsizei height,
1548 GLsizei depth, GLint border, GLenum format,
1549 GLenum type, const GLvoid *pixels)
1551 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1553 GLWRAP_DEFER (glMultiTexImage3DEXT, texunit, target, level,
1554 internalformat, width, height, depth, border,
1555 format, type, pixels);
1557 RESTORE_METRICS_OP ();
1561 glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level,
1562 GLint xoffset, GLsizei width, GLenum format,
1563 GLenum type, const GLvoid *pixels)
1565 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1567 GLWRAP_DEFER (glMultiTexSubImage1DEXT, texunit, target, level,
1568 xoffset, width, format, type, pixels);
1570 RESTORE_METRICS_OP ();
1574 glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level,
1575 GLint xoffset, GLint yoffset, GLsizei width,
1576 GLsizei height, GLenum format, GLenum type,
1577 const GLvoid *pixels)
1579 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1581 GLWRAP_DEFER (glMultiTexSubImage2DEXT, texunit, target, level, xoffset,
1582 yoffset, width, height, format, type, pixels);
1584 RESTORE_METRICS_OP ();
1588 glMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level,
1589 GLint xoffset, GLint yoffset, GLint zoffset,
1590 GLsizei width, GLsizei height, GLsizei depth,
1591 GLenum format, GLenum type, const GLvoid *pixels)
1593 SAVE_THEN_SWITCH_METRICS_OP (METRICS_OP_TEX_IMAGE);
1595 GLWRAP_DEFER (glMultiTexSubImage3DEXT, texunit, target, level,
1596 xoffset, yoffset, zoffset, width, height, depth,
1597 format, type, pixels);
1599 RESTORE_METRICS_OP ();