4 * Copyright (c) 2000 - 2014 Samsung Electronics Co., Ltd. All rights reserved.
8 * Sanghyun Lee <sanghyunnim.lee@samsung.com>
9 * Juyoung Kim <j0.kim@samsung.com>
10 * Vitaliy Cherepanov <v.cherepanov@samsung.com>
12 * This library is free software; you can redistribute it and/or modify it under
13 * the terms of the GNU Lesser General Public License as published by the
14 * Free Software Foundation; either version 2.1 of the License, or (at your option)
17 * This library is distributed in the hope that it will be useful, but WITHOUT ANY
18 * WARRANTY; without even the implied warranty of MERCHANTABILITY or
19 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
20 * License for more details.
22 * You should have received a copy of the GNU Lesser General Public License
23 * along with this library; if not, write to the Free Software Foundation, Inc., 51
24 * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
28 * - Samsung RnD Institute Russia
31 #include "da_gles20.h"
34 #include "real_functions.h"
35 #include "common_probe_init.h"
37 static char contextValue[MAX_GL_CONTEXT_VALUE_SIZE]; /* maybe it should not be gobal static variable */
38 static __thread GLenum gl_error_external = GL_NO_ERROR;
39 static __thread int is_gl_error_external = 1;
41 static void __ui_array_to_str(char *to, GLuint *arr ,int count, size_t bufsize)
45 for (i = 0; i < count; i++) {
46 if (bufsize < sizeof(GLuint) * 4) {
47 PRINTERR("too small buffer.");
51 len = snprintf(to, bufsize,"%u, ", *arr++);
64 static void __get_context_buf_data(GLenum target, char *buf, int buf_size)
66 GLint n_buffer_size, n_buffer_usage_size;
72 real_glGetBufferParameteriv(target, GL_BUFFER_SIZE,
74 real_glGetBufferParameteriv(target, GL_BUFFER_USAGE,
75 &n_buffer_usage_size);
77 print_size = snprintf(buf, buf_size, "%u,%u,%u",
78 target, n_buffer_size, n_buffer_usage_size);
80 if (print_size >= buf_size) {
81 /* data was truncated. so data is invalid */
86 // ==================================================================
88 // ==================================================================
90 DECLARE_NOARGS(GLenum, glGetError)
92 TYPEDEF(GLenum (*methodType)(void));
94 GLenum ret = CALL_ORIG(glGetError,);
96 if (gl_error_external == GL_NO_ERROR)
97 gl_error_external = ret;
99 if (is_gl_error_external && blockresult) {
101 ret = gl_error_external;
102 gl_error_external = GL_NO_ERROR;
104 AFTER_NO_PARAM('d', ret, APITYPE_CONTEXT, "");
110 DECLARE(void, glActiveTexture, GLenum texture)
112 TYPEDEF(void (*methodType)(GLenum));
113 BEFORE(glActiveTexture);
114 CALL_ORIG(glActiveTexture, texture);
116 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "x",
117 (uint64_t)(texture));
120 DECLARE(void, glAttachShader, GLuint program, GLuint shader)
122 TYPEDEF(void (*methodType)(GLuint, GLuint));
123 BEFORE(glAttachShader);
124 CALL_ORIG(glAttachShader, program, shader);
126 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dd", program, shader);
129 // ==================================================================
131 // ==================================================================
133 DECLARE(void, glBindAttribLocation, GLuint program, GLuint index, const char *name)
135 TYPEDEF(void (*methodType)(GLuint, GLuint, const char *));
136 BEFORE(glBindAttribLocation);
137 CALL_ORIG(glBindAttribLocation, program, index, name);
139 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dds",
140 program, index, name);
143 DECLARE(void, glBindBuffer, GLenum target, GLuint buffer)
145 char context_value[MAX_GL_CONTEXT_VALUE_SIZE] = {0,};
147 TYPEDEF(void (*methodType)(GLenum, GLuint));
148 BEFORE(glBindBuffer);
149 CALL_ORIG(glBindBuffer, target, buffer);
150 if (blockresult && buffer)
151 __get_context_buf_data(target, &context_value[0],
152 sizeof(context_value));
155 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, context_value, "xd",
156 (uint64_t)(target), buffer);
159 DECLARE(void, glBindFramebuffer, GLenum target, GLuint framebuffer)
161 TYPEDEF(void (*methodType)(GLenum, GLuint));
162 BEFORE(glBindFramebuffer);
163 CALL_ORIG(glBindFramebuffer, target, framebuffer);
165 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xd",
166 (uint64_t)(target), framebuffer);
169 DECLARE(void, glBindRenderbuffer, GLenum target, GLuint renderbuffer)
171 TYPEDEF(void (*methodType)(GLenum, GLuint));
172 BEFORE(glBindRenderbuffer);
173 CALL_ORIG(glBindRenderbuffer, target, renderbuffer);
175 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xd",
176 (uint64_t)(target), renderbuffer);
179 DECLARE(void, glBindTexture, GLenum target, GLuint texture)
181 TYPEDEF(void (*methodType)(GLenum, GLuint));
182 BEFORE(glBindTexture);
183 CALL_ORIG(glBindTexture, target, texture);
185 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xd",
186 (uint64_t)(target), texture);
189 DECLARE(void, glBlendColor, GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
191 TYPEDEF(void (*methodType)(GLclampf, GLclampf, GLclampf, GLclampf));
192 BEFORE(glBlendColor);
193 CALL_ORIG(glBlendColor, red, green, blue, alpha);
195 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "ffff",
196 red, green, blue, alpha);
199 DECLARE(void, glBlendEquation, GLenum mode)
201 TYPEDEF(void (*methodType)(GLenum));
202 BEFORE(glBlendEquation);
203 CALL_ORIG(glBlendEquation, mode);
205 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "x",
209 DECLARE(void, glBlendEquationSeparate, GLenum modeRGB, GLenum modeAlpha)
211 TYPEDEF(void (*methodType)(GLenum, GLenum));
212 BEFORE(glBlendEquationSeparate);
213 CALL_ORIG(glBlendEquationSeparate, modeRGB, modeAlpha);
215 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xx",
216 (uint64_t)(modeRGB), (uint64_t)(modeAlpha));
219 DECLARE(void, glBlendFunc, GLenum sfactor, GLenum dfactor)
221 TYPEDEF(void (*methodType)(GLenum, GLenum));
223 CALL_ORIG(glBlendFunc, sfactor, dfactor);
225 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xx",
226 (uint64_t)(sfactor), (uint64_t)(dfactor));
229 DECLARE(void, glBlendFuncSeparate, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha,
232 TYPEDEF(void (*methodType)(GLenum, GLenum, GLenum, GLenum));
233 BEFORE(glBlendFuncSeparate);
234 CALL_ORIG(glBlendFuncSeparate, srcRGB, dstRGB, srcAlpha, dstAlpha);
236 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xxxx",
237 (uint64_t)(srcRGB), (uint64_t)(dstRGB),
238 (uint64_t)(srcAlpha), (uint64_t)(dstAlpha));
241 DECLARE(void, glBufferData, GLenum target, GLsizeiptr size, const GLvoid * data,
244 TYPEDEF(void (*methodType)(GLenum, GLsizeiptr, const GLvoid *, GLenum));
245 BEFORE(glBufferData);
246 CALL_ORIG(glBufferData, target, size, data, usage);
248 char context_value[MAX_GL_CONTEXT_VALUE_SIZE];
250 __get_context_buf_data(target, &context_value[0],
251 sizeof(context_value));
253 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, context_value, "xxpx",
254 (uint64_t)(target), (uint64_t)(size),
255 voidp_to_uint64(data), (uint64_t)(usage));
258 DECLARE(void, glBufferSubData, GLenum target, GLintptr offset, GLsizeiptr size,
261 TYPEDEF(void (*methodType)(GLenum, GLintptr, GLsizeiptr,
263 BEFORE(glBufferSubData);
265 char context_value[MAX_GL_CONTEXT_VALUE_SIZE];
267 __get_context_buf_data(target, &context_value[0],
268 sizeof(context_value));
269 CALL_ORIG(glBufferSubData, target, offset, size, data);
271 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, context_value, "xxxp",
272 (uint64_t)(target), (uint64_t)(offset),
273 (uint64_t)(size), voidp_to_uint64(data));
276 // ==================================================================
278 // ==================================================================
280 DECLARE(GLenum, glCheckFramebufferStatus, GLenum target)
282 TYPEDEF(GLenum (*methodType)(GLenum));
283 BEFORE(glCheckFramebufferStatus);
284 GLenum ret = CALL_ORIG(glCheckFramebufferStatus, target);
286 AFTER('d', ret, APITYPE_CONTEXT, "", "x",
292 DECLARE(void, glClear, GLbitfield mask)
294 TYPEDEF(void (*methodType)(GLbitfield));
296 CALL_ORIG(glClear, mask);
298 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "x",
302 DECLARE(void, glClearColor, GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
304 TYPEDEF(void (*methodType)(GLclampf, GLclampf, GLclampf, GLclampf));
305 BEFORE(glClearColor);
306 CALL_ORIG(glClearColor, red, green, blue, alpha);
308 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "ffff",
309 red, green, blue, alpha);
312 DECLARE(void, glClearDepthf, GLclampf depth)
314 TYPEDEF(void (*methodType)(GLclampf));
315 BEFORE(glClearDepthf);
316 CALL_ORIG(glClearDepthf, depth);
318 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "f", depth);
321 DECLARE(void, glClearStencil, GLint s)
323 TYPEDEF(void (*methodType)(GLint));
324 BEFORE(glClearStencil);
325 CALL_ORIG(glClearStencil, s);
327 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "d", s);
330 DECLARE(void, glColorMask, GLboolean red, GLboolean green, GLboolean blue,
333 TYPEDEF(void (*methodType)(GLboolean, GLboolean, GLboolean, GLboolean));
335 CALL_ORIG(glColorMask, red, green, blue, alpha);
337 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dddd",
338 red, green, blue, alpha);
341 DECLARE(void, glCompileShader, GLuint shader)
343 TYPEDEF(void (*methodType)(GLuint));
344 BEFORE(glCompileShader);
345 CALL_ORIG(glCompileShader, shader);
347 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "x",
351 DECLARE(void, glCompressedTexImage2D, GLenum target, GLint level, GLenum internalformat,
352 GLsizei width, GLsizei height, GLint border,
353 GLsizei imageSize, const GLvoid * data)
355 TYPEDEF(void (*methodType)(GLenum, GLint, GLenum, GLsizei, GLsizei,
356 GLint, GLsizei, const GLvoid *));
357 BEFORE(glCompressedTexImage2D);
358 CALL_ORIG(glCompressedTexImage2D, target, level, internalformat, width,
359 height, border, imageSize, data);
361 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xdxddddp",
362 (uint64_t)(target), level,
363 (uint64_t)(internalformat), width, height, border, imageSize,
364 voidp_to_uint64(data));
367 DECLARE(void, glCompressedTexSubImage2D, GLenum target, GLint level, GLint xoffset,
368 GLint yoffset, GLsizei width, GLsizei height,
369 GLenum format, GLsizei imageSize,
372 TYPEDEF(void (*methodType)(GLenum, GLint, GLint, GLint, GLsizei,
373 GLsizei, GLenum, GLsizei, const GLvoid *));
374 BEFORE(glCompressedTexSubImage2D);
375 CALL_ORIG(glCompressedTexSubImage2D, target, level, xoffset, yoffset,
376 width, height, format, imageSize, data);
378 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xdddddxdp",
379 (uint64_t)(target), level, xoffset, yoffset, width, height,
380 (uint64_t)(format), imageSize, voidp_to_uint64(data));
383 DECLARE(void, glCopyTexImage2D, GLenum target, GLint level, GLenum internalformat,
384 GLint x, GLint y, GLsizei width, GLsizei height,
387 TYPEDEF(void (*methodType)(GLenum, GLint, GLenum, GLint, GLint,
388 GLsizei, GLsizei, GLint));
389 BEFORE(glCopyTexImage2D);
390 CALL_ORIG(glCopyTexImage2D, target, level, internalformat, x, y, width,
393 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xdxddddd",
394 (uint64_t)(target), level,
395 (uint64_t)(internalformat), x, y, width, height, border);
398 DECLARE(void, glCopyTexSubImage2D, GLenum target, GLint level, GLint xoffset,
399 GLint yoffset, GLint x, GLint y, GLsizei width,
402 TYPEDEF(void (*methodType)(GLenum, GLint, GLint, GLint, GLint, GLint,
404 BEFORE(glCopyTexSubImage2D);
405 CALL_ORIG(glCopyTexSubImage2D, target, level, xoffset, yoffset, x, y,
408 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xddddddd",
409 (uint64_t)(target), level, xoffset, yoffset, x, y, width,
413 DECLARE_NOARGS(GLuint, glCreateProgram)
415 TYPEDEF(GLuint (*methodType)(void));
416 BEFORE(glCreateProgram);
417 GLuint ret = CALL_ORIG(glCreateProgram,);
419 AFTER_NO_PARAM('d', ret, APITYPE_CONTEXT, "");
424 DECLARE(GLuint, glCreateShader, GLenum shaderType)
426 TYPEDEF(GLuint (*methodType)(GLenum));
427 BEFORE(glCreateShader);
428 GLuint ret = CALL_ORIG(glCreateShader, shaderType);
430 AFTER('d', ret, APITYPE_CONTEXT, "", "x", (uint64_t)(shaderType));
435 DECLARE(void, glCullFace, GLenum mode)
437 TYPEDEF(void (*methodType)(GLenum));
439 CALL_ORIG(glCullFace, mode);
441 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "x",
445 // ==================================================================
447 // ==================================================================
449 DECLARE(void, glDeleteBuffers, GLsizei n, const GLuint * buffers)
451 TYPEDEF(void (*methodType)(GLsizei, const GLuint *));
452 BEFORE(glDeleteBuffers);
454 char context_value[MAX_GL_CONTEXT_VALUE_SIZE];
455 CALL_ORIG(glDeleteBuffers, n, buffers);
457 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, context_value, "dp",
458 n, voidp_to_uint64(buffers));
461 DECLARE(void, glDeleteFramebuffers, GLsizei n, const GLuint * framebuffers)
463 TYPEDEF(void (*methodType)(GLsizei, const GLuint *));
464 BEFORE(glDeleteFramebuffers);
465 CALL_ORIG(glDeleteFramebuffers, n, framebuffers);
467 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dp",
468 n, voidp_to_uint64(framebuffers));
471 DECLARE(void, glDeleteProgram, GLuint program)
473 TYPEDEF(void (*methodType)(GLuint));
474 BEFORE(glDeleteProgram);
475 CALL_ORIG(glDeleteProgram, program);
477 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "d", program);
480 DECLARE(void, glDeleteRenderbuffers, GLsizei n, const GLuint * renderbuffers)
482 TYPEDEF(void (*methodType)(GLsizei, const GLuint *));
483 BEFORE(glDeleteRenderbuffers);
484 CALL_ORIG(glDeleteRenderbuffers, n, renderbuffers);
486 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dp",
487 n, voidp_to_uint64(renderbuffers));
490 DECLARE(void, glDeleteShader, GLuint shader)
492 TYPEDEF(void (*methodType)(GLuint));
493 BEFORE(glDeleteShader);
494 CALL_ORIG(glDeleteShader, shader);
496 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "d", shader);
499 DECLARE(void, glDeleteTextures, GLsizei n, const GLuint *textures)
501 TYPEDEF(void (*methodType)(GLsizei, const GLuint *));
504 BEFORE(glDeleteTextures);
505 CALL_ORIG(glDeleteTextures, n, textures);
507 if (error == GL_NO_ERROR)
508 __ui_array_to_str(buf, (GLuint *)textures, n, sizeof(buf));
510 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, buf, "dp",
511 n, voidp_to_uint64(textures));
514 DECLARE(void, glDepthFunc, GLenum func)
516 TYPEDEF(void (*methodType)(GLenum));
518 CALL_ORIG(glDepthFunc, func);
520 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "x",
524 DECLARE(void, glDepthMask, GLboolean flag)
526 TYPEDEF(void (*methodType)(GLboolean));
528 CALL_ORIG(glDepthMask, flag);
530 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "x",
534 DECLARE(void, glDepthRangef, GLclampf nearVal, GLclampf farVal)
536 TYPEDEF(void (*methodType)(GLclampf, GLclampf));
537 BEFORE(glDepthRangef);
538 CALL_ORIG(glDepthRangef, nearVal, farVal);
540 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "ff",
544 DECLARE(void, glDetachShader, GLuint program, GLuint shader)
546 TYPEDEF(void (*methodType)(GLuint, GLuint));
547 BEFORE(glDetachShader);
548 CALL_ORIG(glDetachShader, program, shader);
550 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dd",
554 DECLARE(void, glDisable, GLenum cap)
556 TYPEDEF(void (*methodType)(GLenum));
558 CALL_ORIG(glDisable, cap);
560 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "x", (uint64_t)(cap));
563 DECLARE(void, glDisableVertexAttribArray, GLuint index)
565 TYPEDEF(void (*methodType)(GLuint));
566 BEFORE(glDisableVertexAttribArray);
567 CALL_ORIG(glDisableVertexAttribArray, index);
569 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "d", index);
572 DECLARE(void, glDrawArrays, GLenum mode, GLint first, GLsizei count)
574 TYPEDEF(void (*methodType)(GLenum, GLint, GLsizei));
575 BEFORE(glDrawArrays);
576 CALL_ORIG(glDrawArrays, mode, first, count);
578 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xdd",
579 (uint64_t)(mode), first, count);
582 DECLARE(void, glDrawElements, GLenum mode, GLsizei count, GLenum type,
583 const GLvoid *indices)
585 TYPEDEF(void (*methodType)(GLenum, GLsizei, GLenum, const GLvoid *));
586 BEFORE(glDrawElements);
587 CALL_ORIG(glDrawElements, mode, count, type, indices);
589 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xdxp",
590 (uint64_t)(mode), count, (uint64_t)(type), indices);
593 // ==================================================================
595 // ==================================================================
597 DECLARE(void, glEnable, GLenum cap)
599 TYPEDEF(void (*methodType)(GLenum));
601 CALL_ORIG(glEnable, cap);
603 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "x", (uint64_t)(cap));
606 DECLARE(void, glEnableVertexAttribArray, GLuint index)
608 TYPEDEF(void (*methodType)(GLuint));
609 BEFORE(glEnableVertexAttribArray);
610 CALL_ORIG(glEnableVertexAttribArray, index);
612 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "d", index);
615 // ==================================================================
617 // ==================================================================
619 DECLARE_NOARGS(void, glFinish)
621 TYPEDEF(void (*methodType)(void));
623 CALL_ORIG(glFinish,);
625 AFTER_NO_PARAM('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "");
628 DECLARE_NOARGS(void, glFlush)
630 TYPEDEF(void (*methodType)(void));
634 AFTER_NO_PARAM('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "");
637 DECLARE(void, glFramebufferRenderbuffer, GLenum target, GLenum attachment,
638 GLenum renderbuffertarget, GLuint renderbuffer)
640 TYPEDEF(void (*methodType)(GLenum, GLenum, GLenum, GLuint));
641 BEFORE(glFramebufferRenderbuffer);
642 CALL_ORIG(glFramebufferRenderbuffer, target, attachment,
643 renderbuffertarget, renderbuffer);
645 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xxxd",
646 (uint64_t)(target), (uint64_t)(attachment),
647 (uint64_t)(renderbuffertarget), renderbuffer);
650 DECLARE(void, glFramebufferTexture2D, GLenum target, GLenum attachment, GLenum textarget,
651 GLuint texture, GLint level)
653 TYPEDEF(void (*methodType)(GLenum, GLenum, GLenum, GLuint, GLint));
654 BEFORE(glFramebufferTexture2D);
655 CALL_ORIG(glFramebufferTexture2D, target, attachment, textarget,
658 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xxxdd",
659 (uint64_t)(target), (uint64_t)(attachment),
660 (uint64_t)(textarget), texture, level);
663 DECLARE(void, glFrontFace, GLenum mode)
665 TYPEDEF(void (*methodType)(GLenum));
667 CALL_ORIG(glFrontFace, mode);
669 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "x",
673 // ==================================================================
675 // ==================================================================
677 DECLARE(void, glGenBuffers, GLsizei n, GLuint * buffers)
679 TYPEDEF(void (*methodType)(GLsizei, GLuint *));
682 BEFORE(glGenBuffers);
683 CALL_ORIG(glGenBuffers, n, buffers);
685 if (error == GL_NO_ERROR)
686 __ui_array_to_str(buf, buffers, n, sizeof(buf));
688 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, buf, "dp",
689 n, voidp_to_uint64(buffers));
692 DECLARE(void, glGenFramebuffers, GLsizei n, GLuint * framebuffers)
694 TYPEDEF(void (*methodType)(GLsizei, GLuint *));
695 BEFORE(glGenFramebuffers);
696 CALL_ORIG(glGenFramebuffers, n, framebuffers);
698 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dp",
699 n, voidp_to_uint64(framebuffers));
702 DECLARE(void, glGenRenderbuffers, GLsizei n, GLuint * renderbuffers)
704 TYPEDEF(void (*methodType)(GLsizei, GLuint *));
705 BEFORE(glGenRenderbuffers);
706 CALL_ORIG(glGenRenderbuffers, n, renderbuffers);
708 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dp",
709 n, voidp_to_uint64(renderbuffers));
712 DECLARE(void, glGenTextures, GLsizei n, GLuint * textures)
714 TYPEDEF(void (*methodType)(GLsizei, GLuint *));
717 BEFORE(glGenTextures);
718 CALL_ORIG(glGenTextures, n, textures);
720 if (error == GL_NO_ERROR)
721 __ui_array_to_str(buf, textures, n, sizeof(buf));
723 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, buf, "dp",
724 n, voidp_to_uint64(textures));
727 DECLARE(void, glGenerateMipmap, GLenum target)
729 TYPEDEF(void (*methodType)(GLenum));
730 BEFORE(glGenerateMipmap);
731 CALL_ORIG(glGenerateMipmap, target);
733 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "x",
738 DECLARE(void, glGetBooleanv, GLenum pname, GLboolean * params)
740 TYPEDEF(void (*methodType)(GLenum, GLboolean *));
741 BEFORE(glGetBooleanv);
742 CALL_ORIG(glGetBooleanv, pname, params);
744 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "x",
749 DECLARE(void, glGetFloatv, GLenum pname, GLfloat * params)
751 TYPEDEF(void (*methodType)(GLenum, GLfloat *));
753 CALL_ORIG(glGetFloatv, pname, params);
755 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "x",
760 DECLARE(void, glGetIntegerv, GLenum pname, GLint * params)
762 TYPEDEF(void (*methodType)(GLenum, GLint *));
763 BEFORE(glGetIntegerv);
764 CALL_ORIG(glGetIntegerv, pname, params);
766 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "x",
771 DECLARE(void, glGetActiveAttrib, GLuint program, GLuint index, GLsizei bufSize,
772 GLsizei *length, GLint *size, GLenum *type, char *name)
774 TYPEDEF(void (*methodType)(GLuint, GLuint, GLsizei, GLsizei *, GLint *,
776 BEFORE(glGetActiveAttrib);
777 CALL_ORIG(glGetActiveAttrib, program, index, bufSize, length, size,
780 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "ddd",
781 program, index, bufSize);
785 DECLARE(void, glGetActiveUniform, GLuint program, GLuint index, GLsizei bufSize,
786 GLsizei *length, GLint *size, GLenum *type, char *name)
788 TYPEDEF(void (*methodType)(GLuint, GLuint, GLsizei, GLsizei *, GLint *,
790 BEFORE(glGetActiveUniform);
791 CALL_ORIG(glGetActiveUniform, program, index, bufSize, length, size,
794 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "ddd",
795 program, index, bufSize);
799 DECLARE(void, glGetAttachedShaders, GLuint program, GLsizei maxCount, GLsizei *count,
802 TYPEDEF(void (*methodType)(GLuint, GLsizei, GLsizei *, GLuint *));
803 BEFORE(glGetAttachedShaders);
804 CALL_ORIG(glGetAttachedShaders, program, maxCount, count, shaders);
806 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dd",
811 DECLARE(int ,glGetAttribLocation, GLuint program, const char *name)
813 TYPEDEF(int (*methodType)(GLuint, const char*));
814 BEFORE(glGetAttribLocation);
815 int ret = CALL_ORIG(glGetAttribLocation, program, name);
817 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xs",
818 (uint64_t)(program), name);
823 DECLARE(void, glGetBufferParameteriv, GLenum target, GLenum value, GLint * data)
825 TYPEDEF(void (*methodType)(GLenum, GLenum, GLint *));
826 BEFORE(glGetBufferParameteriv);
827 CALL_ORIG(glGetBufferParameteriv, target, value, data);
829 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xx",
830 (uint64_t)(target), (uint64_t)(value));
834 DECLARE(void, glGetFramebufferAttachmentParameteriv, GLenum target, GLenum attachment,
835 GLenum pname, GLint * params)
837 TYPEDEF(void (*methodType)(GLenum, GLenum, GLenum, GLint *));
838 BEFORE(glGetFramebufferAttachmentParameteriv);
839 CALL_ORIG(glGetFramebufferAttachmentParameteriv, target, attachment,
842 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xxx",
843 (uint64_t)(target), (uint64_t)(attachment), (uint64_t)(pname));
847 DECLARE(void, glGetProgramInfoLog, GLuint program, GLsizei maxLength, GLsizei *length,
850 TYPEDEF(void (*methodType)(GLuint, GLsizei, GLsizei *, char *));
851 BEFORE(glGetProgramInfoLog);
852 CALL_ORIG(glGetProgramInfoLog, program, maxLength, length, infoLog);
854 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dd",
859 DECLARE(void, glGetProgramiv, GLuint program, GLenum pname, GLint *params)
861 TYPEDEF(void (*methodType)(GLuint, GLenum, GLint *));
862 BEFORE(glGetProgramiv);
863 CALL_ORIG(glGetProgramiv, program, pname, params);
865 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dx",
866 program, (uint64_t)(pname));
870 DECLARE(void, glGetRenderbufferParameteriv, GLenum target, GLenum pname, GLint *params)
872 TYPEDEF(void (*methodType)(GLenum, GLenum, GLint *));
873 BEFORE(glGetRenderbufferParameteriv);
874 CALL_ORIG(glGetRenderbufferParameteriv, target, pname, params);
876 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xx",
877 (uint64_t)(target), (uint64_t)(pname));
881 DECLARE(void, glGetShaderInfoLog, GLuint shader, GLsizei maxLength, GLsizei *length,
884 TYPEDEF(void (*methodType)(GLuint, GLsizei, GLsizei *, char *));
885 BEFORE(glGetShaderInfoLog);
886 CALL_ORIG(glGetShaderInfoLog, shader, maxLength, length, infoLog);
888 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dd",
893 DECLARE(void, glGetShaderPrecisionFormat, GLenum shaderType, GLenum precisionType,
894 GLint *range, GLint *precision)
896 TYPEDEF(void (*methodType)(GLenum, GLenum, GLint *, GLint *));
897 BEFORE(glGetShaderPrecisionFormat);
898 CALL_ORIG(glGetShaderPrecisionFormat, shaderType, precisionType, range,
901 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xx",
902 (uint64_t)(shaderType), (uint64_t)(precisionType));
906 DECLARE(void, glGetShaderSource, GLuint shader, GLsizei bufSize, GLsizei *length,
909 TYPEDEF(void (*methodType)(GLuint, GLsizei, GLsizei *, char *));
910 BEFORE(glGetShaderSource);
911 CALL_ORIG(glGetShaderSource, shader, bufSize, length, source);
913 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dd",
918 DECLARE(void, glGetShaderiv, GLuint shader, GLenum pname, GLint *params)
920 TYPEDEF(void (*methodType)(GLuint, GLenum, GLint *));
921 BEFORE(glGetShaderiv);
922 CALL_ORIG(glGetShaderiv, shader, pname, params);
924 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dx",
925 shader, (uint64_t)(pname));
928 DECLARE(const GLubyte *, glGetString, GLenum name)
930 TYPEDEF(const GLubyte *(*methodType)(GLenum));
932 const GLubyte *ret = CALL_ORIG(glGetString, name);
934 AFTER('p', ret, APITYPE_CONTEXT, "", "x", (uint64_t)(name));
939 DECLARE(void, glGetTexParameterfv, GLenum target, GLenum pname, GLfloat * params)
941 TYPEDEF(void (*methodType)(GLenum, GLenum, GLfloat *));
942 BEFORE(glGetTexParameterfv);
943 CALL_ORIG(glGetTexParameterfv, target, pname, params);
945 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xx",
946 (uint64_t)(target), (uint64_t)(pname));
950 DECLARE(void, glGetTexParameteriv, GLenum target, GLenum pname, GLint * params)
952 TYPEDEF(void (*methodType)(GLenum, GLenum, GLint *));
953 BEFORE(glGetTexParameteriv);
954 CALL_ORIG(glGetTexParameteriv, target, pname, params);
956 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xx",
957 (uint64_t)(target), (uint64_t)(pname));
961 DECLARE(void, glGetUniformfv, GLuint program, GLint location, GLfloat *params)
963 TYPEDEF(void (*methodType)(GLuint, GLuint, GLfloat *));
964 BEFORE(glGetUniformfv);
965 CALL_ORIG(glGetUniformfv, program, location, params);
967 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dd",
972 DECLARE(void, glGetUniformiv, GLuint program, GLint location, GLint *params)
974 TYPEDEF(void (*methodType)(GLuint, GLuint, GLint *));
975 BEFORE(glGetUniformiv);
976 CALL_ORIG(glGetUniformiv, program, location, params);
978 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dd",
983 DECLARE(GLint, glGetUniformLocation, GLuint program, const char *name)
985 TYPEDEF(GLint (*methodType)(GLuint, const char *));
986 BEFORE(glGetUniformLocation);
987 GLint ret = CALL_ORIG(glGetUniformLocation, program, name);
989 AFTER('d', ret, APITYPE_CONTEXT, "", "d", program);
995 DECLARE(void, glGetVertexAttribfv, GLuint index, GLenum pname, GLfloat *params)
997 TYPEDEF(void (*methodType)(GLuint, GLenum, GLfloat *));
998 BEFORE(glGetVertexAttribfv);
999 CALL_ORIG(glGetVertexAttribfv, index, pname, params);
1001 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dx",
1002 index, (uint64_t)(pname));
1006 DECLARE(void, glGetVertexAttribiv, GLuint index, GLenum pname, GLint *params)
1008 TYPEDEF(void (*methodType)(GLuint, GLenum, GLint *));
1009 BEFORE(glGetVertexAttribiv);
1010 CALL_ORIG(glGetVertexAttribiv, index, pname, params);
1012 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dx",
1013 index, (uint64_t)(pname));
1017 DECLARE(void, glGetVertexAttribPointerv, GLuint index, GLenum pname, GLvoid **pointer)
1019 TYPEDEF(void (*methodType)(GLuint, GLenum, GLvoid **));
1020 BEFORE(glGetVertexAttribPointerv);
1021 CALL_ORIG(glGetVertexAttribPointerv, index, pname, pointer);
1023 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dx",
1024 index, (uint64_t)(pname));
1027 // ==================================================================
1029 // ==================================================================
1031 DECLARE(void, glHint, GLenum target, GLenum mode)
1033 TYPEDEF(void (*methodType)(GLenum, GLenum));
1035 CALL_ORIG(glHint, target, mode);
1037 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xx",
1038 (uint64_t)(target), (uint64_t)(mode));
1041 // ==================================================================
1043 // ==================================================================
1045 DECLARE(GLboolean, glIsBuffer, GLuint buffer)
1047 TYPEDEF(GLboolean (*methodType)(GLuint));
1049 GLboolean ret = CALL_ORIG(glIsBuffer, buffer);
1051 AFTER('c', ret, APITYPE_CONTEXT, "", "d", buffer);
1056 DECLARE(GLboolean, glIsEnabled, GLenum cap)
1058 TYPEDEF(GLboolean (*methodType)(GLenum));
1059 BEFORE(glIsEnabled);
1060 GLboolean ret = CALL_ORIG(glIsEnabled, cap);
1062 AFTER('c', ret, APITYPE_CONTEXT, "", "x", (uint64_t)(cap));
1067 DECLARE(GLboolean, glIsFramebuffer, GLuint framebuffer)
1069 TYPEDEF(GLboolean (*methodType)(GLuint));
1070 BEFORE(glIsFramebuffer);
1071 GLboolean ret = CALL_ORIG(glIsFramebuffer, framebuffer);
1073 AFTER('c', ret, APITYPE_CONTEXT, "", "d", framebuffer);
1078 DECLARE(GLboolean, glIsProgram, GLuint program)
1080 TYPEDEF(GLboolean (*methodType)(GLuint));
1081 BEFORE(glIsProgram);
1082 GLboolean ret = CALL_ORIG(glIsProgram, program);
1084 AFTER('c', ret, APITYPE_CONTEXT, "", "d", program);
1089 DECLARE(GLboolean, glIsRenderbuffer, GLuint renderbuffer)
1091 TYPEDEF(GLboolean (*methodType)(GLuint));
1092 BEFORE(glIsRenderbuffer);
1093 GLboolean ret = CALL_ORIG(glIsRenderbuffer, renderbuffer);
1095 AFTER('c', ret, APITYPE_CONTEXT, "", "d", renderbuffer);
1100 DECLARE(GLboolean, glIsShader, GLuint shader)
1102 TYPEDEF(GLboolean (*methodType)(GLuint));
1104 GLboolean ret = CALL_ORIG(glIsShader, shader);
1106 AFTER('c', ret, APITYPE_CONTEXT, "", "d", shader);
1111 DECLARE(GLboolean, glIsTexture, GLuint texture)
1113 TYPEDEF(GLboolean (*methodType)(GLuint));
1114 BEFORE(glIsTexture);
1115 GLboolean ret = CALL_ORIG(glIsTexture, texture);
1117 AFTER('c', ret, APITYPE_CONTEXT, "", "d", texture);
1122 // ==================================================================
1124 // ==================================================================
1126 DECLARE(void, glLineWidth, GLfloat width)
1128 TYPEDEF(void (*methodType)(GLfloat));
1129 BEFORE(glLineWidth);
1130 CALL_ORIG(glLineWidth, width);
1132 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "f", width);
1135 /* TODO refactor snprintf check*/
1136 DECLARE(void, glLinkProgram, GLuint program)
1138 TYPEDEF(void (*methodType)(GLuint));
1139 BEFORE(glLinkProgram);
1140 CALL_ORIG(glLinkProgram, program);
1143 if (error == GL_NO_ERROR) {
1153 avail = sizeof(buf);
1155 real_glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES, activeNum);
1156 real_glGetProgramiv(program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH,
1159 char name1[maxLength[0]];
1160 len = snprintf(to, avail, "%d", activeNum[0]);
1163 for (i = 0; i < activeNum[0]; i++) {
1164 real_glGetActiveAttrib(program, i, maxLength[0], length,
1166 len = snprintf(to, avail, ",%d,%s,%d,%x", i, name1, size[0],
1169 if (avail <= (unsigned int)len) {
1170 PRINTERR("fatal. too small buf");
1178 real_glGetProgramiv(program, GL_ACTIVE_UNIFORMS, activeNum);
1179 real_glGetProgramiv(program, GL_ACTIVE_UNIFORM_MAX_LENGTH,
1182 char name2[maxLength[0]];
1183 len = snprintf(to, avail, ",%d", activeNum[0]);
1185 if (avail <= (unsigned int)len) {
1186 PRINTERR("fatal. too small buf");
1192 for (i = 0; i < activeNum[0]; i++) {
1193 real_glGetActiveUniform(program, i, maxLength[0],
1194 length, size, type, name2);
1195 len = snprintf(to, avail, ",%d,%s,%d,%x", i, name2,
1198 if (avail <= (unsigned int)len) {
1199 PRINTERR("fatal. too small buf");
1208 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, buf, "d",
1212 // ==================================================================
1214 // ==================================================================
1216 DECLARE(void, glPixelStorei, GLenum pname, GLint param)
1218 TYPEDEF(void (*methodType)(GLenum, GLint));
1219 BEFORE(glPixelStorei);
1220 CALL_ORIG(glPixelStorei, pname, param);
1222 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xd",
1223 (uint64_t)(pname), param);
1226 DECLARE(void, glPolygonOffset, GLfloat factor, GLfloat units)
1228 TYPEDEF(void (*methodType)(GLfloat, GLfloat));
1229 BEFORE(glPolygonOffset);
1230 CALL_ORIG(glPolygonOffset, factor, units);
1232 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "ff",
1236 // ==================================================================
1238 // ==================================================================
1241 DECLARE(void, glReadPixels, GLint x, GLint y, GLsizei width, GLsizei height,
1242 GLenum format, GLenum type, GLvoid * data)
1244 TYPEDEF(void (*methodType)(GLint, GLint, GLsizei, GLsizei, GLenum,
1246 BEFORE(glReadPixels);
1247 CALL_ORIG(glReadPixels, x, y, width, height, format, type, data);
1249 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "",
1250 "ddddxx", x, y, width, height,
1251 (uint64_t)(format), (uint64_t)(type));
1254 DECLARE_NOARGS(void, glReleaseShaderCompiler)
1256 TYPEDEF(void (*methodType)(void));
1257 BEFORE(glReleaseShaderCompiler);
1258 CALL_ORIG(glReleaseShaderCompiler,);
1260 AFTER_NO_PARAM('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "");
1262 DECLARE(void, glRenderbufferStorage, GLenum target, GLenum internalformat, GLsizei width,
1265 TYPEDEF(void (*methodType)(GLenum, GLenum, GLsizei, GLsizei));
1266 BEFORE(glRenderbufferStorage);
1267 CALL_ORIG(glRenderbufferStorage, target, internalformat, width, height);
1269 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xxdd",
1270 (uint64_t)(target), (uint64_t)(internalformat), width, height);
1273 // ==================================================================
1275 // ==================================================================
1277 DECLARE(void, glSampleCoverage, GLclampf value, GLboolean invert)
1279 TYPEDEF(void (*methodType)(GLclampf, GLboolean));
1280 BEFORE(glSampleCoverage);
1281 CALL_ORIG(glSampleCoverage, value, invert);
1283 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "fx",
1284 value, (uint64_t)(invert));
1287 DECLARE(void, glScissor, GLint x, GLint y, GLsizei width, GLsizei height)
1289 TYPEDEF(void (*methodType)(GLint, GLint, GLsizei, GLsizei));
1291 CALL_ORIG(glScissor, x, y, width, height);
1293 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dddd",
1294 x, y, width, height);
1298 DECLARE(void, glShaderBinary, GLsizei n, const GLuint *shaders, GLenum binaryformat,
1299 const void *binary, GLsizei length)
1301 TYPEDEF(void (*methodType)(GLsizei, const GLuint *, GLenum,
1302 const void *, GLsizei));
1303 BEFORE(glShaderBinary);
1304 CALL_ORIG(glShaderBinary, n, shaders, binaryformat, binary, length);
1306 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "",
1307 "dpxpd", n, voidp_to_uint64(shaders),
1308 (uint64_t)(binaryformat), voidp_to_uint64(binary), length);
1312 DECLARE(void, glShaderSource, GLuint shader, GLsizei count, const char **string,
1313 const GLint *length)
1315 TYPEDEF(void (*methodType)(GLuint, GLsizei, const char **,
1317 BEFORE(glShaderSource);
1318 CALL_ORIG(glShaderSource, shader, count, string, length);
1320 if (error == GL_NO_ERROR) {
1322 real_glGetShaderiv(shader, GL_SHADER_SOURCE_LENGTH, length);
1323 char buf[length[0]];
1324 real_glGetShaderSource(shader, length[0], NULL, buf);
1325 AFTER_SHADER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, buf,
1326 length[0], "ddpp", shader, count,
1327 voidp_to_uint64(string), voidp_to_uint64(length));
1329 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "",
1330 "ddpp", shader, count,
1331 voidp_to_uint64(string), voidp_to_uint64(length));
1335 DECLARE(void, glStencilFunc, GLenum func, GLint ref, GLuint mask)
1337 TYPEDEF(void (*methodType)(GLenum, GLint, GLint));
1338 BEFORE(glStencilFunc);
1339 CALL_ORIG(glStencilFunc, func, ref, mask);
1341 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xdd",
1342 (uint64_t)(func), ref, mask);
1345 DECLARE(void, glStencilFuncSeparate, GLenum face, GLenum func, GLint ref, GLuint mask)
1347 TYPEDEF(void (*methodType)(GLenum, GLenum, GLint, GLuint));
1348 BEFORE(glStencilFuncSeparate);
1349 CALL_ORIG(glStencilFuncSeparate, face, func, ref, mask);
1351 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xxdd",
1352 (uint64_t)(face), (uint64_t)(func), ref, mask);
1355 DECLARE(void, glStencilMask, GLuint mask)
1357 TYPEDEF(void (*methodType)(GLuint));
1358 BEFORE(glStencilMask);
1359 CALL_ORIG(glStencilMask, mask);
1361 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "d", mask);
1364 DECLARE(void, glStencilMaskSeparate, GLenum face, GLuint mask)
1366 TYPEDEF(void (*methodType)(GLenum, GLuint));
1367 BEFORE(glStencilMaskSeparate);
1368 CALL_ORIG(glStencilMaskSeparate, face, mask);
1370 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xd",
1371 (uint64_t)(face), mask);
1374 DECLARE(void, glStencilOp, GLenum sfail, GLenum dpfail, GLenum dppass)
1376 TYPEDEF(void (*methodType)(GLenum, GLenum, GLenum));
1377 BEFORE(glStencilOp);
1378 CALL_ORIG(glStencilOp, sfail, dpfail, dppass);
1380 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xxx",
1381 (uint64_t)(sfail), (uint64_t)(dpfail),
1382 (uint64_t)(dppass));
1385 DECLARE(void, glStencilOpSeparate, GLenum face, GLenum sfail, GLenum dpfail,
1388 TYPEDEF(void (*methodType)(GLenum, GLenum, GLenum, GLenum));
1389 BEFORE(glStencilOpSeparate);
1390 CALL_ORIG(glStencilOpSeparate, face, sfail, dpfail, dppass);
1392 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xxxx",
1393 (uint64_t)(face), (uint64_t)(sfail), (uint64_t)(dpfail),
1394 (uint64_t)(dppass));
1397 // ==================================================================
1399 // ==================================================================
1401 DECLARE(void, glTexImage2D, GLenum target, GLint level, GLenum internalformat,
1402 GLsizei width, GLsizei height, GLint border, GLenum format,
1403 GLenum type, const GLvoid *data)
1405 TYPEDEF(void (*methodType)(GLenum, GLint, GLint, GLsizei, GLsizei,
1406 GLint, GLenum, GLenum, const GLvoid *));
1407 BEFORE(glTexImage2D);
1408 CALL_ORIG(glTexImage2D, target, level, internalformat, width,
1409 height, border, format, type, data);
1411 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xdddddxxp",
1412 (uint64_t)(target), level, internalformat, width, height,
1413 border, (uint64_t)(format), (uint64_t)(type),
1414 voidp_to_uint64(data));
1417 DECLARE(void, glTexParameterf, GLenum target, GLenum pname, GLfloat param)
1419 TYPEDEF(void (*methodType)(GLenum, GLenum, GLfloat));
1420 BEFORE(glTexParameterf);
1421 CALL_ORIG(glTexParameterf, target, pname, param);
1423 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xxf",
1424 (uint64_t)(target), (uint64_t)(pname), param);
1427 DECLARE(void, glTexParameterfv, GLenum target, GLenum pname, const GLfloat * params)
1429 TYPEDEF(void (*methodType)(GLenum, GLenum, const GLfloat *));
1430 BEFORE(glTexParameterfv);
1431 CALL_ORIG(glTexParameterfv, target, pname, params);
1433 if (error == GL_NO_ERROR) {
1434 char param0[sizeof(GLenum) * 4];
1435 snprintf(param0, sizeof(param0), "%x", (GLenum)params[0]);
1436 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, param0, "xxp",
1437 (uint64_t)(target), (uint64_t)(pname),
1438 voidp_to_uint64(params));
1440 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xxp",
1441 (uint64_t)(target), (uint64_t)(pname),
1442 voidp_to_uint64(params));
1446 DECLARE(void, glTexParameteri, GLenum target, GLenum pname, GLint param)
1448 TYPEDEF(void (*methodType)(GLenum, GLenum, GLint));
1449 BEFORE(glTexParameteri);
1450 CALL_ORIG(glTexParameteri, target, pname, param);
1452 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xxx",
1453 (uint64_t)(target), (uint64_t)(pname),
1457 DECLARE(void, glTexParameteriv, GLenum target, GLenum pname, const GLint * params)
1459 TYPEDEF(void (*methodType)(GLenum, GLenum, const GLint *));
1460 BEFORE(glTexParameteriv);
1461 CALL_ORIG(glTexParameteriv, target, pname, params);
1463 if (error == GL_NO_ERROR) {
1464 char param0[sizeof(GLenum) * 4];
1465 snprintf(param0, sizeof(param0), "%x", (GLenum)params[0]);
1466 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, param0, "xxp",
1467 (uint64_t)(target), (uint64_t)(pname),
1468 voidp_to_uint64(params));
1470 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "xxp",
1473 voidp_to_uint64(params));
1477 DECLARE(void, glTexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset,
1478 GLsizei width, GLsizei height, GLenum format, GLenum type,
1479 const GLvoid * data)
1481 TYPEDEF(void (*methodType)(GLenum, GLint, GLint, GLint, GLsizei,
1482 GLsizei, GLenum, GLenum, const GLvoid *));
1483 BEFORE(glTexSubImage2D);
1484 CALL_ORIG(glTexSubImage2D, target, level, xoffset, yoffset, width,
1485 height, format, type, data);
1487 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "",
1489 (uint64_t)(target), level, xoffset, yoffset, width, height,
1490 (uint64_t)(format), (uint64_t)(type), voidp_to_uint64(data));
1493 // ==================================================================
1495 // ==================================================================
1497 DECLARE(void, glUniform1f, GLint location, GLfloat v0)
1499 TYPEDEF(void (*methodType)(GLint, GLfloat));
1500 BEFORE(glUniform1f);
1501 CALL_ORIG(glUniform1f, location, v0);
1503 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "df",
1507 DECLARE(void, glUniform2f, GLint location, GLfloat v0, GLfloat v1)
1509 TYPEDEF(void (*methodType)(GLint, GLfloat, GLfloat));
1510 BEFORE(glUniform2f);
1511 CALL_ORIG(glUniform2f, location, v0, v1);
1513 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dff",
1517 DECLARE(void, glUniform3f, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
1519 TYPEDEF(void (*methodType)(GLint, GLfloat, GLfloat, GLfloat));
1520 BEFORE(glUniform3f);
1521 CALL_ORIG(glUniform3f, location, v0, v1, v2);
1523 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dfff",
1524 location, v0, v1, v2);
1527 DECLARE(void, glUniform4f, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
1529 TYPEDEF(void (*methodType)(GLint, GLfloat, GLfloat, GLfloat, GLfloat));
1530 BEFORE(glUniform4f);
1531 CALL_ORIG(glUniform4f, location, v0, v1, v2, v3);
1533 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dffff",
1534 location, v0, v1, v2, v3);
1537 DECLARE(void, glUniform1fv, GLint location, GLsizei count, const GLfloat *value)
1539 TYPEDEF(void (*methodType)(GLint, GLsizei, const GLfloat *));
1540 BEFORE(glUniform1fv);
1541 CALL_ORIG(glUniform1fv, location, count, value);
1543 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "ddF",
1544 location, count, count * 1, voidp_to_uint64(value));
1547 DECLARE(void, glUniform2fv, GLint location, GLsizei count, const GLfloat *value)
1549 TYPEDEF(void (*methodType)(GLint, GLsizei, const GLfloat *));
1550 BEFORE(glUniform2fv);
1551 CALL_ORIG(glUniform2fv, location, count, value);
1553 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "ddF",
1554 location, count, count * 2, voidp_to_uint64(value));
1557 DECLARE(void, glUniform3fv, GLint location, GLsizei count, const GLfloat *value)
1559 TYPEDEF(void (*methodType)(GLint, GLsizei, const GLfloat *));
1560 BEFORE(glUniform3fv);
1561 CALL_ORIG(glUniform3fv, location, count, value);
1563 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "ddF",
1564 location, count, count * 3, voidp_to_uint64(value));
1567 DECLARE(void, glUniform4fv, GLint location, GLsizei count, const GLfloat *value)
1569 TYPEDEF(void (*methodType)(GLint, GLsizei, const GLfloat *));
1570 BEFORE(glUniform4fv);
1571 CALL_ORIG(glUniform4fv, location, count, value);
1573 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "ddF",
1574 location, count, count * 4, voidp_to_uint64(value));
1577 DECLARE(void, glUniform1i, GLint location, GLint v0)
1579 TYPEDEF(void (*methodType)(GLint, GLint));
1580 BEFORE(glUniform1i);
1581 CALL_ORIG(glUniform1i, location, v0);
1583 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dd",
1587 DECLARE(void, glUniform2i, GLint location, GLint v0, GLint v1)
1589 TYPEDEF(void (*methodType)(GLint, GLint, GLint));
1590 BEFORE(glUniform2i);
1591 CALL_ORIG(glUniform2i, location, v0, v1);
1593 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "ddd",
1597 DECLARE(void, glUniform3i, GLint location, GLint v0, GLint v1, GLint v2)
1599 TYPEDEF(void (*methodType)(GLint, GLint, GLint, GLint));
1600 BEFORE(glUniform3i);
1601 CALL_ORIG(glUniform3i, location, v0, v1, v2);
1603 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dddd",
1604 location, v0, v1, v2);
1607 DECLARE(void, glUniform4i, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
1609 TYPEDEF(void (*methodType)(GLint, GLint, GLint, GLint, GLint));
1610 BEFORE(glUniform4i);
1611 CALL_ORIG(glUniform4i, location, v0, v1, v2, v3);
1613 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "ddddd",
1614 location, v0, v1, v2, v3);
1617 DECLARE(void, glUniform1iv, GLint location, GLsizei count, const GLint *value)
1619 TYPEDEF(void (*methodType)(GLint, GLsizei, const GLint *));
1620 BEFORE(glUniform1iv);
1621 CALL_ORIG(glUniform1iv, location, count, value);
1623 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "ddD",
1624 location, count, count * 1, voidp_to_uint64(value));
1627 DECLARE(void, glUniform2iv, GLint location, GLsizei count, const GLint *value)
1629 TYPEDEF(void (*methodType)(GLint, GLsizei, const GLint *));
1630 BEFORE(glUniform2iv);
1631 CALL_ORIG(glUniform2iv, location, count, value);
1633 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "ddD",
1634 location, count, count * 2, voidp_to_uint64(value));
1637 DECLARE(void, glUniform3iv, GLint location, GLsizei count, const GLint *value)
1639 TYPEDEF(void (*methodType)(GLint, GLsizei, const GLint *));
1640 BEFORE(glUniform3iv);
1641 CALL_ORIG(glUniform3iv, location, count, value);
1643 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "ddD",
1644 location, count, count * 3, voidp_to_uint64(value));
1647 DECLARE(void, glUniform4iv, GLint location, GLsizei count, const GLint *value)
1649 TYPEDEF(void (*methodType)(GLint, GLsizei, const GLint *));
1650 BEFORE(glUniform4iv);
1651 CALL_ORIG(glUniform4iv, location, count, value);
1653 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "ddD",
1654 location, count, count * 4, voidp_to_uint64(value));
1657 DECLARE(void, glUniformMatrix2fv, GLint location, GLsizei count, GLboolean transpose,
1658 const GLfloat *value)
1660 TYPEDEF(void (*methodType)(GLint, GLsizei, GLboolean, const GLfloat *));
1661 BEFORE(glUniformMatrix2fv);
1662 CALL_ORIG(glUniformMatrix2fv, location, count, transpose, value);
1664 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "ddxF",
1665 location, count, (uint64_t)(transpose), count * 2 * 2,
1666 voidp_to_uint64(value));
1669 DECLARE(void, glUniformMatrix3fv, GLint location, GLsizei count, GLboolean transpose,
1670 const GLfloat *value)
1672 TYPEDEF(void (*methodType)(GLint, GLsizei, GLboolean, const GLfloat *));
1673 BEFORE(glUniformMatrix3fv);
1674 CALL_ORIG(glUniformMatrix3fv, location, count, transpose, value);
1676 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "ddxF",
1677 location, count, (uint64_t)(transpose), count * 3 * 3,
1678 voidp_to_uint64(value));
1681 DECLARE(void, glUniformMatrix4fv, GLint location, GLsizei count, GLboolean transpose,
1682 const GLfloat *value)
1684 TYPEDEF(void (*methodType)(GLint, GLsizei, GLboolean, const GLfloat *));
1685 BEFORE(glUniformMatrix4fv);
1686 CALL_ORIG(glUniformMatrix4fv, location, count, transpose, value);
1688 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "ddxF",
1689 location, count, (uint64_t)(transpose), count * 4 * 4,
1690 voidp_to_uint64(value));
1693 DECLARE(void, glUseProgram, GLuint program)
1695 TYPEDEF(void (*methodType)(GLuint));
1696 BEFORE(glUseProgram);
1697 CALL_ORIG(glUseProgram, program);
1699 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "d",
1703 // ==================================================================
1705 // ==================================================================
1707 DECLARE(void, glValidateProgram, GLuint program)
1709 TYPEDEF(void (*methodType)(GLuint));
1710 BEFORE(glValidateProgram);
1711 CALL_ORIG(glValidateProgram, program);
1713 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "d",
1717 DECLARE(void, glVertexAttrib1f, GLuint index, GLfloat v0)
1719 TYPEDEF(void (*methodType)(GLuint, GLfloat));
1720 BEFORE(glVertexAttrib1f);
1721 CALL_ORIG(glVertexAttrib1f, index, v0);
1724 real_glGetVertexAttribfv(index, GL_CURRENT_VERTEX_ATTRIB, cv);
1725 snprintf(contextValue, sizeof(contextValue), "%f,%f,%f,%f",
1726 cv[0], cv[1], cv[2], cv[3]);
1729 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, contextValue, "df",
1733 DECLARE(void, glVertexAttrib2f, GLuint index, GLfloat v0, GLfloat v1)
1735 TYPEDEF(void (*methodType)(GLuint, GLfloat, GLfloat));
1736 BEFORE(glVertexAttrib2f);
1737 CALL_ORIG(glVertexAttrib2f, index, v0, v1);
1740 real_glGetVertexAttribfv(index, GL_CURRENT_VERTEX_ATTRIB, cv);
1741 snprintf(contextValue, sizeof(contextValue), "%f,%f,%f,%f",
1742 cv[0], cv[1], cv[2], cv[3]);
1745 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, contextValue, "dff",
1749 DECLARE(void, glVertexAttrib3f, GLuint index, GLfloat v0, GLfloat v1, GLfloat v2)
1751 TYPEDEF(void (*methodType)(GLuint, GLfloat, GLfloat, GLfloat));
1752 BEFORE(glVertexAttrib3f);
1753 CALL_ORIG(glVertexAttrib3f, index, v0, v1, v2);
1756 real_glGetVertexAttribfv(index, GL_CURRENT_VERTEX_ATTRIB, cv);
1757 snprintf(contextValue, sizeof(contextValue), "%f,%f,%f,%f",
1758 cv[0], cv[1], cv[2], cv[3]);
1761 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, contextValue, "dfff",
1765 DECLARE(void, glVertexAttrib4f, GLuint index, GLfloat v0, GLfloat v1, GLfloat v2,
1768 TYPEDEF(void (*methodType)(GLuint, GLfloat, GLfloat, GLfloat, GLfloat));
1769 BEFORE(glVertexAttrib4f);
1770 CALL_ORIG(glVertexAttrib4f, index, v0, v1, v2, v3);
1773 real_glGetVertexAttribfv(index, GL_CURRENT_VERTEX_ATTRIB, cv);
1774 snprintf(contextValue, sizeof(contextValue), "%f,%f,%f,%f",
1775 cv[0], cv[1], cv[2], cv[3]);
1778 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, contextValue, "dffff",
1779 index, v0, v1, v2, v3);
1782 DECLARE(void, glVertexAttrib1fv, GLuint index, const GLfloat *v)
1784 TYPEDEF(void (*methodType)(GLuint, const GLfloat *));
1785 BEFORE(glVertexAttrib1fv);
1786 CALL_ORIG(glVertexAttrib1fv, index, v);
1789 real_glGetVertexAttribfv(index, GL_CURRENT_VERTEX_ATTRIB, cv);
1790 snprintf(contextValue, sizeof(contextValue), "%f,%f,%f,%f",
1791 cv[0], cv[1], cv[2], cv[3]);
1794 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, contextValue,
1795 "dp", index, voidp_to_uint64(v));
1798 DECLARE(void, glVertexAttrib2fv, GLuint index, const GLfloat *v)
1800 TYPEDEF(void (*methodType)(GLuint, const GLfloat *));
1801 BEFORE(glVertexAttrib2fv);
1802 CALL_ORIG(glVertexAttrib2fv, index, v);
1805 real_glGetVertexAttribfv(index, GL_CURRENT_VERTEX_ATTRIB, cv);
1806 snprintf(contextValue, sizeof(contextValue), "%f,%f,%f,%f",
1807 cv[0], cv[1], cv[2], cv[3]);
1810 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, contextValue,
1811 "dp", index, voidp_to_uint64(v));
1814 DECLARE(void, glVertexAttrib3fv, GLuint index, const GLfloat *v)
1816 TYPEDEF(void (*methodType)(GLuint, const GLfloat *));
1817 BEFORE(glVertexAttrib3fv);
1818 CALL_ORIG(glVertexAttrib3fv, index, v);
1821 real_glGetVertexAttribfv(index, GL_CURRENT_VERTEX_ATTRIB, cv);
1822 snprintf(contextValue, sizeof(contextValue), "%f,%f,%f,%f",
1823 cv[0], cv[1], cv[2], cv[3]);
1826 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, contextValue,
1827 "dp", index, voidp_to_uint64(v));
1830 DECLARE(void, glVertexAttrib4fv, GLuint index, const GLfloat *v)
1832 TYPEDEF(void (*methodType)(GLuint, const GLfloat *));
1833 BEFORE(glVertexAttrib4fv);
1834 CALL_ORIG(glVertexAttrib4fv, index, v);
1836 real_glGetVertexAttribfv(index, GL_CURRENT_VERTEX_ATTRIB, cv);
1837 snprintf(contextValue, sizeof(contextValue), "%f,%f,%f,%f",
1838 cv[0], cv[1], cv[2], cv[3]);
1841 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, contextValue,
1842 "dp", index, voidp_to_uint64(v));
1845 DECLARE(void, glVertexAttribPointer, GLuint index, GLint size, GLenum type,
1846 GLboolean normalized, GLsizei stride,
1847 const GLvoid *pointer)
1849 TYPEDEF(void (*methodType)(GLuint, GLint, GLenum, GLboolean, GLsizei,
1851 BEFORE(glVertexAttribPointer);
1852 CALL_ORIG(glVertexAttribPointer, index, size, type, normalized, stride,
1855 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "ddxxdp",
1856 index, size, (uint64_t)(type), (uint64_t)(normalized),
1857 stride, voidp_to_uint64(pointer));
1860 DECLARE(void, glViewport, GLint x, GLint y, GLsizei width, GLsizei height)
1862 TYPEDEF(void (*methodType)(GLint, GLint, GLsizei, GLsizei));
1866 CALL_ORIG(glViewport, x, y, width, height);
1868 AFTER('v', NO_RETURN_VALUE, APITYPE_CONTEXT, "", "dddd",
1869 x, y, width, height);