gltrace_api.cpp revision 56ac6ff9bdc3c117e820c5a361ab45049c8b03f8
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_glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum *attachments) {
5813    GLMessage glmsg;
5814    GLTraceContext *glContext = getGLTraceContext();
5815
5816    glmsg.set_function(GLMessage::glDiscardFramebufferEXT);
5817
5818    // copy argument target
5819    GLMessage_DataType *arg_target = glmsg.add_args();
5820    arg_target->set_isarray(false);
5821    arg_target->set_type(GLMessage::DataType::ENUM);
5822    arg_target->add_intvalue((int)target);
5823
5824    // copy argument numAttachments
5825    GLMessage_DataType *arg_numAttachments = glmsg.add_args();
5826    arg_numAttachments->set_isarray(false);
5827    arg_numAttachments->set_type(GLMessage::DataType::INT);
5828    arg_numAttachments->add_intvalue(numAttachments);
5829
5830    // copy argument attachments
5831    GLMessage_DataType *arg_attachments = glmsg.add_args();
5832    arg_attachments->set_isarray(false);
5833    arg_attachments->set_type(GLMessage::DataType::INT);
5834    arg_attachments->add_intvalue((int)attachments);
5835
5836    // call function
5837    nsecs_t start_time = systemTime();
5838    glContext->hooks->gl.glDiscardFramebufferEXT(target, numAttachments, attachments);
5839    nsecs_t end_time = systemTime();
5840
5841    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5842    glContext->traceGLMessage(&glmsg);
5843}
5844
5845void GLTrace_glMultiDrawArraysEXT(GLenum mode, GLint *first, GLsizei *count, GLsizei primcount) {
5846    GLMessage glmsg;
5847    GLTraceContext *glContext = getGLTraceContext();
5848
5849    glmsg.set_function(GLMessage::glMultiDrawArraysEXT);
5850
5851    // copy argument mode
5852    GLMessage_DataType *arg_mode = glmsg.add_args();
5853    arg_mode->set_isarray(false);
5854    arg_mode->set_type(GLMessage::DataType::ENUM);
5855    arg_mode->add_intvalue((int)mode);
5856
5857    // copy argument first
5858    GLMessage_DataType *arg_first = glmsg.add_args();
5859    arg_first->set_isarray(false);
5860    arg_first->set_type(GLMessage::DataType::INT);
5861    arg_first->add_intvalue((int)first);
5862
5863    // copy argument count
5864    GLMessage_DataType *arg_count = glmsg.add_args();
5865    arg_count->set_isarray(false);
5866    arg_count->set_type(GLMessage::DataType::INT);
5867    arg_count->add_intvalue((int)count);
5868
5869    // copy argument primcount
5870    GLMessage_DataType *arg_primcount = glmsg.add_args();
5871    arg_primcount->set_isarray(false);
5872    arg_primcount->set_type(GLMessage::DataType::INT);
5873    arg_primcount->add_intvalue(primcount);
5874
5875    // call function
5876    nsecs_t start_time = systemTime();
5877    glContext->hooks->gl.glMultiDrawArraysEXT(mode, first, count, primcount);
5878    nsecs_t end_time = systemTime();
5879
5880    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5881    glContext->traceGLMessage(&glmsg);
5882}
5883
5884void GLTrace_glMultiDrawElementsEXT(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount) {
5885    GLMessage glmsg;
5886    GLTraceContext *glContext = getGLTraceContext();
5887
5888    glmsg.set_function(GLMessage::glMultiDrawElementsEXT);
5889
5890    // copy argument mode
5891    GLMessage_DataType *arg_mode = glmsg.add_args();
5892    arg_mode->set_isarray(false);
5893    arg_mode->set_type(GLMessage::DataType::ENUM);
5894    arg_mode->add_intvalue((int)mode);
5895
5896    // copy argument count
5897    GLMessage_DataType *arg_count = glmsg.add_args();
5898    arg_count->set_isarray(false);
5899    arg_count->set_type(GLMessage::DataType::INT);
5900    arg_count->add_intvalue((int)count);
5901
5902    // copy argument type
5903    GLMessage_DataType *arg_type = glmsg.add_args();
5904    arg_type->set_isarray(false);
5905    arg_type->set_type(GLMessage::DataType::ENUM);
5906    arg_type->add_intvalue((int)type);
5907
5908    // copy argument indices
5909    GLMessage_DataType *arg_indices = glmsg.add_args();
5910    arg_indices->set_isarray(false);
5911    arg_indices->set_type(GLMessage::DataType::INT);
5912    arg_indices->add_intvalue((int)indices);
5913
5914    // copy argument primcount
5915    GLMessage_DataType *arg_primcount = glmsg.add_args();
5916    arg_primcount->set_isarray(false);
5917    arg_primcount->set_type(GLMessage::DataType::INT);
5918    arg_primcount->add_intvalue(primcount);
5919
5920    // call function
5921    nsecs_t start_time = systemTime();
5922    glContext->hooks->gl.glMultiDrawElementsEXT(mode, count, type, indices, primcount);
5923    nsecs_t end_time = systemTime();
5924
5925    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5926    glContext->traceGLMessage(&glmsg);
5927}
5928
5929void GLTrace_glRenderbufferStorageMultisampleIMG(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
5930    GLMessage glmsg;
5931    GLTraceContext *glContext = getGLTraceContext();
5932
5933    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleIMG);
5934
5935    // copy argument target
5936    GLMessage_DataType *arg_target = glmsg.add_args();
5937    arg_target->set_isarray(false);
5938    arg_target->set_type(GLMessage::DataType::ENUM);
5939    arg_target->add_intvalue((int)target);
5940
5941    // copy argument samples
5942    GLMessage_DataType *arg_samples = glmsg.add_args();
5943    arg_samples->set_isarray(false);
5944    arg_samples->set_type(GLMessage::DataType::INT);
5945    arg_samples->add_intvalue(samples);
5946
5947    // copy argument internalformat
5948    GLMessage_DataType *arg_internalformat = glmsg.add_args();
5949    arg_internalformat->set_isarray(false);
5950    arg_internalformat->set_type(GLMessage::DataType::ENUM);
5951    arg_internalformat->add_intvalue((int)internalformat);
5952
5953    // copy argument width
5954    GLMessage_DataType *arg_width = glmsg.add_args();
5955    arg_width->set_isarray(false);
5956    arg_width->set_type(GLMessage::DataType::INT);
5957    arg_width->add_intvalue(width);
5958
5959    // copy argument height
5960    GLMessage_DataType *arg_height = glmsg.add_args();
5961    arg_height->set_isarray(false);
5962    arg_height->set_type(GLMessage::DataType::INT);
5963    arg_height->add_intvalue(height);
5964
5965    // call function
5966    nsecs_t start_time = systemTime();
5967    glContext->hooks->gl.glRenderbufferStorageMultisampleIMG(target, samples, internalformat, width, height);
5968    nsecs_t end_time = systemTime();
5969
5970    fixupGLMessage(glContext, start_time, end_time, &glmsg);
5971    glContext->traceGLMessage(&glmsg);
5972}
5973
5974void GLTrace_glFramebufferTexture2DMultisampleIMG(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples) {
5975    GLMessage glmsg;
5976    GLTraceContext *glContext = getGLTraceContext();
5977
5978    glmsg.set_function(GLMessage::glFramebufferTexture2DMultisampleIMG);
5979
5980    // copy argument target
5981    GLMessage_DataType *arg_target = glmsg.add_args();
5982    arg_target->set_isarray(false);
5983    arg_target->set_type(GLMessage::DataType::ENUM);
5984    arg_target->add_intvalue((int)target);
5985
5986    // copy argument attachment
5987    GLMessage_DataType *arg_attachment = glmsg.add_args();
5988    arg_attachment->set_isarray(false);
5989    arg_attachment->set_type(GLMessage::DataType::ENUM);
5990    arg_attachment->add_intvalue((int)attachment);
5991
5992    // copy argument textarget
5993    GLMessage_DataType *arg_textarget = glmsg.add_args();
5994    arg_textarget->set_isarray(false);
5995    arg_textarget->set_type(GLMessage::DataType::ENUM);
5996    arg_textarget->add_intvalue((int)textarget);
5997
5998    // copy argument texture
5999    GLMessage_DataType *arg_texture = glmsg.add_args();
6000    arg_texture->set_isarray(false);
6001    arg_texture->set_type(GLMessage::DataType::INT);
6002    arg_texture->add_intvalue(texture);
6003
6004    // copy argument level
6005    GLMessage_DataType *arg_level = glmsg.add_args();
6006    arg_level->set_isarray(false);
6007    arg_level->set_type(GLMessage::DataType::INT);
6008    arg_level->add_intvalue(level);
6009
6010    // copy argument samples
6011    GLMessage_DataType *arg_samples = glmsg.add_args();
6012    arg_samples->set_isarray(false);
6013    arg_samples->set_type(GLMessage::DataType::INT);
6014    arg_samples->add_intvalue(samples);
6015
6016    // call function
6017    nsecs_t start_time = systemTime();
6018    glContext->hooks->gl.glFramebufferTexture2DMultisampleIMG(target, attachment, textarget, texture, level, samples);
6019    nsecs_t end_time = systemTime();
6020
6021    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6022    glContext->traceGLMessage(&glmsg);
6023}
6024
6025void GLTrace_glDeleteFencesNV(GLsizei n, const GLuint *fences) {
6026    GLMessage glmsg;
6027    GLTraceContext *glContext = getGLTraceContext();
6028
6029    glmsg.set_function(GLMessage::glDeleteFencesNV);
6030
6031    // copy argument n
6032    GLMessage_DataType *arg_n = glmsg.add_args();
6033    arg_n->set_isarray(false);
6034    arg_n->set_type(GLMessage::DataType::INT);
6035    arg_n->add_intvalue(n);
6036
6037    // copy argument fences
6038    GLMessage_DataType *arg_fences = glmsg.add_args();
6039    arg_fences->set_isarray(false);
6040    arg_fences->set_type(GLMessage::DataType::INT);
6041    arg_fences->add_intvalue((int)fences);
6042
6043    // call function
6044    nsecs_t start_time = systemTime();
6045    glContext->hooks->gl.glDeleteFencesNV(n, fences);
6046    nsecs_t end_time = systemTime();
6047
6048    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6049    glContext->traceGLMessage(&glmsg);
6050}
6051
6052void GLTrace_glGenFencesNV(GLsizei n, GLuint *fences) {
6053    GLMessage glmsg;
6054    GLTraceContext *glContext = getGLTraceContext();
6055
6056    glmsg.set_function(GLMessage::glGenFencesNV);
6057
6058    // copy argument n
6059    GLMessage_DataType *arg_n = glmsg.add_args();
6060    arg_n->set_isarray(false);
6061    arg_n->set_type(GLMessage::DataType::INT);
6062    arg_n->add_intvalue(n);
6063
6064    // copy argument fences
6065    GLMessage_DataType *arg_fences = glmsg.add_args();
6066    arg_fences->set_isarray(false);
6067    arg_fences->set_type(GLMessage::DataType::INT);
6068    arg_fences->add_intvalue((int)fences);
6069
6070    // call function
6071    nsecs_t start_time = systemTime();
6072    glContext->hooks->gl.glGenFencesNV(n, fences);
6073    nsecs_t end_time = systemTime();
6074
6075    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6076    glContext->traceGLMessage(&glmsg);
6077}
6078
6079GLboolean GLTrace_glIsFenceNV(GLuint fence) {
6080    GLMessage glmsg;
6081    GLTraceContext *glContext = getGLTraceContext();
6082
6083    glmsg.set_function(GLMessage::glIsFenceNV);
6084
6085    // copy argument fence
6086    GLMessage_DataType *arg_fence = glmsg.add_args();
6087    arg_fence->set_isarray(false);
6088    arg_fence->set_type(GLMessage::DataType::INT);
6089    arg_fence->add_intvalue(fence);
6090
6091    // call function
6092    nsecs_t start_time = systemTime();
6093    GLboolean retValue = glContext->hooks->gl.glIsFenceNV(fence);
6094    nsecs_t end_time = systemTime();
6095
6096    // set return value
6097    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
6098    rt->set_isarray(false);
6099    rt->set_type(GLMessage::DataType::BOOL);
6100    rt->add_boolvalue(retValue);
6101
6102    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6103    glContext->traceGLMessage(&glmsg);
6104
6105    return retValue;
6106}
6107
6108GLboolean GLTrace_glTestFenceNV(GLuint fence) {
6109    GLMessage glmsg;
6110    GLTraceContext *glContext = getGLTraceContext();
6111
6112    glmsg.set_function(GLMessage::glTestFenceNV);
6113
6114    // copy argument fence
6115    GLMessage_DataType *arg_fence = glmsg.add_args();
6116    arg_fence->set_isarray(false);
6117    arg_fence->set_type(GLMessage::DataType::INT);
6118    arg_fence->add_intvalue(fence);
6119
6120    // call function
6121    nsecs_t start_time = systemTime();
6122    GLboolean retValue = glContext->hooks->gl.glTestFenceNV(fence);
6123    nsecs_t end_time = systemTime();
6124
6125    // set return value
6126    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
6127    rt->set_isarray(false);
6128    rt->set_type(GLMessage::DataType::BOOL);
6129    rt->add_boolvalue(retValue);
6130
6131    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6132    glContext->traceGLMessage(&glmsg);
6133
6134    return retValue;
6135}
6136
6137void GLTrace_glGetFenceivNV(GLuint fence, GLenum pname, GLint *params) {
6138    GLMessage glmsg;
6139    GLTraceContext *glContext = getGLTraceContext();
6140
6141    glmsg.set_function(GLMessage::glGetFenceivNV);
6142
6143    // copy argument fence
6144    GLMessage_DataType *arg_fence = glmsg.add_args();
6145    arg_fence->set_isarray(false);
6146    arg_fence->set_type(GLMessage::DataType::INT);
6147    arg_fence->add_intvalue(fence);
6148
6149    // copy argument pname
6150    GLMessage_DataType *arg_pname = glmsg.add_args();
6151    arg_pname->set_isarray(false);
6152    arg_pname->set_type(GLMessage::DataType::ENUM);
6153    arg_pname->add_intvalue((int)pname);
6154
6155    // copy argument params
6156    GLMessage_DataType *arg_params = glmsg.add_args();
6157    arg_params->set_isarray(false);
6158    arg_params->set_type(GLMessage::DataType::INT);
6159    arg_params->add_intvalue((int)params);
6160
6161    // call function
6162    nsecs_t start_time = systemTime();
6163    glContext->hooks->gl.glGetFenceivNV(fence, pname, params);
6164    nsecs_t end_time = systemTime();
6165
6166    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6167    glContext->traceGLMessage(&glmsg);
6168}
6169
6170void GLTrace_glFinishFenceNV(GLuint fence) {
6171    GLMessage glmsg;
6172    GLTraceContext *glContext = getGLTraceContext();
6173
6174    glmsg.set_function(GLMessage::glFinishFenceNV);
6175
6176    // copy argument fence
6177    GLMessage_DataType *arg_fence = glmsg.add_args();
6178    arg_fence->set_isarray(false);
6179    arg_fence->set_type(GLMessage::DataType::INT);
6180    arg_fence->add_intvalue(fence);
6181
6182    // call function
6183    nsecs_t start_time = systemTime();
6184    glContext->hooks->gl.glFinishFenceNV(fence);
6185    nsecs_t end_time = systemTime();
6186
6187    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6188    glContext->traceGLMessage(&glmsg);
6189}
6190
6191void GLTrace_glSetFenceNV(GLuint fence, GLenum condition) {
6192    GLMessage glmsg;
6193    GLTraceContext *glContext = getGLTraceContext();
6194
6195    glmsg.set_function(GLMessage::glSetFenceNV);
6196
6197    // copy argument fence
6198    GLMessage_DataType *arg_fence = glmsg.add_args();
6199    arg_fence->set_isarray(false);
6200    arg_fence->set_type(GLMessage::DataType::INT);
6201    arg_fence->add_intvalue(fence);
6202
6203    // copy argument condition
6204    GLMessage_DataType *arg_condition = glmsg.add_args();
6205    arg_condition->set_isarray(false);
6206    arg_condition->set_type(GLMessage::DataType::ENUM);
6207    arg_condition->add_intvalue((int)condition);
6208
6209    // call function
6210    nsecs_t start_time = systemTime();
6211    glContext->hooks->gl.glSetFenceNV(fence, condition);
6212    nsecs_t end_time = systemTime();
6213
6214    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6215    glContext->traceGLMessage(&glmsg);
6216}
6217
6218void GLTrace_glCoverageMaskNV(GLboolean mask) {
6219    GLMessage glmsg;
6220    GLTraceContext *glContext = getGLTraceContext();
6221
6222    glmsg.set_function(GLMessage::glCoverageMaskNV);
6223
6224    // copy argument mask
6225    GLMessage_DataType *arg_mask = glmsg.add_args();
6226    arg_mask->set_isarray(false);
6227    arg_mask->set_type(GLMessage::DataType::BOOL);
6228    arg_mask->add_boolvalue(mask);
6229
6230    // call function
6231    nsecs_t start_time = systemTime();
6232    glContext->hooks->gl.glCoverageMaskNV(mask);
6233    nsecs_t end_time = systemTime();
6234
6235    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6236    glContext->traceGLMessage(&glmsg);
6237}
6238
6239void GLTrace_glCoverageOperationNV(GLenum operation) {
6240    GLMessage glmsg;
6241    GLTraceContext *glContext = getGLTraceContext();
6242
6243    glmsg.set_function(GLMessage::glCoverageOperationNV);
6244
6245    // copy argument operation
6246    GLMessage_DataType *arg_operation = glmsg.add_args();
6247    arg_operation->set_isarray(false);
6248    arg_operation->set_type(GLMessage::DataType::ENUM);
6249    arg_operation->add_intvalue((int)operation);
6250
6251    // call function
6252    nsecs_t start_time = systemTime();
6253    glContext->hooks->gl.glCoverageOperationNV(operation);
6254    nsecs_t end_time = systemTime();
6255
6256    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6257    glContext->traceGLMessage(&glmsg);
6258}
6259
6260void GLTrace_glGetDriverControlsQCOM(GLint *num, GLsizei size, GLuint *driverControls) {
6261    GLMessage glmsg;
6262    GLTraceContext *glContext = getGLTraceContext();
6263
6264    glmsg.set_function(GLMessage::glGetDriverControlsQCOM);
6265
6266    // copy argument num
6267    GLMessage_DataType *arg_num = glmsg.add_args();
6268    arg_num->set_isarray(false);
6269    arg_num->set_type(GLMessage::DataType::INT);
6270    arg_num->add_intvalue((int)num);
6271
6272    // copy argument size
6273    GLMessage_DataType *arg_size = glmsg.add_args();
6274    arg_size->set_isarray(false);
6275    arg_size->set_type(GLMessage::DataType::INT);
6276    arg_size->add_intvalue(size);
6277
6278    // copy argument driverControls
6279    GLMessage_DataType *arg_driverControls = glmsg.add_args();
6280    arg_driverControls->set_isarray(false);
6281    arg_driverControls->set_type(GLMessage::DataType::INT);
6282    arg_driverControls->add_intvalue((int)driverControls);
6283
6284    // call function
6285    nsecs_t start_time = systemTime();
6286    glContext->hooks->gl.glGetDriverControlsQCOM(num, size, driverControls);
6287    nsecs_t end_time = systemTime();
6288
6289    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6290    glContext->traceGLMessage(&glmsg);
6291}
6292
6293void GLTrace_glGetDriverControlStringQCOM(GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString) {
6294    GLMessage glmsg;
6295    GLTraceContext *glContext = getGLTraceContext();
6296
6297    glmsg.set_function(GLMessage::glGetDriverControlStringQCOM);
6298
6299    // copy argument driverControl
6300    GLMessage_DataType *arg_driverControl = glmsg.add_args();
6301    arg_driverControl->set_isarray(false);
6302    arg_driverControl->set_type(GLMessage::DataType::INT);
6303    arg_driverControl->add_intvalue(driverControl);
6304
6305    // copy argument bufSize
6306    GLMessage_DataType *arg_bufSize = glmsg.add_args();
6307    arg_bufSize->set_isarray(false);
6308    arg_bufSize->set_type(GLMessage::DataType::INT);
6309    arg_bufSize->add_intvalue(bufSize);
6310
6311    // copy argument length
6312    GLMessage_DataType *arg_length = glmsg.add_args();
6313    arg_length->set_isarray(false);
6314    arg_length->set_type(GLMessage::DataType::INT);
6315    arg_length->add_intvalue((int)length);
6316
6317    // copy argument driverControlString
6318    GLMessage_DataType *arg_driverControlString = glmsg.add_args();
6319    arg_driverControlString->set_isarray(false);
6320    arg_driverControlString->set_type(GLMessage::DataType::INT);
6321    arg_driverControlString->add_intvalue((int)driverControlString);
6322
6323    // call function
6324    nsecs_t start_time = systemTime();
6325    glContext->hooks->gl.glGetDriverControlStringQCOM(driverControl, bufSize, length, driverControlString);
6326    nsecs_t end_time = systemTime();
6327
6328    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6329    glContext->traceGLMessage(&glmsg);
6330}
6331
6332void GLTrace_glEnableDriverControlQCOM(GLuint driverControl) {
6333    GLMessage glmsg;
6334    GLTraceContext *glContext = getGLTraceContext();
6335
6336    glmsg.set_function(GLMessage::glEnableDriverControlQCOM);
6337
6338    // copy argument driverControl
6339    GLMessage_DataType *arg_driverControl = glmsg.add_args();
6340    arg_driverControl->set_isarray(false);
6341    arg_driverControl->set_type(GLMessage::DataType::INT);
6342    arg_driverControl->add_intvalue(driverControl);
6343
6344    // call function
6345    nsecs_t start_time = systemTime();
6346    glContext->hooks->gl.glEnableDriverControlQCOM(driverControl);
6347    nsecs_t end_time = systemTime();
6348
6349    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6350    glContext->traceGLMessage(&glmsg);
6351}
6352
6353void GLTrace_glDisableDriverControlQCOM(GLuint driverControl) {
6354    GLMessage glmsg;
6355    GLTraceContext *glContext = getGLTraceContext();
6356
6357    glmsg.set_function(GLMessage::glDisableDriverControlQCOM);
6358
6359    // copy argument driverControl
6360    GLMessage_DataType *arg_driverControl = glmsg.add_args();
6361    arg_driverControl->set_isarray(false);
6362    arg_driverControl->set_type(GLMessage::DataType::INT);
6363    arg_driverControl->add_intvalue(driverControl);
6364
6365    // call function
6366    nsecs_t start_time = systemTime();
6367    glContext->hooks->gl.glDisableDriverControlQCOM(driverControl);
6368    nsecs_t end_time = systemTime();
6369
6370    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6371    glContext->traceGLMessage(&glmsg);
6372}
6373
6374void GLTrace_glExtGetTexturesQCOM(GLuint *textures, GLint maxTextures, GLint *numTextures) {
6375    GLMessage glmsg;
6376    GLTraceContext *glContext = getGLTraceContext();
6377
6378    glmsg.set_function(GLMessage::glExtGetTexturesQCOM);
6379
6380    // copy argument textures
6381    GLMessage_DataType *arg_textures = glmsg.add_args();
6382    arg_textures->set_isarray(false);
6383    arg_textures->set_type(GLMessage::DataType::INT);
6384    arg_textures->add_intvalue((int)textures);
6385
6386    // copy argument maxTextures
6387    GLMessage_DataType *arg_maxTextures = glmsg.add_args();
6388    arg_maxTextures->set_isarray(false);
6389    arg_maxTextures->set_type(GLMessage::DataType::INT);
6390    arg_maxTextures->add_intvalue(maxTextures);
6391
6392    // copy argument numTextures
6393    GLMessage_DataType *arg_numTextures = glmsg.add_args();
6394    arg_numTextures->set_isarray(false);
6395    arg_numTextures->set_type(GLMessage::DataType::INT);
6396    arg_numTextures->add_intvalue((int)numTextures);
6397
6398    // call function
6399    nsecs_t start_time = systemTime();
6400    glContext->hooks->gl.glExtGetTexturesQCOM(textures, maxTextures, numTextures);
6401    nsecs_t end_time = systemTime();
6402
6403    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6404    glContext->traceGLMessage(&glmsg);
6405}
6406
6407void GLTrace_glExtGetBuffersQCOM(GLuint *buffers, GLint maxBuffers, GLint *numBuffers) {
6408    GLMessage glmsg;
6409    GLTraceContext *glContext = getGLTraceContext();
6410
6411    glmsg.set_function(GLMessage::glExtGetBuffersQCOM);
6412
6413    // copy argument buffers
6414    GLMessage_DataType *arg_buffers = glmsg.add_args();
6415    arg_buffers->set_isarray(false);
6416    arg_buffers->set_type(GLMessage::DataType::INT);
6417    arg_buffers->add_intvalue((int)buffers);
6418
6419    // copy argument maxBuffers
6420    GLMessage_DataType *arg_maxBuffers = glmsg.add_args();
6421    arg_maxBuffers->set_isarray(false);
6422    arg_maxBuffers->set_type(GLMessage::DataType::INT);
6423    arg_maxBuffers->add_intvalue(maxBuffers);
6424
6425    // copy argument numBuffers
6426    GLMessage_DataType *arg_numBuffers = glmsg.add_args();
6427    arg_numBuffers->set_isarray(false);
6428    arg_numBuffers->set_type(GLMessage::DataType::INT);
6429    arg_numBuffers->add_intvalue((int)numBuffers);
6430
6431    // call function
6432    nsecs_t start_time = systemTime();
6433    glContext->hooks->gl.glExtGetBuffersQCOM(buffers, maxBuffers, numBuffers);
6434    nsecs_t end_time = systemTime();
6435
6436    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6437    glContext->traceGLMessage(&glmsg);
6438}
6439
6440void GLTrace_glExtGetRenderbuffersQCOM(GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers) {
6441    GLMessage glmsg;
6442    GLTraceContext *glContext = getGLTraceContext();
6443
6444    glmsg.set_function(GLMessage::glExtGetRenderbuffersQCOM);
6445
6446    // copy argument renderbuffers
6447    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
6448    arg_renderbuffers->set_isarray(false);
6449    arg_renderbuffers->set_type(GLMessage::DataType::INT);
6450    arg_renderbuffers->add_intvalue((int)renderbuffers);
6451
6452    // copy argument maxRenderbuffers
6453    GLMessage_DataType *arg_maxRenderbuffers = glmsg.add_args();
6454    arg_maxRenderbuffers->set_isarray(false);
6455    arg_maxRenderbuffers->set_type(GLMessage::DataType::INT);
6456    arg_maxRenderbuffers->add_intvalue(maxRenderbuffers);
6457
6458    // copy argument numRenderbuffers
6459    GLMessage_DataType *arg_numRenderbuffers = glmsg.add_args();
6460    arg_numRenderbuffers->set_isarray(false);
6461    arg_numRenderbuffers->set_type(GLMessage::DataType::INT);
6462    arg_numRenderbuffers->add_intvalue((int)numRenderbuffers);
6463
6464    // call function
6465    nsecs_t start_time = systemTime();
6466    glContext->hooks->gl.glExtGetRenderbuffersQCOM(renderbuffers, maxRenderbuffers, numRenderbuffers);
6467    nsecs_t end_time = systemTime();
6468
6469    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6470    glContext->traceGLMessage(&glmsg);
6471}
6472
6473void GLTrace_glExtGetFramebuffersQCOM(GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers) {
6474    GLMessage glmsg;
6475    GLTraceContext *glContext = getGLTraceContext();
6476
6477    glmsg.set_function(GLMessage::glExtGetFramebuffersQCOM);
6478
6479    // copy argument framebuffers
6480    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
6481    arg_framebuffers->set_isarray(false);
6482    arg_framebuffers->set_type(GLMessage::DataType::INT);
6483    arg_framebuffers->add_intvalue((int)framebuffers);
6484
6485    // copy argument maxFramebuffers
6486    GLMessage_DataType *arg_maxFramebuffers = glmsg.add_args();
6487    arg_maxFramebuffers->set_isarray(false);
6488    arg_maxFramebuffers->set_type(GLMessage::DataType::INT);
6489    arg_maxFramebuffers->add_intvalue(maxFramebuffers);
6490
6491    // copy argument numFramebuffers
6492    GLMessage_DataType *arg_numFramebuffers = glmsg.add_args();
6493    arg_numFramebuffers->set_isarray(false);
6494    arg_numFramebuffers->set_type(GLMessage::DataType::INT);
6495    arg_numFramebuffers->add_intvalue((int)numFramebuffers);
6496
6497    // call function
6498    nsecs_t start_time = systemTime();
6499    glContext->hooks->gl.glExtGetFramebuffersQCOM(framebuffers, maxFramebuffers, numFramebuffers);
6500    nsecs_t end_time = systemTime();
6501
6502    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6503    glContext->traceGLMessage(&glmsg);
6504}
6505
6506void GLTrace_glExtGetTexLevelParameterivQCOM(GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params) {
6507    GLMessage glmsg;
6508    GLTraceContext *glContext = getGLTraceContext();
6509
6510    glmsg.set_function(GLMessage::glExtGetTexLevelParameterivQCOM);
6511
6512    // copy argument texture
6513    GLMessage_DataType *arg_texture = glmsg.add_args();
6514    arg_texture->set_isarray(false);
6515    arg_texture->set_type(GLMessage::DataType::INT);
6516    arg_texture->add_intvalue(texture);
6517
6518    // copy argument face
6519    GLMessage_DataType *arg_face = glmsg.add_args();
6520    arg_face->set_isarray(false);
6521    arg_face->set_type(GLMessage::DataType::ENUM);
6522    arg_face->add_intvalue((int)face);
6523
6524    // copy argument level
6525    GLMessage_DataType *arg_level = glmsg.add_args();
6526    arg_level->set_isarray(false);
6527    arg_level->set_type(GLMessage::DataType::INT);
6528    arg_level->add_intvalue(level);
6529
6530    // copy argument pname
6531    GLMessage_DataType *arg_pname = glmsg.add_args();
6532    arg_pname->set_isarray(false);
6533    arg_pname->set_type(GLMessage::DataType::ENUM);
6534    arg_pname->add_intvalue((int)pname);
6535
6536    // copy argument params
6537    GLMessage_DataType *arg_params = glmsg.add_args();
6538    arg_params->set_isarray(false);
6539    arg_params->set_type(GLMessage::DataType::INT);
6540    arg_params->add_intvalue((int)params);
6541
6542    // call function
6543    nsecs_t start_time = systemTime();
6544    glContext->hooks->gl.glExtGetTexLevelParameterivQCOM(texture, face, level, pname, params);
6545    nsecs_t end_time = systemTime();
6546
6547    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6548    glContext->traceGLMessage(&glmsg);
6549}
6550
6551void GLTrace_glExtTexObjectStateOverrideiQCOM(GLenum target, GLenum pname, GLint param) {
6552    GLMessage glmsg;
6553    GLTraceContext *glContext = getGLTraceContext();
6554
6555    glmsg.set_function(GLMessage::glExtTexObjectStateOverrideiQCOM);
6556
6557    // copy argument target
6558    GLMessage_DataType *arg_target = glmsg.add_args();
6559    arg_target->set_isarray(false);
6560    arg_target->set_type(GLMessage::DataType::ENUM);
6561    arg_target->add_intvalue((int)target);
6562
6563    // copy argument pname
6564    GLMessage_DataType *arg_pname = glmsg.add_args();
6565    arg_pname->set_isarray(false);
6566    arg_pname->set_type(GLMessage::DataType::ENUM);
6567    arg_pname->add_intvalue((int)pname);
6568
6569    // copy argument param
6570    GLMessage_DataType *arg_param = glmsg.add_args();
6571    arg_param->set_isarray(false);
6572    arg_param->set_type(GLMessage::DataType::INT);
6573    arg_param->add_intvalue(param);
6574
6575    // call function
6576    nsecs_t start_time = systemTime();
6577    glContext->hooks->gl.glExtTexObjectStateOverrideiQCOM(target, pname, param);
6578    nsecs_t end_time = systemTime();
6579
6580    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6581    glContext->traceGLMessage(&glmsg);
6582}
6583
6584void GLTrace_glExtGetTexSubImageQCOM(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels) {
6585    GLMessage glmsg;
6586    GLTraceContext *glContext = getGLTraceContext();
6587
6588    glmsg.set_function(GLMessage::glExtGetTexSubImageQCOM);
6589
6590    // copy argument target
6591    GLMessage_DataType *arg_target = glmsg.add_args();
6592    arg_target->set_isarray(false);
6593    arg_target->set_type(GLMessage::DataType::ENUM);
6594    arg_target->add_intvalue((int)target);
6595
6596    // copy argument level
6597    GLMessage_DataType *arg_level = glmsg.add_args();
6598    arg_level->set_isarray(false);
6599    arg_level->set_type(GLMessage::DataType::INT);
6600    arg_level->add_intvalue(level);
6601
6602    // copy argument xoffset
6603    GLMessage_DataType *arg_xoffset = glmsg.add_args();
6604    arg_xoffset->set_isarray(false);
6605    arg_xoffset->set_type(GLMessage::DataType::INT);
6606    arg_xoffset->add_intvalue(xoffset);
6607
6608    // copy argument yoffset
6609    GLMessage_DataType *arg_yoffset = glmsg.add_args();
6610    arg_yoffset->set_isarray(false);
6611    arg_yoffset->set_type(GLMessage::DataType::INT);
6612    arg_yoffset->add_intvalue(yoffset);
6613
6614    // copy argument zoffset
6615    GLMessage_DataType *arg_zoffset = glmsg.add_args();
6616    arg_zoffset->set_isarray(false);
6617    arg_zoffset->set_type(GLMessage::DataType::INT);
6618    arg_zoffset->add_intvalue(zoffset);
6619
6620    // copy argument width
6621    GLMessage_DataType *arg_width = glmsg.add_args();
6622    arg_width->set_isarray(false);
6623    arg_width->set_type(GLMessage::DataType::INT);
6624    arg_width->add_intvalue(width);
6625
6626    // copy argument height
6627    GLMessage_DataType *arg_height = glmsg.add_args();
6628    arg_height->set_isarray(false);
6629    arg_height->set_type(GLMessage::DataType::INT);
6630    arg_height->add_intvalue(height);
6631
6632    // copy argument depth
6633    GLMessage_DataType *arg_depth = glmsg.add_args();
6634    arg_depth->set_isarray(false);
6635    arg_depth->set_type(GLMessage::DataType::INT);
6636    arg_depth->add_intvalue(depth);
6637
6638    // copy argument format
6639    GLMessage_DataType *arg_format = glmsg.add_args();
6640    arg_format->set_isarray(false);
6641    arg_format->set_type(GLMessage::DataType::ENUM);
6642    arg_format->add_intvalue((int)format);
6643
6644    // copy argument type
6645    GLMessage_DataType *arg_type = glmsg.add_args();
6646    arg_type->set_isarray(false);
6647    arg_type->set_type(GLMessage::DataType::ENUM);
6648    arg_type->add_intvalue((int)type);
6649
6650    // copy argument texels
6651    GLMessage_DataType *arg_texels = glmsg.add_args();
6652    arg_texels->set_isarray(false);
6653    arg_texels->set_type(GLMessage::DataType::INT);
6654    arg_texels->add_intvalue((int)texels);
6655
6656    // call function
6657    nsecs_t start_time = systemTime();
6658    glContext->hooks->gl.glExtGetTexSubImageQCOM(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, texels);
6659    nsecs_t end_time = systemTime();
6660
6661    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6662    glContext->traceGLMessage(&glmsg);
6663}
6664
6665void GLTrace_glExtGetBufferPointervQCOM(GLenum target, GLvoid **params) {
6666    GLMessage glmsg;
6667    GLTraceContext *glContext = getGLTraceContext();
6668
6669    glmsg.set_function(GLMessage::glExtGetBufferPointervQCOM);
6670
6671    // copy argument target
6672    GLMessage_DataType *arg_target = glmsg.add_args();
6673    arg_target->set_isarray(false);
6674    arg_target->set_type(GLMessage::DataType::ENUM);
6675    arg_target->add_intvalue((int)target);
6676
6677    // copy argument params
6678    GLMessage_DataType *arg_params = glmsg.add_args();
6679    arg_params->set_isarray(false);
6680    arg_params->set_type(GLMessage::DataType::INT);
6681    arg_params->add_intvalue((int)params);
6682
6683    // call function
6684    nsecs_t start_time = systemTime();
6685    glContext->hooks->gl.glExtGetBufferPointervQCOM(target, params);
6686    nsecs_t end_time = systemTime();
6687
6688    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6689    glContext->traceGLMessage(&glmsg);
6690}
6691
6692void GLTrace_glExtGetShadersQCOM(GLuint *shaders, GLint maxShaders, GLint *numShaders) {
6693    GLMessage glmsg;
6694    GLTraceContext *glContext = getGLTraceContext();
6695
6696    glmsg.set_function(GLMessage::glExtGetShadersQCOM);
6697
6698    // copy argument shaders
6699    GLMessage_DataType *arg_shaders = glmsg.add_args();
6700    arg_shaders->set_isarray(false);
6701    arg_shaders->set_type(GLMessage::DataType::INT);
6702    arg_shaders->add_intvalue((int)shaders);
6703
6704    // copy argument maxShaders
6705    GLMessage_DataType *arg_maxShaders = glmsg.add_args();
6706    arg_maxShaders->set_isarray(false);
6707    arg_maxShaders->set_type(GLMessage::DataType::INT);
6708    arg_maxShaders->add_intvalue(maxShaders);
6709
6710    // copy argument numShaders
6711    GLMessage_DataType *arg_numShaders = glmsg.add_args();
6712    arg_numShaders->set_isarray(false);
6713    arg_numShaders->set_type(GLMessage::DataType::INT);
6714    arg_numShaders->add_intvalue((int)numShaders);
6715
6716    // call function
6717    nsecs_t start_time = systemTime();
6718    glContext->hooks->gl.glExtGetShadersQCOM(shaders, maxShaders, numShaders);
6719    nsecs_t end_time = systemTime();
6720
6721    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6722    glContext->traceGLMessage(&glmsg);
6723}
6724
6725void GLTrace_glExtGetProgramsQCOM(GLuint *programs, GLint maxPrograms, GLint *numPrograms) {
6726    GLMessage glmsg;
6727    GLTraceContext *glContext = getGLTraceContext();
6728
6729    glmsg.set_function(GLMessage::glExtGetProgramsQCOM);
6730
6731    // copy argument programs
6732    GLMessage_DataType *arg_programs = glmsg.add_args();
6733    arg_programs->set_isarray(false);
6734    arg_programs->set_type(GLMessage::DataType::INT);
6735    arg_programs->add_intvalue((int)programs);
6736
6737    // copy argument maxPrograms
6738    GLMessage_DataType *arg_maxPrograms = glmsg.add_args();
6739    arg_maxPrograms->set_isarray(false);
6740    arg_maxPrograms->set_type(GLMessage::DataType::INT);
6741    arg_maxPrograms->add_intvalue(maxPrograms);
6742
6743    // copy argument numPrograms
6744    GLMessage_DataType *arg_numPrograms = glmsg.add_args();
6745    arg_numPrograms->set_isarray(false);
6746    arg_numPrograms->set_type(GLMessage::DataType::INT);
6747    arg_numPrograms->add_intvalue((int)numPrograms);
6748
6749    // call function
6750    nsecs_t start_time = systemTime();
6751    glContext->hooks->gl.glExtGetProgramsQCOM(programs, maxPrograms, numPrograms);
6752    nsecs_t end_time = systemTime();
6753
6754    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6755    glContext->traceGLMessage(&glmsg);
6756}
6757
6758GLboolean GLTrace_glExtIsProgramBinaryQCOM(GLuint program) {
6759    GLMessage glmsg;
6760    GLTraceContext *glContext = getGLTraceContext();
6761
6762    glmsg.set_function(GLMessage::glExtIsProgramBinaryQCOM);
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    GLboolean retValue = glContext->hooks->gl.glExtIsProgramBinaryQCOM(program);
6773    nsecs_t end_time = systemTime();
6774
6775    // set return value
6776    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
6777    rt->set_isarray(false);
6778    rt->set_type(GLMessage::DataType::BOOL);
6779    rt->add_boolvalue(retValue);
6780
6781    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6782    glContext->traceGLMessage(&glmsg);
6783
6784    return retValue;
6785}
6786
6787void GLTrace_glExtGetProgramBinarySourceQCOM(GLuint program, GLenum shadertype, GLchar *source, GLint *length) {
6788    GLMessage glmsg;
6789    GLTraceContext *glContext = getGLTraceContext();
6790
6791    glmsg.set_function(GLMessage::glExtGetProgramBinarySourceQCOM);
6792
6793    // copy argument program
6794    GLMessage_DataType *arg_program = glmsg.add_args();
6795    arg_program->set_isarray(false);
6796    arg_program->set_type(GLMessage::DataType::INT);
6797    arg_program->add_intvalue(program);
6798
6799    // copy argument shadertype
6800    GLMessage_DataType *arg_shadertype = glmsg.add_args();
6801    arg_shadertype->set_isarray(false);
6802    arg_shadertype->set_type(GLMessage::DataType::ENUM);
6803    arg_shadertype->add_intvalue((int)shadertype);
6804
6805    // copy argument source
6806    GLMessage_DataType *arg_source = glmsg.add_args();
6807    arg_source->set_isarray(false);
6808    arg_source->set_type(GLMessage::DataType::INT);
6809    arg_source->add_intvalue((int)source);
6810
6811    // copy argument length
6812    GLMessage_DataType *arg_length = glmsg.add_args();
6813    arg_length->set_isarray(false);
6814    arg_length->set_type(GLMessage::DataType::INT);
6815    arg_length->add_intvalue((int)length);
6816
6817    // call function
6818    nsecs_t start_time = systemTime();
6819    glContext->hooks->gl.glExtGetProgramBinarySourceQCOM(program, shadertype, source, length);
6820    nsecs_t end_time = systemTime();
6821
6822    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6823    glContext->traceGLMessage(&glmsg);
6824}
6825
6826void GLTrace_glStartTilingQCOM(GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask) {
6827    GLMessage glmsg;
6828    GLTraceContext *glContext = getGLTraceContext();
6829
6830    glmsg.set_function(GLMessage::glStartTilingQCOM);
6831
6832    // copy argument x
6833    GLMessage_DataType *arg_x = glmsg.add_args();
6834    arg_x->set_isarray(false);
6835    arg_x->set_type(GLMessage::DataType::INT);
6836    arg_x->add_intvalue(x);
6837
6838    // copy argument y
6839    GLMessage_DataType *arg_y = glmsg.add_args();
6840    arg_y->set_isarray(false);
6841    arg_y->set_type(GLMessage::DataType::INT);
6842    arg_y->add_intvalue(y);
6843
6844    // copy argument width
6845    GLMessage_DataType *arg_width = glmsg.add_args();
6846    arg_width->set_isarray(false);
6847    arg_width->set_type(GLMessage::DataType::INT);
6848    arg_width->add_intvalue(width);
6849
6850    // copy argument height
6851    GLMessage_DataType *arg_height = glmsg.add_args();
6852    arg_height->set_isarray(false);
6853    arg_height->set_type(GLMessage::DataType::INT);
6854    arg_height->add_intvalue(height);
6855
6856    // copy argument preserveMask
6857    GLMessage_DataType *arg_preserveMask = glmsg.add_args();
6858    arg_preserveMask->set_isarray(false);
6859    arg_preserveMask->set_type(GLMessage::DataType::INT);
6860    arg_preserveMask->add_intvalue(preserveMask);
6861
6862    // call function
6863    nsecs_t start_time = systemTime();
6864    glContext->hooks->gl.glStartTilingQCOM(x, y, width, height, preserveMask);
6865    nsecs_t end_time = systemTime();
6866
6867    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6868    glContext->traceGLMessage(&glmsg);
6869}
6870
6871void GLTrace_glEndTilingQCOM(GLbitfield preserveMask) {
6872    GLMessage glmsg;
6873    GLTraceContext *glContext = getGLTraceContext();
6874
6875    glmsg.set_function(GLMessage::glEndTilingQCOM);
6876
6877    // copy argument preserveMask
6878    GLMessage_DataType *arg_preserveMask = glmsg.add_args();
6879    arg_preserveMask->set_isarray(false);
6880    arg_preserveMask->set_type(GLMessage::DataType::INT);
6881    arg_preserveMask->add_intvalue(preserveMask);
6882
6883    // call function
6884    nsecs_t start_time = systemTime();
6885    glContext->hooks->gl.glEndTilingQCOM(preserveMask);
6886    nsecs_t end_time = systemTime();
6887
6888    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6889    glContext->traceGLMessage(&glmsg);
6890}
6891
6892
6893// Definitions for GL1 APIs
6894
6895void GLTrace_glAlphaFunc(GLenum func, GLclampf ref) {
6896    GLMessage glmsg;
6897    GLTraceContext *glContext = getGLTraceContext();
6898
6899    glmsg.set_function(GLMessage::glAlphaFunc);
6900
6901    // copy argument func
6902    GLMessage_DataType *arg_func = glmsg.add_args();
6903    arg_func->set_isarray(false);
6904    arg_func->set_type(GLMessage::DataType::ENUM);
6905    arg_func->add_intvalue((int)func);
6906
6907    // copy argument ref
6908    GLMessage_DataType *arg_ref = glmsg.add_args();
6909    arg_ref->set_isarray(false);
6910    arg_ref->set_type(GLMessage::DataType::FLOAT);
6911    arg_ref->add_floatvalue(ref);
6912
6913    // call function
6914    nsecs_t start_time = systemTime();
6915    glContext->hooks->gl.glAlphaFunc(func, ref);
6916    nsecs_t end_time = systemTime();
6917
6918    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6919    glContext->traceGLMessage(&glmsg);
6920}
6921
6922void GLTrace_glClipPlanef(GLenum plane, const GLfloat *equation) {
6923    GLMessage glmsg;
6924    GLTraceContext *glContext = getGLTraceContext();
6925
6926    glmsg.set_function(GLMessage::glClipPlanef);
6927
6928    // copy argument plane
6929    GLMessage_DataType *arg_plane = glmsg.add_args();
6930    arg_plane->set_isarray(false);
6931    arg_plane->set_type(GLMessage::DataType::ENUM);
6932    arg_plane->add_intvalue((int)plane);
6933
6934    // copy argument equation
6935    GLMessage_DataType *arg_equation = glmsg.add_args();
6936    arg_equation->set_isarray(false);
6937    arg_equation->set_type(GLMessage::DataType::INT);
6938    arg_equation->add_intvalue((int)equation);
6939
6940    // call function
6941    nsecs_t start_time = systemTime();
6942    glContext->hooks->gl.glClipPlanef(plane, equation);
6943    nsecs_t end_time = systemTime();
6944
6945    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6946    glContext->traceGLMessage(&glmsg);
6947}
6948
6949void GLTrace_glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) {
6950    GLMessage glmsg;
6951    GLTraceContext *glContext = getGLTraceContext();
6952
6953    glmsg.set_function(GLMessage::glColor4f);
6954
6955    // copy argument red
6956    GLMessage_DataType *arg_red = glmsg.add_args();
6957    arg_red->set_isarray(false);
6958    arg_red->set_type(GLMessage::DataType::FLOAT);
6959    arg_red->add_floatvalue(red);
6960
6961    // copy argument green
6962    GLMessage_DataType *arg_green = glmsg.add_args();
6963    arg_green->set_isarray(false);
6964    arg_green->set_type(GLMessage::DataType::FLOAT);
6965    arg_green->add_floatvalue(green);
6966
6967    // copy argument blue
6968    GLMessage_DataType *arg_blue = glmsg.add_args();
6969    arg_blue->set_isarray(false);
6970    arg_blue->set_type(GLMessage::DataType::FLOAT);
6971    arg_blue->add_floatvalue(blue);
6972
6973    // copy argument alpha
6974    GLMessage_DataType *arg_alpha = glmsg.add_args();
6975    arg_alpha->set_isarray(false);
6976    arg_alpha->set_type(GLMessage::DataType::FLOAT);
6977    arg_alpha->add_floatvalue(alpha);
6978
6979    // call function
6980    nsecs_t start_time = systemTime();
6981    glContext->hooks->gl.glColor4f(red, green, blue, alpha);
6982    nsecs_t end_time = systemTime();
6983
6984    fixupGLMessage(glContext, start_time, end_time, &glmsg);
6985    glContext->traceGLMessage(&glmsg);
6986}
6987
6988void GLTrace_glFogf(GLenum pname, GLfloat param) {
6989    GLMessage glmsg;
6990    GLTraceContext *glContext = getGLTraceContext();
6991
6992    glmsg.set_function(GLMessage::glFogf);
6993
6994    // copy argument pname
6995    GLMessage_DataType *arg_pname = glmsg.add_args();
6996    arg_pname->set_isarray(false);
6997    arg_pname->set_type(GLMessage::DataType::ENUM);
6998    arg_pname->add_intvalue((int)pname);
6999
7000    // copy argument param
7001    GLMessage_DataType *arg_param = glmsg.add_args();
7002    arg_param->set_isarray(false);
7003    arg_param->set_type(GLMessage::DataType::FLOAT);
7004    arg_param->add_floatvalue(param);
7005
7006    // call function
7007    nsecs_t start_time = systemTime();
7008    glContext->hooks->gl.glFogf(pname, param);
7009    nsecs_t end_time = systemTime();
7010
7011    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7012    glContext->traceGLMessage(&glmsg);
7013}
7014
7015void GLTrace_glFogfv(GLenum pname, const GLfloat *params) {
7016    GLMessage glmsg;
7017    GLTraceContext *glContext = getGLTraceContext();
7018
7019    glmsg.set_function(GLMessage::glFogfv);
7020
7021    // copy argument pname
7022    GLMessage_DataType *arg_pname = glmsg.add_args();
7023    arg_pname->set_isarray(false);
7024    arg_pname->set_type(GLMessage::DataType::ENUM);
7025    arg_pname->add_intvalue((int)pname);
7026
7027    // copy argument params
7028    GLMessage_DataType *arg_params = glmsg.add_args();
7029    arg_params->set_isarray(false);
7030    arg_params->set_type(GLMessage::DataType::INT);
7031    arg_params->add_intvalue((int)params);
7032
7033    // call function
7034    nsecs_t start_time = systemTime();
7035    glContext->hooks->gl.glFogfv(pname, params);
7036    nsecs_t end_time = systemTime();
7037
7038    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7039    glContext->traceGLMessage(&glmsg);
7040}
7041
7042void GLTrace_glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
7043    GLMessage glmsg;
7044    GLTraceContext *glContext = getGLTraceContext();
7045
7046    glmsg.set_function(GLMessage::glFrustumf);
7047
7048    // copy argument left
7049    GLMessage_DataType *arg_left = glmsg.add_args();
7050    arg_left->set_isarray(false);
7051    arg_left->set_type(GLMessage::DataType::FLOAT);
7052    arg_left->add_floatvalue(left);
7053
7054    // copy argument right
7055    GLMessage_DataType *arg_right = glmsg.add_args();
7056    arg_right->set_isarray(false);
7057    arg_right->set_type(GLMessage::DataType::FLOAT);
7058    arg_right->add_floatvalue(right);
7059
7060    // copy argument bottom
7061    GLMessage_DataType *arg_bottom = glmsg.add_args();
7062    arg_bottom->set_isarray(false);
7063    arg_bottom->set_type(GLMessage::DataType::FLOAT);
7064    arg_bottom->add_floatvalue(bottom);
7065
7066    // copy argument top
7067    GLMessage_DataType *arg_top = glmsg.add_args();
7068    arg_top->set_isarray(false);
7069    arg_top->set_type(GLMessage::DataType::FLOAT);
7070    arg_top->add_floatvalue(top);
7071
7072    // copy argument zNear
7073    GLMessage_DataType *arg_zNear = glmsg.add_args();
7074    arg_zNear->set_isarray(false);
7075    arg_zNear->set_type(GLMessage::DataType::FLOAT);
7076    arg_zNear->add_floatvalue(zNear);
7077
7078    // copy argument zFar
7079    GLMessage_DataType *arg_zFar = glmsg.add_args();
7080    arg_zFar->set_isarray(false);
7081    arg_zFar->set_type(GLMessage::DataType::FLOAT);
7082    arg_zFar->add_floatvalue(zFar);
7083
7084    // call function
7085    nsecs_t start_time = systemTime();
7086    glContext->hooks->gl.glFrustumf(left, right, bottom, top, zNear, zFar);
7087    nsecs_t end_time = systemTime();
7088
7089    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7090    glContext->traceGLMessage(&glmsg);
7091}
7092
7093void GLTrace_glGetClipPlanef(GLenum pname, GLfloat eqn[4]) {
7094    GLMessage glmsg;
7095    GLTraceContext *glContext = getGLTraceContext();
7096
7097    glmsg.set_function(GLMessage::glGetClipPlanef);
7098
7099    // copy argument pname
7100    GLMessage_DataType *arg_pname = glmsg.add_args();
7101    arg_pname->set_isarray(false);
7102    arg_pname->set_type(GLMessage::DataType::ENUM);
7103    arg_pname->add_intvalue((int)pname);
7104
7105    // copy argument eqn
7106    GLMessage_DataType *arg_eqn = glmsg.add_args();
7107    arg_eqn->set_isarray(false);
7108    arg_eqn->set_type(GLMessage::DataType::INT);
7109    arg_eqn->add_intvalue((int)eqn);
7110
7111    // call function
7112    nsecs_t start_time = systemTime();
7113    glContext->hooks->gl.glGetClipPlanef(pname, eqn);
7114    nsecs_t end_time = systemTime();
7115
7116    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7117    glContext->traceGLMessage(&glmsg);
7118}
7119
7120void GLTrace_glGetLightfv(GLenum light, GLenum pname, GLfloat *params) {
7121    GLMessage glmsg;
7122    GLTraceContext *glContext = getGLTraceContext();
7123
7124    glmsg.set_function(GLMessage::glGetLightfv);
7125
7126    // copy argument light
7127    GLMessage_DataType *arg_light = glmsg.add_args();
7128    arg_light->set_isarray(false);
7129    arg_light->set_type(GLMessage::DataType::ENUM);
7130    arg_light->add_intvalue((int)light);
7131
7132    // copy argument pname
7133    GLMessage_DataType *arg_pname = glmsg.add_args();
7134    arg_pname->set_isarray(false);
7135    arg_pname->set_type(GLMessage::DataType::ENUM);
7136    arg_pname->add_intvalue((int)pname);
7137
7138    // copy argument params
7139    GLMessage_DataType *arg_params = glmsg.add_args();
7140    arg_params->set_isarray(false);
7141    arg_params->set_type(GLMessage::DataType::INT);
7142    arg_params->add_intvalue((int)params);
7143
7144    // call function
7145    nsecs_t start_time = systemTime();
7146    glContext->hooks->gl.glGetLightfv(light, pname, params);
7147    nsecs_t end_time = systemTime();
7148
7149    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7150    glContext->traceGLMessage(&glmsg);
7151}
7152
7153void GLTrace_glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) {
7154    GLMessage glmsg;
7155    GLTraceContext *glContext = getGLTraceContext();
7156
7157    glmsg.set_function(GLMessage::glGetMaterialfv);
7158
7159    // copy argument face
7160    GLMessage_DataType *arg_face = glmsg.add_args();
7161    arg_face->set_isarray(false);
7162    arg_face->set_type(GLMessage::DataType::ENUM);
7163    arg_face->add_intvalue((int)face);
7164
7165    // copy argument pname
7166    GLMessage_DataType *arg_pname = glmsg.add_args();
7167    arg_pname->set_isarray(false);
7168    arg_pname->set_type(GLMessage::DataType::ENUM);
7169    arg_pname->add_intvalue((int)pname);
7170
7171    // copy argument params
7172    GLMessage_DataType *arg_params = glmsg.add_args();
7173    arg_params->set_isarray(false);
7174    arg_params->set_type(GLMessage::DataType::INT);
7175    arg_params->add_intvalue((int)params);
7176
7177    // call function
7178    nsecs_t start_time = systemTime();
7179    glContext->hooks->gl.glGetMaterialfv(face, pname, params);
7180    nsecs_t end_time = systemTime();
7181
7182    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7183    glContext->traceGLMessage(&glmsg);
7184}
7185
7186void GLTrace_glGetTexEnvfv(GLenum env, GLenum pname, GLfloat *params) {
7187    GLMessage glmsg;
7188    GLTraceContext *glContext = getGLTraceContext();
7189
7190    glmsg.set_function(GLMessage::glGetTexEnvfv);
7191
7192    // copy argument env
7193    GLMessage_DataType *arg_env = glmsg.add_args();
7194    arg_env->set_isarray(false);
7195    arg_env->set_type(GLMessage::DataType::ENUM);
7196    arg_env->add_intvalue((int)env);
7197
7198    // copy argument pname
7199    GLMessage_DataType *arg_pname = glmsg.add_args();
7200    arg_pname->set_isarray(false);
7201    arg_pname->set_type(GLMessage::DataType::ENUM);
7202    arg_pname->add_intvalue((int)pname);
7203
7204    // copy argument params
7205    GLMessage_DataType *arg_params = glmsg.add_args();
7206    arg_params->set_isarray(false);
7207    arg_params->set_type(GLMessage::DataType::INT);
7208    arg_params->add_intvalue((int)params);
7209
7210    // call function
7211    nsecs_t start_time = systemTime();
7212    glContext->hooks->gl.glGetTexEnvfv(env, pname, params);
7213    nsecs_t end_time = systemTime();
7214
7215    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7216    glContext->traceGLMessage(&glmsg);
7217}
7218
7219void GLTrace_glLightModelf(GLenum pname, GLfloat param) {
7220    GLMessage glmsg;
7221    GLTraceContext *glContext = getGLTraceContext();
7222
7223    glmsg.set_function(GLMessage::glLightModelf);
7224
7225    // copy argument pname
7226    GLMessage_DataType *arg_pname = glmsg.add_args();
7227    arg_pname->set_isarray(false);
7228    arg_pname->set_type(GLMessage::DataType::ENUM);
7229    arg_pname->add_intvalue((int)pname);
7230
7231    // copy argument param
7232    GLMessage_DataType *arg_param = glmsg.add_args();
7233    arg_param->set_isarray(false);
7234    arg_param->set_type(GLMessage::DataType::FLOAT);
7235    arg_param->add_floatvalue(param);
7236
7237    // call function
7238    nsecs_t start_time = systemTime();
7239    glContext->hooks->gl.glLightModelf(pname, param);
7240    nsecs_t end_time = systemTime();
7241
7242    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7243    glContext->traceGLMessage(&glmsg);
7244}
7245
7246void GLTrace_glLightModelfv(GLenum pname, const GLfloat *params) {
7247    GLMessage glmsg;
7248    GLTraceContext *glContext = getGLTraceContext();
7249
7250    glmsg.set_function(GLMessage::glLightModelfv);
7251
7252    // copy argument pname
7253    GLMessage_DataType *arg_pname = glmsg.add_args();
7254    arg_pname->set_isarray(false);
7255    arg_pname->set_type(GLMessage::DataType::ENUM);
7256    arg_pname->add_intvalue((int)pname);
7257
7258    // copy argument params
7259    GLMessage_DataType *arg_params = glmsg.add_args();
7260    arg_params->set_isarray(false);
7261    arg_params->set_type(GLMessage::DataType::INT);
7262    arg_params->add_intvalue((int)params);
7263
7264    // call function
7265    nsecs_t start_time = systemTime();
7266    glContext->hooks->gl.glLightModelfv(pname, params);
7267    nsecs_t end_time = systemTime();
7268
7269    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7270    glContext->traceGLMessage(&glmsg);
7271}
7272
7273void GLTrace_glLightf(GLenum light, GLenum pname, GLfloat param) {
7274    GLMessage glmsg;
7275    GLTraceContext *glContext = getGLTraceContext();
7276
7277    glmsg.set_function(GLMessage::glLightf);
7278
7279    // copy argument light
7280    GLMessage_DataType *arg_light = glmsg.add_args();
7281    arg_light->set_isarray(false);
7282    arg_light->set_type(GLMessage::DataType::ENUM);
7283    arg_light->add_intvalue((int)light);
7284
7285    // copy argument pname
7286    GLMessage_DataType *arg_pname = glmsg.add_args();
7287    arg_pname->set_isarray(false);
7288    arg_pname->set_type(GLMessage::DataType::ENUM);
7289    arg_pname->add_intvalue((int)pname);
7290
7291    // copy argument param
7292    GLMessage_DataType *arg_param = glmsg.add_args();
7293    arg_param->set_isarray(false);
7294    arg_param->set_type(GLMessage::DataType::FLOAT);
7295    arg_param->add_floatvalue(param);
7296
7297    // call function
7298    nsecs_t start_time = systemTime();
7299    glContext->hooks->gl.glLightf(light, pname, param);
7300    nsecs_t end_time = systemTime();
7301
7302    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7303    glContext->traceGLMessage(&glmsg);
7304}
7305
7306void GLTrace_glLightfv(GLenum light, GLenum pname, const GLfloat *params) {
7307    GLMessage glmsg;
7308    GLTraceContext *glContext = getGLTraceContext();
7309
7310    glmsg.set_function(GLMessage::glLightfv);
7311
7312    // copy argument light
7313    GLMessage_DataType *arg_light = glmsg.add_args();
7314    arg_light->set_isarray(false);
7315    arg_light->set_type(GLMessage::DataType::ENUM);
7316    arg_light->add_intvalue((int)light);
7317
7318    // copy argument pname
7319    GLMessage_DataType *arg_pname = glmsg.add_args();
7320    arg_pname->set_isarray(false);
7321    arg_pname->set_type(GLMessage::DataType::ENUM);
7322    arg_pname->add_intvalue((int)pname);
7323
7324    // copy argument params
7325    GLMessage_DataType *arg_params = glmsg.add_args();
7326    arg_params->set_isarray(false);
7327    arg_params->set_type(GLMessage::DataType::INT);
7328    arg_params->add_intvalue((int)params);
7329
7330    // call function
7331    nsecs_t start_time = systemTime();
7332    glContext->hooks->gl.glLightfv(light, pname, params);
7333    nsecs_t end_time = systemTime();
7334
7335    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7336    glContext->traceGLMessage(&glmsg);
7337}
7338
7339void GLTrace_glLoadMatrixf(const GLfloat *m) {
7340    GLMessage glmsg;
7341    GLTraceContext *glContext = getGLTraceContext();
7342
7343    glmsg.set_function(GLMessage::glLoadMatrixf);
7344
7345    // copy argument m
7346    GLMessage_DataType *arg_m = glmsg.add_args();
7347    arg_m->set_isarray(false);
7348    arg_m->set_type(GLMessage::DataType::INT);
7349    arg_m->add_intvalue((int)m);
7350
7351    // call function
7352    nsecs_t start_time = systemTime();
7353    glContext->hooks->gl.glLoadMatrixf(m);
7354    nsecs_t end_time = systemTime();
7355
7356    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7357    glContext->traceGLMessage(&glmsg);
7358}
7359
7360void GLTrace_glMaterialf(GLenum face, GLenum pname, GLfloat param) {
7361    GLMessage glmsg;
7362    GLTraceContext *glContext = getGLTraceContext();
7363
7364    glmsg.set_function(GLMessage::glMaterialf);
7365
7366    // copy argument face
7367    GLMessage_DataType *arg_face = glmsg.add_args();
7368    arg_face->set_isarray(false);
7369    arg_face->set_type(GLMessage::DataType::ENUM);
7370    arg_face->add_intvalue((int)face);
7371
7372    // copy argument pname
7373    GLMessage_DataType *arg_pname = glmsg.add_args();
7374    arg_pname->set_isarray(false);
7375    arg_pname->set_type(GLMessage::DataType::ENUM);
7376    arg_pname->add_intvalue((int)pname);
7377
7378    // copy argument param
7379    GLMessage_DataType *arg_param = glmsg.add_args();
7380    arg_param->set_isarray(false);
7381    arg_param->set_type(GLMessage::DataType::FLOAT);
7382    arg_param->add_floatvalue(param);
7383
7384    // call function
7385    nsecs_t start_time = systemTime();
7386    glContext->hooks->gl.glMaterialf(face, pname, param);
7387    nsecs_t end_time = systemTime();
7388
7389    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7390    glContext->traceGLMessage(&glmsg);
7391}
7392
7393void GLTrace_glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) {
7394    GLMessage glmsg;
7395    GLTraceContext *glContext = getGLTraceContext();
7396
7397    glmsg.set_function(GLMessage::glMaterialfv);
7398
7399    // copy argument face
7400    GLMessage_DataType *arg_face = glmsg.add_args();
7401    arg_face->set_isarray(false);
7402    arg_face->set_type(GLMessage::DataType::ENUM);
7403    arg_face->add_intvalue((int)face);
7404
7405    // copy argument pname
7406    GLMessage_DataType *arg_pname = glmsg.add_args();
7407    arg_pname->set_isarray(false);
7408    arg_pname->set_type(GLMessage::DataType::ENUM);
7409    arg_pname->add_intvalue((int)pname);
7410
7411    // copy argument params
7412    GLMessage_DataType *arg_params = glmsg.add_args();
7413    arg_params->set_isarray(false);
7414    arg_params->set_type(GLMessage::DataType::INT);
7415    arg_params->add_intvalue((int)params);
7416
7417    // call function
7418    nsecs_t start_time = systemTime();
7419    glContext->hooks->gl.glMaterialfv(face, pname, params);
7420    nsecs_t end_time = systemTime();
7421
7422    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7423    glContext->traceGLMessage(&glmsg);
7424}
7425
7426void GLTrace_glMultMatrixf(const GLfloat *m) {
7427    GLMessage glmsg;
7428    GLTraceContext *glContext = getGLTraceContext();
7429
7430    glmsg.set_function(GLMessage::glMultMatrixf);
7431
7432    // copy argument m
7433    GLMessage_DataType *arg_m = glmsg.add_args();
7434    arg_m->set_isarray(false);
7435    arg_m->set_type(GLMessage::DataType::INT);
7436    arg_m->add_intvalue((int)m);
7437
7438    // call function
7439    nsecs_t start_time = systemTime();
7440    glContext->hooks->gl.glMultMatrixf(m);
7441    nsecs_t end_time = systemTime();
7442
7443    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7444    glContext->traceGLMessage(&glmsg);
7445}
7446
7447void GLTrace_glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) {
7448    GLMessage glmsg;
7449    GLTraceContext *glContext = getGLTraceContext();
7450
7451    glmsg.set_function(GLMessage::glMultiTexCoord4f);
7452
7453    // copy argument target
7454    GLMessage_DataType *arg_target = glmsg.add_args();
7455    arg_target->set_isarray(false);
7456    arg_target->set_type(GLMessage::DataType::ENUM);
7457    arg_target->add_intvalue((int)target);
7458
7459    // copy argument s
7460    GLMessage_DataType *arg_s = glmsg.add_args();
7461    arg_s->set_isarray(false);
7462    arg_s->set_type(GLMessage::DataType::FLOAT);
7463    arg_s->add_floatvalue(s);
7464
7465    // copy argument t
7466    GLMessage_DataType *arg_t = glmsg.add_args();
7467    arg_t->set_isarray(false);
7468    arg_t->set_type(GLMessage::DataType::FLOAT);
7469    arg_t->add_floatvalue(t);
7470
7471    // copy argument r
7472    GLMessage_DataType *arg_r = glmsg.add_args();
7473    arg_r->set_isarray(false);
7474    arg_r->set_type(GLMessage::DataType::FLOAT);
7475    arg_r->add_floatvalue(r);
7476
7477    // copy argument q
7478    GLMessage_DataType *arg_q = glmsg.add_args();
7479    arg_q->set_isarray(false);
7480    arg_q->set_type(GLMessage::DataType::FLOAT);
7481    arg_q->add_floatvalue(q);
7482
7483    // call function
7484    nsecs_t start_time = systemTime();
7485    glContext->hooks->gl.glMultiTexCoord4f(target, s, t, r, q);
7486    nsecs_t end_time = systemTime();
7487
7488    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7489    glContext->traceGLMessage(&glmsg);
7490}
7491
7492void GLTrace_glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) {
7493    GLMessage glmsg;
7494    GLTraceContext *glContext = getGLTraceContext();
7495
7496    glmsg.set_function(GLMessage::glNormal3f);
7497
7498    // copy argument nx
7499    GLMessage_DataType *arg_nx = glmsg.add_args();
7500    arg_nx->set_isarray(false);
7501    arg_nx->set_type(GLMessage::DataType::FLOAT);
7502    arg_nx->add_floatvalue(nx);
7503
7504    // copy argument ny
7505    GLMessage_DataType *arg_ny = glmsg.add_args();
7506    arg_ny->set_isarray(false);
7507    arg_ny->set_type(GLMessage::DataType::FLOAT);
7508    arg_ny->add_floatvalue(ny);
7509
7510    // copy argument nz
7511    GLMessage_DataType *arg_nz = glmsg.add_args();
7512    arg_nz->set_isarray(false);
7513    arg_nz->set_type(GLMessage::DataType::FLOAT);
7514    arg_nz->add_floatvalue(nz);
7515
7516    // call function
7517    nsecs_t start_time = systemTime();
7518    glContext->hooks->gl.glNormal3f(nx, ny, nz);
7519    nsecs_t end_time = systemTime();
7520
7521    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7522    glContext->traceGLMessage(&glmsg);
7523}
7524
7525void GLTrace_glOrthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
7526    GLMessage glmsg;
7527    GLTraceContext *glContext = getGLTraceContext();
7528
7529    glmsg.set_function(GLMessage::glOrthof);
7530
7531    // copy argument left
7532    GLMessage_DataType *arg_left = glmsg.add_args();
7533    arg_left->set_isarray(false);
7534    arg_left->set_type(GLMessage::DataType::FLOAT);
7535    arg_left->add_floatvalue(left);
7536
7537    // copy argument right
7538    GLMessage_DataType *arg_right = glmsg.add_args();
7539    arg_right->set_isarray(false);
7540    arg_right->set_type(GLMessage::DataType::FLOAT);
7541    arg_right->add_floatvalue(right);
7542
7543    // copy argument bottom
7544    GLMessage_DataType *arg_bottom = glmsg.add_args();
7545    arg_bottom->set_isarray(false);
7546    arg_bottom->set_type(GLMessage::DataType::FLOAT);
7547    arg_bottom->add_floatvalue(bottom);
7548
7549    // copy argument top
7550    GLMessage_DataType *arg_top = glmsg.add_args();
7551    arg_top->set_isarray(false);
7552    arg_top->set_type(GLMessage::DataType::FLOAT);
7553    arg_top->add_floatvalue(top);
7554
7555    // copy argument zNear
7556    GLMessage_DataType *arg_zNear = glmsg.add_args();
7557    arg_zNear->set_isarray(false);
7558    arg_zNear->set_type(GLMessage::DataType::FLOAT);
7559    arg_zNear->add_floatvalue(zNear);
7560
7561    // copy argument zFar
7562    GLMessage_DataType *arg_zFar = glmsg.add_args();
7563    arg_zFar->set_isarray(false);
7564    arg_zFar->set_type(GLMessage::DataType::FLOAT);
7565    arg_zFar->add_floatvalue(zFar);
7566
7567    // call function
7568    nsecs_t start_time = systemTime();
7569    glContext->hooks->gl.glOrthof(left, right, bottom, top, zNear, zFar);
7570    nsecs_t end_time = systemTime();
7571
7572    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7573    glContext->traceGLMessage(&glmsg);
7574}
7575
7576void GLTrace_glPointParameterf(GLenum pname, GLfloat param) {
7577    GLMessage glmsg;
7578    GLTraceContext *glContext = getGLTraceContext();
7579
7580    glmsg.set_function(GLMessage::glPointParameterf);
7581
7582    // copy argument pname
7583    GLMessage_DataType *arg_pname = glmsg.add_args();
7584    arg_pname->set_isarray(false);
7585    arg_pname->set_type(GLMessage::DataType::ENUM);
7586    arg_pname->add_intvalue((int)pname);
7587
7588    // copy argument param
7589    GLMessage_DataType *arg_param = glmsg.add_args();
7590    arg_param->set_isarray(false);
7591    arg_param->set_type(GLMessage::DataType::FLOAT);
7592    arg_param->add_floatvalue(param);
7593
7594    // call function
7595    nsecs_t start_time = systemTime();
7596    glContext->hooks->gl.glPointParameterf(pname, param);
7597    nsecs_t end_time = systemTime();
7598
7599    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7600    glContext->traceGLMessage(&glmsg);
7601}
7602
7603void GLTrace_glPointParameterfv(GLenum pname, const GLfloat *params) {
7604    GLMessage glmsg;
7605    GLTraceContext *glContext = getGLTraceContext();
7606
7607    glmsg.set_function(GLMessage::glPointParameterfv);
7608
7609    // copy argument pname
7610    GLMessage_DataType *arg_pname = glmsg.add_args();
7611    arg_pname->set_isarray(false);
7612    arg_pname->set_type(GLMessage::DataType::ENUM);
7613    arg_pname->add_intvalue((int)pname);
7614
7615    // copy argument params
7616    GLMessage_DataType *arg_params = glmsg.add_args();
7617    arg_params->set_isarray(false);
7618    arg_params->set_type(GLMessage::DataType::INT);
7619    arg_params->add_intvalue((int)params);
7620
7621    // call function
7622    nsecs_t start_time = systemTime();
7623    glContext->hooks->gl.glPointParameterfv(pname, params);
7624    nsecs_t end_time = systemTime();
7625
7626    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7627    glContext->traceGLMessage(&glmsg);
7628}
7629
7630void GLTrace_glPointSize(GLfloat size) {
7631    GLMessage glmsg;
7632    GLTraceContext *glContext = getGLTraceContext();
7633
7634    glmsg.set_function(GLMessage::glPointSize);
7635
7636    // copy argument size
7637    GLMessage_DataType *arg_size = glmsg.add_args();
7638    arg_size->set_isarray(false);
7639    arg_size->set_type(GLMessage::DataType::FLOAT);
7640    arg_size->add_floatvalue(size);
7641
7642    // call function
7643    nsecs_t start_time = systemTime();
7644    glContext->hooks->gl.glPointSize(size);
7645    nsecs_t end_time = systemTime();
7646
7647    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7648    glContext->traceGLMessage(&glmsg);
7649}
7650
7651void GLTrace_glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) {
7652    GLMessage glmsg;
7653    GLTraceContext *glContext = getGLTraceContext();
7654
7655    glmsg.set_function(GLMessage::glRotatef);
7656
7657    // copy argument angle
7658    GLMessage_DataType *arg_angle = glmsg.add_args();
7659    arg_angle->set_isarray(false);
7660    arg_angle->set_type(GLMessage::DataType::FLOAT);
7661    arg_angle->add_floatvalue(angle);
7662
7663    // copy argument x
7664    GLMessage_DataType *arg_x = glmsg.add_args();
7665    arg_x->set_isarray(false);
7666    arg_x->set_type(GLMessage::DataType::FLOAT);
7667    arg_x->add_floatvalue(x);
7668
7669    // copy argument y
7670    GLMessage_DataType *arg_y = glmsg.add_args();
7671    arg_y->set_isarray(false);
7672    arg_y->set_type(GLMessage::DataType::FLOAT);
7673    arg_y->add_floatvalue(y);
7674
7675    // copy argument z
7676    GLMessage_DataType *arg_z = glmsg.add_args();
7677    arg_z->set_isarray(false);
7678    arg_z->set_type(GLMessage::DataType::FLOAT);
7679    arg_z->add_floatvalue(z);
7680
7681    // call function
7682    nsecs_t start_time = systemTime();
7683    glContext->hooks->gl.glRotatef(angle, x, y, z);
7684    nsecs_t end_time = systemTime();
7685
7686    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7687    glContext->traceGLMessage(&glmsg);
7688}
7689
7690void GLTrace_glScalef(GLfloat x, GLfloat y, GLfloat z) {
7691    GLMessage glmsg;
7692    GLTraceContext *glContext = getGLTraceContext();
7693
7694    glmsg.set_function(GLMessage::glScalef);
7695
7696    // copy argument x
7697    GLMessage_DataType *arg_x = glmsg.add_args();
7698    arg_x->set_isarray(false);
7699    arg_x->set_type(GLMessage::DataType::FLOAT);
7700    arg_x->add_floatvalue(x);
7701
7702    // copy argument y
7703    GLMessage_DataType *arg_y = glmsg.add_args();
7704    arg_y->set_isarray(false);
7705    arg_y->set_type(GLMessage::DataType::FLOAT);
7706    arg_y->add_floatvalue(y);
7707
7708    // copy argument z
7709    GLMessage_DataType *arg_z = glmsg.add_args();
7710    arg_z->set_isarray(false);
7711    arg_z->set_type(GLMessage::DataType::FLOAT);
7712    arg_z->add_floatvalue(z);
7713
7714    // call function
7715    nsecs_t start_time = systemTime();
7716    glContext->hooks->gl.glScalef(x, y, z);
7717    nsecs_t end_time = systemTime();
7718
7719    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7720    glContext->traceGLMessage(&glmsg);
7721}
7722
7723void GLTrace_glTexEnvf(GLenum target, GLenum pname, GLfloat param) {
7724    GLMessage glmsg;
7725    GLTraceContext *glContext = getGLTraceContext();
7726
7727    glmsg.set_function(GLMessage::glTexEnvf);
7728
7729    // copy argument target
7730    GLMessage_DataType *arg_target = glmsg.add_args();
7731    arg_target->set_isarray(false);
7732    arg_target->set_type(GLMessage::DataType::ENUM);
7733    arg_target->add_intvalue((int)target);
7734
7735    // copy argument pname
7736    GLMessage_DataType *arg_pname = glmsg.add_args();
7737    arg_pname->set_isarray(false);
7738    arg_pname->set_type(GLMessage::DataType::ENUM);
7739    arg_pname->add_intvalue((int)pname);
7740
7741    // copy argument param
7742    GLMessage_DataType *arg_param = glmsg.add_args();
7743    arg_param->set_isarray(false);
7744    arg_param->set_type(GLMessage::DataType::FLOAT);
7745    arg_param->add_floatvalue(param);
7746
7747    // call function
7748    nsecs_t start_time = systemTime();
7749    glContext->hooks->gl.glTexEnvf(target, pname, param);
7750    nsecs_t end_time = systemTime();
7751
7752    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7753    glContext->traceGLMessage(&glmsg);
7754}
7755
7756void GLTrace_glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) {
7757    GLMessage glmsg;
7758    GLTraceContext *glContext = getGLTraceContext();
7759
7760    glmsg.set_function(GLMessage::glTexEnvfv);
7761
7762    // copy argument target
7763    GLMessage_DataType *arg_target = glmsg.add_args();
7764    arg_target->set_isarray(false);
7765    arg_target->set_type(GLMessage::DataType::ENUM);
7766    arg_target->add_intvalue((int)target);
7767
7768    // copy argument pname
7769    GLMessage_DataType *arg_pname = glmsg.add_args();
7770    arg_pname->set_isarray(false);
7771    arg_pname->set_type(GLMessage::DataType::ENUM);
7772    arg_pname->add_intvalue((int)pname);
7773
7774    // copy argument params
7775    GLMessage_DataType *arg_params = glmsg.add_args();
7776    arg_params->set_isarray(false);
7777    arg_params->set_type(GLMessage::DataType::INT);
7778    arg_params->add_intvalue((int)params);
7779
7780    // call function
7781    nsecs_t start_time = systemTime();
7782    glContext->hooks->gl.glTexEnvfv(target, pname, params);
7783    nsecs_t end_time = systemTime();
7784
7785    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7786    glContext->traceGLMessage(&glmsg);
7787}
7788
7789void GLTrace_glTranslatef(GLfloat x, GLfloat y, GLfloat z) {
7790    GLMessage glmsg;
7791    GLTraceContext *glContext = getGLTraceContext();
7792
7793    glmsg.set_function(GLMessage::glTranslatef);
7794
7795    // copy argument x
7796    GLMessage_DataType *arg_x = glmsg.add_args();
7797    arg_x->set_isarray(false);
7798    arg_x->set_type(GLMessage::DataType::FLOAT);
7799    arg_x->add_floatvalue(x);
7800
7801    // copy argument y
7802    GLMessage_DataType *arg_y = glmsg.add_args();
7803    arg_y->set_isarray(false);
7804    arg_y->set_type(GLMessage::DataType::FLOAT);
7805    arg_y->add_floatvalue(y);
7806
7807    // copy argument z
7808    GLMessage_DataType *arg_z = glmsg.add_args();
7809    arg_z->set_isarray(false);
7810    arg_z->set_type(GLMessage::DataType::FLOAT);
7811    arg_z->add_floatvalue(z);
7812
7813    // call function
7814    nsecs_t start_time = systemTime();
7815    glContext->hooks->gl.glTranslatef(x, y, z);
7816    nsecs_t end_time = systemTime();
7817
7818    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7819    glContext->traceGLMessage(&glmsg);
7820}
7821
7822void GLTrace_glAlphaFuncx(GLenum func, GLclampx ref) {
7823    GLMessage glmsg;
7824    GLTraceContext *glContext = getGLTraceContext();
7825
7826    glmsg.set_function(GLMessage::glAlphaFuncx);
7827
7828    // copy argument func
7829    GLMessage_DataType *arg_func = glmsg.add_args();
7830    arg_func->set_isarray(false);
7831    arg_func->set_type(GLMessage::DataType::ENUM);
7832    arg_func->add_intvalue((int)func);
7833
7834    // copy argument ref
7835    GLMessage_DataType *arg_ref = glmsg.add_args();
7836    arg_ref->set_isarray(false);
7837    arg_ref->set_type(GLMessage::DataType::INT);
7838    arg_ref->add_intvalue(ref);
7839
7840    // call function
7841    nsecs_t start_time = systemTime();
7842    glContext->hooks->gl.glAlphaFuncx(func, ref);
7843    nsecs_t end_time = systemTime();
7844
7845    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7846    glContext->traceGLMessage(&glmsg);
7847}
7848
7849void GLTrace_glClearColorx(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha) {
7850    GLMessage glmsg;
7851    GLTraceContext *glContext = getGLTraceContext();
7852
7853    glmsg.set_function(GLMessage::glClearColorx);
7854
7855    // copy argument red
7856    GLMessage_DataType *arg_red = glmsg.add_args();
7857    arg_red->set_isarray(false);
7858    arg_red->set_type(GLMessage::DataType::INT);
7859    arg_red->add_intvalue(red);
7860
7861    // copy argument green
7862    GLMessage_DataType *arg_green = glmsg.add_args();
7863    arg_green->set_isarray(false);
7864    arg_green->set_type(GLMessage::DataType::INT);
7865    arg_green->add_intvalue(green);
7866
7867    // copy argument blue
7868    GLMessage_DataType *arg_blue = glmsg.add_args();
7869    arg_blue->set_isarray(false);
7870    arg_blue->set_type(GLMessage::DataType::INT);
7871    arg_blue->add_intvalue(blue);
7872
7873    // copy argument alpha
7874    GLMessage_DataType *arg_alpha = glmsg.add_args();
7875    arg_alpha->set_isarray(false);
7876    arg_alpha->set_type(GLMessage::DataType::INT);
7877    arg_alpha->add_intvalue(alpha);
7878
7879    // call function
7880    nsecs_t start_time = systemTime();
7881    glContext->hooks->gl.glClearColorx(red, green, blue, alpha);
7882    nsecs_t end_time = systemTime();
7883
7884    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7885    glContext->traceGLMessage(&glmsg);
7886}
7887
7888void GLTrace_glClearDepthx(GLclampx depth) {
7889    GLMessage glmsg;
7890    GLTraceContext *glContext = getGLTraceContext();
7891
7892    glmsg.set_function(GLMessage::glClearDepthx);
7893
7894    // copy argument depth
7895    GLMessage_DataType *arg_depth = glmsg.add_args();
7896    arg_depth->set_isarray(false);
7897    arg_depth->set_type(GLMessage::DataType::INT);
7898    arg_depth->add_intvalue(depth);
7899
7900    // call function
7901    nsecs_t start_time = systemTime();
7902    glContext->hooks->gl.glClearDepthx(depth);
7903    nsecs_t end_time = systemTime();
7904
7905    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7906    glContext->traceGLMessage(&glmsg);
7907}
7908
7909void GLTrace_glClientActiveTexture(GLenum texture) {
7910    GLMessage glmsg;
7911    GLTraceContext *glContext = getGLTraceContext();
7912
7913    glmsg.set_function(GLMessage::glClientActiveTexture);
7914
7915    // copy argument texture
7916    GLMessage_DataType *arg_texture = glmsg.add_args();
7917    arg_texture->set_isarray(false);
7918    arg_texture->set_type(GLMessage::DataType::ENUM);
7919    arg_texture->add_intvalue((int)texture);
7920
7921    // call function
7922    nsecs_t start_time = systemTime();
7923    glContext->hooks->gl.glClientActiveTexture(texture);
7924    nsecs_t end_time = systemTime();
7925
7926    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7927    glContext->traceGLMessage(&glmsg);
7928}
7929
7930void GLTrace_glClipPlanex(GLenum plane, const GLfixed *equation) {
7931    GLMessage glmsg;
7932    GLTraceContext *glContext = getGLTraceContext();
7933
7934    glmsg.set_function(GLMessage::glClipPlanex);
7935
7936    // copy argument plane
7937    GLMessage_DataType *arg_plane = glmsg.add_args();
7938    arg_plane->set_isarray(false);
7939    arg_plane->set_type(GLMessage::DataType::ENUM);
7940    arg_plane->add_intvalue((int)plane);
7941
7942    // copy argument equation
7943    GLMessage_DataType *arg_equation = glmsg.add_args();
7944    arg_equation->set_isarray(false);
7945    arg_equation->set_type(GLMessage::DataType::INT);
7946    arg_equation->add_intvalue((int)equation);
7947
7948    // call function
7949    nsecs_t start_time = systemTime();
7950    glContext->hooks->gl.glClipPlanex(plane, equation);
7951    nsecs_t end_time = systemTime();
7952
7953    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7954    glContext->traceGLMessage(&glmsg);
7955}
7956
7957void GLTrace_glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) {
7958    GLMessage glmsg;
7959    GLTraceContext *glContext = getGLTraceContext();
7960
7961    glmsg.set_function(GLMessage::glColor4ub);
7962
7963    // copy argument red
7964    GLMessage_DataType *arg_red = glmsg.add_args();
7965    arg_red->set_isarray(false);
7966    arg_red->set_type(GLMessage::DataType::BYTE);
7967    arg_red->add_intvalue((int)red);
7968
7969    // copy argument green
7970    GLMessage_DataType *arg_green = glmsg.add_args();
7971    arg_green->set_isarray(false);
7972    arg_green->set_type(GLMessage::DataType::BYTE);
7973    arg_green->add_intvalue((int)green);
7974
7975    // copy argument blue
7976    GLMessage_DataType *arg_blue = glmsg.add_args();
7977    arg_blue->set_isarray(false);
7978    arg_blue->set_type(GLMessage::DataType::BYTE);
7979    arg_blue->add_intvalue((int)blue);
7980
7981    // copy argument alpha
7982    GLMessage_DataType *arg_alpha = glmsg.add_args();
7983    arg_alpha->set_isarray(false);
7984    arg_alpha->set_type(GLMessage::DataType::BYTE);
7985    arg_alpha->add_intvalue((int)alpha);
7986
7987    // call function
7988    nsecs_t start_time = systemTime();
7989    glContext->hooks->gl.glColor4ub(red, green, blue, alpha);
7990    nsecs_t end_time = systemTime();
7991
7992    fixupGLMessage(glContext, start_time, end_time, &glmsg);
7993    glContext->traceGLMessage(&glmsg);
7994}
7995
7996void GLTrace_glColor4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {
7997    GLMessage glmsg;
7998    GLTraceContext *glContext = getGLTraceContext();
7999
8000    glmsg.set_function(GLMessage::glColor4x);
8001
8002    // copy argument red
8003    GLMessage_DataType *arg_red = glmsg.add_args();
8004    arg_red->set_isarray(false);
8005    arg_red->set_type(GLMessage::DataType::INT);
8006    arg_red->add_intvalue(red);
8007
8008    // copy argument green
8009    GLMessage_DataType *arg_green = glmsg.add_args();
8010    arg_green->set_isarray(false);
8011    arg_green->set_type(GLMessage::DataType::INT);
8012    arg_green->add_intvalue(green);
8013
8014    // copy argument blue
8015    GLMessage_DataType *arg_blue = glmsg.add_args();
8016    arg_blue->set_isarray(false);
8017    arg_blue->set_type(GLMessage::DataType::INT);
8018    arg_blue->add_intvalue(blue);
8019
8020    // copy argument alpha
8021    GLMessage_DataType *arg_alpha = glmsg.add_args();
8022    arg_alpha->set_isarray(false);
8023    arg_alpha->set_type(GLMessage::DataType::INT);
8024    arg_alpha->add_intvalue(alpha);
8025
8026    // call function
8027    nsecs_t start_time = systemTime();
8028    glContext->hooks->gl.glColor4x(red, green, blue, alpha);
8029    nsecs_t end_time = systemTime();
8030
8031    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8032    glContext->traceGLMessage(&glmsg);
8033}
8034
8035void GLTrace_glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
8036    GLMessage glmsg;
8037    GLTraceContext *glContext = getGLTraceContext();
8038
8039    glmsg.set_function(GLMessage::glColorPointer);
8040
8041    // copy argument size
8042    GLMessage_DataType *arg_size = glmsg.add_args();
8043    arg_size->set_isarray(false);
8044    arg_size->set_type(GLMessage::DataType::INT);
8045    arg_size->add_intvalue(size);
8046
8047    // copy argument type
8048    GLMessage_DataType *arg_type = glmsg.add_args();
8049    arg_type->set_isarray(false);
8050    arg_type->set_type(GLMessage::DataType::ENUM);
8051    arg_type->add_intvalue((int)type);
8052
8053    // copy argument stride
8054    GLMessage_DataType *arg_stride = glmsg.add_args();
8055    arg_stride->set_isarray(false);
8056    arg_stride->set_type(GLMessage::DataType::INT);
8057    arg_stride->add_intvalue(stride);
8058
8059    // copy argument pointer
8060    GLMessage_DataType *arg_pointer = glmsg.add_args();
8061    arg_pointer->set_isarray(false);
8062    arg_pointer->set_type(GLMessage::DataType::INT);
8063    arg_pointer->add_intvalue((int)pointer);
8064
8065    // call function
8066    nsecs_t start_time = systemTime();
8067    glContext->hooks->gl.glColorPointer(size, type, stride, pointer);
8068    nsecs_t end_time = systemTime();
8069
8070    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8071    glContext->traceGLMessage(&glmsg);
8072}
8073
8074void GLTrace_glDepthRangex(GLclampx zNear, GLclampx zFar) {
8075    GLMessage glmsg;
8076    GLTraceContext *glContext = getGLTraceContext();
8077
8078    glmsg.set_function(GLMessage::glDepthRangex);
8079
8080    // copy argument zNear
8081    GLMessage_DataType *arg_zNear = glmsg.add_args();
8082    arg_zNear->set_isarray(false);
8083    arg_zNear->set_type(GLMessage::DataType::INT);
8084    arg_zNear->add_intvalue(zNear);
8085
8086    // copy argument zFar
8087    GLMessage_DataType *arg_zFar = glmsg.add_args();
8088    arg_zFar->set_isarray(false);
8089    arg_zFar->set_type(GLMessage::DataType::INT);
8090    arg_zFar->add_intvalue(zFar);
8091
8092    // call function
8093    nsecs_t start_time = systemTime();
8094    glContext->hooks->gl.glDepthRangex(zNear, zFar);
8095    nsecs_t end_time = systemTime();
8096
8097    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8098    glContext->traceGLMessage(&glmsg);
8099}
8100
8101void GLTrace_glDisableClientState(GLenum array) {
8102    GLMessage glmsg;
8103    GLTraceContext *glContext = getGLTraceContext();
8104
8105    glmsg.set_function(GLMessage::glDisableClientState);
8106
8107    // copy argument array
8108    GLMessage_DataType *arg_array = glmsg.add_args();
8109    arg_array->set_isarray(false);
8110    arg_array->set_type(GLMessage::DataType::ENUM);
8111    arg_array->add_intvalue((int)array);
8112
8113    // call function
8114    nsecs_t start_time = systemTime();
8115    glContext->hooks->gl.glDisableClientState(array);
8116    nsecs_t end_time = systemTime();
8117
8118    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8119    glContext->traceGLMessage(&glmsg);
8120}
8121
8122void GLTrace_glEnableClientState(GLenum array) {
8123    GLMessage glmsg;
8124    GLTraceContext *glContext = getGLTraceContext();
8125
8126    glmsg.set_function(GLMessage::glEnableClientState);
8127
8128    // copy argument array
8129    GLMessage_DataType *arg_array = glmsg.add_args();
8130    arg_array->set_isarray(false);
8131    arg_array->set_type(GLMessage::DataType::ENUM);
8132    arg_array->add_intvalue((int)array);
8133
8134    // call function
8135    nsecs_t start_time = systemTime();
8136    glContext->hooks->gl.glEnableClientState(array);
8137    nsecs_t end_time = systemTime();
8138
8139    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8140    glContext->traceGLMessage(&glmsg);
8141}
8142
8143void GLTrace_glFogx(GLenum pname, GLfixed param) {
8144    GLMessage glmsg;
8145    GLTraceContext *glContext = getGLTraceContext();
8146
8147    glmsg.set_function(GLMessage::glFogx);
8148
8149    // copy argument pname
8150    GLMessage_DataType *arg_pname = glmsg.add_args();
8151    arg_pname->set_isarray(false);
8152    arg_pname->set_type(GLMessage::DataType::ENUM);
8153    arg_pname->add_intvalue((int)pname);
8154
8155    // copy argument param
8156    GLMessage_DataType *arg_param = glmsg.add_args();
8157    arg_param->set_isarray(false);
8158    arg_param->set_type(GLMessage::DataType::INT);
8159    arg_param->add_intvalue(param);
8160
8161    // call function
8162    nsecs_t start_time = systemTime();
8163    glContext->hooks->gl.glFogx(pname, param);
8164    nsecs_t end_time = systemTime();
8165
8166    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8167    glContext->traceGLMessage(&glmsg);
8168}
8169
8170void GLTrace_glFogxv(GLenum pname, const GLfixed *params) {
8171    GLMessage glmsg;
8172    GLTraceContext *glContext = getGLTraceContext();
8173
8174    glmsg.set_function(GLMessage::glFogxv);
8175
8176    // copy argument pname
8177    GLMessage_DataType *arg_pname = glmsg.add_args();
8178    arg_pname->set_isarray(false);
8179    arg_pname->set_type(GLMessage::DataType::ENUM);
8180    arg_pname->add_intvalue((int)pname);
8181
8182    // copy argument params
8183    GLMessage_DataType *arg_params = glmsg.add_args();
8184    arg_params->set_isarray(false);
8185    arg_params->set_type(GLMessage::DataType::INT);
8186    arg_params->add_intvalue((int)params);
8187
8188    // call function
8189    nsecs_t start_time = systemTime();
8190    glContext->hooks->gl.glFogxv(pname, params);
8191    nsecs_t end_time = systemTime();
8192
8193    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8194    glContext->traceGLMessage(&glmsg);
8195}
8196
8197void GLTrace_glFrustumx(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
8198    GLMessage glmsg;
8199    GLTraceContext *glContext = getGLTraceContext();
8200
8201    glmsg.set_function(GLMessage::glFrustumx);
8202
8203    // copy argument left
8204    GLMessage_DataType *arg_left = glmsg.add_args();
8205    arg_left->set_isarray(false);
8206    arg_left->set_type(GLMessage::DataType::INT);
8207    arg_left->add_intvalue(left);
8208
8209    // copy argument right
8210    GLMessage_DataType *arg_right = glmsg.add_args();
8211    arg_right->set_isarray(false);
8212    arg_right->set_type(GLMessage::DataType::INT);
8213    arg_right->add_intvalue(right);
8214
8215    // copy argument bottom
8216    GLMessage_DataType *arg_bottom = glmsg.add_args();
8217    arg_bottom->set_isarray(false);
8218    arg_bottom->set_type(GLMessage::DataType::INT);
8219    arg_bottom->add_intvalue(bottom);
8220
8221    // copy argument top
8222    GLMessage_DataType *arg_top = glmsg.add_args();
8223    arg_top->set_isarray(false);
8224    arg_top->set_type(GLMessage::DataType::INT);
8225    arg_top->add_intvalue(top);
8226
8227    // copy argument zNear
8228    GLMessage_DataType *arg_zNear = glmsg.add_args();
8229    arg_zNear->set_isarray(false);
8230    arg_zNear->set_type(GLMessage::DataType::INT);
8231    arg_zNear->add_intvalue(zNear);
8232
8233    // copy argument zFar
8234    GLMessage_DataType *arg_zFar = glmsg.add_args();
8235    arg_zFar->set_isarray(false);
8236    arg_zFar->set_type(GLMessage::DataType::INT);
8237    arg_zFar->add_intvalue(zFar);
8238
8239    // call function
8240    nsecs_t start_time = systemTime();
8241    glContext->hooks->gl.glFrustumx(left, right, bottom, top, zNear, zFar);
8242    nsecs_t end_time = systemTime();
8243
8244    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8245    glContext->traceGLMessage(&glmsg);
8246}
8247
8248void GLTrace_glGetClipPlanex(GLenum pname, GLfixed eqn[4]) {
8249    GLMessage glmsg;
8250    GLTraceContext *glContext = getGLTraceContext();
8251
8252    glmsg.set_function(GLMessage::glGetClipPlanex);
8253
8254    // copy argument pname
8255    GLMessage_DataType *arg_pname = glmsg.add_args();
8256    arg_pname->set_isarray(false);
8257    arg_pname->set_type(GLMessage::DataType::ENUM);
8258    arg_pname->add_intvalue((int)pname);
8259
8260    // copy argument eqn
8261    GLMessage_DataType *arg_eqn = glmsg.add_args();
8262    arg_eqn->set_isarray(false);
8263    arg_eqn->set_type(GLMessage::DataType::INT);
8264    arg_eqn->add_intvalue((int)eqn);
8265
8266    // call function
8267    nsecs_t start_time = systemTime();
8268    glContext->hooks->gl.glGetClipPlanex(pname, eqn);
8269    nsecs_t end_time = systemTime();
8270
8271    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8272    glContext->traceGLMessage(&glmsg);
8273}
8274
8275void GLTrace_glGetFixedv(GLenum pname, GLfixed *params) {
8276    GLMessage glmsg;
8277    GLTraceContext *glContext = getGLTraceContext();
8278
8279    glmsg.set_function(GLMessage::glGetFixedv);
8280
8281    // copy argument pname
8282    GLMessage_DataType *arg_pname = glmsg.add_args();
8283    arg_pname->set_isarray(false);
8284    arg_pname->set_type(GLMessage::DataType::ENUM);
8285    arg_pname->add_intvalue((int)pname);
8286
8287    // copy argument params
8288    GLMessage_DataType *arg_params = glmsg.add_args();
8289    arg_params->set_isarray(false);
8290    arg_params->set_type(GLMessage::DataType::INT);
8291    arg_params->add_intvalue((int)params);
8292
8293    // call function
8294    nsecs_t start_time = systemTime();
8295    glContext->hooks->gl.glGetFixedv(pname, params);
8296    nsecs_t end_time = systemTime();
8297
8298    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8299    glContext->traceGLMessage(&glmsg);
8300}
8301
8302void GLTrace_glGetLightxv(GLenum light, GLenum pname, GLfixed *params) {
8303    GLMessage glmsg;
8304    GLTraceContext *glContext = getGLTraceContext();
8305
8306    glmsg.set_function(GLMessage::glGetLightxv);
8307
8308    // copy argument light
8309    GLMessage_DataType *arg_light = glmsg.add_args();
8310    arg_light->set_isarray(false);
8311    arg_light->set_type(GLMessage::DataType::ENUM);
8312    arg_light->add_intvalue((int)light);
8313
8314    // copy argument pname
8315    GLMessage_DataType *arg_pname = glmsg.add_args();
8316    arg_pname->set_isarray(false);
8317    arg_pname->set_type(GLMessage::DataType::ENUM);
8318    arg_pname->add_intvalue((int)pname);
8319
8320    // copy argument params
8321    GLMessage_DataType *arg_params = glmsg.add_args();
8322    arg_params->set_isarray(false);
8323    arg_params->set_type(GLMessage::DataType::INT);
8324    arg_params->add_intvalue((int)params);
8325
8326    // call function
8327    nsecs_t start_time = systemTime();
8328    glContext->hooks->gl.glGetLightxv(light, pname, params);
8329    nsecs_t end_time = systemTime();
8330
8331    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8332    glContext->traceGLMessage(&glmsg);
8333}
8334
8335void GLTrace_glGetMaterialxv(GLenum face, GLenum pname, GLfixed *params) {
8336    GLMessage glmsg;
8337    GLTraceContext *glContext = getGLTraceContext();
8338
8339    glmsg.set_function(GLMessage::glGetMaterialxv);
8340
8341    // copy argument face
8342    GLMessage_DataType *arg_face = glmsg.add_args();
8343    arg_face->set_isarray(false);
8344    arg_face->set_type(GLMessage::DataType::ENUM);
8345    arg_face->add_intvalue((int)face);
8346
8347    // copy argument pname
8348    GLMessage_DataType *arg_pname = glmsg.add_args();
8349    arg_pname->set_isarray(false);
8350    arg_pname->set_type(GLMessage::DataType::ENUM);
8351    arg_pname->add_intvalue((int)pname);
8352
8353    // copy argument params
8354    GLMessage_DataType *arg_params = glmsg.add_args();
8355    arg_params->set_isarray(false);
8356    arg_params->set_type(GLMessage::DataType::INT);
8357    arg_params->add_intvalue((int)params);
8358
8359    // call function
8360    nsecs_t start_time = systemTime();
8361    glContext->hooks->gl.glGetMaterialxv(face, pname, params);
8362    nsecs_t end_time = systemTime();
8363
8364    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8365    glContext->traceGLMessage(&glmsg);
8366}
8367
8368void GLTrace_glGetPointerv(GLenum pname, GLvoid **params) {
8369    GLMessage glmsg;
8370    GLTraceContext *glContext = getGLTraceContext();
8371
8372    glmsg.set_function(GLMessage::glGetPointerv);
8373
8374    // copy argument pname
8375    GLMessage_DataType *arg_pname = glmsg.add_args();
8376    arg_pname->set_isarray(false);
8377    arg_pname->set_type(GLMessage::DataType::ENUM);
8378    arg_pname->add_intvalue((int)pname);
8379
8380    // copy argument params
8381    GLMessage_DataType *arg_params = glmsg.add_args();
8382    arg_params->set_isarray(false);
8383    arg_params->set_type(GLMessage::DataType::INT);
8384    arg_params->add_intvalue((int)params);
8385
8386    // call function
8387    nsecs_t start_time = systemTime();
8388    glContext->hooks->gl.glGetPointerv(pname, params);
8389    nsecs_t end_time = systemTime();
8390
8391    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8392    glContext->traceGLMessage(&glmsg);
8393}
8394
8395void GLTrace_glGetTexEnviv(GLenum env, GLenum pname, GLint *params) {
8396    GLMessage glmsg;
8397    GLTraceContext *glContext = getGLTraceContext();
8398
8399    glmsg.set_function(GLMessage::glGetTexEnviv);
8400
8401    // copy argument env
8402    GLMessage_DataType *arg_env = glmsg.add_args();
8403    arg_env->set_isarray(false);
8404    arg_env->set_type(GLMessage::DataType::ENUM);
8405    arg_env->add_intvalue((int)env);
8406
8407    // copy argument pname
8408    GLMessage_DataType *arg_pname = glmsg.add_args();
8409    arg_pname->set_isarray(false);
8410    arg_pname->set_type(GLMessage::DataType::ENUM);
8411    arg_pname->add_intvalue((int)pname);
8412
8413    // copy argument params
8414    GLMessage_DataType *arg_params = glmsg.add_args();
8415    arg_params->set_isarray(false);
8416    arg_params->set_type(GLMessage::DataType::INT);
8417    arg_params->add_intvalue((int)params);
8418
8419    // call function
8420    nsecs_t start_time = systemTime();
8421    glContext->hooks->gl.glGetTexEnviv(env, pname, params);
8422    nsecs_t end_time = systemTime();
8423
8424    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8425    glContext->traceGLMessage(&glmsg);
8426}
8427
8428void GLTrace_glGetTexEnvxv(GLenum env, GLenum pname, GLfixed *params) {
8429    GLMessage glmsg;
8430    GLTraceContext *glContext = getGLTraceContext();
8431
8432    glmsg.set_function(GLMessage::glGetTexEnvxv);
8433
8434    // copy argument env
8435    GLMessage_DataType *arg_env = glmsg.add_args();
8436    arg_env->set_isarray(false);
8437    arg_env->set_type(GLMessage::DataType::ENUM);
8438    arg_env->add_intvalue((int)env);
8439
8440    // copy argument pname
8441    GLMessage_DataType *arg_pname = glmsg.add_args();
8442    arg_pname->set_isarray(false);
8443    arg_pname->set_type(GLMessage::DataType::ENUM);
8444    arg_pname->add_intvalue((int)pname);
8445
8446    // copy argument params
8447    GLMessage_DataType *arg_params = glmsg.add_args();
8448    arg_params->set_isarray(false);
8449    arg_params->set_type(GLMessage::DataType::INT);
8450    arg_params->add_intvalue((int)params);
8451
8452    // call function
8453    nsecs_t start_time = systemTime();
8454    glContext->hooks->gl.glGetTexEnvxv(env, pname, params);
8455    nsecs_t end_time = systemTime();
8456
8457    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8458    glContext->traceGLMessage(&glmsg);
8459}
8460
8461void GLTrace_glGetTexParameterxv(GLenum target, GLenum pname, GLfixed *params) {
8462    GLMessage glmsg;
8463    GLTraceContext *glContext = getGLTraceContext();
8464
8465    glmsg.set_function(GLMessage::glGetTexParameterxv);
8466
8467    // copy argument target
8468    GLMessage_DataType *arg_target = glmsg.add_args();
8469    arg_target->set_isarray(false);
8470    arg_target->set_type(GLMessage::DataType::ENUM);
8471    arg_target->add_intvalue((int)target);
8472
8473    // copy argument pname
8474    GLMessage_DataType *arg_pname = glmsg.add_args();
8475    arg_pname->set_isarray(false);
8476    arg_pname->set_type(GLMessage::DataType::ENUM);
8477    arg_pname->add_intvalue((int)pname);
8478
8479    // copy argument params
8480    GLMessage_DataType *arg_params = glmsg.add_args();
8481    arg_params->set_isarray(false);
8482    arg_params->set_type(GLMessage::DataType::INT);
8483    arg_params->add_intvalue((int)params);
8484
8485    // call function
8486    nsecs_t start_time = systemTime();
8487    glContext->hooks->gl.glGetTexParameterxv(target, pname, params);
8488    nsecs_t end_time = systemTime();
8489
8490    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8491    glContext->traceGLMessage(&glmsg);
8492}
8493
8494void GLTrace_glLightModelx(GLenum pname, GLfixed param) {
8495    GLMessage glmsg;
8496    GLTraceContext *glContext = getGLTraceContext();
8497
8498    glmsg.set_function(GLMessage::glLightModelx);
8499
8500    // copy argument pname
8501    GLMessage_DataType *arg_pname = glmsg.add_args();
8502    arg_pname->set_isarray(false);
8503    arg_pname->set_type(GLMessage::DataType::ENUM);
8504    arg_pname->add_intvalue((int)pname);
8505
8506    // copy argument param
8507    GLMessage_DataType *arg_param = glmsg.add_args();
8508    arg_param->set_isarray(false);
8509    arg_param->set_type(GLMessage::DataType::INT);
8510    arg_param->add_intvalue(param);
8511
8512    // call function
8513    nsecs_t start_time = systemTime();
8514    glContext->hooks->gl.glLightModelx(pname, param);
8515    nsecs_t end_time = systemTime();
8516
8517    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8518    glContext->traceGLMessage(&glmsg);
8519}
8520
8521void GLTrace_glLightModelxv(GLenum pname, const GLfixed *params) {
8522    GLMessage glmsg;
8523    GLTraceContext *glContext = getGLTraceContext();
8524
8525    glmsg.set_function(GLMessage::glLightModelxv);
8526
8527    // copy argument pname
8528    GLMessage_DataType *arg_pname = glmsg.add_args();
8529    arg_pname->set_isarray(false);
8530    arg_pname->set_type(GLMessage::DataType::ENUM);
8531    arg_pname->add_intvalue((int)pname);
8532
8533    // copy argument params
8534    GLMessage_DataType *arg_params = glmsg.add_args();
8535    arg_params->set_isarray(false);
8536    arg_params->set_type(GLMessage::DataType::INT);
8537    arg_params->add_intvalue((int)params);
8538
8539    // call function
8540    nsecs_t start_time = systemTime();
8541    glContext->hooks->gl.glLightModelxv(pname, params);
8542    nsecs_t end_time = systemTime();
8543
8544    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8545    glContext->traceGLMessage(&glmsg);
8546}
8547
8548void GLTrace_glLightx(GLenum light, GLenum pname, GLfixed param) {
8549    GLMessage glmsg;
8550    GLTraceContext *glContext = getGLTraceContext();
8551
8552    glmsg.set_function(GLMessage::glLightx);
8553
8554    // copy argument light
8555    GLMessage_DataType *arg_light = glmsg.add_args();
8556    arg_light->set_isarray(false);
8557    arg_light->set_type(GLMessage::DataType::ENUM);
8558    arg_light->add_intvalue((int)light);
8559
8560    // copy argument pname
8561    GLMessage_DataType *arg_pname = glmsg.add_args();
8562    arg_pname->set_isarray(false);
8563    arg_pname->set_type(GLMessage::DataType::ENUM);
8564    arg_pname->add_intvalue((int)pname);
8565
8566    // copy argument param
8567    GLMessage_DataType *arg_param = glmsg.add_args();
8568    arg_param->set_isarray(false);
8569    arg_param->set_type(GLMessage::DataType::INT);
8570    arg_param->add_intvalue(param);
8571
8572    // call function
8573    nsecs_t start_time = systemTime();
8574    glContext->hooks->gl.glLightx(light, pname, param);
8575    nsecs_t end_time = systemTime();
8576
8577    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8578    glContext->traceGLMessage(&glmsg);
8579}
8580
8581void GLTrace_glLightxv(GLenum light, GLenum pname, const GLfixed *params) {
8582    GLMessage glmsg;
8583    GLTraceContext *glContext = getGLTraceContext();
8584
8585    glmsg.set_function(GLMessage::glLightxv);
8586
8587    // copy argument light
8588    GLMessage_DataType *arg_light = glmsg.add_args();
8589    arg_light->set_isarray(false);
8590    arg_light->set_type(GLMessage::DataType::ENUM);
8591    arg_light->add_intvalue((int)light);
8592
8593    // copy argument pname
8594    GLMessage_DataType *arg_pname = glmsg.add_args();
8595    arg_pname->set_isarray(false);
8596    arg_pname->set_type(GLMessage::DataType::ENUM);
8597    arg_pname->add_intvalue((int)pname);
8598
8599    // copy argument params
8600    GLMessage_DataType *arg_params = glmsg.add_args();
8601    arg_params->set_isarray(false);
8602    arg_params->set_type(GLMessage::DataType::INT);
8603    arg_params->add_intvalue((int)params);
8604
8605    // call function
8606    nsecs_t start_time = systemTime();
8607    glContext->hooks->gl.glLightxv(light, pname, params);
8608    nsecs_t end_time = systemTime();
8609
8610    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8611    glContext->traceGLMessage(&glmsg);
8612}
8613
8614void GLTrace_glLineWidthx(GLfixed width) {
8615    GLMessage glmsg;
8616    GLTraceContext *glContext = getGLTraceContext();
8617
8618    glmsg.set_function(GLMessage::glLineWidthx);
8619
8620    // copy argument width
8621    GLMessage_DataType *arg_width = glmsg.add_args();
8622    arg_width->set_isarray(false);
8623    arg_width->set_type(GLMessage::DataType::INT);
8624    arg_width->add_intvalue(width);
8625
8626    // call function
8627    nsecs_t start_time = systemTime();
8628    glContext->hooks->gl.glLineWidthx(width);
8629    nsecs_t end_time = systemTime();
8630
8631    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8632    glContext->traceGLMessage(&glmsg);
8633}
8634
8635void GLTrace_glLoadIdentity(void) {
8636    GLMessage glmsg;
8637    GLTraceContext *glContext = getGLTraceContext();
8638
8639    glmsg.set_function(GLMessage::glLoadIdentity);
8640
8641    // call function
8642    nsecs_t start_time = systemTime();
8643    glContext->hooks->gl.glLoadIdentity();
8644    nsecs_t end_time = systemTime();
8645
8646    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8647    glContext->traceGLMessage(&glmsg);
8648}
8649
8650void GLTrace_glLoadMatrixx(const GLfixed *m) {
8651    GLMessage glmsg;
8652    GLTraceContext *glContext = getGLTraceContext();
8653
8654    glmsg.set_function(GLMessage::glLoadMatrixx);
8655
8656    // copy argument m
8657    GLMessage_DataType *arg_m = glmsg.add_args();
8658    arg_m->set_isarray(false);
8659    arg_m->set_type(GLMessage::DataType::INT);
8660    arg_m->add_intvalue((int)m);
8661
8662    // call function
8663    nsecs_t start_time = systemTime();
8664    glContext->hooks->gl.glLoadMatrixx(m);
8665    nsecs_t end_time = systemTime();
8666
8667    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8668    glContext->traceGLMessage(&glmsg);
8669}
8670
8671void GLTrace_glLogicOp(GLenum opcode) {
8672    GLMessage glmsg;
8673    GLTraceContext *glContext = getGLTraceContext();
8674
8675    glmsg.set_function(GLMessage::glLogicOp);
8676
8677    // copy argument opcode
8678    GLMessage_DataType *arg_opcode = glmsg.add_args();
8679    arg_opcode->set_isarray(false);
8680    arg_opcode->set_type(GLMessage::DataType::ENUM);
8681    arg_opcode->add_intvalue((int)opcode);
8682
8683    // call function
8684    nsecs_t start_time = systemTime();
8685    glContext->hooks->gl.glLogicOp(opcode);
8686    nsecs_t end_time = systemTime();
8687
8688    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8689    glContext->traceGLMessage(&glmsg);
8690}
8691
8692void GLTrace_glMaterialx(GLenum face, GLenum pname, GLfixed param) {
8693    GLMessage glmsg;
8694    GLTraceContext *glContext = getGLTraceContext();
8695
8696    glmsg.set_function(GLMessage::glMaterialx);
8697
8698    // copy argument face
8699    GLMessage_DataType *arg_face = glmsg.add_args();
8700    arg_face->set_isarray(false);
8701    arg_face->set_type(GLMessage::DataType::ENUM);
8702    arg_face->add_intvalue((int)face);
8703
8704    // copy argument pname
8705    GLMessage_DataType *arg_pname = glmsg.add_args();
8706    arg_pname->set_isarray(false);
8707    arg_pname->set_type(GLMessage::DataType::ENUM);
8708    arg_pname->add_intvalue((int)pname);
8709
8710    // copy argument param
8711    GLMessage_DataType *arg_param = glmsg.add_args();
8712    arg_param->set_isarray(false);
8713    arg_param->set_type(GLMessage::DataType::INT);
8714    arg_param->add_intvalue(param);
8715
8716    // call function
8717    nsecs_t start_time = systemTime();
8718    glContext->hooks->gl.glMaterialx(face, pname, param);
8719    nsecs_t end_time = systemTime();
8720
8721    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8722    glContext->traceGLMessage(&glmsg);
8723}
8724
8725void GLTrace_glMaterialxv(GLenum face, GLenum pname, const GLfixed *params) {
8726    GLMessage glmsg;
8727    GLTraceContext *glContext = getGLTraceContext();
8728
8729    glmsg.set_function(GLMessage::glMaterialxv);
8730
8731    // copy argument face
8732    GLMessage_DataType *arg_face = glmsg.add_args();
8733    arg_face->set_isarray(false);
8734    arg_face->set_type(GLMessage::DataType::ENUM);
8735    arg_face->add_intvalue((int)face);
8736
8737    // copy argument pname
8738    GLMessage_DataType *arg_pname = glmsg.add_args();
8739    arg_pname->set_isarray(false);
8740    arg_pname->set_type(GLMessage::DataType::ENUM);
8741    arg_pname->add_intvalue((int)pname);
8742
8743    // copy argument params
8744    GLMessage_DataType *arg_params = glmsg.add_args();
8745    arg_params->set_isarray(false);
8746    arg_params->set_type(GLMessage::DataType::INT);
8747    arg_params->add_intvalue((int)params);
8748
8749    // call function
8750    nsecs_t start_time = systemTime();
8751    glContext->hooks->gl.glMaterialxv(face, pname, params);
8752    nsecs_t end_time = systemTime();
8753
8754    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8755    glContext->traceGLMessage(&glmsg);
8756}
8757
8758void GLTrace_glMatrixMode(GLenum mode) {
8759    GLMessage glmsg;
8760    GLTraceContext *glContext = getGLTraceContext();
8761
8762    glmsg.set_function(GLMessage::glMatrixMode);
8763
8764    // copy argument mode
8765    GLMessage_DataType *arg_mode = glmsg.add_args();
8766    arg_mode->set_isarray(false);
8767    arg_mode->set_type(GLMessage::DataType::ENUM);
8768    arg_mode->add_intvalue((int)mode);
8769
8770    // call function
8771    nsecs_t start_time = systemTime();
8772    glContext->hooks->gl.glMatrixMode(mode);
8773    nsecs_t end_time = systemTime();
8774
8775    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8776    glContext->traceGLMessage(&glmsg);
8777}
8778
8779void GLTrace_glMultMatrixx(const GLfixed *m) {
8780    GLMessage glmsg;
8781    GLTraceContext *glContext = getGLTraceContext();
8782
8783    glmsg.set_function(GLMessage::glMultMatrixx);
8784
8785    // copy argument m
8786    GLMessage_DataType *arg_m = glmsg.add_args();
8787    arg_m->set_isarray(false);
8788    arg_m->set_type(GLMessage::DataType::INT);
8789    arg_m->add_intvalue((int)m);
8790
8791    // call function
8792    nsecs_t start_time = systemTime();
8793    glContext->hooks->gl.glMultMatrixx(m);
8794    nsecs_t end_time = systemTime();
8795
8796    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8797    glContext->traceGLMessage(&glmsg);
8798}
8799
8800void GLTrace_glMultiTexCoord4x(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q) {
8801    GLMessage glmsg;
8802    GLTraceContext *glContext = getGLTraceContext();
8803
8804    glmsg.set_function(GLMessage::glMultiTexCoord4x);
8805
8806    // copy argument target
8807    GLMessage_DataType *arg_target = glmsg.add_args();
8808    arg_target->set_isarray(false);
8809    arg_target->set_type(GLMessage::DataType::ENUM);
8810    arg_target->add_intvalue((int)target);
8811
8812    // copy argument s
8813    GLMessage_DataType *arg_s = glmsg.add_args();
8814    arg_s->set_isarray(false);
8815    arg_s->set_type(GLMessage::DataType::INT);
8816    arg_s->add_intvalue(s);
8817
8818    // copy argument t
8819    GLMessage_DataType *arg_t = glmsg.add_args();
8820    arg_t->set_isarray(false);
8821    arg_t->set_type(GLMessage::DataType::INT);
8822    arg_t->add_intvalue(t);
8823
8824    // copy argument r
8825    GLMessage_DataType *arg_r = glmsg.add_args();
8826    arg_r->set_isarray(false);
8827    arg_r->set_type(GLMessage::DataType::INT);
8828    arg_r->add_intvalue(r);
8829
8830    // copy argument q
8831    GLMessage_DataType *arg_q = glmsg.add_args();
8832    arg_q->set_isarray(false);
8833    arg_q->set_type(GLMessage::DataType::INT);
8834    arg_q->add_intvalue(q);
8835
8836    // call function
8837    nsecs_t start_time = systemTime();
8838    glContext->hooks->gl.glMultiTexCoord4x(target, s, t, r, q);
8839    nsecs_t end_time = systemTime();
8840
8841    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8842    glContext->traceGLMessage(&glmsg);
8843}
8844
8845void GLTrace_glNormal3x(GLfixed nx, GLfixed ny, GLfixed nz) {
8846    GLMessage glmsg;
8847    GLTraceContext *glContext = getGLTraceContext();
8848
8849    glmsg.set_function(GLMessage::glNormal3x);
8850
8851    // copy argument nx
8852    GLMessage_DataType *arg_nx = glmsg.add_args();
8853    arg_nx->set_isarray(false);
8854    arg_nx->set_type(GLMessage::DataType::INT);
8855    arg_nx->add_intvalue(nx);
8856
8857    // copy argument ny
8858    GLMessage_DataType *arg_ny = glmsg.add_args();
8859    arg_ny->set_isarray(false);
8860    arg_ny->set_type(GLMessage::DataType::INT);
8861    arg_ny->add_intvalue(ny);
8862
8863    // copy argument nz
8864    GLMessage_DataType *arg_nz = glmsg.add_args();
8865    arg_nz->set_isarray(false);
8866    arg_nz->set_type(GLMessage::DataType::INT);
8867    arg_nz->add_intvalue(nz);
8868
8869    // call function
8870    nsecs_t start_time = systemTime();
8871    glContext->hooks->gl.glNormal3x(nx, ny, nz);
8872    nsecs_t end_time = systemTime();
8873
8874    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8875    glContext->traceGLMessage(&glmsg);
8876}
8877
8878void GLTrace_glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) {
8879    GLMessage glmsg;
8880    GLTraceContext *glContext = getGLTraceContext();
8881
8882    glmsg.set_function(GLMessage::glNormalPointer);
8883
8884    // copy argument type
8885    GLMessage_DataType *arg_type = glmsg.add_args();
8886    arg_type->set_isarray(false);
8887    arg_type->set_type(GLMessage::DataType::ENUM);
8888    arg_type->add_intvalue((int)type);
8889
8890    // copy argument stride
8891    GLMessage_DataType *arg_stride = glmsg.add_args();
8892    arg_stride->set_isarray(false);
8893    arg_stride->set_type(GLMessage::DataType::INT);
8894    arg_stride->add_intvalue(stride);
8895
8896    // copy argument pointer
8897    GLMessage_DataType *arg_pointer = glmsg.add_args();
8898    arg_pointer->set_isarray(false);
8899    arg_pointer->set_type(GLMessage::DataType::INT);
8900    arg_pointer->add_intvalue((int)pointer);
8901
8902    // call function
8903    nsecs_t start_time = systemTime();
8904    glContext->hooks->gl.glNormalPointer(type, stride, pointer);
8905    nsecs_t end_time = systemTime();
8906
8907    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8908    glContext->traceGLMessage(&glmsg);
8909}
8910
8911void GLTrace_glOrthox(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
8912    GLMessage glmsg;
8913    GLTraceContext *glContext = getGLTraceContext();
8914
8915    glmsg.set_function(GLMessage::glOrthox);
8916
8917    // copy argument left
8918    GLMessage_DataType *arg_left = glmsg.add_args();
8919    arg_left->set_isarray(false);
8920    arg_left->set_type(GLMessage::DataType::INT);
8921    arg_left->add_intvalue(left);
8922
8923    // copy argument right
8924    GLMessage_DataType *arg_right = glmsg.add_args();
8925    arg_right->set_isarray(false);
8926    arg_right->set_type(GLMessage::DataType::INT);
8927    arg_right->add_intvalue(right);
8928
8929    // copy argument bottom
8930    GLMessage_DataType *arg_bottom = glmsg.add_args();
8931    arg_bottom->set_isarray(false);
8932    arg_bottom->set_type(GLMessage::DataType::INT);
8933    arg_bottom->add_intvalue(bottom);
8934
8935    // copy argument top
8936    GLMessage_DataType *arg_top = glmsg.add_args();
8937    arg_top->set_isarray(false);
8938    arg_top->set_type(GLMessage::DataType::INT);
8939    arg_top->add_intvalue(top);
8940
8941    // copy argument zNear
8942    GLMessage_DataType *arg_zNear = glmsg.add_args();
8943    arg_zNear->set_isarray(false);
8944    arg_zNear->set_type(GLMessage::DataType::INT);
8945    arg_zNear->add_intvalue(zNear);
8946
8947    // copy argument zFar
8948    GLMessage_DataType *arg_zFar = glmsg.add_args();
8949    arg_zFar->set_isarray(false);
8950    arg_zFar->set_type(GLMessage::DataType::INT);
8951    arg_zFar->add_intvalue(zFar);
8952
8953    // call function
8954    nsecs_t start_time = systemTime();
8955    glContext->hooks->gl.glOrthox(left, right, bottom, top, zNear, zFar);
8956    nsecs_t end_time = systemTime();
8957
8958    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8959    glContext->traceGLMessage(&glmsg);
8960}
8961
8962void GLTrace_glPointParameterx(GLenum pname, GLfixed param) {
8963    GLMessage glmsg;
8964    GLTraceContext *glContext = getGLTraceContext();
8965
8966    glmsg.set_function(GLMessage::glPointParameterx);
8967
8968    // copy argument pname
8969    GLMessage_DataType *arg_pname = glmsg.add_args();
8970    arg_pname->set_isarray(false);
8971    arg_pname->set_type(GLMessage::DataType::ENUM);
8972    arg_pname->add_intvalue((int)pname);
8973
8974    // copy argument param
8975    GLMessage_DataType *arg_param = glmsg.add_args();
8976    arg_param->set_isarray(false);
8977    arg_param->set_type(GLMessage::DataType::INT);
8978    arg_param->add_intvalue(param);
8979
8980    // call function
8981    nsecs_t start_time = systemTime();
8982    glContext->hooks->gl.glPointParameterx(pname, param);
8983    nsecs_t end_time = systemTime();
8984
8985    fixupGLMessage(glContext, start_time, end_time, &glmsg);
8986    glContext->traceGLMessage(&glmsg);
8987}
8988
8989void GLTrace_glPointParameterxv(GLenum pname, const GLfixed *params) {
8990    GLMessage glmsg;
8991    GLTraceContext *glContext = getGLTraceContext();
8992
8993    glmsg.set_function(GLMessage::glPointParameterxv);
8994
8995    // copy argument pname
8996    GLMessage_DataType *arg_pname = glmsg.add_args();
8997    arg_pname->set_isarray(false);
8998    arg_pname->set_type(GLMessage::DataType::ENUM);
8999    arg_pname->add_intvalue((int)pname);
9000
9001    // copy argument params
9002    GLMessage_DataType *arg_params = glmsg.add_args();
9003    arg_params->set_isarray(false);
9004    arg_params->set_type(GLMessage::DataType::INT);
9005    arg_params->add_intvalue((int)params);
9006
9007    // call function
9008    nsecs_t start_time = systemTime();
9009    glContext->hooks->gl.glPointParameterxv(pname, params);
9010    nsecs_t end_time = systemTime();
9011
9012    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9013    glContext->traceGLMessage(&glmsg);
9014}
9015
9016void GLTrace_glPointSizex(GLfixed size) {
9017    GLMessage glmsg;
9018    GLTraceContext *glContext = getGLTraceContext();
9019
9020    glmsg.set_function(GLMessage::glPointSizex);
9021
9022    // copy argument size
9023    GLMessage_DataType *arg_size = glmsg.add_args();
9024    arg_size->set_isarray(false);
9025    arg_size->set_type(GLMessage::DataType::INT);
9026    arg_size->add_intvalue(size);
9027
9028    // call function
9029    nsecs_t start_time = systemTime();
9030    glContext->hooks->gl.glPointSizex(size);
9031    nsecs_t end_time = systemTime();
9032
9033    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9034    glContext->traceGLMessage(&glmsg);
9035}
9036
9037void GLTrace_glPolygonOffsetx(GLfixed factor, GLfixed units) {
9038    GLMessage glmsg;
9039    GLTraceContext *glContext = getGLTraceContext();
9040
9041    glmsg.set_function(GLMessage::glPolygonOffsetx);
9042
9043    // copy argument factor
9044    GLMessage_DataType *arg_factor = glmsg.add_args();
9045    arg_factor->set_isarray(false);
9046    arg_factor->set_type(GLMessage::DataType::INT);
9047    arg_factor->add_intvalue(factor);
9048
9049    // copy argument units
9050    GLMessage_DataType *arg_units = glmsg.add_args();
9051    arg_units->set_isarray(false);
9052    arg_units->set_type(GLMessage::DataType::INT);
9053    arg_units->add_intvalue(units);
9054
9055    // call function
9056    nsecs_t start_time = systemTime();
9057    glContext->hooks->gl.glPolygonOffsetx(factor, units);
9058    nsecs_t end_time = systemTime();
9059
9060    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9061    glContext->traceGLMessage(&glmsg);
9062}
9063
9064void GLTrace_glPopMatrix(void) {
9065    GLMessage glmsg;
9066    GLTraceContext *glContext = getGLTraceContext();
9067
9068    glmsg.set_function(GLMessage::glPopMatrix);
9069
9070    // call function
9071    nsecs_t start_time = systemTime();
9072    glContext->hooks->gl.glPopMatrix();
9073    nsecs_t end_time = systemTime();
9074
9075    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9076    glContext->traceGLMessage(&glmsg);
9077}
9078
9079void GLTrace_glPushMatrix(void) {
9080    GLMessage glmsg;
9081    GLTraceContext *glContext = getGLTraceContext();
9082
9083    glmsg.set_function(GLMessage::glPushMatrix);
9084
9085    // call function
9086    nsecs_t start_time = systemTime();
9087    glContext->hooks->gl.glPushMatrix();
9088    nsecs_t end_time = systemTime();
9089
9090    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9091    glContext->traceGLMessage(&glmsg);
9092}
9093
9094void GLTrace_glRotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z) {
9095    GLMessage glmsg;
9096    GLTraceContext *glContext = getGLTraceContext();
9097
9098    glmsg.set_function(GLMessage::glRotatex);
9099
9100    // copy argument angle
9101    GLMessage_DataType *arg_angle = glmsg.add_args();
9102    arg_angle->set_isarray(false);
9103    arg_angle->set_type(GLMessage::DataType::INT);
9104    arg_angle->add_intvalue(angle);
9105
9106    // copy argument x
9107    GLMessage_DataType *arg_x = glmsg.add_args();
9108    arg_x->set_isarray(false);
9109    arg_x->set_type(GLMessage::DataType::INT);
9110    arg_x->add_intvalue(x);
9111
9112    // copy argument y
9113    GLMessage_DataType *arg_y = glmsg.add_args();
9114    arg_y->set_isarray(false);
9115    arg_y->set_type(GLMessage::DataType::INT);
9116    arg_y->add_intvalue(y);
9117
9118    // copy argument z
9119    GLMessage_DataType *arg_z = glmsg.add_args();
9120    arg_z->set_isarray(false);
9121    arg_z->set_type(GLMessage::DataType::INT);
9122    arg_z->add_intvalue(z);
9123
9124    // call function
9125    nsecs_t start_time = systemTime();
9126    glContext->hooks->gl.glRotatex(angle, x, y, z);
9127    nsecs_t end_time = systemTime();
9128
9129    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9130    glContext->traceGLMessage(&glmsg);
9131}
9132
9133void GLTrace_glSampleCoveragex(GLclampx value, GLboolean invert) {
9134    GLMessage glmsg;
9135    GLTraceContext *glContext = getGLTraceContext();
9136
9137    glmsg.set_function(GLMessage::glSampleCoveragex);
9138
9139    // copy argument value
9140    GLMessage_DataType *arg_value = glmsg.add_args();
9141    arg_value->set_isarray(false);
9142    arg_value->set_type(GLMessage::DataType::INT);
9143    arg_value->add_intvalue(value);
9144
9145    // copy argument invert
9146    GLMessage_DataType *arg_invert = glmsg.add_args();
9147    arg_invert->set_isarray(false);
9148    arg_invert->set_type(GLMessage::DataType::BOOL);
9149    arg_invert->add_boolvalue(invert);
9150
9151    // call function
9152    nsecs_t start_time = systemTime();
9153    glContext->hooks->gl.glSampleCoveragex(value, invert);
9154    nsecs_t end_time = systemTime();
9155
9156    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9157    glContext->traceGLMessage(&glmsg);
9158}
9159
9160void GLTrace_glScalex(GLfixed x, GLfixed y, GLfixed z) {
9161    GLMessage glmsg;
9162    GLTraceContext *glContext = getGLTraceContext();
9163
9164    glmsg.set_function(GLMessage::glScalex);
9165
9166    // copy argument x
9167    GLMessage_DataType *arg_x = glmsg.add_args();
9168    arg_x->set_isarray(false);
9169    arg_x->set_type(GLMessage::DataType::INT);
9170    arg_x->add_intvalue(x);
9171
9172    // copy argument y
9173    GLMessage_DataType *arg_y = glmsg.add_args();
9174    arg_y->set_isarray(false);
9175    arg_y->set_type(GLMessage::DataType::INT);
9176    arg_y->add_intvalue(y);
9177
9178    // copy argument z
9179    GLMessage_DataType *arg_z = glmsg.add_args();
9180    arg_z->set_isarray(false);
9181    arg_z->set_type(GLMessage::DataType::INT);
9182    arg_z->add_intvalue(z);
9183
9184    // call function
9185    nsecs_t start_time = systemTime();
9186    glContext->hooks->gl.glScalex(x, y, z);
9187    nsecs_t end_time = systemTime();
9188
9189    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9190    glContext->traceGLMessage(&glmsg);
9191}
9192
9193void GLTrace_glShadeModel(GLenum mode) {
9194    GLMessage glmsg;
9195    GLTraceContext *glContext = getGLTraceContext();
9196
9197    glmsg.set_function(GLMessage::glShadeModel);
9198
9199    // copy argument mode
9200    GLMessage_DataType *arg_mode = glmsg.add_args();
9201    arg_mode->set_isarray(false);
9202    arg_mode->set_type(GLMessage::DataType::ENUM);
9203    arg_mode->add_intvalue((int)mode);
9204
9205    // call function
9206    nsecs_t start_time = systemTime();
9207    glContext->hooks->gl.glShadeModel(mode);
9208    nsecs_t end_time = systemTime();
9209
9210    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9211    glContext->traceGLMessage(&glmsg);
9212}
9213
9214void GLTrace_glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
9215    GLMessage glmsg;
9216    GLTraceContext *glContext = getGLTraceContext();
9217
9218    glmsg.set_function(GLMessage::glTexCoordPointer);
9219
9220    // copy argument size
9221    GLMessage_DataType *arg_size = glmsg.add_args();
9222    arg_size->set_isarray(false);
9223    arg_size->set_type(GLMessage::DataType::INT);
9224    arg_size->add_intvalue(size);
9225
9226    // copy argument type
9227    GLMessage_DataType *arg_type = glmsg.add_args();
9228    arg_type->set_isarray(false);
9229    arg_type->set_type(GLMessage::DataType::ENUM);
9230    arg_type->add_intvalue((int)type);
9231
9232    // copy argument stride
9233    GLMessage_DataType *arg_stride = glmsg.add_args();
9234    arg_stride->set_isarray(false);
9235    arg_stride->set_type(GLMessage::DataType::INT);
9236    arg_stride->add_intvalue(stride);
9237
9238    // copy argument pointer
9239    GLMessage_DataType *arg_pointer = glmsg.add_args();
9240    arg_pointer->set_isarray(false);
9241    arg_pointer->set_type(GLMessage::DataType::INT);
9242    arg_pointer->add_intvalue((int)pointer);
9243
9244    // call function
9245    nsecs_t start_time = systemTime();
9246    glContext->hooks->gl.glTexCoordPointer(size, type, stride, pointer);
9247    nsecs_t end_time = systemTime();
9248
9249    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9250    glContext->traceGLMessage(&glmsg);
9251}
9252
9253void GLTrace_glTexEnvi(GLenum target, GLenum pname, GLint param) {
9254    GLMessage glmsg;
9255    GLTraceContext *glContext = getGLTraceContext();
9256
9257    glmsg.set_function(GLMessage::glTexEnvi);
9258
9259    // copy argument target
9260    GLMessage_DataType *arg_target = glmsg.add_args();
9261    arg_target->set_isarray(false);
9262    arg_target->set_type(GLMessage::DataType::ENUM);
9263    arg_target->add_intvalue((int)target);
9264
9265    // copy argument pname
9266    GLMessage_DataType *arg_pname = glmsg.add_args();
9267    arg_pname->set_isarray(false);
9268    arg_pname->set_type(GLMessage::DataType::ENUM);
9269    arg_pname->add_intvalue((int)pname);
9270
9271    // copy argument param
9272    GLMessage_DataType *arg_param = glmsg.add_args();
9273    arg_param->set_isarray(false);
9274    arg_param->set_type(GLMessage::DataType::INT);
9275    arg_param->add_intvalue(param);
9276
9277    // call function
9278    nsecs_t start_time = systemTime();
9279    glContext->hooks->gl.glTexEnvi(target, pname, param);
9280    nsecs_t end_time = systemTime();
9281
9282    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9283    glContext->traceGLMessage(&glmsg);
9284}
9285
9286void GLTrace_glTexEnvx(GLenum target, GLenum pname, GLfixed param) {
9287    GLMessage glmsg;
9288    GLTraceContext *glContext = getGLTraceContext();
9289
9290    glmsg.set_function(GLMessage::glTexEnvx);
9291
9292    // copy argument target
9293    GLMessage_DataType *arg_target = glmsg.add_args();
9294    arg_target->set_isarray(false);
9295    arg_target->set_type(GLMessage::DataType::ENUM);
9296    arg_target->add_intvalue((int)target);
9297
9298    // copy argument pname
9299    GLMessage_DataType *arg_pname = glmsg.add_args();
9300    arg_pname->set_isarray(false);
9301    arg_pname->set_type(GLMessage::DataType::ENUM);
9302    arg_pname->add_intvalue((int)pname);
9303
9304    // copy argument param
9305    GLMessage_DataType *arg_param = glmsg.add_args();
9306    arg_param->set_isarray(false);
9307    arg_param->set_type(GLMessage::DataType::INT);
9308    arg_param->add_intvalue(param);
9309
9310    // call function
9311    nsecs_t start_time = systemTime();
9312    glContext->hooks->gl.glTexEnvx(target, pname, param);
9313    nsecs_t end_time = systemTime();
9314
9315    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9316    glContext->traceGLMessage(&glmsg);
9317}
9318
9319void GLTrace_glTexEnviv(GLenum target, GLenum pname, const GLint *params) {
9320    GLMessage glmsg;
9321    GLTraceContext *glContext = getGLTraceContext();
9322
9323    glmsg.set_function(GLMessage::glTexEnviv);
9324
9325    // copy argument target
9326    GLMessage_DataType *arg_target = glmsg.add_args();
9327    arg_target->set_isarray(false);
9328    arg_target->set_type(GLMessage::DataType::ENUM);
9329    arg_target->add_intvalue((int)target);
9330
9331    // copy argument pname
9332    GLMessage_DataType *arg_pname = glmsg.add_args();
9333    arg_pname->set_isarray(false);
9334    arg_pname->set_type(GLMessage::DataType::ENUM);
9335    arg_pname->add_intvalue((int)pname);
9336
9337    // copy argument params
9338    GLMessage_DataType *arg_params = glmsg.add_args();
9339    arg_params->set_isarray(false);
9340    arg_params->set_type(GLMessage::DataType::INT);
9341    arg_params->add_intvalue((int)params);
9342
9343    // call function
9344    nsecs_t start_time = systemTime();
9345    glContext->hooks->gl.glTexEnviv(target, pname, params);
9346    nsecs_t end_time = systemTime();
9347
9348    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9349    glContext->traceGLMessage(&glmsg);
9350}
9351
9352void GLTrace_glTexEnvxv(GLenum target, GLenum pname, const GLfixed *params) {
9353    GLMessage glmsg;
9354    GLTraceContext *glContext = getGLTraceContext();
9355
9356    glmsg.set_function(GLMessage::glTexEnvxv);
9357
9358    // copy argument target
9359    GLMessage_DataType *arg_target = glmsg.add_args();
9360    arg_target->set_isarray(false);
9361    arg_target->set_type(GLMessage::DataType::ENUM);
9362    arg_target->add_intvalue((int)target);
9363
9364    // copy argument pname
9365    GLMessage_DataType *arg_pname = glmsg.add_args();
9366    arg_pname->set_isarray(false);
9367    arg_pname->set_type(GLMessage::DataType::ENUM);
9368    arg_pname->add_intvalue((int)pname);
9369
9370    // copy argument params
9371    GLMessage_DataType *arg_params = glmsg.add_args();
9372    arg_params->set_isarray(false);
9373    arg_params->set_type(GLMessage::DataType::INT);
9374    arg_params->add_intvalue((int)params);
9375
9376    // call function
9377    nsecs_t start_time = systemTime();
9378    glContext->hooks->gl.glTexEnvxv(target, pname, params);
9379    nsecs_t end_time = systemTime();
9380
9381    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9382    glContext->traceGLMessage(&glmsg);
9383}
9384
9385void GLTrace_glTexParameterx(GLenum target, GLenum pname, GLfixed param) {
9386    GLMessage glmsg;
9387    GLTraceContext *glContext = getGLTraceContext();
9388
9389    glmsg.set_function(GLMessage::glTexParameterx);
9390
9391    // copy argument target
9392    GLMessage_DataType *arg_target = glmsg.add_args();
9393    arg_target->set_isarray(false);
9394    arg_target->set_type(GLMessage::DataType::ENUM);
9395    arg_target->add_intvalue((int)target);
9396
9397    // copy argument pname
9398    GLMessage_DataType *arg_pname = glmsg.add_args();
9399    arg_pname->set_isarray(false);
9400    arg_pname->set_type(GLMessage::DataType::ENUM);
9401    arg_pname->add_intvalue((int)pname);
9402
9403    // copy argument param
9404    GLMessage_DataType *arg_param = glmsg.add_args();
9405    arg_param->set_isarray(false);
9406    arg_param->set_type(GLMessage::DataType::INT);
9407    arg_param->add_intvalue(param);
9408
9409    // call function
9410    nsecs_t start_time = systemTime();
9411    glContext->hooks->gl.glTexParameterx(target, pname, param);
9412    nsecs_t end_time = systemTime();
9413
9414    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9415    glContext->traceGLMessage(&glmsg);
9416}
9417
9418void GLTrace_glTexParameterxv(GLenum target, GLenum pname, const GLfixed *params) {
9419    GLMessage glmsg;
9420    GLTraceContext *glContext = getGLTraceContext();
9421
9422    glmsg.set_function(GLMessage::glTexParameterxv);
9423
9424    // copy argument target
9425    GLMessage_DataType *arg_target = glmsg.add_args();
9426    arg_target->set_isarray(false);
9427    arg_target->set_type(GLMessage::DataType::ENUM);
9428    arg_target->add_intvalue((int)target);
9429
9430    // copy argument pname
9431    GLMessage_DataType *arg_pname = glmsg.add_args();
9432    arg_pname->set_isarray(false);
9433    arg_pname->set_type(GLMessage::DataType::ENUM);
9434    arg_pname->add_intvalue((int)pname);
9435
9436    // copy argument params
9437    GLMessage_DataType *arg_params = glmsg.add_args();
9438    arg_params->set_isarray(false);
9439    arg_params->set_type(GLMessage::DataType::INT);
9440    arg_params->add_intvalue((int)params);
9441
9442    // call function
9443    nsecs_t start_time = systemTime();
9444    glContext->hooks->gl.glTexParameterxv(target, pname, params);
9445    nsecs_t end_time = systemTime();
9446
9447    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9448    glContext->traceGLMessage(&glmsg);
9449}
9450
9451void GLTrace_glTranslatex(GLfixed x, GLfixed y, GLfixed z) {
9452    GLMessage glmsg;
9453    GLTraceContext *glContext = getGLTraceContext();
9454
9455    glmsg.set_function(GLMessage::glTranslatex);
9456
9457    // copy argument x
9458    GLMessage_DataType *arg_x = glmsg.add_args();
9459    arg_x->set_isarray(false);
9460    arg_x->set_type(GLMessage::DataType::INT);
9461    arg_x->add_intvalue(x);
9462
9463    // copy argument y
9464    GLMessage_DataType *arg_y = glmsg.add_args();
9465    arg_y->set_isarray(false);
9466    arg_y->set_type(GLMessage::DataType::INT);
9467    arg_y->add_intvalue(y);
9468
9469    // copy argument z
9470    GLMessage_DataType *arg_z = glmsg.add_args();
9471    arg_z->set_isarray(false);
9472    arg_z->set_type(GLMessage::DataType::INT);
9473    arg_z->add_intvalue(z);
9474
9475    // call function
9476    nsecs_t start_time = systemTime();
9477    glContext->hooks->gl.glTranslatex(x, y, z);
9478    nsecs_t end_time = systemTime();
9479
9480    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9481    glContext->traceGLMessage(&glmsg);
9482}
9483
9484void GLTrace_glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
9485    GLMessage glmsg;
9486    GLTraceContext *glContext = getGLTraceContext();
9487
9488    glmsg.set_function(GLMessage::glVertexPointer);
9489
9490    // copy argument size
9491    GLMessage_DataType *arg_size = glmsg.add_args();
9492    arg_size->set_isarray(false);
9493    arg_size->set_type(GLMessage::DataType::INT);
9494    arg_size->add_intvalue(size);
9495
9496    // copy argument type
9497    GLMessage_DataType *arg_type = glmsg.add_args();
9498    arg_type->set_isarray(false);
9499    arg_type->set_type(GLMessage::DataType::ENUM);
9500    arg_type->add_intvalue((int)type);
9501
9502    // copy argument stride
9503    GLMessage_DataType *arg_stride = glmsg.add_args();
9504    arg_stride->set_isarray(false);
9505    arg_stride->set_type(GLMessage::DataType::INT);
9506    arg_stride->add_intvalue(stride);
9507
9508    // copy argument pointer
9509    GLMessage_DataType *arg_pointer = glmsg.add_args();
9510    arg_pointer->set_isarray(false);
9511    arg_pointer->set_type(GLMessage::DataType::INT);
9512    arg_pointer->add_intvalue((int)pointer);
9513
9514    // call function
9515    nsecs_t start_time = systemTime();
9516    glContext->hooks->gl.glVertexPointer(size, type, stride, pointer);
9517    nsecs_t end_time = systemTime();
9518
9519    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9520    glContext->traceGLMessage(&glmsg);
9521}
9522
9523void GLTrace_glPointSizePointerOES(GLenum type, GLsizei stride, const GLvoid *pointer) {
9524    GLMessage glmsg;
9525    GLTraceContext *glContext = getGLTraceContext();
9526
9527    glmsg.set_function(GLMessage::glPointSizePointerOES);
9528
9529    // copy argument type
9530    GLMessage_DataType *arg_type = glmsg.add_args();
9531    arg_type->set_isarray(false);
9532    arg_type->set_type(GLMessage::DataType::ENUM);
9533    arg_type->add_intvalue((int)type);
9534
9535    // copy argument stride
9536    GLMessage_DataType *arg_stride = glmsg.add_args();
9537    arg_stride->set_isarray(false);
9538    arg_stride->set_type(GLMessage::DataType::INT);
9539    arg_stride->add_intvalue(stride);
9540
9541    // copy argument pointer
9542    GLMessage_DataType *arg_pointer = glmsg.add_args();
9543    arg_pointer->set_isarray(false);
9544    arg_pointer->set_type(GLMessage::DataType::INT);
9545    arg_pointer->add_intvalue((int)pointer);
9546
9547    // call function
9548    nsecs_t start_time = systemTime();
9549    glContext->hooks->gl.glPointSizePointerOES(type, stride, pointer);
9550    nsecs_t end_time = systemTime();
9551
9552    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9553    glContext->traceGLMessage(&glmsg);
9554}
9555
9556
9557// Definitions for GL1Ext APIs
9558
9559void GLTrace_glBlendEquationSeparateOES(GLenum modeRGB, GLenum modeAlpha) {
9560    GLMessage glmsg;
9561    GLTraceContext *glContext = getGLTraceContext();
9562
9563    glmsg.set_function(GLMessage::glBlendEquationSeparateOES);
9564
9565    // copy argument modeRGB
9566    GLMessage_DataType *arg_modeRGB = glmsg.add_args();
9567    arg_modeRGB->set_isarray(false);
9568    arg_modeRGB->set_type(GLMessage::DataType::ENUM);
9569    arg_modeRGB->add_intvalue((int)modeRGB);
9570
9571    // copy argument modeAlpha
9572    GLMessage_DataType *arg_modeAlpha = glmsg.add_args();
9573    arg_modeAlpha->set_isarray(false);
9574    arg_modeAlpha->set_type(GLMessage::DataType::ENUM);
9575    arg_modeAlpha->add_intvalue((int)modeAlpha);
9576
9577    // call function
9578    nsecs_t start_time = systemTime();
9579    glContext->hooks->gl.glBlendEquationSeparateOES(modeRGB, modeAlpha);
9580    nsecs_t end_time = systemTime();
9581
9582    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9583    glContext->traceGLMessage(&glmsg);
9584}
9585
9586void GLTrace_glBlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) {
9587    GLMessage glmsg;
9588    GLTraceContext *glContext = getGLTraceContext();
9589
9590    glmsg.set_function(GLMessage::glBlendFuncSeparateOES);
9591
9592    // copy argument srcRGB
9593    GLMessage_DataType *arg_srcRGB = glmsg.add_args();
9594    arg_srcRGB->set_isarray(false);
9595    arg_srcRGB->set_type(GLMessage::DataType::ENUM);
9596    arg_srcRGB->add_intvalue((int)srcRGB);
9597
9598    // copy argument dstRGB
9599    GLMessage_DataType *arg_dstRGB = glmsg.add_args();
9600    arg_dstRGB->set_isarray(false);
9601    arg_dstRGB->set_type(GLMessage::DataType::ENUM);
9602    arg_dstRGB->add_intvalue((int)dstRGB);
9603
9604    // copy argument srcAlpha
9605    GLMessage_DataType *arg_srcAlpha = glmsg.add_args();
9606    arg_srcAlpha->set_isarray(false);
9607    arg_srcAlpha->set_type(GLMessage::DataType::ENUM);
9608    arg_srcAlpha->add_intvalue((int)srcAlpha);
9609
9610    // copy argument dstAlpha
9611    GLMessage_DataType *arg_dstAlpha = glmsg.add_args();
9612    arg_dstAlpha->set_isarray(false);
9613    arg_dstAlpha->set_type(GLMessage::DataType::ENUM);
9614    arg_dstAlpha->add_intvalue((int)dstAlpha);
9615
9616    // call function
9617    nsecs_t start_time = systemTime();
9618    glContext->hooks->gl.glBlendFuncSeparateOES(srcRGB, dstRGB, srcAlpha, dstAlpha);
9619    nsecs_t end_time = systemTime();
9620
9621    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9622    glContext->traceGLMessage(&glmsg);
9623}
9624
9625void GLTrace_glBlendEquationOES(GLenum mode) {
9626    GLMessage glmsg;
9627    GLTraceContext *glContext = getGLTraceContext();
9628
9629    glmsg.set_function(GLMessage::glBlendEquationOES);
9630
9631    // copy argument mode
9632    GLMessage_DataType *arg_mode = glmsg.add_args();
9633    arg_mode->set_isarray(false);
9634    arg_mode->set_type(GLMessage::DataType::ENUM);
9635    arg_mode->add_intvalue((int)mode);
9636
9637    // call function
9638    nsecs_t start_time = systemTime();
9639    glContext->hooks->gl.glBlendEquationOES(mode);
9640    nsecs_t end_time = systemTime();
9641
9642    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9643    glContext->traceGLMessage(&glmsg);
9644}
9645
9646void GLTrace_glDrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height) {
9647    GLMessage glmsg;
9648    GLTraceContext *glContext = getGLTraceContext();
9649
9650    glmsg.set_function(GLMessage::glDrawTexsOES);
9651
9652    // copy argument x
9653    GLMessage_DataType *arg_x = glmsg.add_args();
9654    arg_x->set_isarray(false);
9655    arg_x->set_type(GLMessage::DataType::INT);
9656    arg_x->add_intvalue(x);
9657
9658    // copy argument y
9659    GLMessage_DataType *arg_y = glmsg.add_args();
9660    arg_y->set_isarray(false);
9661    arg_y->set_type(GLMessage::DataType::INT);
9662    arg_y->add_intvalue(y);
9663
9664    // copy argument z
9665    GLMessage_DataType *arg_z = glmsg.add_args();
9666    arg_z->set_isarray(false);
9667    arg_z->set_type(GLMessage::DataType::INT);
9668    arg_z->add_intvalue(z);
9669
9670    // copy argument width
9671    GLMessage_DataType *arg_width = glmsg.add_args();
9672    arg_width->set_isarray(false);
9673    arg_width->set_type(GLMessage::DataType::INT);
9674    arg_width->add_intvalue(width);
9675
9676    // copy argument height
9677    GLMessage_DataType *arg_height = glmsg.add_args();
9678    arg_height->set_isarray(false);
9679    arg_height->set_type(GLMessage::DataType::INT);
9680    arg_height->add_intvalue(height);
9681
9682    // call function
9683    nsecs_t start_time = systemTime();
9684    glContext->hooks->gl.glDrawTexsOES(x, y, z, width, height);
9685    nsecs_t end_time = systemTime();
9686
9687    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9688    glContext->traceGLMessage(&glmsg);
9689}
9690
9691void GLTrace_glDrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height) {
9692    GLMessage glmsg;
9693    GLTraceContext *glContext = getGLTraceContext();
9694
9695    glmsg.set_function(GLMessage::glDrawTexiOES);
9696
9697    // copy argument x
9698    GLMessage_DataType *arg_x = glmsg.add_args();
9699    arg_x->set_isarray(false);
9700    arg_x->set_type(GLMessage::DataType::INT);
9701    arg_x->add_intvalue(x);
9702
9703    // copy argument y
9704    GLMessage_DataType *arg_y = glmsg.add_args();
9705    arg_y->set_isarray(false);
9706    arg_y->set_type(GLMessage::DataType::INT);
9707    arg_y->add_intvalue(y);
9708
9709    // copy argument z
9710    GLMessage_DataType *arg_z = glmsg.add_args();
9711    arg_z->set_isarray(false);
9712    arg_z->set_type(GLMessage::DataType::INT);
9713    arg_z->add_intvalue(z);
9714
9715    // copy argument width
9716    GLMessage_DataType *arg_width = glmsg.add_args();
9717    arg_width->set_isarray(false);
9718    arg_width->set_type(GLMessage::DataType::INT);
9719    arg_width->add_intvalue(width);
9720
9721    // copy argument height
9722    GLMessage_DataType *arg_height = glmsg.add_args();
9723    arg_height->set_isarray(false);
9724    arg_height->set_type(GLMessage::DataType::INT);
9725    arg_height->add_intvalue(height);
9726
9727    // call function
9728    nsecs_t start_time = systemTime();
9729    glContext->hooks->gl.glDrawTexiOES(x, y, z, width, height);
9730    nsecs_t end_time = systemTime();
9731
9732    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9733    glContext->traceGLMessage(&glmsg);
9734}
9735
9736void GLTrace_glDrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height) {
9737    GLMessage glmsg;
9738    GLTraceContext *glContext = getGLTraceContext();
9739
9740    glmsg.set_function(GLMessage::glDrawTexxOES);
9741
9742    // copy argument x
9743    GLMessage_DataType *arg_x = glmsg.add_args();
9744    arg_x->set_isarray(false);
9745    arg_x->set_type(GLMessage::DataType::INT);
9746    arg_x->add_intvalue(x);
9747
9748    // copy argument y
9749    GLMessage_DataType *arg_y = glmsg.add_args();
9750    arg_y->set_isarray(false);
9751    arg_y->set_type(GLMessage::DataType::INT);
9752    arg_y->add_intvalue(y);
9753
9754    // copy argument z
9755    GLMessage_DataType *arg_z = glmsg.add_args();
9756    arg_z->set_isarray(false);
9757    arg_z->set_type(GLMessage::DataType::INT);
9758    arg_z->add_intvalue(z);
9759
9760    // copy argument width
9761    GLMessage_DataType *arg_width = glmsg.add_args();
9762    arg_width->set_isarray(false);
9763    arg_width->set_type(GLMessage::DataType::INT);
9764    arg_width->add_intvalue(width);
9765
9766    // copy argument height
9767    GLMessage_DataType *arg_height = glmsg.add_args();
9768    arg_height->set_isarray(false);
9769    arg_height->set_type(GLMessage::DataType::INT);
9770    arg_height->add_intvalue(height);
9771
9772    // call function
9773    nsecs_t start_time = systemTime();
9774    glContext->hooks->gl.glDrawTexxOES(x, y, z, width, height);
9775    nsecs_t end_time = systemTime();
9776
9777    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9778    glContext->traceGLMessage(&glmsg);
9779}
9780
9781void GLTrace_glDrawTexsvOES(const GLshort *coords) {
9782    GLMessage glmsg;
9783    GLTraceContext *glContext = getGLTraceContext();
9784
9785    glmsg.set_function(GLMessage::glDrawTexsvOES);
9786
9787    // copy argument coords
9788    GLMessage_DataType *arg_coords = glmsg.add_args();
9789    arg_coords->set_isarray(false);
9790    arg_coords->set_type(GLMessage::DataType::INT);
9791    arg_coords->add_intvalue((int)coords);
9792
9793    // call function
9794    nsecs_t start_time = systemTime();
9795    glContext->hooks->gl.glDrawTexsvOES(coords);
9796    nsecs_t end_time = systemTime();
9797
9798    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9799    glContext->traceGLMessage(&glmsg);
9800}
9801
9802void GLTrace_glDrawTexivOES(const GLint *coords) {
9803    GLMessage glmsg;
9804    GLTraceContext *glContext = getGLTraceContext();
9805
9806    glmsg.set_function(GLMessage::glDrawTexivOES);
9807
9808    // copy argument coords
9809    GLMessage_DataType *arg_coords = glmsg.add_args();
9810    arg_coords->set_isarray(false);
9811    arg_coords->set_type(GLMessage::DataType::INT);
9812    arg_coords->add_intvalue((int)coords);
9813
9814    // call function
9815    nsecs_t start_time = systemTime();
9816    glContext->hooks->gl.glDrawTexivOES(coords);
9817    nsecs_t end_time = systemTime();
9818
9819    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9820    glContext->traceGLMessage(&glmsg);
9821}
9822
9823void GLTrace_glDrawTexxvOES(const GLfixed *coords) {
9824    GLMessage glmsg;
9825    GLTraceContext *glContext = getGLTraceContext();
9826
9827    glmsg.set_function(GLMessage::glDrawTexxvOES);
9828
9829    // copy argument coords
9830    GLMessage_DataType *arg_coords = glmsg.add_args();
9831    arg_coords->set_isarray(false);
9832    arg_coords->set_type(GLMessage::DataType::INT);
9833    arg_coords->add_intvalue((int)coords);
9834
9835    // call function
9836    nsecs_t start_time = systemTime();
9837    glContext->hooks->gl.glDrawTexxvOES(coords);
9838    nsecs_t end_time = systemTime();
9839
9840    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9841    glContext->traceGLMessage(&glmsg);
9842}
9843
9844void GLTrace_glDrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height) {
9845    GLMessage glmsg;
9846    GLTraceContext *glContext = getGLTraceContext();
9847
9848    glmsg.set_function(GLMessage::glDrawTexfOES);
9849
9850    // copy argument x
9851    GLMessage_DataType *arg_x = glmsg.add_args();
9852    arg_x->set_isarray(false);
9853    arg_x->set_type(GLMessage::DataType::FLOAT);
9854    arg_x->add_floatvalue(x);
9855
9856    // copy argument y
9857    GLMessage_DataType *arg_y = glmsg.add_args();
9858    arg_y->set_isarray(false);
9859    arg_y->set_type(GLMessage::DataType::FLOAT);
9860    arg_y->add_floatvalue(y);
9861
9862    // copy argument z
9863    GLMessage_DataType *arg_z = glmsg.add_args();
9864    arg_z->set_isarray(false);
9865    arg_z->set_type(GLMessage::DataType::FLOAT);
9866    arg_z->add_floatvalue(z);
9867
9868    // copy argument width
9869    GLMessage_DataType *arg_width = glmsg.add_args();
9870    arg_width->set_isarray(false);
9871    arg_width->set_type(GLMessage::DataType::FLOAT);
9872    arg_width->add_floatvalue(width);
9873
9874    // copy argument height
9875    GLMessage_DataType *arg_height = glmsg.add_args();
9876    arg_height->set_isarray(false);
9877    arg_height->set_type(GLMessage::DataType::FLOAT);
9878    arg_height->add_floatvalue(height);
9879
9880    // call function
9881    nsecs_t start_time = systemTime();
9882    glContext->hooks->gl.glDrawTexfOES(x, y, z, width, height);
9883    nsecs_t end_time = systemTime();
9884
9885    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9886    glContext->traceGLMessage(&glmsg);
9887}
9888
9889void GLTrace_glDrawTexfvOES(const GLfloat *coords) {
9890    GLMessage glmsg;
9891    GLTraceContext *glContext = getGLTraceContext();
9892
9893    glmsg.set_function(GLMessage::glDrawTexfvOES);
9894
9895    // copy argument coords
9896    GLMessage_DataType *arg_coords = glmsg.add_args();
9897    arg_coords->set_isarray(false);
9898    arg_coords->set_type(GLMessage::DataType::INT);
9899    arg_coords->add_intvalue((int)coords);
9900
9901    // call function
9902    nsecs_t start_time = systemTime();
9903    glContext->hooks->gl.glDrawTexfvOES(coords);
9904    nsecs_t end_time = systemTime();
9905
9906    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9907    glContext->traceGLMessage(&glmsg);
9908}
9909
9910void GLTrace_glAlphaFuncxOES(GLenum func, GLclampx ref) {
9911    GLMessage glmsg;
9912    GLTraceContext *glContext = getGLTraceContext();
9913
9914    glmsg.set_function(GLMessage::glAlphaFuncxOES);
9915
9916    // copy argument func
9917    GLMessage_DataType *arg_func = glmsg.add_args();
9918    arg_func->set_isarray(false);
9919    arg_func->set_type(GLMessage::DataType::ENUM);
9920    arg_func->add_intvalue((int)func);
9921
9922    // copy argument ref
9923    GLMessage_DataType *arg_ref = glmsg.add_args();
9924    arg_ref->set_isarray(false);
9925    arg_ref->set_type(GLMessage::DataType::INT);
9926    arg_ref->add_intvalue(ref);
9927
9928    // call function
9929    nsecs_t start_time = systemTime();
9930    glContext->hooks->gl.glAlphaFuncxOES(func, ref);
9931    nsecs_t end_time = systemTime();
9932
9933    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9934    glContext->traceGLMessage(&glmsg);
9935}
9936
9937void GLTrace_glClearColorxOES(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha) {
9938    GLMessage glmsg;
9939    GLTraceContext *glContext = getGLTraceContext();
9940
9941    glmsg.set_function(GLMessage::glClearColorxOES);
9942
9943    // copy argument red
9944    GLMessage_DataType *arg_red = glmsg.add_args();
9945    arg_red->set_isarray(false);
9946    arg_red->set_type(GLMessage::DataType::INT);
9947    arg_red->add_intvalue(red);
9948
9949    // copy argument green
9950    GLMessage_DataType *arg_green = glmsg.add_args();
9951    arg_green->set_isarray(false);
9952    arg_green->set_type(GLMessage::DataType::INT);
9953    arg_green->add_intvalue(green);
9954
9955    // copy argument blue
9956    GLMessage_DataType *arg_blue = glmsg.add_args();
9957    arg_blue->set_isarray(false);
9958    arg_blue->set_type(GLMessage::DataType::INT);
9959    arg_blue->add_intvalue(blue);
9960
9961    // copy argument alpha
9962    GLMessage_DataType *arg_alpha = glmsg.add_args();
9963    arg_alpha->set_isarray(false);
9964    arg_alpha->set_type(GLMessage::DataType::INT);
9965    arg_alpha->add_intvalue(alpha);
9966
9967    // call function
9968    nsecs_t start_time = systemTime();
9969    glContext->hooks->gl.glClearColorxOES(red, green, blue, alpha);
9970    nsecs_t end_time = systemTime();
9971
9972    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9973    glContext->traceGLMessage(&glmsg);
9974}
9975
9976void GLTrace_glClearDepthxOES(GLclampx depth) {
9977    GLMessage glmsg;
9978    GLTraceContext *glContext = getGLTraceContext();
9979
9980    glmsg.set_function(GLMessage::glClearDepthxOES);
9981
9982    // copy argument depth
9983    GLMessage_DataType *arg_depth = glmsg.add_args();
9984    arg_depth->set_isarray(false);
9985    arg_depth->set_type(GLMessage::DataType::INT);
9986    arg_depth->add_intvalue(depth);
9987
9988    // call function
9989    nsecs_t start_time = systemTime();
9990    glContext->hooks->gl.glClearDepthxOES(depth);
9991    nsecs_t end_time = systemTime();
9992
9993    fixupGLMessage(glContext, start_time, end_time, &glmsg);
9994    glContext->traceGLMessage(&glmsg);
9995}
9996
9997void GLTrace_glClipPlanexOES(GLenum plane, const GLfixed *equation) {
9998    GLMessage glmsg;
9999    GLTraceContext *glContext = getGLTraceContext();
10000
10001    glmsg.set_function(GLMessage::glClipPlanexOES);
10002
10003    // copy argument plane
10004    GLMessage_DataType *arg_plane = glmsg.add_args();
10005    arg_plane->set_isarray(false);
10006    arg_plane->set_type(GLMessage::DataType::ENUM);
10007    arg_plane->add_intvalue((int)plane);
10008
10009    // copy argument equation
10010    GLMessage_DataType *arg_equation = glmsg.add_args();
10011    arg_equation->set_isarray(false);
10012    arg_equation->set_type(GLMessage::DataType::INT);
10013    arg_equation->add_intvalue((int)equation);
10014
10015    // call function
10016    nsecs_t start_time = systemTime();
10017    glContext->hooks->gl.glClipPlanexOES(plane, equation);
10018    nsecs_t end_time = systemTime();
10019
10020    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10021    glContext->traceGLMessage(&glmsg);
10022}
10023
10024void GLTrace_glColor4xOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {
10025    GLMessage glmsg;
10026    GLTraceContext *glContext = getGLTraceContext();
10027
10028    glmsg.set_function(GLMessage::glColor4xOES);
10029
10030    // copy argument red
10031    GLMessage_DataType *arg_red = glmsg.add_args();
10032    arg_red->set_isarray(false);
10033    arg_red->set_type(GLMessage::DataType::INT);
10034    arg_red->add_intvalue(red);
10035
10036    // copy argument green
10037    GLMessage_DataType *arg_green = glmsg.add_args();
10038    arg_green->set_isarray(false);
10039    arg_green->set_type(GLMessage::DataType::INT);
10040    arg_green->add_intvalue(green);
10041
10042    // copy argument blue
10043    GLMessage_DataType *arg_blue = glmsg.add_args();
10044    arg_blue->set_isarray(false);
10045    arg_blue->set_type(GLMessage::DataType::INT);
10046    arg_blue->add_intvalue(blue);
10047
10048    // copy argument alpha
10049    GLMessage_DataType *arg_alpha = glmsg.add_args();
10050    arg_alpha->set_isarray(false);
10051    arg_alpha->set_type(GLMessage::DataType::INT);
10052    arg_alpha->add_intvalue(alpha);
10053
10054    // call function
10055    nsecs_t start_time = systemTime();
10056    glContext->hooks->gl.glColor4xOES(red, green, blue, alpha);
10057    nsecs_t end_time = systemTime();
10058
10059    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10060    glContext->traceGLMessage(&glmsg);
10061}
10062
10063void GLTrace_glDepthRangexOES(GLclampx zNear, GLclampx zFar) {
10064    GLMessage glmsg;
10065    GLTraceContext *glContext = getGLTraceContext();
10066
10067    glmsg.set_function(GLMessage::glDepthRangexOES);
10068
10069    // copy argument zNear
10070    GLMessage_DataType *arg_zNear = glmsg.add_args();
10071    arg_zNear->set_isarray(false);
10072    arg_zNear->set_type(GLMessage::DataType::INT);
10073    arg_zNear->add_intvalue(zNear);
10074
10075    // copy argument zFar
10076    GLMessage_DataType *arg_zFar = glmsg.add_args();
10077    arg_zFar->set_isarray(false);
10078    arg_zFar->set_type(GLMessage::DataType::INT);
10079    arg_zFar->add_intvalue(zFar);
10080
10081    // call function
10082    nsecs_t start_time = systemTime();
10083    glContext->hooks->gl.glDepthRangexOES(zNear, zFar);
10084    nsecs_t end_time = systemTime();
10085
10086    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10087    glContext->traceGLMessage(&glmsg);
10088}
10089
10090void GLTrace_glFogxOES(GLenum pname, GLfixed param) {
10091    GLMessage glmsg;
10092    GLTraceContext *glContext = getGLTraceContext();
10093
10094    glmsg.set_function(GLMessage::glFogxOES);
10095
10096    // copy argument pname
10097    GLMessage_DataType *arg_pname = glmsg.add_args();
10098    arg_pname->set_isarray(false);
10099    arg_pname->set_type(GLMessage::DataType::ENUM);
10100    arg_pname->add_intvalue((int)pname);
10101
10102    // copy argument param
10103    GLMessage_DataType *arg_param = glmsg.add_args();
10104    arg_param->set_isarray(false);
10105    arg_param->set_type(GLMessage::DataType::INT);
10106    arg_param->add_intvalue(param);
10107
10108    // call function
10109    nsecs_t start_time = systemTime();
10110    glContext->hooks->gl.glFogxOES(pname, param);
10111    nsecs_t end_time = systemTime();
10112
10113    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10114    glContext->traceGLMessage(&glmsg);
10115}
10116
10117void GLTrace_glFogxvOES(GLenum pname, const GLfixed *params) {
10118    GLMessage glmsg;
10119    GLTraceContext *glContext = getGLTraceContext();
10120
10121    glmsg.set_function(GLMessage::glFogxvOES);
10122
10123    // copy argument pname
10124    GLMessage_DataType *arg_pname = glmsg.add_args();
10125    arg_pname->set_isarray(false);
10126    arg_pname->set_type(GLMessage::DataType::ENUM);
10127    arg_pname->add_intvalue((int)pname);
10128
10129    // copy argument params
10130    GLMessage_DataType *arg_params = glmsg.add_args();
10131    arg_params->set_isarray(false);
10132    arg_params->set_type(GLMessage::DataType::INT);
10133    arg_params->add_intvalue((int)params);
10134
10135    // call function
10136    nsecs_t start_time = systemTime();
10137    glContext->hooks->gl.glFogxvOES(pname, params);
10138    nsecs_t end_time = systemTime();
10139
10140    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10141    glContext->traceGLMessage(&glmsg);
10142}
10143
10144void GLTrace_glFrustumxOES(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
10145    GLMessage glmsg;
10146    GLTraceContext *glContext = getGLTraceContext();
10147
10148    glmsg.set_function(GLMessage::glFrustumxOES);
10149
10150    // copy argument left
10151    GLMessage_DataType *arg_left = glmsg.add_args();
10152    arg_left->set_isarray(false);
10153    arg_left->set_type(GLMessage::DataType::INT);
10154    arg_left->add_intvalue(left);
10155
10156    // copy argument right
10157    GLMessage_DataType *arg_right = glmsg.add_args();
10158    arg_right->set_isarray(false);
10159    arg_right->set_type(GLMessage::DataType::INT);
10160    arg_right->add_intvalue(right);
10161
10162    // copy argument bottom
10163    GLMessage_DataType *arg_bottom = glmsg.add_args();
10164    arg_bottom->set_isarray(false);
10165    arg_bottom->set_type(GLMessage::DataType::INT);
10166    arg_bottom->add_intvalue(bottom);
10167
10168    // copy argument top
10169    GLMessage_DataType *arg_top = glmsg.add_args();
10170    arg_top->set_isarray(false);
10171    arg_top->set_type(GLMessage::DataType::INT);
10172    arg_top->add_intvalue(top);
10173
10174    // copy argument zNear
10175    GLMessage_DataType *arg_zNear = glmsg.add_args();
10176    arg_zNear->set_isarray(false);
10177    arg_zNear->set_type(GLMessage::DataType::INT);
10178    arg_zNear->add_intvalue(zNear);
10179
10180    // copy argument zFar
10181    GLMessage_DataType *arg_zFar = glmsg.add_args();
10182    arg_zFar->set_isarray(false);
10183    arg_zFar->set_type(GLMessage::DataType::INT);
10184    arg_zFar->add_intvalue(zFar);
10185
10186    // call function
10187    nsecs_t start_time = systemTime();
10188    glContext->hooks->gl.glFrustumxOES(left, right, bottom, top, zNear, zFar);
10189    nsecs_t end_time = systemTime();
10190
10191    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10192    glContext->traceGLMessage(&glmsg);
10193}
10194
10195void GLTrace_glGetClipPlanexOES(GLenum pname, GLfixed eqn[4]) {
10196    GLMessage glmsg;
10197    GLTraceContext *glContext = getGLTraceContext();
10198
10199    glmsg.set_function(GLMessage::glGetClipPlanexOES);
10200
10201    // copy argument pname
10202    GLMessage_DataType *arg_pname = glmsg.add_args();
10203    arg_pname->set_isarray(false);
10204    arg_pname->set_type(GLMessage::DataType::ENUM);
10205    arg_pname->add_intvalue((int)pname);
10206
10207    // copy argument eqn
10208    GLMessage_DataType *arg_eqn = glmsg.add_args();
10209    arg_eqn->set_isarray(false);
10210    arg_eqn->set_type(GLMessage::DataType::INT);
10211    arg_eqn->add_intvalue((int)eqn);
10212
10213    // call function
10214    nsecs_t start_time = systemTime();
10215    glContext->hooks->gl.glGetClipPlanexOES(pname, eqn);
10216    nsecs_t end_time = systemTime();
10217
10218    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10219    glContext->traceGLMessage(&glmsg);
10220}
10221
10222void GLTrace_glGetFixedvOES(GLenum pname, GLfixed *params) {
10223    GLMessage glmsg;
10224    GLTraceContext *glContext = getGLTraceContext();
10225
10226    glmsg.set_function(GLMessage::glGetFixedvOES);
10227
10228    // copy argument pname
10229    GLMessage_DataType *arg_pname = glmsg.add_args();
10230    arg_pname->set_isarray(false);
10231    arg_pname->set_type(GLMessage::DataType::ENUM);
10232    arg_pname->add_intvalue((int)pname);
10233
10234    // copy argument params
10235    GLMessage_DataType *arg_params = glmsg.add_args();
10236    arg_params->set_isarray(false);
10237    arg_params->set_type(GLMessage::DataType::INT);
10238    arg_params->add_intvalue((int)params);
10239
10240    // call function
10241    nsecs_t start_time = systemTime();
10242    glContext->hooks->gl.glGetFixedvOES(pname, params);
10243    nsecs_t end_time = systemTime();
10244
10245    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10246    glContext->traceGLMessage(&glmsg);
10247}
10248
10249void GLTrace_glGetLightxvOES(GLenum light, GLenum pname, GLfixed *params) {
10250    GLMessage glmsg;
10251    GLTraceContext *glContext = getGLTraceContext();
10252
10253    glmsg.set_function(GLMessage::glGetLightxvOES);
10254
10255    // copy argument light
10256    GLMessage_DataType *arg_light = glmsg.add_args();
10257    arg_light->set_isarray(false);
10258    arg_light->set_type(GLMessage::DataType::ENUM);
10259    arg_light->add_intvalue((int)light);
10260
10261    // copy argument pname
10262    GLMessage_DataType *arg_pname = glmsg.add_args();
10263    arg_pname->set_isarray(false);
10264    arg_pname->set_type(GLMessage::DataType::ENUM);
10265    arg_pname->add_intvalue((int)pname);
10266
10267    // copy argument params
10268    GLMessage_DataType *arg_params = glmsg.add_args();
10269    arg_params->set_isarray(false);
10270    arg_params->set_type(GLMessage::DataType::INT);
10271    arg_params->add_intvalue((int)params);
10272
10273    // call function
10274    nsecs_t start_time = systemTime();
10275    glContext->hooks->gl.glGetLightxvOES(light, pname, params);
10276    nsecs_t end_time = systemTime();
10277
10278    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10279    glContext->traceGLMessage(&glmsg);
10280}
10281
10282void GLTrace_glGetMaterialxvOES(GLenum face, GLenum pname, GLfixed *params) {
10283    GLMessage glmsg;
10284    GLTraceContext *glContext = getGLTraceContext();
10285
10286    glmsg.set_function(GLMessage::glGetMaterialxvOES);
10287
10288    // copy argument face
10289    GLMessage_DataType *arg_face = glmsg.add_args();
10290    arg_face->set_isarray(false);
10291    arg_face->set_type(GLMessage::DataType::ENUM);
10292    arg_face->add_intvalue((int)face);
10293
10294    // copy argument pname
10295    GLMessage_DataType *arg_pname = glmsg.add_args();
10296    arg_pname->set_isarray(false);
10297    arg_pname->set_type(GLMessage::DataType::ENUM);
10298    arg_pname->add_intvalue((int)pname);
10299
10300    // copy argument params
10301    GLMessage_DataType *arg_params = glmsg.add_args();
10302    arg_params->set_isarray(false);
10303    arg_params->set_type(GLMessage::DataType::INT);
10304    arg_params->add_intvalue((int)params);
10305
10306    // call function
10307    nsecs_t start_time = systemTime();
10308    glContext->hooks->gl.glGetMaterialxvOES(face, pname, params);
10309    nsecs_t end_time = systemTime();
10310
10311    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10312    glContext->traceGLMessage(&glmsg);
10313}
10314
10315void GLTrace_glGetTexEnvxvOES(GLenum env, GLenum pname, GLfixed *params) {
10316    GLMessage glmsg;
10317    GLTraceContext *glContext = getGLTraceContext();
10318
10319    glmsg.set_function(GLMessage::glGetTexEnvxvOES);
10320
10321    // copy argument env
10322    GLMessage_DataType *arg_env = glmsg.add_args();
10323    arg_env->set_isarray(false);
10324    arg_env->set_type(GLMessage::DataType::ENUM);
10325    arg_env->add_intvalue((int)env);
10326
10327    // copy argument pname
10328    GLMessage_DataType *arg_pname = glmsg.add_args();
10329    arg_pname->set_isarray(false);
10330    arg_pname->set_type(GLMessage::DataType::ENUM);
10331    arg_pname->add_intvalue((int)pname);
10332
10333    // copy argument params
10334    GLMessage_DataType *arg_params = glmsg.add_args();
10335    arg_params->set_isarray(false);
10336    arg_params->set_type(GLMessage::DataType::INT);
10337    arg_params->add_intvalue((int)params);
10338
10339    // call function
10340    nsecs_t start_time = systemTime();
10341    glContext->hooks->gl.glGetTexEnvxvOES(env, pname, params);
10342    nsecs_t end_time = systemTime();
10343
10344    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10345    glContext->traceGLMessage(&glmsg);
10346}
10347
10348void GLTrace_glGetTexParameterxvOES(GLenum target, GLenum pname, GLfixed *params) {
10349    GLMessage glmsg;
10350    GLTraceContext *glContext = getGLTraceContext();
10351
10352    glmsg.set_function(GLMessage::glGetTexParameterxvOES);
10353
10354    // copy argument target
10355    GLMessage_DataType *arg_target = glmsg.add_args();
10356    arg_target->set_isarray(false);
10357    arg_target->set_type(GLMessage::DataType::ENUM);
10358    arg_target->add_intvalue((int)target);
10359
10360    // copy argument pname
10361    GLMessage_DataType *arg_pname = glmsg.add_args();
10362    arg_pname->set_isarray(false);
10363    arg_pname->set_type(GLMessage::DataType::ENUM);
10364    arg_pname->add_intvalue((int)pname);
10365
10366    // copy argument params
10367    GLMessage_DataType *arg_params = glmsg.add_args();
10368    arg_params->set_isarray(false);
10369    arg_params->set_type(GLMessage::DataType::INT);
10370    arg_params->add_intvalue((int)params);
10371
10372    // call function
10373    nsecs_t start_time = systemTime();
10374    glContext->hooks->gl.glGetTexParameterxvOES(target, pname, params);
10375    nsecs_t end_time = systemTime();
10376
10377    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10378    glContext->traceGLMessage(&glmsg);
10379}
10380
10381void GLTrace_glLightModelxOES(GLenum pname, GLfixed param) {
10382    GLMessage glmsg;
10383    GLTraceContext *glContext = getGLTraceContext();
10384
10385    glmsg.set_function(GLMessage::glLightModelxOES);
10386
10387    // copy argument pname
10388    GLMessage_DataType *arg_pname = glmsg.add_args();
10389    arg_pname->set_isarray(false);
10390    arg_pname->set_type(GLMessage::DataType::ENUM);
10391    arg_pname->add_intvalue((int)pname);
10392
10393    // copy argument param
10394    GLMessage_DataType *arg_param = glmsg.add_args();
10395    arg_param->set_isarray(false);
10396    arg_param->set_type(GLMessage::DataType::INT);
10397    arg_param->add_intvalue(param);
10398
10399    // call function
10400    nsecs_t start_time = systemTime();
10401    glContext->hooks->gl.glLightModelxOES(pname, param);
10402    nsecs_t end_time = systemTime();
10403
10404    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10405    glContext->traceGLMessage(&glmsg);
10406}
10407
10408void GLTrace_glLightModelxvOES(GLenum pname, const GLfixed *params) {
10409    GLMessage glmsg;
10410    GLTraceContext *glContext = getGLTraceContext();
10411
10412    glmsg.set_function(GLMessage::glLightModelxvOES);
10413
10414    // copy argument pname
10415    GLMessage_DataType *arg_pname = glmsg.add_args();
10416    arg_pname->set_isarray(false);
10417    arg_pname->set_type(GLMessage::DataType::ENUM);
10418    arg_pname->add_intvalue((int)pname);
10419
10420    // copy argument params
10421    GLMessage_DataType *arg_params = glmsg.add_args();
10422    arg_params->set_isarray(false);
10423    arg_params->set_type(GLMessage::DataType::INT);
10424    arg_params->add_intvalue((int)params);
10425
10426    // call function
10427    nsecs_t start_time = systemTime();
10428    glContext->hooks->gl.glLightModelxvOES(pname, params);
10429    nsecs_t end_time = systemTime();
10430
10431    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10432    glContext->traceGLMessage(&glmsg);
10433}
10434
10435void GLTrace_glLightxOES(GLenum light, GLenum pname, GLfixed param) {
10436    GLMessage glmsg;
10437    GLTraceContext *glContext = getGLTraceContext();
10438
10439    glmsg.set_function(GLMessage::glLightxOES);
10440
10441    // copy argument light
10442    GLMessage_DataType *arg_light = glmsg.add_args();
10443    arg_light->set_isarray(false);
10444    arg_light->set_type(GLMessage::DataType::ENUM);
10445    arg_light->add_intvalue((int)light);
10446
10447    // copy argument pname
10448    GLMessage_DataType *arg_pname = glmsg.add_args();
10449    arg_pname->set_isarray(false);
10450    arg_pname->set_type(GLMessage::DataType::ENUM);
10451    arg_pname->add_intvalue((int)pname);
10452
10453    // copy argument param
10454    GLMessage_DataType *arg_param = glmsg.add_args();
10455    arg_param->set_isarray(false);
10456    arg_param->set_type(GLMessage::DataType::INT);
10457    arg_param->add_intvalue(param);
10458
10459    // call function
10460    nsecs_t start_time = systemTime();
10461    glContext->hooks->gl.glLightxOES(light, pname, param);
10462    nsecs_t end_time = systemTime();
10463
10464    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10465    glContext->traceGLMessage(&glmsg);
10466}
10467
10468void GLTrace_glLightxvOES(GLenum light, GLenum pname, const GLfixed *params) {
10469    GLMessage glmsg;
10470    GLTraceContext *glContext = getGLTraceContext();
10471
10472    glmsg.set_function(GLMessage::glLightxvOES);
10473
10474    // copy argument light
10475    GLMessage_DataType *arg_light = glmsg.add_args();
10476    arg_light->set_isarray(false);
10477    arg_light->set_type(GLMessage::DataType::ENUM);
10478    arg_light->add_intvalue((int)light);
10479
10480    // copy argument pname
10481    GLMessage_DataType *arg_pname = glmsg.add_args();
10482    arg_pname->set_isarray(false);
10483    arg_pname->set_type(GLMessage::DataType::ENUM);
10484    arg_pname->add_intvalue((int)pname);
10485
10486    // copy argument params
10487    GLMessage_DataType *arg_params = glmsg.add_args();
10488    arg_params->set_isarray(false);
10489    arg_params->set_type(GLMessage::DataType::INT);
10490    arg_params->add_intvalue((int)params);
10491
10492    // call function
10493    nsecs_t start_time = systemTime();
10494    glContext->hooks->gl.glLightxvOES(light, pname, params);
10495    nsecs_t end_time = systemTime();
10496
10497    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10498    glContext->traceGLMessage(&glmsg);
10499}
10500
10501void GLTrace_glLineWidthxOES(GLfixed width) {
10502    GLMessage glmsg;
10503    GLTraceContext *glContext = getGLTraceContext();
10504
10505    glmsg.set_function(GLMessage::glLineWidthxOES);
10506
10507    // copy argument width
10508    GLMessage_DataType *arg_width = glmsg.add_args();
10509    arg_width->set_isarray(false);
10510    arg_width->set_type(GLMessage::DataType::INT);
10511    arg_width->add_intvalue(width);
10512
10513    // call function
10514    nsecs_t start_time = systemTime();
10515    glContext->hooks->gl.glLineWidthxOES(width);
10516    nsecs_t end_time = systemTime();
10517
10518    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10519    glContext->traceGLMessage(&glmsg);
10520}
10521
10522void GLTrace_glLoadMatrixxOES(const GLfixed *m) {
10523    GLMessage glmsg;
10524    GLTraceContext *glContext = getGLTraceContext();
10525
10526    glmsg.set_function(GLMessage::glLoadMatrixxOES);
10527
10528    // copy argument m
10529    GLMessage_DataType *arg_m = glmsg.add_args();
10530    arg_m->set_isarray(false);
10531    arg_m->set_type(GLMessage::DataType::INT);
10532    arg_m->add_intvalue((int)m);
10533
10534    // call function
10535    nsecs_t start_time = systemTime();
10536    glContext->hooks->gl.glLoadMatrixxOES(m);
10537    nsecs_t end_time = systemTime();
10538
10539    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10540    glContext->traceGLMessage(&glmsg);
10541}
10542
10543void GLTrace_glMaterialxOES(GLenum face, GLenum pname, GLfixed param) {
10544    GLMessage glmsg;
10545    GLTraceContext *glContext = getGLTraceContext();
10546
10547    glmsg.set_function(GLMessage::glMaterialxOES);
10548
10549    // copy argument face
10550    GLMessage_DataType *arg_face = glmsg.add_args();
10551    arg_face->set_isarray(false);
10552    arg_face->set_type(GLMessage::DataType::ENUM);
10553    arg_face->add_intvalue((int)face);
10554
10555    // copy argument pname
10556    GLMessage_DataType *arg_pname = glmsg.add_args();
10557    arg_pname->set_isarray(false);
10558    arg_pname->set_type(GLMessage::DataType::ENUM);
10559    arg_pname->add_intvalue((int)pname);
10560
10561    // copy argument param
10562    GLMessage_DataType *arg_param = glmsg.add_args();
10563    arg_param->set_isarray(false);
10564    arg_param->set_type(GLMessage::DataType::INT);
10565    arg_param->add_intvalue(param);
10566
10567    // call function
10568    nsecs_t start_time = systemTime();
10569    glContext->hooks->gl.glMaterialxOES(face, pname, param);
10570    nsecs_t end_time = systemTime();
10571
10572    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10573    glContext->traceGLMessage(&glmsg);
10574}
10575
10576void GLTrace_glMaterialxvOES(GLenum face, GLenum pname, const GLfixed *params) {
10577    GLMessage glmsg;
10578    GLTraceContext *glContext = getGLTraceContext();
10579
10580    glmsg.set_function(GLMessage::glMaterialxvOES);
10581
10582    // copy argument face
10583    GLMessage_DataType *arg_face = glmsg.add_args();
10584    arg_face->set_isarray(false);
10585    arg_face->set_type(GLMessage::DataType::ENUM);
10586    arg_face->add_intvalue((int)face);
10587
10588    // copy argument pname
10589    GLMessage_DataType *arg_pname = glmsg.add_args();
10590    arg_pname->set_isarray(false);
10591    arg_pname->set_type(GLMessage::DataType::ENUM);
10592    arg_pname->add_intvalue((int)pname);
10593
10594    // copy argument params
10595    GLMessage_DataType *arg_params = glmsg.add_args();
10596    arg_params->set_isarray(false);
10597    arg_params->set_type(GLMessage::DataType::INT);
10598    arg_params->add_intvalue((int)params);
10599
10600    // call function
10601    nsecs_t start_time = systemTime();
10602    glContext->hooks->gl.glMaterialxvOES(face, pname, params);
10603    nsecs_t end_time = systemTime();
10604
10605    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10606    glContext->traceGLMessage(&glmsg);
10607}
10608
10609void GLTrace_glMultMatrixxOES(const GLfixed *m) {
10610    GLMessage glmsg;
10611    GLTraceContext *glContext = getGLTraceContext();
10612
10613    glmsg.set_function(GLMessage::glMultMatrixxOES);
10614
10615    // copy argument m
10616    GLMessage_DataType *arg_m = glmsg.add_args();
10617    arg_m->set_isarray(false);
10618    arg_m->set_type(GLMessage::DataType::INT);
10619    arg_m->add_intvalue((int)m);
10620
10621    // call function
10622    nsecs_t start_time = systemTime();
10623    glContext->hooks->gl.glMultMatrixxOES(m);
10624    nsecs_t end_time = systemTime();
10625
10626    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10627    glContext->traceGLMessage(&glmsg);
10628}
10629
10630void GLTrace_glMultiTexCoord4xOES(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q) {
10631    GLMessage glmsg;
10632    GLTraceContext *glContext = getGLTraceContext();
10633
10634    glmsg.set_function(GLMessage::glMultiTexCoord4xOES);
10635
10636    // copy argument target
10637    GLMessage_DataType *arg_target = glmsg.add_args();
10638    arg_target->set_isarray(false);
10639    arg_target->set_type(GLMessage::DataType::ENUM);
10640    arg_target->add_intvalue((int)target);
10641
10642    // copy argument s
10643    GLMessage_DataType *arg_s = glmsg.add_args();
10644    arg_s->set_isarray(false);
10645    arg_s->set_type(GLMessage::DataType::INT);
10646    arg_s->add_intvalue(s);
10647
10648    // copy argument t
10649    GLMessage_DataType *arg_t = glmsg.add_args();
10650    arg_t->set_isarray(false);
10651    arg_t->set_type(GLMessage::DataType::INT);
10652    arg_t->add_intvalue(t);
10653
10654    // copy argument r
10655    GLMessage_DataType *arg_r = glmsg.add_args();
10656    arg_r->set_isarray(false);
10657    arg_r->set_type(GLMessage::DataType::INT);
10658    arg_r->add_intvalue(r);
10659
10660    // copy argument q
10661    GLMessage_DataType *arg_q = glmsg.add_args();
10662    arg_q->set_isarray(false);
10663    arg_q->set_type(GLMessage::DataType::INT);
10664    arg_q->add_intvalue(q);
10665
10666    // call function
10667    nsecs_t start_time = systemTime();
10668    glContext->hooks->gl.glMultiTexCoord4xOES(target, s, t, r, q);
10669    nsecs_t end_time = systemTime();
10670
10671    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10672    glContext->traceGLMessage(&glmsg);
10673}
10674
10675void GLTrace_glNormal3xOES(GLfixed nx, GLfixed ny, GLfixed nz) {
10676    GLMessage glmsg;
10677    GLTraceContext *glContext = getGLTraceContext();
10678
10679    glmsg.set_function(GLMessage::glNormal3xOES);
10680
10681    // copy argument nx
10682    GLMessage_DataType *arg_nx = glmsg.add_args();
10683    arg_nx->set_isarray(false);
10684    arg_nx->set_type(GLMessage::DataType::INT);
10685    arg_nx->add_intvalue(nx);
10686
10687    // copy argument ny
10688    GLMessage_DataType *arg_ny = glmsg.add_args();
10689    arg_ny->set_isarray(false);
10690    arg_ny->set_type(GLMessage::DataType::INT);
10691    arg_ny->add_intvalue(ny);
10692
10693    // copy argument nz
10694    GLMessage_DataType *arg_nz = glmsg.add_args();
10695    arg_nz->set_isarray(false);
10696    arg_nz->set_type(GLMessage::DataType::INT);
10697    arg_nz->add_intvalue(nz);
10698
10699    // call function
10700    nsecs_t start_time = systemTime();
10701    glContext->hooks->gl.glNormal3xOES(nx, ny, nz);
10702    nsecs_t end_time = systemTime();
10703
10704    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10705    glContext->traceGLMessage(&glmsg);
10706}
10707
10708void GLTrace_glOrthoxOES(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
10709    GLMessage glmsg;
10710    GLTraceContext *glContext = getGLTraceContext();
10711
10712    glmsg.set_function(GLMessage::glOrthoxOES);
10713
10714    // copy argument left
10715    GLMessage_DataType *arg_left = glmsg.add_args();
10716    arg_left->set_isarray(false);
10717    arg_left->set_type(GLMessage::DataType::INT);
10718    arg_left->add_intvalue(left);
10719
10720    // copy argument right
10721    GLMessage_DataType *arg_right = glmsg.add_args();
10722    arg_right->set_isarray(false);
10723    arg_right->set_type(GLMessage::DataType::INT);
10724    arg_right->add_intvalue(right);
10725
10726    // copy argument bottom
10727    GLMessage_DataType *arg_bottom = glmsg.add_args();
10728    arg_bottom->set_isarray(false);
10729    arg_bottom->set_type(GLMessage::DataType::INT);
10730    arg_bottom->add_intvalue(bottom);
10731
10732    // copy argument top
10733    GLMessage_DataType *arg_top = glmsg.add_args();
10734    arg_top->set_isarray(false);
10735    arg_top->set_type(GLMessage::DataType::INT);
10736    arg_top->add_intvalue(top);
10737
10738    // copy argument zNear
10739    GLMessage_DataType *arg_zNear = glmsg.add_args();
10740    arg_zNear->set_isarray(false);
10741    arg_zNear->set_type(GLMessage::DataType::INT);
10742    arg_zNear->add_intvalue(zNear);
10743
10744    // copy argument zFar
10745    GLMessage_DataType *arg_zFar = glmsg.add_args();
10746    arg_zFar->set_isarray(false);
10747    arg_zFar->set_type(GLMessage::DataType::INT);
10748    arg_zFar->add_intvalue(zFar);
10749
10750    // call function
10751    nsecs_t start_time = systemTime();
10752    glContext->hooks->gl.glOrthoxOES(left, right, bottom, top, zNear, zFar);
10753    nsecs_t end_time = systemTime();
10754
10755    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10756    glContext->traceGLMessage(&glmsg);
10757}
10758
10759void GLTrace_glPointParameterxOES(GLenum pname, GLfixed param) {
10760    GLMessage glmsg;
10761    GLTraceContext *glContext = getGLTraceContext();
10762
10763    glmsg.set_function(GLMessage::glPointParameterxOES);
10764
10765    // copy argument pname
10766    GLMessage_DataType *arg_pname = glmsg.add_args();
10767    arg_pname->set_isarray(false);
10768    arg_pname->set_type(GLMessage::DataType::ENUM);
10769    arg_pname->add_intvalue((int)pname);
10770
10771    // copy argument param
10772    GLMessage_DataType *arg_param = glmsg.add_args();
10773    arg_param->set_isarray(false);
10774    arg_param->set_type(GLMessage::DataType::INT);
10775    arg_param->add_intvalue(param);
10776
10777    // call function
10778    nsecs_t start_time = systemTime();
10779    glContext->hooks->gl.glPointParameterxOES(pname, param);
10780    nsecs_t end_time = systemTime();
10781
10782    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10783    glContext->traceGLMessage(&glmsg);
10784}
10785
10786void GLTrace_glPointParameterxvOES(GLenum pname, const GLfixed *params) {
10787    GLMessage glmsg;
10788    GLTraceContext *glContext = getGLTraceContext();
10789
10790    glmsg.set_function(GLMessage::glPointParameterxvOES);
10791
10792    // copy argument pname
10793    GLMessage_DataType *arg_pname = glmsg.add_args();
10794    arg_pname->set_isarray(false);
10795    arg_pname->set_type(GLMessage::DataType::ENUM);
10796    arg_pname->add_intvalue((int)pname);
10797
10798    // copy argument params
10799    GLMessage_DataType *arg_params = glmsg.add_args();
10800    arg_params->set_isarray(false);
10801    arg_params->set_type(GLMessage::DataType::INT);
10802    arg_params->add_intvalue((int)params);
10803
10804    // call function
10805    nsecs_t start_time = systemTime();
10806    glContext->hooks->gl.glPointParameterxvOES(pname, params);
10807    nsecs_t end_time = systemTime();
10808
10809    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10810    glContext->traceGLMessage(&glmsg);
10811}
10812
10813void GLTrace_glPointSizexOES(GLfixed size) {
10814    GLMessage glmsg;
10815    GLTraceContext *glContext = getGLTraceContext();
10816
10817    glmsg.set_function(GLMessage::glPointSizexOES);
10818
10819    // copy argument size
10820    GLMessage_DataType *arg_size = glmsg.add_args();
10821    arg_size->set_isarray(false);
10822    arg_size->set_type(GLMessage::DataType::INT);
10823    arg_size->add_intvalue(size);
10824
10825    // call function
10826    nsecs_t start_time = systemTime();
10827    glContext->hooks->gl.glPointSizexOES(size);
10828    nsecs_t end_time = systemTime();
10829
10830    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10831    glContext->traceGLMessage(&glmsg);
10832}
10833
10834void GLTrace_glPolygonOffsetxOES(GLfixed factor, GLfixed units) {
10835    GLMessage glmsg;
10836    GLTraceContext *glContext = getGLTraceContext();
10837
10838    glmsg.set_function(GLMessage::glPolygonOffsetxOES);
10839
10840    // copy argument factor
10841    GLMessage_DataType *arg_factor = glmsg.add_args();
10842    arg_factor->set_isarray(false);
10843    arg_factor->set_type(GLMessage::DataType::INT);
10844    arg_factor->add_intvalue(factor);
10845
10846    // copy argument units
10847    GLMessage_DataType *arg_units = glmsg.add_args();
10848    arg_units->set_isarray(false);
10849    arg_units->set_type(GLMessage::DataType::INT);
10850    arg_units->add_intvalue(units);
10851
10852    // call function
10853    nsecs_t start_time = systemTime();
10854    glContext->hooks->gl.glPolygonOffsetxOES(factor, units);
10855    nsecs_t end_time = systemTime();
10856
10857    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10858    glContext->traceGLMessage(&glmsg);
10859}
10860
10861void GLTrace_glRotatexOES(GLfixed angle, GLfixed x, GLfixed y, GLfixed z) {
10862    GLMessage glmsg;
10863    GLTraceContext *glContext = getGLTraceContext();
10864
10865    glmsg.set_function(GLMessage::glRotatexOES);
10866
10867    // copy argument angle
10868    GLMessage_DataType *arg_angle = glmsg.add_args();
10869    arg_angle->set_isarray(false);
10870    arg_angle->set_type(GLMessage::DataType::INT);
10871    arg_angle->add_intvalue(angle);
10872
10873    // copy argument x
10874    GLMessage_DataType *arg_x = glmsg.add_args();
10875    arg_x->set_isarray(false);
10876    arg_x->set_type(GLMessage::DataType::INT);
10877    arg_x->add_intvalue(x);
10878
10879    // copy argument y
10880    GLMessage_DataType *arg_y = glmsg.add_args();
10881    arg_y->set_isarray(false);
10882    arg_y->set_type(GLMessage::DataType::INT);
10883    arg_y->add_intvalue(y);
10884
10885    // copy argument z
10886    GLMessage_DataType *arg_z = glmsg.add_args();
10887    arg_z->set_isarray(false);
10888    arg_z->set_type(GLMessage::DataType::INT);
10889    arg_z->add_intvalue(z);
10890
10891    // call function
10892    nsecs_t start_time = systemTime();
10893    glContext->hooks->gl.glRotatexOES(angle, x, y, z);
10894    nsecs_t end_time = systemTime();
10895
10896    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10897    glContext->traceGLMessage(&glmsg);
10898}
10899
10900void GLTrace_glSampleCoveragexOES(GLclampx value, GLboolean invert) {
10901    GLMessage glmsg;
10902    GLTraceContext *glContext = getGLTraceContext();
10903
10904    glmsg.set_function(GLMessage::glSampleCoveragexOES);
10905
10906    // copy argument value
10907    GLMessage_DataType *arg_value = glmsg.add_args();
10908    arg_value->set_isarray(false);
10909    arg_value->set_type(GLMessage::DataType::INT);
10910    arg_value->add_intvalue(value);
10911
10912    // copy argument invert
10913    GLMessage_DataType *arg_invert = glmsg.add_args();
10914    arg_invert->set_isarray(false);
10915    arg_invert->set_type(GLMessage::DataType::BOOL);
10916    arg_invert->add_boolvalue(invert);
10917
10918    // call function
10919    nsecs_t start_time = systemTime();
10920    glContext->hooks->gl.glSampleCoveragexOES(value, invert);
10921    nsecs_t end_time = systemTime();
10922
10923    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10924    glContext->traceGLMessage(&glmsg);
10925}
10926
10927void GLTrace_glScalexOES(GLfixed x, GLfixed y, GLfixed z) {
10928    GLMessage glmsg;
10929    GLTraceContext *glContext = getGLTraceContext();
10930
10931    glmsg.set_function(GLMessage::glScalexOES);
10932
10933    // copy argument x
10934    GLMessage_DataType *arg_x = glmsg.add_args();
10935    arg_x->set_isarray(false);
10936    arg_x->set_type(GLMessage::DataType::INT);
10937    arg_x->add_intvalue(x);
10938
10939    // copy argument y
10940    GLMessage_DataType *arg_y = glmsg.add_args();
10941    arg_y->set_isarray(false);
10942    arg_y->set_type(GLMessage::DataType::INT);
10943    arg_y->add_intvalue(y);
10944
10945    // copy argument z
10946    GLMessage_DataType *arg_z = glmsg.add_args();
10947    arg_z->set_isarray(false);
10948    arg_z->set_type(GLMessage::DataType::INT);
10949    arg_z->add_intvalue(z);
10950
10951    // call function
10952    nsecs_t start_time = systemTime();
10953    glContext->hooks->gl.glScalexOES(x, y, z);
10954    nsecs_t end_time = systemTime();
10955
10956    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10957    glContext->traceGLMessage(&glmsg);
10958}
10959
10960void GLTrace_glTexEnvxOES(GLenum target, GLenum pname, GLfixed param) {
10961    GLMessage glmsg;
10962    GLTraceContext *glContext = getGLTraceContext();
10963
10964    glmsg.set_function(GLMessage::glTexEnvxOES);
10965
10966    // copy argument target
10967    GLMessage_DataType *arg_target = glmsg.add_args();
10968    arg_target->set_isarray(false);
10969    arg_target->set_type(GLMessage::DataType::ENUM);
10970    arg_target->add_intvalue((int)target);
10971
10972    // copy argument pname
10973    GLMessage_DataType *arg_pname = glmsg.add_args();
10974    arg_pname->set_isarray(false);
10975    arg_pname->set_type(GLMessage::DataType::ENUM);
10976    arg_pname->add_intvalue((int)pname);
10977
10978    // copy argument param
10979    GLMessage_DataType *arg_param = glmsg.add_args();
10980    arg_param->set_isarray(false);
10981    arg_param->set_type(GLMessage::DataType::INT);
10982    arg_param->add_intvalue(param);
10983
10984    // call function
10985    nsecs_t start_time = systemTime();
10986    glContext->hooks->gl.glTexEnvxOES(target, pname, param);
10987    nsecs_t end_time = systemTime();
10988
10989    fixupGLMessage(glContext, start_time, end_time, &glmsg);
10990    glContext->traceGLMessage(&glmsg);
10991}
10992
10993void GLTrace_glTexEnvxvOES(GLenum target, GLenum pname, const GLfixed *params) {
10994    GLMessage glmsg;
10995    GLTraceContext *glContext = getGLTraceContext();
10996
10997    glmsg.set_function(GLMessage::glTexEnvxvOES);
10998
10999    // copy argument target
11000    GLMessage_DataType *arg_target = glmsg.add_args();
11001    arg_target->set_isarray(false);
11002    arg_target->set_type(GLMessage::DataType::ENUM);
11003    arg_target->add_intvalue((int)target);
11004
11005    // copy argument pname
11006    GLMessage_DataType *arg_pname = glmsg.add_args();
11007    arg_pname->set_isarray(false);
11008    arg_pname->set_type(GLMessage::DataType::ENUM);
11009    arg_pname->add_intvalue((int)pname);
11010
11011    // copy argument params
11012    GLMessage_DataType *arg_params = glmsg.add_args();
11013    arg_params->set_isarray(false);
11014    arg_params->set_type(GLMessage::DataType::INT);
11015    arg_params->add_intvalue((int)params);
11016
11017    // call function
11018    nsecs_t start_time = systemTime();
11019    glContext->hooks->gl.glTexEnvxvOES(target, pname, params);
11020    nsecs_t end_time = systemTime();
11021
11022    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11023    glContext->traceGLMessage(&glmsg);
11024}
11025
11026void GLTrace_glTexParameterxOES(GLenum target, GLenum pname, GLfixed param) {
11027    GLMessage glmsg;
11028    GLTraceContext *glContext = getGLTraceContext();
11029
11030    glmsg.set_function(GLMessage::glTexParameterxOES);
11031
11032    // copy argument target
11033    GLMessage_DataType *arg_target = glmsg.add_args();
11034    arg_target->set_isarray(false);
11035    arg_target->set_type(GLMessage::DataType::ENUM);
11036    arg_target->add_intvalue((int)target);
11037
11038    // copy argument pname
11039    GLMessage_DataType *arg_pname = glmsg.add_args();
11040    arg_pname->set_isarray(false);
11041    arg_pname->set_type(GLMessage::DataType::ENUM);
11042    arg_pname->add_intvalue((int)pname);
11043
11044    // copy argument param
11045    GLMessage_DataType *arg_param = glmsg.add_args();
11046    arg_param->set_isarray(false);
11047    arg_param->set_type(GLMessage::DataType::INT);
11048    arg_param->add_intvalue(param);
11049
11050    // call function
11051    nsecs_t start_time = systemTime();
11052    glContext->hooks->gl.glTexParameterxOES(target, pname, param);
11053    nsecs_t end_time = systemTime();
11054
11055    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11056    glContext->traceGLMessage(&glmsg);
11057}
11058
11059void GLTrace_glTexParameterxvOES(GLenum target, GLenum pname, const GLfixed *params) {
11060    GLMessage glmsg;
11061    GLTraceContext *glContext = getGLTraceContext();
11062
11063    glmsg.set_function(GLMessage::glTexParameterxvOES);
11064
11065    // copy argument target
11066    GLMessage_DataType *arg_target = glmsg.add_args();
11067    arg_target->set_isarray(false);
11068    arg_target->set_type(GLMessage::DataType::ENUM);
11069    arg_target->add_intvalue((int)target);
11070
11071    // copy argument pname
11072    GLMessage_DataType *arg_pname = glmsg.add_args();
11073    arg_pname->set_isarray(false);
11074    arg_pname->set_type(GLMessage::DataType::ENUM);
11075    arg_pname->add_intvalue((int)pname);
11076
11077    // copy argument params
11078    GLMessage_DataType *arg_params = glmsg.add_args();
11079    arg_params->set_isarray(false);
11080    arg_params->set_type(GLMessage::DataType::INT);
11081    arg_params->add_intvalue((int)params);
11082
11083    // call function
11084    nsecs_t start_time = systemTime();
11085    glContext->hooks->gl.glTexParameterxvOES(target, pname, params);
11086    nsecs_t end_time = systemTime();
11087
11088    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11089    glContext->traceGLMessage(&glmsg);
11090}
11091
11092void GLTrace_glTranslatexOES(GLfixed x, GLfixed y, GLfixed z) {
11093    GLMessage glmsg;
11094    GLTraceContext *glContext = getGLTraceContext();
11095
11096    glmsg.set_function(GLMessage::glTranslatexOES);
11097
11098    // copy argument x
11099    GLMessage_DataType *arg_x = glmsg.add_args();
11100    arg_x->set_isarray(false);
11101    arg_x->set_type(GLMessage::DataType::INT);
11102    arg_x->add_intvalue(x);
11103
11104    // copy argument y
11105    GLMessage_DataType *arg_y = glmsg.add_args();
11106    arg_y->set_isarray(false);
11107    arg_y->set_type(GLMessage::DataType::INT);
11108    arg_y->add_intvalue(y);
11109
11110    // copy argument z
11111    GLMessage_DataType *arg_z = glmsg.add_args();
11112    arg_z->set_isarray(false);
11113    arg_z->set_type(GLMessage::DataType::INT);
11114    arg_z->add_intvalue(z);
11115
11116    // call function
11117    nsecs_t start_time = systemTime();
11118    glContext->hooks->gl.glTranslatexOES(x, y, z);
11119    nsecs_t end_time = systemTime();
11120
11121    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11122    glContext->traceGLMessage(&glmsg);
11123}
11124
11125GLboolean GLTrace_glIsRenderbufferOES(GLuint renderbuffer) {
11126    GLMessage glmsg;
11127    GLTraceContext *glContext = getGLTraceContext();
11128
11129    glmsg.set_function(GLMessage::glIsRenderbufferOES);
11130
11131    // copy argument renderbuffer
11132    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
11133    arg_renderbuffer->set_isarray(false);
11134    arg_renderbuffer->set_type(GLMessage::DataType::INT);
11135    arg_renderbuffer->add_intvalue(renderbuffer);
11136
11137    // call function
11138    nsecs_t start_time = systemTime();
11139    GLboolean retValue = glContext->hooks->gl.glIsRenderbufferOES(renderbuffer);
11140    nsecs_t end_time = systemTime();
11141
11142    // set return value
11143    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
11144    rt->set_isarray(false);
11145    rt->set_type(GLMessage::DataType::BOOL);
11146    rt->add_boolvalue(retValue);
11147
11148    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11149    glContext->traceGLMessage(&glmsg);
11150
11151    return retValue;
11152}
11153
11154void GLTrace_glBindRenderbufferOES(GLenum target, GLuint renderbuffer) {
11155    GLMessage glmsg;
11156    GLTraceContext *glContext = getGLTraceContext();
11157
11158    glmsg.set_function(GLMessage::glBindRenderbufferOES);
11159
11160    // copy argument target
11161    GLMessage_DataType *arg_target = glmsg.add_args();
11162    arg_target->set_isarray(false);
11163    arg_target->set_type(GLMessage::DataType::ENUM);
11164    arg_target->add_intvalue((int)target);
11165
11166    // copy argument renderbuffer
11167    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
11168    arg_renderbuffer->set_isarray(false);
11169    arg_renderbuffer->set_type(GLMessage::DataType::INT);
11170    arg_renderbuffer->add_intvalue(renderbuffer);
11171
11172    // call function
11173    nsecs_t start_time = systemTime();
11174    glContext->hooks->gl.glBindRenderbufferOES(target, renderbuffer);
11175    nsecs_t end_time = systemTime();
11176
11177    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11178    glContext->traceGLMessage(&glmsg);
11179}
11180
11181void GLTrace_glDeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers) {
11182    GLMessage glmsg;
11183    GLTraceContext *glContext = getGLTraceContext();
11184
11185    glmsg.set_function(GLMessage::glDeleteRenderbuffersOES);
11186
11187    // copy argument n
11188    GLMessage_DataType *arg_n = glmsg.add_args();
11189    arg_n->set_isarray(false);
11190    arg_n->set_type(GLMessage::DataType::INT);
11191    arg_n->add_intvalue(n);
11192
11193    // copy argument renderbuffers
11194    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
11195    arg_renderbuffers->set_isarray(false);
11196    arg_renderbuffers->set_type(GLMessage::DataType::INT);
11197    arg_renderbuffers->add_intvalue((int)renderbuffers);
11198
11199    // call function
11200    nsecs_t start_time = systemTime();
11201    glContext->hooks->gl.glDeleteRenderbuffersOES(n, renderbuffers);
11202    nsecs_t end_time = systemTime();
11203
11204    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11205    glContext->traceGLMessage(&glmsg);
11206}
11207
11208void GLTrace_glGenRenderbuffersOES(GLsizei n, GLuint* renderbuffers) {
11209    GLMessage glmsg;
11210    GLTraceContext *glContext = getGLTraceContext();
11211
11212    glmsg.set_function(GLMessage::glGenRenderbuffersOES);
11213
11214    // copy argument n
11215    GLMessage_DataType *arg_n = glmsg.add_args();
11216    arg_n->set_isarray(false);
11217    arg_n->set_type(GLMessage::DataType::INT);
11218    arg_n->add_intvalue(n);
11219
11220    // copy argument renderbuffers
11221    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
11222    arg_renderbuffers->set_isarray(false);
11223    arg_renderbuffers->set_type(GLMessage::DataType::INT);
11224    arg_renderbuffers->add_intvalue((int)renderbuffers);
11225
11226    // call function
11227    nsecs_t start_time = systemTime();
11228    glContext->hooks->gl.glGenRenderbuffersOES(n, renderbuffers);
11229    nsecs_t end_time = systemTime();
11230
11231    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11232    glContext->traceGLMessage(&glmsg);
11233}
11234
11235void GLTrace_glRenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) {
11236    GLMessage glmsg;
11237    GLTraceContext *glContext = getGLTraceContext();
11238
11239    glmsg.set_function(GLMessage::glRenderbufferStorageOES);
11240
11241    // copy argument target
11242    GLMessage_DataType *arg_target = glmsg.add_args();
11243    arg_target->set_isarray(false);
11244    arg_target->set_type(GLMessage::DataType::ENUM);
11245    arg_target->add_intvalue((int)target);
11246
11247    // copy argument internalformat
11248    GLMessage_DataType *arg_internalformat = glmsg.add_args();
11249    arg_internalformat->set_isarray(false);
11250    arg_internalformat->set_type(GLMessage::DataType::ENUM);
11251    arg_internalformat->add_intvalue((int)internalformat);
11252
11253    // copy argument width
11254    GLMessage_DataType *arg_width = glmsg.add_args();
11255    arg_width->set_isarray(false);
11256    arg_width->set_type(GLMessage::DataType::INT);
11257    arg_width->add_intvalue(width);
11258
11259    // copy argument height
11260    GLMessage_DataType *arg_height = glmsg.add_args();
11261    arg_height->set_isarray(false);
11262    arg_height->set_type(GLMessage::DataType::INT);
11263    arg_height->add_intvalue(height);
11264
11265    // call function
11266    nsecs_t start_time = systemTime();
11267    glContext->hooks->gl.glRenderbufferStorageOES(target, internalformat, width, height);
11268    nsecs_t end_time = systemTime();
11269
11270    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11271    glContext->traceGLMessage(&glmsg);
11272}
11273
11274void GLTrace_glGetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params) {
11275    GLMessage glmsg;
11276    GLTraceContext *glContext = getGLTraceContext();
11277
11278    glmsg.set_function(GLMessage::glGetRenderbufferParameterivOES);
11279
11280    // copy argument target
11281    GLMessage_DataType *arg_target = glmsg.add_args();
11282    arg_target->set_isarray(false);
11283    arg_target->set_type(GLMessage::DataType::ENUM);
11284    arg_target->add_intvalue((int)target);
11285
11286    // copy argument pname
11287    GLMessage_DataType *arg_pname = glmsg.add_args();
11288    arg_pname->set_isarray(false);
11289    arg_pname->set_type(GLMessage::DataType::ENUM);
11290    arg_pname->add_intvalue((int)pname);
11291
11292    // copy argument params
11293    GLMessage_DataType *arg_params = glmsg.add_args();
11294    arg_params->set_isarray(false);
11295    arg_params->set_type(GLMessage::DataType::INT);
11296    arg_params->add_intvalue((int)params);
11297
11298    // call function
11299    nsecs_t start_time = systemTime();
11300    glContext->hooks->gl.glGetRenderbufferParameterivOES(target, pname, params);
11301    nsecs_t end_time = systemTime();
11302
11303    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11304    glContext->traceGLMessage(&glmsg);
11305}
11306
11307GLboolean GLTrace_glIsFramebufferOES(GLuint framebuffer) {
11308    GLMessage glmsg;
11309    GLTraceContext *glContext = getGLTraceContext();
11310
11311    glmsg.set_function(GLMessage::glIsFramebufferOES);
11312
11313    // copy argument framebuffer
11314    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
11315    arg_framebuffer->set_isarray(false);
11316    arg_framebuffer->set_type(GLMessage::DataType::INT);
11317    arg_framebuffer->add_intvalue(framebuffer);
11318
11319    // call function
11320    nsecs_t start_time = systemTime();
11321    GLboolean retValue = glContext->hooks->gl.glIsFramebufferOES(framebuffer);
11322    nsecs_t end_time = systemTime();
11323
11324    // set return value
11325    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
11326    rt->set_isarray(false);
11327    rt->set_type(GLMessage::DataType::BOOL);
11328    rt->add_boolvalue(retValue);
11329
11330    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11331    glContext->traceGLMessage(&glmsg);
11332
11333    return retValue;
11334}
11335
11336void GLTrace_glBindFramebufferOES(GLenum target, GLuint framebuffer) {
11337    GLMessage glmsg;
11338    GLTraceContext *glContext = getGLTraceContext();
11339
11340    glmsg.set_function(GLMessage::glBindFramebufferOES);
11341
11342    // copy argument target
11343    GLMessage_DataType *arg_target = glmsg.add_args();
11344    arg_target->set_isarray(false);
11345    arg_target->set_type(GLMessage::DataType::ENUM);
11346    arg_target->add_intvalue((int)target);
11347
11348    // copy argument framebuffer
11349    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
11350    arg_framebuffer->set_isarray(false);
11351    arg_framebuffer->set_type(GLMessage::DataType::INT);
11352    arg_framebuffer->add_intvalue(framebuffer);
11353
11354    // call function
11355    nsecs_t start_time = systemTime();
11356    glContext->hooks->gl.glBindFramebufferOES(target, framebuffer);
11357    nsecs_t end_time = systemTime();
11358
11359    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11360    glContext->traceGLMessage(&glmsg);
11361}
11362
11363void GLTrace_glDeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers) {
11364    GLMessage glmsg;
11365    GLTraceContext *glContext = getGLTraceContext();
11366
11367    glmsg.set_function(GLMessage::glDeleteFramebuffersOES);
11368
11369    // copy argument n
11370    GLMessage_DataType *arg_n = glmsg.add_args();
11371    arg_n->set_isarray(false);
11372    arg_n->set_type(GLMessage::DataType::INT);
11373    arg_n->add_intvalue(n);
11374
11375    // copy argument framebuffers
11376    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
11377    arg_framebuffers->set_isarray(false);
11378    arg_framebuffers->set_type(GLMessage::DataType::INT);
11379    arg_framebuffers->add_intvalue((int)framebuffers);
11380
11381    // call function
11382    nsecs_t start_time = systemTime();
11383    glContext->hooks->gl.glDeleteFramebuffersOES(n, framebuffers);
11384    nsecs_t end_time = systemTime();
11385
11386    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11387    glContext->traceGLMessage(&glmsg);
11388}
11389
11390void GLTrace_glGenFramebuffersOES(GLsizei n, GLuint* framebuffers) {
11391    GLMessage glmsg;
11392    GLTraceContext *glContext = getGLTraceContext();
11393
11394    glmsg.set_function(GLMessage::glGenFramebuffersOES);
11395
11396    // copy argument n
11397    GLMessage_DataType *arg_n = glmsg.add_args();
11398    arg_n->set_isarray(false);
11399    arg_n->set_type(GLMessage::DataType::INT);
11400    arg_n->add_intvalue(n);
11401
11402    // copy argument framebuffers
11403    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
11404    arg_framebuffers->set_isarray(false);
11405    arg_framebuffers->set_type(GLMessage::DataType::INT);
11406    arg_framebuffers->add_intvalue((int)framebuffers);
11407
11408    // call function
11409    nsecs_t start_time = systemTime();
11410    glContext->hooks->gl.glGenFramebuffersOES(n, framebuffers);
11411    nsecs_t end_time = systemTime();
11412
11413    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11414    glContext->traceGLMessage(&glmsg);
11415}
11416
11417GLenum GLTrace_glCheckFramebufferStatusOES(GLenum target) {
11418    GLMessage glmsg;
11419    GLTraceContext *glContext = getGLTraceContext();
11420
11421    glmsg.set_function(GLMessage::glCheckFramebufferStatusOES);
11422
11423    // copy argument target
11424    GLMessage_DataType *arg_target = glmsg.add_args();
11425    arg_target->set_isarray(false);
11426    arg_target->set_type(GLMessage::DataType::ENUM);
11427    arg_target->add_intvalue((int)target);
11428
11429    // call function
11430    nsecs_t start_time = systemTime();
11431    GLenum retValue = glContext->hooks->gl.glCheckFramebufferStatusOES(target);
11432    nsecs_t end_time = systemTime();
11433
11434    // set return value
11435    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
11436    rt->set_isarray(false);
11437    rt->set_type(GLMessage::DataType::ENUM);
11438    rt->add_intvalue((int)retValue);
11439
11440    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11441    glContext->traceGLMessage(&glmsg);
11442
11443    return retValue;
11444}
11445
11446void GLTrace_glFramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) {
11447    GLMessage glmsg;
11448    GLTraceContext *glContext = getGLTraceContext();
11449
11450    glmsg.set_function(GLMessage::glFramebufferRenderbufferOES);
11451
11452    // copy argument target
11453    GLMessage_DataType *arg_target = glmsg.add_args();
11454    arg_target->set_isarray(false);
11455    arg_target->set_type(GLMessage::DataType::ENUM);
11456    arg_target->add_intvalue((int)target);
11457
11458    // copy argument attachment
11459    GLMessage_DataType *arg_attachment = glmsg.add_args();
11460    arg_attachment->set_isarray(false);
11461    arg_attachment->set_type(GLMessage::DataType::ENUM);
11462    arg_attachment->add_intvalue((int)attachment);
11463
11464    // copy argument renderbuffertarget
11465    GLMessage_DataType *arg_renderbuffertarget = glmsg.add_args();
11466    arg_renderbuffertarget->set_isarray(false);
11467    arg_renderbuffertarget->set_type(GLMessage::DataType::ENUM);
11468    arg_renderbuffertarget->add_intvalue((int)renderbuffertarget);
11469
11470    // copy argument renderbuffer
11471    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
11472    arg_renderbuffer->set_isarray(false);
11473    arg_renderbuffer->set_type(GLMessage::DataType::INT);
11474    arg_renderbuffer->add_intvalue(renderbuffer);
11475
11476    // call function
11477    nsecs_t start_time = systemTime();
11478    glContext->hooks->gl.glFramebufferRenderbufferOES(target, attachment, renderbuffertarget, renderbuffer);
11479    nsecs_t end_time = systemTime();
11480
11481    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11482    glContext->traceGLMessage(&glmsg);
11483}
11484
11485void GLTrace_glFramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) {
11486    GLMessage glmsg;
11487    GLTraceContext *glContext = getGLTraceContext();
11488
11489    glmsg.set_function(GLMessage::glFramebufferTexture2DOES);
11490
11491    // copy argument target
11492    GLMessage_DataType *arg_target = glmsg.add_args();
11493    arg_target->set_isarray(false);
11494    arg_target->set_type(GLMessage::DataType::ENUM);
11495    arg_target->add_intvalue((int)target);
11496
11497    // copy argument attachment
11498    GLMessage_DataType *arg_attachment = glmsg.add_args();
11499    arg_attachment->set_isarray(false);
11500    arg_attachment->set_type(GLMessage::DataType::ENUM);
11501    arg_attachment->add_intvalue((int)attachment);
11502
11503    // copy argument textarget
11504    GLMessage_DataType *arg_textarget = glmsg.add_args();
11505    arg_textarget->set_isarray(false);
11506    arg_textarget->set_type(GLMessage::DataType::ENUM);
11507    arg_textarget->add_intvalue((int)textarget);
11508
11509    // copy argument texture
11510    GLMessage_DataType *arg_texture = glmsg.add_args();
11511    arg_texture->set_isarray(false);
11512    arg_texture->set_type(GLMessage::DataType::INT);
11513    arg_texture->add_intvalue(texture);
11514
11515    // copy argument level
11516    GLMessage_DataType *arg_level = glmsg.add_args();
11517    arg_level->set_isarray(false);
11518    arg_level->set_type(GLMessage::DataType::INT);
11519    arg_level->add_intvalue(level);
11520
11521    // call function
11522    nsecs_t start_time = systemTime();
11523    glContext->hooks->gl.glFramebufferTexture2DOES(target, attachment, textarget, texture, level);
11524    nsecs_t end_time = systemTime();
11525
11526    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11527    glContext->traceGLMessage(&glmsg);
11528}
11529
11530void GLTrace_glGetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint* params) {
11531    GLMessage glmsg;
11532    GLTraceContext *glContext = getGLTraceContext();
11533
11534    glmsg.set_function(GLMessage::glGetFramebufferAttachmentParameterivOES);
11535
11536    // copy argument target
11537    GLMessage_DataType *arg_target = glmsg.add_args();
11538    arg_target->set_isarray(false);
11539    arg_target->set_type(GLMessage::DataType::ENUM);
11540    arg_target->add_intvalue((int)target);
11541
11542    // copy argument attachment
11543    GLMessage_DataType *arg_attachment = glmsg.add_args();
11544    arg_attachment->set_isarray(false);
11545    arg_attachment->set_type(GLMessage::DataType::ENUM);
11546    arg_attachment->add_intvalue((int)attachment);
11547
11548    // copy argument pname
11549    GLMessage_DataType *arg_pname = glmsg.add_args();
11550    arg_pname->set_isarray(false);
11551    arg_pname->set_type(GLMessage::DataType::ENUM);
11552    arg_pname->add_intvalue((int)pname);
11553
11554    // copy argument params
11555    GLMessage_DataType *arg_params = glmsg.add_args();
11556    arg_params->set_isarray(false);
11557    arg_params->set_type(GLMessage::DataType::INT);
11558    arg_params->add_intvalue((int)params);
11559
11560    // call function
11561    nsecs_t start_time = systemTime();
11562    glContext->hooks->gl.glGetFramebufferAttachmentParameterivOES(target, attachment, pname, params);
11563    nsecs_t end_time = systemTime();
11564
11565    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11566    glContext->traceGLMessage(&glmsg);
11567}
11568
11569void GLTrace_glGenerateMipmapOES(GLenum target) {
11570    GLMessage glmsg;
11571    GLTraceContext *glContext = getGLTraceContext();
11572
11573    glmsg.set_function(GLMessage::glGenerateMipmapOES);
11574
11575    // copy argument target
11576    GLMessage_DataType *arg_target = glmsg.add_args();
11577    arg_target->set_isarray(false);
11578    arg_target->set_type(GLMessage::DataType::ENUM);
11579    arg_target->add_intvalue((int)target);
11580
11581    // call function
11582    nsecs_t start_time = systemTime();
11583    glContext->hooks->gl.glGenerateMipmapOES(target);
11584    nsecs_t end_time = systemTime();
11585
11586    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11587    glContext->traceGLMessage(&glmsg);
11588}
11589
11590void GLTrace_glCurrentPaletteMatrixOES(GLuint matrixpaletteindex) {
11591    GLMessage glmsg;
11592    GLTraceContext *glContext = getGLTraceContext();
11593
11594    glmsg.set_function(GLMessage::glCurrentPaletteMatrixOES);
11595
11596    // copy argument matrixpaletteindex
11597    GLMessage_DataType *arg_matrixpaletteindex = glmsg.add_args();
11598    arg_matrixpaletteindex->set_isarray(false);
11599    arg_matrixpaletteindex->set_type(GLMessage::DataType::INT);
11600    arg_matrixpaletteindex->add_intvalue(matrixpaletteindex);
11601
11602    // call function
11603    nsecs_t start_time = systemTime();
11604    glContext->hooks->gl.glCurrentPaletteMatrixOES(matrixpaletteindex);
11605    nsecs_t end_time = systemTime();
11606
11607    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11608    glContext->traceGLMessage(&glmsg);
11609}
11610
11611void GLTrace_glLoadPaletteFromModelViewMatrixOES(void) {
11612    GLMessage glmsg;
11613    GLTraceContext *glContext = getGLTraceContext();
11614
11615    glmsg.set_function(GLMessage::glLoadPaletteFromModelViewMatrixOES);
11616
11617    // call function
11618    nsecs_t start_time = systemTime();
11619    glContext->hooks->gl.glLoadPaletteFromModelViewMatrixOES();
11620    nsecs_t end_time = systemTime();
11621
11622    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11623    glContext->traceGLMessage(&glmsg);
11624}
11625
11626void GLTrace_glMatrixIndexPointerOES(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
11627    GLMessage glmsg;
11628    GLTraceContext *glContext = getGLTraceContext();
11629
11630    glmsg.set_function(GLMessage::glMatrixIndexPointerOES);
11631
11632    // copy argument size
11633    GLMessage_DataType *arg_size = glmsg.add_args();
11634    arg_size->set_isarray(false);
11635    arg_size->set_type(GLMessage::DataType::INT);
11636    arg_size->add_intvalue(size);
11637
11638    // copy argument type
11639    GLMessage_DataType *arg_type = glmsg.add_args();
11640    arg_type->set_isarray(false);
11641    arg_type->set_type(GLMessage::DataType::ENUM);
11642    arg_type->add_intvalue((int)type);
11643
11644    // copy argument stride
11645    GLMessage_DataType *arg_stride = glmsg.add_args();
11646    arg_stride->set_isarray(false);
11647    arg_stride->set_type(GLMessage::DataType::INT);
11648    arg_stride->add_intvalue(stride);
11649
11650    // copy argument pointer
11651    GLMessage_DataType *arg_pointer = glmsg.add_args();
11652    arg_pointer->set_isarray(false);
11653    arg_pointer->set_type(GLMessage::DataType::INT);
11654    arg_pointer->add_intvalue((int)pointer);
11655
11656    // call function
11657    nsecs_t start_time = systemTime();
11658    glContext->hooks->gl.glMatrixIndexPointerOES(size, type, stride, pointer);
11659    nsecs_t end_time = systemTime();
11660
11661    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11662    glContext->traceGLMessage(&glmsg);
11663}
11664
11665void GLTrace_glWeightPointerOES(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
11666    GLMessage glmsg;
11667    GLTraceContext *glContext = getGLTraceContext();
11668
11669    glmsg.set_function(GLMessage::glWeightPointerOES);
11670
11671    // copy argument size
11672    GLMessage_DataType *arg_size = glmsg.add_args();
11673    arg_size->set_isarray(false);
11674    arg_size->set_type(GLMessage::DataType::INT);
11675    arg_size->add_intvalue(size);
11676
11677    // copy argument type
11678    GLMessage_DataType *arg_type = glmsg.add_args();
11679    arg_type->set_isarray(false);
11680    arg_type->set_type(GLMessage::DataType::ENUM);
11681    arg_type->add_intvalue((int)type);
11682
11683    // copy argument stride
11684    GLMessage_DataType *arg_stride = glmsg.add_args();
11685    arg_stride->set_isarray(false);
11686    arg_stride->set_type(GLMessage::DataType::INT);
11687    arg_stride->add_intvalue(stride);
11688
11689    // copy argument pointer
11690    GLMessage_DataType *arg_pointer = glmsg.add_args();
11691    arg_pointer->set_isarray(false);
11692    arg_pointer->set_type(GLMessage::DataType::INT);
11693    arg_pointer->add_intvalue((int)pointer);
11694
11695    // call function
11696    nsecs_t start_time = systemTime();
11697    glContext->hooks->gl.glWeightPointerOES(size, type, stride, pointer);
11698    nsecs_t end_time = systemTime();
11699
11700    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11701    glContext->traceGLMessage(&glmsg);
11702}
11703
11704GLbitfield GLTrace_glQueryMatrixxOES(GLfixed mantissa[16], GLint exponent[16]) {
11705    GLMessage glmsg;
11706    GLTraceContext *glContext = getGLTraceContext();
11707
11708    glmsg.set_function(GLMessage::glQueryMatrixxOES);
11709
11710    // copy argument mantissa
11711    GLMessage_DataType *arg_mantissa = glmsg.add_args();
11712    arg_mantissa->set_isarray(false);
11713    arg_mantissa->set_type(GLMessage::DataType::INT);
11714    arg_mantissa->add_intvalue((int)mantissa);
11715
11716    // copy argument exponent
11717    GLMessage_DataType *arg_exponent = glmsg.add_args();
11718    arg_exponent->set_isarray(false);
11719    arg_exponent->set_type(GLMessage::DataType::INT);
11720    arg_exponent->add_intvalue((int)exponent);
11721
11722    // call function
11723    nsecs_t start_time = systemTime();
11724    GLbitfield retValue = glContext->hooks->gl.glQueryMatrixxOES(mantissa, exponent);
11725    nsecs_t end_time = systemTime();
11726
11727    // set return value
11728    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
11729    rt->set_isarray(false);
11730    rt->set_type(GLMessage::DataType::INT);
11731    rt->add_intvalue(retValue);
11732
11733    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11734    glContext->traceGLMessage(&glmsg);
11735
11736    return retValue;
11737}
11738
11739void GLTrace_glDepthRangefOES(GLclampf zNear, GLclampf zFar) {
11740    GLMessage glmsg;
11741    GLTraceContext *glContext = getGLTraceContext();
11742
11743    glmsg.set_function(GLMessage::glDepthRangefOES);
11744
11745    // copy argument zNear
11746    GLMessage_DataType *arg_zNear = glmsg.add_args();
11747    arg_zNear->set_isarray(false);
11748    arg_zNear->set_type(GLMessage::DataType::FLOAT);
11749    arg_zNear->add_floatvalue(zNear);
11750
11751    // copy argument zFar
11752    GLMessage_DataType *arg_zFar = glmsg.add_args();
11753    arg_zFar->set_isarray(false);
11754    arg_zFar->set_type(GLMessage::DataType::FLOAT);
11755    arg_zFar->add_floatvalue(zFar);
11756
11757    // call function
11758    nsecs_t start_time = systemTime();
11759    glContext->hooks->gl.glDepthRangefOES(zNear, zFar);
11760    nsecs_t end_time = systemTime();
11761
11762    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11763    glContext->traceGLMessage(&glmsg);
11764}
11765
11766void GLTrace_glFrustumfOES(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
11767    GLMessage glmsg;
11768    GLTraceContext *glContext = getGLTraceContext();
11769
11770    glmsg.set_function(GLMessage::glFrustumfOES);
11771
11772    // copy argument left
11773    GLMessage_DataType *arg_left = glmsg.add_args();
11774    arg_left->set_isarray(false);
11775    arg_left->set_type(GLMessage::DataType::FLOAT);
11776    arg_left->add_floatvalue(left);
11777
11778    // copy argument right
11779    GLMessage_DataType *arg_right = glmsg.add_args();
11780    arg_right->set_isarray(false);
11781    arg_right->set_type(GLMessage::DataType::FLOAT);
11782    arg_right->add_floatvalue(right);
11783
11784    // copy argument bottom
11785    GLMessage_DataType *arg_bottom = glmsg.add_args();
11786    arg_bottom->set_isarray(false);
11787    arg_bottom->set_type(GLMessage::DataType::FLOAT);
11788    arg_bottom->add_floatvalue(bottom);
11789
11790    // copy argument top
11791    GLMessage_DataType *arg_top = glmsg.add_args();
11792    arg_top->set_isarray(false);
11793    arg_top->set_type(GLMessage::DataType::FLOAT);
11794    arg_top->add_floatvalue(top);
11795
11796    // copy argument zNear
11797    GLMessage_DataType *arg_zNear = glmsg.add_args();
11798    arg_zNear->set_isarray(false);
11799    arg_zNear->set_type(GLMessage::DataType::FLOAT);
11800    arg_zNear->add_floatvalue(zNear);
11801
11802    // copy argument zFar
11803    GLMessage_DataType *arg_zFar = glmsg.add_args();
11804    arg_zFar->set_isarray(false);
11805    arg_zFar->set_type(GLMessage::DataType::FLOAT);
11806    arg_zFar->add_floatvalue(zFar);
11807
11808    // call function
11809    nsecs_t start_time = systemTime();
11810    glContext->hooks->gl.glFrustumfOES(left, right, bottom, top, zNear, zFar);
11811    nsecs_t end_time = systemTime();
11812
11813    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11814    glContext->traceGLMessage(&glmsg);
11815}
11816
11817void GLTrace_glOrthofOES(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
11818    GLMessage glmsg;
11819    GLTraceContext *glContext = getGLTraceContext();
11820
11821    glmsg.set_function(GLMessage::glOrthofOES);
11822
11823    // copy argument left
11824    GLMessage_DataType *arg_left = glmsg.add_args();
11825    arg_left->set_isarray(false);
11826    arg_left->set_type(GLMessage::DataType::FLOAT);
11827    arg_left->add_floatvalue(left);
11828
11829    // copy argument right
11830    GLMessage_DataType *arg_right = glmsg.add_args();
11831    arg_right->set_isarray(false);
11832    arg_right->set_type(GLMessage::DataType::FLOAT);
11833    arg_right->add_floatvalue(right);
11834
11835    // copy argument bottom
11836    GLMessage_DataType *arg_bottom = glmsg.add_args();
11837    arg_bottom->set_isarray(false);
11838    arg_bottom->set_type(GLMessage::DataType::FLOAT);
11839    arg_bottom->add_floatvalue(bottom);
11840
11841    // copy argument top
11842    GLMessage_DataType *arg_top = glmsg.add_args();
11843    arg_top->set_isarray(false);
11844    arg_top->set_type(GLMessage::DataType::FLOAT);
11845    arg_top->add_floatvalue(top);
11846
11847    // copy argument zNear
11848    GLMessage_DataType *arg_zNear = glmsg.add_args();
11849    arg_zNear->set_isarray(false);
11850    arg_zNear->set_type(GLMessage::DataType::FLOAT);
11851    arg_zNear->add_floatvalue(zNear);
11852
11853    // copy argument zFar
11854    GLMessage_DataType *arg_zFar = glmsg.add_args();
11855    arg_zFar->set_isarray(false);
11856    arg_zFar->set_type(GLMessage::DataType::FLOAT);
11857    arg_zFar->add_floatvalue(zFar);
11858
11859    // call function
11860    nsecs_t start_time = systemTime();
11861    glContext->hooks->gl.glOrthofOES(left, right, bottom, top, zNear, zFar);
11862    nsecs_t end_time = systemTime();
11863
11864    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11865    glContext->traceGLMessage(&glmsg);
11866}
11867
11868void GLTrace_glClipPlanefOES(GLenum plane, const GLfloat *equation) {
11869    GLMessage glmsg;
11870    GLTraceContext *glContext = getGLTraceContext();
11871
11872    glmsg.set_function(GLMessage::glClipPlanefOES);
11873
11874    // copy argument plane
11875    GLMessage_DataType *arg_plane = glmsg.add_args();
11876    arg_plane->set_isarray(false);
11877    arg_plane->set_type(GLMessage::DataType::ENUM);
11878    arg_plane->add_intvalue((int)plane);
11879
11880    // copy argument equation
11881    GLMessage_DataType *arg_equation = glmsg.add_args();
11882    arg_equation->set_isarray(false);
11883    arg_equation->set_type(GLMessage::DataType::INT);
11884    arg_equation->add_intvalue((int)equation);
11885
11886    // call function
11887    nsecs_t start_time = systemTime();
11888    glContext->hooks->gl.glClipPlanefOES(plane, equation);
11889    nsecs_t end_time = systemTime();
11890
11891    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11892    glContext->traceGLMessage(&glmsg);
11893}
11894
11895void GLTrace_glGetClipPlanefOES(GLenum pname, GLfloat eqn[4]) {
11896    GLMessage glmsg;
11897    GLTraceContext *glContext = getGLTraceContext();
11898
11899    glmsg.set_function(GLMessage::glGetClipPlanefOES);
11900
11901    // copy argument pname
11902    GLMessage_DataType *arg_pname = glmsg.add_args();
11903    arg_pname->set_isarray(false);
11904    arg_pname->set_type(GLMessage::DataType::ENUM);
11905    arg_pname->add_intvalue((int)pname);
11906
11907    // copy argument eqn
11908    GLMessage_DataType *arg_eqn = glmsg.add_args();
11909    arg_eqn->set_isarray(false);
11910    arg_eqn->set_type(GLMessage::DataType::INT);
11911    arg_eqn->add_intvalue((int)eqn);
11912
11913    // call function
11914    nsecs_t start_time = systemTime();
11915    glContext->hooks->gl.glGetClipPlanefOES(pname, eqn);
11916    nsecs_t end_time = systemTime();
11917
11918    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11919    glContext->traceGLMessage(&glmsg);
11920}
11921
11922void GLTrace_glClearDepthfOES(GLclampf depth) {
11923    GLMessage glmsg;
11924    GLTraceContext *glContext = getGLTraceContext();
11925
11926    glmsg.set_function(GLMessage::glClearDepthfOES);
11927
11928    // copy argument depth
11929    GLMessage_DataType *arg_depth = glmsg.add_args();
11930    arg_depth->set_isarray(false);
11931    arg_depth->set_type(GLMessage::DataType::FLOAT);
11932    arg_depth->add_floatvalue(depth);
11933
11934    // call function
11935    nsecs_t start_time = systemTime();
11936    glContext->hooks->gl.glClearDepthfOES(depth);
11937    nsecs_t end_time = systemTime();
11938
11939    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11940    glContext->traceGLMessage(&glmsg);
11941}
11942
11943void GLTrace_glTexGenfOES(GLenum coord, GLenum pname, GLfloat param) {
11944    GLMessage glmsg;
11945    GLTraceContext *glContext = getGLTraceContext();
11946
11947    glmsg.set_function(GLMessage::glTexGenfOES);
11948
11949    // copy argument coord
11950    GLMessage_DataType *arg_coord = glmsg.add_args();
11951    arg_coord->set_isarray(false);
11952    arg_coord->set_type(GLMessage::DataType::ENUM);
11953    arg_coord->add_intvalue((int)coord);
11954
11955    // copy argument pname
11956    GLMessage_DataType *arg_pname = glmsg.add_args();
11957    arg_pname->set_isarray(false);
11958    arg_pname->set_type(GLMessage::DataType::ENUM);
11959    arg_pname->add_intvalue((int)pname);
11960
11961    // copy argument param
11962    GLMessage_DataType *arg_param = glmsg.add_args();
11963    arg_param->set_isarray(false);
11964    arg_param->set_type(GLMessage::DataType::FLOAT);
11965    arg_param->add_floatvalue(param);
11966
11967    // call function
11968    nsecs_t start_time = systemTime();
11969    glContext->hooks->gl.glTexGenfOES(coord, pname, param);
11970    nsecs_t end_time = systemTime();
11971
11972    fixupGLMessage(glContext, start_time, end_time, &glmsg);
11973    glContext->traceGLMessage(&glmsg);
11974}
11975
11976void GLTrace_glTexGenfvOES(GLenum coord, GLenum pname, const GLfloat *params) {
11977    GLMessage glmsg;
11978    GLTraceContext *glContext = getGLTraceContext();
11979
11980    glmsg.set_function(GLMessage::glTexGenfvOES);
11981
11982    // copy argument coord
11983    GLMessage_DataType *arg_coord = glmsg.add_args();
11984    arg_coord->set_isarray(false);
11985    arg_coord->set_type(GLMessage::DataType::ENUM);
11986    arg_coord->add_intvalue((int)coord);
11987
11988    // copy argument pname
11989    GLMessage_DataType *arg_pname = glmsg.add_args();
11990    arg_pname->set_isarray(false);
11991    arg_pname->set_type(GLMessage::DataType::ENUM);
11992    arg_pname->add_intvalue((int)pname);
11993
11994    // copy argument params
11995    GLMessage_DataType *arg_params = glmsg.add_args();
11996    arg_params->set_isarray(false);
11997    arg_params->set_type(GLMessage::DataType::INT);
11998    arg_params->add_intvalue((int)params);
11999
12000    // call function
12001    nsecs_t start_time = systemTime();
12002    glContext->hooks->gl.glTexGenfvOES(coord, pname, params);
12003    nsecs_t end_time = systemTime();
12004
12005    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12006    glContext->traceGLMessage(&glmsg);
12007}
12008
12009void GLTrace_glTexGeniOES(GLenum coord, GLenum pname, GLint param) {
12010    GLMessage glmsg;
12011    GLTraceContext *glContext = getGLTraceContext();
12012
12013    glmsg.set_function(GLMessage::glTexGeniOES);
12014
12015    // copy argument coord
12016    GLMessage_DataType *arg_coord = glmsg.add_args();
12017    arg_coord->set_isarray(false);
12018    arg_coord->set_type(GLMessage::DataType::ENUM);
12019    arg_coord->add_intvalue((int)coord);
12020
12021    // copy argument pname
12022    GLMessage_DataType *arg_pname = glmsg.add_args();
12023    arg_pname->set_isarray(false);
12024    arg_pname->set_type(GLMessage::DataType::ENUM);
12025    arg_pname->add_intvalue((int)pname);
12026
12027    // copy argument param
12028    GLMessage_DataType *arg_param = glmsg.add_args();
12029    arg_param->set_isarray(false);
12030    arg_param->set_type(GLMessage::DataType::INT);
12031    arg_param->add_intvalue(param);
12032
12033    // call function
12034    nsecs_t start_time = systemTime();
12035    glContext->hooks->gl.glTexGeniOES(coord, pname, param);
12036    nsecs_t end_time = systemTime();
12037
12038    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12039    glContext->traceGLMessage(&glmsg);
12040}
12041
12042void GLTrace_glTexGenivOES(GLenum coord, GLenum pname, const GLint *params) {
12043    GLMessage glmsg;
12044    GLTraceContext *glContext = getGLTraceContext();
12045
12046    glmsg.set_function(GLMessage::glTexGenivOES);
12047
12048    // copy argument coord
12049    GLMessage_DataType *arg_coord = glmsg.add_args();
12050    arg_coord->set_isarray(false);
12051    arg_coord->set_type(GLMessage::DataType::ENUM);
12052    arg_coord->add_intvalue((int)coord);
12053
12054    // copy argument pname
12055    GLMessage_DataType *arg_pname = glmsg.add_args();
12056    arg_pname->set_isarray(false);
12057    arg_pname->set_type(GLMessage::DataType::ENUM);
12058    arg_pname->add_intvalue((int)pname);
12059
12060    // copy argument params
12061    GLMessage_DataType *arg_params = glmsg.add_args();
12062    arg_params->set_isarray(false);
12063    arg_params->set_type(GLMessage::DataType::INT);
12064    arg_params->add_intvalue((int)params);
12065
12066    // call function
12067    nsecs_t start_time = systemTime();
12068    glContext->hooks->gl.glTexGenivOES(coord, pname, params);
12069    nsecs_t end_time = systemTime();
12070
12071    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12072    glContext->traceGLMessage(&glmsg);
12073}
12074
12075void GLTrace_glTexGenxOES(GLenum coord, GLenum pname, GLfixed param) {
12076    GLMessage glmsg;
12077    GLTraceContext *glContext = getGLTraceContext();
12078
12079    glmsg.set_function(GLMessage::glTexGenxOES);
12080
12081    // copy argument coord
12082    GLMessage_DataType *arg_coord = glmsg.add_args();
12083    arg_coord->set_isarray(false);
12084    arg_coord->set_type(GLMessage::DataType::ENUM);
12085    arg_coord->add_intvalue((int)coord);
12086
12087    // copy argument pname
12088    GLMessage_DataType *arg_pname = glmsg.add_args();
12089    arg_pname->set_isarray(false);
12090    arg_pname->set_type(GLMessage::DataType::ENUM);
12091    arg_pname->add_intvalue((int)pname);
12092
12093    // copy argument param
12094    GLMessage_DataType *arg_param = glmsg.add_args();
12095    arg_param->set_isarray(false);
12096    arg_param->set_type(GLMessage::DataType::INT);
12097    arg_param->add_intvalue(param);
12098
12099    // call function
12100    nsecs_t start_time = systemTime();
12101    glContext->hooks->gl.glTexGenxOES(coord, pname, param);
12102    nsecs_t end_time = systemTime();
12103
12104    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12105    glContext->traceGLMessage(&glmsg);
12106}
12107
12108void GLTrace_glTexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params) {
12109    GLMessage glmsg;
12110    GLTraceContext *glContext = getGLTraceContext();
12111
12112    glmsg.set_function(GLMessage::glTexGenxvOES);
12113
12114    // copy argument coord
12115    GLMessage_DataType *arg_coord = glmsg.add_args();
12116    arg_coord->set_isarray(false);
12117    arg_coord->set_type(GLMessage::DataType::ENUM);
12118    arg_coord->add_intvalue((int)coord);
12119
12120    // copy argument pname
12121    GLMessage_DataType *arg_pname = glmsg.add_args();
12122    arg_pname->set_isarray(false);
12123    arg_pname->set_type(GLMessage::DataType::ENUM);
12124    arg_pname->add_intvalue((int)pname);
12125
12126    // copy argument params
12127    GLMessage_DataType *arg_params = glmsg.add_args();
12128    arg_params->set_isarray(false);
12129    arg_params->set_type(GLMessage::DataType::INT);
12130    arg_params->add_intvalue((int)params);
12131
12132    // call function
12133    nsecs_t start_time = systemTime();
12134    glContext->hooks->gl.glTexGenxvOES(coord, pname, params);
12135    nsecs_t end_time = systemTime();
12136
12137    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12138    glContext->traceGLMessage(&glmsg);
12139}
12140
12141void GLTrace_glGetTexGenfvOES(GLenum coord, GLenum pname, GLfloat *params) {
12142    GLMessage glmsg;
12143    GLTraceContext *glContext = getGLTraceContext();
12144
12145    glmsg.set_function(GLMessage::glGetTexGenfvOES);
12146
12147    // copy argument coord
12148    GLMessage_DataType *arg_coord = glmsg.add_args();
12149    arg_coord->set_isarray(false);
12150    arg_coord->set_type(GLMessage::DataType::ENUM);
12151    arg_coord->add_intvalue((int)coord);
12152
12153    // copy argument pname
12154    GLMessage_DataType *arg_pname = glmsg.add_args();
12155    arg_pname->set_isarray(false);
12156    arg_pname->set_type(GLMessage::DataType::ENUM);
12157    arg_pname->add_intvalue((int)pname);
12158
12159    // copy argument params
12160    GLMessage_DataType *arg_params = glmsg.add_args();
12161    arg_params->set_isarray(false);
12162    arg_params->set_type(GLMessage::DataType::INT);
12163    arg_params->add_intvalue((int)params);
12164
12165    // call function
12166    nsecs_t start_time = systemTime();
12167    glContext->hooks->gl.glGetTexGenfvOES(coord, pname, params);
12168    nsecs_t end_time = systemTime();
12169
12170    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12171    glContext->traceGLMessage(&glmsg);
12172}
12173
12174void GLTrace_glGetTexGenivOES(GLenum coord, GLenum pname, GLint *params) {
12175    GLMessage glmsg;
12176    GLTraceContext *glContext = getGLTraceContext();
12177
12178    glmsg.set_function(GLMessage::glGetTexGenivOES);
12179
12180    // copy argument coord
12181    GLMessage_DataType *arg_coord = glmsg.add_args();
12182    arg_coord->set_isarray(false);
12183    arg_coord->set_type(GLMessage::DataType::ENUM);
12184    arg_coord->add_intvalue((int)coord);
12185
12186    // copy argument pname
12187    GLMessage_DataType *arg_pname = glmsg.add_args();
12188    arg_pname->set_isarray(false);
12189    arg_pname->set_type(GLMessage::DataType::ENUM);
12190    arg_pname->add_intvalue((int)pname);
12191
12192    // copy argument params
12193    GLMessage_DataType *arg_params = glmsg.add_args();
12194    arg_params->set_isarray(false);
12195    arg_params->set_type(GLMessage::DataType::INT);
12196    arg_params->add_intvalue((int)params);
12197
12198    // call function
12199    nsecs_t start_time = systemTime();
12200    glContext->hooks->gl.glGetTexGenivOES(coord, pname, params);
12201    nsecs_t end_time = systemTime();
12202
12203    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12204    glContext->traceGLMessage(&glmsg);
12205}
12206
12207void GLTrace_glGetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params) {
12208    GLMessage glmsg;
12209    GLTraceContext *glContext = getGLTraceContext();
12210
12211    glmsg.set_function(GLMessage::glGetTexGenxvOES);
12212
12213    // copy argument coord
12214    GLMessage_DataType *arg_coord = glmsg.add_args();
12215    arg_coord->set_isarray(false);
12216    arg_coord->set_type(GLMessage::DataType::ENUM);
12217    arg_coord->add_intvalue((int)coord);
12218
12219    // copy argument pname
12220    GLMessage_DataType *arg_pname = glmsg.add_args();
12221    arg_pname->set_isarray(false);
12222    arg_pname->set_type(GLMessage::DataType::ENUM);
12223    arg_pname->add_intvalue((int)pname);
12224
12225    // copy argument params
12226    GLMessage_DataType *arg_params = glmsg.add_args();
12227    arg_params->set_isarray(false);
12228    arg_params->set_type(GLMessage::DataType::INT);
12229    arg_params->add_intvalue((int)params);
12230
12231    // call function
12232    nsecs_t start_time = systemTime();
12233    glContext->hooks->gl.glGetTexGenxvOES(coord, pname, params);
12234    nsecs_t end_time = systemTime();
12235
12236    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12237    glContext->traceGLMessage(&glmsg);
12238}
12239
12240void GLTrace_glClipPlanefIMG(GLenum p, const GLfloat *eqn) {
12241    GLMessage glmsg;
12242    GLTraceContext *glContext = getGLTraceContext();
12243
12244    glmsg.set_function(GLMessage::glClipPlanefIMG);
12245
12246    // copy argument p
12247    GLMessage_DataType *arg_p = glmsg.add_args();
12248    arg_p->set_isarray(false);
12249    arg_p->set_type(GLMessage::DataType::ENUM);
12250    arg_p->add_intvalue((int)p);
12251
12252    // copy argument eqn
12253    GLMessage_DataType *arg_eqn = glmsg.add_args();
12254    arg_eqn->set_isarray(false);
12255    arg_eqn->set_type(GLMessage::DataType::INT);
12256    arg_eqn->add_intvalue((int)eqn);
12257
12258    // call function
12259    nsecs_t start_time = systemTime();
12260    glContext->hooks->gl.glClipPlanefIMG(p, eqn);
12261    nsecs_t end_time = systemTime();
12262
12263    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12264    glContext->traceGLMessage(&glmsg);
12265}
12266
12267void GLTrace_glClipPlanexIMG(GLenum p, const GLfixed *eqn) {
12268    GLMessage glmsg;
12269    GLTraceContext *glContext = getGLTraceContext();
12270
12271    glmsg.set_function(GLMessage::glClipPlanexIMG);
12272
12273    // copy argument p
12274    GLMessage_DataType *arg_p = glmsg.add_args();
12275    arg_p->set_isarray(false);
12276    arg_p->set_type(GLMessage::DataType::ENUM);
12277    arg_p->add_intvalue((int)p);
12278
12279    // copy argument eqn
12280    GLMessage_DataType *arg_eqn = glmsg.add_args();
12281    arg_eqn->set_isarray(false);
12282    arg_eqn->set_type(GLMessage::DataType::INT);
12283    arg_eqn->add_intvalue((int)eqn);
12284
12285    // call function
12286    nsecs_t start_time = systemTime();
12287    glContext->hooks->gl.glClipPlanexIMG(p, eqn);
12288    nsecs_t end_time = systemTime();
12289
12290    fixupGLMessage(glContext, start_time, end_time, &glmsg);
12291    glContext->traceGLMessage(&glmsg);
12292}
12293
12294
12295}; // namespace gltrace
12296}; // namespace android
12297