gltrace_api.cpp revision 31272606149d83437a097800074b21e9e6a205ad
1/*
2 * Copyright 2011, The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *     http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16 * THIS FILE WAS GENERATED BY A SCRIPT. DO NOT EDIT.
17 */
18
19#include <cutils/log.h>
20#include <utils/Timers.h>
21#include <GLES2/gl2.h>
22
23#include "gltrace.pb.h"
24#include "gltrace_context.h"
25#include "gltrace_fixup.h"
26#include "gltrace_transport.h"
27
28namespace android {
29namespace gltrace {
30
31// Definitions for GL2 APIs
32
33void GLTrace_glActiveTexture(GLenum texture) {
34    GLMessage glmsg;
35    GLTraceContext *glContext = getGLTraceContext();
36
37    glmsg.set_function(GLMessage::glActiveTexture);
38
39    // copy argument texture
40    GLMessage_DataType *arg_texture = glmsg.add_args();
41    arg_texture->set_isarray(false);
42    arg_texture->set_type(GLMessage::DataType::ENUM);
43    arg_texture->add_intvalue((int)texture);
44
45    // call function
46    nsecs_t start_time = systemTime();
47    glContext->hooks->gl.glActiveTexture(texture);
48    nsecs_t end_time = systemTime();
49
50    fixupGLMessage(glContext, start_time, end_time, &glmsg);
51    glContext->traceGLMessage(&glmsg);
52}
53
54void GLTrace_glAttachShader(GLuint program, GLuint shader) {
55    GLMessage glmsg;
56    GLTraceContext *glContext = getGLTraceContext();
57
58    glmsg.set_function(GLMessage::glAttachShader);
59
60    // copy argument program
61    GLMessage_DataType *arg_program = glmsg.add_args();
62    arg_program->set_isarray(false);
63    arg_program->set_type(GLMessage::DataType::INT);
64    arg_program->add_intvalue(program);
65
66    // copy argument shader
67    GLMessage_DataType *arg_shader = glmsg.add_args();
68    arg_shader->set_isarray(false);
69    arg_shader->set_type(GLMessage::DataType::INT);
70    arg_shader->add_intvalue(shader);
71
72    // call function
73    nsecs_t start_time = systemTime();
74    glContext->hooks->gl.glAttachShader(program, shader);
75    nsecs_t end_time = systemTime();
76
77    fixupGLMessage(glContext, start_time, end_time, &glmsg);
78    glContext->traceGLMessage(&glmsg);
79}
80
81void GLTrace_glBindAttribLocation(GLuint program, GLuint index, const GLchar* name) {
82    GLMessage glmsg;
83    GLTraceContext *glContext = getGLTraceContext();
84
85    glmsg.set_function(GLMessage::glBindAttribLocation);
86
87    // copy argument program
88    GLMessage_DataType *arg_program = glmsg.add_args();
89    arg_program->set_isarray(false);
90    arg_program->set_type(GLMessage::DataType::INT);
91    arg_program->add_intvalue(program);
92
93    // copy argument index
94    GLMessage_DataType *arg_index = glmsg.add_args();
95    arg_index->set_isarray(false);
96    arg_index->set_type(GLMessage::DataType::INT);
97    arg_index->add_intvalue(index);
98
99    // copy argument name
100    GLMessage_DataType *arg_name = glmsg.add_args();
101    arg_name->set_isarray(false);
102    arg_name->set_type(GLMessage::DataType::INT);
103    arg_name->add_intvalue((int)name);
104
105    // call function
106    nsecs_t start_time = systemTime();
107    glContext->hooks->gl.glBindAttribLocation(program, index, name);
108    nsecs_t end_time = systemTime();
109
110    fixupGLMessage(glContext, start_time, end_time, &glmsg);
111    glContext->traceGLMessage(&glmsg);
112}
113
114void GLTrace_glBindBuffer(GLenum target, GLuint buffer) {
115    GLMessage glmsg;
116    GLTraceContext *glContext = getGLTraceContext();
117
118    glmsg.set_function(GLMessage::glBindBuffer);
119
120    // copy argument target
121    GLMessage_DataType *arg_target = glmsg.add_args();
122    arg_target->set_isarray(false);
123    arg_target->set_type(GLMessage::DataType::ENUM);
124    arg_target->add_intvalue((int)target);
125
126    // copy argument buffer
127    GLMessage_DataType *arg_buffer = glmsg.add_args();
128    arg_buffer->set_isarray(false);
129    arg_buffer->set_type(GLMessage::DataType::INT);
130    arg_buffer->add_intvalue(buffer);
131
132    // call function
133    nsecs_t start_time = systemTime();
134    glContext->hooks->gl.glBindBuffer(target, buffer);
135    nsecs_t end_time = systemTime();
136
137    fixupGLMessage(glContext, start_time, end_time, &glmsg);
138    glContext->traceGLMessage(&glmsg);
139}
140
141void GLTrace_glBindFramebuffer(GLenum target, GLuint framebuffer) {
142    GLMessage glmsg;
143    GLTraceContext *glContext = getGLTraceContext();
144
145    glmsg.set_function(GLMessage::glBindFramebuffer);
146
147    // copy argument target
148    GLMessage_DataType *arg_target = glmsg.add_args();
149    arg_target->set_isarray(false);
150    arg_target->set_type(GLMessage::DataType::ENUM);
151    arg_target->add_intvalue((int)target);
152
153    // copy argument framebuffer
154    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
155    arg_framebuffer->set_isarray(false);
156    arg_framebuffer->set_type(GLMessage::DataType::INT);
157    arg_framebuffer->add_intvalue(framebuffer);
158
159    // call function
160    nsecs_t start_time = systemTime();
161    glContext->hooks->gl.glBindFramebuffer(target, framebuffer);
162    nsecs_t end_time = systemTime();
163
164    fixupGLMessage(glContext, start_time, end_time, &glmsg);
165    glContext->traceGLMessage(&glmsg);
166}
167
168void GLTrace_glBindRenderbuffer(GLenum target, GLuint renderbuffer) {
169    GLMessage glmsg;
170    GLTraceContext *glContext = getGLTraceContext();
171
172    glmsg.set_function(GLMessage::glBindRenderbuffer);
173
174    // copy argument target
175    GLMessage_DataType *arg_target = glmsg.add_args();
176    arg_target->set_isarray(false);
177    arg_target->set_type(GLMessage::DataType::ENUM);
178    arg_target->add_intvalue((int)target);
179
180    // copy argument renderbuffer
181    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
182    arg_renderbuffer->set_isarray(false);
183    arg_renderbuffer->set_type(GLMessage::DataType::INT);
184    arg_renderbuffer->add_intvalue(renderbuffer);
185
186    // call function
187    nsecs_t start_time = systemTime();
188    glContext->hooks->gl.glBindRenderbuffer(target, renderbuffer);
189    nsecs_t end_time = systemTime();
190
191    fixupGLMessage(glContext, start_time, end_time, &glmsg);
192    glContext->traceGLMessage(&glmsg);
193}
194
195void GLTrace_glBindTexture(GLenum target, GLuint texture) {
196    GLMessage glmsg;
197    GLTraceContext *glContext = getGLTraceContext();
198
199    glmsg.set_function(GLMessage::glBindTexture);
200
201    // copy argument target
202    GLMessage_DataType *arg_target = glmsg.add_args();
203    arg_target->set_isarray(false);
204    arg_target->set_type(GLMessage::DataType::ENUM);
205    arg_target->add_intvalue((int)target);
206
207    // copy argument texture
208    GLMessage_DataType *arg_texture = glmsg.add_args();
209    arg_texture->set_isarray(false);
210    arg_texture->set_type(GLMessage::DataType::INT);
211    arg_texture->add_intvalue(texture);
212
213    // call function
214    nsecs_t start_time = systemTime();
215    glContext->hooks->gl.glBindTexture(target, texture);
216    nsecs_t end_time = systemTime();
217
218    fixupGLMessage(glContext, start_time, end_time, &glmsg);
219    glContext->traceGLMessage(&glmsg);
220}
221
222void GLTrace_glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) {
223    GLMessage glmsg;
224    GLTraceContext *glContext = getGLTraceContext();
225
226    glmsg.set_function(GLMessage::glBlendColor);
227
228    // copy argument red
229    GLMessage_DataType *arg_red = glmsg.add_args();
230    arg_red->set_isarray(false);
231    arg_red->set_type(GLMessage::DataType::FLOAT);
232    arg_red->add_floatvalue(red);
233
234    // copy argument green
235    GLMessage_DataType *arg_green = glmsg.add_args();
236    arg_green->set_isarray(false);
237    arg_green->set_type(GLMessage::DataType::FLOAT);
238    arg_green->add_floatvalue(green);
239
240    // copy argument blue
241    GLMessage_DataType *arg_blue = glmsg.add_args();
242    arg_blue->set_isarray(false);
243    arg_blue->set_type(GLMessage::DataType::FLOAT);
244    arg_blue->add_floatvalue(blue);
245
246    // copy argument alpha
247    GLMessage_DataType *arg_alpha = glmsg.add_args();
248    arg_alpha->set_isarray(false);
249    arg_alpha->set_type(GLMessage::DataType::FLOAT);
250    arg_alpha->add_floatvalue(alpha);
251
252    // call function
253    nsecs_t start_time = systemTime();
254    glContext->hooks->gl.glBlendColor(red, green, blue, alpha);
255    nsecs_t end_time = systemTime();
256
257    fixupGLMessage(glContext, start_time, end_time, &glmsg);
258    glContext->traceGLMessage(&glmsg);
259}
260
261void GLTrace_glBlendEquation(GLenum mode) {
262    GLMessage glmsg;
263    GLTraceContext *glContext = getGLTraceContext();
264
265    glmsg.set_function(GLMessage::glBlendEquation);
266
267    // copy argument mode
268    GLMessage_DataType *arg_mode = glmsg.add_args();
269    arg_mode->set_isarray(false);
270    arg_mode->set_type(GLMessage::DataType::ENUM);
271    arg_mode->add_intvalue((int)mode);
272
273    // call function
274    nsecs_t start_time = systemTime();
275    glContext->hooks->gl.glBlendEquation(mode);
276    nsecs_t end_time = systemTime();
277
278    fixupGLMessage(glContext, start_time, end_time, &glmsg);
279    glContext->traceGLMessage(&glmsg);
280}
281
282void GLTrace_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) {
283    GLMessage glmsg;
284    GLTraceContext *glContext = getGLTraceContext();
285
286    glmsg.set_function(GLMessage::glBlendEquationSeparate);
287
288    // copy argument modeRGB
289    GLMessage_DataType *arg_modeRGB = glmsg.add_args();
290    arg_modeRGB->set_isarray(false);
291    arg_modeRGB->set_type(GLMessage::DataType::ENUM);
292    arg_modeRGB->add_intvalue((int)modeRGB);
293
294    // copy argument modeAlpha
295    GLMessage_DataType *arg_modeAlpha = glmsg.add_args();
296    arg_modeAlpha->set_isarray(false);
297    arg_modeAlpha->set_type(GLMessage::DataType::ENUM);
298    arg_modeAlpha->add_intvalue((int)modeAlpha);
299
300    // call function
301    nsecs_t start_time = systemTime();
302    glContext->hooks->gl.glBlendEquationSeparate(modeRGB, modeAlpha);
303    nsecs_t end_time = systemTime();
304
305    fixupGLMessage(glContext, start_time, end_time, &glmsg);
306    glContext->traceGLMessage(&glmsg);
307}
308
309void GLTrace_glBlendFunc(GLenum sfactor, GLenum dfactor) {
310    GLMessage glmsg;
311    GLTraceContext *glContext = getGLTraceContext();
312
313    glmsg.set_function(GLMessage::glBlendFunc);
314
315    // copy argument sfactor
316    GLMessage_DataType *arg_sfactor = glmsg.add_args();
317    arg_sfactor->set_isarray(false);
318    arg_sfactor->set_type(GLMessage::DataType::ENUM);
319    arg_sfactor->add_intvalue((int)sfactor);
320
321    // copy argument dfactor
322    GLMessage_DataType *arg_dfactor = glmsg.add_args();
323    arg_dfactor->set_isarray(false);
324    arg_dfactor->set_type(GLMessage::DataType::ENUM);
325    arg_dfactor->add_intvalue((int)dfactor);
326
327    // call function
328    nsecs_t start_time = systemTime();
329    glContext->hooks->gl.glBlendFunc(sfactor, dfactor);
330    nsecs_t end_time = systemTime();
331
332    fixupGLMessage(glContext, start_time, end_time, &glmsg);
333    glContext->traceGLMessage(&glmsg);
334}
335
336void GLTrace_glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) {
337    GLMessage glmsg;
338    GLTraceContext *glContext = getGLTraceContext();
339
340    glmsg.set_function(GLMessage::glBlendFuncSeparate);
341
342    // copy argument srcRGB
343    GLMessage_DataType *arg_srcRGB = glmsg.add_args();
344    arg_srcRGB->set_isarray(false);
345    arg_srcRGB->set_type(GLMessage::DataType::ENUM);
346    arg_srcRGB->add_intvalue((int)srcRGB);
347
348    // copy argument dstRGB
349    GLMessage_DataType *arg_dstRGB = glmsg.add_args();
350    arg_dstRGB->set_isarray(false);
351    arg_dstRGB->set_type(GLMessage::DataType::ENUM);
352    arg_dstRGB->add_intvalue((int)dstRGB);
353
354    // copy argument srcAlpha
355    GLMessage_DataType *arg_srcAlpha = glmsg.add_args();
356    arg_srcAlpha->set_isarray(false);
357    arg_srcAlpha->set_type(GLMessage::DataType::ENUM);
358    arg_srcAlpha->add_intvalue((int)srcAlpha);
359
360    // copy argument dstAlpha
361    GLMessage_DataType *arg_dstAlpha = glmsg.add_args();
362    arg_dstAlpha->set_isarray(false);
363    arg_dstAlpha->set_type(GLMessage::DataType::ENUM);
364    arg_dstAlpha->add_intvalue((int)dstAlpha);
365
366    // call function
367    nsecs_t start_time = systemTime();
368    glContext->hooks->gl.glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);
369    nsecs_t end_time = systemTime();
370
371    fixupGLMessage(glContext, start_time, end_time, &glmsg);
372    glContext->traceGLMessage(&glmsg);
373}
374
375void GLTrace_glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage) {
376    GLMessage glmsg;
377    GLTraceContext *glContext = getGLTraceContext();
378
379    glmsg.set_function(GLMessage::glBufferData);
380
381    // copy argument target
382    GLMessage_DataType *arg_target = glmsg.add_args();
383    arg_target->set_isarray(false);
384    arg_target->set_type(GLMessage::DataType::ENUM);
385    arg_target->add_intvalue((int)target);
386
387    // copy argument size
388    GLMessage_DataType *arg_size = glmsg.add_args();
389    arg_size->set_isarray(false);
390    arg_size->set_type(GLMessage::DataType::INT);
391    arg_size->add_intvalue((int)size);
392
393    // copy argument data
394    GLMessage_DataType *arg_data = glmsg.add_args();
395    arg_data->set_isarray(false);
396    arg_data->set_type(GLMessage::DataType::INT);
397    arg_data->add_intvalue((int)data);
398
399    // copy argument usage
400    GLMessage_DataType *arg_usage = glmsg.add_args();
401    arg_usage->set_isarray(false);
402    arg_usage->set_type(GLMessage::DataType::ENUM);
403    arg_usage->add_intvalue((int)usage);
404
405    // call function
406    nsecs_t start_time = systemTime();
407    glContext->hooks->gl.glBufferData(target, size, data, usage);
408    nsecs_t end_time = systemTime();
409
410    fixupGLMessage(glContext, start_time, end_time, &glmsg);
411    glContext->traceGLMessage(&glmsg);
412}
413
414void GLTrace_glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data) {
415    GLMessage glmsg;
416    GLTraceContext *glContext = getGLTraceContext();
417
418    glmsg.set_function(GLMessage::glBufferSubData);
419
420    // copy argument target
421    GLMessage_DataType *arg_target = glmsg.add_args();
422    arg_target->set_isarray(false);
423    arg_target->set_type(GLMessage::DataType::ENUM);
424    arg_target->add_intvalue((int)target);
425
426    // copy argument offset
427    GLMessage_DataType *arg_offset = glmsg.add_args();
428    arg_offset->set_isarray(false);
429    arg_offset->set_type(GLMessage::DataType::INT);
430    arg_offset->add_intvalue((int)offset);
431
432    // copy argument size
433    GLMessage_DataType *arg_size = glmsg.add_args();
434    arg_size->set_isarray(false);
435    arg_size->set_type(GLMessage::DataType::INT);
436    arg_size->add_intvalue((int)size);
437
438    // copy argument data
439    GLMessage_DataType *arg_data = glmsg.add_args();
440    arg_data->set_isarray(false);
441    arg_data->set_type(GLMessage::DataType::INT);
442    arg_data->add_intvalue((int)data);
443
444    // call function
445    nsecs_t start_time = systemTime();
446    glContext->hooks->gl.glBufferSubData(target, offset, size, data);
447    nsecs_t end_time = systemTime();
448
449    fixupGLMessage(glContext, start_time, end_time, &glmsg);
450    glContext->traceGLMessage(&glmsg);
451}
452
453GLenum GLTrace_glCheckFramebufferStatus(GLenum target) {
454    GLMessage glmsg;
455    GLTraceContext *glContext = getGLTraceContext();
456
457    glmsg.set_function(GLMessage::glCheckFramebufferStatus);
458
459    // copy argument target
460    GLMessage_DataType *arg_target = glmsg.add_args();
461    arg_target->set_isarray(false);
462    arg_target->set_type(GLMessage::DataType::ENUM);
463    arg_target->add_intvalue((int)target);
464
465    // call function
466    nsecs_t start_time = systemTime();
467    GLenum retValue = glContext->hooks->gl.glCheckFramebufferStatus(target);
468    nsecs_t end_time = systemTime();
469
470    // set return value
471    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
472    rt->set_isarray(false);
473    rt->set_type(GLMessage::DataType::ENUM);
474    rt->add_intvalue((int)retValue);
475
476    fixupGLMessage(glContext, start_time, end_time, &glmsg);
477    glContext->traceGLMessage(&glmsg);
478
479    return retValue;
480}
481
482void GLTrace_glClear(GLbitfield mask) {
483    GLMessage glmsg;
484    GLTraceContext *glContext = getGLTraceContext();
485
486    glmsg.set_function(GLMessage::glClear);
487
488    // copy argument mask
489    GLMessage_DataType *arg_mask = glmsg.add_args();
490    arg_mask->set_isarray(false);
491    arg_mask->set_type(GLMessage::DataType::INT);
492    arg_mask->add_intvalue(mask);
493
494    // call function
495    nsecs_t start_time = systemTime();
496    glContext->hooks->gl.glClear(mask);
497    nsecs_t end_time = systemTime();
498
499    fixupGLMessage(glContext, start_time, end_time, &glmsg);
500    glContext->traceGLMessage(&glmsg);
501}
502
503void GLTrace_glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) {
504    GLMessage glmsg;
505    GLTraceContext *glContext = getGLTraceContext();
506
507    glmsg.set_function(GLMessage::glClearColor);
508
509    // copy argument red
510    GLMessage_DataType *arg_red = glmsg.add_args();
511    arg_red->set_isarray(false);
512    arg_red->set_type(GLMessage::DataType::FLOAT);
513    arg_red->add_floatvalue(red);
514
515    // copy argument green
516    GLMessage_DataType *arg_green = glmsg.add_args();
517    arg_green->set_isarray(false);
518    arg_green->set_type(GLMessage::DataType::FLOAT);
519    arg_green->add_floatvalue(green);
520
521    // copy argument blue
522    GLMessage_DataType *arg_blue = glmsg.add_args();
523    arg_blue->set_isarray(false);
524    arg_blue->set_type(GLMessage::DataType::FLOAT);
525    arg_blue->add_floatvalue(blue);
526
527    // copy argument alpha
528    GLMessage_DataType *arg_alpha = glmsg.add_args();
529    arg_alpha->set_isarray(false);
530    arg_alpha->set_type(GLMessage::DataType::FLOAT);
531    arg_alpha->add_floatvalue(alpha);
532
533    // call function
534    nsecs_t start_time = systemTime();
535    glContext->hooks->gl.glClearColor(red, green, blue, alpha);
536    nsecs_t end_time = systemTime();
537
538    fixupGLMessage(glContext, start_time, end_time, &glmsg);
539    glContext->traceGLMessage(&glmsg);
540}
541
542void GLTrace_glClearDepthf(GLclampf depth) {
543    GLMessage glmsg;
544    GLTraceContext *glContext = getGLTraceContext();
545
546    glmsg.set_function(GLMessage::glClearDepthf);
547
548    // copy argument depth
549    GLMessage_DataType *arg_depth = glmsg.add_args();
550    arg_depth->set_isarray(false);
551    arg_depth->set_type(GLMessage::DataType::FLOAT);
552    arg_depth->add_floatvalue(depth);
553
554    // call function
555    nsecs_t start_time = systemTime();
556    glContext->hooks->gl.glClearDepthf(depth);
557    nsecs_t end_time = systemTime();
558
559    fixupGLMessage(glContext, start_time, end_time, &glmsg);
560    glContext->traceGLMessage(&glmsg);
561}
562
563void GLTrace_glClearStencil(GLint s) {
564    GLMessage glmsg;
565    GLTraceContext *glContext = getGLTraceContext();
566
567    glmsg.set_function(GLMessage::glClearStencil);
568
569    // copy argument s
570    GLMessage_DataType *arg_s = glmsg.add_args();
571    arg_s->set_isarray(false);
572    arg_s->set_type(GLMessage::DataType::INT);
573    arg_s->add_intvalue(s);
574
575    // call function
576    nsecs_t start_time = systemTime();
577    glContext->hooks->gl.glClearStencil(s);
578    nsecs_t end_time = systemTime();
579
580    fixupGLMessage(glContext, start_time, end_time, &glmsg);
581    glContext->traceGLMessage(&glmsg);
582}
583
584void GLTrace_glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) {
585    GLMessage glmsg;
586    GLTraceContext *glContext = getGLTraceContext();
587
588    glmsg.set_function(GLMessage::glColorMask);
589
590    // copy argument red
591    GLMessage_DataType *arg_red = glmsg.add_args();
592    arg_red->set_isarray(false);
593    arg_red->set_type(GLMessage::DataType::BOOL);
594    arg_red->add_boolvalue(red);
595
596    // copy argument green
597    GLMessage_DataType *arg_green = glmsg.add_args();
598    arg_green->set_isarray(false);
599    arg_green->set_type(GLMessage::DataType::BOOL);
600    arg_green->add_boolvalue(green);
601
602    // copy argument blue
603    GLMessage_DataType *arg_blue = glmsg.add_args();
604    arg_blue->set_isarray(false);
605    arg_blue->set_type(GLMessage::DataType::BOOL);
606    arg_blue->add_boolvalue(blue);
607
608    // copy argument alpha
609    GLMessage_DataType *arg_alpha = glmsg.add_args();
610    arg_alpha->set_isarray(false);
611    arg_alpha->set_type(GLMessage::DataType::BOOL);
612    arg_alpha->add_boolvalue(alpha);
613
614    // call function
615    nsecs_t start_time = systemTime();
616    glContext->hooks->gl.glColorMask(red, green, blue, alpha);
617    nsecs_t end_time = systemTime();
618
619    fixupGLMessage(glContext, start_time, end_time, &glmsg);
620    glContext->traceGLMessage(&glmsg);
621}
622
623void GLTrace_glCompileShader(GLuint shader) {
624    GLMessage glmsg;
625    GLTraceContext *glContext = getGLTraceContext();
626
627    glmsg.set_function(GLMessage::glCompileShader);
628
629    // copy argument shader
630    GLMessage_DataType *arg_shader = glmsg.add_args();
631    arg_shader->set_isarray(false);
632    arg_shader->set_type(GLMessage::DataType::INT);
633    arg_shader->add_intvalue(shader);
634
635    // call function
636    nsecs_t start_time = systemTime();
637    glContext->hooks->gl.glCompileShader(shader);
638    nsecs_t end_time = systemTime();
639
640    fixupGLMessage(glContext, start_time, end_time, &glmsg);
641    glContext->traceGLMessage(&glmsg);
642}
643
644void GLTrace_glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data) {
645    GLMessage glmsg;
646    GLTraceContext *glContext = getGLTraceContext();
647
648    glmsg.set_function(GLMessage::glCompressedTexImage2D);
649
650    // copy argument target
651    GLMessage_DataType *arg_target = glmsg.add_args();
652    arg_target->set_isarray(false);
653    arg_target->set_type(GLMessage::DataType::ENUM);
654    arg_target->add_intvalue((int)target);
655
656    // copy argument level
657    GLMessage_DataType *arg_level = glmsg.add_args();
658    arg_level->set_isarray(false);
659    arg_level->set_type(GLMessage::DataType::INT);
660    arg_level->add_intvalue(level);
661
662    // copy argument internalformat
663    GLMessage_DataType *arg_internalformat = glmsg.add_args();
664    arg_internalformat->set_isarray(false);
665    arg_internalformat->set_type(GLMessage::DataType::ENUM);
666    arg_internalformat->add_intvalue((int)internalformat);
667
668    // copy argument width
669    GLMessage_DataType *arg_width = glmsg.add_args();
670    arg_width->set_isarray(false);
671    arg_width->set_type(GLMessage::DataType::INT);
672    arg_width->add_intvalue(width);
673
674    // copy argument height
675    GLMessage_DataType *arg_height = glmsg.add_args();
676    arg_height->set_isarray(false);
677    arg_height->set_type(GLMessage::DataType::INT);
678    arg_height->add_intvalue(height);
679
680    // copy argument border
681    GLMessage_DataType *arg_border = glmsg.add_args();
682    arg_border->set_isarray(false);
683    arg_border->set_type(GLMessage::DataType::INT);
684    arg_border->add_intvalue(border);
685
686    // copy argument imageSize
687    GLMessage_DataType *arg_imageSize = glmsg.add_args();
688    arg_imageSize->set_isarray(false);
689    arg_imageSize->set_type(GLMessage::DataType::INT);
690    arg_imageSize->add_intvalue(imageSize);
691
692    // copy argument data
693    GLMessage_DataType *arg_data = glmsg.add_args();
694    arg_data->set_isarray(false);
695    arg_data->set_type(GLMessage::DataType::INT);
696    arg_data->add_intvalue((int)data);
697
698    // call function
699    nsecs_t start_time = systemTime();
700    glContext->hooks->gl.glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);
701    nsecs_t end_time = systemTime();
702
703    fixupGLMessage(glContext, start_time, end_time, &glmsg);
704    glContext->traceGLMessage(&glmsg);
705}
706
707void GLTrace_glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data) {
708    GLMessage glmsg;
709    GLTraceContext *glContext = getGLTraceContext();
710
711    glmsg.set_function(GLMessage::glCompressedTexSubImage2D);
712
713    // copy argument target
714    GLMessage_DataType *arg_target = glmsg.add_args();
715    arg_target->set_isarray(false);
716    arg_target->set_type(GLMessage::DataType::ENUM);
717    arg_target->add_intvalue((int)target);
718
719    // copy argument level
720    GLMessage_DataType *arg_level = glmsg.add_args();
721    arg_level->set_isarray(false);
722    arg_level->set_type(GLMessage::DataType::INT);
723    arg_level->add_intvalue(level);
724
725    // copy argument xoffset
726    GLMessage_DataType *arg_xoffset = glmsg.add_args();
727    arg_xoffset->set_isarray(false);
728    arg_xoffset->set_type(GLMessage::DataType::INT);
729    arg_xoffset->add_intvalue(xoffset);
730
731    // copy argument yoffset
732    GLMessage_DataType *arg_yoffset = glmsg.add_args();
733    arg_yoffset->set_isarray(false);
734    arg_yoffset->set_type(GLMessage::DataType::INT);
735    arg_yoffset->add_intvalue(yoffset);
736
737    // copy argument width
738    GLMessage_DataType *arg_width = glmsg.add_args();
739    arg_width->set_isarray(false);
740    arg_width->set_type(GLMessage::DataType::INT);
741    arg_width->add_intvalue(width);
742
743    // copy argument height
744    GLMessage_DataType *arg_height = glmsg.add_args();
745    arg_height->set_isarray(false);
746    arg_height->set_type(GLMessage::DataType::INT);
747    arg_height->add_intvalue(height);
748
749    // copy argument format
750    GLMessage_DataType *arg_format = glmsg.add_args();
751    arg_format->set_isarray(false);
752    arg_format->set_type(GLMessage::DataType::ENUM);
753    arg_format->add_intvalue((int)format);
754
755    // copy argument imageSize
756    GLMessage_DataType *arg_imageSize = glmsg.add_args();
757    arg_imageSize->set_isarray(false);
758    arg_imageSize->set_type(GLMessage::DataType::INT);
759    arg_imageSize->add_intvalue(imageSize);
760
761    // copy argument data
762    GLMessage_DataType *arg_data = glmsg.add_args();
763    arg_data->set_isarray(false);
764    arg_data->set_type(GLMessage::DataType::INT);
765    arg_data->add_intvalue((int)data);
766
767    // call function
768    nsecs_t start_time = systemTime();
769    glContext->hooks->gl.glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data);
770    nsecs_t end_time = systemTime();
771
772    fixupGLMessage(glContext, start_time, end_time, &glmsg);
773    glContext->traceGLMessage(&glmsg);
774}
775
776void GLTrace_glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) {
777    GLMessage glmsg;
778    GLTraceContext *glContext = getGLTraceContext();
779
780    glmsg.set_function(GLMessage::glCopyTexImage2D);
781
782    // copy argument target
783    GLMessage_DataType *arg_target = glmsg.add_args();
784    arg_target->set_isarray(false);
785    arg_target->set_type(GLMessage::DataType::ENUM);
786    arg_target->add_intvalue((int)target);
787
788    // copy argument level
789    GLMessage_DataType *arg_level = glmsg.add_args();
790    arg_level->set_isarray(false);
791    arg_level->set_type(GLMessage::DataType::INT);
792    arg_level->add_intvalue(level);
793
794    // copy argument internalformat
795    GLMessage_DataType *arg_internalformat = glmsg.add_args();
796    arg_internalformat->set_isarray(false);
797    arg_internalformat->set_type(GLMessage::DataType::ENUM);
798    arg_internalformat->add_intvalue((int)internalformat);
799
800    // copy argument x
801    GLMessage_DataType *arg_x = glmsg.add_args();
802    arg_x->set_isarray(false);
803    arg_x->set_type(GLMessage::DataType::INT);
804    arg_x->add_intvalue(x);
805
806    // copy argument y
807    GLMessage_DataType *arg_y = glmsg.add_args();
808    arg_y->set_isarray(false);
809    arg_y->set_type(GLMessage::DataType::INT);
810    arg_y->add_intvalue(y);
811
812    // copy argument width
813    GLMessage_DataType *arg_width = glmsg.add_args();
814    arg_width->set_isarray(false);
815    arg_width->set_type(GLMessage::DataType::INT);
816    arg_width->add_intvalue(width);
817
818    // copy argument height
819    GLMessage_DataType *arg_height = glmsg.add_args();
820    arg_height->set_isarray(false);
821    arg_height->set_type(GLMessage::DataType::INT);
822    arg_height->add_intvalue(height);
823
824    // copy argument border
825    GLMessage_DataType *arg_border = glmsg.add_args();
826    arg_border->set_isarray(false);
827    arg_border->set_type(GLMessage::DataType::INT);
828    arg_border->add_intvalue(border);
829
830    // call function
831    nsecs_t start_time = systemTime();
832    glContext->hooks->gl.glCopyTexImage2D(target, level, internalformat, x, y, width, height, border);
833    nsecs_t end_time = systemTime();
834
835    fixupGLMessage(glContext, start_time, end_time, &glmsg);
836    glContext->traceGLMessage(&glmsg);
837}
838
839void GLTrace_glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) {
840    GLMessage glmsg;
841    GLTraceContext *glContext = getGLTraceContext();
842
843    glmsg.set_function(GLMessage::glCopyTexSubImage2D);
844
845    // copy argument target
846    GLMessage_DataType *arg_target = glmsg.add_args();
847    arg_target->set_isarray(false);
848    arg_target->set_type(GLMessage::DataType::ENUM);
849    arg_target->add_intvalue((int)target);
850
851    // copy argument level
852    GLMessage_DataType *arg_level = glmsg.add_args();
853    arg_level->set_isarray(false);
854    arg_level->set_type(GLMessage::DataType::INT);
855    arg_level->add_intvalue(level);
856
857    // copy argument xoffset
858    GLMessage_DataType *arg_xoffset = glmsg.add_args();
859    arg_xoffset->set_isarray(false);
860    arg_xoffset->set_type(GLMessage::DataType::INT);
861    arg_xoffset->add_intvalue(xoffset);
862
863    // copy argument yoffset
864    GLMessage_DataType *arg_yoffset = glmsg.add_args();
865    arg_yoffset->set_isarray(false);
866    arg_yoffset->set_type(GLMessage::DataType::INT);
867    arg_yoffset->add_intvalue(yoffset);
868
869    // copy argument x
870    GLMessage_DataType *arg_x = glmsg.add_args();
871    arg_x->set_isarray(false);
872    arg_x->set_type(GLMessage::DataType::INT);
873    arg_x->add_intvalue(x);
874
875    // copy argument y
876    GLMessage_DataType *arg_y = glmsg.add_args();
877    arg_y->set_isarray(false);
878    arg_y->set_type(GLMessage::DataType::INT);
879    arg_y->add_intvalue(y);
880
881    // copy argument width
882    GLMessage_DataType *arg_width = glmsg.add_args();
883    arg_width->set_isarray(false);
884    arg_width->set_type(GLMessage::DataType::INT);
885    arg_width->add_intvalue(width);
886
887    // copy argument height
888    GLMessage_DataType *arg_height = glmsg.add_args();
889    arg_height->set_isarray(false);
890    arg_height->set_type(GLMessage::DataType::INT);
891    arg_height->add_intvalue(height);
892
893    // call function
894    nsecs_t start_time = systemTime();
895    glContext->hooks->gl.glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
896    nsecs_t end_time = systemTime();
897
898    fixupGLMessage(glContext, start_time, end_time, &glmsg);
899    glContext->traceGLMessage(&glmsg);
900}
901
902GLuint GLTrace_glCreateProgram(void) {
903    GLMessage glmsg;
904    GLTraceContext *glContext = getGLTraceContext();
905
906    glmsg.set_function(GLMessage::glCreateProgram);
907
908    // call function
909    nsecs_t start_time = systemTime();
910    GLuint retValue = glContext->hooks->gl.glCreateProgram();
911    nsecs_t end_time = systemTime();
912
913    // set return value
914    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
915    rt->set_isarray(false);
916    rt->set_type(GLMessage::DataType::INT);
917    rt->add_intvalue(retValue);
918
919    fixupGLMessage(glContext, start_time, end_time, &glmsg);
920    glContext->traceGLMessage(&glmsg);
921
922    return retValue;
923}
924
925GLuint GLTrace_glCreateShader(GLenum type) {
926    GLMessage glmsg;
927    GLTraceContext *glContext = getGLTraceContext();
928
929    glmsg.set_function(GLMessage::glCreateShader);
930
931    // copy argument type
932    GLMessage_DataType *arg_type = glmsg.add_args();
933    arg_type->set_isarray(false);
934    arg_type->set_type(GLMessage::DataType::ENUM);
935    arg_type->add_intvalue((int)type);
936
937    // call function
938    nsecs_t start_time = systemTime();
939    GLuint retValue = glContext->hooks->gl.glCreateShader(type);
940    nsecs_t end_time = systemTime();
941
942    // set return value
943    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
944    rt->set_isarray(false);
945    rt->set_type(GLMessage::DataType::INT);
946    rt->add_intvalue(retValue);
947
948    fixupGLMessage(glContext, start_time, end_time, &glmsg);
949    glContext->traceGLMessage(&glmsg);
950
951    return retValue;
952}
953
954void GLTrace_glCullFace(GLenum mode) {
955    GLMessage glmsg;
956    GLTraceContext *glContext = getGLTraceContext();
957
958    glmsg.set_function(GLMessage::glCullFace);
959
960    // copy argument mode
961    GLMessage_DataType *arg_mode = glmsg.add_args();
962    arg_mode->set_isarray(false);
963    arg_mode->set_type(GLMessage::DataType::ENUM);
964    arg_mode->add_intvalue((int)mode);
965
966    // call function
967    nsecs_t start_time = systemTime();
968    glContext->hooks->gl.glCullFace(mode);
969    nsecs_t end_time = systemTime();
970
971    fixupGLMessage(glContext, start_time, end_time, &glmsg);
972    glContext->traceGLMessage(&glmsg);
973}
974
975void GLTrace_glDeleteBuffers(GLsizei n, const GLuint* buffers) {
976    GLMessage glmsg;
977    GLTraceContext *glContext = getGLTraceContext();
978
979    glmsg.set_function(GLMessage::glDeleteBuffers);
980
981    // copy argument n
982    GLMessage_DataType *arg_n = glmsg.add_args();
983    arg_n->set_isarray(false);
984    arg_n->set_type(GLMessage::DataType::INT);
985    arg_n->add_intvalue(n);
986
987    // copy argument buffers
988    GLMessage_DataType *arg_buffers = glmsg.add_args();
989    arg_buffers->set_isarray(false);
990    arg_buffers->set_type(GLMessage::DataType::INT);
991    arg_buffers->add_intvalue((int)buffers);
992
993    // call function
994    nsecs_t start_time = systemTime();
995    glContext->hooks->gl.glDeleteBuffers(n, buffers);
996    nsecs_t end_time = systemTime();
997
998    fixupGLMessage(glContext, start_time, end_time, &glmsg);
999    glContext->traceGLMessage(&glmsg);
1000}
1001
1002void GLTrace_glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers) {
1003    GLMessage glmsg;
1004    GLTraceContext *glContext = getGLTraceContext();
1005
1006    glmsg.set_function(GLMessage::glDeleteFramebuffers);
1007
1008    // copy argument n
1009    GLMessage_DataType *arg_n = glmsg.add_args();
1010    arg_n->set_isarray(false);
1011    arg_n->set_type(GLMessage::DataType::INT);
1012    arg_n->add_intvalue(n);
1013
1014    // copy argument framebuffers
1015    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
1016    arg_framebuffers->set_isarray(false);
1017    arg_framebuffers->set_type(GLMessage::DataType::INT);
1018    arg_framebuffers->add_intvalue((int)framebuffers);
1019
1020    // call function
1021    nsecs_t start_time = systemTime();
1022    glContext->hooks->gl.glDeleteFramebuffers(n, framebuffers);
1023    nsecs_t end_time = systemTime();
1024
1025    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1026    glContext->traceGLMessage(&glmsg);
1027}
1028
1029void GLTrace_glDeleteProgram(GLuint program) {
1030    GLMessage glmsg;
1031    GLTraceContext *glContext = getGLTraceContext();
1032
1033    glmsg.set_function(GLMessage::glDeleteProgram);
1034
1035    // copy argument program
1036    GLMessage_DataType *arg_program = glmsg.add_args();
1037    arg_program->set_isarray(false);
1038    arg_program->set_type(GLMessage::DataType::INT);
1039    arg_program->add_intvalue(program);
1040
1041    // call function
1042    nsecs_t start_time = systemTime();
1043    glContext->hooks->gl.glDeleteProgram(program);
1044    nsecs_t end_time = systemTime();
1045
1046    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1047    glContext->traceGLMessage(&glmsg);
1048}
1049
1050void GLTrace_glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers) {
1051    GLMessage glmsg;
1052    GLTraceContext *glContext = getGLTraceContext();
1053
1054    glmsg.set_function(GLMessage::glDeleteRenderbuffers);
1055
1056    // copy argument n
1057    GLMessage_DataType *arg_n = glmsg.add_args();
1058    arg_n->set_isarray(false);
1059    arg_n->set_type(GLMessage::DataType::INT);
1060    arg_n->add_intvalue(n);
1061
1062    // copy argument renderbuffers
1063    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
1064    arg_renderbuffers->set_isarray(false);
1065    arg_renderbuffers->set_type(GLMessage::DataType::INT);
1066    arg_renderbuffers->add_intvalue((int)renderbuffers);
1067
1068    // call function
1069    nsecs_t start_time = systemTime();
1070    glContext->hooks->gl.glDeleteRenderbuffers(n, renderbuffers);
1071    nsecs_t end_time = systemTime();
1072
1073    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1074    glContext->traceGLMessage(&glmsg);
1075}
1076
1077void GLTrace_glDeleteShader(GLuint shader) {
1078    GLMessage glmsg;
1079    GLTraceContext *glContext = getGLTraceContext();
1080
1081    glmsg.set_function(GLMessage::glDeleteShader);
1082
1083    // copy argument shader
1084    GLMessage_DataType *arg_shader = glmsg.add_args();
1085    arg_shader->set_isarray(false);
1086    arg_shader->set_type(GLMessage::DataType::INT);
1087    arg_shader->add_intvalue(shader);
1088
1089    // call function
1090    nsecs_t start_time = systemTime();
1091    glContext->hooks->gl.glDeleteShader(shader);
1092    nsecs_t end_time = systemTime();
1093
1094    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1095    glContext->traceGLMessage(&glmsg);
1096}
1097
1098void GLTrace_glDeleteTextures(GLsizei n, const GLuint* textures) {
1099    GLMessage glmsg;
1100    GLTraceContext *glContext = getGLTraceContext();
1101
1102    glmsg.set_function(GLMessage::glDeleteTextures);
1103
1104    // copy argument n
1105    GLMessage_DataType *arg_n = glmsg.add_args();
1106    arg_n->set_isarray(false);
1107    arg_n->set_type(GLMessage::DataType::INT);
1108    arg_n->add_intvalue(n);
1109
1110    // copy argument textures
1111    GLMessage_DataType *arg_textures = glmsg.add_args();
1112    arg_textures->set_isarray(false);
1113    arg_textures->set_type(GLMessage::DataType::INT);
1114    arg_textures->add_intvalue((int)textures);
1115
1116    // call function
1117    nsecs_t start_time = systemTime();
1118    glContext->hooks->gl.glDeleteTextures(n, textures);
1119    nsecs_t end_time = systemTime();
1120
1121    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1122    glContext->traceGLMessage(&glmsg);
1123}
1124
1125void GLTrace_glDepthFunc(GLenum func) {
1126    GLMessage glmsg;
1127    GLTraceContext *glContext = getGLTraceContext();
1128
1129    glmsg.set_function(GLMessage::glDepthFunc);
1130
1131    // copy argument func
1132    GLMessage_DataType *arg_func = glmsg.add_args();
1133    arg_func->set_isarray(false);
1134    arg_func->set_type(GLMessage::DataType::ENUM);
1135    arg_func->add_intvalue((int)func);
1136
1137    // call function
1138    nsecs_t start_time = systemTime();
1139    glContext->hooks->gl.glDepthFunc(func);
1140    nsecs_t end_time = systemTime();
1141
1142    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1143    glContext->traceGLMessage(&glmsg);
1144}
1145
1146void GLTrace_glDepthMask(GLboolean flag) {
1147    GLMessage glmsg;
1148    GLTraceContext *glContext = getGLTraceContext();
1149
1150    glmsg.set_function(GLMessage::glDepthMask);
1151
1152    // copy argument flag
1153    GLMessage_DataType *arg_flag = glmsg.add_args();
1154    arg_flag->set_isarray(false);
1155    arg_flag->set_type(GLMessage::DataType::BOOL);
1156    arg_flag->add_boolvalue(flag);
1157
1158    // call function
1159    nsecs_t start_time = systemTime();
1160    glContext->hooks->gl.glDepthMask(flag);
1161    nsecs_t end_time = systemTime();
1162
1163    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1164    glContext->traceGLMessage(&glmsg);
1165}
1166
1167void GLTrace_glDepthRangef(GLclampf zNear, GLclampf zFar) {
1168    GLMessage glmsg;
1169    GLTraceContext *glContext = getGLTraceContext();
1170
1171    glmsg.set_function(GLMessage::glDepthRangef);
1172
1173    // copy argument zNear
1174    GLMessage_DataType *arg_zNear = glmsg.add_args();
1175    arg_zNear->set_isarray(false);
1176    arg_zNear->set_type(GLMessage::DataType::FLOAT);
1177    arg_zNear->add_floatvalue(zNear);
1178
1179    // copy argument zFar
1180    GLMessage_DataType *arg_zFar = glmsg.add_args();
1181    arg_zFar->set_isarray(false);
1182    arg_zFar->set_type(GLMessage::DataType::FLOAT);
1183    arg_zFar->add_floatvalue(zFar);
1184
1185    // call function
1186    nsecs_t start_time = systemTime();
1187    glContext->hooks->gl.glDepthRangef(zNear, zFar);
1188    nsecs_t end_time = systemTime();
1189
1190    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1191    glContext->traceGLMessage(&glmsg);
1192}
1193
1194void GLTrace_glDetachShader(GLuint program, GLuint shader) {
1195    GLMessage glmsg;
1196    GLTraceContext *glContext = getGLTraceContext();
1197
1198    glmsg.set_function(GLMessage::glDetachShader);
1199
1200    // copy argument program
1201    GLMessage_DataType *arg_program = glmsg.add_args();
1202    arg_program->set_isarray(false);
1203    arg_program->set_type(GLMessage::DataType::INT);
1204    arg_program->add_intvalue(program);
1205
1206    // copy argument shader
1207    GLMessage_DataType *arg_shader = glmsg.add_args();
1208    arg_shader->set_isarray(false);
1209    arg_shader->set_type(GLMessage::DataType::INT);
1210    arg_shader->add_intvalue(shader);
1211
1212    // call function
1213    nsecs_t start_time = systemTime();
1214    glContext->hooks->gl.glDetachShader(program, shader);
1215    nsecs_t end_time = systemTime();
1216
1217    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1218    glContext->traceGLMessage(&glmsg);
1219}
1220
1221void GLTrace_glDisable(GLenum cap) {
1222    GLMessage glmsg;
1223    GLTraceContext *glContext = getGLTraceContext();
1224
1225    glmsg.set_function(GLMessage::glDisable);
1226
1227    // copy argument cap
1228    GLMessage_DataType *arg_cap = glmsg.add_args();
1229    arg_cap->set_isarray(false);
1230    arg_cap->set_type(GLMessage::DataType::ENUM);
1231    arg_cap->add_intvalue((int)cap);
1232
1233    // call function
1234    nsecs_t start_time = systemTime();
1235    glContext->hooks->gl.glDisable(cap);
1236    nsecs_t end_time = systemTime();
1237
1238    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1239    glContext->traceGLMessage(&glmsg);
1240}
1241
1242void GLTrace_glDisableVertexAttribArray(GLuint index) {
1243    GLMessage glmsg;
1244    GLTraceContext *glContext = getGLTraceContext();
1245
1246    glmsg.set_function(GLMessage::glDisableVertexAttribArray);
1247
1248    // copy argument index
1249    GLMessage_DataType *arg_index = glmsg.add_args();
1250    arg_index->set_isarray(false);
1251    arg_index->set_type(GLMessage::DataType::INT);
1252    arg_index->add_intvalue(index);
1253
1254    // call function
1255    nsecs_t start_time = systemTime();
1256    glContext->hooks->gl.glDisableVertexAttribArray(index);
1257    nsecs_t end_time = systemTime();
1258
1259    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1260    glContext->traceGLMessage(&glmsg);
1261}
1262
1263void GLTrace_glDrawArrays(GLenum mode, GLint first, GLsizei count) {
1264    GLMessage glmsg;
1265    GLTraceContext *glContext = getGLTraceContext();
1266
1267    glmsg.set_function(GLMessage::glDrawArrays);
1268
1269    // copy argument mode
1270    GLMessage_DataType *arg_mode = glmsg.add_args();
1271    arg_mode->set_isarray(false);
1272    arg_mode->set_type(GLMessage::DataType::ENUM);
1273    arg_mode->add_intvalue((int)mode);
1274
1275    // copy argument first
1276    GLMessage_DataType *arg_first = glmsg.add_args();
1277    arg_first->set_isarray(false);
1278    arg_first->set_type(GLMessage::DataType::INT);
1279    arg_first->add_intvalue(first);
1280
1281    // copy argument count
1282    GLMessage_DataType *arg_count = glmsg.add_args();
1283    arg_count->set_isarray(false);
1284    arg_count->set_type(GLMessage::DataType::INT);
1285    arg_count->add_intvalue(count);
1286
1287    // call function
1288    nsecs_t start_time = systemTime();
1289    glContext->hooks->gl.glDrawArrays(mode, first, count);
1290    nsecs_t end_time = systemTime();
1291
1292    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1293    glContext->traceGLMessage(&glmsg);
1294}
1295
1296void GLTrace_glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices) {
1297    GLMessage glmsg;
1298    GLTraceContext *glContext = getGLTraceContext();
1299
1300    glmsg.set_function(GLMessage::glDrawElements);
1301
1302    // copy argument mode
1303    GLMessage_DataType *arg_mode = glmsg.add_args();
1304    arg_mode->set_isarray(false);
1305    arg_mode->set_type(GLMessage::DataType::ENUM);
1306    arg_mode->add_intvalue((int)mode);
1307
1308    // copy argument count
1309    GLMessage_DataType *arg_count = glmsg.add_args();
1310    arg_count->set_isarray(false);
1311    arg_count->set_type(GLMessage::DataType::INT);
1312    arg_count->add_intvalue(count);
1313
1314    // copy argument type
1315    GLMessage_DataType *arg_type = glmsg.add_args();
1316    arg_type->set_isarray(false);
1317    arg_type->set_type(GLMessage::DataType::ENUM);
1318    arg_type->add_intvalue((int)type);
1319
1320    // copy argument indices
1321    GLMessage_DataType *arg_indices = glmsg.add_args();
1322    arg_indices->set_isarray(false);
1323    arg_indices->set_type(GLMessage::DataType::INT);
1324    arg_indices->add_intvalue((int)indices);
1325
1326    // call function
1327    nsecs_t start_time = systemTime();
1328    glContext->hooks->gl.glDrawElements(mode, count, type, indices);
1329    nsecs_t end_time = systemTime();
1330
1331    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1332    glContext->traceGLMessage(&glmsg);
1333}
1334
1335void GLTrace_glEnable(GLenum cap) {
1336    GLMessage glmsg;
1337    GLTraceContext *glContext = getGLTraceContext();
1338
1339    glmsg.set_function(GLMessage::glEnable);
1340
1341    // copy argument cap
1342    GLMessage_DataType *arg_cap = glmsg.add_args();
1343    arg_cap->set_isarray(false);
1344    arg_cap->set_type(GLMessage::DataType::ENUM);
1345    arg_cap->add_intvalue((int)cap);
1346
1347    // call function
1348    nsecs_t start_time = systemTime();
1349    glContext->hooks->gl.glEnable(cap);
1350    nsecs_t end_time = systemTime();
1351
1352    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1353    glContext->traceGLMessage(&glmsg);
1354}
1355
1356void GLTrace_glEnableVertexAttribArray(GLuint index) {
1357    GLMessage glmsg;
1358    GLTraceContext *glContext = getGLTraceContext();
1359
1360    glmsg.set_function(GLMessage::glEnableVertexAttribArray);
1361
1362    // copy argument index
1363    GLMessage_DataType *arg_index = glmsg.add_args();
1364    arg_index->set_isarray(false);
1365    arg_index->set_type(GLMessage::DataType::INT);
1366    arg_index->add_intvalue(index);
1367
1368    // call function
1369    nsecs_t start_time = systemTime();
1370    glContext->hooks->gl.glEnableVertexAttribArray(index);
1371    nsecs_t end_time = systemTime();
1372
1373    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1374    glContext->traceGLMessage(&glmsg);
1375}
1376
1377void GLTrace_glFinish(void) {
1378    GLMessage glmsg;
1379    GLTraceContext *glContext = getGLTraceContext();
1380
1381    glmsg.set_function(GLMessage::glFinish);
1382
1383    // call function
1384    nsecs_t start_time = systemTime();
1385    glContext->hooks->gl.glFinish();
1386    nsecs_t end_time = systemTime();
1387
1388    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1389    glContext->traceGLMessage(&glmsg);
1390}
1391
1392void GLTrace_glFlush(void) {
1393    GLMessage glmsg;
1394    GLTraceContext *glContext = getGLTraceContext();
1395
1396    glmsg.set_function(GLMessage::glFlush);
1397
1398    // call function
1399    nsecs_t start_time = systemTime();
1400    glContext->hooks->gl.glFlush();
1401    nsecs_t end_time = systemTime();
1402
1403    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1404    glContext->traceGLMessage(&glmsg);
1405}
1406
1407void GLTrace_glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) {
1408    GLMessage glmsg;
1409    GLTraceContext *glContext = getGLTraceContext();
1410
1411    glmsg.set_function(GLMessage::glFramebufferRenderbuffer);
1412
1413    // copy argument target
1414    GLMessage_DataType *arg_target = glmsg.add_args();
1415    arg_target->set_isarray(false);
1416    arg_target->set_type(GLMessage::DataType::ENUM);
1417    arg_target->add_intvalue((int)target);
1418
1419    // copy argument attachment
1420    GLMessage_DataType *arg_attachment = glmsg.add_args();
1421    arg_attachment->set_isarray(false);
1422    arg_attachment->set_type(GLMessage::DataType::ENUM);
1423    arg_attachment->add_intvalue((int)attachment);
1424
1425    // copy argument renderbuffertarget
1426    GLMessage_DataType *arg_renderbuffertarget = glmsg.add_args();
1427    arg_renderbuffertarget->set_isarray(false);
1428    arg_renderbuffertarget->set_type(GLMessage::DataType::ENUM);
1429    arg_renderbuffertarget->add_intvalue((int)renderbuffertarget);
1430
1431    // copy argument renderbuffer
1432    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
1433    arg_renderbuffer->set_isarray(false);
1434    arg_renderbuffer->set_type(GLMessage::DataType::INT);
1435    arg_renderbuffer->add_intvalue(renderbuffer);
1436
1437    // call function
1438    nsecs_t start_time = systemTime();
1439    glContext->hooks->gl.glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);
1440    nsecs_t end_time = systemTime();
1441
1442    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1443    glContext->traceGLMessage(&glmsg);
1444}
1445
1446void GLTrace_glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) {
1447    GLMessage glmsg;
1448    GLTraceContext *glContext = getGLTraceContext();
1449
1450    glmsg.set_function(GLMessage::glFramebufferTexture2D);
1451
1452    // copy argument target
1453    GLMessage_DataType *arg_target = glmsg.add_args();
1454    arg_target->set_isarray(false);
1455    arg_target->set_type(GLMessage::DataType::ENUM);
1456    arg_target->add_intvalue((int)target);
1457
1458    // copy argument attachment
1459    GLMessage_DataType *arg_attachment = glmsg.add_args();
1460    arg_attachment->set_isarray(false);
1461    arg_attachment->set_type(GLMessage::DataType::ENUM);
1462    arg_attachment->add_intvalue((int)attachment);
1463
1464    // copy argument textarget
1465    GLMessage_DataType *arg_textarget = glmsg.add_args();
1466    arg_textarget->set_isarray(false);
1467    arg_textarget->set_type(GLMessage::DataType::ENUM);
1468    arg_textarget->add_intvalue((int)textarget);
1469
1470    // copy argument texture
1471    GLMessage_DataType *arg_texture = glmsg.add_args();
1472    arg_texture->set_isarray(false);
1473    arg_texture->set_type(GLMessage::DataType::INT);
1474    arg_texture->add_intvalue(texture);
1475
1476    // copy argument level
1477    GLMessage_DataType *arg_level = glmsg.add_args();
1478    arg_level->set_isarray(false);
1479    arg_level->set_type(GLMessage::DataType::INT);
1480    arg_level->add_intvalue(level);
1481
1482    // call function
1483    nsecs_t start_time = systemTime();
1484    glContext->hooks->gl.glFramebufferTexture2D(target, attachment, textarget, texture, level);
1485    nsecs_t end_time = systemTime();
1486
1487    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1488    glContext->traceGLMessage(&glmsg);
1489}
1490
1491void GLTrace_glFrontFace(GLenum mode) {
1492    GLMessage glmsg;
1493    GLTraceContext *glContext = getGLTraceContext();
1494
1495    glmsg.set_function(GLMessage::glFrontFace);
1496
1497    // copy argument mode
1498    GLMessage_DataType *arg_mode = glmsg.add_args();
1499    arg_mode->set_isarray(false);
1500    arg_mode->set_type(GLMessage::DataType::ENUM);
1501    arg_mode->add_intvalue((int)mode);
1502
1503    // call function
1504    nsecs_t start_time = systemTime();
1505    glContext->hooks->gl.glFrontFace(mode);
1506    nsecs_t end_time = systemTime();
1507
1508    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1509    glContext->traceGLMessage(&glmsg);
1510}
1511
1512void GLTrace_glGenBuffers(GLsizei n, GLuint* buffers) {
1513    GLMessage glmsg;
1514    GLTraceContext *glContext = getGLTraceContext();
1515
1516    glmsg.set_function(GLMessage::glGenBuffers);
1517
1518    // copy argument n
1519    GLMessage_DataType *arg_n = glmsg.add_args();
1520    arg_n->set_isarray(false);
1521    arg_n->set_type(GLMessage::DataType::INT);
1522    arg_n->add_intvalue(n);
1523
1524    // copy argument buffers
1525    GLMessage_DataType *arg_buffers = glmsg.add_args();
1526    arg_buffers->set_isarray(false);
1527    arg_buffers->set_type(GLMessage::DataType::INT);
1528    arg_buffers->add_intvalue((int)buffers);
1529
1530    // call function
1531    nsecs_t start_time = systemTime();
1532    glContext->hooks->gl.glGenBuffers(n, buffers);
1533    nsecs_t end_time = systemTime();
1534
1535    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1536    glContext->traceGLMessage(&glmsg);
1537}
1538
1539void GLTrace_glGenerateMipmap(GLenum target) {
1540    GLMessage glmsg;
1541    GLTraceContext *glContext = getGLTraceContext();
1542
1543    glmsg.set_function(GLMessage::glGenerateMipmap);
1544
1545    // copy argument target
1546    GLMessage_DataType *arg_target = glmsg.add_args();
1547    arg_target->set_isarray(false);
1548    arg_target->set_type(GLMessage::DataType::ENUM);
1549    arg_target->add_intvalue((int)target);
1550
1551    // call function
1552    nsecs_t start_time = systemTime();
1553    glContext->hooks->gl.glGenerateMipmap(target);
1554    nsecs_t end_time = systemTime();
1555
1556    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1557    glContext->traceGLMessage(&glmsg);
1558}
1559
1560void GLTrace_glGenFramebuffers(GLsizei n, GLuint* framebuffers) {
1561    GLMessage glmsg;
1562    GLTraceContext *glContext = getGLTraceContext();
1563
1564    glmsg.set_function(GLMessage::glGenFramebuffers);
1565
1566    // copy argument n
1567    GLMessage_DataType *arg_n = glmsg.add_args();
1568    arg_n->set_isarray(false);
1569    arg_n->set_type(GLMessage::DataType::INT);
1570    arg_n->add_intvalue(n);
1571
1572    // copy argument framebuffers
1573    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
1574    arg_framebuffers->set_isarray(false);
1575    arg_framebuffers->set_type(GLMessage::DataType::INT);
1576    arg_framebuffers->add_intvalue((int)framebuffers);
1577
1578    // call function
1579    nsecs_t start_time = systemTime();
1580    glContext->hooks->gl.glGenFramebuffers(n, framebuffers);
1581    nsecs_t end_time = systemTime();
1582
1583    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1584    glContext->traceGLMessage(&glmsg);
1585}
1586
1587void GLTrace_glGenRenderbuffers(GLsizei n, GLuint* renderbuffers) {
1588    GLMessage glmsg;
1589    GLTraceContext *glContext = getGLTraceContext();
1590
1591    glmsg.set_function(GLMessage::glGenRenderbuffers);
1592
1593    // copy argument n
1594    GLMessage_DataType *arg_n = glmsg.add_args();
1595    arg_n->set_isarray(false);
1596    arg_n->set_type(GLMessage::DataType::INT);
1597    arg_n->add_intvalue(n);
1598
1599    // copy argument renderbuffers
1600    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
1601    arg_renderbuffers->set_isarray(false);
1602    arg_renderbuffers->set_type(GLMessage::DataType::INT);
1603    arg_renderbuffers->add_intvalue((int)renderbuffers);
1604
1605    // call function
1606    nsecs_t start_time = systemTime();
1607    glContext->hooks->gl.glGenRenderbuffers(n, renderbuffers);
1608    nsecs_t end_time = systemTime();
1609
1610    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1611    glContext->traceGLMessage(&glmsg);
1612}
1613
1614void GLTrace_glGenTextures(GLsizei n, GLuint* textures) {
1615    GLMessage glmsg;
1616    GLTraceContext *glContext = getGLTraceContext();
1617
1618    glmsg.set_function(GLMessage::glGenTextures);
1619
1620    // copy argument n
1621    GLMessage_DataType *arg_n = glmsg.add_args();
1622    arg_n->set_isarray(false);
1623    arg_n->set_type(GLMessage::DataType::INT);
1624    arg_n->add_intvalue(n);
1625
1626    // copy argument textures
1627    GLMessage_DataType *arg_textures = glmsg.add_args();
1628    arg_textures->set_isarray(false);
1629    arg_textures->set_type(GLMessage::DataType::INT);
1630    arg_textures->add_intvalue((int)textures);
1631
1632    // call function
1633    nsecs_t start_time = systemTime();
1634    glContext->hooks->gl.glGenTextures(n, textures);
1635    nsecs_t end_time = systemTime();
1636
1637    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1638    glContext->traceGLMessage(&glmsg);
1639}
1640
1641void GLTrace_glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name) {
1642    GLMessage glmsg;
1643    GLTraceContext *glContext = getGLTraceContext();
1644
1645    glmsg.set_function(GLMessage::glGetActiveAttrib);
1646
1647    // copy argument program
1648    GLMessage_DataType *arg_program = glmsg.add_args();
1649    arg_program->set_isarray(false);
1650    arg_program->set_type(GLMessage::DataType::INT);
1651    arg_program->add_intvalue(program);
1652
1653    // copy argument index
1654    GLMessage_DataType *arg_index = glmsg.add_args();
1655    arg_index->set_isarray(false);
1656    arg_index->set_type(GLMessage::DataType::INT);
1657    arg_index->add_intvalue(index);
1658
1659    // copy argument bufsize
1660    GLMessage_DataType *arg_bufsize = glmsg.add_args();
1661    arg_bufsize->set_isarray(false);
1662    arg_bufsize->set_type(GLMessage::DataType::INT);
1663    arg_bufsize->add_intvalue(bufsize);
1664
1665    // copy argument length
1666    GLMessage_DataType *arg_length = glmsg.add_args();
1667    arg_length->set_isarray(false);
1668    arg_length->set_type(GLMessage::DataType::INT);
1669    arg_length->add_intvalue((int)length);
1670
1671    // copy argument size
1672    GLMessage_DataType *arg_size = glmsg.add_args();
1673    arg_size->set_isarray(false);
1674    arg_size->set_type(GLMessage::DataType::INT);
1675    arg_size->add_intvalue((int)size);
1676
1677    // copy argument type
1678    GLMessage_DataType *arg_type = glmsg.add_args();
1679    arg_type->set_isarray(false);
1680    arg_type->set_type(GLMessage::DataType::INT);
1681    arg_type->add_intvalue((int)type);
1682
1683    // copy argument name
1684    GLMessage_DataType *arg_name = glmsg.add_args();
1685    arg_name->set_isarray(false);
1686    arg_name->set_type(GLMessage::DataType::INT);
1687    arg_name->add_intvalue((int)name);
1688
1689    // call function
1690    nsecs_t start_time = systemTime();
1691    glContext->hooks->gl.glGetActiveAttrib(program, index, bufsize, length, size, type, name);
1692    nsecs_t end_time = systemTime();
1693
1694    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1695    glContext->traceGLMessage(&glmsg);
1696}
1697
1698void GLTrace_glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name) {
1699    GLMessage glmsg;
1700    GLTraceContext *glContext = getGLTraceContext();
1701
1702    glmsg.set_function(GLMessage::glGetActiveUniform);
1703
1704    // copy argument program
1705    GLMessage_DataType *arg_program = glmsg.add_args();
1706    arg_program->set_isarray(false);
1707    arg_program->set_type(GLMessage::DataType::INT);
1708    arg_program->add_intvalue(program);
1709
1710    // copy argument index
1711    GLMessage_DataType *arg_index = glmsg.add_args();
1712    arg_index->set_isarray(false);
1713    arg_index->set_type(GLMessage::DataType::INT);
1714    arg_index->add_intvalue(index);
1715
1716    // copy argument bufsize
1717    GLMessage_DataType *arg_bufsize = glmsg.add_args();
1718    arg_bufsize->set_isarray(false);
1719    arg_bufsize->set_type(GLMessage::DataType::INT);
1720    arg_bufsize->add_intvalue(bufsize);
1721
1722    // copy argument length
1723    GLMessage_DataType *arg_length = glmsg.add_args();
1724    arg_length->set_isarray(false);
1725    arg_length->set_type(GLMessage::DataType::INT);
1726    arg_length->add_intvalue((int)length);
1727
1728    // copy argument size
1729    GLMessage_DataType *arg_size = glmsg.add_args();
1730    arg_size->set_isarray(false);
1731    arg_size->set_type(GLMessage::DataType::INT);
1732    arg_size->add_intvalue((int)size);
1733
1734    // copy argument type
1735    GLMessage_DataType *arg_type = glmsg.add_args();
1736    arg_type->set_isarray(false);
1737    arg_type->set_type(GLMessage::DataType::INT);
1738    arg_type->add_intvalue((int)type);
1739
1740    // copy argument name
1741    GLMessage_DataType *arg_name = glmsg.add_args();
1742    arg_name->set_isarray(false);
1743    arg_name->set_type(GLMessage::DataType::INT);
1744    arg_name->add_intvalue((int)name);
1745
1746    // call function
1747    nsecs_t start_time = systemTime();
1748    glContext->hooks->gl.glGetActiveUniform(program, index, bufsize, length, size, type, name);
1749    nsecs_t end_time = systemTime();
1750
1751    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1752    glContext->traceGLMessage(&glmsg);
1753}
1754
1755void GLTrace_glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders) {
1756    GLMessage glmsg;
1757    GLTraceContext *glContext = getGLTraceContext();
1758
1759    glmsg.set_function(GLMessage::glGetAttachedShaders);
1760
1761    // copy argument program
1762    GLMessage_DataType *arg_program = glmsg.add_args();
1763    arg_program->set_isarray(false);
1764    arg_program->set_type(GLMessage::DataType::INT);
1765    arg_program->add_intvalue(program);
1766
1767    // copy argument maxcount
1768    GLMessage_DataType *arg_maxcount = glmsg.add_args();
1769    arg_maxcount->set_isarray(false);
1770    arg_maxcount->set_type(GLMessage::DataType::INT);
1771    arg_maxcount->add_intvalue(maxcount);
1772
1773    // copy argument count
1774    GLMessage_DataType *arg_count = glmsg.add_args();
1775    arg_count->set_isarray(false);
1776    arg_count->set_type(GLMessage::DataType::INT);
1777    arg_count->add_intvalue((int)count);
1778
1779    // copy argument shaders
1780    GLMessage_DataType *arg_shaders = glmsg.add_args();
1781    arg_shaders->set_isarray(false);
1782    arg_shaders->set_type(GLMessage::DataType::INT);
1783    arg_shaders->add_intvalue((int)shaders);
1784
1785    // call function
1786    nsecs_t start_time = systemTime();
1787    glContext->hooks->gl.glGetAttachedShaders(program, maxcount, count, shaders);
1788    nsecs_t end_time = systemTime();
1789
1790    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1791    glContext->traceGLMessage(&glmsg);
1792}
1793
1794int GLTrace_glGetAttribLocation(GLuint program, const GLchar* name) {
1795    GLMessage glmsg;
1796    GLTraceContext *glContext = getGLTraceContext();
1797
1798    glmsg.set_function(GLMessage::glGetAttribLocation);
1799
1800    // copy argument program
1801    GLMessage_DataType *arg_program = glmsg.add_args();
1802    arg_program->set_isarray(false);
1803    arg_program->set_type(GLMessage::DataType::INT);
1804    arg_program->add_intvalue(program);
1805
1806    // copy argument name
1807    GLMessage_DataType *arg_name = glmsg.add_args();
1808    arg_name->set_isarray(false);
1809    arg_name->set_type(GLMessage::DataType::INT);
1810    arg_name->add_intvalue((int)name);
1811
1812    // call function
1813    nsecs_t start_time = systemTime();
1814    int retValue = glContext->hooks->gl.glGetAttribLocation(program, name);
1815    nsecs_t end_time = systemTime();
1816
1817    // set return value
1818    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
1819    rt->set_isarray(false);
1820    rt->set_type(GLMessage::DataType::INT);
1821    rt->add_intvalue(retValue);
1822
1823    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1824    glContext->traceGLMessage(&glmsg);
1825
1826    return retValue;
1827}
1828
1829void GLTrace_glGetBooleanv(GLenum pname, GLboolean* params) {
1830    GLMessage glmsg;
1831    GLTraceContext *glContext = getGLTraceContext();
1832
1833    glmsg.set_function(GLMessage::glGetBooleanv);
1834
1835    // copy argument pname
1836    GLMessage_DataType *arg_pname = glmsg.add_args();
1837    arg_pname->set_isarray(false);
1838    arg_pname->set_type(GLMessage::DataType::ENUM);
1839    arg_pname->add_intvalue((int)pname);
1840
1841    // copy argument params
1842    GLMessage_DataType *arg_params = glmsg.add_args();
1843    arg_params->set_isarray(false);
1844    arg_params->set_type(GLMessage::DataType::INT);
1845    arg_params->add_intvalue((int)params);
1846
1847    // call function
1848    nsecs_t start_time = systemTime();
1849    glContext->hooks->gl.glGetBooleanv(pname, params);
1850    nsecs_t end_time = systemTime();
1851
1852    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1853    glContext->traceGLMessage(&glmsg);
1854}
1855
1856void GLTrace_glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params) {
1857    GLMessage glmsg;
1858    GLTraceContext *glContext = getGLTraceContext();
1859
1860    glmsg.set_function(GLMessage::glGetBufferParameteriv);
1861
1862    // copy argument target
1863    GLMessage_DataType *arg_target = glmsg.add_args();
1864    arg_target->set_isarray(false);
1865    arg_target->set_type(GLMessage::DataType::ENUM);
1866    arg_target->add_intvalue((int)target);
1867
1868    // copy argument pname
1869    GLMessage_DataType *arg_pname = glmsg.add_args();
1870    arg_pname->set_isarray(false);
1871    arg_pname->set_type(GLMessage::DataType::ENUM);
1872    arg_pname->add_intvalue((int)pname);
1873
1874    // copy argument params
1875    GLMessage_DataType *arg_params = glmsg.add_args();
1876    arg_params->set_isarray(false);
1877    arg_params->set_type(GLMessage::DataType::INT);
1878    arg_params->add_intvalue((int)params);
1879
1880    // call function
1881    nsecs_t start_time = systemTime();
1882    glContext->hooks->gl.glGetBufferParameteriv(target, pname, params);
1883    nsecs_t end_time = systemTime();
1884
1885    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1886    glContext->traceGLMessage(&glmsg);
1887}
1888
1889GLenum GLTrace_glGetError(void) {
1890    GLMessage glmsg;
1891    GLTraceContext *glContext = getGLTraceContext();
1892
1893    glmsg.set_function(GLMessage::glGetError);
1894
1895    // call function
1896    nsecs_t start_time = systemTime();
1897    GLenum retValue = glContext->hooks->gl.glGetError();
1898    nsecs_t end_time = systemTime();
1899
1900    // set return value
1901    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
1902    rt->set_isarray(false);
1903    rt->set_type(GLMessage::DataType::ENUM);
1904    rt->add_intvalue((int)retValue);
1905
1906    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1907    glContext->traceGLMessage(&glmsg);
1908
1909    return retValue;
1910}
1911
1912void GLTrace_glGetFloatv(GLenum pname, GLfloat* params) {
1913    GLMessage glmsg;
1914    GLTraceContext *glContext = getGLTraceContext();
1915
1916    glmsg.set_function(GLMessage::glGetFloatv);
1917
1918    // copy argument pname
1919    GLMessage_DataType *arg_pname = glmsg.add_args();
1920    arg_pname->set_isarray(false);
1921    arg_pname->set_type(GLMessage::DataType::ENUM);
1922    arg_pname->add_intvalue((int)pname);
1923
1924    // copy argument params
1925    GLMessage_DataType *arg_params = glmsg.add_args();
1926    arg_params->set_isarray(false);
1927    arg_params->set_type(GLMessage::DataType::INT);
1928    arg_params->add_intvalue((int)params);
1929
1930    // call function
1931    nsecs_t start_time = systemTime();
1932    glContext->hooks->gl.glGetFloatv(pname, params);
1933    nsecs_t end_time = systemTime();
1934
1935    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1936    glContext->traceGLMessage(&glmsg);
1937}
1938
1939void GLTrace_glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params) {
1940    GLMessage glmsg;
1941    GLTraceContext *glContext = getGLTraceContext();
1942
1943    glmsg.set_function(GLMessage::glGetFramebufferAttachmentParameteriv);
1944
1945    // copy argument target
1946    GLMessage_DataType *arg_target = glmsg.add_args();
1947    arg_target->set_isarray(false);
1948    arg_target->set_type(GLMessage::DataType::ENUM);
1949    arg_target->add_intvalue((int)target);
1950
1951    // copy argument attachment
1952    GLMessage_DataType *arg_attachment = glmsg.add_args();
1953    arg_attachment->set_isarray(false);
1954    arg_attachment->set_type(GLMessage::DataType::ENUM);
1955    arg_attachment->add_intvalue((int)attachment);
1956
1957    // copy argument pname
1958    GLMessage_DataType *arg_pname = glmsg.add_args();
1959    arg_pname->set_isarray(false);
1960    arg_pname->set_type(GLMessage::DataType::ENUM);
1961    arg_pname->add_intvalue((int)pname);
1962
1963    // copy argument params
1964    GLMessage_DataType *arg_params = glmsg.add_args();
1965    arg_params->set_isarray(false);
1966    arg_params->set_type(GLMessage::DataType::INT);
1967    arg_params->add_intvalue((int)params);
1968
1969    // call function
1970    nsecs_t start_time = systemTime();
1971    glContext->hooks->gl.glGetFramebufferAttachmentParameteriv(target, attachment, pname, params);
1972    nsecs_t end_time = systemTime();
1973
1974    fixupGLMessage(glContext, start_time, end_time, &glmsg);
1975    glContext->traceGLMessage(&glmsg);
1976}
1977
1978void GLTrace_glGetIntegerv(GLenum pname, GLint* params) {
1979    GLMessage glmsg;
1980    GLTraceContext *glContext = getGLTraceContext();
1981
1982    glmsg.set_function(GLMessage::glGetIntegerv);
1983
1984    // copy argument pname
1985    GLMessage_DataType *arg_pname = glmsg.add_args();
1986    arg_pname->set_isarray(false);
1987    arg_pname->set_type(GLMessage::DataType::ENUM);
1988    arg_pname->add_intvalue((int)pname);
1989
1990    // copy argument params
1991    GLMessage_DataType *arg_params = glmsg.add_args();
1992    arg_params->set_isarray(false);
1993    arg_params->set_type(GLMessage::DataType::INT);
1994    arg_params->add_intvalue((int)params);
1995
1996    // call function
1997    nsecs_t start_time = systemTime();
1998    glContext->hooks->gl.glGetIntegerv(pname, params);
1999    nsecs_t end_time = systemTime();
2000
2001    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2002    glContext->traceGLMessage(&glmsg);
2003}
2004
2005void GLTrace_glGetProgramiv(GLuint program, GLenum pname, GLint* params) {
2006    GLMessage glmsg;
2007    GLTraceContext *glContext = getGLTraceContext();
2008
2009    glmsg.set_function(GLMessage::glGetProgramiv);
2010
2011    // copy argument program
2012    GLMessage_DataType *arg_program = glmsg.add_args();
2013    arg_program->set_isarray(false);
2014    arg_program->set_type(GLMessage::DataType::INT);
2015    arg_program->add_intvalue(program);
2016
2017    // copy argument pname
2018    GLMessage_DataType *arg_pname = glmsg.add_args();
2019    arg_pname->set_isarray(false);
2020    arg_pname->set_type(GLMessage::DataType::ENUM);
2021    arg_pname->add_intvalue((int)pname);
2022
2023    // copy argument params
2024    GLMessage_DataType *arg_params = glmsg.add_args();
2025    arg_params->set_isarray(false);
2026    arg_params->set_type(GLMessage::DataType::INT);
2027    arg_params->add_intvalue((int)params);
2028
2029    // call function
2030    nsecs_t start_time = systemTime();
2031    glContext->hooks->gl.glGetProgramiv(program, pname, params);
2032    nsecs_t end_time = systemTime();
2033
2034    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2035    glContext->traceGLMessage(&glmsg);
2036}
2037
2038void GLTrace_glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog) {
2039    GLMessage glmsg;
2040    GLTraceContext *glContext = getGLTraceContext();
2041
2042    glmsg.set_function(GLMessage::glGetProgramInfoLog);
2043
2044    // copy argument program
2045    GLMessage_DataType *arg_program = glmsg.add_args();
2046    arg_program->set_isarray(false);
2047    arg_program->set_type(GLMessage::DataType::INT);
2048    arg_program->add_intvalue(program);
2049
2050    // copy argument bufsize
2051    GLMessage_DataType *arg_bufsize = glmsg.add_args();
2052    arg_bufsize->set_isarray(false);
2053    arg_bufsize->set_type(GLMessage::DataType::INT);
2054    arg_bufsize->add_intvalue(bufsize);
2055
2056    // copy argument length
2057    GLMessage_DataType *arg_length = glmsg.add_args();
2058    arg_length->set_isarray(false);
2059    arg_length->set_type(GLMessage::DataType::INT);
2060    arg_length->add_intvalue((int)length);
2061
2062    // copy argument infolog
2063    GLMessage_DataType *arg_infolog = glmsg.add_args();
2064    arg_infolog->set_isarray(false);
2065    arg_infolog->set_type(GLMessage::DataType::INT);
2066    arg_infolog->add_intvalue((int)infolog);
2067
2068    // call function
2069    nsecs_t start_time = systemTime();
2070    glContext->hooks->gl.glGetProgramInfoLog(program, bufsize, length, infolog);
2071    nsecs_t end_time = systemTime();
2072
2073    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2074    glContext->traceGLMessage(&glmsg);
2075}
2076
2077void GLTrace_glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params) {
2078    GLMessage glmsg;
2079    GLTraceContext *glContext = getGLTraceContext();
2080
2081    glmsg.set_function(GLMessage::glGetRenderbufferParameteriv);
2082
2083    // copy argument target
2084    GLMessage_DataType *arg_target = glmsg.add_args();
2085    arg_target->set_isarray(false);
2086    arg_target->set_type(GLMessage::DataType::ENUM);
2087    arg_target->add_intvalue((int)target);
2088
2089    // copy argument pname
2090    GLMessage_DataType *arg_pname = glmsg.add_args();
2091    arg_pname->set_isarray(false);
2092    arg_pname->set_type(GLMessage::DataType::ENUM);
2093    arg_pname->add_intvalue((int)pname);
2094
2095    // copy argument params
2096    GLMessage_DataType *arg_params = glmsg.add_args();
2097    arg_params->set_isarray(false);
2098    arg_params->set_type(GLMessage::DataType::INT);
2099    arg_params->add_intvalue((int)params);
2100
2101    // call function
2102    nsecs_t start_time = systemTime();
2103    glContext->hooks->gl.glGetRenderbufferParameteriv(target, pname, params);
2104    nsecs_t end_time = systemTime();
2105
2106    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2107    glContext->traceGLMessage(&glmsg);
2108}
2109
2110void GLTrace_glGetShaderiv(GLuint shader, GLenum pname, GLint* params) {
2111    GLMessage glmsg;
2112    GLTraceContext *glContext = getGLTraceContext();
2113
2114    glmsg.set_function(GLMessage::glGetShaderiv);
2115
2116    // copy argument shader
2117    GLMessage_DataType *arg_shader = glmsg.add_args();
2118    arg_shader->set_isarray(false);
2119    arg_shader->set_type(GLMessage::DataType::INT);
2120    arg_shader->add_intvalue(shader);
2121
2122    // copy argument pname
2123    GLMessage_DataType *arg_pname = glmsg.add_args();
2124    arg_pname->set_isarray(false);
2125    arg_pname->set_type(GLMessage::DataType::ENUM);
2126    arg_pname->add_intvalue((int)pname);
2127
2128    // copy argument params
2129    GLMessage_DataType *arg_params = glmsg.add_args();
2130    arg_params->set_isarray(false);
2131    arg_params->set_type(GLMessage::DataType::INT);
2132    arg_params->add_intvalue((int)params);
2133
2134    // call function
2135    nsecs_t start_time = systemTime();
2136    glContext->hooks->gl.glGetShaderiv(shader, pname, params);
2137    nsecs_t end_time = systemTime();
2138
2139    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2140    glContext->traceGLMessage(&glmsg);
2141}
2142
2143void GLTrace_glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog) {
2144    GLMessage glmsg;
2145    GLTraceContext *glContext = getGLTraceContext();
2146
2147    glmsg.set_function(GLMessage::glGetShaderInfoLog);
2148
2149    // copy argument shader
2150    GLMessage_DataType *arg_shader = glmsg.add_args();
2151    arg_shader->set_isarray(false);
2152    arg_shader->set_type(GLMessage::DataType::INT);
2153    arg_shader->add_intvalue(shader);
2154
2155    // copy argument bufsize
2156    GLMessage_DataType *arg_bufsize = glmsg.add_args();
2157    arg_bufsize->set_isarray(false);
2158    arg_bufsize->set_type(GLMessage::DataType::INT);
2159    arg_bufsize->add_intvalue(bufsize);
2160
2161    // copy argument length
2162    GLMessage_DataType *arg_length = glmsg.add_args();
2163    arg_length->set_isarray(false);
2164    arg_length->set_type(GLMessage::DataType::INT);
2165    arg_length->add_intvalue((int)length);
2166
2167    // copy argument infolog
2168    GLMessage_DataType *arg_infolog = glmsg.add_args();
2169    arg_infolog->set_isarray(false);
2170    arg_infolog->set_type(GLMessage::DataType::INT);
2171    arg_infolog->add_intvalue((int)infolog);
2172
2173    // call function
2174    nsecs_t start_time = systemTime();
2175    glContext->hooks->gl.glGetShaderInfoLog(shader, bufsize, length, infolog);
2176    nsecs_t end_time = systemTime();
2177
2178    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2179    glContext->traceGLMessage(&glmsg);
2180}
2181
2182void GLTrace_glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) {
2183    GLMessage glmsg;
2184    GLTraceContext *glContext = getGLTraceContext();
2185
2186    glmsg.set_function(GLMessage::glGetShaderPrecisionFormat);
2187
2188    // copy argument shadertype
2189    GLMessage_DataType *arg_shadertype = glmsg.add_args();
2190    arg_shadertype->set_isarray(false);
2191    arg_shadertype->set_type(GLMessage::DataType::ENUM);
2192    arg_shadertype->add_intvalue((int)shadertype);
2193
2194    // copy argument precisiontype
2195    GLMessage_DataType *arg_precisiontype = glmsg.add_args();
2196    arg_precisiontype->set_isarray(false);
2197    arg_precisiontype->set_type(GLMessage::DataType::ENUM);
2198    arg_precisiontype->add_intvalue((int)precisiontype);
2199
2200    // copy argument range
2201    GLMessage_DataType *arg_range = glmsg.add_args();
2202    arg_range->set_isarray(false);
2203    arg_range->set_type(GLMessage::DataType::INT);
2204    arg_range->add_intvalue((int)range);
2205
2206    // copy argument precision
2207    GLMessage_DataType *arg_precision = glmsg.add_args();
2208    arg_precision->set_isarray(false);
2209    arg_precision->set_type(GLMessage::DataType::INT);
2210    arg_precision->add_intvalue((int)precision);
2211
2212    // call function
2213    nsecs_t start_time = systemTime();
2214    glContext->hooks->gl.glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision);
2215    nsecs_t end_time = systemTime();
2216
2217    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2218    glContext->traceGLMessage(&glmsg);
2219}
2220
2221void GLTrace_glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source) {
2222    GLMessage glmsg;
2223    GLTraceContext *glContext = getGLTraceContext();
2224
2225    glmsg.set_function(GLMessage::glGetShaderSource);
2226
2227    // copy argument shader
2228    GLMessage_DataType *arg_shader = glmsg.add_args();
2229    arg_shader->set_isarray(false);
2230    arg_shader->set_type(GLMessage::DataType::INT);
2231    arg_shader->add_intvalue(shader);
2232
2233    // copy argument bufsize
2234    GLMessage_DataType *arg_bufsize = glmsg.add_args();
2235    arg_bufsize->set_isarray(false);
2236    arg_bufsize->set_type(GLMessage::DataType::INT);
2237    arg_bufsize->add_intvalue(bufsize);
2238
2239    // copy argument length
2240    GLMessage_DataType *arg_length = glmsg.add_args();
2241    arg_length->set_isarray(false);
2242    arg_length->set_type(GLMessage::DataType::INT);
2243    arg_length->add_intvalue((int)length);
2244
2245    // copy argument source
2246    GLMessage_DataType *arg_source = glmsg.add_args();
2247    arg_source->set_isarray(false);
2248    arg_source->set_type(GLMessage::DataType::INT);
2249    arg_source->add_intvalue((int)source);
2250
2251    // call function
2252    nsecs_t start_time = systemTime();
2253    glContext->hooks->gl.glGetShaderSource(shader, bufsize, length, source);
2254    nsecs_t end_time = systemTime();
2255
2256    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2257    glContext->traceGLMessage(&glmsg);
2258}
2259
2260const GLubyte* GLTrace_glGetString(GLenum name) {
2261    GLMessage glmsg;
2262    GLTraceContext *glContext = getGLTraceContext();
2263
2264    glmsg.set_function(GLMessage::glGetString);
2265
2266    // copy argument name
2267    GLMessage_DataType *arg_name = glmsg.add_args();
2268    arg_name->set_isarray(false);
2269    arg_name->set_type(GLMessage::DataType::ENUM);
2270    arg_name->add_intvalue((int)name);
2271
2272    // call function
2273    nsecs_t start_time = systemTime();
2274    const GLubyte* retValue = glContext->hooks->gl.glGetString(name);
2275    nsecs_t end_time = systemTime();
2276
2277    // set return value
2278    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
2279    rt->set_isarray(false);
2280    rt->set_type(GLMessage::DataType::INT);
2281    rt->add_intvalue((int)retValue);
2282
2283    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2284    glContext->traceGLMessage(&glmsg);
2285
2286    return retValue;
2287}
2288
2289void GLTrace_glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params) {
2290    GLMessage glmsg;
2291    GLTraceContext *glContext = getGLTraceContext();
2292
2293    glmsg.set_function(GLMessage::glGetTexParameterfv);
2294
2295    // copy argument target
2296    GLMessage_DataType *arg_target = glmsg.add_args();
2297    arg_target->set_isarray(false);
2298    arg_target->set_type(GLMessage::DataType::ENUM);
2299    arg_target->add_intvalue((int)target);
2300
2301    // copy argument pname
2302    GLMessage_DataType *arg_pname = glmsg.add_args();
2303    arg_pname->set_isarray(false);
2304    arg_pname->set_type(GLMessage::DataType::ENUM);
2305    arg_pname->add_intvalue((int)pname);
2306
2307    // copy argument params
2308    GLMessage_DataType *arg_params = glmsg.add_args();
2309    arg_params->set_isarray(false);
2310    arg_params->set_type(GLMessage::DataType::INT);
2311    arg_params->add_intvalue((int)params);
2312
2313    // call function
2314    nsecs_t start_time = systemTime();
2315    glContext->hooks->gl.glGetTexParameterfv(target, pname, params);
2316    nsecs_t end_time = systemTime();
2317
2318    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2319    glContext->traceGLMessage(&glmsg);
2320}
2321
2322void GLTrace_glGetTexParameteriv(GLenum target, GLenum pname, GLint* params) {
2323    GLMessage glmsg;
2324    GLTraceContext *glContext = getGLTraceContext();
2325
2326    glmsg.set_function(GLMessage::glGetTexParameteriv);
2327
2328    // copy argument target
2329    GLMessage_DataType *arg_target = glmsg.add_args();
2330    arg_target->set_isarray(false);
2331    arg_target->set_type(GLMessage::DataType::ENUM);
2332    arg_target->add_intvalue((int)target);
2333
2334    // copy argument pname
2335    GLMessage_DataType *arg_pname = glmsg.add_args();
2336    arg_pname->set_isarray(false);
2337    arg_pname->set_type(GLMessage::DataType::ENUM);
2338    arg_pname->add_intvalue((int)pname);
2339
2340    // copy argument params
2341    GLMessage_DataType *arg_params = glmsg.add_args();
2342    arg_params->set_isarray(false);
2343    arg_params->set_type(GLMessage::DataType::INT);
2344    arg_params->add_intvalue((int)params);
2345
2346    // call function
2347    nsecs_t start_time = systemTime();
2348    glContext->hooks->gl.glGetTexParameteriv(target, pname, params);
2349    nsecs_t end_time = systemTime();
2350
2351    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2352    glContext->traceGLMessage(&glmsg);
2353}
2354
2355void GLTrace_glGetUniformfv(GLuint program, GLint location, GLfloat* params) {
2356    GLMessage glmsg;
2357    GLTraceContext *glContext = getGLTraceContext();
2358
2359    glmsg.set_function(GLMessage::glGetUniformfv);
2360
2361    // copy argument program
2362    GLMessage_DataType *arg_program = glmsg.add_args();
2363    arg_program->set_isarray(false);
2364    arg_program->set_type(GLMessage::DataType::INT);
2365    arg_program->add_intvalue(program);
2366
2367    // copy argument location
2368    GLMessage_DataType *arg_location = glmsg.add_args();
2369    arg_location->set_isarray(false);
2370    arg_location->set_type(GLMessage::DataType::INT);
2371    arg_location->add_intvalue(location);
2372
2373    // copy argument params
2374    GLMessage_DataType *arg_params = glmsg.add_args();
2375    arg_params->set_isarray(false);
2376    arg_params->set_type(GLMessage::DataType::INT);
2377    arg_params->add_intvalue((int)params);
2378
2379    // call function
2380    nsecs_t start_time = systemTime();
2381    glContext->hooks->gl.glGetUniformfv(program, location, params);
2382    nsecs_t end_time = systemTime();
2383
2384    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2385    glContext->traceGLMessage(&glmsg);
2386}
2387
2388void GLTrace_glGetUniformiv(GLuint program, GLint location, GLint* params) {
2389    GLMessage glmsg;
2390    GLTraceContext *glContext = getGLTraceContext();
2391
2392    glmsg.set_function(GLMessage::glGetUniformiv);
2393
2394    // copy argument program
2395    GLMessage_DataType *arg_program = glmsg.add_args();
2396    arg_program->set_isarray(false);
2397    arg_program->set_type(GLMessage::DataType::INT);
2398    arg_program->add_intvalue(program);
2399
2400    // copy argument location
2401    GLMessage_DataType *arg_location = glmsg.add_args();
2402    arg_location->set_isarray(false);
2403    arg_location->set_type(GLMessage::DataType::INT);
2404    arg_location->add_intvalue(location);
2405
2406    // copy argument params
2407    GLMessage_DataType *arg_params = glmsg.add_args();
2408    arg_params->set_isarray(false);
2409    arg_params->set_type(GLMessage::DataType::INT);
2410    arg_params->add_intvalue((int)params);
2411
2412    // call function
2413    nsecs_t start_time = systemTime();
2414    glContext->hooks->gl.glGetUniformiv(program, location, params);
2415    nsecs_t end_time = systemTime();
2416
2417    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2418    glContext->traceGLMessage(&glmsg);
2419}
2420
2421int GLTrace_glGetUniformLocation(GLuint program, const GLchar* name) {
2422    GLMessage glmsg;
2423    GLTraceContext *glContext = getGLTraceContext();
2424
2425    glmsg.set_function(GLMessage::glGetUniformLocation);
2426
2427    // copy argument program
2428    GLMessage_DataType *arg_program = glmsg.add_args();
2429    arg_program->set_isarray(false);
2430    arg_program->set_type(GLMessage::DataType::INT);
2431    arg_program->add_intvalue(program);
2432
2433    // copy argument name
2434    GLMessage_DataType *arg_name = glmsg.add_args();
2435    arg_name->set_isarray(false);
2436    arg_name->set_type(GLMessage::DataType::INT);
2437    arg_name->add_intvalue((int)name);
2438
2439    // call function
2440    nsecs_t start_time = systemTime();
2441    int retValue = glContext->hooks->gl.glGetUniformLocation(program, name);
2442    nsecs_t end_time = systemTime();
2443
2444    // set return value
2445    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
2446    rt->set_isarray(false);
2447    rt->set_type(GLMessage::DataType::INT);
2448    rt->add_intvalue(retValue);
2449
2450    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2451    glContext->traceGLMessage(&glmsg);
2452
2453    return retValue;
2454}
2455
2456void GLTrace_glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params) {
2457    GLMessage glmsg;
2458    GLTraceContext *glContext = getGLTraceContext();
2459
2460    glmsg.set_function(GLMessage::glGetVertexAttribfv);
2461
2462    // copy argument index
2463    GLMessage_DataType *arg_index = glmsg.add_args();
2464    arg_index->set_isarray(false);
2465    arg_index->set_type(GLMessage::DataType::INT);
2466    arg_index->add_intvalue(index);
2467
2468    // copy argument pname
2469    GLMessage_DataType *arg_pname = glmsg.add_args();
2470    arg_pname->set_isarray(false);
2471    arg_pname->set_type(GLMessage::DataType::ENUM);
2472    arg_pname->add_intvalue((int)pname);
2473
2474    // copy argument params
2475    GLMessage_DataType *arg_params = glmsg.add_args();
2476    arg_params->set_isarray(false);
2477    arg_params->set_type(GLMessage::DataType::INT);
2478    arg_params->add_intvalue((int)params);
2479
2480    // call function
2481    nsecs_t start_time = systemTime();
2482    glContext->hooks->gl.glGetVertexAttribfv(index, pname, params);
2483    nsecs_t end_time = systemTime();
2484
2485    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2486    glContext->traceGLMessage(&glmsg);
2487}
2488
2489void GLTrace_glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params) {
2490    GLMessage glmsg;
2491    GLTraceContext *glContext = getGLTraceContext();
2492
2493    glmsg.set_function(GLMessage::glGetVertexAttribiv);
2494
2495    // copy argument index
2496    GLMessage_DataType *arg_index = glmsg.add_args();
2497    arg_index->set_isarray(false);
2498    arg_index->set_type(GLMessage::DataType::INT);
2499    arg_index->add_intvalue(index);
2500
2501    // copy argument pname
2502    GLMessage_DataType *arg_pname = glmsg.add_args();
2503    arg_pname->set_isarray(false);
2504    arg_pname->set_type(GLMessage::DataType::ENUM);
2505    arg_pname->add_intvalue((int)pname);
2506
2507    // copy argument params
2508    GLMessage_DataType *arg_params = glmsg.add_args();
2509    arg_params->set_isarray(false);
2510    arg_params->set_type(GLMessage::DataType::INT);
2511    arg_params->add_intvalue((int)params);
2512
2513    // call function
2514    nsecs_t start_time = systemTime();
2515    glContext->hooks->gl.glGetVertexAttribiv(index, pname, params);
2516    nsecs_t end_time = systemTime();
2517
2518    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2519    glContext->traceGLMessage(&glmsg);
2520}
2521
2522void GLTrace_glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** pointer) {
2523    GLMessage glmsg;
2524    GLTraceContext *glContext = getGLTraceContext();
2525
2526    glmsg.set_function(GLMessage::glGetVertexAttribPointerv);
2527
2528    // copy argument index
2529    GLMessage_DataType *arg_index = glmsg.add_args();
2530    arg_index->set_isarray(false);
2531    arg_index->set_type(GLMessage::DataType::INT);
2532    arg_index->add_intvalue(index);
2533
2534    // copy argument pname
2535    GLMessage_DataType *arg_pname = glmsg.add_args();
2536    arg_pname->set_isarray(false);
2537    arg_pname->set_type(GLMessage::DataType::ENUM);
2538    arg_pname->add_intvalue((int)pname);
2539
2540    // copy argument pointer
2541    GLMessage_DataType *arg_pointer = glmsg.add_args();
2542    arg_pointer->set_isarray(false);
2543    arg_pointer->set_type(GLMessage::DataType::INT);
2544    arg_pointer->add_intvalue((int)pointer);
2545
2546    // call function
2547    nsecs_t start_time = systemTime();
2548    glContext->hooks->gl.glGetVertexAttribPointerv(index, pname, pointer);
2549    nsecs_t end_time = systemTime();
2550
2551    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2552    glContext->traceGLMessage(&glmsg);
2553}
2554
2555void GLTrace_glHint(GLenum target, GLenum mode) {
2556    GLMessage glmsg;
2557    GLTraceContext *glContext = getGLTraceContext();
2558
2559    glmsg.set_function(GLMessage::glHint);
2560
2561    // copy argument target
2562    GLMessage_DataType *arg_target = glmsg.add_args();
2563    arg_target->set_isarray(false);
2564    arg_target->set_type(GLMessage::DataType::ENUM);
2565    arg_target->add_intvalue((int)target);
2566
2567    // copy argument mode
2568    GLMessage_DataType *arg_mode = glmsg.add_args();
2569    arg_mode->set_isarray(false);
2570    arg_mode->set_type(GLMessage::DataType::ENUM);
2571    arg_mode->add_intvalue((int)mode);
2572
2573    // call function
2574    nsecs_t start_time = systemTime();
2575    glContext->hooks->gl.glHint(target, mode);
2576    nsecs_t end_time = systemTime();
2577
2578    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2579    glContext->traceGLMessage(&glmsg);
2580}
2581
2582GLboolean GLTrace_glIsBuffer(GLuint buffer) {
2583    GLMessage glmsg;
2584    GLTraceContext *glContext = getGLTraceContext();
2585
2586    glmsg.set_function(GLMessage::glIsBuffer);
2587
2588    // copy argument buffer
2589    GLMessage_DataType *arg_buffer = glmsg.add_args();
2590    arg_buffer->set_isarray(false);
2591    arg_buffer->set_type(GLMessage::DataType::INT);
2592    arg_buffer->add_intvalue(buffer);
2593
2594    // call function
2595    nsecs_t start_time = systemTime();
2596    GLboolean retValue = glContext->hooks->gl.glIsBuffer(buffer);
2597    nsecs_t end_time = systemTime();
2598
2599    // set return value
2600    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
2601    rt->set_isarray(false);
2602    rt->set_type(GLMessage::DataType::BOOL);
2603    rt->add_boolvalue(retValue);
2604
2605    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2606    glContext->traceGLMessage(&glmsg);
2607
2608    return retValue;
2609}
2610
2611GLboolean GLTrace_glIsEnabled(GLenum cap) {
2612    GLMessage glmsg;
2613    GLTraceContext *glContext = getGLTraceContext();
2614
2615    glmsg.set_function(GLMessage::glIsEnabled);
2616
2617    // copy argument cap
2618    GLMessage_DataType *arg_cap = glmsg.add_args();
2619    arg_cap->set_isarray(false);
2620    arg_cap->set_type(GLMessage::DataType::ENUM);
2621    arg_cap->add_intvalue((int)cap);
2622
2623    // call function
2624    nsecs_t start_time = systemTime();
2625    GLboolean retValue = glContext->hooks->gl.glIsEnabled(cap);
2626    nsecs_t end_time = systemTime();
2627
2628    // set return value
2629    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
2630    rt->set_isarray(false);
2631    rt->set_type(GLMessage::DataType::BOOL);
2632    rt->add_boolvalue(retValue);
2633
2634    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2635    glContext->traceGLMessage(&glmsg);
2636
2637    return retValue;
2638}
2639
2640GLboolean GLTrace_glIsFramebuffer(GLuint framebuffer) {
2641    GLMessage glmsg;
2642    GLTraceContext *glContext = getGLTraceContext();
2643
2644    glmsg.set_function(GLMessage::glIsFramebuffer);
2645
2646    // copy argument framebuffer
2647    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
2648    arg_framebuffer->set_isarray(false);
2649    arg_framebuffer->set_type(GLMessage::DataType::INT);
2650    arg_framebuffer->add_intvalue(framebuffer);
2651
2652    // call function
2653    nsecs_t start_time = systemTime();
2654    GLboolean retValue = glContext->hooks->gl.glIsFramebuffer(framebuffer);
2655    nsecs_t end_time = systemTime();
2656
2657    // set return value
2658    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
2659    rt->set_isarray(false);
2660    rt->set_type(GLMessage::DataType::BOOL);
2661    rt->add_boolvalue(retValue);
2662
2663    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2664    glContext->traceGLMessage(&glmsg);
2665
2666    return retValue;
2667}
2668
2669GLboolean GLTrace_glIsProgram(GLuint program) {
2670    GLMessage glmsg;
2671    GLTraceContext *glContext = getGLTraceContext();
2672
2673    glmsg.set_function(GLMessage::glIsProgram);
2674
2675    // copy argument program
2676    GLMessage_DataType *arg_program = glmsg.add_args();
2677    arg_program->set_isarray(false);
2678    arg_program->set_type(GLMessage::DataType::INT);
2679    arg_program->add_intvalue(program);
2680
2681    // call function
2682    nsecs_t start_time = systemTime();
2683    GLboolean retValue = glContext->hooks->gl.glIsProgram(program);
2684    nsecs_t end_time = systemTime();
2685
2686    // set return value
2687    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
2688    rt->set_isarray(false);
2689    rt->set_type(GLMessage::DataType::BOOL);
2690    rt->add_boolvalue(retValue);
2691
2692    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2693    glContext->traceGLMessage(&glmsg);
2694
2695    return retValue;
2696}
2697
2698GLboolean GLTrace_glIsRenderbuffer(GLuint renderbuffer) {
2699    GLMessage glmsg;
2700    GLTraceContext *glContext = getGLTraceContext();
2701
2702    glmsg.set_function(GLMessage::glIsRenderbuffer);
2703
2704    // copy argument renderbuffer
2705    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
2706    arg_renderbuffer->set_isarray(false);
2707    arg_renderbuffer->set_type(GLMessage::DataType::INT);
2708    arg_renderbuffer->add_intvalue(renderbuffer);
2709
2710    // call function
2711    nsecs_t start_time = systemTime();
2712    GLboolean retValue = glContext->hooks->gl.glIsRenderbuffer(renderbuffer);
2713    nsecs_t end_time = systemTime();
2714
2715    // set return value
2716    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
2717    rt->set_isarray(false);
2718    rt->set_type(GLMessage::DataType::BOOL);
2719    rt->add_boolvalue(retValue);
2720
2721    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2722    glContext->traceGLMessage(&glmsg);
2723
2724    return retValue;
2725}
2726
2727GLboolean GLTrace_glIsShader(GLuint shader) {
2728    GLMessage glmsg;
2729    GLTraceContext *glContext = getGLTraceContext();
2730
2731    glmsg.set_function(GLMessage::glIsShader);
2732
2733    // copy argument shader
2734    GLMessage_DataType *arg_shader = glmsg.add_args();
2735    arg_shader->set_isarray(false);
2736    arg_shader->set_type(GLMessage::DataType::INT);
2737    arg_shader->add_intvalue(shader);
2738
2739    // call function
2740    nsecs_t start_time = systemTime();
2741    GLboolean retValue = glContext->hooks->gl.glIsShader(shader);
2742    nsecs_t end_time = systemTime();
2743
2744    // set return value
2745    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
2746    rt->set_isarray(false);
2747    rt->set_type(GLMessage::DataType::BOOL);
2748    rt->add_boolvalue(retValue);
2749
2750    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2751    glContext->traceGLMessage(&glmsg);
2752
2753    return retValue;
2754}
2755
2756GLboolean GLTrace_glIsTexture(GLuint texture) {
2757    GLMessage glmsg;
2758    GLTraceContext *glContext = getGLTraceContext();
2759
2760    glmsg.set_function(GLMessage::glIsTexture);
2761
2762    // copy argument texture
2763    GLMessage_DataType *arg_texture = glmsg.add_args();
2764    arg_texture->set_isarray(false);
2765    arg_texture->set_type(GLMessage::DataType::INT);
2766    arg_texture->add_intvalue(texture);
2767
2768    // call function
2769    nsecs_t start_time = systemTime();
2770    GLboolean retValue = glContext->hooks->gl.glIsTexture(texture);
2771    nsecs_t end_time = systemTime();
2772
2773    // set return value
2774    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
2775    rt->set_isarray(false);
2776    rt->set_type(GLMessage::DataType::BOOL);
2777    rt->add_boolvalue(retValue);
2778
2779    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2780    glContext->traceGLMessage(&glmsg);
2781
2782    return retValue;
2783}
2784
2785void GLTrace_glLineWidth(GLfloat width) {
2786    GLMessage glmsg;
2787    GLTraceContext *glContext = getGLTraceContext();
2788
2789    glmsg.set_function(GLMessage::glLineWidth);
2790
2791    // copy argument width
2792    GLMessage_DataType *arg_width = glmsg.add_args();
2793    arg_width->set_isarray(false);
2794    arg_width->set_type(GLMessage::DataType::FLOAT);
2795    arg_width->add_floatvalue(width);
2796
2797    // call function
2798    nsecs_t start_time = systemTime();
2799    glContext->hooks->gl.glLineWidth(width);
2800    nsecs_t end_time = systemTime();
2801
2802    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2803    glContext->traceGLMessage(&glmsg);
2804}
2805
2806void GLTrace_glLinkProgram(GLuint program) {
2807    GLMessage glmsg;
2808    GLTraceContext *glContext = getGLTraceContext();
2809
2810    glmsg.set_function(GLMessage::glLinkProgram);
2811
2812    // copy argument program
2813    GLMessage_DataType *arg_program = glmsg.add_args();
2814    arg_program->set_isarray(false);
2815    arg_program->set_type(GLMessage::DataType::INT);
2816    arg_program->add_intvalue(program);
2817
2818    // call function
2819    nsecs_t start_time = systemTime();
2820    glContext->hooks->gl.glLinkProgram(program);
2821    nsecs_t end_time = systemTime();
2822
2823    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2824    glContext->traceGLMessage(&glmsg);
2825}
2826
2827void GLTrace_glPixelStorei(GLenum pname, GLint param) {
2828    GLMessage glmsg;
2829    GLTraceContext *glContext = getGLTraceContext();
2830
2831    glmsg.set_function(GLMessage::glPixelStorei);
2832
2833    // copy argument pname
2834    GLMessage_DataType *arg_pname = glmsg.add_args();
2835    arg_pname->set_isarray(false);
2836    arg_pname->set_type(GLMessage::DataType::ENUM);
2837    arg_pname->add_intvalue((int)pname);
2838
2839    // copy argument param
2840    GLMessage_DataType *arg_param = glmsg.add_args();
2841    arg_param->set_isarray(false);
2842    arg_param->set_type(GLMessage::DataType::INT);
2843    arg_param->add_intvalue(param);
2844
2845    // call function
2846    nsecs_t start_time = systemTime();
2847    glContext->hooks->gl.glPixelStorei(pname, param);
2848    nsecs_t end_time = systemTime();
2849
2850    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2851    glContext->traceGLMessage(&glmsg);
2852}
2853
2854void GLTrace_glPolygonOffset(GLfloat factor, GLfloat units) {
2855    GLMessage glmsg;
2856    GLTraceContext *glContext = getGLTraceContext();
2857
2858    glmsg.set_function(GLMessage::glPolygonOffset);
2859
2860    // copy argument factor
2861    GLMessage_DataType *arg_factor = glmsg.add_args();
2862    arg_factor->set_isarray(false);
2863    arg_factor->set_type(GLMessage::DataType::FLOAT);
2864    arg_factor->add_floatvalue(factor);
2865
2866    // copy argument units
2867    GLMessage_DataType *arg_units = glmsg.add_args();
2868    arg_units->set_isarray(false);
2869    arg_units->set_type(GLMessage::DataType::FLOAT);
2870    arg_units->add_floatvalue(units);
2871
2872    // call function
2873    nsecs_t start_time = systemTime();
2874    glContext->hooks->gl.glPolygonOffset(factor, units);
2875    nsecs_t end_time = systemTime();
2876
2877    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2878    glContext->traceGLMessage(&glmsg);
2879}
2880
2881void GLTrace_glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels) {
2882    GLMessage glmsg;
2883    GLTraceContext *glContext = getGLTraceContext();
2884
2885    glmsg.set_function(GLMessage::glReadPixels);
2886
2887    // copy argument x
2888    GLMessage_DataType *arg_x = glmsg.add_args();
2889    arg_x->set_isarray(false);
2890    arg_x->set_type(GLMessage::DataType::INT);
2891    arg_x->add_intvalue(x);
2892
2893    // copy argument y
2894    GLMessage_DataType *arg_y = glmsg.add_args();
2895    arg_y->set_isarray(false);
2896    arg_y->set_type(GLMessage::DataType::INT);
2897    arg_y->add_intvalue(y);
2898
2899    // copy argument width
2900    GLMessage_DataType *arg_width = glmsg.add_args();
2901    arg_width->set_isarray(false);
2902    arg_width->set_type(GLMessage::DataType::INT);
2903    arg_width->add_intvalue(width);
2904
2905    // copy argument height
2906    GLMessage_DataType *arg_height = glmsg.add_args();
2907    arg_height->set_isarray(false);
2908    arg_height->set_type(GLMessage::DataType::INT);
2909    arg_height->add_intvalue(height);
2910
2911    // copy argument format
2912    GLMessage_DataType *arg_format = glmsg.add_args();
2913    arg_format->set_isarray(false);
2914    arg_format->set_type(GLMessage::DataType::ENUM);
2915    arg_format->add_intvalue((int)format);
2916
2917    // copy argument type
2918    GLMessage_DataType *arg_type = glmsg.add_args();
2919    arg_type->set_isarray(false);
2920    arg_type->set_type(GLMessage::DataType::ENUM);
2921    arg_type->add_intvalue((int)type);
2922
2923    // copy argument pixels
2924    GLMessage_DataType *arg_pixels = glmsg.add_args();
2925    arg_pixels->set_isarray(false);
2926    arg_pixels->set_type(GLMessage::DataType::INT);
2927    arg_pixels->add_intvalue((int)pixels);
2928
2929    // call function
2930    nsecs_t start_time = systemTime();
2931    glContext->hooks->gl.glReadPixels(x, y, width, height, format, type, pixels);
2932    nsecs_t end_time = systemTime();
2933
2934    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2935    glContext->traceGLMessage(&glmsg);
2936}
2937
2938void GLTrace_glReleaseShaderCompiler(void) {
2939    GLMessage glmsg;
2940    GLTraceContext *glContext = getGLTraceContext();
2941
2942    glmsg.set_function(GLMessage::glReleaseShaderCompiler);
2943
2944    // call function
2945    nsecs_t start_time = systemTime();
2946    glContext->hooks->gl.glReleaseShaderCompiler();
2947    nsecs_t end_time = systemTime();
2948
2949    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2950    glContext->traceGLMessage(&glmsg);
2951}
2952
2953void GLTrace_glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) {
2954    GLMessage glmsg;
2955    GLTraceContext *glContext = getGLTraceContext();
2956
2957    glmsg.set_function(GLMessage::glRenderbufferStorage);
2958
2959    // copy argument target
2960    GLMessage_DataType *arg_target = glmsg.add_args();
2961    arg_target->set_isarray(false);
2962    arg_target->set_type(GLMessage::DataType::ENUM);
2963    arg_target->add_intvalue((int)target);
2964
2965    // copy argument internalformat
2966    GLMessage_DataType *arg_internalformat = glmsg.add_args();
2967    arg_internalformat->set_isarray(false);
2968    arg_internalformat->set_type(GLMessage::DataType::ENUM);
2969    arg_internalformat->add_intvalue((int)internalformat);
2970
2971    // copy argument width
2972    GLMessage_DataType *arg_width = glmsg.add_args();
2973    arg_width->set_isarray(false);
2974    arg_width->set_type(GLMessage::DataType::INT);
2975    arg_width->add_intvalue(width);
2976
2977    // copy argument height
2978    GLMessage_DataType *arg_height = glmsg.add_args();
2979    arg_height->set_isarray(false);
2980    arg_height->set_type(GLMessage::DataType::INT);
2981    arg_height->add_intvalue(height);
2982
2983    // call function
2984    nsecs_t start_time = systemTime();
2985    glContext->hooks->gl.glRenderbufferStorage(target, internalformat, width, height);
2986    nsecs_t end_time = systemTime();
2987
2988    fixupGLMessage(glContext, start_time, end_time, &glmsg);
2989    glContext->traceGLMessage(&glmsg);
2990}
2991
2992void GLTrace_glSampleCoverage(GLclampf value, GLboolean invert) {
2993    GLMessage glmsg;
2994    GLTraceContext *glContext = getGLTraceContext();
2995
2996    glmsg.set_function(GLMessage::glSampleCoverage);
2997
2998    // copy argument value
2999    GLMessage_DataType *arg_value = glmsg.add_args();
3000    arg_value->set_isarray(false);
3001    arg_value->set_type(GLMessage::DataType::FLOAT);
3002    arg_value->add_floatvalue(value);
3003
3004    // copy argument invert
3005    GLMessage_DataType *arg_invert = glmsg.add_args();
3006    arg_invert->set_isarray(false);
3007    arg_invert->set_type(GLMessage::DataType::BOOL);
3008    arg_invert->add_boolvalue(invert);
3009
3010    // call function
3011    nsecs_t start_time = systemTime();
3012    glContext->hooks->gl.glSampleCoverage(value, invert);
3013    nsecs_t end_time = systemTime();
3014
3015    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3016    glContext->traceGLMessage(&glmsg);
3017}
3018
3019void GLTrace_glScissor(GLint x, GLint y, GLsizei width, GLsizei height) {
3020    GLMessage glmsg;
3021    GLTraceContext *glContext = getGLTraceContext();
3022
3023    glmsg.set_function(GLMessage::glScissor);
3024
3025    // copy argument x
3026    GLMessage_DataType *arg_x = glmsg.add_args();
3027    arg_x->set_isarray(false);
3028    arg_x->set_type(GLMessage::DataType::INT);
3029    arg_x->add_intvalue(x);
3030
3031    // copy argument y
3032    GLMessage_DataType *arg_y = glmsg.add_args();
3033    arg_y->set_isarray(false);
3034    arg_y->set_type(GLMessage::DataType::INT);
3035    arg_y->add_intvalue(y);
3036
3037    // copy argument width
3038    GLMessage_DataType *arg_width = glmsg.add_args();
3039    arg_width->set_isarray(false);
3040    arg_width->set_type(GLMessage::DataType::INT);
3041    arg_width->add_intvalue(width);
3042
3043    // copy argument height
3044    GLMessage_DataType *arg_height = glmsg.add_args();
3045    arg_height->set_isarray(false);
3046    arg_height->set_type(GLMessage::DataType::INT);
3047    arg_height->add_intvalue(height);
3048
3049    // call function
3050    nsecs_t start_time = systemTime();
3051    glContext->hooks->gl.glScissor(x, y, width, height);
3052    nsecs_t end_time = systemTime();
3053
3054    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3055    glContext->traceGLMessage(&glmsg);
3056}
3057
3058void GLTrace_glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length) {
3059    GLMessage glmsg;
3060    GLTraceContext *glContext = getGLTraceContext();
3061
3062    glmsg.set_function(GLMessage::glShaderBinary);
3063
3064    // copy argument n
3065    GLMessage_DataType *arg_n = glmsg.add_args();
3066    arg_n->set_isarray(false);
3067    arg_n->set_type(GLMessage::DataType::INT);
3068    arg_n->add_intvalue(n);
3069
3070    // copy argument shaders
3071    GLMessage_DataType *arg_shaders = glmsg.add_args();
3072    arg_shaders->set_isarray(false);
3073    arg_shaders->set_type(GLMessage::DataType::INT);
3074    arg_shaders->add_intvalue((int)shaders);
3075
3076    // copy argument binaryformat
3077    GLMessage_DataType *arg_binaryformat = glmsg.add_args();
3078    arg_binaryformat->set_isarray(false);
3079    arg_binaryformat->set_type(GLMessage::DataType::ENUM);
3080    arg_binaryformat->add_intvalue((int)binaryformat);
3081
3082    // copy argument binary
3083    GLMessage_DataType *arg_binary = glmsg.add_args();
3084    arg_binary->set_isarray(false);
3085    arg_binary->set_type(GLMessage::DataType::INT);
3086    arg_binary->add_intvalue((int)binary);
3087
3088    // copy argument length
3089    GLMessage_DataType *arg_length = glmsg.add_args();
3090    arg_length->set_isarray(false);
3091    arg_length->set_type(GLMessage::DataType::INT);
3092    arg_length->add_intvalue(length);
3093
3094    // call function
3095    nsecs_t start_time = systemTime();
3096    glContext->hooks->gl.glShaderBinary(n, shaders, binaryformat, binary, length);
3097    nsecs_t end_time = systemTime();
3098
3099    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3100    glContext->traceGLMessage(&glmsg);
3101}
3102
3103void GLTrace_glShaderSource(GLuint shader, GLsizei count, const GLchar** string, const GLint* length) {
3104    GLMessage glmsg;
3105    GLTraceContext *glContext = getGLTraceContext();
3106
3107    glmsg.set_function(GLMessage::glShaderSource);
3108
3109    // copy argument shader
3110    GLMessage_DataType *arg_shader = glmsg.add_args();
3111    arg_shader->set_isarray(false);
3112    arg_shader->set_type(GLMessage::DataType::INT);
3113    arg_shader->add_intvalue(shader);
3114
3115    // copy argument count
3116    GLMessage_DataType *arg_count = glmsg.add_args();
3117    arg_count->set_isarray(false);
3118    arg_count->set_type(GLMessage::DataType::INT);
3119    arg_count->add_intvalue(count);
3120
3121    // copy argument string
3122    GLMessage_DataType *arg_string = glmsg.add_args();
3123    arg_string->set_isarray(false);
3124    arg_string->set_type(GLMessage::DataType::INT);
3125    arg_string->add_intvalue((int)string);
3126
3127    // copy argument length
3128    GLMessage_DataType *arg_length = glmsg.add_args();
3129    arg_length->set_isarray(false);
3130    arg_length->set_type(GLMessage::DataType::INT);
3131    arg_length->add_intvalue((int)length);
3132
3133    // call function
3134    nsecs_t start_time = systemTime();
3135    glContext->hooks->gl.glShaderSource(shader, count, string, length);
3136    nsecs_t end_time = systemTime();
3137
3138    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3139    glContext->traceGLMessage(&glmsg);
3140}
3141
3142void GLTrace_glStencilFunc(GLenum func, GLint ref, GLuint mask) {
3143    GLMessage glmsg;
3144    GLTraceContext *glContext = getGLTraceContext();
3145
3146    glmsg.set_function(GLMessage::glStencilFunc);
3147
3148    // copy argument func
3149    GLMessage_DataType *arg_func = glmsg.add_args();
3150    arg_func->set_isarray(false);
3151    arg_func->set_type(GLMessage::DataType::ENUM);
3152    arg_func->add_intvalue((int)func);
3153
3154    // copy argument ref
3155    GLMessage_DataType *arg_ref = glmsg.add_args();
3156    arg_ref->set_isarray(false);
3157    arg_ref->set_type(GLMessage::DataType::INT);
3158    arg_ref->add_intvalue(ref);
3159
3160    // copy argument mask
3161    GLMessage_DataType *arg_mask = glmsg.add_args();
3162    arg_mask->set_isarray(false);
3163    arg_mask->set_type(GLMessage::DataType::INT);
3164    arg_mask->add_intvalue(mask);
3165
3166    // call function
3167    nsecs_t start_time = systemTime();
3168    glContext->hooks->gl.glStencilFunc(func, ref, mask);
3169    nsecs_t end_time = systemTime();
3170
3171    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3172    glContext->traceGLMessage(&glmsg);
3173}
3174
3175void GLTrace_glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) {
3176    GLMessage glmsg;
3177    GLTraceContext *glContext = getGLTraceContext();
3178
3179    glmsg.set_function(GLMessage::glStencilFuncSeparate);
3180
3181    // copy argument face
3182    GLMessage_DataType *arg_face = glmsg.add_args();
3183    arg_face->set_isarray(false);
3184    arg_face->set_type(GLMessage::DataType::ENUM);
3185    arg_face->add_intvalue((int)face);
3186
3187    // copy argument func
3188    GLMessage_DataType *arg_func = glmsg.add_args();
3189    arg_func->set_isarray(false);
3190    arg_func->set_type(GLMessage::DataType::ENUM);
3191    arg_func->add_intvalue((int)func);
3192
3193    // copy argument ref
3194    GLMessage_DataType *arg_ref = glmsg.add_args();
3195    arg_ref->set_isarray(false);
3196    arg_ref->set_type(GLMessage::DataType::INT);
3197    arg_ref->add_intvalue(ref);
3198
3199    // copy argument mask
3200    GLMessage_DataType *arg_mask = glmsg.add_args();
3201    arg_mask->set_isarray(false);
3202    arg_mask->set_type(GLMessage::DataType::INT);
3203    arg_mask->add_intvalue(mask);
3204
3205    // call function
3206    nsecs_t start_time = systemTime();
3207    glContext->hooks->gl.glStencilFuncSeparate(face, func, ref, mask);
3208    nsecs_t end_time = systemTime();
3209
3210    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3211    glContext->traceGLMessage(&glmsg);
3212}
3213
3214void GLTrace_glStencilMask(GLuint mask) {
3215    GLMessage glmsg;
3216    GLTraceContext *glContext = getGLTraceContext();
3217
3218    glmsg.set_function(GLMessage::glStencilMask);
3219
3220    // copy argument mask
3221    GLMessage_DataType *arg_mask = glmsg.add_args();
3222    arg_mask->set_isarray(false);
3223    arg_mask->set_type(GLMessage::DataType::INT);
3224    arg_mask->add_intvalue(mask);
3225
3226    // call function
3227    nsecs_t start_time = systemTime();
3228    glContext->hooks->gl.glStencilMask(mask);
3229    nsecs_t end_time = systemTime();
3230
3231    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3232    glContext->traceGLMessage(&glmsg);
3233}
3234
3235void GLTrace_glStencilMaskSeparate(GLenum face, GLuint mask) {
3236    GLMessage glmsg;
3237    GLTraceContext *glContext = getGLTraceContext();
3238
3239    glmsg.set_function(GLMessage::glStencilMaskSeparate);
3240
3241    // copy argument face
3242    GLMessage_DataType *arg_face = glmsg.add_args();
3243    arg_face->set_isarray(false);
3244    arg_face->set_type(GLMessage::DataType::ENUM);
3245    arg_face->add_intvalue((int)face);
3246
3247    // copy argument mask
3248    GLMessage_DataType *arg_mask = glmsg.add_args();
3249    arg_mask->set_isarray(false);
3250    arg_mask->set_type(GLMessage::DataType::INT);
3251    arg_mask->add_intvalue(mask);
3252
3253    // call function
3254    nsecs_t start_time = systemTime();
3255    glContext->hooks->gl.glStencilMaskSeparate(face, mask);
3256    nsecs_t end_time = systemTime();
3257
3258    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3259    glContext->traceGLMessage(&glmsg);
3260}
3261
3262void GLTrace_glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) {
3263    GLMessage glmsg;
3264    GLTraceContext *glContext = getGLTraceContext();
3265
3266    glmsg.set_function(GLMessage::glStencilOp);
3267
3268    // copy argument fail
3269    GLMessage_DataType *arg_fail = glmsg.add_args();
3270    arg_fail->set_isarray(false);
3271    arg_fail->set_type(GLMessage::DataType::ENUM);
3272    arg_fail->add_intvalue((int)fail);
3273
3274    // copy argument zfail
3275    GLMessage_DataType *arg_zfail = glmsg.add_args();
3276    arg_zfail->set_isarray(false);
3277    arg_zfail->set_type(GLMessage::DataType::ENUM);
3278    arg_zfail->add_intvalue((int)zfail);
3279
3280    // copy argument zpass
3281    GLMessage_DataType *arg_zpass = glmsg.add_args();
3282    arg_zpass->set_isarray(false);
3283    arg_zpass->set_type(GLMessage::DataType::ENUM);
3284    arg_zpass->add_intvalue((int)zpass);
3285
3286    // call function
3287    nsecs_t start_time = systemTime();
3288    glContext->hooks->gl.glStencilOp(fail, zfail, zpass);
3289    nsecs_t end_time = systemTime();
3290
3291    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3292    glContext->traceGLMessage(&glmsg);
3293}
3294
3295void GLTrace_glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass) {
3296    GLMessage glmsg;
3297    GLTraceContext *glContext = getGLTraceContext();
3298
3299    glmsg.set_function(GLMessage::glStencilOpSeparate);
3300
3301    // copy argument face
3302    GLMessage_DataType *arg_face = glmsg.add_args();
3303    arg_face->set_isarray(false);
3304    arg_face->set_type(GLMessage::DataType::ENUM);
3305    arg_face->add_intvalue((int)face);
3306
3307    // copy argument fail
3308    GLMessage_DataType *arg_fail = glmsg.add_args();
3309    arg_fail->set_isarray(false);
3310    arg_fail->set_type(GLMessage::DataType::ENUM);
3311    arg_fail->add_intvalue((int)fail);
3312
3313    // copy argument zfail
3314    GLMessage_DataType *arg_zfail = glmsg.add_args();
3315    arg_zfail->set_isarray(false);
3316    arg_zfail->set_type(GLMessage::DataType::ENUM);
3317    arg_zfail->add_intvalue((int)zfail);
3318
3319    // copy argument zpass
3320    GLMessage_DataType *arg_zpass = glmsg.add_args();
3321    arg_zpass->set_isarray(false);
3322    arg_zpass->set_type(GLMessage::DataType::ENUM);
3323    arg_zpass->add_intvalue((int)zpass);
3324
3325    // call function
3326    nsecs_t start_time = systemTime();
3327    glContext->hooks->gl.glStencilOpSeparate(face, fail, zfail, zpass);
3328    nsecs_t end_time = systemTime();
3329
3330    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3331    glContext->traceGLMessage(&glmsg);
3332}
3333
3334void GLTrace_glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels) {
3335    GLMessage glmsg;
3336    GLTraceContext *glContext = getGLTraceContext();
3337
3338    glmsg.set_function(GLMessage::glTexImage2D);
3339
3340    // copy argument target
3341    GLMessage_DataType *arg_target = glmsg.add_args();
3342    arg_target->set_isarray(false);
3343    arg_target->set_type(GLMessage::DataType::ENUM);
3344    arg_target->add_intvalue((int)target);
3345
3346    // copy argument level
3347    GLMessage_DataType *arg_level = glmsg.add_args();
3348    arg_level->set_isarray(false);
3349    arg_level->set_type(GLMessage::DataType::INT);
3350    arg_level->add_intvalue(level);
3351
3352    // copy argument internalformat
3353    GLMessage_DataType *arg_internalformat = glmsg.add_args();
3354    arg_internalformat->set_isarray(false);
3355    arg_internalformat->set_type(GLMessage::DataType::INT);
3356    arg_internalformat->add_intvalue(internalformat);
3357
3358    // copy argument width
3359    GLMessage_DataType *arg_width = glmsg.add_args();
3360    arg_width->set_isarray(false);
3361    arg_width->set_type(GLMessage::DataType::INT);
3362    arg_width->add_intvalue(width);
3363
3364    // copy argument height
3365    GLMessage_DataType *arg_height = glmsg.add_args();
3366    arg_height->set_isarray(false);
3367    arg_height->set_type(GLMessage::DataType::INT);
3368    arg_height->add_intvalue(height);
3369
3370    // copy argument border
3371    GLMessage_DataType *arg_border = glmsg.add_args();
3372    arg_border->set_isarray(false);
3373    arg_border->set_type(GLMessage::DataType::INT);
3374    arg_border->add_intvalue(border);
3375
3376    // copy argument format
3377    GLMessage_DataType *arg_format = glmsg.add_args();
3378    arg_format->set_isarray(false);
3379    arg_format->set_type(GLMessage::DataType::ENUM);
3380    arg_format->add_intvalue((int)format);
3381
3382    // copy argument type
3383    GLMessage_DataType *arg_type = glmsg.add_args();
3384    arg_type->set_isarray(false);
3385    arg_type->set_type(GLMessage::DataType::ENUM);
3386    arg_type->add_intvalue((int)type);
3387
3388    // copy argument pixels
3389    GLMessage_DataType *arg_pixels = glmsg.add_args();
3390    arg_pixels->set_isarray(false);
3391    arg_pixels->set_type(GLMessage::DataType::INT);
3392    arg_pixels->add_intvalue((int)pixels);
3393
3394    // call function
3395    nsecs_t start_time = systemTime();
3396    glContext->hooks->gl.glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels);
3397    nsecs_t end_time = systemTime();
3398
3399    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3400    glContext->traceGLMessage(&glmsg);
3401}
3402
3403void GLTrace_glTexParameterf(GLenum target, GLenum pname, GLfloat param) {
3404    GLMessage glmsg;
3405    GLTraceContext *glContext = getGLTraceContext();
3406
3407    glmsg.set_function(GLMessage::glTexParameterf);
3408
3409    // copy argument target
3410    GLMessage_DataType *arg_target = glmsg.add_args();
3411    arg_target->set_isarray(false);
3412    arg_target->set_type(GLMessage::DataType::ENUM);
3413    arg_target->add_intvalue((int)target);
3414
3415    // copy argument pname
3416    GLMessage_DataType *arg_pname = glmsg.add_args();
3417    arg_pname->set_isarray(false);
3418    arg_pname->set_type(GLMessage::DataType::ENUM);
3419    arg_pname->add_intvalue((int)pname);
3420
3421    // copy argument param
3422    GLMessage_DataType *arg_param = glmsg.add_args();
3423    arg_param->set_isarray(false);
3424    arg_param->set_type(GLMessage::DataType::FLOAT);
3425    arg_param->add_floatvalue(param);
3426
3427    // call function
3428    nsecs_t start_time = systemTime();
3429    glContext->hooks->gl.glTexParameterf(target, pname, param);
3430    nsecs_t end_time = systemTime();
3431
3432    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3433    glContext->traceGLMessage(&glmsg);
3434}
3435
3436void GLTrace_glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params) {
3437    GLMessage glmsg;
3438    GLTraceContext *glContext = getGLTraceContext();
3439
3440    glmsg.set_function(GLMessage::glTexParameterfv);
3441
3442    // copy argument target
3443    GLMessage_DataType *arg_target = glmsg.add_args();
3444    arg_target->set_isarray(false);
3445    arg_target->set_type(GLMessage::DataType::ENUM);
3446    arg_target->add_intvalue((int)target);
3447
3448    // copy argument pname
3449    GLMessage_DataType *arg_pname = glmsg.add_args();
3450    arg_pname->set_isarray(false);
3451    arg_pname->set_type(GLMessage::DataType::ENUM);
3452    arg_pname->add_intvalue((int)pname);
3453
3454    // copy argument params
3455    GLMessage_DataType *arg_params = glmsg.add_args();
3456    arg_params->set_isarray(false);
3457    arg_params->set_type(GLMessage::DataType::INT);
3458    arg_params->add_intvalue((int)params);
3459
3460    // call function
3461    nsecs_t start_time = systemTime();
3462    glContext->hooks->gl.glTexParameterfv(target, pname, params);
3463    nsecs_t end_time = systemTime();
3464
3465    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3466    glContext->traceGLMessage(&glmsg);
3467}
3468
3469void GLTrace_glTexParameteri(GLenum target, GLenum pname, GLint param) {
3470    GLMessage glmsg;
3471    GLTraceContext *glContext = getGLTraceContext();
3472
3473    glmsg.set_function(GLMessage::glTexParameteri);
3474
3475    // copy argument target
3476    GLMessage_DataType *arg_target = glmsg.add_args();
3477    arg_target->set_isarray(false);
3478    arg_target->set_type(GLMessage::DataType::ENUM);
3479    arg_target->add_intvalue((int)target);
3480
3481    // copy argument pname
3482    GLMessage_DataType *arg_pname = glmsg.add_args();
3483    arg_pname->set_isarray(false);
3484    arg_pname->set_type(GLMessage::DataType::ENUM);
3485    arg_pname->add_intvalue((int)pname);
3486
3487    // copy argument param
3488    GLMessage_DataType *arg_param = glmsg.add_args();
3489    arg_param->set_isarray(false);
3490    arg_param->set_type(GLMessage::DataType::INT);
3491    arg_param->add_intvalue(param);
3492
3493    // call function
3494    nsecs_t start_time = systemTime();
3495    glContext->hooks->gl.glTexParameteri(target, pname, param);
3496    nsecs_t end_time = systemTime();
3497
3498    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3499    glContext->traceGLMessage(&glmsg);
3500}
3501
3502void GLTrace_glTexParameteriv(GLenum target, GLenum pname, const GLint* params) {
3503    GLMessage glmsg;
3504    GLTraceContext *glContext = getGLTraceContext();
3505
3506    glmsg.set_function(GLMessage::glTexParameteriv);
3507
3508    // copy argument target
3509    GLMessage_DataType *arg_target = glmsg.add_args();
3510    arg_target->set_isarray(false);
3511    arg_target->set_type(GLMessage::DataType::ENUM);
3512    arg_target->add_intvalue((int)target);
3513
3514    // copy argument pname
3515    GLMessage_DataType *arg_pname = glmsg.add_args();
3516    arg_pname->set_isarray(false);
3517    arg_pname->set_type(GLMessage::DataType::ENUM);
3518    arg_pname->add_intvalue((int)pname);
3519
3520    // copy argument params
3521    GLMessage_DataType *arg_params = glmsg.add_args();
3522    arg_params->set_isarray(false);
3523    arg_params->set_type(GLMessage::DataType::INT);
3524    arg_params->add_intvalue((int)params);
3525
3526    // call function
3527    nsecs_t start_time = systemTime();
3528    glContext->hooks->gl.glTexParameteriv(target, pname, params);
3529    nsecs_t end_time = systemTime();
3530
3531    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3532    glContext->traceGLMessage(&glmsg);
3533}
3534
3535void GLTrace_glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels) {
3536    GLMessage glmsg;
3537    GLTraceContext *glContext = getGLTraceContext();
3538
3539    glmsg.set_function(GLMessage::glTexSubImage2D);
3540
3541    // copy argument target
3542    GLMessage_DataType *arg_target = glmsg.add_args();
3543    arg_target->set_isarray(false);
3544    arg_target->set_type(GLMessage::DataType::ENUM);
3545    arg_target->add_intvalue((int)target);
3546
3547    // copy argument level
3548    GLMessage_DataType *arg_level = glmsg.add_args();
3549    arg_level->set_isarray(false);
3550    arg_level->set_type(GLMessage::DataType::INT);
3551    arg_level->add_intvalue(level);
3552
3553    // copy argument xoffset
3554    GLMessage_DataType *arg_xoffset = glmsg.add_args();
3555    arg_xoffset->set_isarray(false);
3556    arg_xoffset->set_type(GLMessage::DataType::INT);
3557    arg_xoffset->add_intvalue(xoffset);
3558
3559    // copy argument yoffset
3560    GLMessage_DataType *arg_yoffset = glmsg.add_args();
3561    arg_yoffset->set_isarray(false);
3562    arg_yoffset->set_type(GLMessage::DataType::INT);
3563    arg_yoffset->add_intvalue(yoffset);
3564
3565    // copy argument width
3566    GLMessage_DataType *arg_width = glmsg.add_args();
3567    arg_width->set_isarray(false);
3568    arg_width->set_type(GLMessage::DataType::INT);
3569    arg_width->add_intvalue(width);
3570
3571    // copy argument height
3572    GLMessage_DataType *arg_height = glmsg.add_args();
3573    arg_height->set_isarray(false);
3574    arg_height->set_type(GLMessage::DataType::INT);
3575    arg_height->add_intvalue(height);
3576
3577    // copy argument format
3578    GLMessage_DataType *arg_format = glmsg.add_args();
3579    arg_format->set_isarray(false);
3580    arg_format->set_type(GLMessage::DataType::ENUM);
3581    arg_format->add_intvalue((int)format);
3582
3583    // copy argument type
3584    GLMessage_DataType *arg_type = glmsg.add_args();
3585    arg_type->set_isarray(false);
3586    arg_type->set_type(GLMessage::DataType::ENUM);
3587    arg_type->add_intvalue((int)type);
3588
3589    // copy argument pixels
3590    GLMessage_DataType *arg_pixels = glmsg.add_args();
3591    arg_pixels->set_isarray(false);
3592    arg_pixels->set_type(GLMessage::DataType::INT);
3593    arg_pixels->add_intvalue((int)pixels);
3594
3595    // call function
3596    nsecs_t start_time = systemTime();
3597    glContext->hooks->gl.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
3598    nsecs_t end_time = systemTime();
3599
3600    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3601    glContext->traceGLMessage(&glmsg);
3602}
3603
3604void GLTrace_glUniform1f(GLint location, GLfloat x) {
3605    GLMessage glmsg;
3606    GLTraceContext *glContext = getGLTraceContext();
3607
3608    glmsg.set_function(GLMessage::glUniform1f);
3609
3610    // copy argument location
3611    GLMessage_DataType *arg_location = glmsg.add_args();
3612    arg_location->set_isarray(false);
3613    arg_location->set_type(GLMessage::DataType::INT);
3614    arg_location->add_intvalue(location);
3615
3616    // copy argument x
3617    GLMessage_DataType *arg_x = glmsg.add_args();
3618    arg_x->set_isarray(false);
3619    arg_x->set_type(GLMessage::DataType::FLOAT);
3620    arg_x->add_floatvalue(x);
3621
3622    // call function
3623    nsecs_t start_time = systemTime();
3624    glContext->hooks->gl.glUniform1f(location, x);
3625    nsecs_t end_time = systemTime();
3626
3627    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3628    glContext->traceGLMessage(&glmsg);
3629}
3630
3631void GLTrace_glUniform1fv(GLint location, GLsizei count, const GLfloat* v) {
3632    GLMessage glmsg;
3633    GLTraceContext *glContext = getGLTraceContext();
3634
3635    glmsg.set_function(GLMessage::glUniform1fv);
3636
3637    // copy argument location
3638    GLMessage_DataType *arg_location = glmsg.add_args();
3639    arg_location->set_isarray(false);
3640    arg_location->set_type(GLMessage::DataType::INT);
3641    arg_location->add_intvalue(location);
3642
3643    // copy argument count
3644    GLMessage_DataType *arg_count = glmsg.add_args();
3645    arg_count->set_isarray(false);
3646    arg_count->set_type(GLMessage::DataType::INT);
3647    arg_count->add_intvalue(count);
3648
3649    // copy argument v
3650    GLMessage_DataType *arg_v = glmsg.add_args();
3651    arg_v->set_isarray(false);
3652    arg_v->set_type(GLMessage::DataType::INT);
3653    arg_v->add_intvalue((int)v);
3654
3655    // call function
3656    nsecs_t start_time = systemTime();
3657    glContext->hooks->gl.glUniform1fv(location, count, v);
3658    nsecs_t end_time = systemTime();
3659
3660    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3661    glContext->traceGLMessage(&glmsg);
3662}
3663
3664void GLTrace_glUniform1i(GLint location, GLint x) {
3665    GLMessage glmsg;
3666    GLTraceContext *glContext = getGLTraceContext();
3667
3668    glmsg.set_function(GLMessage::glUniform1i);
3669
3670    // copy argument location
3671    GLMessage_DataType *arg_location = glmsg.add_args();
3672    arg_location->set_isarray(false);
3673    arg_location->set_type(GLMessage::DataType::INT);
3674    arg_location->add_intvalue(location);
3675
3676    // copy argument x
3677    GLMessage_DataType *arg_x = glmsg.add_args();
3678    arg_x->set_isarray(false);
3679    arg_x->set_type(GLMessage::DataType::INT);
3680    arg_x->add_intvalue(x);
3681
3682    // call function
3683    nsecs_t start_time = systemTime();
3684    glContext->hooks->gl.glUniform1i(location, x);
3685    nsecs_t end_time = systemTime();
3686
3687    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3688    glContext->traceGLMessage(&glmsg);
3689}
3690
3691void GLTrace_glUniform1iv(GLint location, GLsizei count, const GLint* v) {
3692    GLMessage glmsg;
3693    GLTraceContext *glContext = getGLTraceContext();
3694
3695    glmsg.set_function(GLMessage::glUniform1iv);
3696
3697    // copy argument location
3698    GLMessage_DataType *arg_location = glmsg.add_args();
3699    arg_location->set_isarray(false);
3700    arg_location->set_type(GLMessage::DataType::INT);
3701    arg_location->add_intvalue(location);
3702
3703    // copy argument count
3704    GLMessage_DataType *arg_count = glmsg.add_args();
3705    arg_count->set_isarray(false);
3706    arg_count->set_type(GLMessage::DataType::INT);
3707    arg_count->add_intvalue(count);
3708
3709    // copy argument v
3710    GLMessage_DataType *arg_v = glmsg.add_args();
3711    arg_v->set_isarray(false);
3712    arg_v->set_type(GLMessage::DataType::INT);
3713    arg_v->add_intvalue((int)v);
3714
3715    // call function
3716    nsecs_t start_time = systemTime();
3717    glContext->hooks->gl.glUniform1iv(location, count, v);
3718    nsecs_t end_time = systemTime();
3719
3720    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3721    glContext->traceGLMessage(&glmsg);
3722}
3723
3724void GLTrace_glUniform2f(GLint location, GLfloat x, GLfloat y) {
3725    GLMessage glmsg;
3726    GLTraceContext *glContext = getGLTraceContext();
3727
3728    glmsg.set_function(GLMessage::glUniform2f);
3729
3730    // copy argument location
3731    GLMessage_DataType *arg_location = glmsg.add_args();
3732    arg_location->set_isarray(false);
3733    arg_location->set_type(GLMessage::DataType::INT);
3734    arg_location->add_intvalue(location);
3735
3736    // copy argument x
3737    GLMessage_DataType *arg_x = glmsg.add_args();
3738    arg_x->set_isarray(false);
3739    arg_x->set_type(GLMessage::DataType::FLOAT);
3740    arg_x->add_floatvalue(x);
3741
3742    // copy argument y
3743    GLMessage_DataType *arg_y = glmsg.add_args();
3744    arg_y->set_isarray(false);
3745    arg_y->set_type(GLMessage::DataType::FLOAT);
3746    arg_y->add_floatvalue(y);
3747
3748    // call function
3749    nsecs_t start_time = systemTime();
3750    glContext->hooks->gl.glUniform2f(location, x, y);
3751    nsecs_t end_time = systemTime();
3752
3753    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3754    glContext->traceGLMessage(&glmsg);
3755}
3756
3757void GLTrace_glUniform2fv(GLint location, GLsizei count, const GLfloat* v) {
3758    GLMessage glmsg;
3759    GLTraceContext *glContext = getGLTraceContext();
3760
3761    glmsg.set_function(GLMessage::glUniform2fv);
3762
3763    // copy argument location
3764    GLMessage_DataType *arg_location = glmsg.add_args();
3765    arg_location->set_isarray(false);
3766    arg_location->set_type(GLMessage::DataType::INT);
3767    arg_location->add_intvalue(location);
3768
3769    // copy argument count
3770    GLMessage_DataType *arg_count = glmsg.add_args();
3771    arg_count->set_isarray(false);
3772    arg_count->set_type(GLMessage::DataType::INT);
3773    arg_count->add_intvalue(count);
3774
3775    // copy argument v
3776    GLMessage_DataType *arg_v = glmsg.add_args();
3777    arg_v->set_isarray(false);
3778    arg_v->set_type(GLMessage::DataType::INT);
3779    arg_v->add_intvalue((int)v);
3780
3781    // call function
3782    nsecs_t start_time = systemTime();
3783    glContext->hooks->gl.glUniform2fv(location, count, v);
3784    nsecs_t end_time = systemTime();
3785
3786    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3787    glContext->traceGLMessage(&glmsg);
3788}
3789
3790void GLTrace_glUniform2i(GLint location, GLint x, GLint y) {
3791    GLMessage glmsg;
3792    GLTraceContext *glContext = getGLTraceContext();
3793
3794    glmsg.set_function(GLMessage::glUniform2i);
3795
3796    // copy argument location
3797    GLMessage_DataType *arg_location = glmsg.add_args();
3798    arg_location->set_isarray(false);
3799    arg_location->set_type(GLMessage::DataType::INT);
3800    arg_location->add_intvalue(location);
3801
3802    // copy argument x
3803    GLMessage_DataType *arg_x = glmsg.add_args();
3804    arg_x->set_isarray(false);
3805    arg_x->set_type(GLMessage::DataType::INT);
3806    arg_x->add_intvalue(x);
3807
3808    // copy argument y
3809    GLMessage_DataType *arg_y = glmsg.add_args();
3810    arg_y->set_isarray(false);
3811    arg_y->set_type(GLMessage::DataType::INT);
3812    arg_y->add_intvalue(y);
3813
3814    // call function
3815    nsecs_t start_time = systemTime();
3816    glContext->hooks->gl.glUniform2i(location, x, y);
3817    nsecs_t end_time = systemTime();
3818
3819    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3820    glContext->traceGLMessage(&glmsg);
3821}
3822
3823void GLTrace_glUniform2iv(GLint location, GLsizei count, const GLint* v) {
3824    GLMessage glmsg;
3825    GLTraceContext *glContext = getGLTraceContext();
3826
3827    glmsg.set_function(GLMessage::glUniform2iv);
3828
3829    // copy argument location
3830    GLMessage_DataType *arg_location = glmsg.add_args();
3831    arg_location->set_isarray(false);
3832    arg_location->set_type(GLMessage::DataType::INT);
3833    arg_location->add_intvalue(location);
3834
3835    // copy argument count
3836    GLMessage_DataType *arg_count = glmsg.add_args();
3837    arg_count->set_isarray(false);
3838    arg_count->set_type(GLMessage::DataType::INT);
3839    arg_count->add_intvalue(count);
3840
3841    // copy argument v
3842    GLMessage_DataType *arg_v = glmsg.add_args();
3843    arg_v->set_isarray(false);
3844    arg_v->set_type(GLMessage::DataType::INT);
3845    arg_v->add_intvalue((int)v);
3846
3847    // call function
3848    nsecs_t start_time = systemTime();
3849    glContext->hooks->gl.glUniform2iv(location, count, v);
3850    nsecs_t end_time = systemTime();
3851
3852    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3853    glContext->traceGLMessage(&glmsg);
3854}
3855
3856void GLTrace_glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z) {
3857    GLMessage glmsg;
3858    GLTraceContext *glContext = getGLTraceContext();
3859
3860    glmsg.set_function(GLMessage::glUniform3f);
3861
3862    // copy argument location
3863    GLMessage_DataType *arg_location = glmsg.add_args();
3864    arg_location->set_isarray(false);
3865    arg_location->set_type(GLMessage::DataType::INT);
3866    arg_location->add_intvalue(location);
3867
3868    // copy argument x
3869    GLMessage_DataType *arg_x = glmsg.add_args();
3870    arg_x->set_isarray(false);
3871    arg_x->set_type(GLMessage::DataType::FLOAT);
3872    arg_x->add_floatvalue(x);
3873
3874    // copy argument y
3875    GLMessage_DataType *arg_y = glmsg.add_args();
3876    arg_y->set_isarray(false);
3877    arg_y->set_type(GLMessage::DataType::FLOAT);
3878    arg_y->add_floatvalue(y);
3879
3880    // copy argument z
3881    GLMessage_DataType *arg_z = glmsg.add_args();
3882    arg_z->set_isarray(false);
3883    arg_z->set_type(GLMessage::DataType::FLOAT);
3884    arg_z->add_floatvalue(z);
3885
3886    // call function
3887    nsecs_t start_time = systemTime();
3888    glContext->hooks->gl.glUniform3f(location, x, y, z);
3889    nsecs_t end_time = systemTime();
3890
3891    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3892    glContext->traceGLMessage(&glmsg);
3893}
3894
3895void GLTrace_glUniform3fv(GLint location, GLsizei count, const GLfloat* v) {
3896    GLMessage glmsg;
3897    GLTraceContext *glContext = getGLTraceContext();
3898
3899    glmsg.set_function(GLMessage::glUniform3fv);
3900
3901    // copy argument location
3902    GLMessage_DataType *arg_location = glmsg.add_args();
3903    arg_location->set_isarray(false);
3904    arg_location->set_type(GLMessage::DataType::INT);
3905    arg_location->add_intvalue(location);
3906
3907    // copy argument count
3908    GLMessage_DataType *arg_count = glmsg.add_args();
3909    arg_count->set_isarray(false);
3910    arg_count->set_type(GLMessage::DataType::INT);
3911    arg_count->add_intvalue(count);
3912
3913    // copy argument v
3914    GLMessage_DataType *arg_v = glmsg.add_args();
3915    arg_v->set_isarray(false);
3916    arg_v->set_type(GLMessage::DataType::INT);
3917    arg_v->add_intvalue((int)v);
3918
3919    // call function
3920    nsecs_t start_time = systemTime();
3921    glContext->hooks->gl.glUniform3fv(location, count, v);
3922    nsecs_t end_time = systemTime();
3923
3924    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3925    glContext->traceGLMessage(&glmsg);
3926}
3927
3928void GLTrace_glUniform3i(GLint location, GLint x, GLint y, GLint z) {
3929    GLMessage glmsg;
3930    GLTraceContext *glContext = getGLTraceContext();
3931
3932    glmsg.set_function(GLMessage::glUniform3i);
3933
3934    // copy argument location
3935    GLMessage_DataType *arg_location = glmsg.add_args();
3936    arg_location->set_isarray(false);
3937    arg_location->set_type(GLMessage::DataType::INT);
3938    arg_location->add_intvalue(location);
3939
3940    // copy argument x
3941    GLMessage_DataType *arg_x = glmsg.add_args();
3942    arg_x->set_isarray(false);
3943    arg_x->set_type(GLMessage::DataType::INT);
3944    arg_x->add_intvalue(x);
3945
3946    // copy argument y
3947    GLMessage_DataType *arg_y = glmsg.add_args();
3948    arg_y->set_isarray(false);
3949    arg_y->set_type(GLMessage::DataType::INT);
3950    arg_y->add_intvalue(y);
3951
3952    // copy argument z
3953    GLMessage_DataType *arg_z = glmsg.add_args();
3954    arg_z->set_isarray(false);
3955    arg_z->set_type(GLMessage::DataType::INT);
3956    arg_z->add_intvalue(z);
3957
3958    // call function
3959    nsecs_t start_time = systemTime();
3960    glContext->hooks->gl.glUniform3i(location, x, y, z);
3961    nsecs_t end_time = systemTime();
3962
3963    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3964    glContext->traceGLMessage(&glmsg);
3965}
3966
3967void GLTrace_glUniform3iv(GLint location, GLsizei count, const GLint* v) {
3968    GLMessage glmsg;
3969    GLTraceContext *glContext = getGLTraceContext();
3970
3971    glmsg.set_function(GLMessage::glUniform3iv);
3972
3973    // copy argument location
3974    GLMessage_DataType *arg_location = glmsg.add_args();
3975    arg_location->set_isarray(false);
3976    arg_location->set_type(GLMessage::DataType::INT);
3977    arg_location->add_intvalue(location);
3978
3979    // copy argument count
3980    GLMessage_DataType *arg_count = glmsg.add_args();
3981    arg_count->set_isarray(false);
3982    arg_count->set_type(GLMessage::DataType::INT);
3983    arg_count->add_intvalue(count);
3984
3985    // copy argument v
3986    GLMessage_DataType *arg_v = glmsg.add_args();
3987    arg_v->set_isarray(false);
3988    arg_v->set_type(GLMessage::DataType::INT);
3989    arg_v->add_intvalue((int)v);
3990
3991    // call function
3992    nsecs_t start_time = systemTime();
3993    glContext->hooks->gl.glUniform3iv(location, count, v);
3994    nsecs_t end_time = systemTime();
3995
3996    fixupGLMessage(glContext, start_time, end_time, &glmsg);
3997    glContext->traceGLMessage(&glmsg);
3998}
3999
4000void GLTrace_glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {
4001    GLMessage glmsg;
4002    GLTraceContext *glContext = getGLTraceContext();
4003
4004    glmsg.set_function(GLMessage::glUniform4f);
4005
4006    // copy argument location
4007    GLMessage_DataType *arg_location = glmsg.add_args();
4008    arg_location->set_isarray(false);
4009    arg_location->set_type(GLMessage::DataType::INT);
4010    arg_location->add_intvalue(location);
4011
4012    // copy argument x
4013    GLMessage_DataType *arg_x = glmsg.add_args();
4014    arg_x->set_isarray(false);
4015    arg_x->set_type(GLMessage::DataType::FLOAT);
4016    arg_x->add_floatvalue(x);
4017
4018    // copy argument y
4019    GLMessage_DataType *arg_y = glmsg.add_args();
4020    arg_y->set_isarray(false);
4021    arg_y->set_type(GLMessage::DataType::FLOAT);
4022    arg_y->add_floatvalue(y);
4023
4024    // copy argument z
4025    GLMessage_DataType *arg_z = glmsg.add_args();
4026    arg_z->set_isarray(false);
4027    arg_z->set_type(GLMessage::DataType::FLOAT);
4028    arg_z->add_floatvalue(z);
4029
4030    // copy argument w
4031    GLMessage_DataType *arg_w = glmsg.add_args();
4032    arg_w->set_isarray(false);
4033    arg_w->set_type(GLMessage::DataType::FLOAT);
4034    arg_w->add_floatvalue(w);
4035
4036    // call function
4037    nsecs_t start_time = systemTime();
4038    glContext->hooks->gl.glUniform4f(location, x, y, z, w);
4039    nsecs_t end_time = systemTime();
4040
4041    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4042    glContext->traceGLMessage(&glmsg);
4043}
4044
4045void GLTrace_glUniform4fv(GLint location, GLsizei count, const GLfloat* v) {
4046    GLMessage glmsg;
4047    GLTraceContext *glContext = getGLTraceContext();
4048
4049    glmsg.set_function(GLMessage::glUniform4fv);
4050
4051    // copy argument location
4052    GLMessage_DataType *arg_location = glmsg.add_args();
4053    arg_location->set_isarray(false);
4054    arg_location->set_type(GLMessage::DataType::INT);
4055    arg_location->add_intvalue(location);
4056
4057    // copy argument count
4058    GLMessage_DataType *arg_count = glmsg.add_args();
4059    arg_count->set_isarray(false);
4060    arg_count->set_type(GLMessage::DataType::INT);
4061    arg_count->add_intvalue(count);
4062
4063    // copy argument v
4064    GLMessage_DataType *arg_v = glmsg.add_args();
4065    arg_v->set_isarray(false);
4066    arg_v->set_type(GLMessage::DataType::INT);
4067    arg_v->add_intvalue((int)v);
4068
4069    // call function
4070    nsecs_t start_time = systemTime();
4071    glContext->hooks->gl.glUniform4fv(location, count, v);
4072    nsecs_t end_time = systemTime();
4073
4074    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4075    glContext->traceGLMessage(&glmsg);
4076}
4077
4078void GLTrace_glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w) {
4079    GLMessage glmsg;
4080    GLTraceContext *glContext = getGLTraceContext();
4081
4082    glmsg.set_function(GLMessage::glUniform4i);
4083
4084    // copy argument location
4085    GLMessage_DataType *arg_location = glmsg.add_args();
4086    arg_location->set_isarray(false);
4087    arg_location->set_type(GLMessage::DataType::INT);
4088    arg_location->add_intvalue(location);
4089
4090    // copy argument x
4091    GLMessage_DataType *arg_x = glmsg.add_args();
4092    arg_x->set_isarray(false);
4093    arg_x->set_type(GLMessage::DataType::INT);
4094    arg_x->add_intvalue(x);
4095
4096    // copy argument y
4097    GLMessage_DataType *arg_y = glmsg.add_args();
4098    arg_y->set_isarray(false);
4099    arg_y->set_type(GLMessage::DataType::INT);
4100    arg_y->add_intvalue(y);
4101
4102    // copy argument z
4103    GLMessage_DataType *arg_z = glmsg.add_args();
4104    arg_z->set_isarray(false);
4105    arg_z->set_type(GLMessage::DataType::INT);
4106    arg_z->add_intvalue(z);
4107
4108    // copy argument w
4109    GLMessage_DataType *arg_w = glmsg.add_args();
4110    arg_w->set_isarray(false);
4111    arg_w->set_type(GLMessage::DataType::INT);
4112    arg_w->add_intvalue(w);
4113
4114    // call function
4115    nsecs_t start_time = systemTime();
4116    glContext->hooks->gl.glUniform4i(location, x, y, z, w);
4117    nsecs_t end_time = systemTime();
4118
4119    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4120    glContext->traceGLMessage(&glmsg);
4121}
4122
4123void GLTrace_glUniform4iv(GLint location, GLsizei count, const GLint* v) {
4124    GLMessage glmsg;
4125    GLTraceContext *glContext = getGLTraceContext();
4126
4127    glmsg.set_function(GLMessage::glUniform4iv);
4128
4129    // copy argument location
4130    GLMessage_DataType *arg_location = glmsg.add_args();
4131    arg_location->set_isarray(false);
4132    arg_location->set_type(GLMessage::DataType::INT);
4133    arg_location->add_intvalue(location);
4134
4135    // copy argument count
4136    GLMessage_DataType *arg_count = glmsg.add_args();
4137    arg_count->set_isarray(false);
4138    arg_count->set_type(GLMessage::DataType::INT);
4139    arg_count->add_intvalue(count);
4140
4141    // copy argument v
4142    GLMessage_DataType *arg_v = glmsg.add_args();
4143    arg_v->set_isarray(false);
4144    arg_v->set_type(GLMessage::DataType::INT);
4145    arg_v->add_intvalue((int)v);
4146
4147    // call function
4148    nsecs_t start_time = systemTime();
4149    glContext->hooks->gl.glUniform4iv(location, count, v);
4150    nsecs_t end_time = systemTime();
4151
4152    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4153    glContext->traceGLMessage(&glmsg);
4154}
4155
4156void GLTrace_glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) {
4157    GLMessage glmsg;
4158    GLTraceContext *glContext = getGLTraceContext();
4159
4160    glmsg.set_function(GLMessage::glUniformMatrix2fv);
4161
4162    // copy argument location
4163    GLMessage_DataType *arg_location = glmsg.add_args();
4164    arg_location->set_isarray(false);
4165    arg_location->set_type(GLMessage::DataType::INT);
4166    arg_location->add_intvalue(location);
4167
4168    // copy argument count
4169    GLMessage_DataType *arg_count = glmsg.add_args();
4170    arg_count->set_isarray(false);
4171    arg_count->set_type(GLMessage::DataType::INT);
4172    arg_count->add_intvalue(count);
4173
4174    // copy argument transpose
4175    GLMessage_DataType *arg_transpose = glmsg.add_args();
4176    arg_transpose->set_isarray(false);
4177    arg_transpose->set_type(GLMessage::DataType::BOOL);
4178    arg_transpose->add_boolvalue(transpose);
4179
4180    // copy argument value
4181    GLMessage_DataType *arg_value = glmsg.add_args();
4182    arg_value->set_isarray(false);
4183    arg_value->set_type(GLMessage::DataType::INT);
4184    arg_value->add_intvalue((int)value);
4185
4186    // call function
4187    nsecs_t start_time = systemTime();
4188    glContext->hooks->gl.glUniformMatrix2fv(location, count, transpose, value);
4189    nsecs_t end_time = systemTime();
4190
4191    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4192    glContext->traceGLMessage(&glmsg);
4193}
4194
4195void GLTrace_glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) {
4196    GLMessage glmsg;
4197    GLTraceContext *glContext = getGLTraceContext();
4198
4199    glmsg.set_function(GLMessage::glUniformMatrix3fv);
4200
4201    // copy argument location
4202    GLMessage_DataType *arg_location = glmsg.add_args();
4203    arg_location->set_isarray(false);
4204    arg_location->set_type(GLMessage::DataType::INT);
4205    arg_location->add_intvalue(location);
4206
4207    // copy argument count
4208    GLMessage_DataType *arg_count = glmsg.add_args();
4209    arg_count->set_isarray(false);
4210    arg_count->set_type(GLMessage::DataType::INT);
4211    arg_count->add_intvalue(count);
4212
4213    // copy argument transpose
4214    GLMessage_DataType *arg_transpose = glmsg.add_args();
4215    arg_transpose->set_isarray(false);
4216    arg_transpose->set_type(GLMessage::DataType::BOOL);
4217    arg_transpose->add_boolvalue(transpose);
4218
4219    // copy argument value
4220    GLMessage_DataType *arg_value = glmsg.add_args();
4221    arg_value->set_isarray(false);
4222    arg_value->set_type(GLMessage::DataType::INT);
4223    arg_value->add_intvalue((int)value);
4224
4225    // call function
4226    nsecs_t start_time = systemTime();
4227    glContext->hooks->gl.glUniformMatrix3fv(location, count, transpose, value);
4228    nsecs_t end_time = systemTime();
4229
4230    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4231    glContext->traceGLMessage(&glmsg);
4232}
4233
4234void GLTrace_glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) {
4235    GLMessage glmsg;
4236    GLTraceContext *glContext = getGLTraceContext();
4237
4238    glmsg.set_function(GLMessage::glUniformMatrix4fv);
4239
4240    // copy argument location
4241    GLMessage_DataType *arg_location = glmsg.add_args();
4242    arg_location->set_isarray(false);
4243    arg_location->set_type(GLMessage::DataType::INT);
4244    arg_location->add_intvalue(location);
4245
4246    // copy argument count
4247    GLMessage_DataType *arg_count = glmsg.add_args();
4248    arg_count->set_isarray(false);
4249    arg_count->set_type(GLMessage::DataType::INT);
4250    arg_count->add_intvalue(count);
4251
4252    // copy argument transpose
4253    GLMessage_DataType *arg_transpose = glmsg.add_args();
4254    arg_transpose->set_isarray(false);
4255    arg_transpose->set_type(GLMessage::DataType::BOOL);
4256    arg_transpose->add_boolvalue(transpose);
4257
4258    // copy argument value
4259    GLMessage_DataType *arg_value = glmsg.add_args();
4260    arg_value->set_isarray(false);
4261    arg_value->set_type(GLMessage::DataType::INT);
4262    arg_value->add_intvalue((int)value);
4263
4264    // call function
4265    nsecs_t start_time = systemTime();
4266    glContext->hooks->gl.glUniformMatrix4fv(location, count, transpose, value);
4267    nsecs_t end_time = systemTime();
4268
4269    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4270    glContext->traceGLMessage(&glmsg);
4271}
4272
4273void GLTrace_glUseProgram(GLuint program) {
4274    GLMessage glmsg;
4275    GLTraceContext *glContext = getGLTraceContext();
4276
4277    glmsg.set_function(GLMessage::glUseProgram);
4278
4279    // copy argument program
4280    GLMessage_DataType *arg_program = glmsg.add_args();
4281    arg_program->set_isarray(false);
4282    arg_program->set_type(GLMessage::DataType::INT);
4283    arg_program->add_intvalue(program);
4284
4285    // call function
4286    nsecs_t start_time = systemTime();
4287    glContext->hooks->gl.glUseProgram(program);
4288    nsecs_t end_time = systemTime();
4289
4290    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4291    glContext->traceGLMessage(&glmsg);
4292}
4293
4294void GLTrace_glValidateProgram(GLuint program) {
4295    GLMessage glmsg;
4296    GLTraceContext *glContext = getGLTraceContext();
4297
4298    glmsg.set_function(GLMessage::glValidateProgram);
4299
4300    // copy argument program
4301    GLMessage_DataType *arg_program = glmsg.add_args();
4302    arg_program->set_isarray(false);
4303    arg_program->set_type(GLMessage::DataType::INT);
4304    arg_program->add_intvalue(program);
4305
4306    // call function
4307    nsecs_t start_time = systemTime();
4308    glContext->hooks->gl.glValidateProgram(program);
4309    nsecs_t end_time = systemTime();
4310
4311    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4312    glContext->traceGLMessage(&glmsg);
4313}
4314
4315void GLTrace_glVertexAttrib1f(GLuint indx, GLfloat x) {
4316    GLMessage glmsg;
4317    GLTraceContext *glContext = getGLTraceContext();
4318
4319    glmsg.set_function(GLMessage::glVertexAttrib1f);
4320
4321    // copy argument indx
4322    GLMessage_DataType *arg_indx = glmsg.add_args();
4323    arg_indx->set_isarray(false);
4324    arg_indx->set_type(GLMessage::DataType::INT);
4325    arg_indx->add_intvalue(indx);
4326
4327    // copy argument x
4328    GLMessage_DataType *arg_x = glmsg.add_args();
4329    arg_x->set_isarray(false);
4330    arg_x->set_type(GLMessage::DataType::FLOAT);
4331    arg_x->add_floatvalue(x);
4332
4333    // call function
4334    nsecs_t start_time = systemTime();
4335    glContext->hooks->gl.glVertexAttrib1f(indx, x);
4336    nsecs_t end_time = systemTime();
4337
4338    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4339    glContext->traceGLMessage(&glmsg);
4340}
4341
4342void GLTrace_glVertexAttrib1fv(GLuint indx, const GLfloat* values) {
4343    GLMessage glmsg;
4344    GLTraceContext *glContext = getGLTraceContext();
4345
4346    glmsg.set_function(GLMessage::glVertexAttrib1fv);
4347
4348    // copy argument indx
4349    GLMessage_DataType *arg_indx = glmsg.add_args();
4350    arg_indx->set_isarray(false);
4351    arg_indx->set_type(GLMessage::DataType::INT);
4352    arg_indx->add_intvalue(indx);
4353
4354    // copy argument values
4355    GLMessage_DataType *arg_values = glmsg.add_args();
4356    arg_values->set_isarray(false);
4357    arg_values->set_type(GLMessage::DataType::INT);
4358    arg_values->add_intvalue((int)values);
4359
4360    // call function
4361    nsecs_t start_time = systemTime();
4362    glContext->hooks->gl.glVertexAttrib1fv(indx, values);
4363    nsecs_t end_time = systemTime();
4364
4365    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4366    glContext->traceGLMessage(&glmsg);
4367}
4368
4369void GLTrace_glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) {
4370    GLMessage glmsg;
4371    GLTraceContext *glContext = getGLTraceContext();
4372
4373    glmsg.set_function(GLMessage::glVertexAttrib2f);
4374
4375    // copy argument indx
4376    GLMessage_DataType *arg_indx = glmsg.add_args();
4377    arg_indx->set_isarray(false);
4378    arg_indx->set_type(GLMessage::DataType::INT);
4379    arg_indx->add_intvalue(indx);
4380
4381    // copy argument x
4382    GLMessage_DataType *arg_x = glmsg.add_args();
4383    arg_x->set_isarray(false);
4384    arg_x->set_type(GLMessage::DataType::FLOAT);
4385    arg_x->add_floatvalue(x);
4386
4387    // copy argument y
4388    GLMessage_DataType *arg_y = glmsg.add_args();
4389    arg_y->set_isarray(false);
4390    arg_y->set_type(GLMessage::DataType::FLOAT);
4391    arg_y->add_floatvalue(y);
4392
4393    // call function
4394    nsecs_t start_time = systemTime();
4395    glContext->hooks->gl.glVertexAttrib2f(indx, x, y);
4396    nsecs_t end_time = systemTime();
4397
4398    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4399    glContext->traceGLMessage(&glmsg);
4400}
4401
4402void GLTrace_glVertexAttrib2fv(GLuint indx, const GLfloat* values) {
4403    GLMessage glmsg;
4404    GLTraceContext *glContext = getGLTraceContext();
4405
4406    glmsg.set_function(GLMessage::glVertexAttrib2fv);
4407
4408    // copy argument indx
4409    GLMessage_DataType *arg_indx = glmsg.add_args();
4410    arg_indx->set_isarray(false);
4411    arg_indx->set_type(GLMessage::DataType::INT);
4412    arg_indx->add_intvalue(indx);
4413
4414    // copy argument values
4415    GLMessage_DataType *arg_values = glmsg.add_args();
4416    arg_values->set_isarray(false);
4417    arg_values->set_type(GLMessage::DataType::INT);
4418    arg_values->add_intvalue((int)values);
4419
4420    // call function
4421    nsecs_t start_time = systemTime();
4422    glContext->hooks->gl.glVertexAttrib2fv(indx, values);
4423    nsecs_t end_time = systemTime();
4424
4425    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4426    glContext->traceGLMessage(&glmsg);
4427}
4428
4429void GLTrace_glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z) {
4430    GLMessage glmsg;
4431    GLTraceContext *glContext = getGLTraceContext();
4432
4433    glmsg.set_function(GLMessage::glVertexAttrib3f);
4434
4435    // copy argument indx
4436    GLMessage_DataType *arg_indx = glmsg.add_args();
4437    arg_indx->set_isarray(false);
4438    arg_indx->set_type(GLMessage::DataType::INT);
4439    arg_indx->add_intvalue(indx);
4440
4441    // copy argument x
4442    GLMessage_DataType *arg_x = glmsg.add_args();
4443    arg_x->set_isarray(false);
4444    arg_x->set_type(GLMessage::DataType::FLOAT);
4445    arg_x->add_floatvalue(x);
4446
4447    // copy argument y
4448    GLMessage_DataType *arg_y = glmsg.add_args();
4449    arg_y->set_isarray(false);
4450    arg_y->set_type(GLMessage::DataType::FLOAT);
4451    arg_y->add_floatvalue(y);
4452
4453    // copy argument z
4454    GLMessage_DataType *arg_z = glmsg.add_args();
4455    arg_z->set_isarray(false);
4456    arg_z->set_type(GLMessage::DataType::FLOAT);
4457    arg_z->add_floatvalue(z);
4458
4459    // call function
4460    nsecs_t start_time = systemTime();
4461    glContext->hooks->gl.glVertexAttrib3f(indx, x, y, z);
4462    nsecs_t end_time = systemTime();
4463
4464    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4465    glContext->traceGLMessage(&glmsg);
4466}
4467
4468void GLTrace_glVertexAttrib3fv(GLuint indx, const GLfloat* values) {
4469    GLMessage glmsg;
4470    GLTraceContext *glContext = getGLTraceContext();
4471
4472    glmsg.set_function(GLMessage::glVertexAttrib3fv);
4473
4474    // copy argument indx
4475    GLMessage_DataType *arg_indx = glmsg.add_args();
4476    arg_indx->set_isarray(false);
4477    arg_indx->set_type(GLMessage::DataType::INT);
4478    arg_indx->add_intvalue(indx);
4479
4480    // copy argument values
4481    GLMessage_DataType *arg_values = glmsg.add_args();
4482    arg_values->set_isarray(false);
4483    arg_values->set_type(GLMessage::DataType::INT);
4484    arg_values->add_intvalue((int)values);
4485
4486    // call function
4487    nsecs_t start_time = systemTime();
4488    glContext->hooks->gl.glVertexAttrib3fv(indx, values);
4489    nsecs_t end_time = systemTime();
4490
4491    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4492    glContext->traceGLMessage(&glmsg);
4493}
4494
4495void GLTrace_glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {
4496    GLMessage glmsg;
4497    GLTraceContext *glContext = getGLTraceContext();
4498
4499    glmsg.set_function(GLMessage::glVertexAttrib4f);
4500
4501    // copy argument indx
4502    GLMessage_DataType *arg_indx = glmsg.add_args();
4503    arg_indx->set_isarray(false);
4504    arg_indx->set_type(GLMessage::DataType::INT);
4505    arg_indx->add_intvalue(indx);
4506
4507    // copy argument x
4508    GLMessage_DataType *arg_x = glmsg.add_args();
4509    arg_x->set_isarray(false);
4510    arg_x->set_type(GLMessage::DataType::FLOAT);
4511    arg_x->add_floatvalue(x);
4512
4513    // copy argument y
4514    GLMessage_DataType *arg_y = glmsg.add_args();
4515    arg_y->set_isarray(false);
4516    arg_y->set_type(GLMessage::DataType::FLOAT);
4517    arg_y->add_floatvalue(y);
4518
4519    // copy argument z
4520    GLMessage_DataType *arg_z = glmsg.add_args();
4521    arg_z->set_isarray(false);
4522    arg_z->set_type(GLMessage::DataType::FLOAT);
4523    arg_z->add_floatvalue(z);
4524
4525    // copy argument w
4526    GLMessage_DataType *arg_w = glmsg.add_args();
4527    arg_w->set_isarray(false);
4528    arg_w->set_type(GLMessage::DataType::FLOAT);
4529    arg_w->add_floatvalue(w);
4530
4531    // call function
4532    nsecs_t start_time = systemTime();
4533    glContext->hooks->gl.glVertexAttrib4f(indx, x, y, z, w);
4534    nsecs_t end_time = systemTime();
4535
4536    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4537    glContext->traceGLMessage(&glmsg);
4538}
4539
4540void GLTrace_glVertexAttrib4fv(GLuint indx, const GLfloat* values) {
4541    GLMessage glmsg;
4542    GLTraceContext *glContext = getGLTraceContext();
4543
4544    glmsg.set_function(GLMessage::glVertexAttrib4fv);
4545
4546    // copy argument indx
4547    GLMessage_DataType *arg_indx = glmsg.add_args();
4548    arg_indx->set_isarray(false);
4549    arg_indx->set_type(GLMessage::DataType::INT);
4550    arg_indx->add_intvalue(indx);
4551
4552    // copy argument values
4553    GLMessage_DataType *arg_values = glmsg.add_args();
4554    arg_values->set_isarray(false);
4555    arg_values->set_type(GLMessage::DataType::INT);
4556    arg_values->add_intvalue((int)values);
4557
4558    // call function
4559    nsecs_t start_time = systemTime();
4560    glContext->hooks->gl.glVertexAttrib4fv(indx, values);
4561    nsecs_t end_time = systemTime();
4562
4563    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4564    glContext->traceGLMessage(&glmsg);
4565}
4566
4567void GLTrace_glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr) {
4568    GLMessage glmsg;
4569    GLTraceContext *glContext = getGLTraceContext();
4570
4571    glmsg.set_function(GLMessage::glVertexAttribPointer);
4572
4573    // copy argument indx
4574    GLMessage_DataType *arg_indx = glmsg.add_args();
4575    arg_indx->set_isarray(false);
4576    arg_indx->set_type(GLMessage::DataType::INT);
4577    arg_indx->add_intvalue(indx);
4578
4579    // copy argument size
4580    GLMessage_DataType *arg_size = glmsg.add_args();
4581    arg_size->set_isarray(false);
4582    arg_size->set_type(GLMessage::DataType::INT);
4583    arg_size->add_intvalue(size);
4584
4585    // copy argument type
4586    GLMessage_DataType *arg_type = glmsg.add_args();
4587    arg_type->set_isarray(false);
4588    arg_type->set_type(GLMessage::DataType::ENUM);
4589    arg_type->add_intvalue((int)type);
4590
4591    // copy argument normalized
4592    GLMessage_DataType *arg_normalized = glmsg.add_args();
4593    arg_normalized->set_isarray(false);
4594    arg_normalized->set_type(GLMessage::DataType::BOOL);
4595    arg_normalized->add_boolvalue(normalized);
4596
4597    // copy argument stride
4598    GLMessage_DataType *arg_stride = glmsg.add_args();
4599    arg_stride->set_isarray(false);
4600    arg_stride->set_type(GLMessage::DataType::INT);
4601    arg_stride->add_intvalue(stride);
4602
4603    // copy argument ptr
4604    GLMessage_DataType *arg_ptr = glmsg.add_args();
4605    arg_ptr->set_isarray(false);
4606    arg_ptr->set_type(GLMessage::DataType::INT);
4607    arg_ptr->add_intvalue((int)ptr);
4608
4609    // call function
4610    nsecs_t start_time = systemTime();
4611    glContext->hooks->gl.glVertexAttribPointer(indx, size, type, normalized, stride, ptr);
4612    nsecs_t end_time = systemTime();
4613
4614    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4615    glContext->traceGLMessage(&glmsg);
4616}
4617
4618void GLTrace_glViewport(GLint x, GLint y, GLsizei width, GLsizei height) {
4619    GLMessage glmsg;
4620    GLTraceContext *glContext = getGLTraceContext();
4621
4622    glmsg.set_function(GLMessage::glViewport);
4623
4624    // copy argument x
4625    GLMessage_DataType *arg_x = glmsg.add_args();
4626    arg_x->set_isarray(false);
4627    arg_x->set_type(GLMessage::DataType::INT);
4628    arg_x->add_intvalue(x);
4629
4630    // copy argument y
4631    GLMessage_DataType *arg_y = glmsg.add_args();
4632    arg_y->set_isarray(false);
4633    arg_y->set_type(GLMessage::DataType::INT);
4634    arg_y->add_intvalue(y);
4635
4636    // copy argument width
4637    GLMessage_DataType *arg_width = glmsg.add_args();
4638    arg_width->set_isarray(false);
4639    arg_width->set_type(GLMessage::DataType::INT);
4640    arg_width->add_intvalue(width);
4641
4642    // copy argument height
4643    GLMessage_DataType *arg_height = glmsg.add_args();
4644    arg_height->set_isarray(false);
4645    arg_height->set_type(GLMessage::DataType::INT);
4646    arg_height->add_intvalue(height);
4647
4648    // call function
4649    nsecs_t start_time = systemTime();
4650    glContext->hooks->gl.glViewport(x, y, width, height);
4651    nsecs_t end_time = systemTime();
4652
4653    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4654    glContext->traceGLMessage(&glmsg);
4655}
4656
4657
4658// Definitions for GL2Ext APIs
4659
4660void GLTrace_glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image) {
4661    GLMessage glmsg;
4662    GLTraceContext *glContext = getGLTraceContext();
4663
4664    glmsg.set_function(GLMessage::glEGLImageTargetTexture2DOES);
4665
4666    // copy argument target
4667    GLMessage_DataType *arg_target = glmsg.add_args();
4668    arg_target->set_isarray(false);
4669    arg_target->set_type(GLMessage::DataType::ENUM);
4670    arg_target->add_intvalue((int)target);
4671
4672    // copy argument image
4673    GLMessage_DataType *arg_image = glmsg.add_args();
4674    arg_image->set_isarray(false);
4675    arg_image->set_type(GLMessage::DataType::INT);
4676    arg_image->add_intvalue((int)image);
4677
4678    // call function
4679    nsecs_t start_time = systemTime();
4680    glContext->hooks->gl.glEGLImageTargetTexture2DOES(target, image);
4681    nsecs_t end_time = systemTime();
4682
4683    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4684    glContext->traceGLMessage(&glmsg);
4685}
4686
4687void GLTrace_glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image) {
4688    GLMessage glmsg;
4689    GLTraceContext *glContext = getGLTraceContext();
4690
4691    glmsg.set_function(GLMessage::glEGLImageTargetRenderbufferStorageOES);
4692
4693    // copy argument target
4694    GLMessage_DataType *arg_target = glmsg.add_args();
4695    arg_target->set_isarray(false);
4696    arg_target->set_type(GLMessage::DataType::ENUM);
4697    arg_target->add_intvalue((int)target);
4698
4699    // copy argument image
4700    GLMessage_DataType *arg_image = glmsg.add_args();
4701    arg_image->set_isarray(false);
4702    arg_image->set_type(GLMessage::DataType::INT);
4703    arg_image->add_intvalue((int)image);
4704
4705    // call function
4706    nsecs_t start_time = systemTime();
4707    glContext->hooks->gl.glEGLImageTargetRenderbufferStorageOES(target, image);
4708    nsecs_t end_time = systemTime();
4709
4710    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4711    glContext->traceGLMessage(&glmsg);
4712}
4713
4714void GLTrace_glGetProgramBinaryOES(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary) {
4715    GLMessage glmsg;
4716    GLTraceContext *glContext = getGLTraceContext();
4717
4718    glmsg.set_function(GLMessage::glGetProgramBinaryOES);
4719
4720    // copy argument program
4721    GLMessage_DataType *arg_program = glmsg.add_args();
4722    arg_program->set_isarray(false);
4723    arg_program->set_type(GLMessage::DataType::INT);
4724    arg_program->add_intvalue(program);
4725
4726    // copy argument bufSize
4727    GLMessage_DataType *arg_bufSize = glmsg.add_args();
4728    arg_bufSize->set_isarray(false);
4729    arg_bufSize->set_type(GLMessage::DataType::INT);
4730    arg_bufSize->add_intvalue(bufSize);
4731
4732    // copy argument length
4733    GLMessage_DataType *arg_length = glmsg.add_args();
4734    arg_length->set_isarray(false);
4735    arg_length->set_type(GLMessage::DataType::INT);
4736    arg_length->add_intvalue((int)length);
4737
4738    // copy argument binaryFormat
4739    GLMessage_DataType *arg_binaryFormat = glmsg.add_args();
4740    arg_binaryFormat->set_isarray(false);
4741    arg_binaryFormat->set_type(GLMessage::DataType::INT);
4742    arg_binaryFormat->add_intvalue((int)binaryFormat);
4743
4744    // copy argument binary
4745    GLMessage_DataType *arg_binary = glmsg.add_args();
4746    arg_binary->set_isarray(false);
4747    arg_binary->set_type(GLMessage::DataType::INT);
4748    arg_binary->add_intvalue((int)binary);
4749
4750    // call function
4751    nsecs_t start_time = systemTime();
4752    glContext->hooks->gl.glGetProgramBinaryOES(program, bufSize, length, binaryFormat, binary);
4753    nsecs_t end_time = systemTime();
4754
4755    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4756    glContext->traceGLMessage(&glmsg);
4757}
4758
4759void GLTrace_glProgramBinaryOES(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length) {
4760    GLMessage glmsg;
4761    GLTraceContext *glContext = getGLTraceContext();
4762
4763    glmsg.set_function(GLMessage::glProgramBinaryOES);
4764
4765    // copy argument program
4766    GLMessage_DataType *arg_program = glmsg.add_args();
4767    arg_program->set_isarray(false);
4768    arg_program->set_type(GLMessage::DataType::INT);
4769    arg_program->add_intvalue(program);
4770
4771    // copy argument binaryFormat
4772    GLMessage_DataType *arg_binaryFormat = glmsg.add_args();
4773    arg_binaryFormat->set_isarray(false);
4774    arg_binaryFormat->set_type(GLMessage::DataType::ENUM);
4775    arg_binaryFormat->add_intvalue((int)binaryFormat);
4776
4777    // copy argument binary
4778    GLMessage_DataType *arg_binary = glmsg.add_args();
4779    arg_binary->set_isarray(false);
4780    arg_binary->set_type(GLMessage::DataType::INT);
4781    arg_binary->add_intvalue((int)binary);
4782
4783    // copy argument length
4784    GLMessage_DataType *arg_length = glmsg.add_args();
4785    arg_length->set_isarray(false);
4786    arg_length->set_type(GLMessage::DataType::INT);
4787    arg_length->add_intvalue(length);
4788
4789    // call function
4790    nsecs_t start_time = systemTime();
4791    glContext->hooks->gl.glProgramBinaryOES(program, binaryFormat, binary, length);
4792    nsecs_t end_time = systemTime();
4793
4794    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4795    glContext->traceGLMessage(&glmsg);
4796}
4797
4798void* GLTrace_glMapBufferOES(GLenum target, GLenum access) {
4799    GLMessage glmsg;
4800    GLTraceContext *glContext = getGLTraceContext();
4801
4802    glmsg.set_function(GLMessage::glMapBufferOES);
4803
4804    // copy argument target
4805    GLMessage_DataType *arg_target = glmsg.add_args();
4806    arg_target->set_isarray(false);
4807    arg_target->set_type(GLMessage::DataType::ENUM);
4808    arg_target->add_intvalue((int)target);
4809
4810    // copy argument access
4811    GLMessage_DataType *arg_access = glmsg.add_args();
4812    arg_access->set_isarray(false);
4813    arg_access->set_type(GLMessage::DataType::ENUM);
4814    arg_access->add_intvalue((int)access);
4815
4816    // call function
4817    nsecs_t start_time = systemTime();
4818    void* retValue = glContext->hooks->gl.glMapBufferOES(target, access);
4819    nsecs_t end_time = systemTime();
4820
4821    // set return value
4822    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
4823    rt->set_isarray(false);
4824    rt->set_type(GLMessage::DataType::INT);
4825    rt->add_intvalue((int)retValue);
4826
4827    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4828    glContext->traceGLMessage(&glmsg);
4829
4830    return retValue;
4831}
4832
4833GLboolean GLTrace_glUnmapBufferOES(GLenum target) {
4834    GLMessage glmsg;
4835    GLTraceContext *glContext = getGLTraceContext();
4836
4837    glmsg.set_function(GLMessage::glUnmapBufferOES);
4838
4839    // copy argument target
4840    GLMessage_DataType *arg_target = glmsg.add_args();
4841    arg_target->set_isarray(false);
4842    arg_target->set_type(GLMessage::DataType::ENUM);
4843    arg_target->add_intvalue((int)target);
4844
4845    // call function
4846    nsecs_t start_time = systemTime();
4847    GLboolean retValue = glContext->hooks->gl.glUnmapBufferOES(target);
4848    nsecs_t end_time = systemTime();
4849
4850    // set return value
4851    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
4852    rt->set_isarray(false);
4853    rt->set_type(GLMessage::DataType::BOOL);
4854    rt->add_boolvalue(retValue);
4855
4856    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4857    glContext->traceGLMessage(&glmsg);
4858
4859    return retValue;
4860}
4861
4862void GLTrace_glGetBufferPointervOES(GLenum target, GLenum pname, GLvoid** params) {
4863    GLMessage glmsg;
4864    GLTraceContext *glContext = getGLTraceContext();
4865
4866    glmsg.set_function(GLMessage::glGetBufferPointervOES);
4867
4868    // copy argument target
4869    GLMessage_DataType *arg_target = glmsg.add_args();
4870    arg_target->set_isarray(false);
4871    arg_target->set_type(GLMessage::DataType::ENUM);
4872    arg_target->add_intvalue((int)target);
4873
4874    // copy argument pname
4875    GLMessage_DataType *arg_pname = glmsg.add_args();
4876    arg_pname->set_isarray(false);
4877    arg_pname->set_type(GLMessage::DataType::ENUM);
4878    arg_pname->add_intvalue((int)pname);
4879
4880    // copy argument params
4881    GLMessage_DataType *arg_params = glmsg.add_args();
4882    arg_params->set_isarray(false);
4883    arg_params->set_type(GLMessage::DataType::INT);
4884    arg_params->add_intvalue((int)params);
4885
4886    // call function
4887    nsecs_t start_time = systemTime();
4888    glContext->hooks->gl.glGetBufferPointervOES(target, pname, params);
4889    nsecs_t end_time = systemTime();
4890
4891    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4892    glContext->traceGLMessage(&glmsg);
4893}
4894
4895void GLTrace_glTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels) {
4896    GLMessage glmsg;
4897    GLTraceContext *glContext = getGLTraceContext();
4898
4899    glmsg.set_function(GLMessage::glTexImage3DOES);
4900
4901    // copy argument target
4902    GLMessage_DataType *arg_target = glmsg.add_args();
4903    arg_target->set_isarray(false);
4904    arg_target->set_type(GLMessage::DataType::ENUM);
4905    arg_target->add_intvalue((int)target);
4906
4907    // copy argument level
4908    GLMessage_DataType *arg_level = glmsg.add_args();
4909    arg_level->set_isarray(false);
4910    arg_level->set_type(GLMessage::DataType::INT);
4911    arg_level->add_intvalue(level);
4912
4913    // copy argument internalformat
4914    GLMessage_DataType *arg_internalformat = glmsg.add_args();
4915    arg_internalformat->set_isarray(false);
4916    arg_internalformat->set_type(GLMessage::DataType::ENUM);
4917    arg_internalformat->add_intvalue((int)internalformat);
4918
4919    // copy argument width
4920    GLMessage_DataType *arg_width = glmsg.add_args();
4921    arg_width->set_isarray(false);
4922    arg_width->set_type(GLMessage::DataType::INT);
4923    arg_width->add_intvalue(width);
4924
4925    // copy argument height
4926    GLMessage_DataType *arg_height = glmsg.add_args();
4927    arg_height->set_isarray(false);
4928    arg_height->set_type(GLMessage::DataType::INT);
4929    arg_height->add_intvalue(height);
4930
4931    // copy argument depth
4932    GLMessage_DataType *arg_depth = glmsg.add_args();
4933    arg_depth->set_isarray(false);
4934    arg_depth->set_type(GLMessage::DataType::INT);
4935    arg_depth->add_intvalue(depth);
4936
4937    // copy argument border
4938    GLMessage_DataType *arg_border = glmsg.add_args();
4939    arg_border->set_isarray(false);
4940    arg_border->set_type(GLMessage::DataType::INT);
4941    arg_border->add_intvalue(border);
4942
4943    // copy argument format
4944    GLMessage_DataType *arg_format = glmsg.add_args();
4945    arg_format->set_isarray(false);
4946    arg_format->set_type(GLMessage::DataType::ENUM);
4947    arg_format->add_intvalue((int)format);
4948
4949    // copy argument type
4950    GLMessage_DataType *arg_type = glmsg.add_args();
4951    arg_type->set_isarray(false);
4952    arg_type->set_type(GLMessage::DataType::ENUM);
4953    arg_type->add_intvalue((int)type);
4954
4955    // copy argument pixels
4956    GLMessage_DataType *arg_pixels = glmsg.add_args();
4957    arg_pixels->set_isarray(false);
4958    arg_pixels->set_type(GLMessage::DataType::INT);
4959    arg_pixels->add_intvalue((int)pixels);
4960
4961    // call function
4962    nsecs_t start_time = systemTime();
4963    glContext->hooks->gl.glTexImage3DOES(target, level, internalformat, width, height, depth, border, format, type, pixels);
4964    nsecs_t end_time = systemTime();
4965
4966    fixupGLMessage(glContext, start_time, end_time, &glmsg);
4967    glContext->traceGLMessage(&glmsg);
4968}
4969
4970void GLTrace_glTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels) {
4971    GLMessage glmsg;
4972    GLTraceContext *glContext = getGLTraceContext();
4973
4974    glmsg.set_function(GLMessage::glTexSubImage3DOES);
4975
4976    // copy argument target
4977    GLMessage_DataType *arg_target = glmsg.add_args();
4978    arg_target->set_isarray(false);
4979    arg_target->set_type(GLMessage::DataType::ENUM);
4980    arg_target->add_intvalue((int)target);
4981
4982    // copy argument level
4983    GLMessage_DataType *arg_level = glmsg.add_args();
4984    arg_level->set_isarray(false);
4985    arg_level->set_type(GLMessage::DataType::INT);
4986    arg_level->add_intvalue(level);
4987
4988    // copy argument xoffset
4989    GLMessage_DataType *arg_xoffset = glmsg.add_args();
4990    arg_xoffset->set_isarray(false);
4991    arg_xoffset->set_type(GLMessage::DataType::INT);
4992    arg_xoffset->add_intvalue(xoffset);
4993
4994    // copy argument yoffset
4995    GLMessage_DataType *arg_yoffset = glmsg.add_args();
4996    arg_yoffset->set_isarray(false);
4997    arg_yoffset->set_type(GLMessage::DataType::INT);
4998    arg_yoffset->add_intvalue(yoffset);
4999
5000    // copy argument zoffset
5001    GLMessage_DataType *arg_zoffset = glmsg.add_args();
5002    arg_zoffset->set_isarray(false);
5003    arg_zoffset->set_type(GLMessage::DataType::INT);
5004    arg_zoffset->add_intvalue(zoffset);
5005
5006    // copy argument width
5007    GLMessage_DataType *arg_width = glmsg.add_args();
5008    arg_width->set_isarray(false);
5009    arg_width->set_type(GLMessage::DataType::INT);
5010    arg_width->add_intvalue(width);
5011
5012    // copy argument height
5013    GLMessage_DataType *arg_height = glmsg.add_args();
5014    arg_height->set_isarray(false);
5015    arg_height->set_type(GLMessage::DataType::INT);
5016    arg_height->add_intvalue(height);
5017
5018    // copy argument depth
5019    GLMessage_DataType *arg_depth = glmsg.add_args();
5020    arg_depth->set_isarray(false);
5021    arg_depth->set_type(GLMessage::DataType::INT);
5022    arg_depth->add_intvalue(depth);
5023
5024    // copy argument format
5025    GLMessage_DataType *arg_format = glmsg.add_args();
5026    arg_format->set_isarray(false);
5027    arg_format->set_type(GLMessage::DataType::ENUM);
5028    arg_format->add_intvalue((int)format);
5029
5030    // copy argument type
5031    GLMessage_DataType *arg_type = glmsg.add_args();
5032    arg_type->set_isarray(false);
5033    arg_type->set_type(GLMessage::DataType::ENUM);
5034    arg_type->add_intvalue((int)type);
5035
5036    // copy argument pixels
5037    GLMessage_DataType *arg_pixels = glmsg.add_args();
5038    arg_pixels->set_isarray(false);
5039    arg_pixels->set_type(GLMessage::DataType::INT);
5040    arg_pixels->add_intvalue((int)pixels);
5041
5042    // call function
5043    nsecs_t start_time = systemTime();
5044    glContext->hooks->gl.glTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
5045    nsecs_t end_time = systemTime();
5046
5047    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5048    glContext->traceGLMessage(&glmsg);
5049}
5050
5051void GLTrace_glCopyTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) {
5052    GLMessage glmsg;
5053    GLTraceContext *glContext = getGLTraceContext();
5054
5055    glmsg.set_function(GLMessage::glCopyTexSubImage3DOES);
5056
5057    // copy argument target
5058    GLMessage_DataType *arg_target = glmsg.add_args();
5059    arg_target->set_isarray(false);
5060    arg_target->set_type(GLMessage::DataType::ENUM);
5061    arg_target->add_intvalue((int)target);
5062
5063    // copy argument level
5064    GLMessage_DataType *arg_level = glmsg.add_args();
5065    arg_level->set_isarray(false);
5066    arg_level->set_type(GLMessage::DataType::INT);
5067    arg_level->add_intvalue(level);
5068
5069    // copy argument xoffset
5070    GLMessage_DataType *arg_xoffset = glmsg.add_args();
5071    arg_xoffset->set_isarray(false);
5072    arg_xoffset->set_type(GLMessage::DataType::INT);
5073    arg_xoffset->add_intvalue(xoffset);
5074
5075    // copy argument yoffset
5076    GLMessage_DataType *arg_yoffset = glmsg.add_args();
5077    arg_yoffset->set_isarray(false);
5078    arg_yoffset->set_type(GLMessage::DataType::INT);
5079    arg_yoffset->add_intvalue(yoffset);
5080
5081    // copy argument zoffset
5082    GLMessage_DataType *arg_zoffset = glmsg.add_args();
5083    arg_zoffset->set_isarray(false);
5084    arg_zoffset->set_type(GLMessage::DataType::INT);
5085    arg_zoffset->add_intvalue(zoffset);
5086
5087    // copy argument x
5088    GLMessage_DataType *arg_x = glmsg.add_args();
5089    arg_x->set_isarray(false);
5090    arg_x->set_type(GLMessage::DataType::INT);
5091    arg_x->add_intvalue(x);
5092
5093    // copy argument y
5094    GLMessage_DataType *arg_y = glmsg.add_args();
5095    arg_y->set_isarray(false);
5096    arg_y->set_type(GLMessage::DataType::INT);
5097    arg_y->add_intvalue(y);
5098
5099    // copy argument width
5100    GLMessage_DataType *arg_width = glmsg.add_args();
5101    arg_width->set_isarray(false);
5102    arg_width->set_type(GLMessage::DataType::INT);
5103    arg_width->add_intvalue(width);
5104
5105    // copy argument height
5106    GLMessage_DataType *arg_height = glmsg.add_args();
5107    arg_height->set_isarray(false);
5108    arg_height->set_type(GLMessage::DataType::INT);
5109    arg_height->add_intvalue(height);
5110
5111    // call function
5112    nsecs_t start_time = systemTime();
5113    glContext->hooks->gl.glCopyTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, x, y, width, height);
5114    nsecs_t end_time = systemTime();
5115
5116    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5117    glContext->traceGLMessage(&glmsg);
5118}
5119
5120void GLTrace_glCompressedTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data) {
5121    GLMessage glmsg;
5122    GLTraceContext *glContext = getGLTraceContext();
5123
5124    glmsg.set_function(GLMessage::glCompressedTexImage3DOES);
5125
5126    // copy argument target
5127    GLMessage_DataType *arg_target = glmsg.add_args();
5128    arg_target->set_isarray(false);
5129    arg_target->set_type(GLMessage::DataType::ENUM);
5130    arg_target->add_intvalue((int)target);
5131
5132    // copy argument level
5133    GLMessage_DataType *arg_level = glmsg.add_args();
5134    arg_level->set_isarray(false);
5135    arg_level->set_type(GLMessage::DataType::INT);
5136    arg_level->add_intvalue(level);
5137
5138    // copy argument internalformat
5139    GLMessage_DataType *arg_internalformat = glmsg.add_args();
5140    arg_internalformat->set_isarray(false);
5141    arg_internalformat->set_type(GLMessage::DataType::ENUM);
5142    arg_internalformat->add_intvalue((int)internalformat);
5143
5144    // copy argument width
5145    GLMessage_DataType *arg_width = glmsg.add_args();
5146    arg_width->set_isarray(false);
5147    arg_width->set_type(GLMessage::DataType::INT);
5148    arg_width->add_intvalue(width);
5149
5150    // copy argument height
5151    GLMessage_DataType *arg_height = glmsg.add_args();
5152    arg_height->set_isarray(false);
5153    arg_height->set_type(GLMessage::DataType::INT);
5154    arg_height->add_intvalue(height);
5155
5156    // copy argument depth
5157    GLMessage_DataType *arg_depth = glmsg.add_args();
5158    arg_depth->set_isarray(false);
5159    arg_depth->set_type(GLMessage::DataType::INT);
5160    arg_depth->add_intvalue(depth);
5161
5162    // copy argument border
5163    GLMessage_DataType *arg_border = glmsg.add_args();
5164    arg_border->set_isarray(false);
5165    arg_border->set_type(GLMessage::DataType::INT);
5166    arg_border->add_intvalue(border);
5167
5168    // copy argument imageSize
5169    GLMessage_DataType *arg_imageSize = glmsg.add_args();
5170    arg_imageSize->set_isarray(false);
5171    arg_imageSize->set_type(GLMessage::DataType::INT);
5172    arg_imageSize->add_intvalue(imageSize);
5173
5174    // copy argument data
5175    GLMessage_DataType *arg_data = glmsg.add_args();
5176    arg_data->set_isarray(false);
5177    arg_data->set_type(GLMessage::DataType::INT);
5178    arg_data->add_intvalue((int)data);
5179
5180    // call function
5181    nsecs_t start_time = systemTime();
5182    glContext->hooks->gl.glCompressedTexImage3DOES(target, level, internalformat, width, height, depth, border, imageSize, data);
5183    nsecs_t end_time = systemTime();
5184
5185    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5186    glContext->traceGLMessage(&glmsg);
5187}
5188
5189void GLTrace_glCompressedTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data) {
5190    GLMessage glmsg;
5191    GLTraceContext *glContext = getGLTraceContext();
5192
5193    glmsg.set_function(GLMessage::glCompressedTexSubImage3DOES);
5194
5195    // copy argument target
5196    GLMessage_DataType *arg_target = glmsg.add_args();
5197    arg_target->set_isarray(false);
5198    arg_target->set_type(GLMessage::DataType::ENUM);
5199    arg_target->add_intvalue((int)target);
5200
5201    // copy argument level
5202    GLMessage_DataType *arg_level = glmsg.add_args();
5203    arg_level->set_isarray(false);
5204    arg_level->set_type(GLMessage::DataType::INT);
5205    arg_level->add_intvalue(level);
5206
5207    // copy argument xoffset
5208    GLMessage_DataType *arg_xoffset = glmsg.add_args();
5209    arg_xoffset->set_isarray(false);
5210    arg_xoffset->set_type(GLMessage::DataType::INT);
5211    arg_xoffset->add_intvalue(xoffset);
5212
5213    // copy argument yoffset
5214    GLMessage_DataType *arg_yoffset = glmsg.add_args();
5215    arg_yoffset->set_isarray(false);
5216    arg_yoffset->set_type(GLMessage::DataType::INT);
5217    arg_yoffset->add_intvalue(yoffset);
5218
5219    // copy argument zoffset
5220    GLMessage_DataType *arg_zoffset = glmsg.add_args();
5221    arg_zoffset->set_isarray(false);
5222    arg_zoffset->set_type(GLMessage::DataType::INT);
5223    arg_zoffset->add_intvalue(zoffset);
5224
5225    // copy argument width
5226    GLMessage_DataType *arg_width = glmsg.add_args();
5227    arg_width->set_isarray(false);
5228    arg_width->set_type(GLMessage::DataType::INT);
5229    arg_width->add_intvalue(width);
5230
5231    // copy argument height
5232    GLMessage_DataType *arg_height = glmsg.add_args();
5233    arg_height->set_isarray(false);
5234    arg_height->set_type(GLMessage::DataType::INT);
5235    arg_height->add_intvalue(height);
5236
5237    // copy argument depth
5238    GLMessage_DataType *arg_depth = glmsg.add_args();
5239    arg_depth->set_isarray(false);
5240    arg_depth->set_type(GLMessage::DataType::INT);
5241    arg_depth->add_intvalue(depth);
5242
5243    // copy argument format
5244    GLMessage_DataType *arg_format = glmsg.add_args();
5245    arg_format->set_isarray(false);
5246    arg_format->set_type(GLMessage::DataType::ENUM);
5247    arg_format->add_intvalue((int)format);
5248
5249    // copy argument imageSize
5250    GLMessage_DataType *arg_imageSize = glmsg.add_args();
5251    arg_imageSize->set_isarray(false);
5252    arg_imageSize->set_type(GLMessage::DataType::INT);
5253    arg_imageSize->add_intvalue(imageSize);
5254
5255    // copy argument data
5256    GLMessage_DataType *arg_data = glmsg.add_args();
5257    arg_data->set_isarray(false);
5258    arg_data->set_type(GLMessage::DataType::INT);
5259    arg_data->add_intvalue((int)data);
5260
5261    // call function
5262    nsecs_t start_time = systemTime();
5263    glContext->hooks->gl.glCompressedTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
5264    nsecs_t end_time = systemTime();
5265
5266    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5267    glContext->traceGLMessage(&glmsg);
5268}
5269
5270void GLTrace_glFramebufferTexture3DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) {
5271    GLMessage glmsg;
5272    GLTraceContext *glContext = getGLTraceContext();
5273
5274    glmsg.set_function(GLMessage::glFramebufferTexture3DOES);
5275
5276    // copy argument target
5277    GLMessage_DataType *arg_target = glmsg.add_args();
5278    arg_target->set_isarray(false);
5279    arg_target->set_type(GLMessage::DataType::ENUM);
5280    arg_target->add_intvalue((int)target);
5281
5282    // copy argument attachment
5283    GLMessage_DataType *arg_attachment = glmsg.add_args();
5284    arg_attachment->set_isarray(false);
5285    arg_attachment->set_type(GLMessage::DataType::ENUM);
5286    arg_attachment->add_intvalue((int)attachment);
5287
5288    // copy argument textarget
5289    GLMessage_DataType *arg_textarget = glmsg.add_args();
5290    arg_textarget->set_isarray(false);
5291    arg_textarget->set_type(GLMessage::DataType::ENUM);
5292    arg_textarget->add_intvalue((int)textarget);
5293
5294    // copy argument texture
5295    GLMessage_DataType *arg_texture = glmsg.add_args();
5296    arg_texture->set_isarray(false);
5297    arg_texture->set_type(GLMessage::DataType::INT);
5298    arg_texture->add_intvalue(texture);
5299
5300    // copy argument level
5301    GLMessage_DataType *arg_level = glmsg.add_args();
5302    arg_level->set_isarray(false);
5303    arg_level->set_type(GLMessage::DataType::INT);
5304    arg_level->add_intvalue(level);
5305
5306    // copy argument zoffset
5307    GLMessage_DataType *arg_zoffset = glmsg.add_args();
5308    arg_zoffset->set_isarray(false);
5309    arg_zoffset->set_type(GLMessage::DataType::INT);
5310    arg_zoffset->add_intvalue(zoffset);
5311
5312    // call function
5313    nsecs_t start_time = systemTime();
5314    glContext->hooks->gl.glFramebufferTexture3DOES(target, attachment, textarget, texture, level, zoffset);
5315    nsecs_t end_time = systemTime();
5316
5317    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5318    glContext->traceGLMessage(&glmsg);
5319}
5320
5321void GLTrace_glBindVertexArrayOES(GLuint array) {
5322    GLMessage glmsg;
5323    GLTraceContext *glContext = getGLTraceContext();
5324
5325    glmsg.set_function(GLMessage::glBindVertexArrayOES);
5326
5327    // copy argument array
5328    GLMessage_DataType *arg_array = glmsg.add_args();
5329    arg_array->set_isarray(false);
5330    arg_array->set_type(GLMessage::DataType::INT);
5331    arg_array->add_intvalue(array);
5332
5333    // call function
5334    nsecs_t start_time = systemTime();
5335    glContext->hooks->gl.glBindVertexArrayOES(array);
5336    nsecs_t end_time = systemTime();
5337
5338    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5339    glContext->traceGLMessage(&glmsg);
5340}
5341
5342void GLTrace_glDeleteVertexArraysOES(GLsizei n, const GLuint *arrays) {
5343    GLMessage glmsg;
5344    GLTraceContext *glContext = getGLTraceContext();
5345
5346    glmsg.set_function(GLMessage::glDeleteVertexArraysOES);
5347
5348    // copy argument n
5349    GLMessage_DataType *arg_n = glmsg.add_args();
5350    arg_n->set_isarray(false);
5351    arg_n->set_type(GLMessage::DataType::INT);
5352    arg_n->add_intvalue(n);
5353
5354    // copy argument arrays
5355    GLMessage_DataType *arg_arrays = glmsg.add_args();
5356    arg_arrays->set_isarray(false);
5357    arg_arrays->set_type(GLMessage::DataType::INT);
5358    arg_arrays->add_intvalue((int)arrays);
5359
5360    // call function
5361    nsecs_t start_time = systemTime();
5362    glContext->hooks->gl.glDeleteVertexArraysOES(n, arrays);
5363    nsecs_t end_time = systemTime();
5364
5365    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5366    glContext->traceGLMessage(&glmsg);
5367}
5368
5369void GLTrace_glGenVertexArraysOES(GLsizei n, GLuint *arrays) {
5370    GLMessage glmsg;
5371    GLTraceContext *glContext = getGLTraceContext();
5372
5373    glmsg.set_function(GLMessage::glGenVertexArraysOES);
5374
5375    // copy argument n
5376    GLMessage_DataType *arg_n = glmsg.add_args();
5377    arg_n->set_isarray(false);
5378    arg_n->set_type(GLMessage::DataType::INT);
5379    arg_n->add_intvalue(n);
5380
5381    // copy argument arrays
5382    GLMessage_DataType *arg_arrays = glmsg.add_args();
5383    arg_arrays->set_isarray(false);
5384    arg_arrays->set_type(GLMessage::DataType::INT);
5385    arg_arrays->add_intvalue((int)arrays);
5386
5387    // call function
5388    nsecs_t start_time = systemTime();
5389    glContext->hooks->gl.glGenVertexArraysOES(n, arrays);
5390    nsecs_t end_time = systemTime();
5391
5392    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5393    glContext->traceGLMessage(&glmsg);
5394}
5395
5396GLboolean GLTrace_glIsVertexArrayOES(GLuint array) {
5397    GLMessage glmsg;
5398    GLTraceContext *glContext = getGLTraceContext();
5399
5400    glmsg.set_function(GLMessage::glIsVertexArrayOES);
5401
5402    // copy argument array
5403    GLMessage_DataType *arg_array = glmsg.add_args();
5404    arg_array->set_isarray(false);
5405    arg_array->set_type(GLMessage::DataType::INT);
5406    arg_array->add_intvalue(array);
5407
5408    // call function
5409    nsecs_t start_time = systemTime();
5410    GLboolean retValue = glContext->hooks->gl.glIsVertexArrayOES(array);
5411    nsecs_t end_time = systemTime();
5412
5413    // set return value
5414    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
5415    rt->set_isarray(false);
5416    rt->set_type(GLMessage::DataType::BOOL);
5417    rt->add_boolvalue(retValue);
5418
5419    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5420    glContext->traceGLMessage(&glmsg);
5421
5422    return retValue;
5423}
5424
5425void GLTrace_glGetPerfMonitorGroupsAMD(GLint *numGroups, GLsizei groupsSize, GLuint *groups) {
5426    GLMessage glmsg;
5427    GLTraceContext *glContext = getGLTraceContext();
5428
5429    glmsg.set_function(GLMessage::glGetPerfMonitorGroupsAMD);
5430
5431    // copy argument numGroups
5432    GLMessage_DataType *arg_numGroups = glmsg.add_args();
5433    arg_numGroups->set_isarray(false);
5434    arg_numGroups->set_type(GLMessage::DataType::INT);
5435    arg_numGroups->add_intvalue((int)numGroups);
5436
5437    // copy argument groupsSize
5438    GLMessage_DataType *arg_groupsSize = glmsg.add_args();
5439    arg_groupsSize->set_isarray(false);
5440    arg_groupsSize->set_type(GLMessage::DataType::INT);
5441    arg_groupsSize->add_intvalue(groupsSize);
5442
5443    // copy argument groups
5444    GLMessage_DataType *arg_groups = glmsg.add_args();
5445    arg_groups->set_isarray(false);
5446    arg_groups->set_type(GLMessage::DataType::INT);
5447    arg_groups->add_intvalue((int)groups);
5448
5449    // call function
5450    nsecs_t start_time = systemTime();
5451    glContext->hooks->gl.glGetPerfMonitorGroupsAMD(numGroups, groupsSize, groups);
5452    nsecs_t end_time = systemTime();
5453
5454    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5455    glContext->traceGLMessage(&glmsg);
5456}
5457
5458void GLTrace_glGetPerfMonitorCountersAMD(GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters) {
5459    GLMessage glmsg;
5460    GLTraceContext *glContext = getGLTraceContext();
5461
5462    glmsg.set_function(GLMessage::glGetPerfMonitorCountersAMD);
5463
5464    // copy argument group
5465    GLMessage_DataType *arg_group = glmsg.add_args();
5466    arg_group->set_isarray(false);
5467    arg_group->set_type(GLMessage::DataType::INT);
5468    arg_group->add_intvalue(group);
5469
5470    // copy argument numCounters
5471    GLMessage_DataType *arg_numCounters = glmsg.add_args();
5472    arg_numCounters->set_isarray(false);
5473    arg_numCounters->set_type(GLMessage::DataType::INT);
5474    arg_numCounters->add_intvalue((int)numCounters);
5475
5476    // copy argument maxActiveCounters
5477    GLMessage_DataType *arg_maxActiveCounters = glmsg.add_args();
5478    arg_maxActiveCounters->set_isarray(false);
5479    arg_maxActiveCounters->set_type(GLMessage::DataType::INT);
5480    arg_maxActiveCounters->add_intvalue((int)maxActiveCounters);
5481
5482    // copy argument counterSize
5483    GLMessage_DataType *arg_counterSize = glmsg.add_args();
5484    arg_counterSize->set_isarray(false);
5485    arg_counterSize->set_type(GLMessage::DataType::INT);
5486    arg_counterSize->add_intvalue(counterSize);
5487
5488    // copy argument counters
5489    GLMessage_DataType *arg_counters = glmsg.add_args();
5490    arg_counters->set_isarray(false);
5491    arg_counters->set_type(GLMessage::DataType::INT);
5492    arg_counters->add_intvalue((int)counters);
5493
5494    // call function
5495    nsecs_t start_time = systemTime();
5496    glContext->hooks->gl.glGetPerfMonitorCountersAMD(group, numCounters, maxActiveCounters, counterSize, counters);
5497    nsecs_t end_time = systemTime();
5498
5499    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5500    glContext->traceGLMessage(&glmsg);
5501}
5502
5503void GLTrace_glGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString) {
5504    GLMessage glmsg;
5505    GLTraceContext *glContext = getGLTraceContext();
5506
5507    glmsg.set_function(GLMessage::glGetPerfMonitorGroupStringAMD);
5508
5509    // copy argument group
5510    GLMessage_DataType *arg_group = glmsg.add_args();
5511    arg_group->set_isarray(false);
5512    arg_group->set_type(GLMessage::DataType::INT);
5513    arg_group->add_intvalue(group);
5514
5515    // copy argument bufSize
5516    GLMessage_DataType *arg_bufSize = glmsg.add_args();
5517    arg_bufSize->set_isarray(false);
5518    arg_bufSize->set_type(GLMessage::DataType::INT);
5519    arg_bufSize->add_intvalue(bufSize);
5520
5521    // copy argument length
5522    GLMessage_DataType *arg_length = glmsg.add_args();
5523    arg_length->set_isarray(false);
5524    arg_length->set_type(GLMessage::DataType::INT);
5525    arg_length->add_intvalue((int)length);
5526
5527    // copy argument groupString
5528    GLMessage_DataType *arg_groupString = glmsg.add_args();
5529    arg_groupString->set_isarray(false);
5530    arg_groupString->set_type(GLMessage::DataType::INT);
5531    arg_groupString->add_intvalue((int)groupString);
5532
5533    // call function
5534    nsecs_t start_time = systemTime();
5535    glContext->hooks->gl.glGetPerfMonitorGroupStringAMD(group, bufSize, length, groupString);
5536    nsecs_t end_time = systemTime();
5537
5538    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5539    glContext->traceGLMessage(&glmsg);
5540}
5541
5542void GLTrace_glGetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString) {
5543    GLMessage glmsg;
5544    GLTraceContext *glContext = getGLTraceContext();
5545
5546    glmsg.set_function(GLMessage::glGetPerfMonitorCounterStringAMD);
5547
5548    // copy argument group
5549    GLMessage_DataType *arg_group = glmsg.add_args();
5550    arg_group->set_isarray(false);
5551    arg_group->set_type(GLMessage::DataType::INT);
5552    arg_group->add_intvalue(group);
5553
5554    // copy argument counter
5555    GLMessage_DataType *arg_counter = glmsg.add_args();
5556    arg_counter->set_isarray(false);
5557    arg_counter->set_type(GLMessage::DataType::INT);
5558    arg_counter->add_intvalue(counter);
5559
5560    // copy argument bufSize
5561    GLMessage_DataType *arg_bufSize = glmsg.add_args();
5562    arg_bufSize->set_isarray(false);
5563    arg_bufSize->set_type(GLMessage::DataType::INT);
5564    arg_bufSize->add_intvalue(bufSize);
5565
5566    // copy argument length
5567    GLMessage_DataType *arg_length = glmsg.add_args();
5568    arg_length->set_isarray(false);
5569    arg_length->set_type(GLMessage::DataType::INT);
5570    arg_length->add_intvalue((int)length);
5571
5572    // copy argument counterString
5573    GLMessage_DataType *arg_counterString = glmsg.add_args();
5574    arg_counterString->set_isarray(false);
5575    arg_counterString->set_type(GLMessage::DataType::INT);
5576    arg_counterString->add_intvalue((int)counterString);
5577
5578    // call function
5579    nsecs_t start_time = systemTime();
5580    glContext->hooks->gl.glGetPerfMonitorCounterStringAMD(group, counter, bufSize, length, counterString);
5581    nsecs_t end_time = systemTime();
5582
5583    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5584    glContext->traceGLMessage(&glmsg);
5585}
5586
5587void GLTrace_glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, GLvoid *data) {
5588    GLMessage glmsg;
5589    GLTraceContext *glContext = getGLTraceContext();
5590
5591    glmsg.set_function(GLMessage::glGetPerfMonitorCounterInfoAMD);
5592
5593    // copy argument group
5594    GLMessage_DataType *arg_group = glmsg.add_args();
5595    arg_group->set_isarray(false);
5596    arg_group->set_type(GLMessage::DataType::INT);
5597    arg_group->add_intvalue(group);
5598
5599    // copy argument counter
5600    GLMessage_DataType *arg_counter = glmsg.add_args();
5601    arg_counter->set_isarray(false);
5602    arg_counter->set_type(GLMessage::DataType::INT);
5603    arg_counter->add_intvalue(counter);
5604
5605    // copy argument pname
5606    GLMessage_DataType *arg_pname = glmsg.add_args();
5607    arg_pname->set_isarray(false);
5608    arg_pname->set_type(GLMessage::DataType::ENUM);
5609    arg_pname->add_intvalue((int)pname);
5610
5611    // copy argument data
5612    GLMessage_DataType *arg_data = glmsg.add_args();
5613    arg_data->set_isarray(false);
5614    arg_data->set_type(GLMessage::DataType::INT);
5615    arg_data->add_intvalue((int)data);
5616
5617    // call function
5618    nsecs_t start_time = systemTime();
5619    glContext->hooks->gl.glGetPerfMonitorCounterInfoAMD(group, counter, pname, data);
5620    nsecs_t end_time = systemTime();
5621
5622    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5623    glContext->traceGLMessage(&glmsg);
5624}
5625
5626void GLTrace_glGenPerfMonitorsAMD(GLsizei n, GLuint *monitors) {
5627    GLMessage glmsg;
5628    GLTraceContext *glContext = getGLTraceContext();
5629
5630    glmsg.set_function(GLMessage::glGenPerfMonitorsAMD);
5631
5632    // copy argument n
5633    GLMessage_DataType *arg_n = glmsg.add_args();
5634    arg_n->set_isarray(false);
5635    arg_n->set_type(GLMessage::DataType::INT);
5636    arg_n->add_intvalue(n);
5637
5638    // copy argument monitors
5639    GLMessage_DataType *arg_monitors = glmsg.add_args();
5640    arg_monitors->set_isarray(false);
5641    arg_monitors->set_type(GLMessage::DataType::INT);
5642    arg_monitors->add_intvalue((int)monitors);
5643
5644    // call function
5645    nsecs_t start_time = systemTime();
5646    glContext->hooks->gl.glGenPerfMonitorsAMD(n, monitors);
5647    nsecs_t end_time = systemTime();
5648
5649    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5650    glContext->traceGLMessage(&glmsg);
5651}
5652
5653void GLTrace_glDeletePerfMonitorsAMD(GLsizei n, GLuint *monitors) {
5654    GLMessage glmsg;
5655    GLTraceContext *glContext = getGLTraceContext();
5656
5657    glmsg.set_function(GLMessage::glDeletePerfMonitorsAMD);
5658
5659    // copy argument n
5660    GLMessage_DataType *arg_n = glmsg.add_args();
5661    arg_n->set_isarray(false);
5662    arg_n->set_type(GLMessage::DataType::INT);
5663    arg_n->add_intvalue(n);
5664
5665    // copy argument monitors
5666    GLMessage_DataType *arg_monitors = glmsg.add_args();
5667    arg_monitors->set_isarray(false);
5668    arg_monitors->set_type(GLMessage::DataType::INT);
5669    arg_monitors->add_intvalue((int)monitors);
5670
5671    // call function
5672    nsecs_t start_time = systemTime();
5673    glContext->hooks->gl.glDeletePerfMonitorsAMD(n, monitors);
5674    nsecs_t end_time = systemTime();
5675
5676    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5677    glContext->traceGLMessage(&glmsg);
5678}
5679
5680void GLTrace_glSelectPerfMonitorCountersAMD(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList) {
5681    GLMessage glmsg;
5682    GLTraceContext *glContext = getGLTraceContext();
5683
5684    glmsg.set_function(GLMessage::glSelectPerfMonitorCountersAMD);
5685
5686    // copy argument monitor
5687    GLMessage_DataType *arg_monitor = glmsg.add_args();
5688    arg_monitor->set_isarray(false);
5689    arg_monitor->set_type(GLMessage::DataType::INT);
5690    arg_monitor->add_intvalue(monitor);
5691
5692    // copy argument enable
5693    GLMessage_DataType *arg_enable = glmsg.add_args();
5694    arg_enable->set_isarray(false);
5695    arg_enable->set_type(GLMessage::DataType::BOOL);
5696    arg_enable->add_boolvalue(enable);
5697
5698    // copy argument group
5699    GLMessage_DataType *arg_group = glmsg.add_args();
5700    arg_group->set_isarray(false);
5701    arg_group->set_type(GLMessage::DataType::INT);
5702    arg_group->add_intvalue(group);
5703
5704    // copy argument numCounters
5705    GLMessage_DataType *arg_numCounters = glmsg.add_args();
5706    arg_numCounters->set_isarray(false);
5707    arg_numCounters->set_type(GLMessage::DataType::INT);
5708    arg_numCounters->add_intvalue(numCounters);
5709
5710    // copy argument countersList
5711    GLMessage_DataType *arg_countersList = glmsg.add_args();
5712    arg_countersList->set_isarray(false);
5713    arg_countersList->set_type(GLMessage::DataType::INT);
5714    arg_countersList->add_intvalue((int)countersList);
5715
5716    // call function
5717    nsecs_t start_time = systemTime();
5718    glContext->hooks->gl.glSelectPerfMonitorCountersAMD(monitor, enable, group, numCounters, countersList);
5719    nsecs_t end_time = systemTime();
5720
5721    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5722    glContext->traceGLMessage(&glmsg);
5723}
5724
5725void GLTrace_glBeginPerfMonitorAMD(GLuint monitor) {
5726    GLMessage glmsg;
5727    GLTraceContext *glContext = getGLTraceContext();
5728
5729    glmsg.set_function(GLMessage::glBeginPerfMonitorAMD);
5730
5731    // copy argument monitor
5732    GLMessage_DataType *arg_monitor = glmsg.add_args();
5733    arg_monitor->set_isarray(false);
5734    arg_monitor->set_type(GLMessage::DataType::INT);
5735    arg_monitor->add_intvalue(monitor);
5736
5737    // call function
5738    nsecs_t start_time = systemTime();
5739    glContext->hooks->gl.glBeginPerfMonitorAMD(monitor);
5740    nsecs_t end_time = systemTime();
5741
5742    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5743    glContext->traceGLMessage(&glmsg);
5744}
5745
5746void GLTrace_glEndPerfMonitorAMD(GLuint monitor) {
5747    GLMessage glmsg;
5748    GLTraceContext *glContext = getGLTraceContext();
5749
5750    glmsg.set_function(GLMessage::glEndPerfMonitorAMD);
5751
5752    // copy argument monitor
5753    GLMessage_DataType *arg_monitor = glmsg.add_args();
5754    arg_monitor->set_isarray(false);
5755    arg_monitor->set_type(GLMessage::DataType::INT);
5756    arg_monitor->add_intvalue(monitor);
5757
5758    // call function
5759    nsecs_t start_time = systemTime();
5760    glContext->hooks->gl.glEndPerfMonitorAMD(monitor);
5761    nsecs_t end_time = systemTime();
5762
5763    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5764    glContext->traceGLMessage(&glmsg);
5765}
5766
5767void GLTrace_glGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten) {
5768    GLMessage glmsg;
5769    GLTraceContext *glContext = getGLTraceContext();
5770
5771    glmsg.set_function(GLMessage::glGetPerfMonitorCounterDataAMD);
5772
5773    // copy argument monitor
5774    GLMessage_DataType *arg_monitor = glmsg.add_args();
5775    arg_monitor->set_isarray(false);
5776    arg_monitor->set_type(GLMessage::DataType::INT);
5777    arg_monitor->add_intvalue(monitor);
5778
5779    // copy argument pname
5780    GLMessage_DataType *arg_pname = glmsg.add_args();
5781    arg_pname->set_isarray(false);
5782    arg_pname->set_type(GLMessage::DataType::ENUM);
5783    arg_pname->add_intvalue((int)pname);
5784
5785    // copy argument dataSize
5786    GLMessage_DataType *arg_dataSize = glmsg.add_args();
5787    arg_dataSize->set_isarray(false);
5788    arg_dataSize->set_type(GLMessage::DataType::INT);
5789    arg_dataSize->add_intvalue(dataSize);
5790
5791    // copy argument data
5792    GLMessage_DataType *arg_data = glmsg.add_args();
5793    arg_data->set_isarray(false);
5794    arg_data->set_type(GLMessage::DataType::INT);
5795    arg_data->add_intvalue((int)data);
5796
5797    // copy argument bytesWritten
5798    GLMessage_DataType *arg_bytesWritten = glmsg.add_args();
5799    arg_bytesWritten->set_isarray(false);
5800    arg_bytesWritten->set_type(GLMessage::DataType::INT);
5801    arg_bytesWritten->add_intvalue((int)bytesWritten);
5802
5803    // call function
5804    nsecs_t start_time = systemTime();
5805    glContext->hooks->gl.glGetPerfMonitorCounterDataAMD(monitor, pname, dataSize, data, bytesWritten);
5806    nsecs_t end_time = systemTime();
5807
5808    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5809    glContext->traceGLMessage(&glmsg);
5810}
5811
5812void GLTrace_glBlitFramebufferANGLE(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) {
5813    GLMessage glmsg;
5814    GLTraceContext *glContext = getGLTraceContext();
5815
5816    glmsg.set_function(GLMessage::glBlitFramebufferANGLE);
5817
5818    // copy argument srcX0
5819    GLMessage_DataType *arg_srcX0 = glmsg.add_args();
5820    arg_srcX0->set_isarray(false);
5821    arg_srcX0->set_type(GLMessage::DataType::INT);
5822    arg_srcX0->add_intvalue(srcX0);
5823
5824    // copy argument srcY0
5825    GLMessage_DataType *arg_srcY0 = glmsg.add_args();
5826    arg_srcY0->set_isarray(false);
5827    arg_srcY0->set_type(GLMessage::DataType::INT);
5828    arg_srcY0->add_intvalue(srcY0);
5829
5830    // copy argument srcX1
5831    GLMessage_DataType *arg_srcX1 = glmsg.add_args();
5832    arg_srcX1->set_isarray(false);
5833    arg_srcX1->set_type(GLMessage::DataType::INT);
5834    arg_srcX1->add_intvalue(srcX1);
5835
5836    // copy argument srcY1
5837    GLMessage_DataType *arg_srcY1 = glmsg.add_args();
5838    arg_srcY1->set_isarray(false);
5839    arg_srcY1->set_type(GLMessage::DataType::INT);
5840    arg_srcY1->add_intvalue(srcY1);
5841
5842    // copy argument dstX0
5843    GLMessage_DataType *arg_dstX0 = glmsg.add_args();
5844    arg_dstX0->set_isarray(false);
5845    arg_dstX0->set_type(GLMessage::DataType::INT);
5846    arg_dstX0->add_intvalue(dstX0);
5847
5848    // copy argument dstY0
5849    GLMessage_DataType *arg_dstY0 = glmsg.add_args();
5850    arg_dstY0->set_isarray(false);
5851    arg_dstY0->set_type(GLMessage::DataType::INT);
5852    arg_dstY0->add_intvalue(dstY0);
5853
5854    // copy argument dstX1
5855    GLMessage_DataType *arg_dstX1 = glmsg.add_args();
5856    arg_dstX1->set_isarray(false);
5857    arg_dstX1->set_type(GLMessage::DataType::INT);
5858    arg_dstX1->add_intvalue(dstX1);
5859
5860    // copy argument dstY1
5861    GLMessage_DataType *arg_dstY1 = glmsg.add_args();
5862    arg_dstY1->set_isarray(false);
5863    arg_dstY1->set_type(GLMessage::DataType::INT);
5864    arg_dstY1->add_intvalue(dstY1);
5865
5866    // copy argument mask
5867    GLMessage_DataType *arg_mask = glmsg.add_args();
5868    arg_mask->set_isarray(false);
5869    arg_mask->set_type(GLMessage::DataType::INT);
5870    arg_mask->add_intvalue(mask);
5871
5872    // copy argument filter
5873    GLMessage_DataType *arg_filter = glmsg.add_args();
5874    arg_filter->set_isarray(false);
5875    arg_filter->set_type(GLMessage::DataType::ENUM);
5876    arg_filter->add_intvalue((int)filter);
5877
5878    // call function
5879    nsecs_t start_time = systemTime();
5880    glContext->hooks->gl.glBlitFramebufferANGLE(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
5881    nsecs_t end_time = systemTime();
5882
5883    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5884    glContext->traceGLMessage(&glmsg);
5885}
5886
5887void GLTrace_glRenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
5888    GLMessage glmsg;
5889    GLTraceContext *glContext = getGLTraceContext();
5890
5891    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleANGLE);
5892
5893    // copy argument target
5894    GLMessage_DataType *arg_target = glmsg.add_args();
5895    arg_target->set_isarray(false);
5896    arg_target->set_type(GLMessage::DataType::ENUM);
5897    arg_target->add_intvalue((int)target);
5898
5899    // copy argument samples
5900    GLMessage_DataType *arg_samples = glmsg.add_args();
5901    arg_samples->set_isarray(false);
5902    arg_samples->set_type(GLMessage::DataType::INT);
5903    arg_samples->add_intvalue(samples);
5904
5905    // copy argument internalformat
5906    GLMessage_DataType *arg_internalformat = glmsg.add_args();
5907    arg_internalformat->set_isarray(false);
5908    arg_internalformat->set_type(GLMessage::DataType::ENUM);
5909    arg_internalformat->add_intvalue((int)internalformat);
5910
5911    // copy argument width
5912    GLMessage_DataType *arg_width = glmsg.add_args();
5913    arg_width->set_isarray(false);
5914    arg_width->set_type(GLMessage::DataType::INT);
5915    arg_width->add_intvalue(width);
5916
5917    // copy argument height
5918    GLMessage_DataType *arg_height = glmsg.add_args();
5919    arg_height->set_isarray(false);
5920    arg_height->set_type(GLMessage::DataType::INT);
5921    arg_height->add_intvalue(height);
5922
5923    // call function
5924    nsecs_t start_time = systemTime();
5925    glContext->hooks->gl.glRenderbufferStorageMultisampleANGLE(target, samples, internalformat, width, height);
5926    nsecs_t end_time = systemTime();
5927
5928    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5929    glContext->traceGLMessage(&glmsg);
5930}
5931
5932void GLTrace_glRenderbufferStorageMultisampleAPPLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
5933    GLMessage glmsg;
5934    GLTraceContext *glContext = getGLTraceContext();
5935
5936    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleAPPLE);
5937
5938    // copy argument target
5939    GLMessage_DataType *arg_target = glmsg.add_args();
5940    arg_target->set_isarray(false);
5941    arg_target->set_type(GLMessage::DataType::ENUM);
5942    arg_target->add_intvalue((int)target);
5943
5944    // copy argument samples
5945    GLMessage_DataType *arg_samples = glmsg.add_args();
5946    arg_samples->set_isarray(false);
5947    arg_samples->set_type(GLMessage::DataType::INT);
5948    arg_samples->add_intvalue(samples);
5949
5950    // copy argument internalformat
5951    GLMessage_DataType *arg_internalformat = glmsg.add_args();
5952    arg_internalformat->set_isarray(false);
5953    arg_internalformat->set_type(GLMessage::DataType::ENUM);
5954    arg_internalformat->add_intvalue((int)internalformat);
5955
5956    // copy argument width
5957    GLMessage_DataType *arg_width = glmsg.add_args();
5958    arg_width->set_isarray(false);
5959    arg_width->set_type(GLMessage::DataType::INT);
5960    arg_width->add_intvalue(width);
5961
5962    // copy argument height
5963    GLMessage_DataType *arg_height = glmsg.add_args();
5964    arg_height->set_isarray(false);
5965    arg_height->set_type(GLMessage::DataType::INT);
5966    arg_height->add_intvalue(height);
5967
5968    // call function
5969    nsecs_t start_time = systemTime();
5970    glContext->hooks->gl.glRenderbufferStorageMultisampleAPPLE(target, samples, internalformat, width, height);
5971    nsecs_t end_time = systemTime();
5972
5973    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5974    glContext->traceGLMessage(&glmsg);
5975}
5976
5977void GLTrace_glResolveMultisampleFramebufferAPPLE(void) {
5978    GLMessage glmsg;
5979    GLTraceContext *glContext = getGLTraceContext();
5980
5981    glmsg.set_function(GLMessage::glResolveMultisampleFramebufferAPPLE);
5982
5983    // call function
5984    nsecs_t start_time = systemTime();
5985    glContext->hooks->gl.glResolveMultisampleFramebufferAPPLE();
5986    nsecs_t end_time = systemTime();
5987
5988    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5989    glContext->traceGLMessage(&glmsg);
5990}
5991
5992void GLTrace_glLabelObjectEXT(GLenum type, GLuint object, GLsizei length, const GLchar *label) {
5993    GLMessage glmsg;
5994    GLTraceContext *glContext = getGLTraceContext();
5995
5996    glmsg.set_function(GLMessage::glLabelObjectEXT);
5997
5998    // copy argument type
5999    GLMessage_DataType *arg_type = glmsg.add_args();
6000    arg_type->set_isarray(false);
6001    arg_type->set_type(GLMessage::DataType::ENUM);
6002    arg_type->add_intvalue((int)type);
6003
6004    // copy argument object
6005    GLMessage_DataType *arg_object = glmsg.add_args();
6006    arg_object->set_isarray(false);
6007    arg_object->set_type(GLMessage::DataType::INT);
6008    arg_object->add_intvalue(object);
6009
6010    // copy argument length
6011    GLMessage_DataType *arg_length = glmsg.add_args();
6012    arg_length->set_isarray(false);
6013    arg_length->set_type(GLMessage::DataType::INT);
6014    arg_length->add_intvalue(length);
6015
6016    // copy argument label
6017    GLMessage_DataType *arg_label = glmsg.add_args();
6018    arg_label->set_isarray(false);
6019    arg_label->set_type(GLMessage::DataType::INT);
6020    arg_label->add_intvalue((int)label);
6021
6022    // call function
6023    nsecs_t start_time = systemTime();
6024    glContext->hooks->gl.glLabelObjectEXT(type, object, length, label);
6025    nsecs_t end_time = systemTime();
6026
6027    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6028    glContext->traceGLMessage(&glmsg);
6029}
6030
6031void GLTrace_glGetObjectLabelEXT(GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label) {
6032    GLMessage glmsg;
6033    GLTraceContext *glContext = getGLTraceContext();
6034
6035    glmsg.set_function(GLMessage::glGetObjectLabelEXT);
6036
6037    // copy argument type
6038    GLMessage_DataType *arg_type = glmsg.add_args();
6039    arg_type->set_isarray(false);
6040    arg_type->set_type(GLMessage::DataType::ENUM);
6041    arg_type->add_intvalue((int)type);
6042
6043    // copy argument object
6044    GLMessage_DataType *arg_object = glmsg.add_args();
6045    arg_object->set_isarray(false);
6046    arg_object->set_type(GLMessage::DataType::INT);
6047    arg_object->add_intvalue(object);
6048
6049    // copy argument bufSize
6050    GLMessage_DataType *arg_bufSize = glmsg.add_args();
6051    arg_bufSize->set_isarray(false);
6052    arg_bufSize->set_type(GLMessage::DataType::INT);
6053    arg_bufSize->add_intvalue(bufSize);
6054
6055    // copy argument length
6056    GLMessage_DataType *arg_length = glmsg.add_args();
6057    arg_length->set_isarray(false);
6058    arg_length->set_type(GLMessage::DataType::INT);
6059    arg_length->add_intvalue((int)length);
6060
6061    // copy argument label
6062    GLMessage_DataType *arg_label = glmsg.add_args();
6063    arg_label->set_isarray(false);
6064    arg_label->set_type(GLMessage::DataType::INT);
6065    arg_label->add_intvalue((int)label);
6066
6067    // call function
6068    nsecs_t start_time = systemTime();
6069    glContext->hooks->gl.glGetObjectLabelEXT(type, object, bufSize, length, label);
6070    nsecs_t end_time = systemTime();
6071
6072    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6073    glContext->traceGLMessage(&glmsg);
6074}
6075
6076void GLTrace_glInsertEventMarkerEXT(GLsizei length, const GLchar *marker) {
6077    GLMessage glmsg;
6078    GLTraceContext *glContext = getGLTraceContext();
6079
6080    glmsg.set_function(GLMessage::glInsertEventMarkerEXT);
6081
6082    // copy argument length
6083    GLMessage_DataType *arg_length = glmsg.add_args();
6084    arg_length->set_isarray(false);
6085    arg_length->set_type(GLMessage::DataType::INT);
6086    arg_length->add_intvalue(length);
6087
6088    // copy argument marker
6089    GLMessage_DataType *arg_marker = glmsg.add_args();
6090    arg_marker->set_isarray(false);
6091    arg_marker->set_type(GLMessage::DataType::INT);
6092    arg_marker->add_intvalue((int)marker);
6093
6094    // call function
6095    nsecs_t start_time = systemTime();
6096    glContext->hooks->gl.glInsertEventMarkerEXT(length, marker);
6097    nsecs_t end_time = systemTime();
6098
6099    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6100    glContext->traceGLMessage(&glmsg);
6101}
6102
6103void GLTrace_glPushGroupMarkerEXT(GLsizei length, const GLchar *marker) {
6104    GLMessage glmsg;
6105    GLTraceContext *glContext = getGLTraceContext();
6106
6107    glmsg.set_function(GLMessage::glPushGroupMarkerEXT);
6108
6109    // copy argument length
6110    GLMessage_DataType *arg_length = glmsg.add_args();
6111    arg_length->set_isarray(false);
6112    arg_length->set_type(GLMessage::DataType::INT);
6113    arg_length->add_intvalue(length);
6114
6115    // copy argument marker
6116    GLMessage_DataType *arg_marker = glmsg.add_args();
6117    arg_marker->set_isarray(false);
6118    arg_marker->set_type(GLMessage::DataType::INT);
6119    arg_marker->add_intvalue((int)marker);
6120
6121    // call function
6122    nsecs_t start_time = systemTime();
6123    glContext->hooks->gl.glPushGroupMarkerEXT(length, marker);
6124    nsecs_t end_time = systemTime();
6125
6126    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6127    glContext->traceGLMessage(&glmsg);
6128}
6129
6130void GLTrace_glPopGroupMarkerEXT(void) {
6131    GLMessage glmsg;
6132    GLTraceContext *glContext = getGLTraceContext();
6133
6134    glmsg.set_function(GLMessage::glPopGroupMarkerEXT);
6135
6136    // call function
6137    nsecs_t start_time = systemTime();
6138    glContext->hooks->gl.glPopGroupMarkerEXT();
6139    nsecs_t end_time = systemTime();
6140
6141    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6142    glContext->traceGLMessage(&glmsg);
6143}
6144
6145void GLTrace_glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum *attachments) {
6146    GLMessage glmsg;
6147    GLTraceContext *glContext = getGLTraceContext();
6148
6149    glmsg.set_function(GLMessage::glDiscardFramebufferEXT);
6150
6151    // copy argument target
6152    GLMessage_DataType *arg_target = glmsg.add_args();
6153    arg_target->set_isarray(false);
6154    arg_target->set_type(GLMessage::DataType::ENUM);
6155    arg_target->add_intvalue((int)target);
6156
6157    // copy argument numAttachments
6158    GLMessage_DataType *arg_numAttachments = glmsg.add_args();
6159    arg_numAttachments->set_isarray(false);
6160    arg_numAttachments->set_type(GLMessage::DataType::INT);
6161    arg_numAttachments->add_intvalue(numAttachments);
6162
6163    // copy argument attachments
6164    GLMessage_DataType *arg_attachments = glmsg.add_args();
6165    arg_attachments->set_isarray(false);
6166    arg_attachments->set_type(GLMessage::DataType::INT);
6167    arg_attachments->add_intvalue((int)attachments);
6168
6169    // call function
6170    nsecs_t start_time = systemTime();
6171    glContext->hooks->gl.glDiscardFramebufferEXT(target, numAttachments, attachments);
6172    nsecs_t end_time = systemTime();
6173
6174    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6175    glContext->traceGLMessage(&glmsg);
6176}
6177
6178void GLTrace_glRenderbufferStorageMultisampleEXT(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
6179    GLMessage glmsg;
6180    GLTraceContext *glContext = getGLTraceContext();
6181
6182    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleEXT);
6183
6184    // copy argument target
6185    GLMessage_DataType *arg_target = glmsg.add_args();
6186    arg_target->set_isarray(false);
6187    arg_target->set_type(GLMessage::DataType::ENUM);
6188    arg_target->add_intvalue((int)target);
6189
6190    // copy argument samples
6191    GLMessage_DataType *arg_samples = glmsg.add_args();
6192    arg_samples->set_isarray(false);
6193    arg_samples->set_type(GLMessage::DataType::INT);
6194    arg_samples->add_intvalue(samples);
6195
6196    // copy argument internalformat
6197    GLMessage_DataType *arg_internalformat = glmsg.add_args();
6198    arg_internalformat->set_isarray(false);
6199    arg_internalformat->set_type(GLMessage::DataType::ENUM);
6200    arg_internalformat->add_intvalue((int)internalformat);
6201
6202    // copy argument width
6203    GLMessage_DataType *arg_width = glmsg.add_args();
6204    arg_width->set_isarray(false);
6205    arg_width->set_type(GLMessage::DataType::INT);
6206    arg_width->add_intvalue(width);
6207
6208    // copy argument height
6209    GLMessage_DataType *arg_height = glmsg.add_args();
6210    arg_height->set_isarray(false);
6211    arg_height->set_type(GLMessage::DataType::INT);
6212    arg_height->add_intvalue(height);
6213
6214    // call function
6215    nsecs_t start_time = systemTime();
6216    glContext->hooks->gl.glRenderbufferStorageMultisampleEXT(target, samples, internalformat, width, height);
6217    nsecs_t end_time = systemTime();
6218
6219    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6220    glContext->traceGLMessage(&glmsg);
6221}
6222
6223void GLTrace_glFramebufferTexture2DMultisampleEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples) {
6224    GLMessage glmsg;
6225    GLTraceContext *glContext = getGLTraceContext();
6226
6227    glmsg.set_function(GLMessage::glFramebufferTexture2DMultisampleEXT);
6228
6229    // copy argument target
6230    GLMessage_DataType *arg_target = glmsg.add_args();
6231    arg_target->set_isarray(false);
6232    arg_target->set_type(GLMessage::DataType::ENUM);
6233    arg_target->add_intvalue((int)target);
6234
6235    // copy argument attachment
6236    GLMessage_DataType *arg_attachment = glmsg.add_args();
6237    arg_attachment->set_isarray(false);
6238    arg_attachment->set_type(GLMessage::DataType::ENUM);
6239    arg_attachment->add_intvalue((int)attachment);
6240
6241    // copy argument textarget
6242    GLMessage_DataType *arg_textarget = glmsg.add_args();
6243    arg_textarget->set_isarray(false);
6244    arg_textarget->set_type(GLMessage::DataType::ENUM);
6245    arg_textarget->add_intvalue((int)textarget);
6246
6247    // copy argument texture
6248    GLMessage_DataType *arg_texture = glmsg.add_args();
6249    arg_texture->set_isarray(false);
6250    arg_texture->set_type(GLMessage::DataType::INT);
6251    arg_texture->add_intvalue(texture);
6252
6253    // copy argument level
6254    GLMessage_DataType *arg_level = glmsg.add_args();
6255    arg_level->set_isarray(false);
6256    arg_level->set_type(GLMessage::DataType::INT);
6257    arg_level->add_intvalue(level);
6258
6259    // copy argument samples
6260    GLMessage_DataType *arg_samples = glmsg.add_args();
6261    arg_samples->set_isarray(false);
6262    arg_samples->set_type(GLMessage::DataType::INT);
6263    arg_samples->add_intvalue(samples);
6264
6265    // call function
6266    nsecs_t start_time = systemTime();
6267    glContext->hooks->gl.glFramebufferTexture2DMultisampleEXT(target, attachment, textarget, texture, level, samples);
6268    nsecs_t end_time = systemTime();
6269
6270    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6271    glContext->traceGLMessage(&glmsg);
6272}
6273
6274void GLTrace_glMultiDrawArraysEXT(GLenum mode, GLint *first, GLsizei *count, GLsizei primcount) {
6275    GLMessage glmsg;
6276    GLTraceContext *glContext = getGLTraceContext();
6277
6278    glmsg.set_function(GLMessage::glMultiDrawArraysEXT);
6279
6280    // copy argument mode
6281    GLMessage_DataType *arg_mode = glmsg.add_args();
6282    arg_mode->set_isarray(false);
6283    arg_mode->set_type(GLMessage::DataType::ENUM);
6284    arg_mode->add_intvalue((int)mode);
6285
6286    // copy argument first
6287    GLMessage_DataType *arg_first = glmsg.add_args();
6288    arg_first->set_isarray(false);
6289    arg_first->set_type(GLMessage::DataType::INT);
6290    arg_first->add_intvalue((int)first);
6291
6292    // copy argument count
6293    GLMessage_DataType *arg_count = glmsg.add_args();
6294    arg_count->set_isarray(false);
6295    arg_count->set_type(GLMessage::DataType::INT);
6296    arg_count->add_intvalue((int)count);
6297
6298    // copy argument primcount
6299    GLMessage_DataType *arg_primcount = glmsg.add_args();
6300    arg_primcount->set_isarray(false);
6301    arg_primcount->set_type(GLMessage::DataType::INT);
6302    arg_primcount->add_intvalue(primcount);
6303
6304    // call function
6305    nsecs_t start_time = systemTime();
6306    glContext->hooks->gl.glMultiDrawArraysEXT(mode, first, count, primcount);
6307    nsecs_t end_time = systemTime();
6308
6309    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6310    glContext->traceGLMessage(&glmsg);
6311}
6312
6313void GLTrace_glMultiDrawElementsEXT(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount) {
6314    GLMessage glmsg;
6315    GLTraceContext *glContext = getGLTraceContext();
6316
6317    glmsg.set_function(GLMessage::glMultiDrawElementsEXT);
6318
6319    // copy argument mode
6320    GLMessage_DataType *arg_mode = glmsg.add_args();
6321    arg_mode->set_isarray(false);
6322    arg_mode->set_type(GLMessage::DataType::ENUM);
6323    arg_mode->add_intvalue((int)mode);
6324
6325    // copy argument count
6326    GLMessage_DataType *arg_count = glmsg.add_args();
6327    arg_count->set_isarray(false);
6328    arg_count->set_type(GLMessage::DataType::INT);
6329    arg_count->add_intvalue((int)count);
6330
6331    // copy argument type
6332    GLMessage_DataType *arg_type = glmsg.add_args();
6333    arg_type->set_isarray(false);
6334    arg_type->set_type(GLMessage::DataType::ENUM);
6335    arg_type->add_intvalue((int)type);
6336
6337    // copy argument indices
6338    GLMessage_DataType *arg_indices = glmsg.add_args();
6339    arg_indices->set_isarray(false);
6340    arg_indices->set_type(GLMessage::DataType::INT);
6341    arg_indices->add_intvalue((int)indices);
6342
6343    // copy argument primcount
6344    GLMessage_DataType *arg_primcount = glmsg.add_args();
6345    arg_primcount->set_isarray(false);
6346    arg_primcount->set_type(GLMessage::DataType::INT);
6347    arg_primcount->add_intvalue(primcount);
6348
6349    // call function
6350    nsecs_t start_time = systemTime();
6351    glContext->hooks->gl.glMultiDrawElementsEXT(mode, count, type, indices, primcount);
6352    nsecs_t end_time = systemTime();
6353
6354    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6355    glContext->traceGLMessage(&glmsg);
6356}
6357
6358void GLTrace_glGenQueriesEXT(GLsizei n, GLuint *ids) {
6359    GLMessage glmsg;
6360    GLTraceContext *glContext = getGLTraceContext();
6361
6362    glmsg.set_function(GLMessage::glGenQueriesEXT);
6363
6364    // copy argument n
6365    GLMessage_DataType *arg_n = glmsg.add_args();
6366    arg_n->set_isarray(false);
6367    arg_n->set_type(GLMessage::DataType::INT);
6368    arg_n->add_intvalue(n);
6369
6370    // copy argument ids
6371    GLMessage_DataType *arg_ids = glmsg.add_args();
6372    arg_ids->set_isarray(false);
6373    arg_ids->set_type(GLMessage::DataType::INT);
6374    arg_ids->add_intvalue((int)ids);
6375
6376    // call function
6377    nsecs_t start_time = systemTime();
6378    glContext->hooks->gl.glGenQueriesEXT(n, ids);
6379    nsecs_t end_time = systemTime();
6380
6381    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6382    glContext->traceGLMessage(&glmsg);
6383}
6384
6385void GLTrace_glDeleteQueriesEXT(GLsizei n, const GLuint *ids) {
6386    GLMessage glmsg;
6387    GLTraceContext *glContext = getGLTraceContext();
6388
6389    glmsg.set_function(GLMessage::glDeleteQueriesEXT);
6390
6391    // copy argument n
6392    GLMessage_DataType *arg_n = glmsg.add_args();
6393    arg_n->set_isarray(false);
6394    arg_n->set_type(GLMessage::DataType::INT);
6395    arg_n->add_intvalue(n);
6396
6397    // copy argument ids
6398    GLMessage_DataType *arg_ids = glmsg.add_args();
6399    arg_ids->set_isarray(false);
6400    arg_ids->set_type(GLMessage::DataType::INT);
6401    arg_ids->add_intvalue((int)ids);
6402
6403    // call function
6404    nsecs_t start_time = systemTime();
6405    glContext->hooks->gl.glDeleteQueriesEXT(n, ids);
6406    nsecs_t end_time = systemTime();
6407
6408    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6409    glContext->traceGLMessage(&glmsg);
6410}
6411
6412GLboolean GLTrace_glIsQueryEXT(GLuint id) {
6413    GLMessage glmsg;
6414    GLTraceContext *glContext = getGLTraceContext();
6415
6416    glmsg.set_function(GLMessage::glIsQueryEXT);
6417
6418    // copy argument id
6419    GLMessage_DataType *arg_id = glmsg.add_args();
6420    arg_id->set_isarray(false);
6421    arg_id->set_type(GLMessage::DataType::INT);
6422    arg_id->add_intvalue(id);
6423
6424    // call function
6425    nsecs_t start_time = systemTime();
6426    GLboolean retValue = glContext->hooks->gl.glIsQueryEXT(id);
6427    nsecs_t end_time = systemTime();
6428
6429    // set return value
6430    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
6431    rt->set_isarray(false);
6432    rt->set_type(GLMessage::DataType::BOOL);
6433    rt->add_boolvalue(retValue);
6434
6435    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6436    glContext->traceGLMessage(&glmsg);
6437
6438    return retValue;
6439}
6440
6441void GLTrace_glBeginQueryEXT(GLenum target, GLuint id) {
6442    GLMessage glmsg;
6443    GLTraceContext *glContext = getGLTraceContext();
6444
6445    glmsg.set_function(GLMessage::glBeginQueryEXT);
6446
6447    // copy argument target
6448    GLMessage_DataType *arg_target = glmsg.add_args();
6449    arg_target->set_isarray(false);
6450    arg_target->set_type(GLMessage::DataType::ENUM);
6451    arg_target->add_intvalue((int)target);
6452
6453    // copy argument id
6454    GLMessage_DataType *arg_id = glmsg.add_args();
6455    arg_id->set_isarray(false);
6456    arg_id->set_type(GLMessage::DataType::INT);
6457    arg_id->add_intvalue(id);
6458
6459    // call function
6460    nsecs_t start_time = systemTime();
6461    glContext->hooks->gl.glBeginQueryEXT(target, id);
6462    nsecs_t end_time = systemTime();
6463
6464    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6465    glContext->traceGLMessage(&glmsg);
6466}
6467
6468void GLTrace_glEndQueryEXT(GLenum target) {
6469    GLMessage glmsg;
6470    GLTraceContext *glContext = getGLTraceContext();
6471
6472    glmsg.set_function(GLMessage::glEndQueryEXT);
6473
6474    // copy argument target
6475    GLMessage_DataType *arg_target = glmsg.add_args();
6476    arg_target->set_isarray(false);
6477    arg_target->set_type(GLMessage::DataType::ENUM);
6478    arg_target->add_intvalue((int)target);
6479
6480    // call function
6481    nsecs_t start_time = systemTime();
6482    glContext->hooks->gl.glEndQueryEXT(target);
6483    nsecs_t end_time = systemTime();
6484
6485    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6486    glContext->traceGLMessage(&glmsg);
6487}
6488
6489void GLTrace_glGetQueryivEXT(GLenum target, GLenum pname, GLint *params) {
6490    GLMessage glmsg;
6491    GLTraceContext *glContext = getGLTraceContext();
6492
6493    glmsg.set_function(GLMessage::glGetQueryivEXT);
6494
6495    // copy argument target
6496    GLMessage_DataType *arg_target = glmsg.add_args();
6497    arg_target->set_isarray(false);
6498    arg_target->set_type(GLMessage::DataType::ENUM);
6499    arg_target->add_intvalue((int)target);
6500
6501    // copy argument pname
6502    GLMessage_DataType *arg_pname = glmsg.add_args();
6503    arg_pname->set_isarray(false);
6504    arg_pname->set_type(GLMessage::DataType::ENUM);
6505    arg_pname->add_intvalue((int)pname);
6506
6507    // copy argument params
6508    GLMessage_DataType *arg_params = glmsg.add_args();
6509    arg_params->set_isarray(false);
6510    arg_params->set_type(GLMessage::DataType::INT);
6511    arg_params->add_intvalue((int)params);
6512
6513    // call function
6514    nsecs_t start_time = systemTime();
6515    glContext->hooks->gl.glGetQueryivEXT(target, pname, params);
6516    nsecs_t end_time = systemTime();
6517
6518    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6519    glContext->traceGLMessage(&glmsg);
6520}
6521
6522void GLTrace_glGetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint *params) {
6523    GLMessage glmsg;
6524    GLTraceContext *glContext = getGLTraceContext();
6525
6526    glmsg.set_function(GLMessage::glGetQueryObjectuivEXT);
6527
6528    // copy argument id
6529    GLMessage_DataType *arg_id = glmsg.add_args();
6530    arg_id->set_isarray(false);
6531    arg_id->set_type(GLMessage::DataType::INT);
6532    arg_id->add_intvalue(id);
6533
6534    // copy argument pname
6535    GLMessage_DataType *arg_pname = glmsg.add_args();
6536    arg_pname->set_isarray(false);
6537    arg_pname->set_type(GLMessage::DataType::ENUM);
6538    arg_pname->add_intvalue((int)pname);
6539
6540    // copy argument params
6541    GLMessage_DataType *arg_params = glmsg.add_args();
6542    arg_params->set_isarray(false);
6543    arg_params->set_type(GLMessage::DataType::INT);
6544    arg_params->add_intvalue((int)params);
6545
6546    // call function
6547    nsecs_t start_time = systemTime();
6548    glContext->hooks->gl.glGetQueryObjectuivEXT(id, pname, params);
6549    nsecs_t end_time = systemTime();
6550
6551    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6552    glContext->traceGLMessage(&glmsg);
6553}
6554
6555GLenum GLTrace_glGetGraphicsResetStatusEXT(void) {
6556    GLMessage glmsg;
6557    GLTraceContext *glContext = getGLTraceContext();
6558
6559    glmsg.set_function(GLMessage::glGetGraphicsResetStatusEXT);
6560
6561    // call function
6562    nsecs_t start_time = systemTime();
6563    GLenum retValue = glContext->hooks->gl.glGetGraphicsResetStatusEXT();
6564    nsecs_t end_time = systemTime();
6565
6566    // set return value
6567    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
6568    rt->set_isarray(false);
6569    rt->set_type(GLMessage::DataType::ENUM);
6570    rt->add_intvalue((int)retValue);
6571
6572    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6573    glContext->traceGLMessage(&glmsg);
6574
6575    return retValue;
6576}
6577
6578void GLTrace_glReadnPixelsEXT(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data) {
6579    GLMessage glmsg;
6580    GLTraceContext *glContext = getGLTraceContext();
6581
6582    glmsg.set_function(GLMessage::glReadnPixelsEXT);
6583
6584    // copy argument x
6585    GLMessage_DataType *arg_x = glmsg.add_args();
6586    arg_x->set_isarray(false);
6587    arg_x->set_type(GLMessage::DataType::INT);
6588    arg_x->add_intvalue(x);
6589
6590    // copy argument y
6591    GLMessage_DataType *arg_y = glmsg.add_args();
6592    arg_y->set_isarray(false);
6593    arg_y->set_type(GLMessage::DataType::INT);
6594    arg_y->add_intvalue(y);
6595
6596    // copy argument width
6597    GLMessage_DataType *arg_width = glmsg.add_args();
6598    arg_width->set_isarray(false);
6599    arg_width->set_type(GLMessage::DataType::INT);
6600    arg_width->add_intvalue(width);
6601
6602    // copy argument height
6603    GLMessage_DataType *arg_height = glmsg.add_args();
6604    arg_height->set_isarray(false);
6605    arg_height->set_type(GLMessage::DataType::INT);
6606    arg_height->add_intvalue(height);
6607
6608    // copy argument format
6609    GLMessage_DataType *arg_format = glmsg.add_args();
6610    arg_format->set_isarray(false);
6611    arg_format->set_type(GLMessage::DataType::ENUM);
6612    arg_format->add_intvalue((int)format);
6613
6614    // copy argument type
6615    GLMessage_DataType *arg_type = glmsg.add_args();
6616    arg_type->set_isarray(false);
6617    arg_type->set_type(GLMessage::DataType::ENUM);
6618    arg_type->add_intvalue((int)type);
6619
6620    // copy argument bufSize
6621    GLMessage_DataType *arg_bufSize = glmsg.add_args();
6622    arg_bufSize->set_isarray(false);
6623    arg_bufSize->set_type(GLMessage::DataType::INT);
6624    arg_bufSize->add_intvalue(bufSize);
6625
6626    // copy argument data
6627    GLMessage_DataType *arg_data = glmsg.add_args();
6628    arg_data->set_isarray(false);
6629    arg_data->set_type(GLMessage::DataType::INT);
6630    arg_data->add_intvalue((int)data);
6631
6632    // call function
6633    nsecs_t start_time = systemTime();
6634    glContext->hooks->gl.glReadnPixelsEXT(x, y, width, height, format, type, bufSize, data);
6635    nsecs_t end_time = systemTime();
6636
6637    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6638    glContext->traceGLMessage(&glmsg);
6639}
6640
6641void GLTrace_glGetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSize, float *params) {
6642    GLMessage glmsg;
6643    GLTraceContext *glContext = getGLTraceContext();
6644
6645    glmsg.set_function(GLMessage::glGetnUniformfvEXT);
6646
6647    // copy argument program
6648    GLMessage_DataType *arg_program = glmsg.add_args();
6649    arg_program->set_isarray(false);
6650    arg_program->set_type(GLMessage::DataType::INT);
6651    arg_program->add_intvalue(program);
6652
6653    // copy argument location
6654    GLMessage_DataType *arg_location = glmsg.add_args();
6655    arg_location->set_isarray(false);
6656    arg_location->set_type(GLMessage::DataType::INT);
6657    arg_location->add_intvalue(location);
6658
6659    // copy argument bufSize
6660    GLMessage_DataType *arg_bufSize = glmsg.add_args();
6661    arg_bufSize->set_isarray(false);
6662    arg_bufSize->set_type(GLMessage::DataType::INT);
6663    arg_bufSize->add_intvalue(bufSize);
6664
6665    // copy argument params
6666    GLMessage_DataType *arg_params = glmsg.add_args();
6667    arg_params->set_isarray(false);
6668    arg_params->set_type(GLMessage::DataType::INT);
6669    arg_params->add_intvalue((int)params);
6670
6671    // call function
6672    nsecs_t start_time = systemTime();
6673    glContext->hooks->gl.glGetnUniformfvEXT(program, location, bufSize, params);
6674    nsecs_t end_time = systemTime();
6675
6676    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6677    glContext->traceGLMessage(&glmsg);
6678}
6679
6680void GLTrace_glGetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint *params) {
6681    GLMessage glmsg;
6682    GLTraceContext *glContext = getGLTraceContext();
6683
6684    glmsg.set_function(GLMessage::glGetnUniformivEXT);
6685
6686    // copy argument program
6687    GLMessage_DataType *arg_program = glmsg.add_args();
6688    arg_program->set_isarray(false);
6689    arg_program->set_type(GLMessage::DataType::INT);
6690    arg_program->add_intvalue(program);
6691
6692    // copy argument location
6693    GLMessage_DataType *arg_location = glmsg.add_args();
6694    arg_location->set_isarray(false);
6695    arg_location->set_type(GLMessage::DataType::INT);
6696    arg_location->add_intvalue(location);
6697
6698    // copy argument bufSize
6699    GLMessage_DataType *arg_bufSize = glmsg.add_args();
6700    arg_bufSize->set_isarray(false);
6701    arg_bufSize->set_type(GLMessage::DataType::INT);
6702    arg_bufSize->add_intvalue(bufSize);
6703
6704    // copy argument params
6705    GLMessage_DataType *arg_params = glmsg.add_args();
6706    arg_params->set_isarray(false);
6707    arg_params->set_type(GLMessage::DataType::INT);
6708    arg_params->add_intvalue((int)params);
6709
6710    // call function
6711    nsecs_t start_time = systemTime();
6712    glContext->hooks->gl.glGetnUniformivEXT(program, location, bufSize, params);
6713    nsecs_t end_time = systemTime();
6714
6715    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6716    glContext->traceGLMessage(&glmsg);
6717}
6718
6719void GLTrace_glUseProgramStagesEXT(GLuint pipeline, GLbitfield stages, GLuint program) {
6720    GLMessage glmsg;
6721    GLTraceContext *glContext = getGLTraceContext();
6722
6723    glmsg.set_function(GLMessage::glUseProgramStagesEXT);
6724
6725    // copy argument pipeline
6726    GLMessage_DataType *arg_pipeline = glmsg.add_args();
6727    arg_pipeline->set_isarray(false);
6728    arg_pipeline->set_type(GLMessage::DataType::INT);
6729    arg_pipeline->add_intvalue(pipeline);
6730
6731    // copy argument stages
6732    GLMessage_DataType *arg_stages = glmsg.add_args();
6733    arg_stages->set_isarray(false);
6734    arg_stages->set_type(GLMessage::DataType::INT);
6735    arg_stages->add_intvalue(stages);
6736
6737    // copy argument program
6738    GLMessage_DataType *arg_program = glmsg.add_args();
6739    arg_program->set_isarray(false);
6740    arg_program->set_type(GLMessage::DataType::INT);
6741    arg_program->add_intvalue(program);
6742
6743    // call function
6744    nsecs_t start_time = systemTime();
6745    glContext->hooks->gl.glUseProgramStagesEXT(pipeline, stages, program);
6746    nsecs_t end_time = systemTime();
6747
6748    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6749    glContext->traceGLMessage(&glmsg);
6750}
6751
6752void GLTrace_glActiveShaderProgramEXT(GLuint pipeline, GLuint program) {
6753    GLMessage glmsg;
6754    GLTraceContext *glContext = getGLTraceContext();
6755
6756    glmsg.set_function(GLMessage::glActiveShaderProgramEXT);
6757
6758    // copy argument pipeline
6759    GLMessage_DataType *arg_pipeline = glmsg.add_args();
6760    arg_pipeline->set_isarray(false);
6761    arg_pipeline->set_type(GLMessage::DataType::INT);
6762    arg_pipeline->add_intvalue(pipeline);
6763
6764    // copy argument program
6765    GLMessage_DataType *arg_program = glmsg.add_args();
6766    arg_program->set_isarray(false);
6767    arg_program->set_type(GLMessage::DataType::INT);
6768    arg_program->add_intvalue(program);
6769
6770    // call function
6771    nsecs_t start_time = systemTime();
6772    glContext->hooks->gl.glActiveShaderProgramEXT(pipeline, program);
6773    nsecs_t end_time = systemTime();
6774
6775    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6776    glContext->traceGLMessage(&glmsg);
6777}
6778
6779GLuint GLTrace_glCreateShaderProgramvEXT(GLenum type, GLsizei count, const GLchar **strings) {
6780    GLMessage glmsg;
6781    GLTraceContext *glContext = getGLTraceContext();
6782
6783    glmsg.set_function(GLMessage::glCreateShaderProgramvEXT);
6784
6785    // copy argument type
6786    GLMessage_DataType *arg_type = glmsg.add_args();
6787    arg_type->set_isarray(false);
6788    arg_type->set_type(GLMessage::DataType::ENUM);
6789    arg_type->add_intvalue((int)type);
6790
6791    // copy argument count
6792    GLMessage_DataType *arg_count = glmsg.add_args();
6793    arg_count->set_isarray(false);
6794    arg_count->set_type(GLMessage::DataType::INT);
6795    arg_count->add_intvalue(count);
6796
6797    // copy argument strings
6798    GLMessage_DataType *arg_strings = glmsg.add_args();
6799    arg_strings->set_isarray(false);
6800    arg_strings->set_type(GLMessage::DataType::INT);
6801    arg_strings->add_intvalue((int)strings);
6802
6803    // call function
6804    nsecs_t start_time = systemTime();
6805    GLuint retValue = glContext->hooks->gl.glCreateShaderProgramvEXT(type, count, strings);
6806    nsecs_t end_time = systemTime();
6807
6808    // set return value
6809    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
6810    rt->set_isarray(false);
6811    rt->set_type(GLMessage::DataType::INT);
6812    rt->add_intvalue(retValue);
6813
6814    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6815    glContext->traceGLMessage(&glmsg);
6816
6817    return retValue;
6818}
6819
6820void GLTrace_glBindProgramPipelineEXT(GLuint pipeline) {
6821    GLMessage glmsg;
6822    GLTraceContext *glContext = getGLTraceContext();
6823
6824    glmsg.set_function(GLMessage::glBindProgramPipelineEXT);
6825
6826    // copy argument pipeline
6827    GLMessage_DataType *arg_pipeline = glmsg.add_args();
6828    arg_pipeline->set_isarray(false);
6829    arg_pipeline->set_type(GLMessage::DataType::INT);
6830    arg_pipeline->add_intvalue(pipeline);
6831
6832    // call function
6833    nsecs_t start_time = systemTime();
6834    glContext->hooks->gl.glBindProgramPipelineEXT(pipeline);
6835    nsecs_t end_time = systemTime();
6836
6837    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6838    glContext->traceGLMessage(&glmsg);
6839}
6840
6841void GLTrace_glDeleteProgramPipelinesEXT(GLsizei n, const GLuint *pipelines) {
6842    GLMessage glmsg;
6843    GLTraceContext *glContext = getGLTraceContext();
6844
6845    glmsg.set_function(GLMessage::glDeleteProgramPipelinesEXT);
6846
6847    // copy argument n
6848    GLMessage_DataType *arg_n = glmsg.add_args();
6849    arg_n->set_isarray(false);
6850    arg_n->set_type(GLMessage::DataType::INT);
6851    arg_n->add_intvalue(n);
6852
6853    // copy argument pipelines
6854    GLMessage_DataType *arg_pipelines = glmsg.add_args();
6855    arg_pipelines->set_isarray(false);
6856    arg_pipelines->set_type(GLMessage::DataType::INT);
6857    arg_pipelines->add_intvalue((int)pipelines);
6858
6859    // call function
6860    nsecs_t start_time = systemTime();
6861    glContext->hooks->gl.glDeleteProgramPipelinesEXT(n, pipelines);
6862    nsecs_t end_time = systemTime();
6863
6864    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6865    glContext->traceGLMessage(&glmsg);
6866}
6867
6868void GLTrace_glGenProgramPipelinesEXT(GLsizei n, GLuint *pipelines) {
6869    GLMessage glmsg;
6870    GLTraceContext *glContext = getGLTraceContext();
6871
6872    glmsg.set_function(GLMessage::glGenProgramPipelinesEXT);
6873
6874    // copy argument n
6875    GLMessage_DataType *arg_n = glmsg.add_args();
6876    arg_n->set_isarray(false);
6877    arg_n->set_type(GLMessage::DataType::INT);
6878    arg_n->add_intvalue(n);
6879
6880    // copy argument pipelines
6881    GLMessage_DataType *arg_pipelines = glmsg.add_args();
6882    arg_pipelines->set_isarray(false);
6883    arg_pipelines->set_type(GLMessage::DataType::INT);
6884    arg_pipelines->add_intvalue((int)pipelines);
6885
6886    // call function
6887    nsecs_t start_time = systemTime();
6888    glContext->hooks->gl.glGenProgramPipelinesEXT(n, pipelines);
6889    nsecs_t end_time = systemTime();
6890
6891    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6892    glContext->traceGLMessage(&glmsg);
6893}
6894
6895GLboolean GLTrace_glIsProgramPipelineEXT(GLuint pipeline) {
6896    GLMessage glmsg;
6897    GLTraceContext *glContext = getGLTraceContext();
6898
6899    glmsg.set_function(GLMessage::glIsProgramPipelineEXT);
6900
6901    // copy argument pipeline
6902    GLMessage_DataType *arg_pipeline = glmsg.add_args();
6903    arg_pipeline->set_isarray(false);
6904    arg_pipeline->set_type(GLMessage::DataType::INT);
6905    arg_pipeline->add_intvalue(pipeline);
6906
6907    // call function
6908    nsecs_t start_time = systemTime();
6909    GLboolean retValue = glContext->hooks->gl.glIsProgramPipelineEXT(pipeline);
6910    nsecs_t end_time = systemTime();
6911
6912    // set return value
6913    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
6914    rt->set_isarray(false);
6915    rt->set_type(GLMessage::DataType::BOOL);
6916    rt->add_boolvalue(retValue);
6917
6918    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6919    glContext->traceGLMessage(&glmsg);
6920
6921    return retValue;
6922}
6923
6924void GLTrace_glProgramParameteriEXT(GLuint program, GLenum pname, GLint value) {
6925    GLMessage glmsg;
6926    GLTraceContext *glContext = getGLTraceContext();
6927
6928    glmsg.set_function(GLMessage::glProgramParameteriEXT);
6929
6930    // copy argument program
6931    GLMessage_DataType *arg_program = glmsg.add_args();
6932    arg_program->set_isarray(false);
6933    arg_program->set_type(GLMessage::DataType::INT);
6934    arg_program->add_intvalue(program);
6935
6936    // copy argument pname
6937    GLMessage_DataType *arg_pname = glmsg.add_args();
6938    arg_pname->set_isarray(false);
6939    arg_pname->set_type(GLMessage::DataType::ENUM);
6940    arg_pname->add_intvalue((int)pname);
6941
6942    // copy argument value
6943    GLMessage_DataType *arg_value = glmsg.add_args();
6944    arg_value->set_isarray(false);
6945    arg_value->set_type(GLMessage::DataType::INT);
6946    arg_value->add_intvalue(value);
6947
6948    // call function
6949    nsecs_t start_time = systemTime();
6950    glContext->hooks->gl.glProgramParameteriEXT(program, pname, value);
6951    nsecs_t end_time = systemTime();
6952
6953    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6954    glContext->traceGLMessage(&glmsg);
6955}
6956
6957void GLTrace_glGetProgramPipelineivEXT(GLuint pipeline, GLenum pname, GLint *params) {
6958    GLMessage glmsg;
6959    GLTraceContext *glContext = getGLTraceContext();
6960
6961    glmsg.set_function(GLMessage::glGetProgramPipelineivEXT);
6962
6963    // copy argument pipeline
6964    GLMessage_DataType *arg_pipeline = glmsg.add_args();
6965    arg_pipeline->set_isarray(false);
6966    arg_pipeline->set_type(GLMessage::DataType::INT);
6967    arg_pipeline->add_intvalue(pipeline);
6968
6969    // copy argument pname
6970    GLMessage_DataType *arg_pname = glmsg.add_args();
6971    arg_pname->set_isarray(false);
6972    arg_pname->set_type(GLMessage::DataType::ENUM);
6973    arg_pname->add_intvalue((int)pname);
6974
6975    // copy argument params
6976    GLMessage_DataType *arg_params = glmsg.add_args();
6977    arg_params->set_isarray(false);
6978    arg_params->set_type(GLMessage::DataType::INT);
6979    arg_params->add_intvalue((int)params);
6980
6981    // call function
6982    nsecs_t start_time = systemTime();
6983    glContext->hooks->gl.glGetProgramPipelineivEXT(pipeline, pname, params);
6984    nsecs_t end_time = systemTime();
6985
6986    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6987    glContext->traceGLMessage(&glmsg);
6988}
6989
6990void GLTrace_glProgramUniform1iEXT(GLuint program, GLint location, GLint x) {
6991    GLMessage glmsg;
6992    GLTraceContext *glContext = getGLTraceContext();
6993
6994    glmsg.set_function(GLMessage::glProgramUniform1iEXT);
6995
6996    // copy argument program
6997    GLMessage_DataType *arg_program = glmsg.add_args();
6998    arg_program->set_isarray(false);
6999    arg_program->set_type(GLMessage::DataType::INT);
7000    arg_program->add_intvalue(program);
7001
7002    // copy argument location
7003    GLMessage_DataType *arg_location = glmsg.add_args();
7004    arg_location->set_isarray(false);
7005    arg_location->set_type(GLMessage::DataType::INT);
7006    arg_location->add_intvalue(location);
7007
7008    // copy argument x
7009    GLMessage_DataType *arg_x = glmsg.add_args();
7010    arg_x->set_isarray(false);
7011    arg_x->set_type(GLMessage::DataType::INT);
7012    arg_x->add_intvalue(x);
7013
7014    // call function
7015    nsecs_t start_time = systemTime();
7016    glContext->hooks->gl.glProgramUniform1iEXT(program, location, x);
7017    nsecs_t end_time = systemTime();
7018
7019    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7020    glContext->traceGLMessage(&glmsg);
7021}
7022
7023void GLTrace_glProgramUniform2iEXT(GLuint program, GLint location, GLint x, GLint y) {
7024    GLMessage glmsg;
7025    GLTraceContext *glContext = getGLTraceContext();
7026
7027    glmsg.set_function(GLMessage::glProgramUniform2iEXT);
7028
7029    // copy argument program
7030    GLMessage_DataType *arg_program = glmsg.add_args();
7031    arg_program->set_isarray(false);
7032    arg_program->set_type(GLMessage::DataType::INT);
7033    arg_program->add_intvalue(program);
7034
7035    // copy argument location
7036    GLMessage_DataType *arg_location = glmsg.add_args();
7037    arg_location->set_isarray(false);
7038    arg_location->set_type(GLMessage::DataType::INT);
7039    arg_location->add_intvalue(location);
7040
7041    // copy argument x
7042    GLMessage_DataType *arg_x = glmsg.add_args();
7043    arg_x->set_isarray(false);
7044    arg_x->set_type(GLMessage::DataType::INT);
7045    arg_x->add_intvalue(x);
7046
7047    // copy argument y
7048    GLMessage_DataType *arg_y = glmsg.add_args();
7049    arg_y->set_isarray(false);
7050    arg_y->set_type(GLMessage::DataType::INT);
7051    arg_y->add_intvalue(y);
7052
7053    // call function
7054    nsecs_t start_time = systemTime();
7055    glContext->hooks->gl.glProgramUniform2iEXT(program, location, x, y);
7056    nsecs_t end_time = systemTime();
7057
7058    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7059    glContext->traceGLMessage(&glmsg);
7060}
7061
7062void GLTrace_glProgramUniform3iEXT(GLuint program, GLint location, GLint x, GLint y, GLint z) {
7063    GLMessage glmsg;
7064    GLTraceContext *glContext = getGLTraceContext();
7065
7066    glmsg.set_function(GLMessage::glProgramUniform3iEXT);
7067
7068    // copy argument program
7069    GLMessage_DataType *arg_program = glmsg.add_args();
7070    arg_program->set_isarray(false);
7071    arg_program->set_type(GLMessage::DataType::INT);
7072    arg_program->add_intvalue(program);
7073
7074    // copy argument location
7075    GLMessage_DataType *arg_location = glmsg.add_args();
7076    arg_location->set_isarray(false);
7077    arg_location->set_type(GLMessage::DataType::INT);
7078    arg_location->add_intvalue(location);
7079
7080    // copy argument x
7081    GLMessage_DataType *arg_x = glmsg.add_args();
7082    arg_x->set_isarray(false);
7083    arg_x->set_type(GLMessage::DataType::INT);
7084    arg_x->add_intvalue(x);
7085
7086    // copy argument y
7087    GLMessage_DataType *arg_y = glmsg.add_args();
7088    arg_y->set_isarray(false);
7089    arg_y->set_type(GLMessage::DataType::INT);
7090    arg_y->add_intvalue(y);
7091
7092    // copy argument z
7093    GLMessage_DataType *arg_z = glmsg.add_args();
7094    arg_z->set_isarray(false);
7095    arg_z->set_type(GLMessage::DataType::INT);
7096    arg_z->add_intvalue(z);
7097
7098    // call function
7099    nsecs_t start_time = systemTime();
7100    glContext->hooks->gl.glProgramUniform3iEXT(program, location, x, y, z);
7101    nsecs_t end_time = systemTime();
7102
7103    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7104    glContext->traceGLMessage(&glmsg);
7105}
7106
7107void GLTrace_glProgramUniform4iEXT(GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w) {
7108    GLMessage glmsg;
7109    GLTraceContext *glContext = getGLTraceContext();
7110
7111    glmsg.set_function(GLMessage::glProgramUniform4iEXT);
7112
7113    // copy argument program
7114    GLMessage_DataType *arg_program = glmsg.add_args();
7115    arg_program->set_isarray(false);
7116    arg_program->set_type(GLMessage::DataType::INT);
7117    arg_program->add_intvalue(program);
7118
7119    // copy argument location
7120    GLMessage_DataType *arg_location = glmsg.add_args();
7121    arg_location->set_isarray(false);
7122    arg_location->set_type(GLMessage::DataType::INT);
7123    arg_location->add_intvalue(location);
7124
7125    // copy argument x
7126    GLMessage_DataType *arg_x = glmsg.add_args();
7127    arg_x->set_isarray(false);
7128    arg_x->set_type(GLMessage::DataType::INT);
7129    arg_x->add_intvalue(x);
7130
7131    // copy argument y
7132    GLMessage_DataType *arg_y = glmsg.add_args();
7133    arg_y->set_isarray(false);
7134    arg_y->set_type(GLMessage::DataType::INT);
7135    arg_y->add_intvalue(y);
7136
7137    // copy argument z
7138    GLMessage_DataType *arg_z = glmsg.add_args();
7139    arg_z->set_isarray(false);
7140    arg_z->set_type(GLMessage::DataType::INT);
7141    arg_z->add_intvalue(z);
7142
7143    // copy argument w
7144    GLMessage_DataType *arg_w = glmsg.add_args();
7145    arg_w->set_isarray(false);
7146    arg_w->set_type(GLMessage::DataType::INT);
7147    arg_w->add_intvalue(w);
7148
7149    // call function
7150    nsecs_t start_time = systemTime();
7151    glContext->hooks->gl.glProgramUniform4iEXT(program, location, x, y, z, w);
7152    nsecs_t end_time = systemTime();
7153
7154    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7155    glContext->traceGLMessage(&glmsg);
7156}
7157
7158void GLTrace_glProgramUniform1fEXT(GLuint program, GLint location, GLfloat x) {
7159    GLMessage glmsg;
7160    GLTraceContext *glContext = getGLTraceContext();
7161
7162    glmsg.set_function(GLMessage::glProgramUniform1fEXT);
7163
7164    // copy argument program
7165    GLMessage_DataType *arg_program = glmsg.add_args();
7166    arg_program->set_isarray(false);
7167    arg_program->set_type(GLMessage::DataType::INT);
7168    arg_program->add_intvalue(program);
7169
7170    // copy argument location
7171    GLMessage_DataType *arg_location = glmsg.add_args();
7172    arg_location->set_isarray(false);
7173    arg_location->set_type(GLMessage::DataType::INT);
7174    arg_location->add_intvalue(location);
7175
7176    // copy argument x
7177    GLMessage_DataType *arg_x = glmsg.add_args();
7178    arg_x->set_isarray(false);
7179    arg_x->set_type(GLMessage::DataType::FLOAT);
7180    arg_x->add_floatvalue(x);
7181
7182    // call function
7183    nsecs_t start_time = systemTime();
7184    glContext->hooks->gl.glProgramUniform1fEXT(program, location, x);
7185    nsecs_t end_time = systemTime();
7186
7187    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7188    glContext->traceGLMessage(&glmsg);
7189}
7190
7191void GLTrace_glProgramUniform2fEXT(GLuint program, GLint location, GLfloat x, GLfloat y) {
7192    GLMessage glmsg;
7193    GLTraceContext *glContext = getGLTraceContext();
7194
7195    glmsg.set_function(GLMessage::glProgramUniform2fEXT);
7196
7197    // copy argument program
7198    GLMessage_DataType *arg_program = glmsg.add_args();
7199    arg_program->set_isarray(false);
7200    arg_program->set_type(GLMessage::DataType::INT);
7201    arg_program->add_intvalue(program);
7202
7203    // copy argument location
7204    GLMessage_DataType *arg_location = glmsg.add_args();
7205    arg_location->set_isarray(false);
7206    arg_location->set_type(GLMessage::DataType::INT);
7207    arg_location->add_intvalue(location);
7208
7209    // copy argument x
7210    GLMessage_DataType *arg_x = glmsg.add_args();
7211    arg_x->set_isarray(false);
7212    arg_x->set_type(GLMessage::DataType::FLOAT);
7213    arg_x->add_floatvalue(x);
7214
7215    // copy argument y
7216    GLMessage_DataType *arg_y = glmsg.add_args();
7217    arg_y->set_isarray(false);
7218    arg_y->set_type(GLMessage::DataType::FLOAT);
7219    arg_y->add_floatvalue(y);
7220
7221    // call function
7222    nsecs_t start_time = systemTime();
7223    glContext->hooks->gl.glProgramUniform2fEXT(program, location, x, y);
7224    nsecs_t end_time = systemTime();
7225
7226    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7227    glContext->traceGLMessage(&glmsg);
7228}
7229
7230void GLTrace_glProgramUniform3fEXT(GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z) {
7231    GLMessage glmsg;
7232    GLTraceContext *glContext = getGLTraceContext();
7233
7234    glmsg.set_function(GLMessage::glProgramUniform3fEXT);
7235
7236    // copy argument program
7237    GLMessage_DataType *arg_program = glmsg.add_args();
7238    arg_program->set_isarray(false);
7239    arg_program->set_type(GLMessage::DataType::INT);
7240    arg_program->add_intvalue(program);
7241
7242    // copy argument location
7243    GLMessage_DataType *arg_location = glmsg.add_args();
7244    arg_location->set_isarray(false);
7245    arg_location->set_type(GLMessage::DataType::INT);
7246    arg_location->add_intvalue(location);
7247
7248    // copy argument x
7249    GLMessage_DataType *arg_x = glmsg.add_args();
7250    arg_x->set_isarray(false);
7251    arg_x->set_type(GLMessage::DataType::FLOAT);
7252    arg_x->add_floatvalue(x);
7253
7254    // copy argument y
7255    GLMessage_DataType *arg_y = glmsg.add_args();
7256    arg_y->set_isarray(false);
7257    arg_y->set_type(GLMessage::DataType::FLOAT);
7258    arg_y->add_floatvalue(y);
7259
7260    // copy argument z
7261    GLMessage_DataType *arg_z = glmsg.add_args();
7262    arg_z->set_isarray(false);
7263    arg_z->set_type(GLMessage::DataType::FLOAT);
7264    arg_z->add_floatvalue(z);
7265
7266    // call function
7267    nsecs_t start_time = systemTime();
7268    glContext->hooks->gl.glProgramUniform3fEXT(program, location, x, y, z);
7269    nsecs_t end_time = systemTime();
7270
7271    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7272    glContext->traceGLMessage(&glmsg);
7273}
7274
7275void GLTrace_glProgramUniform4fEXT(GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {
7276    GLMessage glmsg;
7277    GLTraceContext *glContext = getGLTraceContext();
7278
7279    glmsg.set_function(GLMessage::glProgramUniform4fEXT);
7280
7281    // copy argument program
7282    GLMessage_DataType *arg_program = glmsg.add_args();
7283    arg_program->set_isarray(false);
7284    arg_program->set_type(GLMessage::DataType::INT);
7285    arg_program->add_intvalue(program);
7286
7287    // copy argument location
7288    GLMessage_DataType *arg_location = glmsg.add_args();
7289    arg_location->set_isarray(false);
7290    arg_location->set_type(GLMessage::DataType::INT);
7291    arg_location->add_intvalue(location);
7292
7293    // copy argument x
7294    GLMessage_DataType *arg_x = glmsg.add_args();
7295    arg_x->set_isarray(false);
7296    arg_x->set_type(GLMessage::DataType::FLOAT);
7297    arg_x->add_floatvalue(x);
7298
7299    // copy argument y
7300    GLMessage_DataType *arg_y = glmsg.add_args();
7301    arg_y->set_isarray(false);
7302    arg_y->set_type(GLMessage::DataType::FLOAT);
7303    arg_y->add_floatvalue(y);
7304
7305    // copy argument z
7306    GLMessage_DataType *arg_z = glmsg.add_args();
7307    arg_z->set_isarray(false);
7308    arg_z->set_type(GLMessage::DataType::FLOAT);
7309    arg_z->add_floatvalue(z);
7310
7311    // copy argument w
7312    GLMessage_DataType *arg_w = glmsg.add_args();
7313    arg_w->set_isarray(false);
7314    arg_w->set_type(GLMessage::DataType::FLOAT);
7315    arg_w->add_floatvalue(w);
7316
7317    // call function
7318    nsecs_t start_time = systemTime();
7319    glContext->hooks->gl.glProgramUniform4fEXT(program, location, x, y, z, w);
7320    nsecs_t end_time = systemTime();
7321
7322    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7323    glContext->traceGLMessage(&glmsg);
7324}
7325
7326void GLTrace_glProgramUniform1ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) {
7327    GLMessage glmsg;
7328    GLTraceContext *glContext = getGLTraceContext();
7329
7330    glmsg.set_function(GLMessage::glProgramUniform1ivEXT);
7331
7332    // copy argument program
7333    GLMessage_DataType *arg_program = glmsg.add_args();
7334    arg_program->set_isarray(false);
7335    arg_program->set_type(GLMessage::DataType::INT);
7336    arg_program->add_intvalue(program);
7337
7338    // copy argument location
7339    GLMessage_DataType *arg_location = glmsg.add_args();
7340    arg_location->set_isarray(false);
7341    arg_location->set_type(GLMessage::DataType::INT);
7342    arg_location->add_intvalue(location);
7343
7344    // copy argument count
7345    GLMessage_DataType *arg_count = glmsg.add_args();
7346    arg_count->set_isarray(false);
7347    arg_count->set_type(GLMessage::DataType::INT);
7348    arg_count->add_intvalue(count);
7349
7350    // copy argument value
7351    GLMessage_DataType *arg_value = glmsg.add_args();
7352    arg_value->set_isarray(false);
7353    arg_value->set_type(GLMessage::DataType::INT);
7354    arg_value->add_intvalue((int)value);
7355
7356    // call function
7357    nsecs_t start_time = systemTime();
7358    glContext->hooks->gl.glProgramUniform1ivEXT(program, location, count, value);
7359    nsecs_t end_time = systemTime();
7360
7361    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7362    glContext->traceGLMessage(&glmsg);
7363}
7364
7365void GLTrace_glProgramUniform2ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) {
7366    GLMessage glmsg;
7367    GLTraceContext *glContext = getGLTraceContext();
7368
7369    glmsg.set_function(GLMessage::glProgramUniform2ivEXT);
7370
7371    // copy argument program
7372    GLMessage_DataType *arg_program = glmsg.add_args();
7373    arg_program->set_isarray(false);
7374    arg_program->set_type(GLMessage::DataType::INT);
7375    arg_program->add_intvalue(program);
7376
7377    // copy argument location
7378    GLMessage_DataType *arg_location = glmsg.add_args();
7379    arg_location->set_isarray(false);
7380    arg_location->set_type(GLMessage::DataType::INT);
7381    arg_location->add_intvalue(location);
7382
7383    // copy argument count
7384    GLMessage_DataType *arg_count = glmsg.add_args();
7385    arg_count->set_isarray(false);
7386    arg_count->set_type(GLMessage::DataType::INT);
7387    arg_count->add_intvalue(count);
7388
7389    // copy argument value
7390    GLMessage_DataType *arg_value = glmsg.add_args();
7391    arg_value->set_isarray(false);
7392    arg_value->set_type(GLMessage::DataType::INT);
7393    arg_value->add_intvalue((int)value);
7394
7395    // call function
7396    nsecs_t start_time = systemTime();
7397    glContext->hooks->gl.glProgramUniform2ivEXT(program, location, count, value);
7398    nsecs_t end_time = systemTime();
7399
7400    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7401    glContext->traceGLMessage(&glmsg);
7402}
7403
7404void GLTrace_glProgramUniform3ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) {
7405    GLMessage glmsg;
7406    GLTraceContext *glContext = getGLTraceContext();
7407
7408    glmsg.set_function(GLMessage::glProgramUniform3ivEXT);
7409
7410    // copy argument program
7411    GLMessage_DataType *arg_program = glmsg.add_args();
7412    arg_program->set_isarray(false);
7413    arg_program->set_type(GLMessage::DataType::INT);
7414    arg_program->add_intvalue(program);
7415
7416    // copy argument location
7417    GLMessage_DataType *arg_location = glmsg.add_args();
7418    arg_location->set_isarray(false);
7419    arg_location->set_type(GLMessage::DataType::INT);
7420    arg_location->add_intvalue(location);
7421
7422    // copy argument count
7423    GLMessage_DataType *arg_count = glmsg.add_args();
7424    arg_count->set_isarray(false);
7425    arg_count->set_type(GLMessage::DataType::INT);
7426    arg_count->add_intvalue(count);
7427
7428    // copy argument value
7429    GLMessage_DataType *arg_value = glmsg.add_args();
7430    arg_value->set_isarray(false);
7431    arg_value->set_type(GLMessage::DataType::INT);
7432    arg_value->add_intvalue((int)value);
7433
7434    // call function
7435    nsecs_t start_time = systemTime();
7436    glContext->hooks->gl.glProgramUniform3ivEXT(program, location, count, value);
7437    nsecs_t end_time = systemTime();
7438
7439    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7440    glContext->traceGLMessage(&glmsg);
7441}
7442
7443void GLTrace_glProgramUniform4ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) {
7444    GLMessage glmsg;
7445    GLTraceContext *glContext = getGLTraceContext();
7446
7447    glmsg.set_function(GLMessage::glProgramUniform4ivEXT);
7448
7449    // copy argument program
7450    GLMessage_DataType *arg_program = glmsg.add_args();
7451    arg_program->set_isarray(false);
7452    arg_program->set_type(GLMessage::DataType::INT);
7453    arg_program->add_intvalue(program);
7454
7455    // copy argument location
7456    GLMessage_DataType *arg_location = glmsg.add_args();
7457    arg_location->set_isarray(false);
7458    arg_location->set_type(GLMessage::DataType::INT);
7459    arg_location->add_intvalue(location);
7460
7461    // copy argument count
7462    GLMessage_DataType *arg_count = glmsg.add_args();
7463    arg_count->set_isarray(false);
7464    arg_count->set_type(GLMessage::DataType::INT);
7465    arg_count->add_intvalue(count);
7466
7467    // copy argument value
7468    GLMessage_DataType *arg_value = glmsg.add_args();
7469    arg_value->set_isarray(false);
7470    arg_value->set_type(GLMessage::DataType::INT);
7471    arg_value->add_intvalue((int)value);
7472
7473    // call function
7474    nsecs_t start_time = systemTime();
7475    glContext->hooks->gl.glProgramUniform4ivEXT(program, location, count, value);
7476    nsecs_t end_time = systemTime();
7477
7478    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7479    glContext->traceGLMessage(&glmsg);
7480}
7481
7482void GLTrace_glProgramUniform1fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) {
7483    GLMessage glmsg;
7484    GLTraceContext *glContext = getGLTraceContext();
7485
7486    glmsg.set_function(GLMessage::glProgramUniform1fvEXT);
7487
7488    // copy argument program
7489    GLMessage_DataType *arg_program = glmsg.add_args();
7490    arg_program->set_isarray(false);
7491    arg_program->set_type(GLMessage::DataType::INT);
7492    arg_program->add_intvalue(program);
7493
7494    // copy argument location
7495    GLMessage_DataType *arg_location = glmsg.add_args();
7496    arg_location->set_isarray(false);
7497    arg_location->set_type(GLMessage::DataType::INT);
7498    arg_location->add_intvalue(location);
7499
7500    // copy argument count
7501    GLMessage_DataType *arg_count = glmsg.add_args();
7502    arg_count->set_isarray(false);
7503    arg_count->set_type(GLMessage::DataType::INT);
7504    arg_count->add_intvalue(count);
7505
7506    // copy argument value
7507    GLMessage_DataType *arg_value = glmsg.add_args();
7508    arg_value->set_isarray(false);
7509    arg_value->set_type(GLMessage::DataType::INT);
7510    arg_value->add_intvalue((int)value);
7511
7512    // call function
7513    nsecs_t start_time = systemTime();
7514    glContext->hooks->gl.glProgramUniform1fvEXT(program, location, count, value);
7515    nsecs_t end_time = systemTime();
7516
7517    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7518    glContext->traceGLMessage(&glmsg);
7519}
7520
7521void GLTrace_glProgramUniform2fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) {
7522    GLMessage glmsg;
7523    GLTraceContext *glContext = getGLTraceContext();
7524
7525    glmsg.set_function(GLMessage::glProgramUniform2fvEXT);
7526
7527    // copy argument program
7528    GLMessage_DataType *arg_program = glmsg.add_args();
7529    arg_program->set_isarray(false);
7530    arg_program->set_type(GLMessage::DataType::INT);
7531    arg_program->add_intvalue(program);
7532
7533    // copy argument location
7534    GLMessage_DataType *arg_location = glmsg.add_args();
7535    arg_location->set_isarray(false);
7536    arg_location->set_type(GLMessage::DataType::INT);
7537    arg_location->add_intvalue(location);
7538
7539    // copy argument count
7540    GLMessage_DataType *arg_count = glmsg.add_args();
7541    arg_count->set_isarray(false);
7542    arg_count->set_type(GLMessage::DataType::INT);
7543    arg_count->add_intvalue(count);
7544
7545    // copy argument value
7546    GLMessage_DataType *arg_value = glmsg.add_args();
7547    arg_value->set_isarray(false);
7548    arg_value->set_type(GLMessage::DataType::INT);
7549    arg_value->add_intvalue((int)value);
7550
7551    // call function
7552    nsecs_t start_time = systemTime();
7553    glContext->hooks->gl.glProgramUniform2fvEXT(program, location, count, value);
7554    nsecs_t end_time = systemTime();
7555
7556    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7557    glContext->traceGLMessage(&glmsg);
7558}
7559
7560void GLTrace_glProgramUniform3fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) {
7561    GLMessage glmsg;
7562    GLTraceContext *glContext = getGLTraceContext();
7563
7564    glmsg.set_function(GLMessage::glProgramUniform3fvEXT);
7565
7566    // copy argument program
7567    GLMessage_DataType *arg_program = glmsg.add_args();
7568    arg_program->set_isarray(false);
7569    arg_program->set_type(GLMessage::DataType::INT);
7570    arg_program->add_intvalue(program);
7571
7572    // copy argument location
7573    GLMessage_DataType *arg_location = glmsg.add_args();
7574    arg_location->set_isarray(false);
7575    arg_location->set_type(GLMessage::DataType::INT);
7576    arg_location->add_intvalue(location);
7577
7578    // copy argument count
7579    GLMessage_DataType *arg_count = glmsg.add_args();
7580    arg_count->set_isarray(false);
7581    arg_count->set_type(GLMessage::DataType::INT);
7582    arg_count->add_intvalue(count);
7583
7584    // copy argument value
7585    GLMessage_DataType *arg_value = glmsg.add_args();
7586    arg_value->set_isarray(false);
7587    arg_value->set_type(GLMessage::DataType::INT);
7588    arg_value->add_intvalue((int)value);
7589
7590    // call function
7591    nsecs_t start_time = systemTime();
7592    glContext->hooks->gl.glProgramUniform3fvEXT(program, location, count, value);
7593    nsecs_t end_time = systemTime();
7594
7595    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7596    glContext->traceGLMessage(&glmsg);
7597}
7598
7599void GLTrace_glProgramUniform4fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) {
7600    GLMessage glmsg;
7601    GLTraceContext *glContext = getGLTraceContext();
7602
7603    glmsg.set_function(GLMessage::glProgramUniform4fvEXT);
7604
7605    // copy argument program
7606    GLMessage_DataType *arg_program = glmsg.add_args();
7607    arg_program->set_isarray(false);
7608    arg_program->set_type(GLMessage::DataType::INT);
7609    arg_program->add_intvalue(program);
7610
7611    // copy argument location
7612    GLMessage_DataType *arg_location = glmsg.add_args();
7613    arg_location->set_isarray(false);
7614    arg_location->set_type(GLMessage::DataType::INT);
7615    arg_location->add_intvalue(location);
7616
7617    // copy argument count
7618    GLMessage_DataType *arg_count = glmsg.add_args();
7619    arg_count->set_isarray(false);
7620    arg_count->set_type(GLMessage::DataType::INT);
7621    arg_count->add_intvalue(count);
7622
7623    // copy argument value
7624    GLMessage_DataType *arg_value = glmsg.add_args();
7625    arg_value->set_isarray(false);
7626    arg_value->set_type(GLMessage::DataType::INT);
7627    arg_value->add_intvalue((int)value);
7628
7629    // call function
7630    nsecs_t start_time = systemTime();
7631    glContext->hooks->gl.glProgramUniform4fvEXT(program, location, count, value);
7632    nsecs_t end_time = systemTime();
7633
7634    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7635    glContext->traceGLMessage(&glmsg);
7636}
7637
7638void GLTrace_glProgramUniformMatrix2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) {
7639    GLMessage glmsg;
7640    GLTraceContext *glContext = getGLTraceContext();
7641
7642    glmsg.set_function(GLMessage::glProgramUniformMatrix2fvEXT);
7643
7644    // copy argument program
7645    GLMessage_DataType *arg_program = glmsg.add_args();
7646    arg_program->set_isarray(false);
7647    arg_program->set_type(GLMessage::DataType::INT);
7648    arg_program->add_intvalue(program);
7649
7650    // copy argument location
7651    GLMessage_DataType *arg_location = glmsg.add_args();
7652    arg_location->set_isarray(false);
7653    arg_location->set_type(GLMessage::DataType::INT);
7654    arg_location->add_intvalue(location);
7655
7656    // copy argument count
7657    GLMessage_DataType *arg_count = glmsg.add_args();
7658    arg_count->set_isarray(false);
7659    arg_count->set_type(GLMessage::DataType::INT);
7660    arg_count->add_intvalue(count);
7661
7662    // copy argument transpose
7663    GLMessage_DataType *arg_transpose = glmsg.add_args();
7664    arg_transpose->set_isarray(false);
7665    arg_transpose->set_type(GLMessage::DataType::BOOL);
7666    arg_transpose->add_boolvalue(transpose);
7667
7668    // copy argument value
7669    GLMessage_DataType *arg_value = glmsg.add_args();
7670    arg_value->set_isarray(false);
7671    arg_value->set_type(GLMessage::DataType::INT);
7672    arg_value->add_intvalue((int)value);
7673
7674    // call function
7675    nsecs_t start_time = systemTime();
7676    glContext->hooks->gl.glProgramUniformMatrix2fvEXT(program, location, count, transpose, value);
7677    nsecs_t end_time = systemTime();
7678
7679    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7680    glContext->traceGLMessage(&glmsg);
7681}
7682
7683void GLTrace_glProgramUniformMatrix3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) {
7684    GLMessage glmsg;
7685    GLTraceContext *glContext = getGLTraceContext();
7686
7687    glmsg.set_function(GLMessage::glProgramUniformMatrix3fvEXT);
7688
7689    // copy argument program
7690    GLMessage_DataType *arg_program = glmsg.add_args();
7691    arg_program->set_isarray(false);
7692    arg_program->set_type(GLMessage::DataType::INT);
7693    arg_program->add_intvalue(program);
7694
7695    // copy argument location
7696    GLMessage_DataType *arg_location = glmsg.add_args();
7697    arg_location->set_isarray(false);
7698    arg_location->set_type(GLMessage::DataType::INT);
7699    arg_location->add_intvalue(location);
7700
7701    // copy argument count
7702    GLMessage_DataType *arg_count = glmsg.add_args();
7703    arg_count->set_isarray(false);
7704    arg_count->set_type(GLMessage::DataType::INT);
7705    arg_count->add_intvalue(count);
7706
7707    // copy argument transpose
7708    GLMessage_DataType *arg_transpose = glmsg.add_args();
7709    arg_transpose->set_isarray(false);
7710    arg_transpose->set_type(GLMessage::DataType::BOOL);
7711    arg_transpose->add_boolvalue(transpose);
7712
7713    // copy argument value
7714    GLMessage_DataType *arg_value = glmsg.add_args();
7715    arg_value->set_isarray(false);
7716    arg_value->set_type(GLMessage::DataType::INT);
7717    arg_value->add_intvalue((int)value);
7718
7719    // call function
7720    nsecs_t start_time = systemTime();
7721    glContext->hooks->gl.glProgramUniformMatrix3fvEXT(program, location, count, transpose, value);
7722    nsecs_t end_time = systemTime();
7723
7724    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7725    glContext->traceGLMessage(&glmsg);
7726}
7727
7728void GLTrace_glProgramUniformMatrix4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) {
7729    GLMessage glmsg;
7730    GLTraceContext *glContext = getGLTraceContext();
7731
7732    glmsg.set_function(GLMessage::glProgramUniformMatrix4fvEXT);
7733
7734    // copy argument program
7735    GLMessage_DataType *arg_program = glmsg.add_args();
7736    arg_program->set_isarray(false);
7737    arg_program->set_type(GLMessage::DataType::INT);
7738    arg_program->add_intvalue(program);
7739
7740    // copy argument location
7741    GLMessage_DataType *arg_location = glmsg.add_args();
7742    arg_location->set_isarray(false);
7743    arg_location->set_type(GLMessage::DataType::INT);
7744    arg_location->add_intvalue(location);
7745
7746    // copy argument count
7747    GLMessage_DataType *arg_count = glmsg.add_args();
7748    arg_count->set_isarray(false);
7749    arg_count->set_type(GLMessage::DataType::INT);
7750    arg_count->add_intvalue(count);
7751
7752    // copy argument transpose
7753    GLMessage_DataType *arg_transpose = glmsg.add_args();
7754    arg_transpose->set_isarray(false);
7755    arg_transpose->set_type(GLMessage::DataType::BOOL);
7756    arg_transpose->add_boolvalue(transpose);
7757
7758    // copy argument value
7759    GLMessage_DataType *arg_value = glmsg.add_args();
7760    arg_value->set_isarray(false);
7761    arg_value->set_type(GLMessage::DataType::INT);
7762    arg_value->add_intvalue((int)value);
7763
7764    // call function
7765    nsecs_t start_time = systemTime();
7766    glContext->hooks->gl.glProgramUniformMatrix4fvEXT(program, location, count, transpose, value);
7767    nsecs_t end_time = systemTime();
7768
7769    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7770    glContext->traceGLMessage(&glmsg);
7771}
7772
7773void GLTrace_glValidateProgramPipelineEXT(GLuint pipeline) {
7774    GLMessage glmsg;
7775    GLTraceContext *glContext = getGLTraceContext();
7776
7777    glmsg.set_function(GLMessage::glValidateProgramPipelineEXT);
7778
7779    // copy argument pipeline
7780    GLMessage_DataType *arg_pipeline = glmsg.add_args();
7781    arg_pipeline->set_isarray(false);
7782    arg_pipeline->set_type(GLMessage::DataType::INT);
7783    arg_pipeline->add_intvalue(pipeline);
7784
7785    // call function
7786    nsecs_t start_time = systemTime();
7787    glContext->hooks->gl.glValidateProgramPipelineEXT(pipeline);
7788    nsecs_t end_time = systemTime();
7789
7790    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7791    glContext->traceGLMessage(&glmsg);
7792}
7793
7794void GLTrace_glGetProgramPipelineInfoLogEXT(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) {
7795    GLMessage glmsg;
7796    GLTraceContext *glContext = getGLTraceContext();
7797
7798    glmsg.set_function(GLMessage::glGetProgramPipelineInfoLogEXT);
7799
7800    // copy argument pipeline
7801    GLMessage_DataType *arg_pipeline = glmsg.add_args();
7802    arg_pipeline->set_isarray(false);
7803    arg_pipeline->set_type(GLMessage::DataType::INT);
7804    arg_pipeline->add_intvalue(pipeline);
7805
7806    // copy argument bufSize
7807    GLMessage_DataType *arg_bufSize = glmsg.add_args();
7808    arg_bufSize->set_isarray(false);
7809    arg_bufSize->set_type(GLMessage::DataType::INT);
7810    arg_bufSize->add_intvalue(bufSize);
7811
7812    // copy argument length
7813    GLMessage_DataType *arg_length = glmsg.add_args();
7814    arg_length->set_isarray(false);
7815    arg_length->set_type(GLMessage::DataType::INT);
7816    arg_length->add_intvalue((int)length);
7817
7818    // copy argument infoLog
7819    GLMessage_DataType *arg_infoLog = glmsg.add_args();
7820    arg_infoLog->set_isarray(false);
7821    arg_infoLog->set_type(GLMessage::DataType::INT);
7822    arg_infoLog->add_intvalue((int)infoLog);
7823
7824    // call function
7825    nsecs_t start_time = systemTime();
7826    glContext->hooks->gl.glGetProgramPipelineInfoLogEXT(pipeline, bufSize, length, infoLog);
7827    nsecs_t end_time = systemTime();
7828
7829    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7830    glContext->traceGLMessage(&glmsg);
7831}
7832
7833void GLTrace_glTexStorage1DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) {
7834    GLMessage glmsg;
7835    GLTraceContext *glContext = getGLTraceContext();
7836
7837    glmsg.set_function(GLMessage::glTexStorage1DEXT);
7838
7839    // copy argument target
7840    GLMessage_DataType *arg_target = glmsg.add_args();
7841    arg_target->set_isarray(false);
7842    arg_target->set_type(GLMessage::DataType::ENUM);
7843    arg_target->add_intvalue((int)target);
7844
7845    // copy argument levels
7846    GLMessage_DataType *arg_levels = glmsg.add_args();
7847    arg_levels->set_isarray(false);
7848    arg_levels->set_type(GLMessage::DataType::INT);
7849    arg_levels->add_intvalue(levels);
7850
7851    // copy argument internalformat
7852    GLMessage_DataType *arg_internalformat = glmsg.add_args();
7853    arg_internalformat->set_isarray(false);
7854    arg_internalformat->set_type(GLMessage::DataType::ENUM);
7855    arg_internalformat->add_intvalue((int)internalformat);
7856
7857    // copy argument width
7858    GLMessage_DataType *arg_width = glmsg.add_args();
7859    arg_width->set_isarray(false);
7860    arg_width->set_type(GLMessage::DataType::INT);
7861    arg_width->add_intvalue(width);
7862
7863    // call function
7864    nsecs_t start_time = systemTime();
7865    glContext->hooks->gl.glTexStorage1DEXT(target, levels, internalformat, width);
7866    nsecs_t end_time = systemTime();
7867
7868    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7869    glContext->traceGLMessage(&glmsg);
7870}
7871
7872void GLTrace_glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) {
7873    GLMessage glmsg;
7874    GLTraceContext *glContext = getGLTraceContext();
7875
7876    glmsg.set_function(GLMessage::glTexStorage2DEXT);
7877
7878    // copy argument target
7879    GLMessage_DataType *arg_target = glmsg.add_args();
7880    arg_target->set_isarray(false);
7881    arg_target->set_type(GLMessage::DataType::ENUM);
7882    arg_target->add_intvalue((int)target);
7883
7884    // copy argument levels
7885    GLMessage_DataType *arg_levels = glmsg.add_args();
7886    arg_levels->set_isarray(false);
7887    arg_levels->set_type(GLMessage::DataType::INT);
7888    arg_levels->add_intvalue(levels);
7889
7890    // copy argument internalformat
7891    GLMessage_DataType *arg_internalformat = glmsg.add_args();
7892    arg_internalformat->set_isarray(false);
7893    arg_internalformat->set_type(GLMessage::DataType::ENUM);
7894    arg_internalformat->add_intvalue((int)internalformat);
7895
7896    // copy argument width
7897    GLMessage_DataType *arg_width = glmsg.add_args();
7898    arg_width->set_isarray(false);
7899    arg_width->set_type(GLMessage::DataType::INT);
7900    arg_width->add_intvalue(width);
7901
7902    // copy argument height
7903    GLMessage_DataType *arg_height = glmsg.add_args();
7904    arg_height->set_isarray(false);
7905    arg_height->set_type(GLMessage::DataType::INT);
7906    arg_height->add_intvalue(height);
7907
7908    // call function
7909    nsecs_t start_time = systemTime();
7910    glContext->hooks->gl.glTexStorage2DEXT(target, levels, internalformat, width, height);
7911    nsecs_t end_time = systemTime();
7912
7913    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7914    glContext->traceGLMessage(&glmsg);
7915}
7916
7917void GLTrace_glTexStorage3DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) {
7918    GLMessage glmsg;
7919    GLTraceContext *glContext = getGLTraceContext();
7920
7921    glmsg.set_function(GLMessage::glTexStorage3DEXT);
7922
7923    // copy argument target
7924    GLMessage_DataType *arg_target = glmsg.add_args();
7925    arg_target->set_isarray(false);
7926    arg_target->set_type(GLMessage::DataType::ENUM);
7927    arg_target->add_intvalue((int)target);
7928
7929    // copy argument levels
7930    GLMessage_DataType *arg_levels = glmsg.add_args();
7931    arg_levels->set_isarray(false);
7932    arg_levels->set_type(GLMessage::DataType::INT);
7933    arg_levels->add_intvalue(levels);
7934
7935    // copy argument internalformat
7936    GLMessage_DataType *arg_internalformat = glmsg.add_args();
7937    arg_internalformat->set_isarray(false);
7938    arg_internalformat->set_type(GLMessage::DataType::ENUM);
7939    arg_internalformat->add_intvalue((int)internalformat);
7940
7941    // copy argument width
7942    GLMessage_DataType *arg_width = glmsg.add_args();
7943    arg_width->set_isarray(false);
7944    arg_width->set_type(GLMessage::DataType::INT);
7945    arg_width->add_intvalue(width);
7946
7947    // copy argument height
7948    GLMessage_DataType *arg_height = glmsg.add_args();
7949    arg_height->set_isarray(false);
7950    arg_height->set_type(GLMessage::DataType::INT);
7951    arg_height->add_intvalue(height);
7952
7953    // copy argument depth
7954    GLMessage_DataType *arg_depth = glmsg.add_args();
7955    arg_depth->set_isarray(false);
7956    arg_depth->set_type(GLMessage::DataType::INT);
7957    arg_depth->add_intvalue(depth);
7958
7959    // call function
7960    nsecs_t start_time = systemTime();
7961    glContext->hooks->gl.glTexStorage3DEXT(target, levels, internalformat, width, height, depth);
7962    nsecs_t end_time = systemTime();
7963
7964    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7965    glContext->traceGLMessage(&glmsg);
7966}
7967
7968void GLTrace_glTextureStorage1DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) {
7969    GLMessage glmsg;
7970    GLTraceContext *glContext = getGLTraceContext();
7971
7972    glmsg.set_function(GLMessage::glTextureStorage1DEXT);
7973
7974    // copy argument texture
7975    GLMessage_DataType *arg_texture = glmsg.add_args();
7976    arg_texture->set_isarray(false);
7977    arg_texture->set_type(GLMessage::DataType::INT);
7978    arg_texture->add_intvalue(texture);
7979
7980    // copy argument target
7981    GLMessage_DataType *arg_target = glmsg.add_args();
7982    arg_target->set_isarray(false);
7983    arg_target->set_type(GLMessage::DataType::ENUM);
7984    arg_target->add_intvalue((int)target);
7985
7986    // copy argument levels
7987    GLMessage_DataType *arg_levels = glmsg.add_args();
7988    arg_levels->set_isarray(false);
7989    arg_levels->set_type(GLMessage::DataType::INT);
7990    arg_levels->add_intvalue(levels);
7991
7992    // copy argument internalformat
7993    GLMessage_DataType *arg_internalformat = glmsg.add_args();
7994    arg_internalformat->set_isarray(false);
7995    arg_internalformat->set_type(GLMessage::DataType::ENUM);
7996    arg_internalformat->add_intvalue((int)internalformat);
7997
7998    // copy argument width
7999    GLMessage_DataType *arg_width = glmsg.add_args();
8000    arg_width->set_isarray(false);
8001    arg_width->set_type(GLMessage::DataType::INT);
8002    arg_width->add_intvalue(width);
8003
8004    // call function
8005    nsecs_t start_time = systemTime();
8006    glContext->hooks->gl.glTextureStorage1DEXT(texture, target, levels, internalformat, width);
8007    nsecs_t end_time = systemTime();
8008
8009    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8010    glContext->traceGLMessage(&glmsg);
8011}
8012
8013void GLTrace_glTextureStorage2DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) {
8014    GLMessage glmsg;
8015    GLTraceContext *glContext = getGLTraceContext();
8016
8017    glmsg.set_function(GLMessage::glTextureStorage2DEXT);
8018
8019    // copy argument texture
8020    GLMessage_DataType *arg_texture = glmsg.add_args();
8021    arg_texture->set_isarray(false);
8022    arg_texture->set_type(GLMessage::DataType::INT);
8023    arg_texture->add_intvalue(texture);
8024
8025    // copy argument target
8026    GLMessage_DataType *arg_target = glmsg.add_args();
8027    arg_target->set_isarray(false);
8028    arg_target->set_type(GLMessage::DataType::ENUM);
8029    arg_target->add_intvalue((int)target);
8030
8031    // copy argument levels
8032    GLMessage_DataType *arg_levels = glmsg.add_args();
8033    arg_levels->set_isarray(false);
8034    arg_levels->set_type(GLMessage::DataType::INT);
8035    arg_levels->add_intvalue(levels);
8036
8037    // copy argument internalformat
8038    GLMessage_DataType *arg_internalformat = glmsg.add_args();
8039    arg_internalformat->set_isarray(false);
8040    arg_internalformat->set_type(GLMessage::DataType::ENUM);
8041    arg_internalformat->add_intvalue((int)internalformat);
8042
8043    // copy argument width
8044    GLMessage_DataType *arg_width = glmsg.add_args();
8045    arg_width->set_isarray(false);
8046    arg_width->set_type(GLMessage::DataType::INT);
8047    arg_width->add_intvalue(width);
8048
8049    // copy argument height
8050    GLMessage_DataType *arg_height = glmsg.add_args();
8051    arg_height->set_isarray(false);
8052    arg_height->set_type(GLMessage::DataType::INT);
8053    arg_height->add_intvalue(height);
8054
8055    // call function
8056    nsecs_t start_time = systemTime();
8057    glContext->hooks->gl.glTextureStorage2DEXT(texture, target, levels, internalformat, width, height);
8058    nsecs_t end_time = systemTime();
8059
8060    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8061    glContext->traceGLMessage(&glmsg);
8062}
8063
8064void GLTrace_glTextureStorage3DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) {
8065    GLMessage glmsg;
8066    GLTraceContext *glContext = getGLTraceContext();
8067
8068    glmsg.set_function(GLMessage::glTextureStorage3DEXT);
8069
8070    // copy argument texture
8071    GLMessage_DataType *arg_texture = glmsg.add_args();
8072    arg_texture->set_isarray(false);
8073    arg_texture->set_type(GLMessage::DataType::INT);
8074    arg_texture->add_intvalue(texture);
8075
8076    // copy argument target
8077    GLMessage_DataType *arg_target = glmsg.add_args();
8078    arg_target->set_isarray(false);
8079    arg_target->set_type(GLMessage::DataType::ENUM);
8080    arg_target->add_intvalue((int)target);
8081
8082    // copy argument levels
8083    GLMessage_DataType *arg_levels = glmsg.add_args();
8084    arg_levels->set_isarray(false);
8085    arg_levels->set_type(GLMessage::DataType::INT);
8086    arg_levels->add_intvalue(levels);
8087
8088    // copy argument internalformat
8089    GLMessage_DataType *arg_internalformat = glmsg.add_args();
8090    arg_internalformat->set_isarray(false);
8091    arg_internalformat->set_type(GLMessage::DataType::ENUM);
8092    arg_internalformat->add_intvalue((int)internalformat);
8093
8094    // copy argument width
8095    GLMessage_DataType *arg_width = glmsg.add_args();
8096    arg_width->set_isarray(false);
8097    arg_width->set_type(GLMessage::DataType::INT);
8098    arg_width->add_intvalue(width);
8099
8100    // copy argument height
8101    GLMessage_DataType *arg_height = glmsg.add_args();
8102    arg_height->set_isarray(false);
8103    arg_height->set_type(GLMessage::DataType::INT);
8104    arg_height->add_intvalue(height);
8105
8106    // copy argument depth
8107    GLMessage_DataType *arg_depth = glmsg.add_args();
8108    arg_depth->set_isarray(false);
8109    arg_depth->set_type(GLMessage::DataType::INT);
8110    arg_depth->add_intvalue(depth);
8111
8112    // call function
8113    nsecs_t start_time = systemTime();
8114    glContext->hooks->gl.glTextureStorage3DEXT(texture, target, levels, internalformat, width, height, depth);
8115    nsecs_t end_time = systemTime();
8116
8117    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8118    glContext->traceGLMessage(&glmsg);
8119}
8120
8121void GLTrace_glRenderbufferStorageMultisampleIMG(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
8122    GLMessage glmsg;
8123    GLTraceContext *glContext = getGLTraceContext();
8124
8125    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleIMG);
8126
8127    // copy argument target
8128    GLMessage_DataType *arg_target = glmsg.add_args();
8129    arg_target->set_isarray(false);
8130    arg_target->set_type(GLMessage::DataType::ENUM);
8131    arg_target->add_intvalue((int)target);
8132
8133    // copy argument samples
8134    GLMessage_DataType *arg_samples = glmsg.add_args();
8135    arg_samples->set_isarray(false);
8136    arg_samples->set_type(GLMessage::DataType::INT);
8137    arg_samples->add_intvalue(samples);
8138
8139    // copy argument internalformat
8140    GLMessage_DataType *arg_internalformat = glmsg.add_args();
8141    arg_internalformat->set_isarray(false);
8142    arg_internalformat->set_type(GLMessage::DataType::ENUM);
8143    arg_internalformat->add_intvalue((int)internalformat);
8144
8145    // copy argument width
8146    GLMessage_DataType *arg_width = glmsg.add_args();
8147    arg_width->set_isarray(false);
8148    arg_width->set_type(GLMessage::DataType::INT);
8149    arg_width->add_intvalue(width);
8150
8151    // copy argument height
8152    GLMessage_DataType *arg_height = glmsg.add_args();
8153    arg_height->set_isarray(false);
8154    arg_height->set_type(GLMessage::DataType::INT);
8155    arg_height->add_intvalue(height);
8156
8157    // call function
8158    nsecs_t start_time = systemTime();
8159    glContext->hooks->gl.glRenderbufferStorageMultisampleIMG(target, samples, internalformat, width, height);
8160    nsecs_t end_time = systemTime();
8161
8162    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8163    glContext->traceGLMessage(&glmsg);
8164}
8165
8166void GLTrace_glFramebufferTexture2DMultisampleIMG(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples) {
8167    GLMessage glmsg;
8168    GLTraceContext *glContext = getGLTraceContext();
8169
8170    glmsg.set_function(GLMessage::glFramebufferTexture2DMultisampleIMG);
8171
8172    // copy argument target
8173    GLMessage_DataType *arg_target = glmsg.add_args();
8174    arg_target->set_isarray(false);
8175    arg_target->set_type(GLMessage::DataType::ENUM);
8176    arg_target->add_intvalue((int)target);
8177
8178    // copy argument attachment
8179    GLMessage_DataType *arg_attachment = glmsg.add_args();
8180    arg_attachment->set_isarray(false);
8181    arg_attachment->set_type(GLMessage::DataType::ENUM);
8182    arg_attachment->add_intvalue((int)attachment);
8183
8184    // copy argument textarget
8185    GLMessage_DataType *arg_textarget = glmsg.add_args();
8186    arg_textarget->set_isarray(false);
8187    arg_textarget->set_type(GLMessage::DataType::ENUM);
8188    arg_textarget->add_intvalue((int)textarget);
8189
8190    // copy argument texture
8191    GLMessage_DataType *arg_texture = glmsg.add_args();
8192    arg_texture->set_isarray(false);
8193    arg_texture->set_type(GLMessage::DataType::INT);
8194    arg_texture->add_intvalue(texture);
8195
8196    // copy argument level
8197    GLMessage_DataType *arg_level = glmsg.add_args();
8198    arg_level->set_isarray(false);
8199    arg_level->set_type(GLMessage::DataType::INT);
8200    arg_level->add_intvalue(level);
8201
8202    // copy argument samples
8203    GLMessage_DataType *arg_samples = glmsg.add_args();
8204    arg_samples->set_isarray(false);
8205    arg_samples->set_type(GLMessage::DataType::INT);
8206    arg_samples->add_intvalue(samples);
8207
8208    // call function
8209    nsecs_t start_time = systemTime();
8210    glContext->hooks->gl.glFramebufferTexture2DMultisampleIMG(target, attachment, textarget, texture, level, samples);
8211    nsecs_t end_time = systemTime();
8212
8213    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8214    glContext->traceGLMessage(&glmsg);
8215}
8216
8217void GLTrace_glCoverageMaskNV(GLboolean mask) {
8218    GLMessage glmsg;
8219    GLTraceContext *glContext = getGLTraceContext();
8220
8221    glmsg.set_function(GLMessage::glCoverageMaskNV);
8222
8223    // copy argument mask
8224    GLMessage_DataType *arg_mask = glmsg.add_args();
8225    arg_mask->set_isarray(false);
8226    arg_mask->set_type(GLMessage::DataType::BOOL);
8227    arg_mask->add_boolvalue(mask);
8228
8229    // call function
8230    nsecs_t start_time = systemTime();
8231    glContext->hooks->gl.glCoverageMaskNV(mask);
8232    nsecs_t end_time = systemTime();
8233
8234    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8235    glContext->traceGLMessage(&glmsg);
8236}
8237
8238void GLTrace_glCoverageOperationNV(GLenum operation) {
8239    GLMessage glmsg;
8240    GLTraceContext *glContext = getGLTraceContext();
8241
8242    glmsg.set_function(GLMessage::glCoverageOperationNV);
8243
8244    // copy argument operation
8245    GLMessage_DataType *arg_operation = glmsg.add_args();
8246    arg_operation->set_isarray(false);
8247    arg_operation->set_type(GLMessage::DataType::ENUM);
8248    arg_operation->add_intvalue((int)operation);
8249
8250    // call function
8251    nsecs_t start_time = systemTime();
8252    glContext->hooks->gl.glCoverageOperationNV(operation);
8253    nsecs_t end_time = systemTime();
8254
8255    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8256    glContext->traceGLMessage(&glmsg);
8257}
8258
8259void GLTrace_glDrawBuffersNV(GLsizei n, const GLenum *bufs) {
8260    GLMessage glmsg;
8261    GLTraceContext *glContext = getGLTraceContext();
8262
8263    glmsg.set_function(GLMessage::glDrawBuffersNV);
8264
8265    // copy argument n
8266    GLMessage_DataType *arg_n = glmsg.add_args();
8267    arg_n->set_isarray(false);
8268    arg_n->set_type(GLMessage::DataType::INT);
8269    arg_n->add_intvalue(n);
8270
8271    // copy argument bufs
8272    GLMessage_DataType *arg_bufs = glmsg.add_args();
8273    arg_bufs->set_isarray(false);
8274    arg_bufs->set_type(GLMessage::DataType::INT);
8275    arg_bufs->add_intvalue((int)bufs);
8276
8277    // call function
8278    nsecs_t start_time = systemTime();
8279    glContext->hooks->gl.glDrawBuffersNV(n, bufs);
8280    nsecs_t end_time = systemTime();
8281
8282    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8283    glContext->traceGLMessage(&glmsg);
8284}
8285
8286void GLTrace_glDeleteFencesNV(GLsizei n, const GLuint *fences) {
8287    GLMessage glmsg;
8288    GLTraceContext *glContext = getGLTraceContext();
8289
8290    glmsg.set_function(GLMessage::glDeleteFencesNV);
8291
8292    // copy argument n
8293    GLMessage_DataType *arg_n = glmsg.add_args();
8294    arg_n->set_isarray(false);
8295    arg_n->set_type(GLMessage::DataType::INT);
8296    arg_n->add_intvalue(n);
8297
8298    // copy argument fences
8299    GLMessage_DataType *arg_fences = glmsg.add_args();
8300    arg_fences->set_isarray(false);
8301    arg_fences->set_type(GLMessage::DataType::INT);
8302    arg_fences->add_intvalue((int)fences);
8303
8304    // call function
8305    nsecs_t start_time = systemTime();
8306    glContext->hooks->gl.glDeleteFencesNV(n, fences);
8307    nsecs_t end_time = systemTime();
8308
8309    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8310    glContext->traceGLMessage(&glmsg);
8311}
8312
8313void GLTrace_glGenFencesNV(GLsizei n, GLuint *fences) {
8314    GLMessage glmsg;
8315    GLTraceContext *glContext = getGLTraceContext();
8316
8317    glmsg.set_function(GLMessage::glGenFencesNV);
8318
8319    // copy argument n
8320    GLMessage_DataType *arg_n = glmsg.add_args();
8321    arg_n->set_isarray(false);
8322    arg_n->set_type(GLMessage::DataType::INT);
8323    arg_n->add_intvalue(n);
8324
8325    // copy argument fences
8326    GLMessage_DataType *arg_fences = glmsg.add_args();
8327    arg_fences->set_isarray(false);
8328    arg_fences->set_type(GLMessage::DataType::INT);
8329    arg_fences->add_intvalue((int)fences);
8330
8331    // call function
8332    nsecs_t start_time = systemTime();
8333    glContext->hooks->gl.glGenFencesNV(n, fences);
8334    nsecs_t end_time = systemTime();
8335
8336    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8337    glContext->traceGLMessage(&glmsg);
8338}
8339
8340GLboolean GLTrace_glIsFenceNV(GLuint fence) {
8341    GLMessage glmsg;
8342    GLTraceContext *glContext = getGLTraceContext();
8343
8344    glmsg.set_function(GLMessage::glIsFenceNV);
8345
8346    // copy argument fence
8347    GLMessage_DataType *arg_fence = glmsg.add_args();
8348    arg_fence->set_isarray(false);
8349    arg_fence->set_type(GLMessage::DataType::INT);
8350    arg_fence->add_intvalue(fence);
8351
8352    // call function
8353    nsecs_t start_time = systemTime();
8354    GLboolean retValue = glContext->hooks->gl.glIsFenceNV(fence);
8355    nsecs_t end_time = systemTime();
8356
8357    // set return value
8358    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
8359    rt->set_isarray(false);
8360    rt->set_type(GLMessage::DataType::BOOL);
8361    rt->add_boolvalue(retValue);
8362
8363    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8364    glContext->traceGLMessage(&glmsg);
8365
8366    return retValue;
8367}
8368
8369GLboolean GLTrace_glTestFenceNV(GLuint fence) {
8370    GLMessage glmsg;
8371    GLTraceContext *glContext = getGLTraceContext();
8372
8373    glmsg.set_function(GLMessage::glTestFenceNV);
8374
8375    // copy argument fence
8376    GLMessage_DataType *arg_fence = glmsg.add_args();
8377    arg_fence->set_isarray(false);
8378    arg_fence->set_type(GLMessage::DataType::INT);
8379    arg_fence->add_intvalue(fence);
8380
8381    // call function
8382    nsecs_t start_time = systemTime();
8383    GLboolean retValue = glContext->hooks->gl.glTestFenceNV(fence);
8384    nsecs_t end_time = systemTime();
8385
8386    // set return value
8387    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
8388    rt->set_isarray(false);
8389    rt->set_type(GLMessage::DataType::BOOL);
8390    rt->add_boolvalue(retValue);
8391
8392    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8393    glContext->traceGLMessage(&glmsg);
8394
8395    return retValue;
8396}
8397
8398void GLTrace_glGetFenceivNV(GLuint fence, GLenum pname, GLint *params) {
8399    GLMessage glmsg;
8400    GLTraceContext *glContext = getGLTraceContext();
8401
8402    glmsg.set_function(GLMessage::glGetFenceivNV);
8403
8404    // copy argument fence
8405    GLMessage_DataType *arg_fence = glmsg.add_args();
8406    arg_fence->set_isarray(false);
8407    arg_fence->set_type(GLMessage::DataType::INT);
8408    arg_fence->add_intvalue(fence);
8409
8410    // copy argument pname
8411    GLMessage_DataType *arg_pname = glmsg.add_args();
8412    arg_pname->set_isarray(false);
8413    arg_pname->set_type(GLMessage::DataType::ENUM);
8414    arg_pname->add_intvalue((int)pname);
8415
8416    // copy argument params
8417    GLMessage_DataType *arg_params = glmsg.add_args();
8418    arg_params->set_isarray(false);
8419    arg_params->set_type(GLMessage::DataType::INT);
8420    arg_params->add_intvalue((int)params);
8421
8422    // call function
8423    nsecs_t start_time = systemTime();
8424    glContext->hooks->gl.glGetFenceivNV(fence, pname, params);
8425    nsecs_t end_time = systemTime();
8426
8427    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8428    glContext->traceGLMessage(&glmsg);
8429}
8430
8431void GLTrace_glFinishFenceNV(GLuint fence) {
8432    GLMessage glmsg;
8433    GLTraceContext *glContext = getGLTraceContext();
8434
8435    glmsg.set_function(GLMessage::glFinishFenceNV);
8436
8437    // copy argument fence
8438    GLMessage_DataType *arg_fence = glmsg.add_args();
8439    arg_fence->set_isarray(false);
8440    arg_fence->set_type(GLMessage::DataType::INT);
8441    arg_fence->add_intvalue(fence);
8442
8443    // call function
8444    nsecs_t start_time = systemTime();
8445    glContext->hooks->gl.glFinishFenceNV(fence);
8446    nsecs_t end_time = systemTime();
8447
8448    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8449    glContext->traceGLMessage(&glmsg);
8450}
8451
8452void GLTrace_glSetFenceNV(GLuint fence, GLenum condition) {
8453    GLMessage glmsg;
8454    GLTraceContext *glContext = getGLTraceContext();
8455
8456    glmsg.set_function(GLMessage::glSetFenceNV);
8457
8458    // copy argument fence
8459    GLMessage_DataType *arg_fence = glmsg.add_args();
8460    arg_fence->set_isarray(false);
8461    arg_fence->set_type(GLMessage::DataType::INT);
8462    arg_fence->add_intvalue(fence);
8463
8464    // copy argument condition
8465    GLMessage_DataType *arg_condition = glmsg.add_args();
8466    arg_condition->set_isarray(false);
8467    arg_condition->set_type(GLMessage::DataType::ENUM);
8468    arg_condition->add_intvalue((int)condition);
8469
8470    // call function
8471    nsecs_t start_time = systemTime();
8472    glContext->hooks->gl.glSetFenceNV(fence, condition);
8473    nsecs_t end_time = systemTime();
8474
8475    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8476    glContext->traceGLMessage(&glmsg);
8477}
8478
8479void GLTrace_glReadBufferNV(GLenum mode) {
8480    GLMessage glmsg;
8481    GLTraceContext *glContext = getGLTraceContext();
8482
8483    glmsg.set_function(GLMessage::glReadBufferNV);
8484
8485    // copy argument mode
8486    GLMessage_DataType *arg_mode = glmsg.add_args();
8487    arg_mode->set_isarray(false);
8488    arg_mode->set_type(GLMessage::DataType::ENUM);
8489    arg_mode->add_intvalue((int)mode);
8490
8491    // call function
8492    nsecs_t start_time = systemTime();
8493    glContext->hooks->gl.glReadBufferNV(mode);
8494    nsecs_t end_time = systemTime();
8495
8496    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8497    glContext->traceGLMessage(&glmsg);
8498}
8499
8500void GLTrace_glAlphaFuncQCOM(GLenum func, GLclampf ref) {
8501    GLMessage glmsg;
8502    GLTraceContext *glContext = getGLTraceContext();
8503
8504    glmsg.set_function(GLMessage::glAlphaFuncQCOM);
8505
8506    // copy argument func
8507    GLMessage_DataType *arg_func = glmsg.add_args();
8508    arg_func->set_isarray(false);
8509    arg_func->set_type(GLMessage::DataType::ENUM);
8510    arg_func->add_intvalue((int)func);
8511
8512    // copy argument ref
8513    GLMessage_DataType *arg_ref = glmsg.add_args();
8514    arg_ref->set_isarray(false);
8515    arg_ref->set_type(GLMessage::DataType::FLOAT);
8516    arg_ref->add_floatvalue(ref);
8517
8518    // call function
8519    nsecs_t start_time = systemTime();
8520    glContext->hooks->gl.glAlphaFuncQCOM(func, ref);
8521    nsecs_t end_time = systemTime();
8522
8523    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8524    glContext->traceGLMessage(&glmsg);
8525}
8526
8527void GLTrace_glGetDriverControlsQCOM(GLint *num, GLsizei size, GLuint *driverControls) {
8528    GLMessage glmsg;
8529    GLTraceContext *glContext = getGLTraceContext();
8530
8531    glmsg.set_function(GLMessage::glGetDriverControlsQCOM);
8532
8533    // copy argument num
8534    GLMessage_DataType *arg_num = glmsg.add_args();
8535    arg_num->set_isarray(false);
8536    arg_num->set_type(GLMessage::DataType::INT);
8537    arg_num->add_intvalue((int)num);
8538
8539    // copy argument size
8540    GLMessage_DataType *arg_size = glmsg.add_args();
8541    arg_size->set_isarray(false);
8542    arg_size->set_type(GLMessage::DataType::INT);
8543    arg_size->add_intvalue(size);
8544
8545    // copy argument driverControls
8546    GLMessage_DataType *arg_driverControls = glmsg.add_args();
8547    arg_driverControls->set_isarray(false);
8548    arg_driverControls->set_type(GLMessage::DataType::INT);
8549    arg_driverControls->add_intvalue((int)driverControls);
8550
8551    // call function
8552    nsecs_t start_time = systemTime();
8553    glContext->hooks->gl.glGetDriverControlsQCOM(num, size, driverControls);
8554    nsecs_t end_time = systemTime();
8555
8556    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8557    glContext->traceGLMessage(&glmsg);
8558}
8559
8560void GLTrace_glGetDriverControlStringQCOM(GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString) {
8561    GLMessage glmsg;
8562    GLTraceContext *glContext = getGLTraceContext();
8563
8564    glmsg.set_function(GLMessage::glGetDriverControlStringQCOM);
8565
8566    // copy argument driverControl
8567    GLMessage_DataType *arg_driverControl = glmsg.add_args();
8568    arg_driverControl->set_isarray(false);
8569    arg_driverControl->set_type(GLMessage::DataType::INT);
8570    arg_driverControl->add_intvalue(driverControl);
8571
8572    // copy argument bufSize
8573    GLMessage_DataType *arg_bufSize = glmsg.add_args();
8574    arg_bufSize->set_isarray(false);
8575    arg_bufSize->set_type(GLMessage::DataType::INT);
8576    arg_bufSize->add_intvalue(bufSize);
8577
8578    // copy argument length
8579    GLMessage_DataType *arg_length = glmsg.add_args();
8580    arg_length->set_isarray(false);
8581    arg_length->set_type(GLMessage::DataType::INT);
8582    arg_length->add_intvalue((int)length);
8583
8584    // copy argument driverControlString
8585    GLMessage_DataType *arg_driverControlString = glmsg.add_args();
8586    arg_driverControlString->set_isarray(false);
8587    arg_driverControlString->set_type(GLMessage::DataType::INT);
8588    arg_driverControlString->add_intvalue((int)driverControlString);
8589
8590    // call function
8591    nsecs_t start_time = systemTime();
8592    glContext->hooks->gl.glGetDriverControlStringQCOM(driverControl, bufSize, length, driverControlString);
8593    nsecs_t end_time = systemTime();
8594
8595    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8596    glContext->traceGLMessage(&glmsg);
8597}
8598
8599void GLTrace_glEnableDriverControlQCOM(GLuint driverControl) {
8600    GLMessage glmsg;
8601    GLTraceContext *glContext = getGLTraceContext();
8602
8603    glmsg.set_function(GLMessage::glEnableDriverControlQCOM);
8604
8605    // copy argument driverControl
8606    GLMessage_DataType *arg_driverControl = glmsg.add_args();
8607    arg_driverControl->set_isarray(false);
8608    arg_driverControl->set_type(GLMessage::DataType::INT);
8609    arg_driverControl->add_intvalue(driverControl);
8610
8611    // call function
8612    nsecs_t start_time = systemTime();
8613    glContext->hooks->gl.glEnableDriverControlQCOM(driverControl);
8614    nsecs_t end_time = systemTime();
8615
8616    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8617    glContext->traceGLMessage(&glmsg);
8618}
8619
8620void GLTrace_glDisableDriverControlQCOM(GLuint driverControl) {
8621    GLMessage glmsg;
8622    GLTraceContext *glContext = getGLTraceContext();
8623
8624    glmsg.set_function(GLMessage::glDisableDriverControlQCOM);
8625
8626    // copy argument driverControl
8627    GLMessage_DataType *arg_driverControl = glmsg.add_args();
8628    arg_driverControl->set_isarray(false);
8629    arg_driverControl->set_type(GLMessage::DataType::INT);
8630    arg_driverControl->add_intvalue(driverControl);
8631
8632    // call function
8633    nsecs_t start_time = systemTime();
8634    glContext->hooks->gl.glDisableDriverControlQCOM(driverControl);
8635    nsecs_t end_time = systemTime();
8636
8637    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8638    glContext->traceGLMessage(&glmsg);
8639}
8640
8641void GLTrace_glExtGetTexturesQCOM(GLuint *textures, GLint maxTextures, GLint *numTextures) {
8642    GLMessage glmsg;
8643    GLTraceContext *glContext = getGLTraceContext();
8644
8645    glmsg.set_function(GLMessage::glExtGetTexturesQCOM);
8646
8647    // copy argument textures
8648    GLMessage_DataType *arg_textures = glmsg.add_args();
8649    arg_textures->set_isarray(false);
8650    arg_textures->set_type(GLMessage::DataType::INT);
8651    arg_textures->add_intvalue((int)textures);
8652
8653    // copy argument maxTextures
8654    GLMessage_DataType *arg_maxTextures = glmsg.add_args();
8655    arg_maxTextures->set_isarray(false);
8656    arg_maxTextures->set_type(GLMessage::DataType::INT);
8657    arg_maxTextures->add_intvalue(maxTextures);
8658
8659    // copy argument numTextures
8660    GLMessage_DataType *arg_numTextures = glmsg.add_args();
8661    arg_numTextures->set_isarray(false);
8662    arg_numTextures->set_type(GLMessage::DataType::INT);
8663    arg_numTextures->add_intvalue((int)numTextures);
8664
8665    // call function
8666    nsecs_t start_time = systemTime();
8667    glContext->hooks->gl.glExtGetTexturesQCOM(textures, maxTextures, numTextures);
8668    nsecs_t end_time = systemTime();
8669
8670    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8671    glContext->traceGLMessage(&glmsg);
8672}
8673
8674void GLTrace_glExtGetBuffersQCOM(GLuint *buffers, GLint maxBuffers, GLint *numBuffers) {
8675    GLMessage glmsg;
8676    GLTraceContext *glContext = getGLTraceContext();
8677
8678    glmsg.set_function(GLMessage::glExtGetBuffersQCOM);
8679
8680    // copy argument buffers
8681    GLMessage_DataType *arg_buffers = glmsg.add_args();
8682    arg_buffers->set_isarray(false);
8683    arg_buffers->set_type(GLMessage::DataType::INT);
8684    arg_buffers->add_intvalue((int)buffers);
8685
8686    // copy argument maxBuffers
8687    GLMessage_DataType *arg_maxBuffers = glmsg.add_args();
8688    arg_maxBuffers->set_isarray(false);
8689    arg_maxBuffers->set_type(GLMessage::DataType::INT);
8690    arg_maxBuffers->add_intvalue(maxBuffers);
8691
8692    // copy argument numBuffers
8693    GLMessage_DataType *arg_numBuffers = glmsg.add_args();
8694    arg_numBuffers->set_isarray(false);
8695    arg_numBuffers->set_type(GLMessage::DataType::INT);
8696    arg_numBuffers->add_intvalue((int)numBuffers);
8697
8698    // call function
8699    nsecs_t start_time = systemTime();
8700    glContext->hooks->gl.glExtGetBuffersQCOM(buffers, maxBuffers, numBuffers);
8701    nsecs_t end_time = systemTime();
8702
8703    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8704    glContext->traceGLMessage(&glmsg);
8705}
8706
8707void GLTrace_glExtGetRenderbuffersQCOM(GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers) {
8708    GLMessage glmsg;
8709    GLTraceContext *glContext = getGLTraceContext();
8710
8711    glmsg.set_function(GLMessage::glExtGetRenderbuffersQCOM);
8712
8713    // copy argument renderbuffers
8714    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
8715    arg_renderbuffers->set_isarray(false);
8716    arg_renderbuffers->set_type(GLMessage::DataType::INT);
8717    arg_renderbuffers->add_intvalue((int)renderbuffers);
8718
8719    // copy argument maxRenderbuffers
8720    GLMessage_DataType *arg_maxRenderbuffers = glmsg.add_args();
8721    arg_maxRenderbuffers->set_isarray(false);
8722    arg_maxRenderbuffers->set_type(GLMessage::DataType::INT);
8723    arg_maxRenderbuffers->add_intvalue(maxRenderbuffers);
8724
8725    // copy argument numRenderbuffers
8726    GLMessage_DataType *arg_numRenderbuffers = glmsg.add_args();
8727    arg_numRenderbuffers->set_isarray(false);
8728    arg_numRenderbuffers->set_type(GLMessage::DataType::INT);
8729    arg_numRenderbuffers->add_intvalue((int)numRenderbuffers);
8730
8731    // call function
8732    nsecs_t start_time = systemTime();
8733    glContext->hooks->gl.glExtGetRenderbuffersQCOM(renderbuffers, maxRenderbuffers, numRenderbuffers);
8734    nsecs_t end_time = systemTime();
8735
8736    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8737    glContext->traceGLMessage(&glmsg);
8738}
8739
8740void GLTrace_glExtGetFramebuffersQCOM(GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers) {
8741    GLMessage glmsg;
8742    GLTraceContext *glContext = getGLTraceContext();
8743
8744    glmsg.set_function(GLMessage::glExtGetFramebuffersQCOM);
8745
8746    // copy argument framebuffers
8747    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
8748    arg_framebuffers->set_isarray(false);
8749    arg_framebuffers->set_type(GLMessage::DataType::INT);
8750    arg_framebuffers->add_intvalue((int)framebuffers);
8751
8752    // copy argument maxFramebuffers
8753    GLMessage_DataType *arg_maxFramebuffers = glmsg.add_args();
8754    arg_maxFramebuffers->set_isarray(false);
8755    arg_maxFramebuffers->set_type(GLMessage::DataType::INT);
8756    arg_maxFramebuffers->add_intvalue(maxFramebuffers);
8757
8758    // copy argument numFramebuffers
8759    GLMessage_DataType *arg_numFramebuffers = glmsg.add_args();
8760    arg_numFramebuffers->set_isarray(false);
8761    arg_numFramebuffers->set_type(GLMessage::DataType::INT);
8762    arg_numFramebuffers->add_intvalue((int)numFramebuffers);
8763
8764    // call function
8765    nsecs_t start_time = systemTime();
8766    glContext->hooks->gl.glExtGetFramebuffersQCOM(framebuffers, maxFramebuffers, numFramebuffers);
8767    nsecs_t end_time = systemTime();
8768
8769    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8770    glContext->traceGLMessage(&glmsg);
8771}
8772
8773void GLTrace_glExtGetTexLevelParameterivQCOM(GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params) {
8774    GLMessage glmsg;
8775    GLTraceContext *glContext = getGLTraceContext();
8776
8777    glmsg.set_function(GLMessage::glExtGetTexLevelParameterivQCOM);
8778
8779    // copy argument texture
8780    GLMessage_DataType *arg_texture = glmsg.add_args();
8781    arg_texture->set_isarray(false);
8782    arg_texture->set_type(GLMessage::DataType::INT);
8783    arg_texture->add_intvalue(texture);
8784
8785    // copy argument face
8786    GLMessage_DataType *arg_face = glmsg.add_args();
8787    arg_face->set_isarray(false);
8788    arg_face->set_type(GLMessage::DataType::ENUM);
8789    arg_face->add_intvalue((int)face);
8790
8791    // copy argument level
8792    GLMessage_DataType *arg_level = glmsg.add_args();
8793    arg_level->set_isarray(false);
8794    arg_level->set_type(GLMessage::DataType::INT);
8795    arg_level->add_intvalue(level);
8796
8797    // copy argument pname
8798    GLMessage_DataType *arg_pname = glmsg.add_args();
8799    arg_pname->set_isarray(false);
8800    arg_pname->set_type(GLMessage::DataType::ENUM);
8801    arg_pname->add_intvalue((int)pname);
8802
8803    // copy argument params
8804    GLMessage_DataType *arg_params = glmsg.add_args();
8805    arg_params->set_isarray(false);
8806    arg_params->set_type(GLMessage::DataType::INT);
8807    arg_params->add_intvalue((int)params);
8808
8809    // call function
8810    nsecs_t start_time = systemTime();
8811    glContext->hooks->gl.glExtGetTexLevelParameterivQCOM(texture, face, level, pname, params);
8812    nsecs_t end_time = systemTime();
8813
8814    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8815    glContext->traceGLMessage(&glmsg);
8816}
8817
8818void GLTrace_glExtTexObjectStateOverrideiQCOM(GLenum target, GLenum pname, GLint param) {
8819    GLMessage glmsg;
8820    GLTraceContext *glContext = getGLTraceContext();
8821
8822    glmsg.set_function(GLMessage::glExtTexObjectStateOverrideiQCOM);
8823
8824    // copy argument target
8825    GLMessage_DataType *arg_target = glmsg.add_args();
8826    arg_target->set_isarray(false);
8827    arg_target->set_type(GLMessage::DataType::ENUM);
8828    arg_target->add_intvalue((int)target);
8829
8830    // copy argument pname
8831    GLMessage_DataType *arg_pname = glmsg.add_args();
8832    arg_pname->set_isarray(false);
8833    arg_pname->set_type(GLMessage::DataType::ENUM);
8834    arg_pname->add_intvalue((int)pname);
8835
8836    // copy argument param
8837    GLMessage_DataType *arg_param = glmsg.add_args();
8838    arg_param->set_isarray(false);
8839    arg_param->set_type(GLMessage::DataType::INT);
8840    arg_param->add_intvalue(param);
8841
8842    // call function
8843    nsecs_t start_time = systemTime();
8844    glContext->hooks->gl.glExtTexObjectStateOverrideiQCOM(target, pname, param);
8845    nsecs_t end_time = systemTime();
8846
8847    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8848    glContext->traceGLMessage(&glmsg);
8849}
8850
8851void GLTrace_glExtGetTexSubImageQCOM(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels) {
8852    GLMessage glmsg;
8853    GLTraceContext *glContext = getGLTraceContext();
8854
8855    glmsg.set_function(GLMessage::glExtGetTexSubImageQCOM);
8856
8857    // copy argument target
8858    GLMessage_DataType *arg_target = glmsg.add_args();
8859    arg_target->set_isarray(false);
8860    arg_target->set_type(GLMessage::DataType::ENUM);
8861    arg_target->add_intvalue((int)target);
8862
8863    // copy argument level
8864    GLMessage_DataType *arg_level = glmsg.add_args();
8865    arg_level->set_isarray(false);
8866    arg_level->set_type(GLMessage::DataType::INT);
8867    arg_level->add_intvalue(level);
8868
8869    // copy argument xoffset
8870    GLMessage_DataType *arg_xoffset = glmsg.add_args();
8871    arg_xoffset->set_isarray(false);
8872    arg_xoffset->set_type(GLMessage::DataType::INT);
8873    arg_xoffset->add_intvalue(xoffset);
8874
8875    // copy argument yoffset
8876    GLMessage_DataType *arg_yoffset = glmsg.add_args();
8877    arg_yoffset->set_isarray(false);
8878    arg_yoffset->set_type(GLMessage::DataType::INT);
8879    arg_yoffset->add_intvalue(yoffset);
8880
8881    // copy argument zoffset
8882    GLMessage_DataType *arg_zoffset = glmsg.add_args();
8883    arg_zoffset->set_isarray(false);
8884    arg_zoffset->set_type(GLMessage::DataType::INT);
8885    arg_zoffset->add_intvalue(zoffset);
8886
8887    // copy argument width
8888    GLMessage_DataType *arg_width = glmsg.add_args();
8889    arg_width->set_isarray(false);
8890    arg_width->set_type(GLMessage::DataType::INT);
8891    arg_width->add_intvalue(width);
8892
8893    // copy argument height
8894    GLMessage_DataType *arg_height = glmsg.add_args();
8895    arg_height->set_isarray(false);
8896    arg_height->set_type(GLMessage::DataType::INT);
8897    arg_height->add_intvalue(height);
8898
8899    // copy argument depth
8900    GLMessage_DataType *arg_depth = glmsg.add_args();
8901    arg_depth->set_isarray(false);
8902    arg_depth->set_type(GLMessage::DataType::INT);
8903    arg_depth->add_intvalue(depth);
8904
8905    // copy argument format
8906    GLMessage_DataType *arg_format = glmsg.add_args();
8907    arg_format->set_isarray(false);
8908    arg_format->set_type(GLMessage::DataType::ENUM);
8909    arg_format->add_intvalue((int)format);
8910
8911    // copy argument type
8912    GLMessage_DataType *arg_type = glmsg.add_args();
8913    arg_type->set_isarray(false);
8914    arg_type->set_type(GLMessage::DataType::ENUM);
8915    arg_type->add_intvalue((int)type);
8916
8917    // copy argument texels
8918    GLMessage_DataType *arg_texels = glmsg.add_args();
8919    arg_texels->set_isarray(false);
8920    arg_texels->set_type(GLMessage::DataType::INT);
8921    arg_texels->add_intvalue((int)texels);
8922
8923    // call function
8924    nsecs_t start_time = systemTime();
8925    glContext->hooks->gl.glExtGetTexSubImageQCOM(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, texels);
8926    nsecs_t end_time = systemTime();
8927
8928    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8929    glContext->traceGLMessage(&glmsg);
8930}
8931
8932void GLTrace_glExtGetBufferPointervQCOM(GLenum target, GLvoid **params) {
8933    GLMessage glmsg;
8934    GLTraceContext *glContext = getGLTraceContext();
8935
8936    glmsg.set_function(GLMessage::glExtGetBufferPointervQCOM);
8937
8938    // copy argument target
8939    GLMessage_DataType *arg_target = glmsg.add_args();
8940    arg_target->set_isarray(false);
8941    arg_target->set_type(GLMessage::DataType::ENUM);
8942    arg_target->add_intvalue((int)target);
8943
8944    // copy argument params
8945    GLMessage_DataType *arg_params = glmsg.add_args();
8946    arg_params->set_isarray(false);
8947    arg_params->set_type(GLMessage::DataType::INT);
8948    arg_params->add_intvalue((int)params);
8949
8950    // call function
8951    nsecs_t start_time = systemTime();
8952    glContext->hooks->gl.glExtGetBufferPointervQCOM(target, params);
8953    nsecs_t end_time = systemTime();
8954
8955    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8956    glContext->traceGLMessage(&glmsg);
8957}
8958
8959void GLTrace_glExtGetShadersQCOM(GLuint *shaders, GLint maxShaders, GLint *numShaders) {
8960    GLMessage glmsg;
8961    GLTraceContext *glContext = getGLTraceContext();
8962
8963    glmsg.set_function(GLMessage::glExtGetShadersQCOM);
8964
8965    // copy argument shaders
8966    GLMessage_DataType *arg_shaders = glmsg.add_args();
8967    arg_shaders->set_isarray(false);
8968    arg_shaders->set_type(GLMessage::DataType::INT);
8969    arg_shaders->add_intvalue((int)shaders);
8970
8971    // copy argument maxShaders
8972    GLMessage_DataType *arg_maxShaders = glmsg.add_args();
8973    arg_maxShaders->set_isarray(false);
8974    arg_maxShaders->set_type(GLMessage::DataType::INT);
8975    arg_maxShaders->add_intvalue(maxShaders);
8976
8977    // copy argument numShaders
8978    GLMessage_DataType *arg_numShaders = glmsg.add_args();
8979    arg_numShaders->set_isarray(false);
8980    arg_numShaders->set_type(GLMessage::DataType::INT);
8981    arg_numShaders->add_intvalue((int)numShaders);
8982
8983    // call function
8984    nsecs_t start_time = systemTime();
8985    glContext->hooks->gl.glExtGetShadersQCOM(shaders, maxShaders, numShaders);
8986    nsecs_t end_time = systemTime();
8987
8988    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8989    glContext->traceGLMessage(&glmsg);
8990}
8991
8992void GLTrace_glExtGetProgramsQCOM(GLuint *programs, GLint maxPrograms, GLint *numPrograms) {
8993    GLMessage glmsg;
8994    GLTraceContext *glContext = getGLTraceContext();
8995
8996    glmsg.set_function(GLMessage::glExtGetProgramsQCOM);
8997
8998    // copy argument programs
8999    GLMessage_DataType *arg_programs = glmsg.add_args();
9000    arg_programs->set_isarray(false);
9001    arg_programs->set_type(GLMessage::DataType::INT);
9002    arg_programs->add_intvalue((int)programs);
9003
9004    // copy argument maxPrograms
9005    GLMessage_DataType *arg_maxPrograms = glmsg.add_args();
9006    arg_maxPrograms->set_isarray(false);
9007    arg_maxPrograms->set_type(GLMessage::DataType::INT);
9008    arg_maxPrograms->add_intvalue(maxPrograms);
9009
9010    // copy argument numPrograms
9011    GLMessage_DataType *arg_numPrograms = glmsg.add_args();
9012    arg_numPrograms->set_isarray(false);
9013    arg_numPrograms->set_type(GLMessage::DataType::INT);
9014    arg_numPrograms->add_intvalue((int)numPrograms);
9015
9016    // call function
9017    nsecs_t start_time = systemTime();
9018    glContext->hooks->gl.glExtGetProgramsQCOM(programs, maxPrograms, numPrograms);
9019    nsecs_t end_time = systemTime();
9020
9021    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9022    glContext->traceGLMessage(&glmsg);
9023}
9024
9025GLboolean GLTrace_glExtIsProgramBinaryQCOM(GLuint program) {
9026    GLMessage glmsg;
9027    GLTraceContext *glContext = getGLTraceContext();
9028
9029    glmsg.set_function(GLMessage::glExtIsProgramBinaryQCOM);
9030
9031    // copy argument program
9032    GLMessage_DataType *arg_program = glmsg.add_args();
9033    arg_program->set_isarray(false);
9034    arg_program->set_type(GLMessage::DataType::INT);
9035    arg_program->add_intvalue(program);
9036
9037    // call function
9038    nsecs_t start_time = systemTime();
9039    GLboolean retValue = glContext->hooks->gl.glExtIsProgramBinaryQCOM(program);
9040    nsecs_t end_time = systemTime();
9041
9042    // set return value
9043    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
9044    rt->set_isarray(false);
9045    rt->set_type(GLMessage::DataType::BOOL);
9046    rt->add_boolvalue(retValue);
9047
9048    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9049    glContext->traceGLMessage(&glmsg);
9050
9051    return retValue;
9052}
9053
9054void GLTrace_glExtGetProgramBinarySourceQCOM(GLuint program, GLenum shadertype, GLchar *source, GLint *length) {
9055    GLMessage glmsg;
9056    GLTraceContext *glContext = getGLTraceContext();
9057
9058    glmsg.set_function(GLMessage::glExtGetProgramBinarySourceQCOM);
9059
9060    // copy argument program
9061    GLMessage_DataType *arg_program = glmsg.add_args();
9062    arg_program->set_isarray(false);
9063    arg_program->set_type(GLMessage::DataType::INT);
9064    arg_program->add_intvalue(program);
9065
9066    // copy argument shadertype
9067    GLMessage_DataType *arg_shadertype = glmsg.add_args();
9068    arg_shadertype->set_isarray(false);
9069    arg_shadertype->set_type(GLMessage::DataType::ENUM);
9070    arg_shadertype->add_intvalue((int)shadertype);
9071
9072    // copy argument source
9073    GLMessage_DataType *arg_source = glmsg.add_args();
9074    arg_source->set_isarray(false);
9075    arg_source->set_type(GLMessage::DataType::INT);
9076    arg_source->add_intvalue((int)source);
9077
9078    // copy argument length
9079    GLMessage_DataType *arg_length = glmsg.add_args();
9080    arg_length->set_isarray(false);
9081    arg_length->set_type(GLMessage::DataType::INT);
9082    arg_length->add_intvalue((int)length);
9083
9084    // call function
9085    nsecs_t start_time = systemTime();
9086    glContext->hooks->gl.glExtGetProgramBinarySourceQCOM(program, shadertype, source, length);
9087    nsecs_t end_time = systemTime();
9088
9089    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9090    glContext->traceGLMessage(&glmsg);
9091}
9092
9093void GLTrace_glStartTilingQCOM(GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask) {
9094    GLMessage glmsg;
9095    GLTraceContext *glContext = getGLTraceContext();
9096
9097    glmsg.set_function(GLMessage::glStartTilingQCOM);
9098
9099    // copy argument x
9100    GLMessage_DataType *arg_x = glmsg.add_args();
9101    arg_x->set_isarray(false);
9102    arg_x->set_type(GLMessage::DataType::INT);
9103    arg_x->add_intvalue(x);
9104
9105    // copy argument y
9106    GLMessage_DataType *arg_y = glmsg.add_args();
9107    arg_y->set_isarray(false);
9108    arg_y->set_type(GLMessage::DataType::INT);
9109    arg_y->add_intvalue(y);
9110
9111    // copy argument width
9112    GLMessage_DataType *arg_width = glmsg.add_args();
9113    arg_width->set_isarray(false);
9114    arg_width->set_type(GLMessage::DataType::INT);
9115    arg_width->add_intvalue(width);
9116
9117    // copy argument height
9118    GLMessage_DataType *arg_height = glmsg.add_args();
9119    arg_height->set_isarray(false);
9120    arg_height->set_type(GLMessage::DataType::INT);
9121    arg_height->add_intvalue(height);
9122
9123    // copy argument preserveMask
9124    GLMessage_DataType *arg_preserveMask = glmsg.add_args();
9125    arg_preserveMask->set_isarray(false);
9126    arg_preserveMask->set_type(GLMessage::DataType::INT);
9127    arg_preserveMask->add_intvalue(preserveMask);
9128
9129    // call function
9130    nsecs_t start_time = systemTime();
9131    glContext->hooks->gl.glStartTilingQCOM(x, y, width, height, preserveMask);
9132    nsecs_t end_time = systemTime();
9133
9134    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9135    glContext->traceGLMessage(&glmsg);
9136}
9137
9138void GLTrace_glEndTilingQCOM(GLbitfield preserveMask) {
9139    GLMessage glmsg;
9140    GLTraceContext *glContext = getGLTraceContext();
9141
9142    glmsg.set_function(GLMessage::glEndTilingQCOM);
9143
9144    // copy argument preserveMask
9145    GLMessage_DataType *arg_preserveMask = glmsg.add_args();
9146    arg_preserveMask->set_isarray(false);
9147    arg_preserveMask->set_type(GLMessage::DataType::INT);
9148    arg_preserveMask->add_intvalue(preserveMask);
9149
9150    // call function
9151    nsecs_t start_time = systemTime();
9152    glContext->hooks->gl.glEndTilingQCOM(preserveMask);
9153    nsecs_t end_time = systemTime();
9154
9155    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9156    glContext->traceGLMessage(&glmsg);
9157}
9158
9159
9160// Definitions for GL1 APIs
9161
9162void GLTrace_glAlphaFunc(GLenum func, GLclampf ref) {
9163    GLMessage glmsg;
9164    GLTraceContext *glContext = getGLTraceContext();
9165
9166    glmsg.set_function(GLMessage::glAlphaFunc);
9167
9168    // copy argument func
9169    GLMessage_DataType *arg_func = glmsg.add_args();
9170    arg_func->set_isarray(false);
9171    arg_func->set_type(GLMessage::DataType::ENUM);
9172    arg_func->add_intvalue((int)func);
9173
9174    // copy argument ref
9175    GLMessage_DataType *arg_ref = glmsg.add_args();
9176    arg_ref->set_isarray(false);
9177    arg_ref->set_type(GLMessage::DataType::FLOAT);
9178    arg_ref->add_floatvalue(ref);
9179
9180    // call function
9181    nsecs_t start_time = systemTime();
9182    glContext->hooks->gl.glAlphaFunc(func, ref);
9183    nsecs_t end_time = systemTime();
9184
9185    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9186    glContext->traceGLMessage(&glmsg);
9187}
9188
9189void GLTrace_glClipPlanef(GLenum plane, const GLfloat *equation) {
9190    GLMessage glmsg;
9191    GLTraceContext *glContext = getGLTraceContext();
9192
9193    glmsg.set_function(GLMessage::glClipPlanef);
9194
9195    // copy argument plane
9196    GLMessage_DataType *arg_plane = glmsg.add_args();
9197    arg_plane->set_isarray(false);
9198    arg_plane->set_type(GLMessage::DataType::ENUM);
9199    arg_plane->add_intvalue((int)plane);
9200
9201    // copy argument equation
9202    GLMessage_DataType *arg_equation = glmsg.add_args();
9203    arg_equation->set_isarray(false);
9204    arg_equation->set_type(GLMessage::DataType::INT);
9205    arg_equation->add_intvalue((int)equation);
9206
9207    // call function
9208    nsecs_t start_time = systemTime();
9209    glContext->hooks->gl.glClipPlanef(plane, equation);
9210    nsecs_t end_time = systemTime();
9211
9212    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9213    glContext->traceGLMessage(&glmsg);
9214}
9215
9216void GLTrace_glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) {
9217    GLMessage glmsg;
9218    GLTraceContext *glContext = getGLTraceContext();
9219
9220    glmsg.set_function(GLMessage::glColor4f);
9221
9222    // copy argument red
9223    GLMessage_DataType *arg_red = glmsg.add_args();
9224    arg_red->set_isarray(false);
9225    arg_red->set_type(GLMessage::DataType::FLOAT);
9226    arg_red->add_floatvalue(red);
9227
9228    // copy argument green
9229    GLMessage_DataType *arg_green = glmsg.add_args();
9230    arg_green->set_isarray(false);
9231    arg_green->set_type(GLMessage::DataType::FLOAT);
9232    arg_green->add_floatvalue(green);
9233
9234    // copy argument blue
9235    GLMessage_DataType *arg_blue = glmsg.add_args();
9236    arg_blue->set_isarray(false);
9237    arg_blue->set_type(GLMessage::DataType::FLOAT);
9238    arg_blue->add_floatvalue(blue);
9239
9240    // copy argument alpha
9241    GLMessage_DataType *arg_alpha = glmsg.add_args();
9242    arg_alpha->set_isarray(false);
9243    arg_alpha->set_type(GLMessage::DataType::FLOAT);
9244    arg_alpha->add_floatvalue(alpha);
9245
9246    // call function
9247    nsecs_t start_time = systemTime();
9248    glContext->hooks->gl.glColor4f(red, green, blue, alpha);
9249    nsecs_t end_time = systemTime();
9250
9251    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9252    glContext->traceGLMessage(&glmsg);
9253}
9254
9255void GLTrace_glFogf(GLenum pname, GLfloat param) {
9256    GLMessage glmsg;
9257    GLTraceContext *glContext = getGLTraceContext();
9258
9259    glmsg.set_function(GLMessage::glFogf);
9260
9261    // copy argument pname
9262    GLMessage_DataType *arg_pname = glmsg.add_args();
9263    arg_pname->set_isarray(false);
9264    arg_pname->set_type(GLMessage::DataType::ENUM);
9265    arg_pname->add_intvalue((int)pname);
9266
9267    // copy argument param
9268    GLMessage_DataType *arg_param = glmsg.add_args();
9269    arg_param->set_isarray(false);
9270    arg_param->set_type(GLMessage::DataType::FLOAT);
9271    arg_param->add_floatvalue(param);
9272
9273    // call function
9274    nsecs_t start_time = systemTime();
9275    glContext->hooks->gl.glFogf(pname, param);
9276    nsecs_t end_time = systemTime();
9277
9278    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9279    glContext->traceGLMessage(&glmsg);
9280}
9281
9282void GLTrace_glFogfv(GLenum pname, const GLfloat *params) {
9283    GLMessage glmsg;
9284    GLTraceContext *glContext = getGLTraceContext();
9285
9286    glmsg.set_function(GLMessage::glFogfv);
9287
9288    // copy argument pname
9289    GLMessage_DataType *arg_pname = glmsg.add_args();
9290    arg_pname->set_isarray(false);
9291    arg_pname->set_type(GLMessage::DataType::ENUM);
9292    arg_pname->add_intvalue((int)pname);
9293
9294    // copy argument params
9295    GLMessage_DataType *arg_params = glmsg.add_args();
9296    arg_params->set_isarray(false);
9297    arg_params->set_type(GLMessage::DataType::INT);
9298    arg_params->add_intvalue((int)params);
9299
9300    // call function
9301    nsecs_t start_time = systemTime();
9302    glContext->hooks->gl.glFogfv(pname, params);
9303    nsecs_t end_time = systemTime();
9304
9305    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9306    glContext->traceGLMessage(&glmsg);
9307}
9308
9309void GLTrace_glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
9310    GLMessage glmsg;
9311    GLTraceContext *glContext = getGLTraceContext();
9312
9313    glmsg.set_function(GLMessage::glFrustumf);
9314
9315    // copy argument left
9316    GLMessage_DataType *arg_left = glmsg.add_args();
9317    arg_left->set_isarray(false);
9318    arg_left->set_type(GLMessage::DataType::FLOAT);
9319    arg_left->add_floatvalue(left);
9320
9321    // copy argument right
9322    GLMessage_DataType *arg_right = glmsg.add_args();
9323    arg_right->set_isarray(false);
9324    arg_right->set_type(GLMessage::DataType::FLOAT);
9325    arg_right->add_floatvalue(right);
9326
9327    // copy argument bottom
9328    GLMessage_DataType *arg_bottom = glmsg.add_args();
9329    arg_bottom->set_isarray(false);
9330    arg_bottom->set_type(GLMessage::DataType::FLOAT);
9331    arg_bottom->add_floatvalue(bottom);
9332
9333    // copy argument top
9334    GLMessage_DataType *arg_top = glmsg.add_args();
9335    arg_top->set_isarray(false);
9336    arg_top->set_type(GLMessage::DataType::FLOAT);
9337    arg_top->add_floatvalue(top);
9338
9339    // copy argument zNear
9340    GLMessage_DataType *arg_zNear = glmsg.add_args();
9341    arg_zNear->set_isarray(false);
9342    arg_zNear->set_type(GLMessage::DataType::FLOAT);
9343    arg_zNear->add_floatvalue(zNear);
9344
9345    // copy argument zFar
9346    GLMessage_DataType *arg_zFar = glmsg.add_args();
9347    arg_zFar->set_isarray(false);
9348    arg_zFar->set_type(GLMessage::DataType::FLOAT);
9349    arg_zFar->add_floatvalue(zFar);
9350
9351    // call function
9352    nsecs_t start_time = systemTime();
9353    glContext->hooks->gl.glFrustumf(left, right, bottom, top, zNear, zFar);
9354    nsecs_t end_time = systemTime();
9355
9356    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9357    glContext->traceGLMessage(&glmsg);
9358}
9359
9360void GLTrace_glGetClipPlanef(GLenum pname, GLfloat eqn[4]) {
9361    GLMessage glmsg;
9362    GLTraceContext *glContext = getGLTraceContext();
9363
9364    glmsg.set_function(GLMessage::glGetClipPlanef);
9365
9366    // copy argument pname
9367    GLMessage_DataType *arg_pname = glmsg.add_args();
9368    arg_pname->set_isarray(false);
9369    arg_pname->set_type(GLMessage::DataType::ENUM);
9370    arg_pname->add_intvalue((int)pname);
9371
9372    // copy argument eqn
9373    GLMessage_DataType *arg_eqn = glmsg.add_args();
9374    arg_eqn->set_isarray(false);
9375    arg_eqn->set_type(GLMessage::DataType::INT);
9376    arg_eqn->add_intvalue((int)eqn);
9377
9378    // call function
9379    nsecs_t start_time = systemTime();
9380    glContext->hooks->gl.glGetClipPlanef(pname, eqn);
9381    nsecs_t end_time = systemTime();
9382
9383    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9384    glContext->traceGLMessage(&glmsg);
9385}
9386
9387void GLTrace_glGetLightfv(GLenum light, GLenum pname, GLfloat *params) {
9388    GLMessage glmsg;
9389    GLTraceContext *glContext = getGLTraceContext();
9390
9391    glmsg.set_function(GLMessage::glGetLightfv);
9392
9393    // copy argument light
9394    GLMessage_DataType *arg_light = glmsg.add_args();
9395    arg_light->set_isarray(false);
9396    arg_light->set_type(GLMessage::DataType::ENUM);
9397    arg_light->add_intvalue((int)light);
9398
9399    // copy argument pname
9400    GLMessage_DataType *arg_pname = glmsg.add_args();
9401    arg_pname->set_isarray(false);
9402    arg_pname->set_type(GLMessage::DataType::ENUM);
9403    arg_pname->add_intvalue((int)pname);
9404
9405    // copy argument params
9406    GLMessage_DataType *arg_params = glmsg.add_args();
9407    arg_params->set_isarray(false);
9408    arg_params->set_type(GLMessage::DataType::INT);
9409    arg_params->add_intvalue((int)params);
9410
9411    // call function
9412    nsecs_t start_time = systemTime();
9413    glContext->hooks->gl.glGetLightfv(light, pname, params);
9414    nsecs_t end_time = systemTime();
9415
9416    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9417    glContext->traceGLMessage(&glmsg);
9418}
9419
9420void GLTrace_glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) {
9421    GLMessage glmsg;
9422    GLTraceContext *glContext = getGLTraceContext();
9423
9424    glmsg.set_function(GLMessage::glGetMaterialfv);
9425
9426    // copy argument face
9427    GLMessage_DataType *arg_face = glmsg.add_args();
9428    arg_face->set_isarray(false);
9429    arg_face->set_type(GLMessage::DataType::ENUM);
9430    arg_face->add_intvalue((int)face);
9431
9432    // copy argument pname
9433    GLMessage_DataType *arg_pname = glmsg.add_args();
9434    arg_pname->set_isarray(false);
9435    arg_pname->set_type(GLMessage::DataType::ENUM);
9436    arg_pname->add_intvalue((int)pname);
9437
9438    // copy argument params
9439    GLMessage_DataType *arg_params = glmsg.add_args();
9440    arg_params->set_isarray(false);
9441    arg_params->set_type(GLMessage::DataType::INT);
9442    arg_params->add_intvalue((int)params);
9443
9444    // call function
9445    nsecs_t start_time = systemTime();
9446    glContext->hooks->gl.glGetMaterialfv(face, pname, params);
9447    nsecs_t end_time = systemTime();
9448
9449    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9450    glContext->traceGLMessage(&glmsg);
9451}
9452
9453void GLTrace_glGetTexEnvfv(GLenum env, GLenum pname, GLfloat *params) {
9454    GLMessage glmsg;
9455    GLTraceContext *glContext = getGLTraceContext();
9456
9457    glmsg.set_function(GLMessage::glGetTexEnvfv);
9458
9459    // copy argument env
9460    GLMessage_DataType *arg_env = glmsg.add_args();
9461    arg_env->set_isarray(false);
9462    arg_env->set_type(GLMessage::DataType::ENUM);
9463    arg_env->add_intvalue((int)env);
9464
9465    // copy argument pname
9466    GLMessage_DataType *arg_pname = glmsg.add_args();
9467    arg_pname->set_isarray(false);
9468    arg_pname->set_type(GLMessage::DataType::ENUM);
9469    arg_pname->add_intvalue((int)pname);
9470
9471    // copy argument params
9472    GLMessage_DataType *arg_params = glmsg.add_args();
9473    arg_params->set_isarray(false);
9474    arg_params->set_type(GLMessage::DataType::INT);
9475    arg_params->add_intvalue((int)params);
9476
9477    // call function
9478    nsecs_t start_time = systemTime();
9479    glContext->hooks->gl.glGetTexEnvfv(env, pname, params);
9480    nsecs_t end_time = systemTime();
9481
9482    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9483    glContext->traceGLMessage(&glmsg);
9484}
9485
9486void GLTrace_glLightModelf(GLenum pname, GLfloat param) {
9487    GLMessage glmsg;
9488    GLTraceContext *glContext = getGLTraceContext();
9489
9490    glmsg.set_function(GLMessage::glLightModelf);
9491
9492    // copy argument pname
9493    GLMessage_DataType *arg_pname = glmsg.add_args();
9494    arg_pname->set_isarray(false);
9495    arg_pname->set_type(GLMessage::DataType::ENUM);
9496    arg_pname->add_intvalue((int)pname);
9497
9498    // copy argument param
9499    GLMessage_DataType *arg_param = glmsg.add_args();
9500    arg_param->set_isarray(false);
9501    arg_param->set_type(GLMessage::DataType::FLOAT);
9502    arg_param->add_floatvalue(param);
9503
9504    // call function
9505    nsecs_t start_time = systemTime();
9506    glContext->hooks->gl.glLightModelf(pname, param);
9507    nsecs_t end_time = systemTime();
9508
9509    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9510    glContext->traceGLMessage(&glmsg);
9511}
9512
9513void GLTrace_glLightModelfv(GLenum pname, const GLfloat *params) {
9514    GLMessage glmsg;
9515    GLTraceContext *glContext = getGLTraceContext();
9516
9517    glmsg.set_function(GLMessage::glLightModelfv);
9518
9519    // copy argument pname
9520    GLMessage_DataType *arg_pname = glmsg.add_args();
9521    arg_pname->set_isarray(false);
9522    arg_pname->set_type(GLMessage::DataType::ENUM);
9523    arg_pname->add_intvalue((int)pname);
9524
9525    // copy argument params
9526    GLMessage_DataType *arg_params = glmsg.add_args();
9527    arg_params->set_isarray(false);
9528    arg_params->set_type(GLMessage::DataType::INT);
9529    arg_params->add_intvalue((int)params);
9530
9531    // call function
9532    nsecs_t start_time = systemTime();
9533    glContext->hooks->gl.glLightModelfv(pname, params);
9534    nsecs_t end_time = systemTime();
9535
9536    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9537    glContext->traceGLMessage(&glmsg);
9538}
9539
9540void GLTrace_glLightf(GLenum light, GLenum pname, GLfloat param) {
9541    GLMessage glmsg;
9542    GLTraceContext *glContext = getGLTraceContext();
9543
9544    glmsg.set_function(GLMessage::glLightf);
9545
9546    // copy argument light
9547    GLMessage_DataType *arg_light = glmsg.add_args();
9548    arg_light->set_isarray(false);
9549    arg_light->set_type(GLMessage::DataType::ENUM);
9550    arg_light->add_intvalue((int)light);
9551
9552    // copy argument pname
9553    GLMessage_DataType *arg_pname = glmsg.add_args();
9554    arg_pname->set_isarray(false);
9555    arg_pname->set_type(GLMessage::DataType::ENUM);
9556    arg_pname->add_intvalue((int)pname);
9557
9558    // copy argument param
9559    GLMessage_DataType *arg_param = glmsg.add_args();
9560    arg_param->set_isarray(false);
9561    arg_param->set_type(GLMessage::DataType::FLOAT);
9562    arg_param->add_floatvalue(param);
9563
9564    // call function
9565    nsecs_t start_time = systemTime();
9566    glContext->hooks->gl.glLightf(light, pname, param);
9567    nsecs_t end_time = systemTime();
9568
9569    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9570    glContext->traceGLMessage(&glmsg);
9571}
9572
9573void GLTrace_glLightfv(GLenum light, GLenum pname, const GLfloat *params) {
9574    GLMessage glmsg;
9575    GLTraceContext *glContext = getGLTraceContext();
9576
9577    glmsg.set_function(GLMessage::glLightfv);
9578
9579    // copy argument light
9580    GLMessage_DataType *arg_light = glmsg.add_args();
9581    arg_light->set_isarray(false);
9582    arg_light->set_type(GLMessage::DataType::ENUM);
9583    arg_light->add_intvalue((int)light);
9584
9585    // copy argument pname
9586    GLMessage_DataType *arg_pname = glmsg.add_args();
9587    arg_pname->set_isarray(false);
9588    arg_pname->set_type(GLMessage::DataType::ENUM);
9589    arg_pname->add_intvalue((int)pname);
9590
9591    // copy argument params
9592    GLMessage_DataType *arg_params = glmsg.add_args();
9593    arg_params->set_isarray(false);
9594    arg_params->set_type(GLMessage::DataType::INT);
9595    arg_params->add_intvalue((int)params);
9596
9597    // call function
9598    nsecs_t start_time = systemTime();
9599    glContext->hooks->gl.glLightfv(light, pname, params);
9600    nsecs_t end_time = systemTime();
9601
9602    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9603    glContext->traceGLMessage(&glmsg);
9604}
9605
9606void GLTrace_glLoadMatrixf(const GLfloat *m) {
9607    GLMessage glmsg;
9608    GLTraceContext *glContext = getGLTraceContext();
9609
9610    glmsg.set_function(GLMessage::glLoadMatrixf);
9611
9612    // copy argument m
9613    GLMessage_DataType *arg_m = glmsg.add_args();
9614    arg_m->set_isarray(false);
9615    arg_m->set_type(GLMessage::DataType::INT);
9616    arg_m->add_intvalue((int)m);
9617
9618    // call function
9619    nsecs_t start_time = systemTime();
9620    glContext->hooks->gl.glLoadMatrixf(m);
9621    nsecs_t end_time = systemTime();
9622
9623    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9624    glContext->traceGLMessage(&glmsg);
9625}
9626
9627void GLTrace_glMaterialf(GLenum face, GLenum pname, GLfloat param) {
9628    GLMessage glmsg;
9629    GLTraceContext *glContext = getGLTraceContext();
9630
9631    glmsg.set_function(GLMessage::glMaterialf);
9632
9633    // copy argument face
9634    GLMessage_DataType *arg_face = glmsg.add_args();
9635    arg_face->set_isarray(false);
9636    arg_face->set_type(GLMessage::DataType::ENUM);
9637    arg_face->add_intvalue((int)face);
9638
9639    // copy argument pname
9640    GLMessage_DataType *arg_pname = glmsg.add_args();
9641    arg_pname->set_isarray(false);
9642    arg_pname->set_type(GLMessage::DataType::ENUM);
9643    arg_pname->add_intvalue((int)pname);
9644
9645    // copy argument param
9646    GLMessage_DataType *arg_param = glmsg.add_args();
9647    arg_param->set_isarray(false);
9648    arg_param->set_type(GLMessage::DataType::FLOAT);
9649    arg_param->add_floatvalue(param);
9650
9651    // call function
9652    nsecs_t start_time = systemTime();
9653    glContext->hooks->gl.glMaterialf(face, pname, param);
9654    nsecs_t end_time = systemTime();
9655
9656    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9657    glContext->traceGLMessage(&glmsg);
9658}
9659
9660void GLTrace_glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) {
9661    GLMessage glmsg;
9662    GLTraceContext *glContext = getGLTraceContext();
9663
9664    glmsg.set_function(GLMessage::glMaterialfv);
9665
9666    // copy argument face
9667    GLMessage_DataType *arg_face = glmsg.add_args();
9668    arg_face->set_isarray(false);
9669    arg_face->set_type(GLMessage::DataType::ENUM);
9670    arg_face->add_intvalue((int)face);
9671
9672    // copy argument pname
9673    GLMessage_DataType *arg_pname = glmsg.add_args();
9674    arg_pname->set_isarray(false);
9675    arg_pname->set_type(GLMessage::DataType::ENUM);
9676    arg_pname->add_intvalue((int)pname);
9677
9678    // copy argument params
9679    GLMessage_DataType *arg_params = glmsg.add_args();
9680    arg_params->set_isarray(false);
9681    arg_params->set_type(GLMessage::DataType::INT);
9682    arg_params->add_intvalue((int)params);
9683
9684    // call function
9685    nsecs_t start_time = systemTime();
9686    glContext->hooks->gl.glMaterialfv(face, pname, params);
9687    nsecs_t end_time = systemTime();
9688
9689    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9690    glContext->traceGLMessage(&glmsg);
9691}
9692
9693void GLTrace_glMultMatrixf(const GLfloat *m) {
9694    GLMessage glmsg;
9695    GLTraceContext *glContext = getGLTraceContext();
9696
9697    glmsg.set_function(GLMessage::glMultMatrixf);
9698
9699    // copy argument m
9700    GLMessage_DataType *arg_m = glmsg.add_args();
9701    arg_m->set_isarray(false);
9702    arg_m->set_type(GLMessage::DataType::INT);
9703    arg_m->add_intvalue((int)m);
9704
9705    // call function
9706    nsecs_t start_time = systemTime();
9707    glContext->hooks->gl.glMultMatrixf(m);
9708    nsecs_t end_time = systemTime();
9709
9710    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9711    glContext->traceGLMessage(&glmsg);
9712}
9713
9714void GLTrace_glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) {
9715    GLMessage glmsg;
9716    GLTraceContext *glContext = getGLTraceContext();
9717
9718    glmsg.set_function(GLMessage::glMultiTexCoord4f);
9719
9720    // copy argument target
9721    GLMessage_DataType *arg_target = glmsg.add_args();
9722    arg_target->set_isarray(false);
9723    arg_target->set_type(GLMessage::DataType::ENUM);
9724    arg_target->add_intvalue((int)target);
9725
9726    // copy argument s
9727    GLMessage_DataType *arg_s = glmsg.add_args();
9728    arg_s->set_isarray(false);
9729    arg_s->set_type(GLMessage::DataType::FLOAT);
9730    arg_s->add_floatvalue(s);
9731
9732    // copy argument t
9733    GLMessage_DataType *arg_t = glmsg.add_args();
9734    arg_t->set_isarray(false);
9735    arg_t->set_type(GLMessage::DataType::FLOAT);
9736    arg_t->add_floatvalue(t);
9737
9738    // copy argument r
9739    GLMessage_DataType *arg_r = glmsg.add_args();
9740    arg_r->set_isarray(false);
9741    arg_r->set_type(GLMessage::DataType::FLOAT);
9742    arg_r->add_floatvalue(r);
9743
9744    // copy argument q
9745    GLMessage_DataType *arg_q = glmsg.add_args();
9746    arg_q->set_isarray(false);
9747    arg_q->set_type(GLMessage::DataType::FLOAT);
9748    arg_q->add_floatvalue(q);
9749
9750    // call function
9751    nsecs_t start_time = systemTime();
9752    glContext->hooks->gl.glMultiTexCoord4f(target, s, t, r, q);
9753    nsecs_t end_time = systemTime();
9754
9755    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9756    glContext->traceGLMessage(&glmsg);
9757}
9758
9759void GLTrace_glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) {
9760    GLMessage glmsg;
9761    GLTraceContext *glContext = getGLTraceContext();
9762
9763    glmsg.set_function(GLMessage::glNormal3f);
9764
9765    // copy argument nx
9766    GLMessage_DataType *arg_nx = glmsg.add_args();
9767    arg_nx->set_isarray(false);
9768    arg_nx->set_type(GLMessage::DataType::FLOAT);
9769    arg_nx->add_floatvalue(nx);
9770
9771    // copy argument ny
9772    GLMessage_DataType *arg_ny = glmsg.add_args();
9773    arg_ny->set_isarray(false);
9774    arg_ny->set_type(GLMessage::DataType::FLOAT);
9775    arg_ny->add_floatvalue(ny);
9776
9777    // copy argument nz
9778    GLMessage_DataType *arg_nz = glmsg.add_args();
9779    arg_nz->set_isarray(false);
9780    arg_nz->set_type(GLMessage::DataType::FLOAT);
9781    arg_nz->add_floatvalue(nz);
9782
9783    // call function
9784    nsecs_t start_time = systemTime();
9785    glContext->hooks->gl.glNormal3f(nx, ny, nz);
9786    nsecs_t end_time = systemTime();
9787
9788    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9789    glContext->traceGLMessage(&glmsg);
9790}
9791
9792void GLTrace_glOrthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
9793    GLMessage glmsg;
9794    GLTraceContext *glContext = getGLTraceContext();
9795
9796    glmsg.set_function(GLMessage::glOrthof);
9797
9798    // copy argument left
9799    GLMessage_DataType *arg_left = glmsg.add_args();
9800    arg_left->set_isarray(false);
9801    arg_left->set_type(GLMessage::DataType::FLOAT);
9802    arg_left->add_floatvalue(left);
9803
9804    // copy argument right
9805    GLMessage_DataType *arg_right = glmsg.add_args();
9806    arg_right->set_isarray(false);
9807    arg_right->set_type(GLMessage::DataType::FLOAT);
9808    arg_right->add_floatvalue(right);
9809
9810    // copy argument bottom
9811    GLMessage_DataType *arg_bottom = glmsg.add_args();
9812    arg_bottom->set_isarray(false);
9813    arg_bottom->set_type(GLMessage::DataType::FLOAT);
9814    arg_bottom->add_floatvalue(bottom);
9815
9816    // copy argument top
9817    GLMessage_DataType *arg_top = glmsg.add_args();
9818    arg_top->set_isarray(false);
9819    arg_top->set_type(GLMessage::DataType::FLOAT);
9820    arg_top->add_floatvalue(top);
9821
9822    // copy argument zNear
9823    GLMessage_DataType *arg_zNear = glmsg.add_args();
9824    arg_zNear->set_isarray(false);
9825    arg_zNear->set_type(GLMessage::DataType::FLOAT);
9826    arg_zNear->add_floatvalue(zNear);
9827
9828    // copy argument zFar
9829    GLMessage_DataType *arg_zFar = glmsg.add_args();
9830    arg_zFar->set_isarray(false);
9831    arg_zFar->set_type(GLMessage::DataType::FLOAT);
9832    arg_zFar->add_floatvalue(zFar);
9833
9834    // call function
9835    nsecs_t start_time = systemTime();
9836    glContext->hooks->gl.glOrthof(left, right, bottom, top, zNear, zFar);
9837    nsecs_t end_time = systemTime();
9838
9839    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9840    glContext->traceGLMessage(&glmsg);
9841}
9842
9843void GLTrace_glPointParameterf(GLenum pname, GLfloat param) {
9844    GLMessage glmsg;
9845    GLTraceContext *glContext = getGLTraceContext();
9846
9847    glmsg.set_function(GLMessage::glPointParameterf);
9848
9849    // copy argument pname
9850    GLMessage_DataType *arg_pname = glmsg.add_args();
9851    arg_pname->set_isarray(false);
9852    arg_pname->set_type(GLMessage::DataType::ENUM);
9853    arg_pname->add_intvalue((int)pname);
9854
9855    // copy argument param
9856    GLMessage_DataType *arg_param = glmsg.add_args();
9857    arg_param->set_isarray(false);
9858    arg_param->set_type(GLMessage::DataType::FLOAT);
9859    arg_param->add_floatvalue(param);
9860
9861    // call function
9862    nsecs_t start_time = systemTime();
9863    glContext->hooks->gl.glPointParameterf(pname, param);
9864    nsecs_t end_time = systemTime();
9865
9866    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9867    glContext->traceGLMessage(&glmsg);
9868}
9869
9870void GLTrace_glPointParameterfv(GLenum pname, const GLfloat *params) {
9871    GLMessage glmsg;
9872    GLTraceContext *glContext = getGLTraceContext();
9873
9874    glmsg.set_function(GLMessage::glPointParameterfv);
9875
9876    // copy argument pname
9877    GLMessage_DataType *arg_pname = glmsg.add_args();
9878    arg_pname->set_isarray(false);
9879    arg_pname->set_type(GLMessage::DataType::ENUM);
9880    arg_pname->add_intvalue((int)pname);
9881
9882    // copy argument params
9883    GLMessage_DataType *arg_params = glmsg.add_args();
9884    arg_params->set_isarray(false);
9885    arg_params->set_type(GLMessage::DataType::INT);
9886    arg_params->add_intvalue((int)params);
9887
9888    // call function
9889    nsecs_t start_time = systemTime();
9890    glContext->hooks->gl.glPointParameterfv(pname, params);
9891    nsecs_t end_time = systemTime();
9892
9893    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9894    glContext->traceGLMessage(&glmsg);
9895}
9896
9897void GLTrace_glPointSize(GLfloat size) {
9898    GLMessage glmsg;
9899    GLTraceContext *glContext = getGLTraceContext();
9900
9901    glmsg.set_function(GLMessage::glPointSize);
9902
9903    // copy argument size
9904    GLMessage_DataType *arg_size = glmsg.add_args();
9905    arg_size->set_isarray(false);
9906    arg_size->set_type(GLMessage::DataType::FLOAT);
9907    arg_size->add_floatvalue(size);
9908
9909    // call function
9910    nsecs_t start_time = systemTime();
9911    glContext->hooks->gl.glPointSize(size);
9912    nsecs_t end_time = systemTime();
9913
9914    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9915    glContext->traceGLMessage(&glmsg);
9916}
9917
9918void GLTrace_glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) {
9919    GLMessage glmsg;
9920    GLTraceContext *glContext = getGLTraceContext();
9921
9922    glmsg.set_function(GLMessage::glRotatef);
9923
9924    // copy argument angle
9925    GLMessage_DataType *arg_angle = glmsg.add_args();
9926    arg_angle->set_isarray(false);
9927    arg_angle->set_type(GLMessage::DataType::FLOAT);
9928    arg_angle->add_floatvalue(angle);
9929
9930    // copy argument x
9931    GLMessage_DataType *arg_x = glmsg.add_args();
9932    arg_x->set_isarray(false);
9933    arg_x->set_type(GLMessage::DataType::FLOAT);
9934    arg_x->add_floatvalue(x);
9935
9936    // copy argument y
9937    GLMessage_DataType *arg_y = glmsg.add_args();
9938    arg_y->set_isarray(false);
9939    arg_y->set_type(GLMessage::DataType::FLOAT);
9940    arg_y->add_floatvalue(y);
9941
9942    // copy argument z
9943    GLMessage_DataType *arg_z = glmsg.add_args();
9944    arg_z->set_isarray(false);
9945    arg_z->set_type(GLMessage::DataType::FLOAT);
9946    arg_z->add_floatvalue(z);
9947
9948    // call function
9949    nsecs_t start_time = systemTime();
9950    glContext->hooks->gl.glRotatef(angle, x, y, z);
9951    nsecs_t end_time = systemTime();
9952
9953    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9954    glContext->traceGLMessage(&glmsg);
9955}
9956
9957void GLTrace_glScalef(GLfloat x, GLfloat y, GLfloat z) {
9958    GLMessage glmsg;
9959    GLTraceContext *glContext = getGLTraceContext();
9960
9961    glmsg.set_function(GLMessage::glScalef);
9962
9963    // copy argument x
9964    GLMessage_DataType *arg_x = glmsg.add_args();
9965    arg_x->set_isarray(false);
9966    arg_x->set_type(GLMessage::DataType::FLOAT);
9967    arg_x->add_floatvalue(x);
9968
9969    // copy argument y
9970    GLMessage_DataType *arg_y = glmsg.add_args();
9971    arg_y->set_isarray(false);
9972    arg_y->set_type(GLMessage::DataType::FLOAT);
9973    arg_y->add_floatvalue(y);
9974
9975    // copy argument z
9976    GLMessage_DataType *arg_z = glmsg.add_args();
9977    arg_z->set_isarray(false);
9978    arg_z->set_type(GLMessage::DataType::FLOAT);
9979    arg_z->add_floatvalue(z);
9980
9981    // call function
9982    nsecs_t start_time = systemTime();
9983    glContext->hooks->gl.glScalef(x, y, z);
9984    nsecs_t end_time = systemTime();
9985
9986    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9987    glContext->traceGLMessage(&glmsg);
9988}
9989
9990void GLTrace_glTexEnvf(GLenum target, GLenum pname, GLfloat param) {
9991    GLMessage glmsg;
9992    GLTraceContext *glContext = getGLTraceContext();
9993
9994    glmsg.set_function(GLMessage::glTexEnvf);
9995
9996    // copy argument target
9997    GLMessage_DataType *arg_target = glmsg.add_args();
9998    arg_target->set_isarray(false);
9999    arg_target->set_type(GLMessage::DataType::ENUM);
10000    arg_target->add_intvalue((int)target);
10001
10002    // copy argument pname
10003    GLMessage_DataType *arg_pname = glmsg.add_args();
10004    arg_pname->set_isarray(false);
10005    arg_pname->set_type(GLMessage::DataType::ENUM);
10006    arg_pname->add_intvalue((int)pname);
10007
10008    // copy argument param
10009    GLMessage_DataType *arg_param = glmsg.add_args();
10010    arg_param->set_isarray(false);
10011    arg_param->set_type(GLMessage::DataType::FLOAT);
10012    arg_param->add_floatvalue(param);
10013
10014    // call function
10015    nsecs_t start_time = systemTime();
10016    glContext->hooks->gl.glTexEnvf(target, pname, param);
10017    nsecs_t end_time = systemTime();
10018
10019    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10020    glContext->traceGLMessage(&glmsg);
10021}
10022
10023void GLTrace_glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) {
10024    GLMessage glmsg;
10025    GLTraceContext *glContext = getGLTraceContext();
10026
10027    glmsg.set_function(GLMessage::glTexEnvfv);
10028
10029    // copy argument target
10030    GLMessage_DataType *arg_target = glmsg.add_args();
10031    arg_target->set_isarray(false);
10032    arg_target->set_type(GLMessage::DataType::ENUM);
10033    arg_target->add_intvalue((int)target);
10034
10035    // copy argument pname
10036    GLMessage_DataType *arg_pname = glmsg.add_args();
10037    arg_pname->set_isarray(false);
10038    arg_pname->set_type(GLMessage::DataType::ENUM);
10039    arg_pname->add_intvalue((int)pname);
10040
10041    // copy argument params
10042    GLMessage_DataType *arg_params = glmsg.add_args();
10043    arg_params->set_isarray(false);
10044    arg_params->set_type(GLMessage::DataType::INT);
10045    arg_params->add_intvalue((int)params);
10046
10047    // call function
10048    nsecs_t start_time = systemTime();
10049    glContext->hooks->gl.glTexEnvfv(target, pname, params);
10050    nsecs_t end_time = systemTime();
10051
10052    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10053    glContext->traceGLMessage(&glmsg);
10054}
10055
10056void GLTrace_glTranslatef(GLfloat x, GLfloat y, GLfloat z) {
10057    GLMessage glmsg;
10058    GLTraceContext *glContext = getGLTraceContext();
10059
10060    glmsg.set_function(GLMessage::glTranslatef);
10061
10062    // copy argument x
10063    GLMessage_DataType *arg_x = glmsg.add_args();
10064    arg_x->set_isarray(false);
10065    arg_x->set_type(GLMessage::DataType::FLOAT);
10066    arg_x->add_floatvalue(x);
10067
10068    // copy argument y
10069    GLMessage_DataType *arg_y = glmsg.add_args();
10070    arg_y->set_isarray(false);
10071    arg_y->set_type(GLMessage::DataType::FLOAT);
10072    arg_y->add_floatvalue(y);
10073
10074    // copy argument z
10075    GLMessage_DataType *arg_z = glmsg.add_args();
10076    arg_z->set_isarray(false);
10077    arg_z->set_type(GLMessage::DataType::FLOAT);
10078    arg_z->add_floatvalue(z);
10079
10080    // call function
10081    nsecs_t start_time = systemTime();
10082    glContext->hooks->gl.glTranslatef(x, y, z);
10083    nsecs_t end_time = systemTime();
10084
10085    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10086    glContext->traceGLMessage(&glmsg);
10087}
10088
10089void GLTrace_glAlphaFuncx(GLenum func, GLclampx ref) {
10090    GLMessage glmsg;
10091    GLTraceContext *glContext = getGLTraceContext();
10092
10093    glmsg.set_function(GLMessage::glAlphaFuncx);
10094
10095    // copy argument func
10096    GLMessage_DataType *arg_func = glmsg.add_args();
10097    arg_func->set_isarray(false);
10098    arg_func->set_type(GLMessage::DataType::ENUM);
10099    arg_func->add_intvalue((int)func);
10100
10101    // copy argument ref
10102    GLMessage_DataType *arg_ref = glmsg.add_args();
10103    arg_ref->set_isarray(false);
10104    arg_ref->set_type(GLMessage::DataType::INT);
10105    arg_ref->add_intvalue(ref);
10106
10107    // call function
10108    nsecs_t start_time = systemTime();
10109    glContext->hooks->gl.glAlphaFuncx(func, ref);
10110    nsecs_t end_time = systemTime();
10111
10112    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10113    glContext->traceGLMessage(&glmsg);
10114}
10115
10116void GLTrace_glClearColorx(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha) {
10117    GLMessage glmsg;
10118    GLTraceContext *glContext = getGLTraceContext();
10119
10120    glmsg.set_function(GLMessage::glClearColorx);
10121
10122    // copy argument red
10123    GLMessage_DataType *arg_red = glmsg.add_args();
10124    arg_red->set_isarray(false);
10125    arg_red->set_type(GLMessage::DataType::INT);
10126    arg_red->add_intvalue(red);
10127
10128    // copy argument green
10129    GLMessage_DataType *arg_green = glmsg.add_args();
10130    arg_green->set_isarray(false);
10131    arg_green->set_type(GLMessage::DataType::INT);
10132    arg_green->add_intvalue(green);
10133
10134    // copy argument blue
10135    GLMessage_DataType *arg_blue = glmsg.add_args();
10136    arg_blue->set_isarray(false);
10137    arg_blue->set_type(GLMessage::DataType::INT);
10138    arg_blue->add_intvalue(blue);
10139
10140    // copy argument alpha
10141    GLMessage_DataType *arg_alpha = glmsg.add_args();
10142    arg_alpha->set_isarray(false);
10143    arg_alpha->set_type(GLMessage::DataType::INT);
10144    arg_alpha->add_intvalue(alpha);
10145
10146    // call function
10147    nsecs_t start_time = systemTime();
10148    glContext->hooks->gl.glClearColorx(red, green, blue, alpha);
10149    nsecs_t end_time = systemTime();
10150
10151    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10152    glContext->traceGLMessage(&glmsg);
10153}
10154
10155void GLTrace_glClearDepthx(GLclampx depth) {
10156    GLMessage glmsg;
10157    GLTraceContext *glContext = getGLTraceContext();
10158
10159    glmsg.set_function(GLMessage::glClearDepthx);
10160
10161    // copy argument depth
10162    GLMessage_DataType *arg_depth = glmsg.add_args();
10163    arg_depth->set_isarray(false);
10164    arg_depth->set_type(GLMessage::DataType::INT);
10165    arg_depth->add_intvalue(depth);
10166
10167    // call function
10168    nsecs_t start_time = systemTime();
10169    glContext->hooks->gl.glClearDepthx(depth);
10170    nsecs_t end_time = systemTime();
10171
10172    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10173    glContext->traceGLMessage(&glmsg);
10174}
10175
10176void GLTrace_glClientActiveTexture(GLenum texture) {
10177    GLMessage glmsg;
10178    GLTraceContext *glContext = getGLTraceContext();
10179
10180    glmsg.set_function(GLMessage::glClientActiveTexture);
10181
10182    // copy argument texture
10183    GLMessage_DataType *arg_texture = glmsg.add_args();
10184    arg_texture->set_isarray(false);
10185    arg_texture->set_type(GLMessage::DataType::ENUM);
10186    arg_texture->add_intvalue((int)texture);
10187
10188    // call function
10189    nsecs_t start_time = systemTime();
10190    glContext->hooks->gl.glClientActiveTexture(texture);
10191    nsecs_t end_time = systemTime();
10192
10193    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10194    glContext->traceGLMessage(&glmsg);
10195}
10196
10197void GLTrace_glClipPlanex(GLenum plane, const GLfixed *equation) {
10198    GLMessage glmsg;
10199    GLTraceContext *glContext = getGLTraceContext();
10200
10201    glmsg.set_function(GLMessage::glClipPlanex);
10202
10203    // copy argument plane
10204    GLMessage_DataType *arg_plane = glmsg.add_args();
10205    arg_plane->set_isarray(false);
10206    arg_plane->set_type(GLMessage::DataType::ENUM);
10207    arg_plane->add_intvalue((int)plane);
10208
10209    // copy argument equation
10210    GLMessage_DataType *arg_equation = glmsg.add_args();
10211    arg_equation->set_isarray(false);
10212    arg_equation->set_type(GLMessage::DataType::INT);
10213    arg_equation->add_intvalue((int)equation);
10214
10215    // call function
10216    nsecs_t start_time = systemTime();
10217    glContext->hooks->gl.glClipPlanex(plane, equation);
10218    nsecs_t end_time = systemTime();
10219
10220    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10221    glContext->traceGLMessage(&glmsg);
10222}
10223
10224void GLTrace_glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) {
10225    GLMessage glmsg;
10226    GLTraceContext *glContext = getGLTraceContext();
10227
10228    glmsg.set_function(GLMessage::glColor4ub);
10229
10230    // copy argument red
10231    GLMessage_DataType *arg_red = glmsg.add_args();
10232    arg_red->set_isarray(false);
10233    arg_red->set_type(GLMessage::DataType::BYTE);
10234    arg_red->add_intvalue((int)red);
10235
10236    // copy argument green
10237    GLMessage_DataType *arg_green = glmsg.add_args();
10238    arg_green->set_isarray(false);
10239    arg_green->set_type(GLMessage::DataType::BYTE);
10240    arg_green->add_intvalue((int)green);
10241
10242    // copy argument blue
10243    GLMessage_DataType *arg_blue = glmsg.add_args();
10244    arg_blue->set_isarray(false);
10245    arg_blue->set_type(GLMessage::DataType::BYTE);
10246    arg_blue->add_intvalue((int)blue);
10247
10248    // copy argument alpha
10249    GLMessage_DataType *arg_alpha = glmsg.add_args();
10250    arg_alpha->set_isarray(false);
10251    arg_alpha->set_type(GLMessage::DataType::BYTE);
10252    arg_alpha->add_intvalue((int)alpha);
10253
10254    // call function
10255    nsecs_t start_time = systemTime();
10256    glContext->hooks->gl.glColor4ub(red, green, blue, alpha);
10257    nsecs_t end_time = systemTime();
10258
10259    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10260    glContext->traceGLMessage(&glmsg);
10261}
10262
10263void GLTrace_glColor4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {
10264    GLMessage glmsg;
10265    GLTraceContext *glContext = getGLTraceContext();
10266
10267    glmsg.set_function(GLMessage::glColor4x);
10268
10269    // copy argument red
10270    GLMessage_DataType *arg_red = glmsg.add_args();
10271    arg_red->set_isarray(false);
10272    arg_red->set_type(GLMessage::DataType::INT);
10273    arg_red->add_intvalue(red);
10274
10275    // copy argument green
10276    GLMessage_DataType *arg_green = glmsg.add_args();
10277    arg_green->set_isarray(false);
10278    arg_green->set_type(GLMessage::DataType::INT);
10279    arg_green->add_intvalue(green);
10280
10281    // copy argument blue
10282    GLMessage_DataType *arg_blue = glmsg.add_args();
10283    arg_blue->set_isarray(false);
10284    arg_blue->set_type(GLMessage::DataType::INT);
10285    arg_blue->add_intvalue(blue);
10286
10287    // copy argument alpha
10288    GLMessage_DataType *arg_alpha = glmsg.add_args();
10289    arg_alpha->set_isarray(false);
10290    arg_alpha->set_type(GLMessage::DataType::INT);
10291    arg_alpha->add_intvalue(alpha);
10292
10293    // call function
10294    nsecs_t start_time = systemTime();
10295    glContext->hooks->gl.glColor4x(red, green, blue, alpha);
10296    nsecs_t end_time = systemTime();
10297
10298    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10299    glContext->traceGLMessage(&glmsg);
10300}
10301
10302void GLTrace_glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
10303    GLMessage glmsg;
10304    GLTraceContext *glContext = getGLTraceContext();
10305
10306    glmsg.set_function(GLMessage::glColorPointer);
10307
10308    // copy argument size
10309    GLMessage_DataType *arg_size = glmsg.add_args();
10310    arg_size->set_isarray(false);
10311    arg_size->set_type(GLMessage::DataType::INT);
10312    arg_size->add_intvalue(size);
10313
10314    // copy argument type
10315    GLMessage_DataType *arg_type = glmsg.add_args();
10316    arg_type->set_isarray(false);
10317    arg_type->set_type(GLMessage::DataType::ENUM);
10318    arg_type->add_intvalue((int)type);
10319
10320    // copy argument stride
10321    GLMessage_DataType *arg_stride = glmsg.add_args();
10322    arg_stride->set_isarray(false);
10323    arg_stride->set_type(GLMessage::DataType::INT);
10324    arg_stride->add_intvalue(stride);
10325
10326    // copy argument pointer
10327    GLMessage_DataType *arg_pointer = glmsg.add_args();
10328    arg_pointer->set_isarray(false);
10329    arg_pointer->set_type(GLMessage::DataType::INT);
10330    arg_pointer->add_intvalue((int)pointer);
10331
10332    // call function
10333    nsecs_t start_time = systemTime();
10334    glContext->hooks->gl.glColorPointer(size, type, stride, pointer);
10335    nsecs_t end_time = systemTime();
10336
10337    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10338    glContext->traceGLMessage(&glmsg);
10339}
10340
10341void GLTrace_glDepthRangex(GLclampx zNear, GLclampx zFar) {
10342    GLMessage glmsg;
10343    GLTraceContext *glContext = getGLTraceContext();
10344
10345    glmsg.set_function(GLMessage::glDepthRangex);
10346
10347    // copy argument zNear
10348    GLMessage_DataType *arg_zNear = glmsg.add_args();
10349    arg_zNear->set_isarray(false);
10350    arg_zNear->set_type(GLMessage::DataType::INT);
10351    arg_zNear->add_intvalue(zNear);
10352
10353    // copy argument zFar
10354    GLMessage_DataType *arg_zFar = glmsg.add_args();
10355    arg_zFar->set_isarray(false);
10356    arg_zFar->set_type(GLMessage::DataType::INT);
10357    arg_zFar->add_intvalue(zFar);
10358
10359    // call function
10360    nsecs_t start_time = systemTime();
10361    glContext->hooks->gl.glDepthRangex(zNear, zFar);
10362    nsecs_t end_time = systemTime();
10363
10364    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10365    glContext->traceGLMessage(&glmsg);
10366}
10367
10368void GLTrace_glDisableClientState(GLenum array) {
10369    GLMessage glmsg;
10370    GLTraceContext *glContext = getGLTraceContext();
10371
10372    glmsg.set_function(GLMessage::glDisableClientState);
10373
10374    // copy argument array
10375    GLMessage_DataType *arg_array = glmsg.add_args();
10376    arg_array->set_isarray(false);
10377    arg_array->set_type(GLMessage::DataType::ENUM);
10378    arg_array->add_intvalue((int)array);
10379
10380    // call function
10381    nsecs_t start_time = systemTime();
10382    glContext->hooks->gl.glDisableClientState(array);
10383    nsecs_t end_time = systemTime();
10384
10385    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10386    glContext->traceGLMessage(&glmsg);
10387}
10388
10389void GLTrace_glEnableClientState(GLenum array) {
10390    GLMessage glmsg;
10391    GLTraceContext *glContext = getGLTraceContext();
10392
10393    glmsg.set_function(GLMessage::glEnableClientState);
10394
10395    // copy argument array
10396    GLMessage_DataType *arg_array = glmsg.add_args();
10397    arg_array->set_isarray(false);
10398    arg_array->set_type(GLMessage::DataType::ENUM);
10399    arg_array->add_intvalue((int)array);
10400
10401    // call function
10402    nsecs_t start_time = systemTime();
10403    glContext->hooks->gl.glEnableClientState(array);
10404    nsecs_t end_time = systemTime();
10405
10406    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10407    glContext->traceGLMessage(&glmsg);
10408}
10409
10410void GLTrace_glFogx(GLenum pname, GLfixed param) {
10411    GLMessage glmsg;
10412    GLTraceContext *glContext = getGLTraceContext();
10413
10414    glmsg.set_function(GLMessage::glFogx);
10415
10416    // copy argument pname
10417    GLMessage_DataType *arg_pname = glmsg.add_args();
10418    arg_pname->set_isarray(false);
10419    arg_pname->set_type(GLMessage::DataType::ENUM);
10420    arg_pname->add_intvalue((int)pname);
10421
10422    // copy argument param
10423    GLMessage_DataType *arg_param = glmsg.add_args();
10424    arg_param->set_isarray(false);
10425    arg_param->set_type(GLMessage::DataType::INT);
10426    arg_param->add_intvalue(param);
10427
10428    // call function
10429    nsecs_t start_time = systemTime();
10430    glContext->hooks->gl.glFogx(pname, param);
10431    nsecs_t end_time = systemTime();
10432
10433    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10434    glContext->traceGLMessage(&glmsg);
10435}
10436
10437void GLTrace_glFogxv(GLenum pname, const GLfixed *params) {
10438    GLMessage glmsg;
10439    GLTraceContext *glContext = getGLTraceContext();
10440
10441    glmsg.set_function(GLMessage::glFogxv);
10442
10443    // copy argument pname
10444    GLMessage_DataType *arg_pname = glmsg.add_args();
10445    arg_pname->set_isarray(false);
10446    arg_pname->set_type(GLMessage::DataType::ENUM);
10447    arg_pname->add_intvalue((int)pname);
10448
10449    // copy argument params
10450    GLMessage_DataType *arg_params = glmsg.add_args();
10451    arg_params->set_isarray(false);
10452    arg_params->set_type(GLMessage::DataType::INT);
10453    arg_params->add_intvalue((int)params);
10454
10455    // call function
10456    nsecs_t start_time = systemTime();
10457    glContext->hooks->gl.glFogxv(pname, params);
10458    nsecs_t end_time = systemTime();
10459
10460    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10461    glContext->traceGLMessage(&glmsg);
10462}
10463
10464void GLTrace_glFrustumx(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
10465    GLMessage glmsg;
10466    GLTraceContext *glContext = getGLTraceContext();
10467
10468    glmsg.set_function(GLMessage::glFrustumx);
10469
10470    // copy argument left
10471    GLMessage_DataType *arg_left = glmsg.add_args();
10472    arg_left->set_isarray(false);
10473    arg_left->set_type(GLMessage::DataType::INT);
10474    arg_left->add_intvalue(left);
10475
10476    // copy argument right
10477    GLMessage_DataType *arg_right = glmsg.add_args();
10478    arg_right->set_isarray(false);
10479    arg_right->set_type(GLMessage::DataType::INT);
10480    arg_right->add_intvalue(right);
10481
10482    // copy argument bottom
10483    GLMessage_DataType *arg_bottom = glmsg.add_args();
10484    arg_bottom->set_isarray(false);
10485    arg_bottom->set_type(GLMessage::DataType::INT);
10486    arg_bottom->add_intvalue(bottom);
10487
10488    // copy argument top
10489    GLMessage_DataType *arg_top = glmsg.add_args();
10490    arg_top->set_isarray(false);
10491    arg_top->set_type(GLMessage::DataType::INT);
10492    arg_top->add_intvalue(top);
10493
10494    // copy argument zNear
10495    GLMessage_DataType *arg_zNear = glmsg.add_args();
10496    arg_zNear->set_isarray(false);
10497    arg_zNear->set_type(GLMessage::DataType::INT);
10498    arg_zNear->add_intvalue(zNear);
10499
10500    // copy argument zFar
10501    GLMessage_DataType *arg_zFar = glmsg.add_args();
10502    arg_zFar->set_isarray(false);
10503    arg_zFar->set_type(GLMessage::DataType::INT);
10504    arg_zFar->add_intvalue(zFar);
10505
10506    // call function
10507    nsecs_t start_time = systemTime();
10508    glContext->hooks->gl.glFrustumx(left, right, bottom, top, zNear, zFar);
10509    nsecs_t end_time = systemTime();
10510
10511    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10512    glContext->traceGLMessage(&glmsg);
10513}
10514
10515void GLTrace_glGetClipPlanex(GLenum pname, GLfixed eqn[4]) {
10516    GLMessage glmsg;
10517    GLTraceContext *glContext = getGLTraceContext();
10518
10519    glmsg.set_function(GLMessage::glGetClipPlanex);
10520
10521    // copy argument pname
10522    GLMessage_DataType *arg_pname = glmsg.add_args();
10523    arg_pname->set_isarray(false);
10524    arg_pname->set_type(GLMessage::DataType::ENUM);
10525    arg_pname->add_intvalue((int)pname);
10526
10527    // copy argument eqn
10528    GLMessage_DataType *arg_eqn = glmsg.add_args();
10529    arg_eqn->set_isarray(false);
10530    arg_eqn->set_type(GLMessage::DataType::INT);
10531    arg_eqn->add_intvalue((int)eqn);
10532
10533    // call function
10534    nsecs_t start_time = systemTime();
10535    glContext->hooks->gl.glGetClipPlanex(pname, eqn);
10536    nsecs_t end_time = systemTime();
10537
10538    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10539    glContext->traceGLMessage(&glmsg);
10540}
10541
10542void GLTrace_glGetFixedv(GLenum pname, GLfixed *params) {
10543    GLMessage glmsg;
10544    GLTraceContext *glContext = getGLTraceContext();
10545
10546    glmsg.set_function(GLMessage::glGetFixedv);
10547
10548    // copy argument pname
10549    GLMessage_DataType *arg_pname = glmsg.add_args();
10550    arg_pname->set_isarray(false);
10551    arg_pname->set_type(GLMessage::DataType::ENUM);
10552    arg_pname->add_intvalue((int)pname);
10553
10554    // copy argument params
10555    GLMessage_DataType *arg_params = glmsg.add_args();
10556    arg_params->set_isarray(false);
10557    arg_params->set_type(GLMessage::DataType::INT);
10558    arg_params->add_intvalue((int)params);
10559
10560    // call function
10561    nsecs_t start_time = systemTime();
10562    glContext->hooks->gl.glGetFixedv(pname, params);
10563    nsecs_t end_time = systemTime();
10564
10565    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10566    glContext->traceGLMessage(&glmsg);
10567}
10568
10569void GLTrace_glGetLightxv(GLenum light, GLenum pname, GLfixed *params) {
10570    GLMessage glmsg;
10571    GLTraceContext *glContext = getGLTraceContext();
10572
10573    glmsg.set_function(GLMessage::glGetLightxv);
10574
10575    // copy argument light
10576    GLMessage_DataType *arg_light = glmsg.add_args();
10577    arg_light->set_isarray(false);
10578    arg_light->set_type(GLMessage::DataType::ENUM);
10579    arg_light->add_intvalue((int)light);
10580
10581    // copy argument pname
10582    GLMessage_DataType *arg_pname = glmsg.add_args();
10583    arg_pname->set_isarray(false);
10584    arg_pname->set_type(GLMessage::DataType::ENUM);
10585    arg_pname->add_intvalue((int)pname);
10586
10587    // copy argument params
10588    GLMessage_DataType *arg_params = glmsg.add_args();
10589    arg_params->set_isarray(false);
10590    arg_params->set_type(GLMessage::DataType::INT);
10591    arg_params->add_intvalue((int)params);
10592
10593    // call function
10594    nsecs_t start_time = systemTime();
10595    glContext->hooks->gl.glGetLightxv(light, pname, params);
10596    nsecs_t end_time = systemTime();
10597
10598    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10599    glContext->traceGLMessage(&glmsg);
10600}
10601
10602void GLTrace_glGetMaterialxv(GLenum face, GLenum pname, GLfixed *params) {
10603    GLMessage glmsg;
10604    GLTraceContext *glContext = getGLTraceContext();
10605
10606    glmsg.set_function(GLMessage::glGetMaterialxv);
10607
10608    // copy argument face
10609    GLMessage_DataType *arg_face = glmsg.add_args();
10610    arg_face->set_isarray(false);
10611    arg_face->set_type(GLMessage::DataType::ENUM);
10612    arg_face->add_intvalue((int)face);
10613
10614    // copy argument pname
10615    GLMessage_DataType *arg_pname = glmsg.add_args();
10616    arg_pname->set_isarray(false);
10617    arg_pname->set_type(GLMessage::DataType::ENUM);
10618    arg_pname->add_intvalue((int)pname);
10619
10620    // copy argument params
10621    GLMessage_DataType *arg_params = glmsg.add_args();
10622    arg_params->set_isarray(false);
10623    arg_params->set_type(GLMessage::DataType::INT);
10624    arg_params->add_intvalue((int)params);
10625
10626    // call function
10627    nsecs_t start_time = systemTime();
10628    glContext->hooks->gl.glGetMaterialxv(face, pname, params);
10629    nsecs_t end_time = systemTime();
10630
10631    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10632    glContext->traceGLMessage(&glmsg);
10633}
10634
10635void GLTrace_glGetPointerv(GLenum pname, GLvoid **params) {
10636    GLMessage glmsg;
10637    GLTraceContext *glContext = getGLTraceContext();
10638
10639    glmsg.set_function(GLMessage::glGetPointerv);
10640
10641    // copy argument pname
10642    GLMessage_DataType *arg_pname = glmsg.add_args();
10643    arg_pname->set_isarray(false);
10644    arg_pname->set_type(GLMessage::DataType::ENUM);
10645    arg_pname->add_intvalue((int)pname);
10646
10647    // copy argument params
10648    GLMessage_DataType *arg_params = glmsg.add_args();
10649    arg_params->set_isarray(false);
10650    arg_params->set_type(GLMessage::DataType::INT);
10651    arg_params->add_intvalue((int)params);
10652
10653    // call function
10654    nsecs_t start_time = systemTime();
10655    glContext->hooks->gl.glGetPointerv(pname, params);
10656    nsecs_t end_time = systemTime();
10657
10658    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10659    glContext->traceGLMessage(&glmsg);
10660}
10661
10662void GLTrace_glGetTexEnviv(GLenum env, GLenum pname, GLint *params) {
10663    GLMessage glmsg;
10664    GLTraceContext *glContext = getGLTraceContext();
10665
10666    glmsg.set_function(GLMessage::glGetTexEnviv);
10667
10668    // copy argument env
10669    GLMessage_DataType *arg_env = glmsg.add_args();
10670    arg_env->set_isarray(false);
10671    arg_env->set_type(GLMessage::DataType::ENUM);
10672    arg_env->add_intvalue((int)env);
10673
10674    // copy argument pname
10675    GLMessage_DataType *arg_pname = glmsg.add_args();
10676    arg_pname->set_isarray(false);
10677    arg_pname->set_type(GLMessage::DataType::ENUM);
10678    arg_pname->add_intvalue((int)pname);
10679
10680    // copy argument params
10681    GLMessage_DataType *arg_params = glmsg.add_args();
10682    arg_params->set_isarray(false);
10683    arg_params->set_type(GLMessage::DataType::INT);
10684    arg_params->add_intvalue((int)params);
10685
10686    // call function
10687    nsecs_t start_time = systemTime();
10688    glContext->hooks->gl.glGetTexEnviv(env, pname, params);
10689    nsecs_t end_time = systemTime();
10690
10691    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10692    glContext->traceGLMessage(&glmsg);
10693}
10694
10695void GLTrace_glGetTexEnvxv(GLenum env, GLenum pname, GLfixed *params) {
10696    GLMessage glmsg;
10697    GLTraceContext *glContext = getGLTraceContext();
10698
10699    glmsg.set_function(GLMessage::glGetTexEnvxv);
10700
10701    // copy argument env
10702    GLMessage_DataType *arg_env = glmsg.add_args();
10703    arg_env->set_isarray(false);
10704    arg_env->set_type(GLMessage::DataType::ENUM);
10705    arg_env->add_intvalue((int)env);
10706
10707    // copy argument pname
10708    GLMessage_DataType *arg_pname = glmsg.add_args();
10709    arg_pname->set_isarray(false);
10710    arg_pname->set_type(GLMessage::DataType::ENUM);
10711    arg_pname->add_intvalue((int)pname);
10712
10713    // copy argument params
10714    GLMessage_DataType *arg_params = glmsg.add_args();
10715    arg_params->set_isarray(false);
10716    arg_params->set_type(GLMessage::DataType::INT);
10717    arg_params->add_intvalue((int)params);
10718
10719    // call function
10720    nsecs_t start_time = systemTime();
10721    glContext->hooks->gl.glGetTexEnvxv(env, pname, params);
10722    nsecs_t end_time = systemTime();
10723
10724    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10725    glContext->traceGLMessage(&glmsg);
10726}
10727
10728void GLTrace_glGetTexParameterxv(GLenum target, GLenum pname, GLfixed *params) {
10729    GLMessage glmsg;
10730    GLTraceContext *glContext = getGLTraceContext();
10731
10732    glmsg.set_function(GLMessage::glGetTexParameterxv);
10733
10734    // copy argument target
10735    GLMessage_DataType *arg_target = glmsg.add_args();
10736    arg_target->set_isarray(false);
10737    arg_target->set_type(GLMessage::DataType::ENUM);
10738    arg_target->add_intvalue((int)target);
10739
10740    // copy argument pname
10741    GLMessage_DataType *arg_pname = glmsg.add_args();
10742    arg_pname->set_isarray(false);
10743    arg_pname->set_type(GLMessage::DataType::ENUM);
10744    arg_pname->add_intvalue((int)pname);
10745
10746    // copy argument params
10747    GLMessage_DataType *arg_params = glmsg.add_args();
10748    arg_params->set_isarray(false);
10749    arg_params->set_type(GLMessage::DataType::INT);
10750    arg_params->add_intvalue((int)params);
10751
10752    // call function
10753    nsecs_t start_time = systemTime();
10754    glContext->hooks->gl.glGetTexParameterxv(target, pname, params);
10755    nsecs_t end_time = systemTime();
10756
10757    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10758    glContext->traceGLMessage(&glmsg);
10759}
10760
10761void GLTrace_glLightModelx(GLenum pname, GLfixed param) {
10762    GLMessage glmsg;
10763    GLTraceContext *glContext = getGLTraceContext();
10764
10765    glmsg.set_function(GLMessage::glLightModelx);
10766
10767    // copy argument pname
10768    GLMessage_DataType *arg_pname = glmsg.add_args();
10769    arg_pname->set_isarray(false);
10770    arg_pname->set_type(GLMessage::DataType::ENUM);
10771    arg_pname->add_intvalue((int)pname);
10772
10773    // copy argument param
10774    GLMessage_DataType *arg_param = glmsg.add_args();
10775    arg_param->set_isarray(false);
10776    arg_param->set_type(GLMessage::DataType::INT);
10777    arg_param->add_intvalue(param);
10778
10779    // call function
10780    nsecs_t start_time = systemTime();
10781    glContext->hooks->gl.glLightModelx(pname, param);
10782    nsecs_t end_time = systemTime();
10783
10784    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10785    glContext->traceGLMessage(&glmsg);
10786}
10787
10788void GLTrace_glLightModelxv(GLenum pname, const GLfixed *params) {
10789    GLMessage glmsg;
10790    GLTraceContext *glContext = getGLTraceContext();
10791
10792    glmsg.set_function(GLMessage::glLightModelxv);
10793
10794    // copy argument pname
10795    GLMessage_DataType *arg_pname = glmsg.add_args();
10796    arg_pname->set_isarray(false);
10797    arg_pname->set_type(GLMessage::DataType::ENUM);
10798    arg_pname->add_intvalue((int)pname);
10799
10800    // copy argument params
10801    GLMessage_DataType *arg_params = glmsg.add_args();
10802    arg_params->set_isarray(false);
10803    arg_params->set_type(GLMessage::DataType::INT);
10804    arg_params->add_intvalue((int)params);
10805
10806    // call function
10807    nsecs_t start_time = systemTime();
10808    glContext->hooks->gl.glLightModelxv(pname, params);
10809    nsecs_t end_time = systemTime();
10810
10811    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10812    glContext->traceGLMessage(&glmsg);
10813}
10814
10815void GLTrace_glLightx(GLenum light, GLenum pname, GLfixed param) {
10816    GLMessage glmsg;
10817    GLTraceContext *glContext = getGLTraceContext();
10818
10819    glmsg.set_function(GLMessage::glLightx);
10820
10821    // copy argument light
10822    GLMessage_DataType *arg_light = glmsg.add_args();
10823    arg_light->set_isarray(false);
10824    arg_light->set_type(GLMessage::DataType::ENUM);
10825    arg_light->add_intvalue((int)light);
10826
10827    // copy argument pname
10828    GLMessage_DataType *arg_pname = glmsg.add_args();
10829    arg_pname->set_isarray(false);
10830    arg_pname->set_type(GLMessage::DataType::ENUM);
10831    arg_pname->add_intvalue((int)pname);
10832
10833    // copy argument param
10834    GLMessage_DataType *arg_param = glmsg.add_args();
10835    arg_param->set_isarray(false);
10836    arg_param->set_type(GLMessage::DataType::INT);
10837    arg_param->add_intvalue(param);
10838
10839    // call function
10840    nsecs_t start_time = systemTime();
10841    glContext->hooks->gl.glLightx(light, pname, param);
10842    nsecs_t end_time = systemTime();
10843
10844    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10845    glContext->traceGLMessage(&glmsg);
10846}
10847
10848void GLTrace_glLightxv(GLenum light, GLenum pname, const GLfixed *params) {
10849    GLMessage glmsg;
10850    GLTraceContext *glContext = getGLTraceContext();
10851
10852    glmsg.set_function(GLMessage::glLightxv);
10853
10854    // copy argument light
10855    GLMessage_DataType *arg_light = glmsg.add_args();
10856    arg_light->set_isarray(false);
10857    arg_light->set_type(GLMessage::DataType::ENUM);
10858    arg_light->add_intvalue((int)light);
10859
10860    // copy argument pname
10861    GLMessage_DataType *arg_pname = glmsg.add_args();
10862    arg_pname->set_isarray(false);
10863    arg_pname->set_type(GLMessage::DataType::ENUM);
10864    arg_pname->add_intvalue((int)pname);
10865
10866    // copy argument params
10867    GLMessage_DataType *arg_params = glmsg.add_args();
10868    arg_params->set_isarray(false);
10869    arg_params->set_type(GLMessage::DataType::INT);
10870    arg_params->add_intvalue((int)params);
10871
10872    // call function
10873    nsecs_t start_time = systemTime();
10874    glContext->hooks->gl.glLightxv(light, pname, params);
10875    nsecs_t end_time = systemTime();
10876
10877    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10878    glContext->traceGLMessage(&glmsg);
10879}
10880
10881void GLTrace_glLineWidthx(GLfixed width) {
10882    GLMessage glmsg;
10883    GLTraceContext *glContext = getGLTraceContext();
10884
10885    glmsg.set_function(GLMessage::glLineWidthx);
10886
10887    // copy argument width
10888    GLMessage_DataType *arg_width = glmsg.add_args();
10889    arg_width->set_isarray(false);
10890    arg_width->set_type(GLMessage::DataType::INT);
10891    arg_width->add_intvalue(width);
10892
10893    // call function
10894    nsecs_t start_time = systemTime();
10895    glContext->hooks->gl.glLineWidthx(width);
10896    nsecs_t end_time = systemTime();
10897
10898    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10899    glContext->traceGLMessage(&glmsg);
10900}
10901
10902void GLTrace_glLoadIdentity(void) {
10903    GLMessage glmsg;
10904    GLTraceContext *glContext = getGLTraceContext();
10905
10906    glmsg.set_function(GLMessage::glLoadIdentity);
10907
10908    // call function
10909    nsecs_t start_time = systemTime();
10910    glContext->hooks->gl.glLoadIdentity();
10911    nsecs_t end_time = systemTime();
10912
10913    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10914    glContext->traceGLMessage(&glmsg);
10915}
10916
10917void GLTrace_glLoadMatrixx(const GLfixed *m) {
10918    GLMessage glmsg;
10919    GLTraceContext *glContext = getGLTraceContext();
10920
10921    glmsg.set_function(GLMessage::glLoadMatrixx);
10922
10923    // copy argument m
10924    GLMessage_DataType *arg_m = glmsg.add_args();
10925    arg_m->set_isarray(false);
10926    arg_m->set_type(GLMessage::DataType::INT);
10927    arg_m->add_intvalue((int)m);
10928
10929    // call function
10930    nsecs_t start_time = systemTime();
10931    glContext->hooks->gl.glLoadMatrixx(m);
10932    nsecs_t end_time = systemTime();
10933
10934    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10935    glContext->traceGLMessage(&glmsg);
10936}
10937
10938void GLTrace_glLogicOp(GLenum opcode) {
10939    GLMessage glmsg;
10940    GLTraceContext *glContext = getGLTraceContext();
10941
10942    glmsg.set_function(GLMessage::glLogicOp);
10943
10944    // copy argument opcode
10945    GLMessage_DataType *arg_opcode = glmsg.add_args();
10946    arg_opcode->set_isarray(false);
10947    arg_opcode->set_type(GLMessage::DataType::ENUM);
10948    arg_opcode->add_intvalue((int)opcode);
10949
10950    // call function
10951    nsecs_t start_time = systemTime();
10952    glContext->hooks->gl.glLogicOp(opcode);
10953    nsecs_t end_time = systemTime();
10954
10955    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10956    glContext->traceGLMessage(&glmsg);
10957}
10958
10959void GLTrace_glMaterialx(GLenum face, GLenum pname, GLfixed param) {
10960    GLMessage glmsg;
10961    GLTraceContext *glContext = getGLTraceContext();
10962
10963    glmsg.set_function(GLMessage::glMaterialx);
10964
10965    // copy argument face
10966    GLMessage_DataType *arg_face = glmsg.add_args();
10967    arg_face->set_isarray(false);
10968    arg_face->set_type(GLMessage::DataType::ENUM);
10969    arg_face->add_intvalue((int)face);
10970
10971    // copy argument pname
10972    GLMessage_DataType *arg_pname = glmsg.add_args();
10973    arg_pname->set_isarray(false);
10974    arg_pname->set_type(GLMessage::DataType::ENUM);
10975    arg_pname->add_intvalue((int)pname);
10976
10977    // copy argument param
10978    GLMessage_DataType *arg_param = glmsg.add_args();
10979    arg_param->set_isarray(false);
10980    arg_param->set_type(GLMessage::DataType::INT);
10981    arg_param->add_intvalue(param);
10982
10983    // call function
10984    nsecs_t start_time = systemTime();
10985    glContext->hooks->gl.glMaterialx(face, pname, param);
10986    nsecs_t end_time = systemTime();
10987
10988    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10989    glContext->traceGLMessage(&glmsg);
10990}
10991
10992void GLTrace_glMaterialxv(GLenum face, GLenum pname, const GLfixed *params) {
10993    GLMessage glmsg;
10994    GLTraceContext *glContext = getGLTraceContext();
10995
10996    glmsg.set_function(GLMessage::glMaterialxv);
10997
10998    // copy argument face
10999    GLMessage_DataType *arg_face = glmsg.add_args();
11000    arg_face->set_isarray(false);
11001    arg_face->set_type(GLMessage::DataType::ENUM);
11002    arg_face->add_intvalue((int)face);
11003
11004    // copy argument pname
11005    GLMessage_DataType *arg_pname = glmsg.add_args();
11006    arg_pname->set_isarray(false);
11007    arg_pname->set_type(GLMessage::DataType::ENUM);
11008    arg_pname->add_intvalue((int)pname);
11009
11010    // copy argument params
11011    GLMessage_DataType *arg_params = glmsg.add_args();
11012    arg_params->set_isarray(false);
11013    arg_params->set_type(GLMessage::DataType::INT);
11014    arg_params->add_intvalue((int)params);
11015
11016    // call function
11017    nsecs_t start_time = systemTime();
11018    glContext->hooks->gl.glMaterialxv(face, pname, params);
11019    nsecs_t end_time = systemTime();
11020
11021    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11022    glContext->traceGLMessage(&glmsg);
11023}
11024
11025void GLTrace_glMatrixMode(GLenum mode) {
11026    GLMessage glmsg;
11027    GLTraceContext *glContext = getGLTraceContext();
11028
11029    glmsg.set_function(GLMessage::glMatrixMode);
11030
11031    // copy argument mode
11032    GLMessage_DataType *arg_mode = glmsg.add_args();
11033    arg_mode->set_isarray(false);
11034    arg_mode->set_type(GLMessage::DataType::ENUM);
11035    arg_mode->add_intvalue((int)mode);
11036
11037    // call function
11038    nsecs_t start_time = systemTime();
11039    glContext->hooks->gl.glMatrixMode(mode);
11040    nsecs_t end_time = systemTime();
11041
11042    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11043    glContext->traceGLMessage(&glmsg);
11044}
11045
11046void GLTrace_glMultMatrixx(const GLfixed *m) {
11047    GLMessage glmsg;
11048    GLTraceContext *glContext = getGLTraceContext();
11049
11050    glmsg.set_function(GLMessage::glMultMatrixx);
11051
11052    // copy argument m
11053    GLMessage_DataType *arg_m = glmsg.add_args();
11054    arg_m->set_isarray(false);
11055    arg_m->set_type(GLMessage::DataType::INT);
11056    arg_m->add_intvalue((int)m);
11057
11058    // call function
11059    nsecs_t start_time = systemTime();
11060    glContext->hooks->gl.glMultMatrixx(m);
11061    nsecs_t end_time = systemTime();
11062
11063    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11064    glContext->traceGLMessage(&glmsg);
11065}
11066
11067void GLTrace_glMultiTexCoord4x(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q) {
11068    GLMessage glmsg;
11069    GLTraceContext *glContext = getGLTraceContext();
11070
11071    glmsg.set_function(GLMessage::glMultiTexCoord4x);
11072
11073    // copy argument target
11074    GLMessage_DataType *arg_target = glmsg.add_args();
11075    arg_target->set_isarray(false);
11076    arg_target->set_type(GLMessage::DataType::ENUM);
11077    arg_target->add_intvalue((int)target);
11078
11079    // copy argument s
11080    GLMessage_DataType *arg_s = glmsg.add_args();
11081    arg_s->set_isarray(false);
11082    arg_s->set_type(GLMessage::DataType::INT);
11083    arg_s->add_intvalue(s);
11084
11085    // copy argument t
11086    GLMessage_DataType *arg_t = glmsg.add_args();
11087    arg_t->set_isarray(false);
11088    arg_t->set_type(GLMessage::DataType::INT);
11089    arg_t->add_intvalue(t);
11090
11091    // copy argument r
11092    GLMessage_DataType *arg_r = glmsg.add_args();
11093    arg_r->set_isarray(false);
11094    arg_r->set_type(GLMessage::DataType::INT);
11095    arg_r->add_intvalue(r);
11096
11097    // copy argument q
11098    GLMessage_DataType *arg_q = glmsg.add_args();
11099    arg_q->set_isarray(false);
11100    arg_q->set_type(GLMessage::DataType::INT);
11101    arg_q->add_intvalue(q);
11102
11103    // call function
11104    nsecs_t start_time = systemTime();
11105    glContext->hooks->gl.glMultiTexCoord4x(target, s, t, r, q);
11106    nsecs_t end_time = systemTime();
11107
11108    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11109    glContext->traceGLMessage(&glmsg);
11110}
11111
11112void GLTrace_glNormal3x(GLfixed nx, GLfixed ny, GLfixed nz) {
11113    GLMessage glmsg;
11114    GLTraceContext *glContext = getGLTraceContext();
11115
11116    glmsg.set_function(GLMessage::glNormal3x);
11117
11118    // copy argument nx
11119    GLMessage_DataType *arg_nx = glmsg.add_args();
11120    arg_nx->set_isarray(false);
11121    arg_nx->set_type(GLMessage::DataType::INT);
11122    arg_nx->add_intvalue(nx);
11123
11124    // copy argument ny
11125    GLMessage_DataType *arg_ny = glmsg.add_args();
11126    arg_ny->set_isarray(false);
11127    arg_ny->set_type(GLMessage::DataType::INT);
11128    arg_ny->add_intvalue(ny);
11129
11130    // copy argument nz
11131    GLMessage_DataType *arg_nz = glmsg.add_args();
11132    arg_nz->set_isarray(false);
11133    arg_nz->set_type(GLMessage::DataType::INT);
11134    arg_nz->add_intvalue(nz);
11135
11136    // call function
11137    nsecs_t start_time = systemTime();
11138    glContext->hooks->gl.glNormal3x(nx, ny, nz);
11139    nsecs_t end_time = systemTime();
11140
11141    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11142    glContext->traceGLMessage(&glmsg);
11143}
11144
11145void GLTrace_glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) {
11146    GLMessage glmsg;
11147    GLTraceContext *glContext = getGLTraceContext();
11148
11149    glmsg.set_function(GLMessage::glNormalPointer);
11150
11151    // copy argument type
11152    GLMessage_DataType *arg_type = glmsg.add_args();
11153    arg_type->set_isarray(false);
11154    arg_type->set_type(GLMessage::DataType::ENUM);
11155    arg_type->add_intvalue((int)type);
11156
11157    // copy argument stride
11158    GLMessage_DataType *arg_stride = glmsg.add_args();
11159    arg_stride->set_isarray(false);
11160    arg_stride->set_type(GLMessage::DataType::INT);
11161    arg_stride->add_intvalue(stride);
11162
11163    // copy argument pointer
11164    GLMessage_DataType *arg_pointer = glmsg.add_args();
11165    arg_pointer->set_isarray(false);
11166    arg_pointer->set_type(GLMessage::DataType::INT);
11167    arg_pointer->add_intvalue((int)pointer);
11168
11169    // call function
11170    nsecs_t start_time = systemTime();
11171    glContext->hooks->gl.glNormalPointer(type, stride, pointer);
11172    nsecs_t end_time = systemTime();
11173
11174    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11175    glContext->traceGLMessage(&glmsg);
11176}
11177
11178void GLTrace_glOrthox(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
11179    GLMessage glmsg;
11180    GLTraceContext *glContext = getGLTraceContext();
11181
11182    glmsg.set_function(GLMessage::glOrthox);
11183
11184    // copy argument left
11185    GLMessage_DataType *arg_left = glmsg.add_args();
11186    arg_left->set_isarray(false);
11187    arg_left->set_type(GLMessage::DataType::INT);
11188    arg_left->add_intvalue(left);
11189
11190    // copy argument right
11191    GLMessage_DataType *arg_right = glmsg.add_args();
11192    arg_right->set_isarray(false);
11193    arg_right->set_type(GLMessage::DataType::INT);
11194    arg_right->add_intvalue(right);
11195
11196    // copy argument bottom
11197    GLMessage_DataType *arg_bottom = glmsg.add_args();
11198    arg_bottom->set_isarray(false);
11199    arg_bottom->set_type(GLMessage::DataType::INT);
11200    arg_bottom->add_intvalue(bottom);
11201
11202    // copy argument top
11203    GLMessage_DataType *arg_top = glmsg.add_args();
11204    arg_top->set_isarray(false);
11205    arg_top->set_type(GLMessage::DataType::INT);
11206    arg_top->add_intvalue(top);
11207
11208    // copy argument zNear
11209    GLMessage_DataType *arg_zNear = glmsg.add_args();
11210    arg_zNear->set_isarray(false);
11211    arg_zNear->set_type(GLMessage::DataType::INT);
11212    arg_zNear->add_intvalue(zNear);
11213
11214    // copy argument zFar
11215    GLMessage_DataType *arg_zFar = glmsg.add_args();
11216    arg_zFar->set_isarray(false);
11217    arg_zFar->set_type(GLMessage::DataType::INT);
11218    arg_zFar->add_intvalue(zFar);
11219
11220    // call function
11221    nsecs_t start_time = systemTime();
11222    glContext->hooks->gl.glOrthox(left, right, bottom, top, zNear, zFar);
11223    nsecs_t end_time = systemTime();
11224
11225    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11226    glContext->traceGLMessage(&glmsg);
11227}
11228
11229void GLTrace_glPointParameterx(GLenum pname, GLfixed param) {
11230    GLMessage glmsg;
11231    GLTraceContext *glContext = getGLTraceContext();
11232
11233    glmsg.set_function(GLMessage::glPointParameterx);
11234
11235    // copy argument pname
11236    GLMessage_DataType *arg_pname = glmsg.add_args();
11237    arg_pname->set_isarray(false);
11238    arg_pname->set_type(GLMessage::DataType::ENUM);
11239    arg_pname->add_intvalue((int)pname);
11240
11241    // copy argument param
11242    GLMessage_DataType *arg_param = glmsg.add_args();
11243    arg_param->set_isarray(false);
11244    arg_param->set_type(GLMessage::DataType::INT);
11245    arg_param->add_intvalue(param);
11246
11247    // call function
11248    nsecs_t start_time = systemTime();
11249    glContext->hooks->gl.glPointParameterx(pname, param);
11250    nsecs_t end_time = systemTime();
11251
11252    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11253    glContext->traceGLMessage(&glmsg);
11254}
11255
11256void GLTrace_glPointParameterxv(GLenum pname, const GLfixed *params) {
11257    GLMessage glmsg;
11258    GLTraceContext *glContext = getGLTraceContext();
11259
11260    glmsg.set_function(GLMessage::glPointParameterxv);
11261
11262    // copy argument pname
11263    GLMessage_DataType *arg_pname = glmsg.add_args();
11264    arg_pname->set_isarray(false);
11265    arg_pname->set_type(GLMessage::DataType::ENUM);
11266    arg_pname->add_intvalue((int)pname);
11267
11268    // copy argument params
11269    GLMessage_DataType *arg_params = glmsg.add_args();
11270    arg_params->set_isarray(false);
11271    arg_params->set_type(GLMessage::DataType::INT);
11272    arg_params->add_intvalue((int)params);
11273
11274    // call function
11275    nsecs_t start_time = systemTime();
11276    glContext->hooks->gl.glPointParameterxv(pname, params);
11277    nsecs_t end_time = systemTime();
11278
11279    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11280    glContext->traceGLMessage(&glmsg);
11281}
11282
11283void GLTrace_glPointSizex(GLfixed size) {
11284    GLMessage glmsg;
11285    GLTraceContext *glContext = getGLTraceContext();
11286
11287    glmsg.set_function(GLMessage::glPointSizex);
11288
11289    // copy argument size
11290    GLMessage_DataType *arg_size = glmsg.add_args();
11291    arg_size->set_isarray(false);
11292    arg_size->set_type(GLMessage::DataType::INT);
11293    arg_size->add_intvalue(size);
11294
11295    // call function
11296    nsecs_t start_time = systemTime();
11297    glContext->hooks->gl.glPointSizex(size);
11298    nsecs_t end_time = systemTime();
11299
11300    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11301    glContext->traceGLMessage(&glmsg);
11302}
11303
11304void GLTrace_glPolygonOffsetx(GLfixed factor, GLfixed units) {
11305    GLMessage glmsg;
11306    GLTraceContext *glContext = getGLTraceContext();
11307
11308    glmsg.set_function(GLMessage::glPolygonOffsetx);
11309
11310    // copy argument factor
11311    GLMessage_DataType *arg_factor = glmsg.add_args();
11312    arg_factor->set_isarray(false);
11313    arg_factor->set_type(GLMessage::DataType::INT);
11314    arg_factor->add_intvalue(factor);
11315
11316    // copy argument units
11317    GLMessage_DataType *arg_units = glmsg.add_args();
11318    arg_units->set_isarray(false);
11319    arg_units->set_type(GLMessage::DataType::INT);
11320    arg_units->add_intvalue(units);
11321
11322    // call function
11323    nsecs_t start_time = systemTime();
11324    glContext->hooks->gl.glPolygonOffsetx(factor, units);
11325    nsecs_t end_time = systemTime();
11326
11327    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11328    glContext->traceGLMessage(&glmsg);
11329}
11330
11331void GLTrace_glPopMatrix(void) {
11332    GLMessage glmsg;
11333    GLTraceContext *glContext = getGLTraceContext();
11334
11335    glmsg.set_function(GLMessage::glPopMatrix);
11336
11337    // call function
11338    nsecs_t start_time = systemTime();
11339    glContext->hooks->gl.glPopMatrix();
11340    nsecs_t end_time = systemTime();
11341
11342    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11343    glContext->traceGLMessage(&glmsg);
11344}
11345
11346void GLTrace_glPushMatrix(void) {
11347    GLMessage glmsg;
11348    GLTraceContext *glContext = getGLTraceContext();
11349
11350    glmsg.set_function(GLMessage::glPushMatrix);
11351
11352    // call function
11353    nsecs_t start_time = systemTime();
11354    glContext->hooks->gl.glPushMatrix();
11355    nsecs_t end_time = systemTime();
11356
11357    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11358    glContext->traceGLMessage(&glmsg);
11359}
11360
11361void GLTrace_glRotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z) {
11362    GLMessage glmsg;
11363    GLTraceContext *glContext = getGLTraceContext();
11364
11365    glmsg.set_function(GLMessage::glRotatex);
11366
11367    // copy argument angle
11368    GLMessage_DataType *arg_angle = glmsg.add_args();
11369    arg_angle->set_isarray(false);
11370    arg_angle->set_type(GLMessage::DataType::INT);
11371    arg_angle->add_intvalue(angle);
11372
11373    // copy argument x
11374    GLMessage_DataType *arg_x = glmsg.add_args();
11375    arg_x->set_isarray(false);
11376    arg_x->set_type(GLMessage::DataType::INT);
11377    arg_x->add_intvalue(x);
11378
11379    // copy argument y
11380    GLMessage_DataType *arg_y = glmsg.add_args();
11381    arg_y->set_isarray(false);
11382    arg_y->set_type(GLMessage::DataType::INT);
11383    arg_y->add_intvalue(y);
11384
11385    // copy argument z
11386    GLMessage_DataType *arg_z = glmsg.add_args();
11387    arg_z->set_isarray(false);
11388    arg_z->set_type(GLMessage::DataType::INT);
11389    arg_z->add_intvalue(z);
11390
11391    // call function
11392    nsecs_t start_time = systemTime();
11393    glContext->hooks->gl.glRotatex(angle, x, y, z);
11394    nsecs_t end_time = systemTime();
11395
11396    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11397    glContext->traceGLMessage(&glmsg);
11398}
11399
11400void GLTrace_glSampleCoveragex(GLclampx value, GLboolean invert) {
11401    GLMessage glmsg;
11402    GLTraceContext *glContext = getGLTraceContext();
11403
11404    glmsg.set_function(GLMessage::glSampleCoveragex);
11405
11406    // copy argument value
11407    GLMessage_DataType *arg_value = glmsg.add_args();
11408    arg_value->set_isarray(false);
11409    arg_value->set_type(GLMessage::DataType::INT);
11410    arg_value->add_intvalue(value);
11411
11412    // copy argument invert
11413    GLMessage_DataType *arg_invert = glmsg.add_args();
11414    arg_invert->set_isarray(false);
11415    arg_invert->set_type(GLMessage::DataType::BOOL);
11416    arg_invert->add_boolvalue(invert);
11417
11418    // call function
11419    nsecs_t start_time = systemTime();
11420    glContext->hooks->gl.glSampleCoveragex(value, invert);
11421    nsecs_t end_time = systemTime();
11422
11423    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11424    glContext->traceGLMessage(&glmsg);
11425}
11426
11427void GLTrace_glScalex(GLfixed x, GLfixed y, GLfixed z) {
11428    GLMessage glmsg;
11429    GLTraceContext *glContext = getGLTraceContext();
11430
11431    glmsg.set_function(GLMessage::glScalex);
11432
11433    // copy argument x
11434    GLMessage_DataType *arg_x = glmsg.add_args();
11435    arg_x->set_isarray(false);
11436    arg_x->set_type(GLMessage::DataType::INT);
11437    arg_x->add_intvalue(x);
11438
11439    // copy argument y
11440    GLMessage_DataType *arg_y = glmsg.add_args();
11441    arg_y->set_isarray(false);
11442    arg_y->set_type(GLMessage::DataType::INT);
11443    arg_y->add_intvalue(y);
11444
11445    // copy argument z
11446    GLMessage_DataType *arg_z = glmsg.add_args();
11447    arg_z->set_isarray(false);
11448    arg_z->set_type(GLMessage::DataType::INT);
11449    arg_z->add_intvalue(z);
11450
11451    // call function
11452    nsecs_t start_time = systemTime();
11453    glContext->hooks->gl.glScalex(x, y, z);
11454    nsecs_t end_time = systemTime();
11455
11456    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11457    glContext->traceGLMessage(&glmsg);
11458}
11459
11460void GLTrace_glShadeModel(GLenum mode) {
11461    GLMessage glmsg;
11462    GLTraceContext *glContext = getGLTraceContext();
11463
11464    glmsg.set_function(GLMessage::glShadeModel);
11465
11466    // copy argument mode
11467    GLMessage_DataType *arg_mode = glmsg.add_args();
11468    arg_mode->set_isarray(false);
11469    arg_mode->set_type(GLMessage::DataType::ENUM);
11470    arg_mode->add_intvalue((int)mode);
11471
11472    // call function
11473    nsecs_t start_time = systemTime();
11474    glContext->hooks->gl.glShadeModel(mode);
11475    nsecs_t end_time = systemTime();
11476
11477    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11478    glContext->traceGLMessage(&glmsg);
11479}
11480
11481void GLTrace_glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
11482    GLMessage glmsg;
11483    GLTraceContext *glContext = getGLTraceContext();
11484
11485    glmsg.set_function(GLMessage::glTexCoordPointer);
11486
11487    // copy argument size
11488    GLMessage_DataType *arg_size = glmsg.add_args();
11489    arg_size->set_isarray(false);
11490    arg_size->set_type(GLMessage::DataType::INT);
11491    arg_size->add_intvalue(size);
11492
11493    // copy argument type
11494    GLMessage_DataType *arg_type = glmsg.add_args();
11495    arg_type->set_isarray(false);
11496    arg_type->set_type(GLMessage::DataType::ENUM);
11497    arg_type->add_intvalue((int)type);
11498
11499    // copy argument stride
11500    GLMessage_DataType *arg_stride = glmsg.add_args();
11501    arg_stride->set_isarray(false);
11502    arg_stride->set_type(GLMessage::DataType::INT);
11503    arg_stride->add_intvalue(stride);
11504
11505    // copy argument pointer
11506    GLMessage_DataType *arg_pointer = glmsg.add_args();
11507    arg_pointer->set_isarray(false);
11508    arg_pointer->set_type(GLMessage::DataType::INT);
11509    arg_pointer->add_intvalue((int)pointer);
11510
11511    // call function
11512    nsecs_t start_time = systemTime();
11513    glContext->hooks->gl.glTexCoordPointer(size, type, stride, pointer);
11514    nsecs_t end_time = systemTime();
11515
11516    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11517    glContext->traceGLMessage(&glmsg);
11518}
11519
11520void GLTrace_glTexEnvi(GLenum target, GLenum pname, GLint param) {
11521    GLMessage glmsg;
11522    GLTraceContext *glContext = getGLTraceContext();
11523
11524    glmsg.set_function(GLMessage::glTexEnvi);
11525
11526    // copy argument target
11527    GLMessage_DataType *arg_target = glmsg.add_args();
11528    arg_target->set_isarray(false);
11529    arg_target->set_type(GLMessage::DataType::ENUM);
11530    arg_target->add_intvalue((int)target);
11531
11532    // copy argument pname
11533    GLMessage_DataType *arg_pname = glmsg.add_args();
11534    arg_pname->set_isarray(false);
11535    arg_pname->set_type(GLMessage::DataType::ENUM);
11536    arg_pname->add_intvalue((int)pname);
11537
11538    // copy argument param
11539    GLMessage_DataType *arg_param = glmsg.add_args();
11540    arg_param->set_isarray(false);
11541    arg_param->set_type(GLMessage::DataType::INT);
11542    arg_param->add_intvalue(param);
11543
11544    // call function
11545    nsecs_t start_time = systemTime();
11546    glContext->hooks->gl.glTexEnvi(target, pname, param);
11547    nsecs_t end_time = systemTime();
11548
11549    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11550    glContext->traceGLMessage(&glmsg);
11551}
11552
11553void GLTrace_glTexEnvx(GLenum target, GLenum pname, GLfixed param) {
11554    GLMessage glmsg;
11555    GLTraceContext *glContext = getGLTraceContext();
11556
11557    glmsg.set_function(GLMessage::glTexEnvx);
11558
11559    // copy argument target
11560    GLMessage_DataType *arg_target = glmsg.add_args();
11561    arg_target->set_isarray(false);
11562    arg_target->set_type(GLMessage::DataType::ENUM);
11563    arg_target->add_intvalue((int)target);
11564
11565    // copy argument pname
11566    GLMessage_DataType *arg_pname = glmsg.add_args();
11567    arg_pname->set_isarray(false);
11568    arg_pname->set_type(GLMessage::DataType::ENUM);
11569    arg_pname->add_intvalue((int)pname);
11570
11571    // copy argument param
11572    GLMessage_DataType *arg_param = glmsg.add_args();
11573    arg_param->set_isarray(false);
11574    arg_param->set_type(GLMessage::DataType::INT);
11575    arg_param->add_intvalue(param);
11576
11577    // call function
11578    nsecs_t start_time = systemTime();
11579    glContext->hooks->gl.glTexEnvx(target, pname, param);
11580    nsecs_t end_time = systemTime();
11581
11582    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11583    glContext->traceGLMessage(&glmsg);
11584}
11585
11586void GLTrace_glTexEnviv(GLenum target, GLenum pname, const GLint *params) {
11587    GLMessage glmsg;
11588    GLTraceContext *glContext = getGLTraceContext();
11589
11590    glmsg.set_function(GLMessage::glTexEnviv);
11591
11592    // copy argument target
11593    GLMessage_DataType *arg_target = glmsg.add_args();
11594    arg_target->set_isarray(false);
11595    arg_target->set_type(GLMessage::DataType::ENUM);
11596    arg_target->add_intvalue((int)target);
11597
11598    // copy argument pname
11599    GLMessage_DataType *arg_pname = glmsg.add_args();
11600    arg_pname->set_isarray(false);
11601    arg_pname->set_type(GLMessage::DataType::ENUM);
11602    arg_pname->add_intvalue((int)pname);
11603
11604    // copy argument params
11605    GLMessage_DataType *arg_params = glmsg.add_args();
11606    arg_params->set_isarray(false);
11607    arg_params->set_type(GLMessage::DataType::INT);
11608    arg_params->add_intvalue((int)params);
11609
11610    // call function
11611    nsecs_t start_time = systemTime();
11612    glContext->hooks->gl.glTexEnviv(target, pname, params);
11613    nsecs_t end_time = systemTime();
11614
11615    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11616    glContext->traceGLMessage(&glmsg);
11617}
11618
11619void GLTrace_glTexEnvxv(GLenum target, GLenum pname, const GLfixed *params) {
11620    GLMessage glmsg;
11621    GLTraceContext *glContext = getGLTraceContext();
11622
11623    glmsg.set_function(GLMessage::glTexEnvxv);
11624
11625    // copy argument target
11626    GLMessage_DataType *arg_target = glmsg.add_args();
11627    arg_target->set_isarray(false);
11628    arg_target->set_type(GLMessage::DataType::ENUM);
11629    arg_target->add_intvalue((int)target);
11630
11631    // copy argument pname
11632    GLMessage_DataType *arg_pname = glmsg.add_args();
11633    arg_pname->set_isarray(false);
11634    arg_pname->set_type(GLMessage::DataType::ENUM);
11635    arg_pname->add_intvalue((int)pname);
11636
11637    // copy argument params
11638    GLMessage_DataType *arg_params = glmsg.add_args();
11639    arg_params->set_isarray(false);
11640    arg_params->set_type(GLMessage::DataType::INT);
11641    arg_params->add_intvalue((int)params);
11642
11643    // call function
11644    nsecs_t start_time = systemTime();
11645    glContext->hooks->gl.glTexEnvxv(target, pname, params);
11646    nsecs_t end_time = systemTime();
11647
11648    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11649    glContext->traceGLMessage(&glmsg);
11650}
11651
11652void GLTrace_glTexParameterx(GLenum target, GLenum pname, GLfixed param) {
11653    GLMessage glmsg;
11654    GLTraceContext *glContext = getGLTraceContext();
11655
11656    glmsg.set_function(GLMessage::glTexParameterx);
11657
11658    // copy argument target
11659    GLMessage_DataType *arg_target = glmsg.add_args();
11660    arg_target->set_isarray(false);
11661    arg_target->set_type(GLMessage::DataType::ENUM);
11662    arg_target->add_intvalue((int)target);
11663
11664    // copy argument pname
11665    GLMessage_DataType *arg_pname = glmsg.add_args();
11666    arg_pname->set_isarray(false);
11667    arg_pname->set_type(GLMessage::DataType::ENUM);
11668    arg_pname->add_intvalue((int)pname);
11669
11670    // copy argument param
11671    GLMessage_DataType *arg_param = glmsg.add_args();
11672    arg_param->set_isarray(false);
11673    arg_param->set_type(GLMessage::DataType::INT);
11674    arg_param->add_intvalue(param);
11675
11676    // call function
11677    nsecs_t start_time = systemTime();
11678    glContext->hooks->gl.glTexParameterx(target, pname, param);
11679    nsecs_t end_time = systemTime();
11680
11681    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11682    glContext->traceGLMessage(&glmsg);
11683}
11684
11685void GLTrace_glTexParameterxv(GLenum target, GLenum pname, const GLfixed *params) {
11686    GLMessage glmsg;
11687    GLTraceContext *glContext = getGLTraceContext();
11688
11689    glmsg.set_function(GLMessage::glTexParameterxv);
11690
11691    // copy argument target
11692    GLMessage_DataType *arg_target = glmsg.add_args();
11693    arg_target->set_isarray(false);
11694    arg_target->set_type(GLMessage::DataType::ENUM);
11695    arg_target->add_intvalue((int)target);
11696
11697    // copy argument pname
11698    GLMessage_DataType *arg_pname = glmsg.add_args();
11699    arg_pname->set_isarray(false);
11700    arg_pname->set_type(GLMessage::DataType::ENUM);
11701    arg_pname->add_intvalue((int)pname);
11702
11703    // copy argument params
11704    GLMessage_DataType *arg_params = glmsg.add_args();
11705    arg_params->set_isarray(false);
11706    arg_params->set_type(GLMessage::DataType::INT);
11707    arg_params->add_intvalue((int)params);
11708
11709    // call function
11710    nsecs_t start_time = systemTime();
11711    glContext->hooks->gl.glTexParameterxv(target, pname, params);
11712    nsecs_t end_time = systemTime();
11713
11714    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11715    glContext->traceGLMessage(&glmsg);
11716}
11717
11718void GLTrace_glTranslatex(GLfixed x, GLfixed y, GLfixed z) {
11719    GLMessage glmsg;
11720    GLTraceContext *glContext = getGLTraceContext();
11721
11722    glmsg.set_function(GLMessage::glTranslatex);
11723
11724    // copy argument x
11725    GLMessage_DataType *arg_x = glmsg.add_args();
11726    arg_x->set_isarray(false);
11727    arg_x->set_type(GLMessage::DataType::INT);
11728    arg_x->add_intvalue(x);
11729
11730    // copy argument y
11731    GLMessage_DataType *arg_y = glmsg.add_args();
11732    arg_y->set_isarray(false);
11733    arg_y->set_type(GLMessage::DataType::INT);
11734    arg_y->add_intvalue(y);
11735
11736    // copy argument z
11737    GLMessage_DataType *arg_z = glmsg.add_args();
11738    arg_z->set_isarray(false);
11739    arg_z->set_type(GLMessage::DataType::INT);
11740    arg_z->add_intvalue(z);
11741
11742    // call function
11743    nsecs_t start_time = systemTime();
11744    glContext->hooks->gl.glTranslatex(x, y, z);
11745    nsecs_t end_time = systemTime();
11746
11747    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11748    glContext->traceGLMessage(&glmsg);
11749}
11750
11751void GLTrace_glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
11752    GLMessage glmsg;
11753    GLTraceContext *glContext = getGLTraceContext();
11754
11755    glmsg.set_function(GLMessage::glVertexPointer);
11756
11757    // copy argument size
11758    GLMessage_DataType *arg_size = glmsg.add_args();
11759    arg_size->set_isarray(false);
11760    arg_size->set_type(GLMessage::DataType::INT);
11761    arg_size->add_intvalue(size);
11762
11763    // copy argument type
11764    GLMessage_DataType *arg_type = glmsg.add_args();
11765    arg_type->set_isarray(false);
11766    arg_type->set_type(GLMessage::DataType::ENUM);
11767    arg_type->add_intvalue((int)type);
11768
11769    // copy argument stride
11770    GLMessage_DataType *arg_stride = glmsg.add_args();
11771    arg_stride->set_isarray(false);
11772    arg_stride->set_type(GLMessage::DataType::INT);
11773    arg_stride->add_intvalue(stride);
11774
11775    // copy argument pointer
11776    GLMessage_DataType *arg_pointer = glmsg.add_args();
11777    arg_pointer->set_isarray(false);
11778    arg_pointer->set_type(GLMessage::DataType::INT);
11779    arg_pointer->add_intvalue((int)pointer);
11780
11781    // call function
11782    nsecs_t start_time = systemTime();
11783    glContext->hooks->gl.glVertexPointer(size, type, stride, pointer);
11784    nsecs_t end_time = systemTime();
11785
11786    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11787    glContext->traceGLMessage(&glmsg);
11788}
11789
11790void GLTrace_glPointSizePointerOES(GLenum type, GLsizei stride, const GLvoid *pointer) {
11791    GLMessage glmsg;
11792    GLTraceContext *glContext = getGLTraceContext();
11793
11794    glmsg.set_function(GLMessage::glPointSizePointerOES);
11795
11796    // copy argument type
11797    GLMessage_DataType *arg_type = glmsg.add_args();
11798    arg_type->set_isarray(false);
11799    arg_type->set_type(GLMessage::DataType::ENUM);
11800    arg_type->add_intvalue((int)type);
11801
11802    // copy argument stride
11803    GLMessage_DataType *arg_stride = glmsg.add_args();
11804    arg_stride->set_isarray(false);
11805    arg_stride->set_type(GLMessage::DataType::INT);
11806    arg_stride->add_intvalue(stride);
11807
11808    // copy argument pointer
11809    GLMessage_DataType *arg_pointer = glmsg.add_args();
11810    arg_pointer->set_isarray(false);
11811    arg_pointer->set_type(GLMessage::DataType::INT);
11812    arg_pointer->add_intvalue((int)pointer);
11813
11814    // call function
11815    nsecs_t start_time = systemTime();
11816    glContext->hooks->gl.glPointSizePointerOES(type, stride, pointer);
11817    nsecs_t end_time = systemTime();
11818
11819    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11820    glContext->traceGLMessage(&glmsg);
11821}
11822
11823
11824// Definitions for GL1Ext APIs
11825
11826void GLTrace_glBlendEquationSeparateOES(GLenum modeRGB, GLenum modeAlpha) {
11827    GLMessage glmsg;
11828    GLTraceContext *glContext = getGLTraceContext();
11829
11830    glmsg.set_function(GLMessage::glBlendEquationSeparateOES);
11831
11832    // copy argument modeRGB
11833    GLMessage_DataType *arg_modeRGB = glmsg.add_args();
11834    arg_modeRGB->set_isarray(false);
11835    arg_modeRGB->set_type(GLMessage::DataType::ENUM);
11836    arg_modeRGB->add_intvalue((int)modeRGB);
11837
11838    // copy argument modeAlpha
11839    GLMessage_DataType *arg_modeAlpha = glmsg.add_args();
11840    arg_modeAlpha->set_isarray(false);
11841    arg_modeAlpha->set_type(GLMessage::DataType::ENUM);
11842    arg_modeAlpha->add_intvalue((int)modeAlpha);
11843
11844    // call function
11845    nsecs_t start_time = systemTime();
11846    glContext->hooks->gl.glBlendEquationSeparateOES(modeRGB, modeAlpha);
11847    nsecs_t end_time = systemTime();
11848
11849    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11850    glContext->traceGLMessage(&glmsg);
11851}
11852
11853void GLTrace_glBlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) {
11854    GLMessage glmsg;
11855    GLTraceContext *glContext = getGLTraceContext();
11856
11857    glmsg.set_function(GLMessage::glBlendFuncSeparateOES);
11858
11859    // copy argument srcRGB
11860    GLMessage_DataType *arg_srcRGB = glmsg.add_args();
11861    arg_srcRGB->set_isarray(false);
11862    arg_srcRGB->set_type(GLMessage::DataType::ENUM);
11863    arg_srcRGB->add_intvalue((int)srcRGB);
11864
11865    // copy argument dstRGB
11866    GLMessage_DataType *arg_dstRGB = glmsg.add_args();
11867    arg_dstRGB->set_isarray(false);
11868    arg_dstRGB->set_type(GLMessage::DataType::ENUM);
11869    arg_dstRGB->add_intvalue((int)dstRGB);
11870
11871    // copy argument srcAlpha
11872    GLMessage_DataType *arg_srcAlpha = glmsg.add_args();
11873    arg_srcAlpha->set_isarray(false);
11874    arg_srcAlpha->set_type(GLMessage::DataType::ENUM);
11875    arg_srcAlpha->add_intvalue((int)srcAlpha);
11876
11877    // copy argument dstAlpha
11878    GLMessage_DataType *arg_dstAlpha = glmsg.add_args();
11879    arg_dstAlpha->set_isarray(false);
11880    arg_dstAlpha->set_type(GLMessage::DataType::ENUM);
11881    arg_dstAlpha->add_intvalue((int)dstAlpha);
11882
11883    // call function
11884    nsecs_t start_time = systemTime();
11885    glContext->hooks->gl.glBlendFuncSeparateOES(srcRGB, dstRGB, srcAlpha, dstAlpha);
11886    nsecs_t end_time = systemTime();
11887
11888    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11889    glContext->traceGLMessage(&glmsg);
11890}
11891
11892void GLTrace_glBlendEquationOES(GLenum mode) {
11893    GLMessage glmsg;
11894    GLTraceContext *glContext = getGLTraceContext();
11895
11896    glmsg.set_function(GLMessage::glBlendEquationOES);
11897
11898    // copy argument mode
11899    GLMessage_DataType *arg_mode = glmsg.add_args();
11900    arg_mode->set_isarray(false);
11901    arg_mode->set_type(GLMessage::DataType::ENUM);
11902    arg_mode->add_intvalue((int)mode);
11903
11904    // call function
11905    nsecs_t start_time = systemTime();
11906    glContext->hooks->gl.glBlendEquationOES(mode);
11907    nsecs_t end_time = systemTime();
11908
11909    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11910    glContext->traceGLMessage(&glmsg);
11911}
11912
11913void GLTrace_glDrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height) {
11914    GLMessage glmsg;
11915    GLTraceContext *glContext = getGLTraceContext();
11916
11917    glmsg.set_function(GLMessage::glDrawTexsOES);
11918
11919    // copy argument x
11920    GLMessage_DataType *arg_x = glmsg.add_args();
11921    arg_x->set_isarray(false);
11922    arg_x->set_type(GLMessage::DataType::INT);
11923    arg_x->add_intvalue(x);
11924
11925    // copy argument y
11926    GLMessage_DataType *arg_y = glmsg.add_args();
11927    arg_y->set_isarray(false);
11928    arg_y->set_type(GLMessage::DataType::INT);
11929    arg_y->add_intvalue(y);
11930
11931    // copy argument z
11932    GLMessage_DataType *arg_z = glmsg.add_args();
11933    arg_z->set_isarray(false);
11934    arg_z->set_type(GLMessage::DataType::INT);
11935    arg_z->add_intvalue(z);
11936
11937    // copy argument width
11938    GLMessage_DataType *arg_width = glmsg.add_args();
11939    arg_width->set_isarray(false);
11940    arg_width->set_type(GLMessage::DataType::INT);
11941    arg_width->add_intvalue(width);
11942
11943    // copy argument height
11944    GLMessage_DataType *arg_height = glmsg.add_args();
11945    arg_height->set_isarray(false);
11946    arg_height->set_type(GLMessage::DataType::INT);
11947    arg_height->add_intvalue(height);
11948
11949    // call function
11950    nsecs_t start_time = systemTime();
11951    glContext->hooks->gl.glDrawTexsOES(x, y, z, width, height);
11952    nsecs_t end_time = systemTime();
11953
11954    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11955    glContext->traceGLMessage(&glmsg);
11956}
11957
11958void GLTrace_glDrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height) {
11959    GLMessage glmsg;
11960    GLTraceContext *glContext = getGLTraceContext();
11961
11962    glmsg.set_function(GLMessage::glDrawTexiOES);
11963
11964    // copy argument x
11965    GLMessage_DataType *arg_x = glmsg.add_args();
11966    arg_x->set_isarray(false);
11967    arg_x->set_type(GLMessage::DataType::INT);
11968    arg_x->add_intvalue(x);
11969
11970    // copy argument y
11971    GLMessage_DataType *arg_y = glmsg.add_args();
11972    arg_y->set_isarray(false);
11973    arg_y->set_type(GLMessage::DataType::INT);
11974    arg_y->add_intvalue(y);
11975
11976    // copy argument z
11977    GLMessage_DataType *arg_z = glmsg.add_args();
11978    arg_z->set_isarray(false);
11979    arg_z->set_type(GLMessage::DataType::INT);
11980    arg_z->add_intvalue(z);
11981
11982    // copy argument width
11983    GLMessage_DataType *arg_width = glmsg.add_args();
11984    arg_width->set_isarray(false);
11985    arg_width->set_type(GLMessage::DataType::INT);
11986    arg_width->add_intvalue(width);
11987
11988    // copy argument height
11989    GLMessage_DataType *arg_height = glmsg.add_args();
11990    arg_height->set_isarray(false);
11991    arg_height->set_type(GLMessage::DataType::INT);
11992    arg_height->add_intvalue(height);
11993
11994    // call function
11995    nsecs_t start_time = systemTime();
11996    glContext->hooks->gl.glDrawTexiOES(x, y, z, width, height);
11997    nsecs_t end_time = systemTime();
11998
11999    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12000    glContext->traceGLMessage(&glmsg);
12001}
12002
12003void GLTrace_glDrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height) {
12004    GLMessage glmsg;
12005    GLTraceContext *glContext = getGLTraceContext();
12006
12007    glmsg.set_function(GLMessage::glDrawTexxOES);
12008
12009    // copy argument x
12010    GLMessage_DataType *arg_x = glmsg.add_args();
12011    arg_x->set_isarray(false);
12012    arg_x->set_type(GLMessage::DataType::INT);
12013    arg_x->add_intvalue(x);
12014
12015    // copy argument y
12016    GLMessage_DataType *arg_y = glmsg.add_args();
12017    arg_y->set_isarray(false);
12018    arg_y->set_type(GLMessage::DataType::INT);
12019    arg_y->add_intvalue(y);
12020
12021    // copy argument z
12022    GLMessage_DataType *arg_z = glmsg.add_args();
12023    arg_z->set_isarray(false);
12024    arg_z->set_type(GLMessage::DataType::INT);
12025    arg_z->add_intvalue(z);
12026
12027    // copy argument width
12028    GLMessage_DataType *arg_width = glmsg.add_args();
12029    arg_width->set_isarray(false);
12030    arg_width->set_type(GLMessage::DataType::INT);
12031    arg_width->add_intvalue(width);
12032
12033    // copy argument height
12034    GLMessage_DataType *arg_height = glmsg.add_args();
12035    arg_height->set_isarray(false);
12036    arg_height->set_type(GLMessage::DataType::INT);
12037    arg_height->add_intvalue(height);
12038
12039    // call function
12040    nsecs_t start_time = systemTime();
12041    glContext->hooks->gl.glDrawTexxOES(x, y, z, width, height);
12042    nsecs_t end_time = systemTime();
12043
12044    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12045    glContext->traceGLMessage(&glmsg);
12046}
12047
12048void GLTrace_glDrawTexsvOES(const GLshort *coords) {
12049    GLMessage glmsg;
12050    GLTraceContext *glContext = getGLTraceContext();
12051
12052    glmsg.set_function(GLMessage::glDrawTexsvOES);
12053
12054    // copy argument coords
12055    GLMessage_DataType *arg_coords = glmsg.add_args();
12056    arg_coords->set_isarray(false);
12057    arg_coords->set_type(GLMessage::DataType::INT);
12058    arg_coords->add_intvalue((int)coords);
12059
12060    // call function
12061    nsecs_t start_time = systemTime();
12062    glContext->hooks->gl.glDrawTexsvOES(coords);
12063    nsecs_t end_time = systemTime();
12064
12065    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12066    glContext->traceGLMessage(&glmsg);
12067}
12068
12069void GLTrace_glDrawTexivOES(const GLint *coords) {
12070    GLMessage glmsg;
12071    GLTraceContext *glContext = getGLTraceContext();
12072
12073    glmsg.set_function(GLMessage::glDrawTexivOES);
12074
12075    // copy argument coords
12076    GLMessage_DataType *arg_coords = glmsg.add_args();
12077    arg_coords->set_isarray(false);
12078    arg_coords->set_type(GLMessage::DataType::INT);
12079    arg_coords->add_intvalue((int)coords);
12080
12081    // call function
12082    nsecs_t start_time = systemTime();
12083    glContext->hooks->gl.glDrawTexivOES(coords);
12084    nsecs_t end_time = systemTime();
12085
12086    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12087    glContext->traceGLMessage(&glmsg);
12088}
12089
12090void GLTrace_glDrawTexxvOES(const GLfixed *coords) {
12091    GLMessage glmsg;
12092    GLTraceContext *glContext = getGLTraceContext();
12093
12094    glmsg.set_function(GLMessage::glDrawTexxvOES);
12095
12096    // copy argument coords
12097    GLMessage_DataType *arg_coords = glmsg.add_args();
12098    arg_coords->set_isarray(false);
12099    arg_coords->set_type(GLMessage::DataType::INT);
12100    arg_coords->add_intvalue((int)coords);
12101
12102    // call function
12103    nsecs_t start_time = systemTime();
12104    glContext->hooks->gl.glDrawTexxvOES(coords);
12105    nsecs_t end_time = systemTime();
12106
12107    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12108    glContext->traceGLMessage(&glmsg);
12109}
12110
12111void GLTrace_glDrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height) {
12112    GLMessage glmsg;
12113    GLTraceContext *glContext = getGLTraceContext();
12114
12115    glmsg.set_function(GLMessage::glDrawTexfOES);
12116
12117    // copy argument x
12118    GLMessage_DataType *arg_x = glmsg.add_args();
12119    arg_x->set_isarray(false);
12120    arg_x->set_type(GLMessage::DataType::FLOAT);
12121    arg_x->add_floatvalue(x);
12122
12123    // copy argument y
12124    GLMessage_DataType *arg_y = glmsg.add_args();
12125    arg_y->set_isarray(false);
12126    arg_y->set_type(GLMessage::DataType::FLOAT);
12127    arg_y->add_floatvalue(y);
12128
12129    // copy argument z
12130    GLMessage_DataType *arg_z = glmsg.add_args();
12131    arg_z->set_isarray(false);
12132    arg_z->set_type(GLMessage::DataType::FLOAT);
12133    arg_z->add_floatvalue(z);
12134
12135    // copy argument width
12136    GLMessage_DataType *arg_width = glmsg.add_args();
12137    arg_width->set_isarray(false);
12138    arg_width->set_type(GLMessage::DataType::FLOAT);
12139    arg_width->add_floatvalue(width);
12140
12141    // copy argument height
12142    GLMessage_DataType *arg_height = glmsg.add_args();
12143    arg_height->set_isarray(false);
12144    arg_height->set_type(GLMessage::DataType::FLOAT);
12145    arg_height->add_floatvalue(height);
12146
12147    // call function
12148    nsecs_t start_time = systemTime();
12149    glContext->hooks->gl.glDrawTexfOES(x, y, z, width, height);
12150    nsecs_t end_time = systemTime();
12151
12152    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12153    glContext->traceGLMessage(&glmsg);
12154}
12155
12156void GLTrace_glDrawTexfvOES(const GLfloat *coords) {
12157    GLMessage glmsg;
12158    GLTraceContext *glContext = getGLTraceContext();
12159
12160    glmsg.set_function(GLMessage::glDrawTexfvOES);
12161
12162    // copy argument coords
12163    GLMessage_DataType *arg_coords = glmsg.add_args();
12164    arg_coords->set_isarray(false);
12165    arg_coords->set_type(GLMessage::DataType::INT);
12166    arg_coords->add_intvalue((int)coords);
12167
12168    // call function
12169    nsecs_t start_time = systemTime();
12170    glContext->hooks->gl.glDrawTexfvOES(coords);
12171    nsecs_t end_time = systemTime();
12172
12173    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12174    glContext->traceGLMessage(&glmsg);
12175}
12176
12177void GLTrace_glAlphaFuncxOES(GLenum func, GLclampx ref) {
12178    GLMessage glmsg;
12179    GLTraceContext *glContext = getGLTraceContext();
12180
12181    glmsg.set_function(GLMessage::glAlphaFuncxOES);
12182
12183    // copy argument func
12184    GLMessage_DataType *arg_func = glmsg.add_args();
12185    arg_func->set_isarray(false);
12186    arg_func->set_type(GLMessage::DataType::ENUM);
12187    arg_func->add_intvalue((int)func);
12188
12189    // copy argument ref
12190    GLMessage_DataType *arg_ref = glmsg.add_args();
12191    arg_ref->set_isarray(false);
12192    arg_ref->set_type(GLMessage::DataType::INT);
12193    arg_ref->add_intvalue(ref);
12194
12195    // call function
12196    nsecs_t start_time = systemTime();
12197    glContext->hooks->gl.glAlphaFuncxOES(func, ref);
12198    nsecs_t end_time = systemTime();
12199
12200    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12201    glContext->traceGLMessage(&glmsg);
12202}
12203
12204void GLTrace_glClearColorxOES(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha) {
12205    GLMessage glmsg;
12206    GLTraceContext *glContext = getGLTraceContext();
12207
12208    glmsg.set_function(GLMessage::glClearColorxOES);
12209
12210    // copy argument red
12211    GLMessage_DataType *arg_red = glmsg.add_args();
12212    arg_red->set_isarray(false);
12213    arg_red->set_type(GLMessage::DataType::INT);
12214    arg_red->add_intvalue(red);
12215
12216    // copy argument green
12217    GLMessage_DataType *arg_green = glmsg.add_args();
12218    arg_green->set_isarray(false);
12219    arg_green->set_type(GLMessage::DataType::INT);
12220    arg_green->add_intvalue(green);
12221
12222    // copy argument blue
12223    GLMessage_DataType *arg_blue = glmsg.add_args();
12224    arg_blue->set_isarray(false);
12225    arg_blue->set_type(GLMessage::DataType::INT);
12226    arg_blue->add_intvalue(blue);
12227
12228    // copy argument alpha
12229    GLMessage_DataType *arg_alpha = glmsg.add_args();
12230    arg_alpha->set_isarray(false);
12231    arg_alpha->set_type(GLMessage::DataType::INT);
12232    arg_alpha->add_intvalue(alpha);
12233
12234    // call function
12235    nsecs_t start_time = systemTime();
12236    glContext->hooks->gl.glClearColorxOES(red, green, blue, alpha);
12237    nsecs_t end_time = systemTime();
12238
12239    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12240    glContext->traceGLMessage(&glmsg);
12241}
12242
12243void GLTrace_glClearDepthxOES(GLclampx depth) {
12244    GLMessage glmsg;
12245    GLTraceContext *glContext = getGLTraceContext();
12246
12247    glmsg.set_function(GLMessage::glClearDepthxOES);
12248
12249    // copy argument depth
12250    GLMessage_DataType *arg_depth = glmsg.add_args();
12251    arg_depth->set_isarray(false);
12252    arg_depth->set_type(GLMessage::DataType::INT);
12253    arg_depth->add_intvalue(depth);
12254
12255    // call function
12256    nsecs_t start_time = systemTime();
12257    glContext->hooks->gl.glClearDepthxOES(depth);
12258    nsecs_t end_time = systemTime();
12259
12260    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12261    glContext->traceGLMessage(&glmsg);
12262}
12263
12264void GLTrace_glClipPlanexOES(GLenum plane, const GLfixed *equation) {
12265    GLMessage glmsg;
12266    GLTraceContext *glContext = getGLTraceContext();
12267
12268    glmsg.set_function(GLMessage::glClipPlanexOES);
12269
12270    // copy argument plane
12271    GLMessage_DataType *arg_plane = glmsg.add_args();
12272    arg_plane->set_isarray(false);
12273    arg_plane->set_type(GLMessage::DataType::ENUM);
12274    arg_plane->add_intvalue((int)plane);
12275
12276    // copy argument equation
12277    GLMessage_DataType *arg_equation = glmsg.add_args();
12278    arg_equation->set_isarray(false);
12279    arg_equation->set_type(GLMessage::DataType::INT);
12280    arg_equation->add_intvalue((int)equation);
12281
12282    // call function
12283    nsecs_t start_time = systemTime();
12284    glContext->hooks->gl.glClipPlanexOES(plane, equation);
12285    nsecs_t end_time = systemTime();
12286
12287    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12288    glContext->traceGLMessage(&glmsg);
12289}
12290
12291void GLTrace_glColor4xOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {
12292    GLMessage glmsg;
12293    GLTraceContext *glContext = getGLTraceContext();
12294
12295    glmsg.set_function(GLMessage::glColor4xOES);
12296
12297    // copy argument red
12298    GLMessage_DataType *arg_red = glmsg.add_args();
12299    arg_red->set_isarray(false);
12300    arg_red->set_type(GLMessage::DataType::INT);
12301    arg_red->add_intvalue(red);
12302
12303    // copy argument green
12304    GLMessage_DataType *arg_green = glmsg.add_args();
12305    arg_green->set_isarray(false);
12306    arg_green->set_type(GLMessage::DataType::INT);
12307    arg_green->add_intvalue(green);
12308
12309    // copy argument blue
12310    GLMessage_DataType *arg_blue = glmsg.add_args();
12311    arg_blue->set_isarray(false);
12312    arg_blue->set_type(GLMessage::DataType::INT);
12313    arg_blue->add_intvalue(blue);
12314
12315    // copy argument alpha
12316    GLMessage_DataType *arg_alpha = glmsg.add_args();
12317    arg_alpha->set_isarray(false);
12318    arg_alpha->set_type(GLMessage::DataType::INT);
12319    arg_alpha->add_intvalue(alpha);
12320
12321    // call function
12322    nsecs_t start_time = systemTime();
12323    glContext->hooks->gl.glColor4xOES(red, green, blue, alpha);
12324    nsecs_t end_time = systemTime();
12325
12326    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12327    glContext->traceGLMessage(&glmsg);
12328}
12329
12330void GLTrace_glDepthRangexOES(GLclampx zNear, GLclampx zFar) {
12331    GLMessage glmsg;
12332    GLTraceContext *glContext = getGLTraceContext();
12333
12334    glmsg.set_function(GLMessage::glDepthRangexOES);
12335
12336    // copy argument zNear
12337    GLMessage_DataType *arg_zNear = glmsg.add_args();
12338    arg_zNear->set_isarray(false);
12339    arg_zNear->set_type(GLMessage::DataType::INT);
12340    arg_zNear->add_intvalue(zNear);
12341
12342    // copy argument zFar
12343    GLMessage_DataType *arg_zFar = glmsg.add_args();
12344    arg_zFar->set_isarray(false);
12345    arg_zFar->set_type(GLMessage::DataType::INT);
12346    arg_zFar->add_intvalue(zFar);
12347
12348    // call function
12349    nsecs_t start_time = systemTime();
12350    glContext->hooks->gl.glDepthRangexOES(zNear, zFar);
12351    nsecs_t end_time = systemTime();
12352
12353    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12354    glContext->traceGLMessage(&glmsg);
12355}
12356
12357void GLTrace_glFogxOES(GLenum pname, GLfixed param) {
12358    GLMessage glmsg;
12359    GLTraceContext *glContext = getGLTraceContext();
12360
12361    glmsg.set_function(GLMessage::glFogxOES);
12362
12363    // copy argument pname
12364    GLMessage_DataType *arg_pname = glmsg.add_args();
12365    arg_pname->set_isarray(false);
12366    arg_pname->set_type(GLMessage::DataType::ENUM);
12367    arg_pname->add_intvalue((int)pname);
12368
12369    // copy argument param
12370    GLMessage_DataType *arg_param = glmsg.add_args();
12371    arg_param->set_isarray(false);
12372    arg_param->set_type(GLMessage::DataType::INT);
12373    arg_param->add_intvalue(param);
12374
12375    // call function
12376    nsecs_t start_time = systemTime();
12377    glContext->hooks->gl.glFogxOES(pname, param);
12378    nsecs_t end_time = systemTime();
12379
12380    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12381    glContext->traceGLMessage(&glmsg);
12382}
12383
12384void GLTrace_glFogxvOES(GLenum pname, const GLfixed *params) {
12385    GLMessage glmsg;
12386    GLTraceContext *glContext = getGLTraceContext();
12387
12388    glmsg.set_function(GLMessage::glFogxvOES);
12389
12390    // copy argument pname
12391    GLMessage_DataType *arg_pname = glmsg.add_args();
12392    arg_pname->set_isarray(false);
12393    arg_pname->set_type(GLMessage::DataType::ENUM);
12394    arg_pname->add_intvalue((int)pname);
12395
12396    // copy argument params
12397    GLMessage_DataType *arg_params = glmsg.add_args();
12398    arg_params->set_isarray(false);
12399    arg_params->set_type(GLMessage::DataType::INT);
12400    arg_params->add_intvalue((int)params);
12401
12402    // call function
12403    nsecs_t start_time = systemTime();
12404    glContext->hooks->gl.glFogxvOES(pname, params);
12405    nsecs_t end_time = systemTime();
12406
12407    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12408    glContext->traceGLMessage(&glmsg);
12409}
12410
12411void GLTrace_glFrustumxOES(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
12412    GLMessage glmsg;
12413    GLTraceContext *glContext = getGLTraceContext();
12414
12415    glmsg.set_function(GLMessage::glFrustumxOES);
12416
12417    // copy argument left
12418    GLMessage_DataType *arg_left = glmsg.add_args();
12419    arg_left->set_isarray(false);
12420    arg_left->set_type(GLMessage::DataType::INT);
12421    arg_left->add_intvalue(left);
12422
12423    // copy argument right
12424    GLMessage_DataType *arg_right = glmsg.add_args();
12425    arg_right->set_isarray(false);
12426    arg_right->set_type(GLMessage::DataType::INT);
12427    arg_right->add_intvalue(right);
12428
12429    // copy argument bottom
12430    GLMessage_DataType *arg_bottom = glmsg.add_args();
12431    arg_bottom->set_isarray(false);
12432    arg_bottom->set_type(GLMessage::DataType::INT);
12433    arg_bottom->add_intvalue(bottom);
12434
12435    // copy argument top
12436    GLMessage_DataType *arg_top = glmsg.add_args();
12437    arg_top->set_isarray(false);
12438    arg_top->set_type(GLMessage::DataType::INT);
12439    arg_top->add_intvalue(top);
12440
12441    // copy argument zNear
12442    GLMessage_DataType *arg_zNear = glmsg.add_args();
12443    arg_zNear->set_isarray(false);
12444    arg_zNear->set_type(GLMessage::DataType::INT);
12445    arg_zNear->add_intvalue(zNear);
12446
12447    // copy argument zFar
12448    GLMessage_DataType *arg_zFar = glmsg.add_args();
12449    arg_zFar->set_isarray(false);
12450    arg_zFar->set_type(GLMessage::DataType::INT);
12451    arg_zFar->add_intvalue(zFar);
12452
12453    // call function
12454    nsecs_t start_time = systemTime();
12455    glContext->hooks->gl.glFrustumxOES(left, right, bottom, top, zNear, zFar);
12456    nsecs_t end_time = systemTime();
12457
12458    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12459    glContext->traceGLMessage(&glmsg);
12460}
12461
12462void GLTrace_glGetClipPlanexOES(GLenum pname, GLfixed eqn[4]) {
12463    GLMessage glmsg;
12464    GLTraceContext *glContext = getGLTraceContext();
12465
12466    glmsg.set_function(GLMessage::glGetClipPlanexOES);
12467
12468    // copy argument pname
12469    GLMessage_DataType *arg_pname = glmsg.add_args();
12470    arg_pname->set_isarray(false);
12471    arg_pname->set_type(GLMessage::DataType::ENUM);
12472    arg_pname->add_intvalue((int)pname);
12473
12474    // copy argument eqn
12475    GLMessage_DataType *arg_eqn = glmsg.add_args();
12476    arg_eqn->set_isarray(false);
12477    arg_eqn->set_type(GLMessage::DataType::INT);
12478    arg_eqn->add_intvalue((int)eqn);
12479
12480    // call function
12481    nsecs_t start_time = systemTime();
12482    glContext->hooks->gl.glGetClipPlanexOES(pname, eqn);
12483    nsecs_t end_time = systemTime();
12484
12485    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12486    glContext->traceGLMessage(&glmsg);
12487}
12488
12489void GLTrace_glGetFixedvOES(GLenum pname, GLfixed *params) {
12490    GLMessage glmsg;
12491    GLTraceContext *glContext = getGLTraceContext();
12492
12493    glmsg.set_function(GLMessage::glGetFixedvOES);
12494
12495    // copy argument pname
12496    GLMessage_DataType *arg_pname = glmsg.add_args();
12497    arg_pname->set_isarray(false);
12498    arg_pname->set_type(GLMessage::DataType::ENUM);
12499    arg_pname->add_intvalue((int)pname);
12500
12501    // copy argument params
12502    GLMessage_DataType *arg_params = glmsg.add_args();
12503    arg_params->set_isarray(false);
12504    arg_params->set_type(GLMessage::DataType::INT);
12505    arg_params->add_intvalue((int)params);
12506
12507    // call function
12508    nsecs_t start_time = systemTime();
12509    glContext->hooks->gl.glGetFixedvOES(pname, params);
12510    nsecs_t end_time = systemTime();
12511
12512    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12513    glContext->traceGLMessage(&glmsg);
12514}
12515
12516void GLTrace_glGetLightxvOES(GLenum light, GLenum pname, GLfixed *params) {
12517    GLMessage glmsg;
12518    GLTraceContext *glContext = getGLTraceContext();
12519
12520    glmsg.set_function(GLMessage::glGetLightxvOES);
12521
12522    // copy argument light
12523    GLMessage_DataType *arg_light = glmsg.add_args();
12524    arg_light->set_isarray(false);
12525    arg_light->set_type(GLMessage::DataType::ENUM);
12526    arg_light->add_intvalue((int)light);
12527
12528    // copy argument pname
12529    GLMessage_DataType *arg_pname = glmsg.add_args();
12530    arg_pname->set_isarray(false);
12531    arg_pname->set_type(GLMessage::DataType::ENUM);
12532    arg_pname->add_intvalue((int)pname);
12533
12534    // copy argument params
12535    GLMessage_DataType *arg_params = glmsg.add_args();
12536    arg_params->set_isarray(false);
12537    arg_params->set_type(GLMessage::DataType::INT);
12538    arg_params->add_intvalue((int)params);
12539
12540    // call function
12541    nsecs_t start_time = systemTime();
12542    glContext->hooks->gl.glGetLightxvOES(light, pname, params);
12543    nsecs_t end_time = systemTime();
12544
12545    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12546    glContext->traceGLMessage(&glmsg);
12547}
12548
12549void GLTrace_glGetMaterialxvOES(GLenum face, GLenum pname, GLfixed *params) {
12550    GLMessage glmsg;
12551    GLTraceContext *glContext = getGLTraceContext();
12552
12553    glmsg.set_function(GLMessage::glGetMaterialxvOES);
12554
12555    // copy argument face
12556    GLMessage_DataType *arg_face = glmsg.add_args();
12557    arg_face->set_isarray(false);
12558    arg_face->set_type(GLMessage::DataType::ENUM);
12559    arg_face->add_intvalue((int)face);
12560
12561    // copy argument pname
12562    GLMessage_DataType *arg_pname = glmsg.add_args();
12563    arg_pname->set_isarray(false);
12564    arg_pname->set_type(GLMessage::DataType::ENUM);
12565    arg_pname->add_intvalue((int)pname);
12566
12567    // copy argument params
12568    GLMessage_DataType *arg_params = glmsg.add_args();
12569    arg_params->set_isarray(false);
12570    arg_params->set_type(GLMessage::DataType::INT);
12571    arg_params->add_intvalue((int)params);
12572
12573    // call function
12574    nsecs_t start_time = systemTime();
12575    glContext->hooks->gl.glGetMaterialxvOES(face, pname, params);
12576    nsecs_t end_time = systemTime();
12577
12578    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12579    glContext->traceGLMessage(&glmsg);
12580}
12581
12582void GLTrace_glGetTexEnvxvOES(GLenum env, GLenum pname, GLfixed *params) {
12583    GLMessage glmsg;
12584    GLTraceContext *glContext = getGLTraceContext();
12585
12586    glmsg.set_function(GLMessage::glGetTexEnvxvOES);
12587
12588    // copy argument env
12589    GLMessage_DataType *arg_env = glmsg.add_args();
12590    arg_env->set_isarray(false);
12591    arg_env->set_type(GLMessage::DataType::ENUM);
12592    arg_env->add_intvalue((int)env);
12593
12594    // copy argument pname
12595    GLMessage_DataType *arg_pname = glmsg.add_args();
12596    arg_pname->set_isarray(false);
12597    arg_pname->set_type(GLMessage::DataType::ENUM);
12598    arg_pname->add_intvalue((int)pname);
12599
12600    // copy argument params
12601    GLMessage_DataType *arg_params = glmsg.add_args();
12602    arg_params->set_isarray(false);
12603    arg_params->set_type(GLMessage::DataType::INT);
12604    arg_params->add_intvalue((int)params);
12605
12606    // call function
12607    nsecs_t start_time = systemTime();
12608    glContext->hooks->gl.glGetTexEnvxvOES(env, pname, params);
12609    nsecs_t end_time = systemTime();
12610
12611    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12612    glContext->traceGLMessage(&glmsg);
12613}
12614
12615void GLTrace_glGetTexParameterxvOES(GLenum target, GLenum pname, GLfixed *params) {
12616    GLMessage glmsg;
12617    GLTraceContext *glContext = getGLTraceContext();
12618
12619    glmsg.set_function(GLMessage::glGetTexParameterxvOES);
12620
12621    // copy argument target
12622    GLMessage_DataType *arg_target = glmsg.add_args();
12623    arg_target->set_isarray(false);
12624    arg_target->set_type(GLMessage::DataType::ENUM);
12625    arg_target->add_intvalue((int)target);
12626
12627    // copy argument pname
12628    GLMessage_DataType *arg_pname = glmsg.add_args();
12629    arg_pname->set_isarray(false);
12630    arg_pname->set_type(GLMessage::DataType::ENUM);
12631    arg_pname->add_intvalue((int)pname);
12632
12633    // copy argument params
12634    GLMessage_DataType *arg_params = glmsg.add_args();
12635    arg_params->set_isarray(false);
12636    arg_params->set_type(GLMessage::DataType::INT);
12637    arg_params->add_intvalue((int)params);
12638
12639    // call function
12640    nsecs_t start_time = systemTime();
12641    glContext->hooks->gl.glGetTexParameterxvOES(target, pname, params);
12642    nsecs_t end_time = systemTime();
12643
12644    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12645    glContext->traceGLMessage(&glmsg);
12646}
12647
12648void GLTrace_glLightModelxOES(GLenum pname, GLfixed param) {
12649    GLMessage glmsg;
12650    GLTraceContext *glContext = getGLTraceContext();
12651
12652    glmsg.set_function(GLMessage::glLightModelxOES);
12653
12654    // copy argument pname
12655    GLMessage_DataType *arg_pname = glmsg.add_args();
12656    arg_pname->set_isarray(false);
12657    arg_pname->set_type(GLMessage::DataType::ENUM);
12658    arg_pname->add_intvalue((int)pname);
12659
12660    // copy argument param
12661    GLMessage_DataType *arg_param = glmsg.add_args();
12662    arg_param->set_isarray(false);
12663    arg_param->set_type(GLMessage::DataType::INT);
12664    arg_param->add_intvalue(param);
12665
12666    // call function
12667    nsecs_t start_time = systemTime();
12668    glContext->hooks->gl.glLightModelxOES(pname, param);
12669    nsecs_t end_time = systemTime();
12670
12671    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12672    glContext->traceGLMessage(&glmsg);
12673}
12674
12675void GLTrace_glLightModelxvOES(GLenum pname, const GLfixed *params) {
12676    GLMessage glmsg;
12677    GLTraceContext *glContext = getGLTraceContext();
12678
12679    glmsg.set_function(GLMessage::glLightModelxvOES);
12680
12681    // copy argument pname
12682    GLMessage_DataType *arg_pname = glmsg.add_args();
12683    arg_pname->set_isarray(false);
12684    arg_pname->set_type(GLMessage::DataType::ENUM);
12685    arg_pname->add_intvalue((int)pname);
12686
12687    // copy argument params
12688    GLMessage_DataType *arg_params = glmsg.add_args();
12689    arg_params->set_isarray(false);
12690    arg_params->set_type(GLMessage::DataType::INT);
12691    arg_params->add_intvalue((int)params);
12692
12693    // call function
12694    nsecs_t start_time = systemTime();
12695    glContext->hooks->gl.glLightModelxvOES(pname, params);
12696    nsecs_t end_time = systemTime();
12697
12698    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12699    glContext->traceGLMessage(&glmsg);
12700}
12701
12702void GLTrace_glLightxOES(GLenum light, GLenum pname, GLfixed param) {
12703    GLMessage glmsg;
12704    GLTraceContext *glContext = getGLTraceContext();
12705
12706    glmsg.set_function(GLMessage::glLightxOES);
12707
12708    // copy argument light
12709    GLMessage_DataType *arg_light = glmsg.add_args();
12710    arg_light->set_isarray(false);
12711    arg_light->set_type(GLMessage::DataType::ENUM);
12712    arg_light->add_intvalue((int)light);
12713
12714    // copy argument pname
12715    GLMessage_DataType *arg_pname = glmsg.add_args();
12716    arg_pname->set_isarray(false);
12717    arg_pname->set_type(GLMessage::DataType::ENUM);
12718    arg_pname->add_intvalue((int)pname);
12719
12720    // copy argument param
12721    GLMessage_DataType *arg_param = glmsg.add_args();
12722    arg_param->set_isarray(false);
12723    arg_param->set_type(GLMessage::DataType::INT);
12724    arg_param->add_intvalue(param);
12725
12726    // call function
12727    nsecs_t start_time = systemTime();
12728    glContext->hooks->gl.glLightxOES(light, pname, param);
12729    nsecs_t end_time = systemTime();
12730
12731    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12732    glContext->traceGLMessage(&glmsg);
12733}
12734
12735void GLTrace_glLightxvOES(GLenum light, GLenum pname, const GLfixed *params) {
12736    GLMessage glmsg;
12737    GLTraceContext *glContext = getGLTraceContext();
12738
12739    glmsg.set_function(GLMessage::glLightxvOES);
12740
12741    // copy argument light
12742    GLMessage_DataType *arg_light = glmsg.add_args();
12743    arg_light->set_isarray(false);
12744    arg_light->set_type(GLMessage::DataType::ENUM);
12745    arg_light->add_intvalue((int)light);
12746
12747    // copy argument pname
12748    GLMessage_DataType *arg_pname = glmsg.add_args();
12749    arg_pname->set_isarray(false);
12750    arg_pname->set_type(GLMessage::DataType::ENUM);
12751    arg_pname->add_intvalue((int)pname);
12752
12753    // copy argument params
12754    GLMessage_DataType *arg_params = glmsg.add_args();
12755    arg_params->set_isarray(false);
12756    arg_params->set_type(GLMessage::DataType::INT);
12757    arg_params->add_intvalue((int)params);
12758
12759    // call function
12760    nsecs_t start_time = systemTime();
12761    glContext->hooks->gl.glLightxvOES(light, pname, params);
12762    nsecs_t end_time = systemTime();
12763
12764    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12765    glContext->traceGLMessage(&glmsg);
12766}
12767
12768void GLTrace_glLineWidthxOES(GLfixed width) {
12769    GLMessage glmsg;
12770    GLTraceContext *glContext = getGLTraceContext();
12771
12772    glmsg.set_function(GLMessage::glLineWidthxOES);
12773
12774    // copy argument width
12775    GLMessage_DataType *arg_width = glmsg.add_args();
12776    arg_width->set_isarray(false);
12777    arg_width->set_type(GLMessage::DataType::INT);
12778    arg_width->add_intvalue(width);
12779
12780    // call function
12781    nsecs_t start_time = systemTime();
12782    glContext->hooks->gl.glLineWidthxOES(width);
12783    nsecs_t end_time = systemTime();
12784
12785    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12786    glContext->traceGLMessage(&glmsg);
12787}
12788
12789void GLTrace_glLoadMatrixxOES(const GLfixed *m) {
12790    GLMessage glmsg;
12791    GLTraceContext *glContext = getGLTraceContext();
12792
12793    glmsg.set_function(GLMessage::glLoadMatrixxOES);
12794
12795    // copy argument m
12796    GLMessage_DataType *arg_m = glmsg.add_args();
12797    arg_m->set_isarray(false);
12798    arg_m->set_type(GLMessage::DataType::INT);
12799    arg_m->add_intvalue((int)m);
12800
12801    // call function
12802    nsecs_t start_time = systemTime();
12803    glContext->hooks->gl.glLoadMatrixxOES(m);
12804    nsecs_t end_time = systemTime();
12805
12806    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12807    glContext->traceGLMessage(&glmsg);
12808}
12809
12810void GLTrace_glMaterialxOES(GLenum face, GLenum pname, GLfixed param) {
12811    GLMessage glmsg;
12812    GLTraceContext *glContext = getGLTraceContext();
12813
12814    glmsg.set_function(GLMessage::glMaterialxOES);
12815
12816    // copy argument face
12817    GLMessage_DataType *arg_face = glmsg.add_args();
12818    arg_face->set_isarray(false);
12819    arg_face->set_type(GLMessage::DataType::ENUM);
12820    arg_face->add_intvalue((int)face);
12821
12822    // copy argument pname
12823    GLMessage_DataType *arg_pname = glmsg.add_args();
12824    arg_pname->set_isarray(false);
12825    arg_pname->set_type(GLMessage::DataType::ENUM);
12826    arg_pname->add_intvalue((int)pname);
12827
12828    // copy argument param
12829    GLMessage_DataType *arg_param = glmsg.add_args();
12830    arg_param->set_isarray(false);
12831    arg_param->set_type(GLMessage::DataType::INT);
12832    arg_param->add_intvalue(param);
12833
12834    // call function
12835    nsecs_t start_time = systemTime();
12836    glContext->hooks->gl.glMaterialxOES(face, pname, param);
12837    nsecs_t end_time = systemTime();
12838
12839    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12840    glContext->traceGLMessage(&glmsg);
12841}
12842
12843void GLTrace_glMaterialxvOES(GLenum face, GLenum pname, const GLfixed *params) {
12844    GLMessage glmsg;
12845    GLTraceContext *glContext = getGLTraceContext();
12846
12847    glmsg.set_function(GLMessage::glMaterialxvOES);
12848
12849    // copy argument face
12850    GLMessage_DataType *arg_face = glmsg.add_args();
12851    arg_face->set_isarray(false);
12852    arg_face->set_type(GLMessage::DataType::ENUM);
12853    arg_face->add_intvalue((int)face);
12854
12855    // copy argument pname
12856    GLMessage_DataType *arg_pname = glmsg.add_args();
12857    arg_pname->set_isarray(false);
12858    arg_pname->set_type(GLMessage::DataType::ENUM);
12859    arg_pname->add_intvalue((int)pname);
12860
12861    // copy argument params
12862    GLMessage_DataType *arg_params = glmsg.add_args();
12863    arg_params->set_isarray(false);
12864    arg_params->set_type(GLMessage::DataType::INT);
12865    arg_params->add_intvalue((int)params);
12866
12867    // call function
12868    nsecs_t start_time = systemTime();
12869    glContext->hooks->gl.glMaterialxvOES(face, pname, params);
12870    nsecs_t end_time = systemTime();
12871
12872    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12873    glContext->traceGLMessage(&glmsg);
12874}
12875
12876void GLTrace_glMultMatrixxOES(const GLfixed *m) {
12877    GLMessage glmsg;
12878    GLTraceContext *glContext = getGLTraceContext();
12879
12880    glmsg.set_function(GLMessage::glMultMatrixxOES);
12881
12882    // copy argument m
12883    GLMessage_DataType *arg_m = glmsg.add_args();
12884    arg_m->set_isarray(false);
12885    arg_m->set_type(GLMessage::DataType::INT);
12886    arg_m->add_intvalue((int)m);
12887
12888    // call function
12889    nsecs_t start_time = systemTime();
12890    glContext->hooks->gl.glMultMatrixxOES(m);
12891    nsecs_t end_time = systemTime();
12892
12893    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12894    glContext->traceGLMessage(&glmsg);
12895}
12896
12897void GLTrace_glMultiTexCoord4xOES(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q) {
12898    GLMessage glmsg;
12899    GLTraceContext *glContext = getGLTraceContext();
12900
12901    glmsg.set_function(GLMessage::glMultiTexCoord4xOES);
12902
12903    // copy argument target
12904    GLMessage_DataType *arg_target = glmsg.add_args();
12905    arg_target->set_isarray(false);
12906    arg_target->set_type(GLMessage::DataType::ENUM);
12907    arg_target->add_intvalue((int)target);
12908
12909    // copy argument s
12910    GLMessage_DataType *arg_s = glmsg.add_args();
12911    arg_s->set_isarray(false);
12912    arg_s->set_type(GLMessage::DataType::INT);
12913    arg_s->add_intvalue(s);
12914
12915    // copy argument t
12916    GLMessage_DataType *arg_t = glmsg.add_args();
12917    arg_t->set_isarray(false);
12918    arg_t->set_type(GLMessage::DataType::INT);
12919    arg_t->add_intvalue(t);
12920
12921    // copy argument r
12922    GLMessage_DataType *arg_r = glmsg.add_args();
12923    arg_r->set_isarray(false);
12924    arg_r->set_type(GLMessage::DataType::INT);
12925    arg_r->add_intvalue(r);
12926
12927    // copy argument q
12928    GLMessage_DataType *arg_q = glmsg.add_args();
12929    arg_q->set_isarray(false);
12930    arg_q->set_type(GLMessage::DataType::INT);
12931    arg_q->add_intvalue(q);
12932
12933    // call function
12934    nsecs_t start_time = systemTime();
12935    glContext->hooks->gl.glMultiTexCoord4xOES(target, s, t, r, q);
12936    nsecs_t end_time = systemTime();
12937
12938    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12939    glContext->traceGLMessage(&glmsg);
12940}
12941
12942void GLTrace_glNormal3xOES(GLfixed nx, GLfixed ny, GLfixed nz) {
12943    GLMessage glmsg;
12944    GLTraceContext *glContext = getGLTraceContext();
12945
12946    glmsg.set_function(GLMessage::glNormal3xOES);
12947
12948    // copy argument nx
12949    GLMessage_DataType *arg_nx = glmsg.add_args();
12950    arg_nx->set_isarray(false);
12951    arg_nx->set_type(GLMessage::DataType::INT);
12952    arg_nx->add_intvalue(nx);
12953
12954    // copy argument ny
12955    GLMessage_DataType *arg_ny = glmsg.add_args();
12956    arg_ny->set_isarray(false);
12957    arg_ny->set_type(GLMessage::DataType::INT);
12958    arg_ny->add_intvalue(ny);
12959
12960    // copy argument nz
12961    GLMessage_DataType *arg_nz = glmsg.add_args();
12962    arg_nz->set_isarray(false);
12963    arg_nz->set_type(GLMessage::DataType::INT);
12964    arg_nz->add_intvalue(nz);
12965
12966    // call function
12967    nsecs_t start_time = systemTime();
12968    glContext->hooks->gl.glNormal3xOES(nx, ny, nz);
12969    nsecs_t end_time = systemTime();
12970
12971    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12972    glContext->traceGLMessage(&glmsg);
12973}
12974
12975void GLTrace_glOrthoxOES(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
12976    GLMessage glmsg;
12977    GLTraceContext *glContext = getGLTraceContext();
12978
12979    glmsg.set_function(GLMessage::glOrthoxOES);
12980
12981    // copy argument left
12982    GLMessage_DataType *arg_left = glmsg.add_args();
12983    arg_left->set_isarray(false);
12984    arg_left->set_type(GLMessage::DataType::INT);
12985    arg_left->add_intvalue(left);
12986
12987    // copy argument right
12988    GLMessage_DataType *arg_right = glmsg.add_args();
12989    arg_right->set_isarray(false);
12990    arg_right->set_type(GLMessage::DataType::INT);
12991    arg_right->add_intvalue(right);
12992
12993    // copy argument bottom
12994    GLMessage_DataType *arg_bottom = glmsg.add_args();
12995    arg_bottom->set_isarray(false);
12996    arg_bottom->set_type(GLMessage::DataType::INT);
12997    arg_bottom->add_intvalue(bottom);
12998
12999    // copy argument top
13000    GLMessage_DataType *arg_top = glmsg.add_args();
13001    arg_top->set_isarray(false);
13002    arg_top->set_type(GLMessage::DataType::INT);
13003    arg_top->add_intvalue(top);
13004
13005    // copy argument zNear
13006    GLMessage_DataType *arg_zNear = glmsg.add_args();
13007    arg_zNear->set_isarray(false);
13008    arg_zNear->set_type(GLMessage::DataType::INT);
13009    arg_zNear->add_intvalue(zNear);
13010
13011    // copy argument zFar
13012    GLMessage_DataType *arg_zFar = glmsg.add_args();
13013    arg_zFar->set_isarray(false);
13014    arg_zFar->set_type(GLMessage::DataType::INT);
13015    arg_zFar->add_intvalue(zFar);
13016
13017    // call function
13018    nsecs_t start_time = systemTime();
13019    glContext->hooks->gl.glOrthoxOES(left, right, bottom, top, zNear, zFar);
13020    nsecs_t end_time = systemTime();
13021
13022    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13023    glContext->traceGLMessage(&glmsg);
13024}
13025
13026void GLTrace_glPointParameterxOES(GLenum pname, GLfixed param) {
13027    GLMessage glmsg;
13028    GLTraceContext *glContext = getGLTraceContext();
13029
13030    glmsg.set_function(GLMessage::glPointParameterxOES);
13031
13032    // copy argument pname
13033    GLMessage_DataType *arg_pname = glmsg.add_args();
13034    arg_pname->set_isarray(false);
13035    arg_pname->set_type(GLMessage::DataType::ENUM);
13036    arg_pname->add_intvalue((int)pname);
13037
13038    // copy argument param
13039    GLMessage_DataType *arg_param = glmsg.add_args();
13040    arg_param->set_isarray(false);
13041    arg_param->set_type(GLMessage::DataType::INT);
13042    arg_param->add_intvalue(param);
13043
13044    // call function
13045    nsecs_t start_time = systemTime();
13046    glContext->hooks->gl.glPointParameterxOES(pname, param);
13047    nsecs_t end_time = systemTime();
13048
13049    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13050    glContext->traceGLMessage(&glmsg);
13051}
13052
13053void GLTrace_glPointParameterxvOES(GLenum pname, const GLfixed *params) {
13054    GLMessage glmsg;
13055    GLTraceContext *glContext = getGLTraceContext();
13056
13057    glmsg.set_function(GLMessage::glPointParameterxvOES);
13058
13059    // copy argument pname
13060    GLMessage_DataType *arg_pname = glmsg.add_args();
13061    arg_pname->set_isarray(false);
13062    arg_pname->set_type(GLMessage::DataType::ENUM);
13063    arg_pname->add_intvalue((int)pname);
13064
13065    // copy argument params
13066    GLMessage_DataType *arg_params = glmsg.add_args();
13067    arg_params->set_isarray(false);
13068    arg_params->set_type(GLMessage::DataType::INT);
13069    arg_params->add_intvalue((int)params);
13070
13071    // call function
13072    nsecs_t start_time = systemTime();
13073    glContext->hooks->gl.glPointParameterxvOES(pname, params);
13074    nsecs_t end_time = systemTime();
13075
13076    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13077    glContext->traceGLMessage(&glmsg);
13078}
13079
13080void GLTrace_glPointSizexOES(GLfixed size) {
13081    GLMessage glmsg;
13082    GLTraceContext *glContext = getGLTraceContext();
13083
13084    glmsg.set_function(GLMessage::glPointSizexOES);
13085
13086    // copy argument size
13087    GLMessage_DataType *arg_size = glmsg.add_args();
13088    arg_size->set_isarray(false);
13089    arg_size->set_type(GLMessage::DataType::INT);
13090    arg_size->add_intvalue(size);
13091
13092    // call function
13093    nsecs_t start_time = systemTime();
13094    glContext->hooks->gl.glPointSizexOES(size);
13095    nsecs_t end_time = systemTime();
13096
13097    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13098    glContext->traceGLMessage(&glmsg);
13099}
13100
13101void GLTrace_glPolygonOffsetxOES(GLfixed factor, GLfixed units) {
13102    GLMessage glmsg;
13103    GLTraceContext *glContext = getGLTraceContext();
13104
13105    glmsg.set_function(GLMessage::glPolygonOffsetxOES);
13106
13107    // copy argument factor
13108    GLMessage_DataType *arg_factor = glmsg.add_args();
13109    arg_factor->set_isarray(false);
13110    arg_factor->set_type(GLMessage::DataType::INT);
13111    arg_factor->add_intvalue(factor);
13112
13113    // copy argument units
13114    GLMessage_DataType *arg_units = glmsg.add_args();
13115    arg_units->set_isarray(false);
13116    arg_units->set_type(GLMessage::DataType::INT);
13117    arg_units->add_intvalue(units);
13118
13119    // call function
13120    nsecs_t start_time = systemTime();
13121    glContext->hooks->gl.glPolygonOffsetxOES(factor, units);
13122    nsecs_t end_time = systemTime();
13123
13124    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13125    glContext->traceGLMessage(&glmsg);
13126}
13127
13128void GLTrace_glRotatexOES(GLfixed angle, GLfixed x, GLfixed y, GLfixed z) {
13129    GLMessage glmsg;
13130    GLTraceContext *glContext = getGLTraceContext();
13131
13132    glmsg.set_function(GLMessage::glRotatexOES);
13133
13134    // copy argument angle
13135    GLMessage_DataType *arg_angle = glmsg.add_args();
13136    arg_angle->set_isarray(false);
13137    arg_angle->set_type(GLMessage::DataType::INT);
13138    arg_angle->add_intvalue(angle);
13139
13140    // copy argument x
13141    GLMessage_DataType *arg_x = glmsg.add_args();
13142    arg_x->set_isarray(false);
13143    arg_x->set_type(GLMessage::DataType::INT);
13144    arg_x->add_intvalue(x);
13145
13146    // copy argument y
13147    GLMessage_DataType *arg_y = glmsg.add_args();
13148    arg_y->set_isarray(false);
13149    arg_y->set_type(GLMessage::DataType::INT);
13150    arg_y->add_intvalue(y);
13151
13152    // copy argument z
13153    GLMessage_DataType *arg_z = glmsg.add_args();
13154    arg_z->set_isarray(false);
13155    arg_z->set_type(GLMessage::DataType::INT);
13156    arg_z->add_intvalue(z);
13157
13158    // call function
13159    nsecs_t start_time = systemTime();
13160    glContext->hooks->gl.glRotatexOES(angle, x, y, z);
13161    nsecs_t end_time = systemTime();
13162
13163    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13164    glContext->traceGLMessage(&glmsg);
13165}
13166
13167void GLTrace_glSampleCoveragexOES(GLclampx value, GLboolean invert) {
13168    GLMessage glmsg;
13169    GLTraceContext *glContext = getGLTraceContext();
13170
13171    glmsg.set_function(GLMessage::glSampleCoveragexOES);
13172
13173    // copy argument value
13174    GLMessage_DataType *arg_value = glmsg.add_args();
13175    arg_value->set_isarray(false);
13176    arg_value->set_type(GLMessage::DataType::INT);
13177    arg_value->add_intvalue(value);
13178
13179    // copy argument invert
13180    GLMessage_DataType *arg_invert = glmsg.add_args();
13181    arg_invert->set_isarray(false);
13182    arg_invert->set_type(GLMessage::DataType::BOOL);
13183    arg_invert->add_boolvalue(invert);
13184
13185    // call function
13186    nsecs_t start_time = systemTime();
13187    glContext->hooks->gl.glSampleCoveragexOES(value, invert);
13188    nsecs_t end_time = systemTime();
13189
13190    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13191    glContext->traceGLMessage(&glmsg);
13192}
13193
13194void GLTrace_glScalexOES(GLfixed x, GLfixed y, GLfixed z) {
13195    GLMessage glmsg;
13196    GLTraceContext *glContext = getGLTraceContext();
13197
13198    glmsg.set_function(GLMessage::glScalexOES);
13199
13200    // copy argument x
13201    GLMessage_DataType *arg_x = glmsg.add_args();
13202    arg_x->set_isarray(false);
13203    arg_x->set_type(GLMessage::DataType::INT);
13204    arg_x->add_intvalue(x);
13205
13206    // copy argument y
13207    GLMessage_DataType *arg_y = glmsg.add_args();
13208    arg_y->set_isarray(false);
13209    arg_y->set_type(GLMessage::DataType::INT);
13210    arg_y->add_intvalue(y);
13211
13212    // copy argument z
13213    GLMessage_DataType *arg_z = glmsg.add_args();
13214    arg_z->set_isarray(false);
13215    arg_z->set_type(GLMessage::DataType::INT);
13216    arg_z->add_intvalue(z);
13217
13218    // call function
13219    nsecs_t start_time = systemTime();
13220    glContext->hooks->gl.glScalexOES(x, y, z);
13221    nsecs_t end_time = systemTime();
13222
13223    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13224    glContext->traceGLMessage(&glmsg);
13225}
13226
13227void GLTrace_glTexEnvxOES(GLenum target, GLenum pname, GLfixed param) {
13228    GLMessage glmsg;
13229    GLTraceContext *glContext = getGLTraceContext();
13230
13231    glmsg.set_function(GLMessage::glTexEnvxOES);
13232
13233    // copy argument target
13234    GLMessage_DataType *arg_target = glmsg.add_args();
13235    arg_target->set_isarray(false);
13236    arg_target->set_type(GLMessage::DataType::ENUM);
13237    arg_target->add_intvalue((int)target);
13238
13239    // copy argument pname
13240    GLMessage_DataType *arg_pname = glmsg.add_args();
13241    arg_pname->set_isarray(false);
13242    arg_pname->set_type(GLMessage::DataType::ENUM);
13243    arg_pname->add_intvalue((int)pname);
13244
13245    // copy argument param
13246    GLMessage_DataType *arg_param = glmsg.add_args();
13247    arg_param->set_isarray(false);
13248    arg_param->set_type(GLMessage::DataType::INT);
13249    arg_param->add_intvalue(param);
13250
13251    // call function
13252    nsecs_t start_time = systemTime();
13253    glContext->hooks->gl.glTexEnvxOES(target, pname, param);
13254    nsecs_t end_time = systemTime();
13255
13256    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13257    glContext->traceGLMessage(&glmsg);
13258}
13259
13260void GLTrace_glTexEnvxvOES(GLenum target, GLenum pname, const GLfixed *params) {
13261    GLMessage glmsg;
13262    GLTraceContext *glContext = getGLTraceContext();
13263
13264    glmsg.set_function(GLMessage::glTexEnvxvOES);
13265
13266    // copy argument target
13267    GLMessage_DataType *arg_target = glmsg.add_args();
13268    arg_target->set_isarray(false);
13269    arg_target->set_type(GLMessage::DataType::ENUM);
13270    arg_target->add_intvalue((int)target);
13271
13272    // copy argument pname
13273    GLMessage_DataType *arg_pname = glmsg.add_args();
13274    arg_pname->set_isarray(false);
13275    arg_pname->set_type(GLMessage::DataType::ENUM);
13276    arg_pname->add_intvalue((int)pname);
13277
13278    // copy argument params
13279    GLMessage_DataType *arg_params = glmsg.add_args();
13280    arg_params->set_isarray(false);
13281    arg_params->set_type(GLMessage::DataType::INT);
13282    arg_params->add_intvalue((int)params);
13283
13284    // call function
13285    nsecs_t start_time = systemTime();
13286    glContext->hooks->gl.glTexEnvxvOES(target, pname, params);
13287    nsecs_t end_time = systemTime();
13288
13289    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13290    glContext->traceGLMessage(&glmsg);
13291}
13292
13293void GLTrace_glTexParameterxOES(GLenum target, GLenum pname, GLfixed param) {
13294    GLMessage glmsg;
13295    GLTraceContext *glContext = getGLTraceContext();
13296
13297    glmsg.set_function(GLMessage::glTexParameterxOES);
13298
13299    // copy argument target
13300    GLMessage_DataType *arg_target = glmsg.add_args();
13301    arg_target->set_isarray(false);
13302    arg_target->set_type(GLMessage::DataType::ENUM);
13303    arg_target->add_intvalue((int)target);
13304
13305    // copy argument pname
13306    GLMessage_DataType *arg_pname = glmsg.add_args();
13307    arg_pname->set_isarray(false);
13308    arg_pname->set_type(GLMessage::DataType::ENUM);
13309    arg_pname->add_intvalue((int)pname);
13310
13311    // copy argument param
13312    GLMessage_DataType *arg_param = glmsg.add_args();
13313    arg_param->set_isarray(false);
13314    arg_param->set_type(GLMessage::DataType::INT);
13315    arg_param->add_intvalue(param);
13316
13317    // call function
13318    nsecs_t start_time = systemTime();
13319    glContext->hooks->gl.glTexParameterxOES(target, pname, param);
13320    nsecs_t end_time = systemTime();
13321
13322    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13323    glContext->traceGLMessage(&glmsg);
13324}
13325
13326void GLTrace_glTexParameterxvOES(GLenum target, GLenum pname, const GLfixed *params) {
13327    GLMessage glmsg;
13328    GLTraceContext *glContext = getGLTraceContext();
13329
13330    glmsg.set_function(GLMessage::glTexParameterxvOES);
13331
13332    // copy argument target
13333    GLMessage_DataType *arg_target = glmsg.add_args();
13334    arg_target->set_isarray(false);
13335    arg_target->set_type(GLMessage::DataType::ENUM);
13336    arg_target->add_intvalue((int)target);
13337
13338    // copy argument pname
13339    GLMessage_DataType *arg_pname = glmsg.add_args();
13340    arg_pname->set_isarray(false);
13341    arg_pname->set_type(GLMessage::DataType::ENUM);
13342    arg_pname->add_intvalue((int)pname);
13343
13344    // copy argument params
13345    GLMessage_DataType *arg_params = glmsg.add_args();
13346    arg_params->set_isarray(false);
13347    arg_params->set_type(GLMessage::DataType::INT);
13348    arg_params->add_intvalue((int)params);
13349
13350    // call function
13351    nsecs_t start_time = systemTime();
13352    glContext->hooks->gl.glTexParameterxvOES(target, pname, params);
13353    nsecs_t end_time = systemTime();
13354
13355    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13356    glContext->traceGLMessage(&glmsg);
13357}
13358
13359void GLTrace_glTranslatexOES(GLfixed x, GLfixed y, GLfixed z) {
13360    GLMessage glmsg;
13361    GLTraceContext *glContext = getGLTraceContext();
13362
13363    glmsg.set_function(GLMessage::glTranslatexOES);
13364
13365    // copy argument x
13366    GLMessage_DataType *arg_x = glmsg.add_args();
13367    arg_x->set_isarray(false);
13368    arg_x->set_type(GLMessage::DataType::INT);
13369    arg_x->add_intvalue(x);
13370
13371    // copy argument y
13372    GLMessage_DataType *arg_y = glmsg.add_args();
13373    arg_y->set_isarray(false);
13374    arg_y->set_type(GLMessage::DataType::INT);
13375    arg_y->add_intvalue(y);
13376
13377    // copy argument z
13378    GLMessage_DataType *arg_z = glmsg.add_args();
13379    arg_z->set_isarray(false);
13380    arg_z->set_type(GLMessage::DataType::INT);
13381    arg_z->add_intvalue(z);
13382
13383    // call function
13384    nsecs_t start_time = systemTime();
13385    glContext->hooks->gl.glTranslatexOES(x, y, z);
13386    nsecs_t end_time = systemTime();
13387
13388    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13389    glContext->traceGLMessage(&glmsg);
13390}
13391
13392GLboolean GLTrace_glIsRenderbufferOES(GLuint renderbuffer) {
13393    GLMessage glmsg;
13394    GLTraceContext *glContext = getGLTraceContext();
13395
13396    glmsg.set_function(GLMessage::glIsRenderbufferOES);
13397
13398    // copy argument renderbuffer
13399    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
13400    arg_renderbuffer->set_isarray(false);
13401    arg_renderbuffer->set_type(GLMessage::DataType::INT);
13402    arg_renderbuffer->add_intvalue(renderbuffer);
13403
13404    // call function
13405    nsecs_t start_time = systemTime();
13406    GLboolean retValue = glContext->hooks->gl.glIsRenderbufferOES(renderbuffer);
13407    nsecs_t end_time = systemTime();
13408
13409    // set return value
13410    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
13411    rt->set_isarray(false);
13412    rt->set_type(GLMessage::DataType::BOOL);
13413    rt->add_boolvalue(retValue);
13414
13415    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13416    glContext->traceGLMessage(&glmsg);
13417
13418    return retValue;
13419}
13420
13421void GLTrace_glBindRenderbufferOES(GLenum target, GLuint renderbuffer) {
13422    GLMessage glmsg;
13423    GLTraceContext *glContext = getGLTraceContext();
13424
13425    glmsg.set_function(GLMessage::glBindRenderbufferOES);
13426
13427    // copy argument target
13428    GLMessage_DataType *arg_target = glmsg.add_args();
13429    arg_target->set_isarray(false);
13430    arg_target->set_type(GLMessage::DataType::ENUM);
13431    arg_target->add_intvalue((int)target);
13432
13433    // copy argument renderbuffer
13434    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
13435    arg_renderbuffer->set_isarray(false);
13436    arg_renderbuffer->set_type(GLMessage::DataType::INT);
13437    arg_renderbuffer->add_intvalue(renderbuffer);
13438
13439    // call function
13440    nsecs_t start_time = systemTime();
13441    glContext->hooks->gl.glBindRenderbufferOES(target, renderbuffer);
13442    nsecs_t end_time = systemTime();
13443
13444    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13445    glContext->traceGLMessage(&glmsg);
13446}
13447
13448void GLTrace_glDeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers) {
13449    GLMessage glmsg;
13450    GLTraceContext *glContext = getGLTraceContext();
13451
13452    glmsg.set_function(GLMessage::glDeleteRenderbuffersOES);
13453
13454    // copy argument n
13455    GLMessage_DataType *arg_n = glmsg.add_args();
13456    arg_n->set_isarray(false);
13457    arg_n->set_type(GLMessage::DataType::INT);
13458    arg_n->add_intvalue(n);
13459
13460    // copy argument renderbuffers
13461    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
13462    arg_renderbuffers->set_isarray(false);
13463    arg_renderbuffers->set_type(GLMessage::DataType::INT);
13464    arg_renderbuffers->add_intvalue((int)renderbuffers);
13465
13466    // call function
13467    nsecs_t start_time = systemTime();
13468    glContext->hooks->gl.glDeleteRenderbuffersOES(n, renderbuffers);
13469    nsecs_t end_time = systemTime();
13470
13471    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13472    glContext->traceGLMessage(&glmsg);
13473}
13474
13475void GLTrace_glGenRenderbuffersOES(GLsizei n, GLuint* renderbuffers) {
13476    GLMessage glmsg;
13477    GLTraceContext *glContext = getGLTraceContext();
13478
13479    glmsg.set_function(GLMessage::glGenRenderbuffersOES);
13480
13481    // copy argument n
13482    GLMessage_DataType *arg_n = glmsg.add_args();
13483    arg_n->set_isarray(false);
13484    arg_n->set_type(GLMessage::DataType::INT);
13485    arg_n->add_intvalue(n);
13486
13487    // copy argument renderbuffers
13488    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
13489    arg_renderbuffers->set_isarray(false);
13490    arg_renderbuffers->set_type(GLMessage::DataType::INT);
13491    arg_renderbuffers->add_intvalue((int)renderbuffers);
13492
13493    // call function
13494    nsecs_t start_time = systemTime();
13495    glContext->hooks->gl.glGenRenderbuffersOES(n, renderbuffers);
13496    nsecs_t end_time = systemTime();
13497
13498    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13499    glContext->traceGLMessage(&glmsg);
13500}
13501
13502void GLTrace_glRenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) {
13503    GLMessage glmsg;
13504    GLTraceContext *glContext = getGLTraceContext();
13505
13506    glmsg.set_function(GLMessage::glRenderbufferStorageOES);
13507
13508    // copy argument target
13509    GLMessage_DataType *arg_target = glmsg.add_args();
13510    arg_target->set_isarray(false);
13511    arg_target->set_type(GLMessage::DataType::ENUM);
13512    arg_target->add_intvalue((int)target);
13513
13514    // copy argument internalformat
13515    GLMessage_DataType *arg_internalformat = glmsg.add_args();
13516    arg_internalformat->set_isarray(false);
13517    arg_internalformat->set_type(GLMessage::DataType::ENUM);
13518    arg_internalformat->add_intvalue((int)internalformat);
13519
13520    // copy argument width
13521    GLMessage_DataType *arg_width = glmsg.add_args();
13522    arg_width->set_isarray(false);
13523    arg_width->set_type(GLMessage::DataType::INT);
13524    arg_width->add_intvalue(width);
13525
13526    // copy argument height
13527    GLMessage_DataType *arg_height = glmsg.add_args();
13528    arg_height->set_isarray(false);
13529    arg_height->set_type(GLMessage::DataType::INT);
13530    arg_height->add_intvalue(height);
13531
13532    // call function
13533    nsecs_t start_time = systemTime();
13534    glContext->hooks->gl.glRenderbufferStorageOES(target, internalformat, width, height);
13535    nsecs_t end_time = systemTime();
13536
13537    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13538    glContext->traceGLMessage(&glmsg);
13539}
13540
13541void GLTrace_glGetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params) {
13542    GLMessage glmsg;
13543    GLTraceContext *glContext = getGLTraceContext();
13544
13545    glmsg.set_function(GLMessage::glGetRenderbufferParameterivOES);
13546
13547    // copy argument target
13548    GLMessage_DataType *arg_target = glmsg.add_args();
13549    arg_target->set_isarray(false);
13550    arg_target->set_type(GLMessage::DataType::ENUM);
13551    arg_target->add_intvalue((int)target);
13552
13553    // copy argument pname
13554    GLMessage_DataType *arg_pname = glmsg.add_args();
13555    arg_pname->set_isarray(false);
13556    arg_pname->set_type(GLMessage::DataType::ENUM);
13557    arg_pname->add_intvalue((int)pname);
13558
13559    // copy argument params
13560    GLMessage_DataType *arg_params = glmsg.add_args();
13561    arg_params->set_isarray(false);
13562    arg_params->set_type(GLMessage::DataType::INT);
13563    arg_params->add_intvalue((int)params);
13564
13565    // call function
13566    nsecs_t start_time = systemTime();
13567    glContext->hooks->gl.glGetRenderbufferParameterivOES(target, pname, params);
13568    nsecs_t end_time = systemTime();
13569
13570    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13571    glContext->traceGLMessage(&glmsg);
13572}
13573
13574GLboolean GLTrace_glIsFramebufferOES(GLuint framebuffer) {
13575    GLMessage glmsg;
13576    GLTraceContext *glContext = getGLTraceContext();
13577
13578    glmsg.set_function(GLMessage::glIsFramebufferOES);
13579
13580    // copy argument framebuffer
13581    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
13582    arg_framebuffer->set_isarray(false);
13583    arg_framebuffer->set_type(GLMessage::DataType::INT);
13584    arg_framebuffer->add_intvalue(framebuffer);
13585
13586    // call function
13587    nsecs_t start_time = systemTime();
13588    GLboolean retValue = glContext->hooks->gl.glIsFramebufferOES(framebuffer);
13589    nsecs_t end_time = systemTime();
13590
13591    // set return value
13592    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
13593    rt->set_isarray(false);
13594    rt->set_type(GLMessage::DataType::BOOL);
13595    rt->add_boolvalue(retValue);
13596
13597    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13598    glContext->traceGLMessage(&glmsg);
13599
13600    return retValue;
13601}
13602
13603void GLTrace_glBindFramebufferOES(GLenum target, GLuint framebuffer) {
13604    GLMessage glmsg;
13605    GLTraceContext *glContext = getGLTraceContext();
13606
13607    glmsg.set_function(GLMessage::glBindFramebufferOES);
13608
13609    // copy argument target
13610    GLMessage_DataType *arg_target = glmsg.add_args();
13611    arg_target->set_isarray(false);
13612    arg_target->set_type(GLMessage::DataType::ENUM);
13613    arg_target->add_intvalue((int)target);
13614
13615    // copy argument framebuffer
13616    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
13617    arg_framebuffer->set_isarray(false);
13618    arg_framebuffer->set_type(GLMessage::DataType::INT);
13619    arg_framebuffer->add_intvalue(framebuffer);
13620
13621    // call function
13622    nsecs_t start_time = systemTime();
13623    glContext->hooks->gl.glBindFramebufferOES(target, framebuffer);
13624    nsecs_t end_time = systemTime();
13625
13626    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13627    glContext->traceGLMessage(&glmsg);
13628}
13629
13630void GLTrace_glDeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers) {
13631    GLMessage glmsg;
13632    GLTraceContext *glContext = getGLTraceContext();
13633
13634    glmsg.set_function(GLMessage::glDeleteFramebuffersOES);
13635
13636    // copy argument n
13637    GLMessage_DataType *arg_n = glmsg.add_args();
13638    arg_n->set_isarray(false);
13639    arg_n->set_type(GLMessage::DataType::INT);
13640    arg_n->add_intvalue(n);
13641
13642    // copy argument framebuffers
13643    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
13644    arg_framebuffers->set_isarray(false);
13645    arg_framebuffers->set_type(GLMessage::DataType::INT);
13646    arg_framebuffers->add_intvalue((int)framebuffers);
13647
13648    // call function
13649    nsecs_t start_time = systemTime();
13650    glContext->hooks->gl.glDeleteFramebuffersOES(n, framebuffers);
13651    nsecs_t end_time = systemTime();
13652
13653    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13654    glContext->traceGLMessage(&glmsg);
13655}
13656
13657void GLTrace_glGenFramebuffersOES(GLsizei n, GLuint* framebuffers) {
13658    GLMessage glmsg;
13659    GLTraceContext *glContext = getGLTraceContext();
13660
13661    glmsg.set_function(GLMessage::glGenFramebuffersOES);
13662
13663    // copy argument n
13664    GLMessage_DataType *arg_n = glmsg.add_args();
13665    arg_n->set_isarray(false);
13666    arg_n->set_type(GLMessage::DataType::INT);
13667    arg_n->add_intvalue(n);
13668
13669    // copy argument framebuffers
13670    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
13671    arg_framebuffers->set_isarray(false);
13672    arg_framebuffers->set_type(GLMessage::DataType::INT);
13673    arg_framebuffers->add_intvalue((int)framebuffers);
13674
13675    // call function
13676    nsecs_t start_time = systemTime();
13677    glContext->hooks->gl.glGenFramebuffersOES(n, framebuffers);
13678    nsecs_t end_time = systemTime();
13679
13680    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13681    glContext->traceGLMessage(&glmsg);
13682}
13683
13684GLenum GLTrace_glCheckFramebufferStatusOES(GLenum target) {
13685    GLMessage glmsg;
13686    GLTraceContext *glContext = getGLTraceContext();
13687
13688    glmsg.set_function(GLMessage::glCheckFramebufferStatusOES);
13689
13690    // copy argument target
13691    GLMessage_DataType *arg_target = glmsg.add_args();
13692    arg_target->set_isarray(false);
13693    arg_target->set_type(GLMessage::DataType::ENUM);
13694    arg_target->add_intvalue((int)target);
13695
13696    // call function
13697    nsecs_t start_time = systemTime();
13698    GLenum retValue = glContext->hooks->gl.glCheckFramebufferStatusOES(target);
13699    nsecs_t end_time = systemTime();
13700
13701    // set return value
13702    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
13703    rt->set_isarray(false);
13704    rt->set_type(GLMessage::DataType::ENUM);
13705    rt->add_intvalue((int)retValue);
13706
13707    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13708    glContext->traceGLMessage(&glmsg);
13709
13710    return retValue;
13711}
13712
13713void GLTrace_glFramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) {
13714    GLMessage glmsg;
13715    GLTraceContext *glContext = getGLTraceContext();
13716
13717    glmsg.set_function(GLMessage::glFramebufferRenderbufferOES);
13718
13719    // copy argument target
13720    GLMessage_DataType *arg_target = glmsg.add_args();
13721    arg_target->set_isarray(false);
13722    arg_target->set_type(GLMessage::DataType::ENUM);
13723    arg_target->add_intvalue((int)target);
13724
13725    // copy argument attachment
13726    GLMessage_DataType *arg_attachment = glmsg.add_args();
13727    arg_attachment->set_isarray(false);
13728    arg_attachment->set_type(GLMessage::DataType::ENUM);
13729    arg_attachment->add_intvalue((int)attachment);
13730
13731    // copy argument renderbuffertarget
13732    GLMessage_DataType *arg_renderbuffertarget = glmsg.add_args();
13733    arg_renderbuffertarget->set_isarray(false);
13734    arg_renderbuffertarget->set_type(GLMessage::DataType::ENUM);
13735    arg_renderbuffertarget->add_intvalue((int)renderbuffertarget);
13736
13737    // copy argument renderbuffer
13738    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
13739    arg_renderbuffer->set_isarray(false);
13740    arg_renderbuffer->set_type(GLMessage::DataType::INT);
13741    arg_renderbuffer->add_intvalue(renderbuffer);
13742
13743    // call function
13744    nsecs_t start_time = systemTime();
13745    glContext->hooks->gl.glFramebufferRenderbufferOES(target, attachment, renderbuffertarget, renderbuffer);
13746    nsecs_t end_time = systemTime();
13747
13748    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13749    glContext->traceGLMessage(&glmsg);
13750}
13751
13752void GLTrace_glFramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) {
13753    GLMessage glmsg;
13754    GLTraceContext *glContext = getGLTraceContext();
13755
13756    glmsg.set_function(GLMessage::glFramebufferTexture2DOES);
13757
13758    // copy argument target
13759    GLMessage_DataType *arg_target = glmsg.add_args();
13760    arg_target->set_isarray(false);
13761    arg_target->set_type(GLMessage::DataType::ENUM);
13762    arg_target->add_intvalue((int)target);
13763
13764    // copy argument attachment
13765    GLMessage_DataType *arg_attachment = glmsg.add_args();
13766    arg_attachment->set_isarray(false);
13767    arg_attachment->set_type(GLMessage::DataType::ENUM);
13768    arg_attachment->add_intvalue((int)attachment);
13769
13770    // copy argument textarget
13771    GLMessage_DataType *arg_textarget = glmsg.add_args();
13772    arg_textarget->set_isarray(false);
13773    arg_textarget->set_type(GLMessage::DataType::ENUM);
13774    arg_textarget->add_intvalue((int)textarget);
13775
13776    // copy argument texture
13777    GLMessage_DataType *arg_texture = glmsg.add_args();
13778    arg_texture->set_isarray(false);
13779    arg_texture->set_type(GLMessage::DataType::INT);
13780    arg_texture->add_intvalue(texture);
13781
13782    // copy argument level
13783    GLMessage_DataType *arg_level = glmsg.add_args();
13784    arg_level->set_isarray(false);
13785    arg_level->set_type(GLMessage::DataType::INT);
13786    arg_level->add_intvalue(level);
13787
13788    // call function
13789    nsecs_t start_time = systemTime();
13790    glContext->hooks->gl.glFramebufferTexture2DOES(target, attachment, textarget, texture, level);
13791    nsecs_t end_time = systemTime();
13792
13793    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13794    glContext->traceGLMessage(&glmsg);
13795}
13796
13797void GLTrace_glGetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint* params) {
13798    GLMessage glmsg;
13799    GLTraceContext *glContext = getGLTraceContext();
13800
13801    glmsg.set_function(GLMessage::glGetFramebufferAttachmentParameterivOES);
13802
13803    // copy argument target
13804    GLMessage_DataType *arg_target = glmsg.add_args();
13805    arg_target->set_isarray(false);
13806    arg_target->set_type(GLMessage::DataType::ENUM);
13807    arg_target->add_intvalue((int)target);
13808
13809    // copy argument attachment
13810    GLMessage_DataType *arg_attachment = glmsg.add_args();
13811    arg_attachment->set_isarray(false);
13812    arg_attachment->set_type(GLMessage::DataType::ENUM);
13813    arg_attachment->add_intvalue((int)attachment);
13814
13815    // copy argument pname
13816    GLMessage_DataType *arg_pname = glmsg.add_args();
13817    arg_pname->set_isarray(false);
13818    arg_pname->set_type(GLMessage::DataType::ENUM);
13819    arg_pname->add_intvalue((int)pname);
13820
13821    // copy argument params
13822    GLMessage_DataType *arg_params = glmsg.add_args();
13823    arg_params->set_isarray(false);
13824    arg_params->set_type(GLMessage::DataType::INT);
13825    arg_params->add_intvalue((int)params);
13826
13827    // call function
13828    nsecs_t start_time = systemTime();
13829    glContext->hooks->gl.glGetFramebufferAttachmentParameterivOES(target, attachment, pname, params);
13830    nsecs_t end_time = systemTime();
13831
13832    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13833    glContext->traceGLMessage(&glmsg);
13834}
13835
13836void GLTrace_glGenerateMipmapOES(GLenum target) {
13837    GLMessage glmsg;
13838    GLTraceContext *glContext = getGLTraceContext();
13839
13840    glmsg.set_function(GLMessage::glGenerateMipmapOES);
13841
13842    // copy argument target
13843    GLMessage_DataType *arg_target = glmsg.add_args();
13844    arg_target->set_isarray(false);
13845    arg_target->set_type(GLMessage::DataType::ENUM);
13846    arg_target->add_intvalue((int)target);
13847
13848    // call function
13849    nsecs_t start_time = systemTime();
13850    glContext->hooks->gl.glGenerateMipmapOES(target);
13851    nsecs_t end_time = systemTime();
13852
13853    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13854    glContext->traceGLMessage(&glmsg);
13855}
13856
13857void GLTrace_glCurrentPaletteMatrixOES(GLuint matrixpaletteindex) {
13858    GLMessage glmsg;
13859    GLTraceContext *glContext = getGLTraceContext();
13860
13861    glmsg.set_function(GLMessage::glCurrentPaletteMatrixOES);
13862
13863    // copy argument matrixpaletteindex
13864    GLMessage_DataType *arg_matrixpaletteindex = glmsg.add_args();
13865    arg_matrixpaletteindex->set_isarray(false);
13866    arg_matrixpaletteindex->set_type(GLMessage::DataType::INT);
13867    arg_matrixpaletteindex->add_intvalue(matrixpaletteindex);
13868
13869    // call function
13870    nsecs_t start_time = systemTime();
13871    glContext->hooks->gl.glCurrentPaletteMatrixOES(matrixpaletteindex);
13872    nsecs_t end_time = systemTime();
13873
13874    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13875    glContext->traceGLMessage(&glmsg);
13876}
13877
13878void GLTrace_glLoadPaletteFromModelViewMatrixOES(void) {
13879    GLMessage glmsg;
13880    GLTraceContext *glContext = getGLTraceContext();
13881
13882    glmsg.set_function(GLMessage::glLoadPaletteFromModelViewMatrixOES);
13883
13884    // call function
13885    nsecs_t start_time = systemTime();
13886    glContext->hooks->gl.glLoadPaletteFromModelViewMatrixOES();
13887    nsecs_t end_time = systemTime();
13888
13889    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13890    glContext->traceGLMessage(&glmsg);
13891}
13892
13893void GLTrace_glMatrixIndexPointerOES(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
13894    GLMessage glmsg;
13895    GLTraceContext *glContext = getGLTraceContext();
13896
13897    glmsg.set_function(GLMessage::glMatrixIndexPointerOES);
13898
13899    // copy argument size
13900    GLMessage_DataType *arg_size = glmsg.add_args();
13901    arg_size->set_isarray(false);
13902    arg_size->set_type(GLMessage::DataType::INT);
13903    arg_size->add_intvalue(size);
13904
13905    // copy argument type
13906    GLMessage_DataType *arg_type = glmsg.add_args();
13907    arg_type->set_isarray(false);
13908    arg_type->set_type(GLMessage::DataType::ENUM);
13909    arg_type->add_intvalue((int)type);
13910
13911    // copy argument stride
13912    GLMessage_DataType *arg_stride = glmsg.add_args();
13913    arg_stride->set_isarray(false);
13914    arg_stride->set_type(GLMessage::DataType::INT);
13915    arg_stride->add_intvalue(stride);
13916
13917    // copy argument pointer
13918    GLMessage_DataType *arg_pointer = glmsg.add_args();
13919    arg_pointer->set_isarray(false);
13920    arg_pointer->set_type(GLMessage::DataType::INT);
13921    arg_pointer->add_intvalue((int)pointer);
13922
13923    // call function
13924    nsecs_t start_time = systemTime();
13925    glContext->hooks->gl.glMatrixIndexPointerOES(size, type, stride, pointer);
13926    nsecs_t end_time = systemTime();
13927
13928    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13929    glContext->traceGLMessage(&glmsg);
13930}
13931
13932void GLTrace_glWeightPointerOES(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
13933    GLMessage glmsg;
13934    GLTraceContext *glContext = getGLTraceContext();
13935
13936    glmsg.set_function(GLMessage::glWeightPointerOES);
13937
13938    // copy argument size
13939    GLMessage_DataType *arg_size = glmsg.add_args();
13940    arg_size->set_isarray(false);
13941    arg_size->set_type(GLMessage::DataType::INT);
13942    arg_size->add_intvalue(size);
13943
13944    // copy argument type
13945    GLMessage_DataType *arg_type = glmsg.add_args();
13946    arg_type->set_isarray(false);
13947    arg_type->set_type(GLMessage::DataType::ENUM);
13948    arg_type->add_intvalue((int)type);
13949
13950    // copy argument stride
13951    GLMessage_DataType *arg_stride = glmsg.add_args();
13952    arg_stride->set_isarray(false);
13953    arg_stride->set_type(GLMessage::DataType::INT);
13954    arg_stride->add_intvalue(stride);
13955
13956    // copy argument pointer
13957    GLMessage_DataType *arg_pointer = glmsg.add_args();
13958    arg_pointer->set_isarray(false);
13959    arg_pointer->set_type(GLMessage::DataType::INT);
13960    arg_pointer->add_intvalue((int)pointer);
13961
13962    // call function
13963    nsecs_t start_time = systemTime();
13964    glContext->hooks->gl.glWeightPointerOES(size, type, stride, pointer);
13965    nsecs_t end_time = systemTime();
13966
13967    fixupGLMessage(glContext, start_time, end_time, &glmsg);
13968    glContext->traceGLMessage(&glmsg);
13969}
13970
13971GLbitfield GLTrace_glQueryMatrixxOES(GLfixed mantissa[16], GLint exponent[16]) {
13972    GLMessage glmsg;
13973    GLTraceContext *glContext = getGLTraceContext();
13974
13975    glmsg.set_function(GLMessage::glQueryMatrixxOES);
13976
13977    // copy argument mantissa
13978    GLMessage_DataType *arg_mantissa = glmsg.add_args();
13979    arg_mantissa->set_isarray(false);
13980    arg_mantissa->set_type(GLMessage::DataType::INT);
13981    arg_mantissa->add_intvalue((int)mantissa);
13982
13983    // copy argument exponent
13984    GLMessage_DataType *arg_exponent = glmsg.add_args();
13985    arg_exponent->set_isarray(false);
13986    arg_exponent->set_type(GLMessage::DataType::INT);
13987    arg_exponent->add_intvalue((int)exponent);
13988
13989    // call function
13990    nsecs_t start_time = systemTime();
13991    GLbitfield retValue = glContext->hooks->gl.glQueryMatrixxOES(mantissa, exponent);
13992    nsecs_t end_time = systemTime();
13993
13994    // set return value
13995    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
13996    rt->set_isarray(false);
13997    rt->set_type(GLMessage::DataType::INT);
13998    rt->add_intvalue(retValue);
13999
14000    fixupGLMessage(glContext, start_time, end_time, &glmsg);
14001    glContext->traceGLMessage(&glmsg);
14002
14003    return retValue;
14004}
14005
14006void GLTrace_glDepthRangefOES(GLclampf zNear, GLclampf zFar) {
14007    GLMessage glmsg;
14008    GLTraceContext *glContext = getGLTraceContext();
14009
14010    glmsg.set_function(GLMessage::glDepthRangefOES);
14011
14012    // copy argument zNear
14013    GLMessage_DataType *arg_zNear = glmsg.add_args();
14014    arg_zNear->set_isarray(false);
14015    arg_zNear->set_type(GLMessage::DataType::FLOAT);
14016    arg_zNear->add_floatvalue(zNear);
14017
14018    // copy argument zFar
14019    GLMessage_DataType *arg_zFar = glmsg.add_args();
14020    arg_zFar->set_isarray(false);
14021    arg_zFar->set_type(GLMessage::DataType::FLOAT);
14022    arg_zFar->add_floatvalue(zFar);
14023
14024    // call function
14025    nsecs_t start_time = systemTime();
14026    glContext->hooks->gl.glDepthRangefOES(zNear, zFar);
14027    nsecs_t end_time = systemTime();
14028
14029    fixupGLMessage(glContext, start_time, end_time, &glmsg);
14030    glContext->traceGLMessage(&glmsg);
14031}
14032
14033void GLTrace_glFrustumfOES(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
14034    GLMessage glmsg;
14035    GLTraceContext *glContext = getGLTraceContext();
14036
14037    glmsg.set_function(GLMessage::glFrustumfOES);
14038
14039    // copy argument left
14040    GLMessage_DataType *arg_left = glmsg.add_args();
14041    arg_left->set_isarray(false);
14042    arg_left->set_type(GLMessage::DataType::FLOAT);
14043    arg_left->add_floatvalue(left);
14044
14045    // copy argument right
14046    GLMessage_DataType *arg_right = glmsg.add_args();
14047    arg_right->set_isarray(false);
14048    arg_right->set_type(GLMessage::DataType::FLOAT);
14049    arg_right->add_floatvalue(right);
14050
14051    // copy argument bottom
14052    GLMessage_DataType *arg_bottom = glmsg.add_args();
14053    arg_bottom->set_isarray(false);
14054    arg_bottom->set_type(GLMessage::DataType::FLOAT);
14055    arg_bottom->add_floatvalue(bottom);
14056
14057    // copy argument top
14058    GLMessage_DataType *arg_top = glmsg.add_args();
14059    arg_top->set_isarray(false);
14060    arg_top->set_type(GLMessage::DataType::FLOAT);
14061    arg_top->add_floatvalue(top);
14062
14063    // copy argument zNear
14064    GLMessage_DataType *arg_zNear = glmsg.add_args();
14065    arg_zNear->set_isarray(false);
14066    arg_zNear->set_type(GLMessage::DataType::FLOAT);
14067    arg_zNear->add_floatvalue(zNear);
14068
14069    // copy argument zFar
14070    GLMessage_DataType *arg_zFar = glmsg.add_args();
14071    arg_zFar->set_isarray(false);
14072    arg_zFar->set_type(GLMessage::DataType::FLOAT);
14073    arg_zFar->add_floatvalue(zFar);
14074
14075    // call function
14076    nsecs_t start_time = systemTime();
14077    glContext->hooks->gl.glFrustumfOES(left, right, bottom, top, zNear, zFar);
14078    nsecs_t end_time = systemTime();
14079
14080    fixupGLMessage(glContext, start_time, end_time, &glmsg);
14081    glContext->traceGLMessage(&glmsg);
14082}
14083
14084void GLTrace_glOrthofOES(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
14085    GLMessage glmsg;
14086    GLTraceContext *glContext = getGLTraceContext();
14087
14088    glmsg.set_function(GLMessage::glOrthofOES);
14089
14090    // copy argument left
14091    GLMessage_DataType *arg_left = glmsg.add_args();
14092    arg_left->set_isarray(false);
14093    arg_left->set_type(GLMessage::DataType::FLOAT);
14094    arg_left->add_floatvalue(left);
14095
14096    // copy argument right
14097    GLMessage_DataType *arg_right = glmsg.add_args();
14098    arg_right->set_isarray(false);
14099    arg_right->set_type(GLMessage::DataType::FLOAT);
14100    arg_right->add_floatvalue(right);
14101
14102    // copy argument bottom
14103    GLMessage_DataType *arg_bottom = glmsg.add_args();
14104    arg_bottom->set_isarray(false);
14105    arg_bottom->set_type(GLMessage::DataType::FLOAT);
14106    arg_bottom->add_floatvalue(bottom);
14107
14108    // copy argument top
14109    GLMessage_DataType *arg_top = glmsg.add_args();
14110    arg_top->set_isarray(false);
14111    arg_top->set_type(GLMessage::DataType::FLOAT);
14112    arg_top->add_floatvalue(top);
14113
14114    // copy argument zNear
14115    GLMessage_DataType *arg_zNear = glmsg.add_args();
14116    arg_zNear->set_isarray(false);
14117    arg_zNear->set_type(GLMessage::DataType::FLOAT);
14118    arg_zNear->add_floatvalue(zNear);
14119
14120    // copy argument zFar
14121    GLMessage_DataType *arg_zFar = glmsg.add_args();
14122    arg_zFar->set_isarray(false);
14123    arg_zFar->set_type(GLMessage::DataType::FLOAT);
14124    arg_zFar->add_floatvalue(zFar);
14125
14126    // call function
14127    nsecs_t start_time = systemTime();
14128    glContext->hooks->gl.glOrthofOES(left, right, bottom, top, zNear, zFar);
14129    nsecs_t end_time = systemTime();
14130
14131    fixupGLMessage(glContext, start_time, end_time, &glmsg);
14132    glContext->traceGLMessage(&glmsg);
14133}
14134
14135void GLTrace_glClipPlanefOES(GLenum plane, const GLfloat *equation) {
14136    GLMessage glmsg;
14137    GLTraceContext *glContext = getGLTraceContext();
14138
14139    glmsg.set_function(GLMessage::glClipPlanefOES);
14140
14141    // copy argument plane
14142    GLMessage_DataType *arg_plane = glmsg.add_args();
14143    arg_plane->set_isarray(false);
14144    arg_plane->set_type(GLMessage::DataType::ENUM);
14145    arg_plane->add_intvalue((int)plane);
14146
14147    // copy argument equation
14148    GLMessage_DataType *arg_equation = glmsg.add_args();
14149    arg_equation->set_isarray(false);
14150    arg_equation->set_type(GLMessage::DataType::INT);
14151    arg_equation->add_intvalue((int)equation);
14152
14153    // call function
14154    nsecs_t start_time = systemTime();
14155    glContext->hooks->gl.glClipPlanefOES(plane, equation);
14156    nsecs_t end_time = systemTime();
14157
14158    fixupGLMessage(glContext, start_time, end_time, &glmsg);
14159    glContext->traceGLMessage(&glmsg);
14160}
14161
14162void GLTrace_glGetClipPlanefOES(GLenum pname, GLfloat eqn[4]) {
14163    GLMessage glmsg;
14164    GLTraceContext *glContext = getGLTraceContext();
14165
14166    glmsg.set_function(GLMessage::glGetClipPlanefOES);
14167
14168    // copy argument pname
14169    GLMessage_DataType *arg_pname = glmsg.add_args();
14170    arg_pname->set_isarray(false);
14171    arg_pname->set_type(GLMessage::DataType::ENUM);
14172    arg_pname->add_intvalue((int)pname);
14173
14174    // copy argument eqn
14175    GLMessage_DataType *arg_eqn = glmsg.add_args();
14176    arg_eqn->set_isarray(false);
14177    arg_eqn->set_type(GLMessage::DataType::INT);
14178    arg_eqn->add_intvalue((int)eqn);
14179
14180    // call function
14181    nsecs_t start_time = systemTime();
14182    glContext->hooks->gl.glGetClipPlanefOES(pname, eqn);
14183    nsecs_t end_time = systemTime();
14184
14185    fixupGLMessage(glContext, start_time, end_time, &glmsg);
14186    glContext->traceGLMessage(&glmsg);
14187}
14188
14189void GLTrace_glClearDepthfOES(GLclampf depth) {
14190    GLMessage glmsg;
14191    GLTraceContext *glContext = getGLTraceContext();
14192
14193    glmsg.set_function(GLMessage::glClearDepthfOES);
14194
14195    // copy argument depth
14196    GLMessage_DataType *arg_depth = glmsg.add_args();
14197    arg_depth->set_isarray(false);
14198    arg_depth->set_type(GLMessage::DataType::FLOAT);
14199    arg_depth->add_floatvalue(depth);
14200
14201    // call function
14202    nsecs_t start_time = systemTime();
14203    glContext->hooks->gl.glClearDepthfOES(depth);
14204    nsecs_t end_time = systemTime();
14205
14206    fixupGLMessage(glContext, start_time, end_time, &glmsg);
14207    glContext->traceGLMessage(&glmsg);
14208}
14209
14210void GLTrace_glTexGenfOES(GLenum coord, GLenum pname, GLfloat param) {
14211    GLMessage glmsg;
14212    GLTraceContext *glContext = getGLTraceContext();
14213
14214    glmsg.set_function(GLMessage::glTexGenfOES);
14215
14216    // copy argument coord
14217    GLMessage_DataType *arg_coord = glmsg.add_args();
14218    arg_coord->set_isarray(false);
14219    arg_coord->set_type(GLMessage::DataType::ENUM);
14220    arg_coord->add_intvalue((int)coord);
14221
14222    // copy argument pname
14223    GLMessage_DataType *arg_pname = glmsg.add_args();
14224    arg_pname->set_isarray(false);
14225    arg_pname->set_type(GLMessage::DataType::ENUM);
14226    arg_pname->add_intvalue((int)pname);
14227
14228    // copy argument param
14229    GLMessage_DataType *arg_param = glmsg.add_args();
14230    arg_param->set_isarray(false);
14231    arg_param->set_type(GLMessage::DataType::FLOAT);
14232    arg_param->add_floatvalue(param);
14233
14234    // call function
14235    nsecs_t start_time = systemTime();
14236    glContext->hooks->gl.glTexGenfOES(coord, pname, param);
14237    nsecs_t end_time = systemTime();
14238
14239    fixupGLMessage(glContext, start_time, end_time, &glmsg);
14240    glContext->traceGLMessage(&glmsg);
14241}
14242
14243void GLTrace_glTexGenfvOES(GLenum coord, GLenum pname, const GLfloat *params) {
14244    GLMessage glmsg;
14245    GLTraceContext *glContext = getGLTraceContext();
14246
14247    glmsg.set_function(GLMessage::glTexGenfvOES);
14248
14249    // copy argument coord
14250    GLMessage_DataType *arg_coord = glmsg.add_args();
14251    arg_coord->set_isarray(false);
14252    arg_coord->set_type(GLMessage::DataType::ENUM);
14253    arg_coord->add_intvalue((int)coord);
14254
14255    // copy argument pname
14256    GLMessage_DataType *arg_pname = glmsg.add_args();
14257    arg_pname->set_isarray(false);
14258    arg_pname->set_type(GLMessage::DataType::ENUM);
14259    arg_pname->add_intvalue((int)pname);
14260
14261    // copy argument params
14262    GLMessage_DataType *arg_params = glmsg.add_args();
14263    arg_params->set_isarray(false);
14264    arg_params->set_type(GLMessage::DataType::INT);
14265    arg_params->add_intvalue((int)params);
14266
14267    // call function
14268    nsecs_t start_time = systemTime();
14269    glContext->hooks->gl.glTexGenfvOES(coord, pname, params);
14270    nsecs_t end_time = systemTime();
14271
14272    fixupGLMessage(glContext, start_time, end_time, &glmsg);
14273    glContext->traceGLMessage(&glmsg);
14274}
14275
14276void GLTrace_glTexGeniOES(GLenum coord, GLenum pname, GLint param) {
14277    GLMessage glmsg;
14278    GLTraceContext *glContext = getGLTraceContext();
14279
14280    glmsg.set_function(GLMessage::glTexGeniOES);
14281
14282    // copy argument coord
14283    GLMessage_DataType *arg_coord = glmsg.add_args();
14284    arg_coord->set_isarray(false);
14285    arg_coord->set_type(GLMessage::DataType::ENUM);
14286    arg_coord->add_intvalue((int)coord);
14287
14288    // copy argument pname
14289    GLMessage_DataType *arg_pname = glmsg.add_args();
14290    arg_pname->set_isarray(false);
14291    arg_pname->set_type(GLMessage::DataType::ENUM);
14292    arg_pname->add_intvalue((int)pname);
14293
14294    // copy argument param
14295    GLMessage_DataType *arg_param = glmsg.add_args();
14296    arg_param->set_isarray(false);
14297    arg_param->set_type(GLMessage::DataType::INT);
14298    arg_param->add_intvalue(param);
14299
14300    // call function
14301    nsecs_t start_time = systemTime();
14302    glContext->hooks->gl.glTexGeniOES(coord, pname, param);
14303    nsecs_t end_time = systemTime();
14304
14305    fixupGLMessage(glContext, start_time, end_time, &glmsg);
14306    glContext->traceGLMessage(&glmsg);
14307}
14308
14309void GLTrace_glTexGenivOES(GLenum coord, GLenum pname, const GLint *params) {
14310    GLMessage glmsg;
14311    GLTraceContext *glContext = getGLTraceContext();
14312
14313    glmsg.set_function(GLMessage::glTexGenivOES);
14314
14315    // copy argument coord
14316    GLMessage_DataType *arg_coord = glmsg.add_args();
14317    arg_coord->set_isarray(false);
14318    arg_coord->set_type(GLMessage::DataType::ENUM);
14319    arg_coord->add_intvalue((int)coord);
14320
14321    // copy argument pname
14322    GLMessage_DataType *arg_pname = glmsg.add_args();
14323    arg_pname->set_isarray(false);
14324    arg_pname->set_type(GLMessage::DataType::ENUM);
14325    arg_pname->add_intvalue((int)pname);
14326
14327    // copy argument params
14328    GLMessage_DataType *arg_params = glmsg.add_args();
14329    arg_params->set_isarray(false);
14330    arg_params->set_type(GLMessage::DataType::INT);
14331    arg_params->add_intvalue((int)params);
14332
14333    // call function
14334    nsecs_t start_time = systemTime();
14335    glContext->hooks->gl.glTexGenivOES(coord, pname, params);
14336    nsecs_t end_time = systemTime();
14337
14338    fixupGLMessage(glContext, start_time, end_time, &glmsg);
14339    glContext->traceGLMessage(&glmsg);
14340}
14341
14342void GLTrace_glTexGenxOES(GLenum coord, GLenum pname, GLfixed param) {
14343    GLMessage glmsg;
14344    GLTraceContext *glContext = getGLTraceContext();
14345
14346    glmsg.set_function(GLMessage::glTexGenxOES);
14347
14348    // copy argument coord
14349    GLMessage_DataType *arg_coord = glmsg.add_args();
14350    arg_coord->set_isarray(false);
14351    arg_coord->set_type(GLMessage::DataType::ENUM);
14352    arg_coord->add_intvalue((int)coord);
14353
14354    // copy argument pname
14355    GLMessage_DataType *arg_pname = glmsg.add_args();
14356    arg_pname->set_isarray(false);
14357    arg_pname->set_type(GLMessage::DataType::ENUM);
14358    arg_pname->add_intvalue((int)pname);
14359
14360    // copy argument param
14361    GLMessage_DataType *arg_param = glmsg.add_args();
14362    arg_param->set_isarray(false);
14363    arg_param->set_type(GLMessage::DataType::INT);
14364    arg_param->add_intvalue(param);
14365
14366    // call function
14367    nsecs_t start_time = systemTime();
14368    glContext->hooks->gl.glTexGenxOES(coord, pname, param);
14369    nsecs_t end_time = systemTime();
14370
14371    fixupGLMessage(glContext, start_time, end_time, &glmsg);
14372    glContext->traceGLMessage(&glmsg);
14373}
14374
14375void GLTrace_glTexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params) {
14376    GLMessage glmsg;
14377    GLTraceContext *glContext = getGLTraceContext();
14378
14379    glmsg.set_function(GLMessage::glTexGenxvOES);
14380
14381    // copy argument coord
14382    GLMessage_DataType *arg_coord = glmsg.add_args();
14383    arg_coord->set_isarray(false);
14384    arg_coord->set_type(GLMessage::DataType::ENUM);
14385    arg_coord->add_intvalue((int)coord);
14386
14387    // copy argument pname
14388    GLMessage_DataType *arg_pname = glmsg.add_args();
14389    arg_pname->set_isarray(false);
14390    arg_pname->set_type(GLMessage::DataType::ENUM);
14391    arg_pname->add_intvalue((int)pname);
14392
14393    // copy argument params
14394    GLMessage_DataType *arg_params = glmsg.add_args();
14395    arg_params->set_isarray(false);
14396    arg_params->set_type(GLMessage::DataType::INT);
14397    arg_params->add_intvalue((int)params);
14398
14399    // call function
14400    nsecs_t start_time = systemTime();
14401    glContext->hooks->gl.glTexGenxvOES(coord, pname, params);
14402    nsecs_t end_time = systemTime();
14403
14404    fixupGLMessage(glContext, start_time, end_time, &glmsg);
14405    glContext->traceGLMessage(&glmsg);
14406}
14407
14408void GLTrace_glGetTexGenfvOES(GLenum coord, GLenum pname, GLfloat *params) {
14409    GLMessage glmsg;
14410    GLTraceContext *glContext = getGLTraceContext();
14411
14412    glmsg.set_function(GLMessage::glGetTexGenfvOES);
14413
14414    // copy argument coord
14415    GLMessage_DataType *arg_coord = glmsg.add_args();
14416    arg_coord->set_isarray(false);
14417    arg_coord->set_type(GLMessage::DataType::ENUM);
14418    arg_coord->add_intvalue((int)coord);
14419
14420    // copy argument pname
14421    GLMessage_DataType *arg_pname = glmsg.add_args();
14422    arg_pname->set_isarray(false);
14423    arg_pname->set_type(GLMessage::DataType::ENUM);
14424    arg_pname->add_intvalue((int)pname);
14425
14426    // copy argument params
14427    GLMessage_DataType *arg_params = glmsg.add_args();
14428    arg_params->set_isarray(false);
14429    arg_params->set_type(GLMessage::DataType::INT);
14430    arg_params->add_intvalue((int)params);
14431
14432    // call function
14433    nsecs_t start_time = systemTime();
14434    glContext->hooks->gl.glGetTexGenfvOES(coord, pname, params);
14435    nsecs_t end_time = systemTime();
14436
14437    fixupGLMessage(glContext, start_time, end_time, &glmsg);
14438    glContext->traceGLMessage(&glmsg);
14439}
14440
14441void GLTrace_glGetTexGenivOES(GLenum coord, GLenum pname, GLint *params) {
14442    GLMessage glmsg;
14443    GLTraceContext *glContext = getGLTraceContext();
14444
14445    glmsg.set_function(GLMessage::glGetTexGenivOES);
14446
14447    // copy argument coord
14448    GLMessage_DataType *arg_coord = glmsg.add_args();
14449    arg_coord->set_isarray(false);
14450    arg_coord->set_type(GLMessage::DataType::ENUM);
14451    arg_coord->add_intvalue((int)coord);
14452
14453    // copy argument pname
14454    GLMessage_DataType *arg_pname = glmsg.add_args();
14455    arg_pname->set_isarray(false);
14456    arg_pname->set_type(GLMessage::DataType::ENUM);
14457    arg_pname->add_intvalue((int)pname);
14458
14459    // copy argument params
14460    GLMessage_DataType *arg_params = glmsg.add_args();
14461    arg_params->set_isarray(false);
14462    arg_params->set_type(GLMessage::DataType::INT);
14463    arg_params->add_intvalue((int)params);
14464
14465    // call function
14466    nsecs_t start_time = systemTime();
14467    glContext->hooks->gl.glGetTexGenivOES(coord, pname, params);
14468    nsecs_t end_time = systemTime();
14469
14470    fixupGLMessage(glContext, start_time, end_time, &glmsg);
14471    glContext->traceGLMessage(&glmsg);
14472}
14473
14474void GLTrace_glGetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params) {
14475    GLMessage glmsg;
14476    GLTraceContext *glContext = getGLTraceContext();
14477
14478    glmsg.set_function(GLMessage::glGetTexGenxvOES);
14479
14480    // copy argument coord
14481    GLMessage_DataType *arg_coord = glmsg.add_args();
14482    arg_coord->set_isarray(false);
14483    arg_coord->set_type(GLMessage::DataType::ENUM);
14484    arg_coord->add_intvalue((int)coord);
14485
14486    // copy argument pname
14487    GLMessage_DataType *arg_pname = glmsg.add_args();
14488    arg_pname->set_isarray(false);
14489    arg_pname->set_type(GLMessage::DataType::ENUM);
14490    arg_pname->add_intvalue((int)pname);
14491
14492    // copy argument params
14493    GLMessage_DataType *arg_params = glmsg.add_args();
14494    arg_params->set_isarray(false);
14495    arg_params->set_type(GLMessage::DataType::INT);
14496    arg_params->add_intvalue((int)params);
14497
14498    // call function
14499    nsecs_t start_time = systemTime();
14500    glContext->hooks->gl.glGetTexGenxvOES(coord, pname, params);
14501    nsecs_t end_time = systemTime();
14502
14503    fixupGLMessage(glContext, start_time, end_time, &glmsg);
14504    glContext->traceGLMessage(&glmsg);
14505}
14506
14507void GLTrace_glClipPlanefIMG(GLenum p, const GLfloat *eqn) {
14508    GLMessage glmsg;
14509    GLTraceContext *glContext = getGLTraceContext();
14510
14511    glmsg.set_function(GLMessage::glClipPlanefIMG);
14512
14513    // copy argument p
14514    GLMessage_DataType *arg_p = glmsg.add_args();
14515    arg_p->set_isarray(false);
14516    arg_p->set_type(GLMessage::DataType::ENUM);
14517    arg_p->add_intvalue((int)p);
14518
14519    // copy argument eqn
14520    GLMessage_DataType *arg_eqn = glmsg.add_args();
14521    arg_eqn->set_isarray(false);
14522    arg_eqn->set_type(GLMessage::DataType::INT);
14523    arg_eqn->add_intvalue((int)eqn);
14524
14525    // call function
14526    nsecs_t start_time = systemTime();
14527    glContext->hooks->gl.glClipPlanefIMG(p, eqn);
14528    nsecs_t end_time = systemTime();
14529
14530    fixupGLMessage(glContext, start_time, end_time, &glmsg);
14531    glContext->traceGLMessage(&glmsg);
14532}
14533
14534void GLTrace_glClipPlanexIMG(GLenum p, const GLfixed *eqn) {
14535    GLMessage glmsg;
14536    GLTraceContext *glContext = getGLTraceContext();
14537
14538    glmsg.set_function(GLMessage::glClipPlanexIMG);
14539
14540    // copy argument p
14541    GLMessage_DataType *arg_p = glmsg.add_args();
14542    arg_p->set_isarray(false);
14543    arg_p->set_type(GLMessage::DataType::ENUM);
14544    arg_p->add_intvalue((int)p);
14545
14546    // copy argument eqn
14547    GLMessage_DataType *arg_eqn = glmsg.add_args();
14548    arg_eqn->set_isarray(false);
14549    arg_eqn->set_type(GLMessage::DataType::INT);
14550    arg_eqn->add_intvalue((int)eqn);
14551
14552    // call function
14553    nsecs_t start_time = systemTime();
14554    glContext->hooks->gl.glClipPlanexIMG(p, eqn);
14555    nsecs_t end_time = systemTime();
14556
14557    fixupGLMessage(glContext, start_time, end_time, &glmsg);
14558    glContext->traceGLMessage(&glmsg);
14559}
14560
14561
14562}; // namespace gltrace
14563}; // namespace android
14564