gltrace_api.cpp revision d58974c6b25fe9fdadb38dc1f1371196b71a0913
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 wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
47    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
48    glContext->hooks->gl.glActiveTexture(texture);
49    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
50    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
51
52    void *pointerArgs[] = {
53    };
54
55    fixupGLMessage(glContext, wallStartTime, wallEndTime,
56                              threadStartTime, threadEndTime,
57                              &glmsg, pointerArgs);
58    glContext->traceGLMessage(&glmsg);
59}
60
61void GLTrace_glAttachShader(GLuint program, GLuint shader) {
62    GLMessage glmsg;
63    GLTraceContext *glContext = getGLTraceContext();
64
65    glmsg.set_function(GLMessage::glAttachShader);
66
67    // copy argument program
68    GLMessage_DataType *arg_program = glmsg.add_args();
69    arg_program->set_isarray(false);
70    arg_program->set_type(GLMessage::DataType::INT);
71    arg_program->add_intvalue(program);
72
73    // copy argument shader
74    GLMessage_DataType *arg_shader = glmsg.add_args();
75    arg_shader->set_isarray(false);
76    arg_shader->set_type(GLMessage::DataType::INT);
77    arg_shader->add_intvalue(shader);
78
79    // call function
80    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
81    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
82    glContext->hooks->gl.glAttachShader(program, shader);
83    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
84    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
85
86    void *pointerArgs[] = {
87    };
88
89    fixupGLMessage(glContext, wallStartTime, wallEndTime,
90                              threadStartTime, threadEndTime,
91                              &glmsg, pointerArgs);
92    glContext->traceGLMessage(&glmsg);
93}
94
95void GLTrace_glBindAttribLocation(GLuint program, GLuint index, const GLchar* name) {
96    GLMessage glmsg;
97    GLTraceContext *glContext = getGLTraceContext();
98
99    glmsg.set_function(GLMessage::glBindAttribLocation);
100
101    // copy argument program
102    GLMessage_DataType *arg_program = glmsg.add_args();
103    arg_program->set_isarray(false);
104    arg_program->set_type(GLMessage::DataType::INT);
105    arg_program->add_intvalue(program);
106
107    // copy argument index
108    GLMessage_DataType *arg_index = glmsg.add_args();
109    arg_index->set_isarray(false);
110    arg_index->set_type(GLMessage::DataType::INT);
111    arg_index->add_intvalue(index);
112
113    // copy argument name
114    GLMessage_DataType *arg_name = glmsg.add_args();
115    arg_name->set_isarray(false);
116    arg_name->set_type(GLMessage::DataType::INT);
117    arg_name->add_intvalue((int)name);
118
119    // call function
120    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
121    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
122    glContext->hooks->gl.glBindAttribLocation(program, index, name);
123    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
124    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
125
126    void *pointerArgs[] = {
127        (void *) name,
128    };
129
130    fixupGLMessage(glContext, wallStartTime, wallEndTime,
131                              threadStartTime, threadEndTime,
132                              &glmsg, pointerArgs);
133    glContext->traceGLMessage(&glmsg);
134}
135
136void GLTrace_glBindBuffer(GLenum target, GLuint buffer) {
137    GLMessage glmsg;
138    GLTraceContext *glContext = getGLTraceContext();
139
140    glmsg.set_function(GLMessage::glBindBuffer);
141
142    // copy argument target
143    GLMessage_DataType *arg_target = glmsg.add_args();
144    arg_target->set_isarray(false);
145    arg_target->set_type(GLMessage::DataType::ENUM);
146    arg_target->add_intvalue((int)target);
147
148    // copy argument buffer
149    GLMessage_DataType *arg_buffer = glmsg.add_args();
150    arg_buffer->set_isarray(false);
151    arg_buffer->set_type(GLMessage::DataType::INT);
152    arg_buffer->add_intvalue(buffer);
153
154    // call function
155    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
156    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
157    glContext->hooks->gl.glBindBuffer(target, buffer);
158    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
159    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
160
161    void *pointerArgs[] = {
162    };
163
164    fixupGLMessage(glContext, wallStartTime, wallEndTime,
165                              threadStartTime, threadEndTime,
166                              &glmsg, pointerArgs);
167    glContext->traceGLMessage(&glmsg);
168}
169
170void GLTrace_glBindFramebuffer(GLenum target, GLuint framebuffer) {
171    GLMessage glmsg;
172    GLTraceContext *glContext = getGLTraceContext();
173
174    glmsg.set_function(GLMessage::glBindFramebuffer);
175
176    // copy argument target
177    GLMessage_DataType *arg_target = glmsg.add_args();
178    arg_target->set_isarray(false);
179    arg_target->set_type(GLMessage::DataType::ENUM);
180    arg_target->add_intvalue((int)target);
181
182    // copy argument framebuffer
183    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
184    arg_framebuffer->set_isarray(false);
185    arg_framebuffer->set_type(GLMessage::DataType::INT);
186    arg_framebuffer->add_intvalue(framebuffer);
187
188    // call function
189    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
190    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
191    glContext->hooks->gl.glBindFramebuffer(target, framebuffer);
192    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
193    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
194
195    void *pointerArgs[] = {
196    };
197
198    fixupGLMessage(glContext, wallStartTime, wallEndTime,
199                              threadStartTime, threadEndTime,
200                              &glmsg, pointerArgs);
201    glContext->traceGLMessage(&glmsg);
202}
203
204void GLTrace_glBindRenderbuffer(GLenum target, GLuint renderbuffer) {
205    GLMessage glmsg;
206    GLTraceContext *glContext = getGLTraceContext();
207
208    glmsg.set_function(GLMessage::glBindRenderbuffer);
209
210    // copy argument target
211    GLMessage_DataType *arg_target = glmsg.add_args();
212    arg_target->set_isarray(false);
213    arg_target->set_type(GLMessage::DataType::ENUM);
214    arg_target->add_intvalue((int)target);
215
216    // copy argument renderbuffer
217    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
218    arg_renderbuffer->set_isarray(false);
219    arg_renderbuffer->set_type(GLMessage::DataType::INT);
220    arg_renderbuffer->add_intvalue(renderbuffer);
221
222    // call function
223    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
224    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
225    glContext->hooks->gl.glBindRenderbuffer(target, renderbuffer);
226    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
227    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
228
229    void *pointerArgs[] = {
230    };
231
232    fixupGLMessage(glContext, wallStartTime, wallEndTime,
233                              threadStartTime, threadEndTime,
234                              &glmsg, pointerArgs);
235    glContext->traceGLMessage(&glmsg);
236}
237
238void GLTrace_glBindTexture(GLenum target, GLuint texture) {
239    GLMessage glmsg;
240    GLTraceContext *glContext = getGLTraceContext();
241
242    glmsg.set_function(GLMessage::glBindTexture);
243
244    // copy argument target
245    GLMessage_DataType *arg_target = glmsg.add_args();
246    arg_target->set_isarray(false);
247    arg_target->set_type(GLMessage::DataType::ENUM);
248    arg_target->add_intvalue((int)target);
249
250    // copy argument texture
251    GLMessage_DataType *arg_texture = glmsg.add_args();
252    arg_texture->set_isarray(false);
253    arg_texture->set_type(GLMessage::DataType::INT);
254    arg_texture->add_intvalue(texture);
255
256    // call function
257    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
258    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
259    glContext->hooks->gl.glBindTexture(target, texture);
260    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
261    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
262
263    void *pointerArgs[] = {
264    };
265
266    fixupGLMessage(glContext, wallStartTime, wallEndTime,
267                              threadStartTime, threadEndTime,
268                              &glmsg, pointerArgs);
269    glContext->traceGLMessage(&glmsg);
270}
271
272void GLTrace_glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) {
273    GLMessage glmsg;
274    GLTraceContext *glContext = getGLTraceContext();
275
276    glmsg.set_function(GLMessage::glBlendColor);
277
278    // copy argument red
279    GLMessage_DataType *arg_red = glmsg.add_args();
280    arg_red->set_isarray(false);
281    arg_red->set_type(GLMessage::DataType::FLOAT);
282    arg_red->add_floatvalue(red);
283
284    // copy argument green
285    GLMessage_DataType *arg_green = glmsg.add_args();
286    arg_green->set_isarray(false);
287    arg_green->set_type(GLMessage::DataType::FLOAT);
288    arg_green->add_floatvalue(green);
289
290    // copy argument blue
291    GLMessage_DataType *arg_blue = glmsg.add_args();
292    arg_blue->set_isarray(false);
293    arg_blue->set_type(GLMessage::DataType::FLOAT);
294    arg_blue->add_floatvalue(blue);
295
296    // copy argument alpha
297    GLMessage_DataType *arg_alpha = glmsg.add_args();
298    arg_alpha->set_isarray(false);
299    arg_alpha->set_type(GLMessage::DataType::FLOAT);
300    arg_alpha->add_floatvalue(alpha);
301
302    // call function
303    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
304    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
305    glContext->hooks->gl.glBlendColor(red, green, blue, alpha);
306    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
307    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
308
309    void *pointerArgs[] = {
310    };
311
312    fixupGLMessage(glContext, wallStartTime, wallEndTime,
313                              threadStartTime, threadEndTime,
314                              &glmsg, pointerArgs);
315    glContext->traceGLMessage(&glmsg);
316}
317
318void GLTrace_glBlendEquation(GLenum mode) {
319    GLMessage glmsg;
320    GLTraceContext *glContext = getGLTraceContext();
321
322    glmsg.set_function(GLMessage::glBlendEquation);
323
324    // copy argument mode
325    GLMessage_DataType *arg_mode = glmsg.add_args();
326    arg_mode->set_isarray(false);
327    arg_mode->set_type(GLMessage::DataType::ENUM);
328    arg_mode->add_intvalue((int)mode);
329
330    // call function
331    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
332    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
333    glContext->hooks->gl.glBlendEquation(mode);
334    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
335    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
336
337    void *pointerArgs[] = {
338    };
339
340    fixupGLMessage(glContext, wallStartTime, wallEndTime,
341                              threadStartTime, threadEndTime,
342                              &glmsg, pointerArgs);
343    glContext->traceGLMessage(&glmsg);
344}
345
346void GLTrace_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) {
347    GLMessage glmsg;
348    GLTraceContext *glContext = getGLTraceContext();
349
350    glmsg.set_function(GLMessage::glBlendEquationSeparate);
351
352    // copy argument modeRGB
353    GLMessage_DataType *arg_modeRGB = glmsg.add_args();
354    arg_modeRGB->set_isarray(false);
355    arg_modeRGB->set_type(GLMessage::DataType::ENUM);
356    arg_modeRGB->add_intvalue((int)modeRGB);
357
358    // copy argument modeAlpha
359    GLMessage_DataType *arg_modeAlpha = glmsg.add_args();
360    arg_modeAlpha->set_isarray(false);
361    arg_modeAlpha->set_type(GLMessage::DataType::ENUM);
362    arg_modeAlpha->add_intvalue((int)modeAlpha);
363
364    // call function
365    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
366    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
367    glContext->hooks->gl.glBlendEquationSeparate(modeRGB, modeAlpha);
368    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
369    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
370
371    void *pointerArgs[] = {
372    };
373
374    fixupGLMessage(glContext, wallStartTime, wallEndTime,
375                              threadStartTime, threadEndTime,
376                              &glmsg, pointerArgs);
377    glContext->traceGLMessage(&glmsg);
378}
379
380void GLTrace_glBlendFunc(GLenum sfactor, GLenum dfactor) {
381    GLMessage glmsg;
382    GLTraceContext *glContext = getGLTraceContext();
383
384    glmsg.set_function(GLMessage::glBlendFunc);
385
386    // copy argument sfactor
387    GLMessage_DataType *arg_sfactor = glmsg.add_args();
388    arg_sfactor->set_isarray(false);
389    arg_sfactor->set_type(GLMessage::DataType::ENUM);
390    arg_sfactor->add_intvalue((int)sfactor);
391
392    // copy argument dfactor
393    GLMessage_DataType *arg_dfactor = glmsg.add_args();
394    arg_dfactor->set_isarray(false);
395    arg_dfactor->set_type(GLMessage::DataType::ENUM);
396    arg_dfactor->add_intvalue((int)dfactor);
397
398    // call function
399    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
400    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
401    glContext->hooks->gl.glBlendFunc(sfactor, dfactor);
402    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
403    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
404
405    void *pointerArgs[] = {
406    };
407
408    fixupGLMessage(glContext, wallStartTime, wallEndTime,
409                              threadStartTime, threadEndTime,
410                              &glmsg, pointerArgs);
411    glContext->traceGLMessage(&glmsg);
412}
413
414void GLTrace_glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) {
415    GLMessage glmsg;
416    GLTraceContext *glContext = getGLTraceContext();
417
418    glmsg.set_function(GLMessage::glBlendFuncSeparate);
419
420    // copy argument srcRGB
421    GLMessage_DataType *arg_srcRGB = glmsg.add_args();
422    arg_srcRGB->set_isarray(false);
423    arg_srcRGB->set_type(GLMessage::DataType::ENUM);
424    arg_srcRGB->add_intvalue((int)srcRGB);
425
426    // copy argument dstRGB
427    GLMessage_DataType *arg_dstRGB = glmsg.add_args();
428    arg_dstRGB->set_isarray(false);
429    arg_dstRGB->set_type(GLMessage::DataType::ENUM);
430    arg_dstRGB->add_intvalue((int)dstRGB);
431
432    // copy argument srcAlpha
433    GLMessage_DataType *arg_srcAlpha = glmsg.add_args();
434    arg_srcAlpha->set_isarray(false);
435    arg_srcAlpha->set_type(GLMessage::DataType::ENUM);
436    arg_srcAlpha->add_intvalue((int)srcAlpha);
437
438    // copy argument dstAlpha
439    GLMessage_DataType *arg_dstAlpha = glmsg.add_args();
440    arg_dstAlpha->set_isarray(false);
441    arg_dstAlpha->set_type(GLMessage::DataType::ENUM);
442    arg_dstAlpha->add_intvalue((int)dstAlpha);
443
444    // call function
445    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
446    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
447    glContext->hooks->gl.glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);
448    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
449    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
450
451    void *pointerArgs[] = {
452    };
453
454    fixupGLMessage(glContext, wallStartTime, wallEndTime,
455                              threadStartTime, threadEndTime,
456                              &glmsg, pointerArgs);
457    glContext->traceGLMessage(&glmsg);
458}
459
460void GLTrace_glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage) {
461    GLMessage glmsg;
462    GLTraceContext *glContext = getGLTraceContext();
463
464    glmsg.set_function(GLMessage::glBufferData);
465
466    // copy argument target
467    GLMessage_DataType *arg_target = glmsg.add_args();
468    arg_target->set_isarray(false);
469    arg_target->set_type(GLMessage::DataType::ENUM);
470    arg_target->add_intvalue((int)target);
471
472    // copy argument size
473    GLMessage_DataType *arg_size = glmsg.add_args();
474    arg_size->set_isarray(false);
475    arg_size->set_type(GLMessage::DataType::INT);
476    arg_size->add_intvalue(size);
477
478    // copy argument data
479    GLMessage_DataType *arg_data = glmsg.add_args();
480    arg_data->set_isarray(false);
481    arg_data->set_type(GLMessage::DataType::INT);
482    arg_data->add_intvalue((int)data);
483
484    // copy argument usage
485    GLMessage_DataType *arg_usage = glmsg.add_args();
486    arg_usage->set_isarray(false);
487    arg_usage->set_type(GLMessage::DataType::ENUM);
488    arg_usage->add_intvalue((int)usage);
489
490    // call function
491    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
492    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
493    glContext->hooks->gl.glBufferData(target, size, data, usage);
494    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
495    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
496
497    void *pointerArgs[] = {
498        (void *) data,
499    };
500
501    fixupGLMessage(glContext, wallStartTime, wallEndTime,
502                              threadStartTime, threadEndTime,
503                              &glmsg, pointerArgs);
504    glContext->traceGLMessage(&glmsg);
505}
506
507void GLTrace_glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data) {
508    GLMessage glmsg;
509    GLTraceContext *glContext = getGLTraceContext();
510
511    glmsg.set_function(GLMessage::glBufferSubData);
512
513    // copy argument target
514    GLMessage_DataType *arg_target = glmsg.add_args();
515    arg_target->set_isarray(false);
516    arg_target->set_type(GLMessage::DataType::ENUM);
517    arg_target->add_intvalue((int)target);
518
519    // copy argument offset
520    GLMessage_DataType *arg_offset = glmsg.add_args();
521    arg_offset->set_isarray(false);
522    arg_offset->set_type(GLMessage::DataType::INT);
523    arg_offset->add_intvalue(offset);
524
525    // copy argument size
526    GLMessage_DataType *arg_size = glmsg.add_args();
527    arg_size->set_isarray(false);
528    arg_size->set_type(GLMessage::DataType::INT);
529    arg_size->add_intvalue(size);
530
531    // copy argument data
532    GLMessage_DataType *arg_data = glmsg.add_args();
533    arg_data->set_isarray(false);
534    arg_data->set_type(GLMessage::DataType::INT);
535    arg_data->add_intvalue((int)data);
536
537    // call function
538    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
539    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
540    glContext->hooks->gl.glBufferSubData(target, offset, size, data);
541    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
542    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
543
544    void *pointerArgs[] = {
545        (void *) data,
546    };
547
548    fixupGLMessage(glContext, wallStartTime, wallEndTime,
549                              threadStartTime, threadEndTime,
550                              &glmsg, pointerArgs);
551    glContext->traceGLMessage(&glmsg);
552}
553
554GLenum GLTrace_glCheckFramebufferStatus(GLenum target) {
555    GLMessage glmsg;
556    GLTraceContext *glContext = getGLTraceContext();
557
558    glmsg.set_function(GLMessage::glCheckFramebufferStatus);
559
560    // copy argument target
561    GLMessage_DataType *arg_target = glmsg.add_args();
562    arg_target->set_isarray(false);
563    arg_target->set_type(GLMessage::DataType::ENUM);
564    arg_target->add_intvalue((int)target);
565
566    // call function
567    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
568    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
569    GLenum retValue = glContext->hooks->gl.glCheckFramebufferStatus(target);
570    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
571    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
572
573    // set return value
574    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
575    rt->set_isarray(false);
576    rt->set_type(GLMessage::DataType::ENUM);
577    rt->add_intvalue((int)retValue);
578
579    void *pointerArgs[] = {
580    };
581
582    fixupGLMessage(glContext, wallStartTime, wallEndTime,
583                              threadStartTime, threadEndTime,
584                              &glmsg, pointerArgs);
585    glContext->traceGLMessage(&glmsg);
586
587    return retValue;
588}
589
590void GLTrace_glClear(GLbitfield mask) {
591    GLMessage glmsg;
592    GLTraceContext *glContext = getGLTraceContext();
593
594    glmsg.set_function(GLMessage::glClear);
595
596    // copy argument mask
597    GLMessage_DataType *arg_mask = glmsg.add_args();
598    arg_mask->set_isarray(false);
599    arg_mask->set_type(GLMessage::DataType::INT);
600    arg_mask->add_intvalue(mask);
601
602    // call function
603    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
604    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
605    glContext->hooks->gl.glClear(mask);
606    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
607    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
608
609    void *pointerArgs[] = {
610    };
611
612    fixupGLMessage(glContext, wallStartTime, wallEndTime,
613                              threadStartTime, threadEndTime,
614                              &glmsg, pointerArgs);
615    glContext->traceGLMessage(&glmsg);
616}
617
618void GLTrace_glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) {
619    GLMessage glmsg;
620    GLTraceContext *glContext = getGLTraceContext();
621
622    glmsg.set_function(GLMessage::glClearColor);
623
624    // copy argument red
625    GLMessage_DataType *arg_red = glmsg.add_args();
626    arg_red->set_isarray(false);
627    arg_red->set_type(GLMessage::DataType::FLOAT);
628    arg_red->add_floatvalue(red);
629
630    // copy argument green
631    GLMessage_DataType *arg_green = glmsg.add_args();
632    arg_green->set_isarray(false);
633    arg_green->set_type(GLMessage::DataType::FLOAT);
634    arg_green->add_floatvalue(green);
635
636    // copy argument blue
637    GLMessage_DataType *arg_blue = glmsg.add_args();
638    arg_blue->set_isarray(false);
639    arg_blue->set_type(GLMessage::DataType::FLOAT);
640    arg_blue->add_floatvalue(blue);
641
642    // copy argument alpha
643    GLMessage_DataType *arg_alpha = glmsg.add_args();
644    arg_alpha->set_isarray(false);
645    arg_alpha->set_type(GLMessage::DataType::FLOAT);
646    arg_alpha->add_floatvalue(alpha);
647
648    // call function
649    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
650    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
651    glContext->hooks->gl.glClearColor(red, green, blue, alpha);
652    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
653    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
654
655    void *pointerArgs[] = {
656    };
657
658    fixupGLMessage(glContext, wallStartTime, wallEndTime,
659                              threadStartTime, threadEndTime,
660                              &glmsg, pointerArgs);
661    glContext->traceGLMessage(&glmsg);
662}
663
664void GLTrace_glClearDepthf(GLclampf depth) {
665    GLMessage glmsg;
666    GLTraceContext *glContext = getGLTraceContext();
667
668    glmsg.set_function(GLMessage::glClearDepthf);
669
670    // copy argument depth
671    GLMessage_DataType *arg_depth = glmsg.add_args();
672    arg_depth->set_isarray(false);
673    arg_depth->set_type(GLMessage::DataType::FLOAT);
674    arg_depth->add_floatvalue(depth);
675
676    // call function
677    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
678    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
679    glContext->hooks->gl.glClearDepthf(depth);
680    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
681    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
682
683    void *pointerArgs[] = {
684    };
685
686    fixupGLMessage(glContext, wallStartTime, wallEndTime,
687                              threadStartTime, threadEndTime,
688                              &glmsg, pointerArgs);
689    glContext->traceGLMessage(&glmsg);
690}
691
692void GLTrace_glClearStencil(GLint s) {
693    GLMessage glmsg;
694    GLTraceContext *glContext = getGLTraceContext();
695
696    glmsg.set_function(GLMessage::glClearStencil);
697
698    // copy argument s
699    GLMessage_DataType *arg_s = glmsg.add_args();
700    arg_s->set_isarray(false);
701    arg_s->set_type(GLMessage::DataType::INT);
702    arg_s->add_intvalue(s);
703
704    // call function
705    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
706    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
707    glContext->hooks->gl.glClearStencil(s);
708    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
709    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
710
711    void *pointerArgs[] = {
712    };
713
714    fixupGLMessage(glContext, wallStartTime, wallEndTime,
715                              threadStartTime, threadEndTime,
716                              &glmsg, pointerArgs);
717    glContext->traceGLMessage(&glmsg);
718}
719
720void GLTrace_glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) {
721    GLMessage glmsg;
722    GLTraceContext *glContext = getGLTraceContext();
723
724    glmsg.set_function(GLMessage::glColorMask);
725
726    // copy argument red
727    GLMessage_DataType *arg_red = glmsg.add_args();
728    arg_red->set_isarray(false);
729    arg_red->set_type(GLMessage::DataType::BOOL);
730    arg_red->add_boolvalue(red);
731
732    // copy argument green
733    GLMessage_DataType *arg_green = glmsg.add_args();
734    arg_green->set_isarray(false);
735    arg_green->set_type(GLMessage::DataType::BOOL);
736    arg_green->add_boolvalue(green);
737
738    // copy argument blue
739    GLMessage_DataType *arg_blue = glmsg.add_args();
740    arg_blue->set_isarray(false);
741    arg_blue->set_type(GLMessage::DataType::BOOL);
742    arg_blue->add_boolvalue(blue);
743
744    // copy argument alpha
745    GLMessage_DataType *arg_alpha = glmsg.add_args();
746    arg_alpha->set_isarray(false);
747    arg_alpha->set_type(GLMessage::DataType::BOOL);
748    arg_alpha->add_boolvalue(alpha);
749
750    // call function
751    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
752    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
753    glContext->hooks->gl.glColorMask(red, green, blue, alpha);
754    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
755    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
756
757    void *pointerArgs[] = {
758    };
759
760    fixupGLMessage(glContext, wallStartTime, wallEndTime,
761                              threadStartTime, threadEndTime,
762                              &glmsg, pointerArgs);
763    glContext->traceGLMessage(&glmsg);
764}
765
766void GLTrace_glCompileShader(GLuint shader) {
767    GLMessage glmsg;
768    GLTraceContext *glContext = getGLTraceContext();
769
770    glmsg.set_function(GLMessage::glCompileShader);
771
772    // copy argument shader
773    GLMessage_DataType *arg_shader = glmsg.add_args();
774    arg_shader->set_isarray(false);
775    arg_shader->set_type(GLMessage::DataType::INT);
776    arg_shader->add_intvalue(shader);
777
778    // call function
779    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
780    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
781    glContext->hooks->gl.glCompileShader(shader);
782    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
783    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
784
785    void *pointerArgs[] = {
786    };
787
788    fixupGLMessage(glContext, wallStartTime, wallEndTime,
789                              threadStartTime, threadEndTime,
790                              &glmsg, pointerArgs);
791    glContext->traceGLMessage(&glmsg);
792}
793
794void GLTrace_glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data) {
795    GLMessage glmsg;
796    GLTraceContext *glContext = getGLTraceContext();
797
798    glmsg.set_function(GLMessage::glCompressedTexImage2D);
799
800    // copy argument target
801    GLMessage_DataType *arg_target = glmsg.add_args();
802    arg_target->set_isarray(false);
803    arg_target->set_type(GLMessage::DataType::ENUM);
804    arg_target->add_intvalue((int)target);
805
806    // copy argument level
807    GLMessage_DataType *arg_level = glmsg.add_args();
808    arg_level->set_isarray(false);
809    arg_level->set_type(GLMessage::DataType::INT);
810    arg_level->add_intvalue(level);
811
812    // copy argument internalformat
813    GLMessage_DataType *arg_internalformat = glmsg.add_args();
814    arg_internalformat->set_isarray(false);
815    arg_internalformat->set_type(GLMessage::DataType::ENUM);
816    arg_internalformat->add_intvalue((int)internalformat);
817
818    // copy argument width
819    GLMessage_DataType *arg_width = glmsg.add_args();
820    arg_width->set_isarray(false);
821    arg_width->set_type(GLMessage::DataType::INT);
822    arg_width->add_intvalue(width);
823
824    // copy argument height
825    GLMessage_DataType *arg_height = glmsg.add_args();
826    arg_height->set_isarray(false);
827    arg_height->set_type(GLMessage::DataType::INT);
828    arg_height->add_intvalue(height);
829
830    // copy argument border
831    GLMessage_DataType *arg_border = glmsg.add_args();
832    arg_border->set_isarray(false);
833    arg_border->set_type(GLMessage::DataType::INT);
834    arg_border->add_intvalue(border);
835
836    // copy argument imageSize
837    GLMessage_DataType *arg_imageSize = glmsg.add_args();
838    arg_imageSize->set_isarray(false);
839    arg_imageSize->set_type(GLMessage::DataType::INT);
840    arg_imageSize->add_intvalue(imageSize);
841
842    // copy argument data
843    GLMessage_DataType *arg_data = glmsg.add_args();
844    arg_data->set_isarray(false);
845    arg_data->set_type(GLMessage::DataType::INT);
846    arg_data->add_intvalue((int)data);
847
848    // call function
849    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
850    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
851    glContext->hooks->gl.glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);
852    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
853    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
854
855    void *pointerArgs[] = {
856        (void *) data,
857    };
858
859    fixupGLMessage(glContext, wallStartTime, wallEndTime,
860                              threadStartTime, threadEndTime,
861                              &glmsg, pointerArgs);
862    glContext->traceGLMessage(&glmsg);
863}
864
865void GLTrace_glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data) {
866    GLMessage glmsg;
867    GLTraceContext *glContext = getGLTraceContext();
868
869    glmsg.set_function(GLMessage::glCompressedTexSubImage2D);
870
871    // copy argument target
872    GLMessage_DataType *arg_target = glmsg.add_args();
873    arg_target->set_isarray(false);
874    arg_target->set_type(GLMessage::DataType::ENUM);
875    arg_target->add_intvalue((int)target);
876
877    // copy argument level
878    GLMessage_DataType *arg_level = glmsg.add_args();
879    arg_level->set_isarray(false);
880    arg_level->set_type(GLMessage::DataType::INT);
881    arg_level->add_intvalue(level);
882
883    // copy argument xoffset
884    GLMessage_DataType *arg_xoffset = glmsg.add_args();
885    arg_xoffset->set_isarray(false);
886    arg_xoffset->set_type(GLMessage::DataType::INT);
887    arg_xoffset->add_intvalue(xoffset);
888
889    // copy argument yoffset
890    GLMessage_DataType *arg_yoffset = glmsg.add_args();
891    arg_yoffset->set_isarray(false);
892    arg_yoffset->set_type(GLMessage::DataType::INT);
893    arg_yoffset->add_intvalue(yoffset);
894
895    // copy argument width
896    GLMessage_DataType *arg_width = glmsg.add_args();
897    arg_width->set_isarray(false);
898    arg_width->set_type(GLMessage::DataType::INT);
899    arg_width->add_intvalue(width);
900
901    // copy argument height
902    GLMessage_DataType *arg_height = glmsg.add_args();
903    arg_height->set_isarray(false);
904    arg_height->set_type(GLMessage::DataType::INT);
905    arg_height->add_intvalue(height);
906
907    // copy argument format
908    GLMessage_DataType *arg_format = glmsg.add_args();
909    arg_format->set_isarray(false);
910    arg_format->set_type(GLMessage::DataType::ENUM);
911    arg_format->add_intvalue((int)format);
912
913    // copy argument imageSize
914    GLMessage_DataType *arg_imageSize = glmsg.add_args();
915    arg_imageSize->set_isarray(false);
916    arg_imageSize->set_type(GLMessage::DataType::INT);
917    arg_imageSize->add_intvalue(imageSize);
918
919    // copy argument data
920    GLMessage_DataType *arg_data = glmsg.add_args();
921    arg_data->set_isarray(false);
922    arg_data->set_type(GLMessage::DataType::INT);
923    arg_data->add_intvalue((int)data);
924
925    // call function
926    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
927    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
928    glContext->hooks->gl.glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data);
929    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
930    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
931
932    void *pointerArgs[] = {
933        (void *) data,
934    };
935
936    fixupGLMessage(glContext, wallStartTime, wallEndTime,
937                              threadStartTime, threadEndTime,
938                              &glmsg, pointerArgs);
939    glContext->traceGLMessage(&glmsg);
940}
941
942void GLTrace_glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) {
943    GLMessage glmsg;
944    GLTraceContext *glContext = getGLTraceContext();
945
946    glmsg.set_function(GLMessage::glCopyTexImage2D);
947
948    // copy argument target
949    GLMessage_DataType *arg_target = glmsg.add_args();
950    arg_target->set_isarray(false);
951    arg_target->set_type(GLMessage::DataType::ENUM);
952    arg_target->add_intvalue((int)target);
953
954    // copy argument level
955    GLMessage_DataType *arg_level = glmsg.add_args();
956    arg_level->set_isarray(false);
957    arg_level->set_type(GLMessage::DataType::INT);
958    arg_level->add_intvalue(level);
959
960    // copy argument internalformat
961    GLMessage_DataType *arg_internalformat = glmsg.add_args();
962    arg_internalformat->set_isarray(false);
963    arg_internalformat->set_type(GLMessage::DataType::ENUM);
964    arg_internalformat->add_intvalue((int)internalformat);
965
966    // copy argument x
967    GLMessage_DataType *arg_x = glmsg.add_args();
968    arg_x->set_isarray(false);
969    arg_x->set_type(GLMessage::DataType::INT);
970    arg_x->add_intvalue(x);
971
972    // copy argument y
973    GLMessage_DataType *arg_y = glmsg.add_args();
974    arg_y->set_isarray(false);
975    arg_y->set_type(GLMessage::DataType::INT);
976    arg_y->add_intvalue(y);
977
978    // copy argument width
979    GLMessage_DataType *arg_width = glmsg.add_args();
980    arg_width->set_isarray(false);
981    arg_width->set_type(GLMessage::DataType::INT);
982    arg_width->add_intvalue(width);
983
984    // copy argument height
985    GLMessage_DataType *arg_height = glmsg.add_args();
986    arg_height->set_isarray(false);
987    arg_height->set_type(GLMessage::DataType::INT);
988    arg_height->add_intvalue(height);
989
990    // copy argument border
991    GLMessage_DataType *arg_border = glmsg.add_args();
992    arg_border->set_isarray(false);
993    arg_border->set_type(GLMessage::DataType::INT);
994    arg_border->add_intvalue(border);
995
996    // call function
997    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
998    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
999    glContext->hooks->gl.glCopyTexImage2D(target, level, internalformat, x, y, width, height, border);
1000    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1001    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1002
1003    void *pointerArgs[] = {
1004    };
1005
1006    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1007                              threadStartTime, threadEndTime,
1008                              &glmsg, pointerArgs);
1009    glContext->traceGLMessage(&glmsg);
1010}
1011
1012void GLTrace_glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) {
1013    GLMessage glmsg;
1014    GLTraceContext *glContext = getGLTraceContext();
1015
1016    glmsg.set_function(GLMessage::glCopyTexSubImage2D);
1017
1018    // copy argument target
1019    GLMessage_DataType *arg_target = glmsg.add_args();
1020    arg_target->set_isarray(false);
1021    arg_target->set_type(GLMessage::DataType::ENUM);
1022    arg_target->add_intvalue((int)target);
1023
1024    // copy argument level
1025    GLMessage_DataType *arg_level = glmsg.add_args();
1026    arg_level->set_isarray(false);
1027    arg_level->set_type(GLMessage::DataType::INT);
1028    arg_level->add_intvalue(level);
1029
1030    // copy argument xoffset
1031    GLMessage_DataType *arg_xoffset = glmsg.add_args();
1032    arg_xoffset->set_isarray(false);
1033    arg_xoffset->set_type(GLMessage::DataType::INT);
1034    arg_xoffset->add_intvalue(xoffset);
1035
1036    // copy argument yoffset
1037    GLMessage_DataType *arg_yoffset = glmsg.add_args();
1038    arg_yoffset->set_isarray(false);
1039    arg_yoffset->set_type(GLMessage::DataType::INT);
1040    arg_yoffset->add_intvalue(yoffset);
1041
1042    // copy argument x
1043    GLMessage_DataType *arg_x = glmsg.add_args();
1044    arg_x->set_isarray(false);
1045    arg_x->set_type(GLMessage::DataType::INT);
1046    arg_x->add_intvalue(x);
1047
1048    // copy argument y
1049    GLMessage_DataType *arg_y = glmsg.add_args();
1050    arg_y->set_isarray(false);
1051    arg_y->set_type(GLMessage::DataType::INT);
1052    arg_y->add_intvalue(y);
1053
1054    // copy argument width
1055    GLMessage_DataType *arg_width = glmsg.add_args();
1056    arg_width->set_isarray(false);
1057    arg_width->set_type(GLMessage::DataType::INT);
1058    arg_width->add_intvalue(width);
1059
1060    // copy argument height
1061    GLMessage_DataType *arg_height = glmsg.add_args();
1062    arg_height->set_isarray(false);
1063    arg_height->set_type(GLMessage::DataType::INT);
1064    arg_height->add_intvalue(height);
1065
1066    // call function
1067    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1068    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1069    glContext->hooks->gl.glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
1070    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1071    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1072
1073    void *pointerArgs[] = {
1074    };
1075
1076    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1077                              threadStartTime, threadEndTime,
1078                              &glmsg, pointerArgs);
1079    glContext->traceGLMessage(&glmsg);
1080}
1081
1082GLuint GLTrace_glCreateProgram(void) {
1083    GLMessage glmsg;
1084    GLTraceContext *glContext = getGLTraceContext();
1085
1086    glmsg.set_function(GLMessage::glCreateProgram);
1087
1088    // call function
1089    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1090    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1091    GLuint retValue = glContext->hooks->gl.glCreateProgram();
1092    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1093    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1094
1095    // set return value
1096    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
1097    rt->set_isarray(false);
1098    rt->set_type(GLMessage::DataType::INT);
1099    rt->add_intvalue(retValue);
1100
1101    void *pointerArgs[] = {
1102    };
1103
1104    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1105                              threadStartTime, threadEndTime,
1106                              &glmsg, pointerArgs);
1107    glContext->traceGLMessage(&glmsg);
1108
1109    return retValue;
1110}
1111
1112GLuint GLTrace_glCreateShader(GLenum type) {
1113    GLMessage glmsg;
1114    GLTraceContext *glContext = getGLTraceContext();
1115
1116    glmsg.set_function(GLMessage::glCreateShader);
1117
1118    // copy argument type
1119    GLMessage_DataType *arg_type = glmsg.add_args();
1120    arg_type->set_isarray(false);
1121    arg_type->set_type(GLMessage::DataType::ENUM);
1122    arg_type->add_intvalue((int)type);
1123
1124    // call function
1125    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1126    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1127    GLuint retValue = glContext->hooks->gl.glCreateShader(type);
1128    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1129    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1130
1131    // set return value
1132    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
1133    rt->set_isarray(false);
1134    rt->set_type(GLMessage::DataType::INT);
1135    rt->add_intvalue(retValue);
1136
1137    void *pointerArgs[] = {
1138    };
1139
1140    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1141                              threadStartTime, threadEndTime,
1142                              &glmsg, pointerArgs);
1143    glContext->traceGLMessage(&glmsg);
1144
1145    return retValue;
1146}
1147
1148void GLTrace_glCullFace(GLenum mode) {
1149    GLMessage glmsg;
1150    GLTraceContext *glContext = getGLTraceContext();
1151
1152    glmsg.set_function(GLMessage::glCullFace);
1153
1154    // copy argument mode
1155    GLMessage_DataType *arg_mode = glmsg.add_args();
1156    arg_mode->set_isarray(false);
1157    arg_mode->set_type(GLMessage::DataType::ENUM);
1158    arg_mode->add_intvalue((int)mode);
1159
1160    // call function
1161    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1162    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1163    glContext->hooks->gl.glCullFace(mode);
1164    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1165    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1166
1167    void *pointerArgs[] = {
1168    };
1169
1170    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1171                              threadStartTime, threadEndTime,
1172                              &glmsg, pointerArgs);
1173    glContext->traceGLMessage(&glmsg);
1174}
1175
1176void GLTrace_glDeleteBuffers(GLsizei n, const GLuint* buffers) {
1177    GLMessage glmsg;
1178    GLTraceContext *glContext = getGLTraceContext();
1179
1180    glmsg.set_function(GLMessage::glDeleteBuffers);
1181
1182    // copy argument n
1183    GLMessage_DataType *arg_n = glmsg.add_args();
1184    arg_n->set_isarray(false);
1185    arg_n->set_type(GLMessage::DataType::INT);
1186    arg_n->add_intvalue(n);
1187
1188    // copy argument buffers
1189    GLMessage_DataType *arg_buffers = glmsg.add_args();
1190    arg_buffers->set_isarray(false);
1191    arg_buffers->set_type(GLMessage::DataType::INT);
1192    arg_buffers->add_intvalue((int)buffers);
1193
1194    // call function
1195    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1196    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1197    glContext->hooks->gl.glDeleteBuffers(n, buffers);
1198    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1199    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1200
1201    void *pointerArgs[] = {
1202        (void *) buffers,
1203    };
1204
1205    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1206                              threadStartTime, threadEndTime,
1207                              &glmsg, pointerArgs);
1208    glContext->traceGLMessage(&glmsg);
1209}
1210
1211void GLTrace_glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers) {
1212    GLMessage glmsg;
1213    GLTraceContext *glContext = getGLTraceContext();
1214
1215    glmsg.set_function(GLMessage::glDeleteFramebuffers);
1216
1217    // copy argument n
1218    GLMessage_DataType *arg_n = glmsg.add_args();
1219    arg_n->set_isarray(false);
1220    arg_n->set_type(GLMessage::DataType::INT);
1221    arg_n->add_intvalue(n);
1222
1223    // copy argument framebuffers
1224    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
1225    arg_framebuffers->set_isarray(false);
1226    arg_framebuffers->set_type(GLMessage::DataType::INT);
1227    arg_framebuffers->add_intvalue((int)framebuffers);
1228
1229    // call function
1230    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1231    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1232    glContext->hooks->gl.glDeleteFramebuffers(n, framebuffers);
1233    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1234    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1235
1236    void *pointerArgs[] = {
1237        (void *) framebuffers,
1238    };
1239
1240    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1241                              threadStartTime, threadEndTime,
1242                              &glmsg, pointerArgs);
1243    glContext->traceGLMessage(&glmsg);
1244}
1245
1246void GLTrace_glDeleteProgram(GLuint program) {
1247    GLMessage glmsg;
1248    GLTraceContext *glContext = getGLTraceContext();
1249
1250    glmsg.set_function(GLMessage::glDeleteProgram);
1251
1252    // copy argument program
1253    GLMessage_DataType *arg_program = glmsg.add_args();
1254    arg_program->set_isarray(false);
1255    arg_program->set_type(GLMessage::DataType::INT);
1256    arg_program->add_intvalue(program);
1257
1258    // call function
1259    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1260    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1261    glContext->hooks->gl.glDeleteProgram(program);
1262    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1263    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1264
1265    void *pointerArgs[] = {
1266    };
1267
1268    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1269                              threadStartTime, threadEndTime,
1270                              &glmsg, pointerArgs);
1271    glContext->traceGLMessage(&glmsg);
1272}
1273
1274void GLTrace_glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers) {
1275    GLMessage glmsg;
1276    GLTraceContext *glContext = getGLTraceContext();
1277
1278    glmsg.set_function(GLMessage::glDeleteRenderbuffers);
1279
1280    // copy argument n
1281    GLMessage_DataType *arg_n = glmsg.add_args();
1282    arg_n->set_isarray(false);
1283    arg_n->set_type(GLMessage::DataType::INT);
1284    arg_n->add_intvalue(n);
1285
1286    // copy argument renderbuffers
1287    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
1288    arg_renderbuffers->set_isarray(false);
1289    arg_renderbuffers->set_type(GLMessage::DataType::INT);
1290    arg_renderbuffers->add_intvalue((int)renderbuffers);
1291
1292    // call function
1293    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1294    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1295    glContext->hooks->gl.glDeleteRenderbuffers(n, renderbuffers);
1296    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1297    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1298
1299    void *pointerArgs[] = {
1300        (void *) renderbuffers,
1301    };
1302
1303    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1304                              threadStartTime, threadEndTime,
1305                              &glmsg, pointerArgs);
1306    glContext->traceGLMessage(&glmsg);
1307}
1308
1309void GLTrace_glDeleteShader(GLuint shader) {
1310    GLMessage glmsg;
1311    GLTraceContext *glContext = getGLTraceContext();
1312
1313    glmsg.set_function(GLMessage::glDeleteShader);
1314
1315    // copy argument shader
1316    GLMessage_DataType *arg_shader = glmsg.add_args();
1317    arg_shader->set_isarray(false);
1318    arg_shader->set_type(GLMessage::DataType::INT);
1319    arg_shader->add_intvalue(shader);
1320
1321    // call function
1322    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1323    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1324    glContext->hooks->gl.glDeleteShader(shader);
1325    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1326    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1327
1328    void *pointerArgs[] = {
1329    };
1330
1331    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1332                              threadStartTime, threadEndTime,
1333                              &glmsg, pointerArgs);
1334    glContext->traceGLMessage(&glmsg);
1335}
1336
1337void GLTrace_glDeleteTextures(GLsizei n, const GLuint* textures) {
1338    GLMessage glmsg;
1339    GLTraceContext *glContext = getGLTraceContext();
1340
1341    glmsg.set_function(GLMessage::glDeleteTextures);
1342
1343    // copy argument n
1344    GLMessage_DataType *arg_n = glmsg.add_args();
1345    arg_n->set_isarray(false);
1346    arg_n->set_type(GLMessage::DataType::INT);
1347    arg_n->add_intvalue(n);
1348
1349    // copy argument textures
1350    GLMessage_DataType *arg_textures = glmsg.add_args();
1351    arg_textures->set_isarray(false);
1352    arg_textures->set_type(GLMessage::DataType::INT);
1353    arg_textures->add_intvalue((int)textures);
1354
1355    // call function
1356    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1357    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1358    glContext->hooks->gl.glDeleteTextures(n, textures);
1359    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1360    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1361
1362    void *pointerArgs[] = {
1363        (void *) textures,
1364    };
1365
1366    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1367                              threadStartTime, threadEndTime,
1368                              &glmsg, pointerArgs);
1369    glContext->traceGLMessage(&glmsg);
1370}
1371
1372void GLTrace_glDepthFunc(GLenum func) {
1373    GLMessage glmsg;
1374    GLTraceContext *glContext = getGLTraceContext();
1375
1376    glmsg.set_function(GLMessage::glDepthFunc);
1377
1378    // copy argument func
1379    GLMessage_DataType *arg_func = glmsg.add_args();
1380    arg_func->set_isarray(false);
1381    arg_func->set_type(GLMessage::DataType::ENUM);
1382    arg_func->add_intvalue((int)func);
1383
1384    // call function
1385    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1386    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1387    glContext->hooks->gl.glDepthFunc(func);
1388    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1389    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1390
1391    void *pointerArgs[] = {
1392    };
1393
1394    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1395                              threadStartTime, threadEndTime,
1396                              &glmsg, pointerArgs);
1397    glContext->traceGLMessage(&glmsg);
1398}
1399
1400void GLTrace_glDepthMask(GLboolean flag) {
1401    GLMessage glmsg;
1402    GLTraceContext *glContext = getGLTraceContext();
1403
1404    glmsg.set_function(GLMessage::glDepthMask);
1405
1406    // copy argument flag
1407    GLMessage_DataType *arg_flag = glmsg.add_args();
1408    arg_flag->set_isarray(false);
1409    arg_flag->set_type(GLMessage::DataType::BOOL);
1410    arg_flag->add_boolvalue(flag);
1411
1412    // call function
1413    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1414    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1415    glContext->hooks->gl.glDepthMask(flag);
1416    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1417    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1418
1419    void *pointerArgs[] = {
1420    };
1421
1422    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1423                              threadStartTime, threadEndTime,
1424                              &glmsg, pointerArgs);
1425    glContext->traceGLMessage(&glmsg);
1426}
1427
1428void GLTrace_glDepthRangef(GLclampf zNear, GLclampf zFar) {
1429    GLMessage glmsg;
1430    GLTraceContext *glContext = getGLTraceContext();
1431
1432    glmsg.set_function(GLMessage::glDepthRangef);
1433
1434    // copy argument zNear
1435    GLMessage_DataType *arg_zNear = glmsg.add_args();
1436    arg_zNear->set_isarray(false);
1437    arg_zNear->set_type(GLMessage::DataType::FLOAT);
1438    arg_zNear->add_floatvalue(zNear);
1439
1440    // copy argument zFar
1441    GLMessage_DataType *arg_zFar = glmsg.add_args();
1442    arg_zFar->set_isarray(false);
1443    arg_zFar->set_type(GLMessage::DataType::FLOAT);
1444    arg_zFar->add_floatvalue(zFar);
1445
1446    // call function
1447    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1448    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1449    glContext->hooks->gl.glDepthRangef(zNear, zFar);
1450    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1451    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1452
1453    void *pointerArgs[] = {
1454    };
1455
1456    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1457                              threadStartTime, threadEndTime,
1458                              &glmsg, pointerArgs);
1459    glContext->traceGLMessage(&glmsg);
1460}
1461
1462void GLTrace_glDetachShader(GLuint program, GLuint shader) {
1463    GLMessage glmsg;
1464    GLTraceContext *glContext = getGLTraceContext();
1465
1466    glmsg.set_function(GLMessage::glDetachShader);
1467
1468    // copy argument program
1469    GLMessage_DataType *arg_program = glmsg.add_args();
1470    arg_program->set_isarray(false);
1471    arg_program->set_type(GLMessage::DataType::INT);
1472    arg_program->add_intvalue(program);
1473
1474    // copy argument shader
1475    GLMessage_DataType *arg_shader = glmsg.add_args();
1476    arg_shader->set_isarray(false);
1477    arg_shader->set_type(GLMessage::DataType::INT);
1478    arg_shader->add_intvalue(shader);
1479
1480    // call function
1481    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1482    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1483    glContext->hooks->gl.glDetachShader(program, shader);
1484    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1485    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1486
1487    void *pointerArgs[] = {
1488    };
1489
1490    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1491                              threadStartTime, threadEndTime,
1492                              &glmsg, pointerArgs);
1493    glContext->traceGLMessage(&glmsg);
1494}
1495
1496void GLTrace_glDisable(GLenum cap) {
1497    GLMessage glmsg;
1498    GLTraceContext *glContext = getGLTraceContext();
1499
1500    glmsg.set_function(GLMessage::glDisable);
1501
1502    // copy argument cap
1503    GLMessage_DataType *arg_cap = glmsg.add_args();
1504    arg_cap->set_isarray(false);
1505    arg_cap->set_type(GLMessage::DataType::ENUM);
1506    arg_cap->add_intvalue((int)cap);
1507
1508    // call function
1509    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1510    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1511    glContext->hooks->gl.glDisable(cap);
1512    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1513    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1514
1515    void *pointerArgs[] = {
1516    };
1517
1518    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1519                              threadStartTime, threadEndTime,
1520                              &glmsg, pointerArgs);
1521    glContext->traceGLMessage(&glmsg);
1522}
1523
1524void GLTrace_glDisableVertexAttribArray(GLuint index) {
1525    GLMessage glmsg;
1526    GLTraceContext *glContext = getGLTraceContext();
1527
1528    glmsg.set_function(GLMessage::glDisableVertexAttribArray);
1529
1530    // copy argument index
1531    GLMessage_DataType *arg_index = glmsg.add_args();
1532    arg_index->set_isarray(false);
1533    arg_index->set_type(GLMessage::DataType::INT);
1534    arg_index->add_intvalue(index);
1535
1536    // call function
1537    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1538    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1539    glContext->hooks->gl.glDisableVertexAttribArray(index);
1540    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1541    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1542
1543    void *pointerArgs[] = {
1544    };
1545
1546    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1547                              threadStartTime, threadEndTime,
1548                              &glmsg, pointerArgs);
1549    glContext->traceGLMessage(&glmsg);
1550}
1551
1552void GLTrace_glDrawArrays(GLenum mode, GLint first, GLsizei count) {
1553    GLMessage glmsg;
1554    GLTraceContext *glContext = getGLTraceContext();
1555
1556    glmsg.set_function(GLMessage::glDrawArrays);
1557
1558    // copy argument mode
1559    GLMessage_DataType *arg_mode = glmsg.add_args();
1560    arg_mode->set_isarray(false);
1561    arg_mode->set_type(GLMessage::DataType::ENUM);
1562    arg_mode->add_intvalue((int)mode);
1563
1564    // copy argument first
1565    GLMessage_DataType *arg_first = glmsg.add_args();
1566    arg_first->set_isarray(false);
1567    arg_first->set_type(GLMessage::DataType::INT);
1568    arg_first->add_intvalue(first);
1569
1570    // copy argument count
1571    GLMessage_DataType *arg_count = glmsg.add_args();
1572    arg_count->set_isarray(false);
1573    arg_count->set_type(GLMessage::DataType::INT);
1574    arg_count->add_intvalue(count);
1575
1576    // call function
1577    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1578    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1579    glContext->hooks->gl.glDrawArrays(mode, first, count);
1580    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1581    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1582
1583    void *pointerArgs[] = {
1584    };
1585
1586    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1587                              threadStartTime, threadEndTime,
1588                              &glmsg, pointerArgs);
1589    glContext->traceGLMessage(&glmsg);
1590}
1591
1592void GLTrace_glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices) {
1593    GLMessage glmsg;
1594    GLTraceContext *glContext = getGLTraceContext();
1595
1596    glmsg.set_function(GLMessage::glDrawElements);
1597
1598    // copy argument mode
1599    GLMessage_DataType *arg_mode = glmsg.add_args();
1600    arg_mode->set_isarray(false);
1601    arg_mode->set_type(GLMessage::DataType::ENUM);
1602    arg_mode->add_intvalue((int)mode);
1603
1604    // copy argument count
1605    GLMessage_DataType *arg_count = glmsg.add_args();
1606    arg_count->set_isarray(false);
1607    arg_count->set_type(GLMessage::DataType::INT);
1608    arg_count->add_intvalue(count);
1609
1610    // copy argument type
1611    GLMessage_DataType *arg_type = glmsg.add_args();
1612    arg_type->set_isarray(false);
1613    arg_type->set_type(GLMessage::DataType::ENUM);
1614    arg_type->add_intvalue((int)type);
1615
1616    // copy argument indices
1617    GLMessage_DataType *arg_indices = glmsg.add_args();
1618    arg_indices->set_isarray(false);
1619    arg_indices->set_type(GLMessage::DataType::INT);
1620    arg_indices->add_intvalue((int)indices);
1621
1622    // call function
1623    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1624    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1625    glContext->hooks->gl.glDrawElements(mode, count, type, indices);
1626    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1627    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1628
1629    void *pointerArgs[] = {
1630        (void *) indices,
1631    };
1632
1633    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1634                              threadStartTime, threadEndTime,
1635                              &glmsg, pointerArgs);
1636    glContext->traceGLMessage(&glmsg);
1637}
1638
1639void GLTrace_glEnable(GLenum cap) {
1640    GLMessage glmsg;
1641    GLTraceContext *glContext = getGLTraceContext();
1642
1643    glmsg.set_function(GLMessage::glEnable);
1644
1645    // copy argument cap
1646    GLMessage_DataType *arg_cap = glmsg.add_args();
1647    arg_cap->set_isarray(false);
1648    arg_cap->set_type(GLMessage::DataType::ENUM);
1649    arg_cap->add_intvalue((int)cap);
1650
1651    // call function
1652    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1653    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1654    glContext->hooks->gl.glEnable(cap);
1655    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1656    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1657
1658    void *pointerArgs[] = {
1659    };
1660
1661    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1662                              threadStartTime, threadEndTime,
1663                              &glmsg, pointerArgs);
1664    glContext->traceGLMessage(&glmsg);
1665}
1666
1667void GLTrace_glEnableVertexAttribArray(GLuint index) {
1668    GLMessage glmsg;
1669    GLTraceContext *glContext = getGLTraceContext();
1670
1671    glmsg.set_function(GLMessage::glEnableVertexAttribArray);
1672
1673    // copy argument index
1674    GLMessage_DataType *arg_index = glmsg.add_args();
1675    arg_index->set_isarray(false);
1676    arg_index->set_type(GLMessage::DataType::INT);
1677    arg_index->add_intvalue(index);
1678
1679    // call function
1680    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1681    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1682    glContext->hooks->gl.glEnableVertexAttribArray(index);
1683    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1684    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1685
1686    void *pointerArgs[] = {
1687    };
1688
1689    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1690                              threadStartTime, threadEndTime,
1691                              &glmsg, pointerArgs);
1692    glContext->traceGLMessage(&glmsg);
1693}
1694
1695void GLTrace_glFinish(void) {
1696    GLMessage glmsg;
1697    GLTraceContext *glContext = getGLTraceContext();
1698
1699    glmsg.set_function(GLMessage::glFinish);
1700
1701    // call function
1702    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1703    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1704    glContext->hooks->gl.glFinish();
1705    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1706    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1707
1708    void *pointerArgs[] = {
1709    };
1710
1711    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1712                              threadStartTime, threadEndTime,
1713                              &glmsg, pointerArgs);
1714    glContext->traceGLMessage(&glmsg);
1715}
1716
1717void GLTrace_glFlush(void) {
1718    GLMessage glmsg;
1719    GLTraceContext *glContext = getGLTraceContext();
1720
1721    glmsg.set_function(GLMessage::glFlush);
1722
1723    // call function
1724    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1725    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1726    glContext->hooks->gl.glFlush();
1727    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1728    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1729
1730    void *pointerArgs[] = {
1731    };
1732
1733    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1734                              threadStartTime, threadEndTime,
1735                              &glmsg, pointerArgs);
1736    glContext->traceGLMessage(&glmsg);
1737}
1738
1739void GLTrace_glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) {
1740    GLMessage glmsg;
1741    GLTraceContext *glContext = getGLTraceContext();
1742
1743    glmsg.set_function(GLMessage::glFramebufferRenderbuffer);
1744
1745    // copy argument target
1746    GLMessage_DataType *arg_target = glmsg.add_args();
1747    arg_target->set_isarray(false);
1748    arg_target->set_type(GLMessage::DataType::ENUM);
1749    arg_target->add_intvalue((int)target);
1750
1751    // copy argument attachment
1752    GLMessage_DataType *arg_attachment = glmsg.add_args();
1753    arg_attachment->set_isarray(false);
1754    arg_attachment->set_type(GLMessage::DataType::ENUM);
1755    arg_attachment->add_intvalue((int)attachment);
1756
1757    // copy argument renderbuffertarget
1758    GLMessage_DataType *arg_renderbuffertarget = glmsg.add_args();
1759    arg_renderbuffertarget->set_isarray(false);
1760    arg_renderbuffertarget->set_type(GLMessage::DataType::ENUM);
1761    arg_renderbuffertarget->add_intvalue((int)renderbuffertarget);
1762
1763    // copy argument renderbuffer
1764    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
1765    arg_renderbuffer->set_isarray(false);
1766    arg_renderbuffer->set_type(GLMessage::DataType::INT);
1767    arg_renderbuffer->add_intvalue(renderbuffer);
1768
1769    // call function
1770    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1771    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1772    glContext->hooks->gl.glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);
1773    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1774    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1775
1776    void *pointerArgs[] = {
1777    };
1778
1779    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1780                              threadStartTime, threadEndTime,
1781                              &glmsg, pointerArgs);
1782    glContext->traceGLMessage(&glmsg);
1783}
1784
1785void GLTrace_glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) {
1786    GLMessage glmsg;
1787    GLTraceContext *glContext = getGLTraceContext();
1788
1789    glmsg.set_function(GLMessage::glFramebufferTexture2D);
1790
1791    // copy argument target
1792    GLMessage_DataType *arg_target = glmsg.add_args();
1793    arg_target->set_isarray(false);
1794    arg_target->set_type(GLMessage::DataType::ENUM);
1795    arg_target->add_intvalue((int)target);
1796
1797    // copy argument attachment
1798    GLMessage_DataType *arg_attachment = glmsg.add_args();
1799    arg_attachment->set_isarray(false);
1800    arg_attachment->set_type(GLMessage::DataType::ENUM);
1801    arg_attachment->add_intvalue((int)attachment);
1802
1803    // copy argument textarget
1804    GLMessage_DataType *arg_textarget = glmsg.add_args();
1805    arg_textarget->set_isarray(false);
1806    arg_textarget->set_type(GLMessage::DataType::ENUM);
1807    arg_textarget->add_intvalue((int)textarget);
1808
1809    // copy argument texture
1810    GLMessage_DataType *arg_texture = glmsg.add_args();
1811    arg_texture->set_isarray(false);
1812    arg_texture->set_type(GLMessage::DataType::INT);
1813    arg_texture->add_intvalue(texture);
1814
1815    // copy argument level
1816    GLMessage_DataType *arg_level = glmsg.add_args();
1817    arg_level->set_isarray(false);
1818    arg_level->set_type(GLMessage::DataType::INT);
1819    arg_level->add_intvalue(level);
1820
1821    // call function
1822    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1823    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1824    glContext->hooks->gl.glFramebufferTexture2D(target, attachment, textarget, texture, level);
1825    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1826    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1827
1828    void *pointerArgs[] = {
1829    };
1830
1831    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1832                              threadStartTime, threadEndTime,
1833                              &glmsg, pointerArgs);
1834    glContext->traceGLMessage(&glmsg);
1835}
1836
1837void GLTrace_glFrontFace(GLenum mode) {
1838    GLMessage glmsg;
1839    GLTraceContext *glContext = getGLTraceContext();
1840
1841    glmsg.set_function(GLMessage::glFrontFace);
1842
1843    // copy argument mode
1844    GLMessage_DataType *arg_mode = glmsg.add_args();
1845    arg_mode->set_isarray(false);
1846    arg_mode->set_type(GLMessage::DataType::ENUM);
1847    arg_mode->add_intvalue((int)mode);
1848
1849    // call function
1850    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1851    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1852    glContext->hooks->gl.glFrontFace(mode);
1853    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1854    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1855
1856    void *pointerArgs[] = {
1857    };
1858
1859    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1860                              threadStartTime, threadEndTime,
1861                              &glmsg, pointerArgs);
1862    glContext->traceGLMessage(&glmsg);
1863}
1864
1865void GLTrace_glGenBuffers(GLsizei n, GLuint* buffers) {
1866    GLMessage glmsg;
1867    GLTraceContext *glContext = getGLTraceContext();
1868
1869    glmsg.set_function(GLMessage::glGenBuffers);
1870
1871    // copy argument n
1872    GLMessage_DataType *arg_n = glmsg.add_args();
1873    arg_n->set_isarray(false);
1874    arg_n->set_type(GLMessage::DataType::INT);
1875    arg_n->add_intvalue(n);
1876
1877    // copy argument buffers
1878    GLMessage_DataType *arg_buffers = glmsg.add_args();
1879    arg_buffers->set_isarray(false);
1880    arg_buffers->set_type(GLMessage::DataType::INT);
1881    arg_buffers->add_intvalue((int)buffers);
1882
1883    // call function
1884    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1885    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1886    glContext->hooks->gl.glGenBuffers(n, buffers);
1887    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1888    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1889
1890    void *pointerArgs[] = {
1891        (void *) buffers,
1892    };
1893
1894    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1895                              threadStartTime, threadEndTime,
1896                              &glmsg, pointerArgs);
1897    glContext->traceGLMessage(&glmsg);
1898}
1899
1900void GLTrace_glGenerateMipmap(GLenum target) {
1901    GLMessage glmsg;
1902    GLTraceContext *glContext = getGLTraceContext();
1903
1904    glmsg.set_function(GLMessage::glGenerateMipmap);
1905
1906    // copy argument target
1907    GLMessage_DataType *arg_target = glmsg.add_args();
1908    arg_target->set_isarray(false);
1909    arg_target->set_type(GLMessage::DataType::ENUM);
1910    arg_target->add_intvalue((int)target);
1911
1912    // call function
1913    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1914    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1915    glContext->hooks->gl.glGenerateMipmap(target);
1916    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1917    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1918
1919    void *pointerArgs[] = {
1920    };
1921
1922    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1923                              threadStartTime, threadEndTime,
1924                              &glmsg, pointerArgs);
1925    glContext->traceGLMessage(&glmsg);
1926}
1927
1928void GLTrace_glGenFramebuffers(GLsizei n, GLuint* framebuffers) {
1929    GLMessage glmsg;
1930    GLTraceContext *glContext = getGLTraceContext();
1931
1932    glmsg.set_function(GLMessage::glGenFramebuffers);
1933
1934    // copy argument n
1935    GLMessage_DataType *arg_n = glmsg.add_args();
1936    arg_n->set_isarray(false);
1937    arg_n->set_type(GLMessage::DataType::INT);
1938    arg_n->add_intvalue(n);
1939
1940    // copy argument framebuffers
1941    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
1942    arg_framebuffers->set_isarray(false);
1943    arg_framebuffers->set_type(GLMessage::DataType::INT);
1944    arg_framebuffers->add_intvalue((int)framebuffers);
1945
1946    // call function
1947    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1948    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1949    glContext->hooks->gl.glGenFramebuffers(n, framebuffers);
1950    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1951    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1952
1953    void *pointerArgs[] = {
1954        (void *) framebuffers,
1955    };
1956
1957    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1958                              threadStartTime, threadEndTime,
1959                              &glmsg, pointerArgs);
1960    glContext->traceGLMessage(&glmsg);
1961}
1962
1963void GLTrace_glGenRenderbuffers(GLsizei n, GLuint* renderbuffers) {
1964    GLMessage glmsg;
1965    GLTraceContext *glContext = getGLTraceContext();
1966
1967    glmsg.set_function(GLMessage::glGenRenderbuffers);
1968
1969    // copy argument n
1970    GLMessage_DataType *arg_n = glmsg.add_args();
1971    arg_n->set_isarray(false);
1972    arg_n->set_type(GLMessage::DataType::INT);
1973    arg_n->add_intvalue(n);
1974
1975    // copy argument renderbuffers
1976    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
1977    arg_renderbuffers->set_isarray(false);
1978    arg_renderbuffers->set_type(GLMessage::DataType::INT);
1979    arg_renderbuffers->add_intvalue((int)renderbuffers);
1980
1981    // call function
1982    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1983    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1984    glContext->hooks->gl.glGenRenderbuffers(n, renderbuffers);
1985    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1986    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1987
1988    void *pointerArgs[] = {
1989        (void *) renderbuffers,
1990    };
1991
1992    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1993                              threadStartTime, threadEndTime,
1994                              &glmsg, pointerArgs);
1995    glContext->traceGLMessage(&glmsg);
1996}
1997
1998void GLTrace_glGenTextures(GLsizei n, GLuint* textures) {
1999    GLMessage glmsg;
2000    GLTraceContext *glContext = getGLTraceContext();
2001
2002    glmsg.set_function(GLMessage::glGenTextures);
2003
2004    // copy argument n
2005    GLMessage_DataType *arg_n = glmsg.add_args();
2006    arg_n->set_isarray(false);
2007    arg_n->set_type(GLMessage::DataType::INT);
2008    arg_n->add_intvalue(n);
2009
2010    // copy argument textures
2011    GLMessage_DataType *arg_textures = glmsg.add_args();
2012    arg_textures->set_isarray(false);
2013    arg_textures->set_type(GLMessage::DataType::INT);
2014    arg_textures->add_intvalue((int)textures);
2015
2016    // call function
2017    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2018    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2019    glContext->hooks->gl.glGenTextures(n, textures);
2020    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2021    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2022
2023    void *pointerArgs[] = {
2024        (void *) textures,
2025    };
2026
2027    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2028                              threadStartTime, threadEndTime,
2029                              &glmsg, pointerArgs);
2030    glContext->traceGLMessage(&glmsg);
2031}
2032
2033void GLTrace_glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name) {
2034    GLMessage glmsg;
2035    GLTraceContext *glContext = getGLTraceContext();
2036
2037    glmsg.set_function(GLMessage::glGetActiveAttrib);
2038
2039    // copy argument program
2040    GLMessage_DataType *arg_program = glmsg.add_args();
2041    arg_program->set_isarray(false);
2042    arg_program->set_type(GLMessage::DataType::INT);
2043    arg_program->add_intvalue(program);
2044
2045    // copy argument index
2046    GLMessage_DataType *arg_index = glmsg.add_args();
2047    arg_index->set_isarray(false);
2048    arg_index->set_type(GLMessage::DataType::INT);
2049    arg_index->add_intvalue(index);
2050
2051    // copy argument bufsize
2052    GLMessage_DataType *arg_bufsize = glmsg.add_args();
2053    arg_bufsize->set_isarray(false);
2054    arg_bufsize->set_type(GLMessage::DataType::INT);
2055    arg_bufsize->add_intvalue(bufsize);
2056
2057    // copy argument length
2058    GLMessage_DataType *arg_length = glmsg.add_args();
2059    arg_length->set_isarray(false);
2060    arg_length->set_type(GLMessage::DataType::INT);
2061    arg_length->add_intvalue((int)length);
2062
2063    // copy argument size
2064    GLMessage_DataType *arg_size = glmsg.add_args();
2065    arg_size->set_isarray(false);
2066    arg_size->set_type(GLMessage::DataType::INT);
2067    arg_size->add_intvalue((int)size);
2068
2069    // copy argument type
2070    GLMessage_DataType *arg_type = glmsg.add_args();
2071    arg_type->set_isarray(false);
2072    arg_type->set_type(GLMessage::DataType::INT);
2073    arg_type->add_intvalue((int)type);
2074
2075    // copy argument name
2076    GLMessage_DataType *arg_name = glmsg.add_args();
2077    arg_name->set_isarray(false);
2078    arg_name->set_type(GLMessage::DataType::INT);
2079    arg_name->add_intvalue((int)name);
2080
2081    // call function
2082    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2083    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2084    glContext->hooks->gl.glGetActiveAttrib(program, index, bufsize, length, size, type, name);
2085    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2086    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2087
2088    void *pointerArgs[] = {
2089        (void *) length,
2090        (void *) size,
2091        (void *) type,
2092        (void *) name,
2093    };
2094
2095    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2096                              threadStartTime, threadEndTime,
2097                              &glmsg, pointerArgs);
2098    glContext->traceGLMessage(&glmsg);
2099}
2100
2101void GLTrace_glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name) {
2102    GLMessage glmsg;
2103    GLTraceContext *glContext = getGLTraceContext();
2104
2105    glmsg.set_function(GLMessage::glGetActiveUniform);
2106
2107    // copy argument program
2108    GLMessage_DataType *arg_program = glmsg.add_args();
2109    arg_program->set_isarray(false);
2110    arg_program->set_type(GLMessage::DataType::INT);
2111    arg_program->add_intvalue(program);
2112
2113    // copy argument index
2114    GLMessage_DataType *arg_index = glmsg.add_args();
2115    arg_index->set_isarray(false);
2116    arg_index->set_type(GLMessage::DataType::INT);
2117    arg_index->add_intvalue(index);
2118
2119    // copy argument bufsize
2120    GLMessage_DataType *arg_bufsize = glmsg.add_args();
2121    arg_bufsize->set_isarray(false);
2122    arg_bufsize->set_type(GLMessage::DataType::INT);
2123    arg_bufsize->add_intvalue(bufsize);
2124
2125    // copy argument length
2126    GLMessage_DataType *arg_length = glmsg.add_args();
2127    arg_length->set_isarray(false);
2128    arg_length->set_type(GLMessage::DataType::INT);
2129    arg_length->add_intvalue((int)length);
2130
2131    // copy argument size
2132    GLMessage_DataType *arg_size = glmsg.add_args();
2133    arg_size->set_isarray(false);
2134    arg_size->set_type(GLMessage::DataType::INT);
2135    arg_size->add_intvalue((int)size);
2136
2137    // copy argument type
2138    GLMessage_DataType *arg_type = glmsg.add_args();
2139    arg_type->set_isarray(false);
2140    arg_type->set_type(GLMessage::DataType::INT);
2141    arg_type->add_intvalue((int)type);
2142
2143    // copy argument name
2144    GLMessage_DataType *arg_name = glmsg.add_args();
2145    arg_name->set_isarray(false);
2146    arg_name->set_type(GLMessage::DataType::INT);
2147    arg_name->add_intvalue((int)name);
2148
2149    // call function
2150    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2151    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2152    glContext->hooks->gl.glGetActiveUniform(program, index, bufsize, length, size, type, name);
2153    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2154    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2155
2156    void *pointerArgs[] = {
2157        (void *) length,
2158        (void *) size,
2159        (void *) type,
2160        (void *) name,
2161    };
2162
2163    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2164                              threadStartTime, threadEndTime,
2165                              &glmsg, pointerArgs);
2166    glContext->traceGLMessage(&glmsg);
2167}
2168
2169void GLTrace_glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders) {
2170    GLMessage glmsg;
2171    GLTraceContext *glContext = getGLTraceContext();
2172
2173    glmsg.set_function(GLMessage::glGetAttachedShaders);
2174
2175    // copy argument program
2176    GLMessage_DataType *arg_program = glmsg.add_args();
2177    arg_program->set_isarray(false);
2178    arg_program->set_type(GLMessage::DataType::INT);
2179    arg_program->add_intvalue(program);
2180
2181    // copy argument maxcount
2182    GLMessage_DataType *arg_maxcount = glmsg.add_args();
2183    arg_maxcount->set_isarray(false);
2184    arg_maxcount->set_type(GLMessage::DataType::INT);
2185    arg_maxcount->add_intvalue(maxcount);
2186
2187    // copy argument count
2188    GLMessage_DataType *arg_count = glmsg.add_args();
2189    arg_count->set_isarray(false);
2190    arg_count->set_type(GLMessage::DataType::INT);
2191    arg_count->add_intvalue((int)count);
2192
2193    // copy argument shaders
2194    GLMessage_DataType *arg_shaders = glmsg.add_args();
2195    arg_shaders->set_isarray(false);
2196    arg_shaders->set_type(GLMessage::DataType::INT);
2197    arg_shaders->add_intvalue((int)shaders);
2198
2199    // call function
2200    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2201    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2202    glContext->hooks->gl.glGetAttachedShaders(program, maxcount, count, shaders);
2203    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2204    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2205
2206    void *pointerArgs[] = {
2207        (void *) count,
2208        (void *) shaders,
2209    };
2210
2211    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2212                              threadStartTime, threadEndTime,
2213                              &glmsg, pointerArgs);
2214    glContext->traceGLMessage(&glmsg);
2215}
2216
2217GLint GLTrace_glGetAttribLocation(GLuint program, const GLchar* name) {
2218    GLMessage glmsg;
2219    GLTraceContext *glContext = getGLTraceContext();
2220
2221    glmsg.set_function(GLMessage::glGetAttribLocation);
2222
2223    // copy argument program
2224    GLMessage_DataType *arg_program = glmsg.add_args();
2225    arg_program->set_isarray(false);
2226    arg_program->set_type(GLMessage::DataType::INT);
2227    arg_program->add_intvalue(program);
2228
2229    // copy argument name
2230    GLMessage_DataType *arg_name = glmsg.add_args();
2231    arg_name->set_isarray(false);
2232    arg_name->set_type(GLMessage::DataType::INT);
2233    arg_name->add_intvalue((int)name);
2234
2235    // call function
2236    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2237    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2238    GLint retValue = glContext->hooks->gl.glGetAttribLocation(program, name);
2239    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2240    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2241
2242    // set return value
2243    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
2244    rt->set_isarray(false);
2245    rt->set_type(GLMessage::DataType::INT);
2246    rt->add_intvalue(retValue);
2247
2248    void *pointerArgs[] = {
2249        (void *) name,
2250    };
2251
2252    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2253                              threadStartTime, threadEndTime,
2254                              &glmsg, pointerArgs);
2255    glContext->traceGLMessage(&glmsg);
2256
2257    return retValue;
2258}
2259
2260void GLTrace_glGetBooleanv(GLenum pname, GLboolean* params) {
2261    GLMessage glmsg;
2262    GLTraceContext *glContext = getGLTraceContext();
2263
2264    glmsg.set_function(GLMessage::glGetBooleanv);
2265
2266    // copy argument pname
2267    GLMessage_DataType *arg_pname = glmsg.add_args();
2268    arg_pname->set_isarray(false);
2269    arg_pname->set_type(GLMessage::DataType::ENUM);
2270    arg_pname->add_intvalue((int)pname);
2271
2272    // copy argument params
2273    GLMessage_DataType *arg_params = glmsg.add_args();
2274    arg_params->set_isarray(false);
2275    arg_params->set_type(GLMessage::DataType::INT);
2276    arg_params->add_intvalue((int)params);
2277
2278    // call function
2279    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2280    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2281    glContext->hooks->gl.glGetBooleanv(pname, params);
2282    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2283    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2284
2285    void *pointerArgs[] = {
2286        (void *) params,
2287    };
2288
2289    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2290                              threadStartTime, threadEndTime,
2291                              &glmsg, pointerArgs);
2292    glContext->traceGLMessage(&glmsg);
2293}
2294
2295void GLTrace_glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params) {
2296    GLMessage glmsg;
2297    GLTraceContext *glContext = getGLTraceContext();
2298
2299    glmsg.set_function(GLMessage::glGetBufferParameteriv);
2300
2301    // copy argument target
2302    GLMessage_DataType *arg_target = glmsg.add_args();
2303    arg_target->set_isarray(false);
2304    arg_target->set_type(GLMessage::DataType::ENUM);
2305    arg_target->add_intvalue((int)target);
2306
2307    // copy argument pname
2308    GLMessage_DataType *arg_pname = glmsg.add_args();
2309    arg_pname->set_isarray(false);
2310    arg_pname->set_type(GLMessage::DataType::ENUM);
2311    arg_pname->add_intvalue((int)pname);
2312
2313    // copy argument params
2314    GLMessage_DataType *arg_params = glmsg.add_args();
2315    arg_params->set_isarray(false);
2316    arg_params->set_type(GLMessage::DataType::INT);
2317    arg_params->add_intvalue((int)params);
2318
2319    // call function
2320    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2321    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2322    glContext->hooks->gl.glGetBufferParameteriv(target, pname, params);
2323    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2324    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2325
2326    void *pointerArgs[] = {
2327        (void *) params,
2328    };
2329
2330    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2331                              threadStartTime, threadEndTime,
2332                              &glmsg, pointerArgs);
2333    glContext->traceGLMessage(&glmsg);
2334}
2335
2336GLenum GLTrace_glGetError(void) {
2337    GLMessage glmsg;
2338    GLTraceContext *glContext = getGLTraceContext();
2339
2340    glmsg.set_function(GLMessage::glGetError);
2341
2342    // call function
2343    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2344    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2345    GLenum retValue = glContext->hooks->gl.glGetError();
2346    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2347    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2348
2349    // set return value
2350    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
2351    rt->set_isarray(false);
2352    rt->set_type(GLMessage::DataType::ENUM);
2353    rt->add_intvalue((int)retValue);
2354
2355    void *pointerArgs[] = {
2356    };
2357
2358    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2359                              threadStartTime, threadEndTime,
2360                              &glmsg, pointerArgs);
2361    glContext->traceGLMessage(&glmsg);
2362
2363    return retValue;
2364}
2365
2366void GLTrace_glGetFloatv(GLenum pname, GLfloat* params) {
2367    GLMessage glmsg;
2368    GLTraceContext *glContext = getGLTraceContext();
2369
2370    glmsg.set_function(GLMessage::glGetFloatv);
2371
2372    // copy argument pname
2373    GLMessage_DataType *arg_pname = glmsg.add_args();
2374    arg_pname->set_isarray(false);
2375    arg_pname->set_type(GLMessage::DataType::ENUM);
2376    arg_pname->add_intvalue((int)pname);
2377
2378    // copy argument params
2379    GLMessage_DataType *arg_params = glmsg.add_args();
2380    arg_params->set_isarray(false);
2381    arg_params->set_type(GLMessage::DataType::INT);
2382    arg_params->add_intvalue((int)params);
2383
2384    // call function
2385    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2386    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2387    glContext->hooks->gl.glGetFloatv(pname, params);
2388    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2389    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2390
2391    void *pointerArgs[] = {
2392        (void *) params,
2393    };
2394
2395    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2396                              threadStartTime, threadEndTime,
2397                              &glmsg, pointerArgs);
2398    glContext->traceGLMessage(&glmsg);
2399}
2400
2401void GLTrace_glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params) {
2402    GLMessage glmsg;
2403    GLTraceContext *glContext = getGLTraceContext();
2404
2405    glmsg.set_function(GLMessage::glGetFramebufferAttachmentParameteriv);
2406
2407    // copy argument target
2408    GLMessage_DataType *arg_target = glmsg.add_args();
2409    arg_target->set_isarray(false);
2410    arg_target->set_type(GLMessage::DataType::ENUM);
2411    arg_target->add_intvalue((int)target);
2412
2413    // copy argument attachment
2414    GLMessage_DataType *arg_attachment = glmsg.add_args();
2415    arg_attachment->set_isarray(false);
2416    arg_attachment->set_type(GLMessage::DataType::ENUM);
2417    arg_attachment->add_intvalue((int)attachment);
2418
2419    // copy argument pname
2420    GLMessage_DataType *arg_pname = glmsg.add_args();
2421    arg_pname->set_isarray(false);
2422    arg_pname->set_type(GLMessage::DataType::ENUM);
2423    arg_pname->add_intvalue((int)pname);
2424
2425    // copy argument params
2426    GLMessage_DataType *arg_params = glmsg.add_args();
2427    arg_params->set_isarray(false);
2428    arg_params->set_type(GLMessage::DataType::INT);
2429    arg_params->add_intvalue((int)params);
2430
2431    // call function
2432    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2433    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2434    glContext->hooks->gl.glGetFramebufferAttachmentParameteriv(target, attachment, pname, params);
2435    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2436    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2437
2438    void *pointerArgs[] = {
2439        (void *) params,
2440    };
2441
2442    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2443                              threadStartTime, threadEndTime,
2444                              &glmsg, pointerArgs);
2445    glContext->traceGLMessage(&glmsg);
2446}
2447
2448void GLTrace_glGetIntegerv(GLenum pname, GLint* params) {
2449    GLMessage glmsg;
2450    GLTraceContext *glContext = getGLTraceContext();
2451
2452    glmsg.set_function(GLMessage::glGetIntegerv);
2453
2454    // copy argument pname
2455    GLMessage_DataType *arg_pname = glmsg.add_args();
2456    arg_pname->set_isarray(false);
2457    arg_pname->set_type(GLMessage::DataType::ENUM);
2458    arg_pname->add_intvalue((int)pname);
2459
2460    // copy argument params
2461    GLMessage_DataType *arg_params = glmsg.add_args();
2462    arg_params->set_isarray(false);
2463    arg_params->set_type(GLMessage::DataType::INT);
2464    arg_params->add_intvalue((int)params);
2465
2466    // call function
2467    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2468    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2469    glContext->hooks->gl.glGetIntegerv(pname, params);
2470    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2471    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2472
2473    void *pointerArgs[] = {
2474        (void *) params,
2475    };
2476
2477    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2478                              threadStartTime, threadEndTime,
2479                              &glmsg, pointerArgs);
2480    glContext->traceGLMessage(&glmsg);
2481}
2482
2483void GLTrace_glGetProgramiv(GLuint program, GLenum pname, GLint* params) {
2484    GLMessage glmsg;
2485    GLTraceContext *glContext = getGLTraceContext();
2486
2487    glmsg.set_function(GLMessage::glGetProgramiv);
2488
2489    // copy argument program
2490    GLMessage_DataType *arg_program = glmsg.add_args();
2491    arg_program->set_isarray(false);
2492    arg_program->set_type(GLMessage::DataType::INT);
2493    arg_program->add_intvalue(program);
2494
2495    // copy argument pname
2496    GLMessage_DataType *arg_pname = glmsg.add_args();
2497    arg_pname->set_isarray(false);
2498    arg_pname->set_type(GLMessage::DataType::ENUM);
2499    arg_pname->add_intvalue((int)pname);
2500
2501    // copy argument params
2502    GLMessage_DataType *arg_params = glmsg.add_args();
2503    arg_params->set_isarray(false);
2504    arg_params->set_type(GLMessage::DataType::INT);
2505    arg_params->add_intvalue((int)params);
2506
2507    // call function
2508    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2509    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2510    glContext->hooks->gl.glGetProgramiv(program, pname, params);
2511    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2512    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2513
2514    void *pointerArgs[] = {
2515        (void *) params,
2516    };
2517
2518    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2519                              threadStartTime, threadEndTime,
2520                              &glmsg, pointerArgs);
2521    glContext->traceGLMessage(&glmsg);
2522}
2523
2524void GLTrace_glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog) {
2525    GLMessage glmsg;
2526    GLTraceContext *glContext = getGLTraceContext();
2527
2528    glmsg.set_function(GLMessage::glGetProgramInfoLog);
2529
2530    // copy argument program
2531    GLMessage_DataType *arg_program = glmsg.add_args();
2532    arg_program->set_isarray(false);
2533    arg_program->set_type(GLMessage::DataType::INT);
2534    arg_program->add_intvalue(program);
2535
2536    // copy argument bufsize
2537    GLMessage_DataType *arg_bufsize = glmsg.add_args();
2538    arg_bufsize->set_isarray(false);
2539    arg_bufsize->set_type(GLMessage::DataType::INT);
2540    arg_bufsize->add_intvalue(bufsize);
2541
2542    // copy argument length
2543    GLMessage_DataType *arg_length = glmsg.add_args();
2544    arg_length->set_isarray(false);
2545    arg_length->set_type(GLMessage::DataType::INT);
2546    arg_length->add_intvalue((int)length);
2547
2548    // copy argument infolog
2549    GLMessage_DataType *arg_infolog = glmsg.add_args();
2550    arg_infolog->set_isarray(false);
2551    arg_infolog->set_type(GLMessage::DataType::INT);
2552    arg_infolog->add_intvalue((int)infolog);
2553
2554    // call function
2555    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2556    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2557    glContext->hooks->gl.glGetProgramInfoLog(program, bufsize, length, infolog);
2558    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2559    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2560
2561    void *pointerArgs[] = {
2562        (void *) length,
2563        (void *) infolog,
2564    };
2565
2566    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2567                              threadStartTime, threadEndTime,
2568                              &glmsg, pointerArgs);
2569    glContext->traceGLMessage(&glmsg);
2570}
2571
2572void GLTrace_glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params) {
2573    GLMessage glmsg;
2574    GLTraceContext *glContext = getGLTraceContext();
2575
2576    glmsg.set_function(GLMessage::glGetRenderbufferParameteriv);
2577
2578    // copy argument target
2579    GLMessage_DataType *arg_target = glmsg.add_args();
2580    arg_target->set_isarray(false);
2581    arg_target->set_type(GLMessage::DataType::ENUM);
2582    arg_target->add_intvalue((int)target);
2583
2584    // copy argument pname
2585    GLMessage_DataType *arg_pname = glmsg.add_args();
2586    arg_pname->set_isarray(false);
2587    arg_pname->set_type(GLMessage::DataType::ENUM);
2588    arg_pname->add_intvalue((int)pname);
2589
2590    // copy argument params
2591    GLMessage_DataType *arg_params = glmsg.add_args();
2592    arg_params->set_isarray(false);
2593    arg_params->set_type(GLMessage::DataType::INT);
2594    arg_params->add_intvalue((int)params);
2595
2596    // call function
2597    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2598    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2599    glContext->hooks->gl.glGetRenderbufferParameteriv(target, pname, params);
2600    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2601    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2602
2603    void *pointerArgs[] = {
2604        (void *) params,
2605    };
2606
2607    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2608                              threadStartTime, threadEndTime,
2609                              &glmsg, pointerArgs);
2610    glContext->traceGLMessage(&glmsg);
2611}
2612
2613void GLTrace_glGetShaderiv(GLuint shader, GLenum pname, GLint* params) {
2614    GLMessage glmsg;
2615    GLTraceContext *glContext = getGLTraceContext();
2616
2617    glmsg.set_function(GLMessage::glGetShaderiv);
2618
2619    // copy argument shader
2620    GLMessage_DataType *arg_shader = glmsg.add_args();
2621    arg_shader->set_isarray(false);
2622    arg_shader->set_type(GLMessage::DataType::INT);
2623    arg_shader->add_intvalue(shader);
2624
2625    // copy argument pname
2626    GLMessage_DataType *arg_pname = glmsg.add_args();
2627    arg_pname->set_isarray(false);
2628    arg_pname->set_type(GLMessage::DataType::ENUM);
2629    arg_pname->add_intvalue((int)pname);
2630
2631    // copy argument params
2632    GLMessage_DataType *arg_params = glmsg.add_args();
2633    arg_params->set_isarray(false);
2634    arg_params->set_type(GLMessage::DataType::INT);
2635    arg_params->add_intvalue((int)params);
2636
2637    // call function
2638    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2639    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2640    glContext->hooks->gl.glGetShaderiv(shader, pname, params);
2641    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2642    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2643
2644    void *pointerArgs[] = {
2645        (void *) params,
2646    };
2647
2648    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2649                              threadStartTime, threadEndTime,
2650                              &glmsg, pointerArgs);
2651    glContext->traceGLMessage(&glmsg);
2652}
2653
2654void GLTrace_glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog) {
2655    GLMessage glmsg;
2656    GLTraceContext *glContext = getGLTraceContext();
2657
2658    glmsg.set_function(GLMessage::glGetShaderInfoLog);
2659
2660    // copy argument shader
2661    GLMessage_DataType *arg_shader = glmsg.add_args();
2662    arg_shader->set_isarray(false);
2663    arg_shader->set_type(GLMessage::DataType::INT);
2664    arg_shader->add_intvalue(shader);
2665
2666    // copy argument bufsize
2667    GLMessage_DataType *arg_bufsize = glmsg.add_args();
2668    arg_bufsize->set_isarray(false);
2669    arg_bufsize->set_type(GLMessage::DataType::INT);
2670    arg_bufsize->add_intvalue(bufsize);
2671
2672    // copy argument length
2673    GLMessage_DataType *arg_length = glmsg.add_args();
2674    arg_length->set_isarray(false);
2675    arg_length->set_type(GLMessage::DataType::INT);
2676    arg_length->add_intvalue((int)length);
2677
2678    // copy argument infolog
2679    GLMessage_DataType *arg_infolog = glmsg.add_args();
2680    arg_infolog->set_isarray(false);
2681    arg_infolog->set_type(GLMessage::DataType::INT);
2682    arg_infolog->add_intvalue((int)infolog);
2683
2684    // call function
2685    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2686    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2687    glContext->hooks->gl.glGetShaderInfoLog(shader, bufsize, length, infolog);
2688    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2689    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2690
2691    void *pointerArgs[] = {
2692        (void *) length,
2693        (void *) infolog,
2694    };
2695
2696    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2697                              threadStartTime, threadEndTime,
2698                              &glmsg, pointerArgs);
2699    glContext->traceGLMessage(&glmsg);
2700}
2701
2702void GLTrace_glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) {
2703    GLMessage glmsg;
2704    GLTraceContext *glContext = getGLTraceContext();
2705
2706    glmsg.set_function(GLMessage::glGetShaderPrecisionFormat);
2707
2708    // copy argument shadertype
2709    GLMessage_DataType *arg_shadertype = glmsg.add_args();
2710    arg_shadertype->set_isarray(false);
2711    arg_shadertype->set_type(GLMessage::DataType::ENUM);
2712    arg_shadertype->add_intvalue((int)shadertype);
2713
2714    // copy argument precisiontype
2715    GLMessage_DataType *arg_precisiontype = glmsg.add_args();
2716    arg_precisiontype->set_isarray(false);
2717    arg_precisiontype->set_type(GLMessage::DataType::ENUM);
2718    arg_precisiontype->add_intvalue((int)precisiontype);
2719
2720    // copy argument range
2721    GLMessage_DataType *arg_range = glmsg.add_args();
2722    arg_range->set_isarray(false);
2723    arg_range->set_type(GLMessage::DataType::INT);
2724    arg_range->add_intvalue((int)range);
2725
2726    // copy argument precision
2727    GLMessage_DataType *arg_precision = glmsg.add_args();
2728    arg_precision->set_isarray(false);
2729    arg_precision->set_type(GLMessage::DataType::INT);
2730    arg_precision->add_intvalue((int)precision);
2731
2732    // call function
2733    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2734    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2735    glContext->hooks->gl.glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision);
2736    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2737    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2738
2739    void *pointerArgs[] = {
2740        (void *) range,
2741        (void *) precision,
2742    };
2743
2744    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2745                              threadStartTime, threadEndTime,
2746                              &glmsg, pointerArgs);
2747    glContext->traceGLMessage(&glmsg);
2748}
2749
2750void GLTrace_glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source) {
2751    GLMessage glmsg;
2752    GLTraceContext *glContext = getGLTraceContext();
2753
2754    glmsg.set_function(GLMessage::glGetShaderSource);
2755
2756    // copy argument shader
2757    GLMessage_DataType *arg_shader = glmsg.add_args();
2758    arg_shader->set_isarray(false);
2759    arg_shader->set_type(GLMessage::DataType::INT);
2760    arg_shader->add_intvalue(shader);
2761
2762    // copy argument bufsize
2763    GLMessage_DataType *arg_bufsize = glmsg.add_args();
2764    arg_bufsize->set_isarray(false);
2765    arg_bufsize->set_type(GLMessage::DataType::INT);
2766    arg_bufsize->add_intvalue(bufsize);
2767
2768    // copy argument length
2769    GLMessage_DataType *arg_length = glmsg.add_args();
2770    arg_length->set_isarray(false);
2771    arg_length->set_type(GLMessage::DataType::INT);
2772    arg_length->add_intvalue((int)length);
2773
2774    // copy argument source
2775    GLMessage_DataType *arg_source = glmsg.add_args();
2776    arg_source->set_isarray(false);
2777    arg_source->set_type(GLMessage::DataType::INT);
2778    arg_source->add_intvalue((int)source);
2779
2780    // call function
2781    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2782    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2783    glContext->hooks->gl.glGetShaderSource(shader, bufsize, length, source);
2784    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2785    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2786
2787    void *pointerArgs[] = {
2788        (void *) length,
2789        (void *) source,
2790    };
2791
2792    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2793                              threadStartTime, threadEndTime,
2794                              &glmsg, pointerArgs);
2795    glContext->traceGLMessage(&glmsg);
2796}
2797
2798const GLubyte* GLTrace_glGetString(GLenum name) {
2799    GLMessage glmsg;
2800    GLTraceContext *glContext = getGLTraceContext();
2801
2802    glmsg.set_function(GLMessage::glGetString);
2803
2804    // copy argument name
2805    GLMessage_DataType *arg_name = glmsg.add_args();
2806    arg_name->set_isarray(false);
2807    arg_name->set_type(GLMessage::DataType::ENUM);
2808    arg_name->add_intvalue((int)name);
2809
2810    // call function
2811    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2812    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2813    const GLubyte* retValue = glContext->hooks->gl.glGetString(name);
2814    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2815    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2816
2817    // set return value
2818    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
2819    rt->set_isarray(false);
2820    rt->set_type(GLMessage::DataType::INT);
2821    rt->add_intvalue((int)retValue);
2822
2823    void *pointerArgs[] = {
2824        (void *) retValue,
2825    };
2826
2827    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2828                              threadStartTime, threadEndTime,
2829                              &glmsg, pointerArgs);
2830    glContext->traceGLMessage(&glmsg);
2831
2832    return retValue;
2833}
2834
2835void GLTrace_glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params) {
2836    GLMessage glmsg;
2837    GLTraceContext *glContext = getGLTraceContext();
2838
2839    glmsg.set_function(GLMessage::glGetTexParameterfv);
2840
2841    // copy argument target
2842    GLMessage_DataType *arg_target = glmsg.add_args();
2843    arg_target->set_isarray(false);
2844    arg_target->set_type(GLMessage::DataType::ENUM);
2845    arg_target->add_intvalue((int)target);
2846
2847    // copy argument pname
2848    GLMessage_DataType *arg_pname = glmsg.add_args();
2849    arg_pname->set_isarray(false);
2850    arg_pname->set_type(GLMessage::DataType::ENUM);
2851    arg_pname->add_intvalue((int)pname);
2852
2853    // copy argument params
2854    GLMessage_DataType *arg_params = glmsg.add_args();
2855    arg_params->set_isarray(false);
2856    arg_params->set_type(GLMessage::DataType::INT);
2857    arg_params->add_intvalue((int)params);
2858
2859    // call function
2860    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2861    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2862    glContext->hooks->gl.glGetTexParameterfv(target, pname, params);
2863    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2864    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2865
2866    void *pointerArgs[] = {
2867        (void *) params,
2868    };
2869
2870    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2871                              threadStartTime, threadEndTime,
2872                              &glmsg, pointerArgs);
2873    glContext->traceGLMessage(&glmsg);
2874}
2875
2876void GLTrace_glGetTexParameteriv(GLenum target, GLenum pname, GLint* params) {
2877    GLMessage glmsg;
2878    GLTraceContext *glContext = getGLTraceContext();
2879
2880    glmsg.set_function(GLMessage::glGetTexParameteriv);
2881
2882    // copy argument target
2883    GLMessage_DataType *arg_target = glmsg.add_args();
2884    arg_target->set_isarray(false);
2885    arg_target->set_type(GLMessage::DataType::ENUM);
2886    arg_target->add_intvalue((int)target);
2887
2888    // copy argument pname
2889    GLMessage_DataType *arg_pname = glmsg.add_args();
2890    arg_pname->set_isarray(false);
2891    arg_pname->set_type(GLMessage::DataType::ENUM);
2892    arg_pname->add_intvalue((int)pname);
2893
2894    // copy argument params
2895    GLMessage_DataType *arg_params = glmsg.add_args();
2896    arg_params->set_isarray(false);
2897    arg_params->set_type(GLMessage::DataType::INT);
2898    arg_params->add_intvalue((int)params);
2899
2900    // call function
2901    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2902    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2903    glContext->hooks->gl.glGetTexParameteriv(target, pname, params);
2904    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2905    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2906
2907    void *pointerArgs[] = {
2908        (void *) params,
2909    };
2910
2911    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2912                              threadStartTime, threadEndTime,
2913                              &glmsg, pointerArgs);
2914    glContext->traceGLMessage(&glmsg);
2915}
2916
2917void GLTrace_glGetUniformfv(GLuint program, GLint location, GLfloat* params) {
2918    GLMessage glmsg;
2919    GLTraceContext *glContext = getGLTraceContext();
2920
2921    glmsg.set_function(GLMessage::glGetUniformfv);
2922
2923    // copy argument program
2924    GLMessage_DataType *arg_program = glmsg.add_args();
2925    arg_program->set_isarray(false);
2926    arg_program->set_type(GLMessage::DataType::INT);
2927    arg_program->add_intvalue(program);
2928
2929    // copy argument location
2930    GLMessage_DataType *arg_location = glmsg.add_args();
2931    arg_location->set_isarray(false);
2932    arg_location->set_type(GLMessage::DataType::INT);
2933    arg_location->add_intvalue(location);
2934
2935    // copy argument params
2936    GLMessage_DataType *arg_params = glmsg.add_args();
2937    arg_params->set_isarray(false);
2938    arg_params->set_type(GLMessage::DataType::INT);
2939    arg_params->add_intvalue((int)params);
2940
2941    // call function
2942    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2943    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2944    glContext->hooks->gl.glGetUniformfv(program, location, params);
2945    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2946    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2947
2948    void *pointerArgs[] = {
2949        (void *) params,
2950    };
2951
2952    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2953                              threadStartTime, threadEndTime,
2954                              &glmsg, pointerArgs);
2955    glContext->traceGLMessage(&glmsg);
2956}
2957
2958void GLTrace_glGetUniformiv(GLuint program, GLint location, GLint* params) {
2959    GLMessage glmsg;
2960    GLTraceContext *glContext = getGLTraceContext();
2961
2962    glmsg.set_function(GLMessage::glGetUniformiv);
2963
2964    // copy argument program
2965    GLMessage_DataType *arg_program = glmsg.add_args();
2966    arg_program->set_isarray(false);
2967    arg_program->set_type(GLMessage::DataType::INT);
2968    arg_program->add_intvalue(program);
2969
2970    // copy argument location
2971    GLMessage_DataType *arg_location = glmsg.add_args();
2972    arg_location->set_isarray(false);
2973    arg_location->set_type(GLMessage::DataType::INT);
2974    arg_location->add_intvalue(location);
2975
2976    // copy argument params
2977    GLMessage_DataType *arg_params = glmsg.add_args();
2978    arg_params->set_isarray(false);
2979    arg_params->set_type(GLMessage::DataType::INT);
2980    arg_params->add_intvalue((int)params);
2981
2982    // call function
2983    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2984    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2985    glContext->hooks->gl.glGetUniformiv(program, location, params);
2986    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2987    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2988
2989    void *pointerArgs[] = {
2990        (void *) params,
2991    };
2992
2993    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2994                              threadStartTime, threadEndTime,
2995                              &glmsg, pointerArgs);
2996    glContext->traceGLMessage(&glmsg);
2997}
2998
2999GLint GLTrace_glGetUniformLocation(GLuint program, const GLchar* name) {
3000    GLMessage glmsg;
3001    GLTraceContext *glContext = getGLTraceContext();
3002
3003    glmsg.set_function(GLMessage::glGetUniformLocation);
3004
3005    // copy argument program
3006    GLMessage_DataType *arg_program = glmsg.add_args();
3007    arg_program->set_isarray(false);
3008    arg_program->set_type(GLMessage::DataType::INT);
3009    arg_program->add_intvalue(program);
3010
3011    // copy argument name
3012    GLMessage_DataType *arg_name = glmsg.add_args();
3013    arg_name->set_isarray(false);
3014    arg_name->set_type(GLMessage::DataType::INT);
3015    arg_name->add_intvalue((int)name);
3016
3017    // call function
3018    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3019    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3020    GLint retValue = glContext->hooks->gl.glGetUniformLocation(program, name);
3021    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3022    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3023
3024    // set return value
3025    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
3026    rt->set_isarray(false);
3027    rt->set_type(GLMessage::DataType::INT);
3028    rt->add_intvalue(retValue);
3029
3030    void *pointerArgs[] = {
3031        (void *) name,
3032    };
3033
3034    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3035                              threadStartTime, threadEndTime,
3036                              &glmsg, pointerArgs);
3037    glContext->traceGLMessage(&glmsg);
3038
3039    return retValue;
3040}
3041
3042void GLTrace_glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params) {
3043    GLMessage glmsg;
3044    GLTraceContext *glContext = getGLTraceContext();
3045
3046    glmsg.set_function(GLMessage::glGetVertexAttribfv);
3047
3048    // copy argument index
3049    GLMessage_DataType *arg_index = glmsg.add_args();
3050    arg_index->set_isarray(false);
3051    arg_index->set_type(GLMessage::DataType::INT);
3052    arg_index->add_intvalue(index);
3053
3054    // copy argument pname
3055    GLMessage_DataType *arg_pname = glmsg.add_args();
3056    arg_pname->set_isarray(false);
3057    arg_pname->set_type(GLMessage::DataType::ENUM);
3058    arg_pname->add_intvalue((int)pname);
3059
3060    // copy argument params
3061    GLMessage_DataType *arg_params = glmsg.add_args();
3062    arg_params->set_isarray(false);
3063    arg_params->set_type(GLMessage::DataType::INT);
3064    arg_params->add_intvalue((int)params);
3065
3066    // call function
3067    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3068    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3069    glContext->hooks->gl.glGetVertexAttribfv(index, pname, params);
3070    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3071    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3072
3073    void *pointerArgs[] = {
3074        (void *) params,
3075    };
3076
3077    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3078                              threadStartTime, threadEndTime,
3079                              &glmsg, pointerArgs);
3080    glContext->traceGLMessage(&glmsg);
3081}
3082
3083void GLTrace_glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params) {
3084    GLMessage glmsg;
3085    GLTraceContext *glContext = getGLTraceContext();
3086
3087    glmsg.set_function(GLMessage::glGetVertexAttribiv);
3088
3089    // copy argument index
3090    GLMessage_DataType *arg_index = glmsg.add_args();
3091    arg_index->set_isarray(false);
3092    arg_index->set_type(GLMessage::DataType::INT);
3093    arg_index->add_intvalue(index);
3094
3095    // copy argument pname
3096    GLMessage_DataType *arg_pname = glmsg.add_args();
3097    arg_pname->set_isarray(false);
3098    arg_pname->set_type(GLMessage::DataType::ENUM);
3099    arg_pname->add_intvalue((int)pname);
3100
3101    // copy argument params
3102    GLMessage_DataType *arg_params = glmsg.add_args();
3103    arg_params->set_isarray(false);
3104    arg_params->set_type(GLMessage::DataType::INT);
3105    arg_params->add_intvalue((int)params);
3106
3107    // call function
3108    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3109    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3110    glContext->hooks->gl.glGetVertexAttribiv(index, pname, params);
3111    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3112    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3113
3114    void *pointerArgs[] = {
3115        (void *) params,
3116    };
3117
3118    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3119                              threadStartTime, threadEndTime,
3120                              &glmsg, pointerArgs);
3121    glContext->traceGLMessage(&glmsg);
3122}
3123
3124void GLTrace_glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** pointer) {
3125    GLMessage glmsg;
3126    GLTraceContext *glContext = getGLTraceContext();
3127
3128    glmsg.set_function(GLMessage::glGetVertexAttribPointerv);
3129
3130    // copy argument index
3131    GLMessage_DataType *arg_index = glmsg.add_args();
3132    arg_index->set_isarray(false);
3133    arg_index->set_type(GLMessage::DataType::INT);
3134    arg_index->add_intvalue(index);
3135
3136    // copy argument pname
3137    GLMessage_DataType *arg_pname = glmsg.add_args();
3138    arg_pname->set_isarray(false);
3139    arg_pname->set_type(GLMessage::DataType::ENUM);
3140    arg_pname->add_intvalue((int)pname);
3141
3142    // copy argument pointer
3143    GLMessage_DataType *arg_pointer = glmsg.add_args();
3144    arg_pointer->set_isarray(false);
3145    arg_pointer->set_type(GLMessage::DataType::INT);
3146    arg_pointer->add_intvalue((int)pointer);
3147
3148    // call function
3149    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3150    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3151    glContext->hooks->gl.glGetVertexAttribPointerv(index, pname, pointer);
3152    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3153    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3154
3155    void *pointerArgs[] = {
3156        (void *) pointer,
3157    };
3158
3159    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3160                              threadStartTime, threadEndTime,
3161                              &glmsg, pointerArgs);
3162    glContext->traceGLMessage(&glmsg);
3163}
3164
3165void GLTrace_glHint(GLenum target, GLenum mode) {
3166    GLMessage glmsg;
3167    GLTraceContext *glContext = getGLTraceContext();
3168
3169    glmsg.set_function(GLMessage::glHint);
3170
3171    // copy argument target
3172    GLMessage_DataType *arg_target = glmsg.add_args();
3173    arg_target->set_isarray(false);
3174    arg_target->set_type(GLMessage::DataType::ENUM);
3175    arg_target->add_intvalue((int)target);
3176
3177    // copy argument mode
3178    GLMessage_DataType *arg_mode = glmsg.add_args();
3179    arg_mode->set_isarray(false);
3180    arg_mode->set_type(GLMessage::DataType::ENUM);
3181    arg_mode->add_intvalue((int)mode);
3182
3183    // call function
3184    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3185    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3186    glContext->hooks->gl.glHint(target, mode);
3187    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3188    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3189
3190    void *pointerArgs[] = {
3191    };
3192
3193    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3194                              threadStartTime, threadEndTime,
3195                              &glmsg, pointerArgs);
3196    glContext->traceGLMessage(&glmsg);
3197}
3198
3199GLboolean GLTrace_glIsBuffer(GLuint buffer) {
3200    GLMessage glmsg;
3201    GLTraceContext *glContext = getGLTraceContext();
3202
3203    glmsg.set_function(GLMessage::glIsBuffer);
3204
3205    // copy argument buffer
3206    GLMessage_DataType *arg_buffer = glmsg.add_args();
3207    arg_buffer->set_isarray(false);
3208    arg_buffer->set_type(GLMessage::DataType::INT);
3209    arg_buffer->add_intvalue(buffer);
3210
3211    // call function
3212    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3213    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3214    GLboolean retValue = glContext->hooks->gl.glIsBuffer(buffer);
3215    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3216    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3217
3218    // set return value
3219    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
3220    rt->set_isarray(false);
3221    rt->set_type(GLMessage::DataType::BOOL);
3222    rt->add_boolvalue(retValue);
3223
3224    void *pointerArgs[] = {
3225    };
3226
3227    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3228                              threadStartTime, threadEndTime,
3229                              &glmsg, pointerArgs);
3230    glContext->traceGLMessage(&glmsg);
3231
3232    return retValue;
3233}
3234
3235GLboolean GLTrace_glIsEnabled(GLenum cap) {
3236    GLMessage glmsg;
3237    GLTraceContext *glContext = getGLTraceContext();
3238
3239    glmsg.set_function(GLMessage::glIsEnabled);
3240
3241    // copy argument cap
3242    GLMessage_DataType *arg_cap = glmsg.add_args();
3243    arg_cap->set_isarray(false);
3244    arg_cap->set_type(GLMessage::DataType::ENUM);
3245    arg_cap->add_intvalue((int)cap);
3246
3247    // call function
3248    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3249    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3250    GLboolean retValue = glContext->hooks->gl.glIsEnabled(cap);
3251    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3252    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3253
3254    // set return value
3255    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
3256    rt->set_isarray(false);
3257    rt->set_type(GLMessage::DataType::BOOL);
3258    rt->add_boolvalue(retValue);
3259
3260    void *pointerArgs[] = {
3261    };
3262
3263    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3264                              threadStartTime, threadEndTime,
3265                              &glmsg, pointerArgs);
3266    glContext->traceGLMessage(&glmsg);
3267
3268    return retValue;
3269}
3270
3271GLboolean GLTrace_glIsFramebuffer(GLuint framebuffer) {
3272    GLMessage glmsg;
3273    GLTraceContext *glContext = getGLTraceContext();
3274
3275    glmsg.set_function(GLMessage::glIsFramebuffer);
3276
3277    // copy argument framebuffer
3278    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
3279    arg_framebuffer->set_isarray(false);
3280    arg_framebuffer->set_type(GLMessage::DataType::INT);
3281    arg_framebuffer->add_intvalue(framebuffer);
3282
3283    // call function
3284    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3285    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3286    GLboolean retValue = glContext->hooks->gl.glIsFramebuffer(framebuffer);
3287    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3288    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3289
3290    // set return value
3291    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
3292    rt->set_isarray(false);
3293    rt->set_type(GLMessage::DataType::BOOL);
3294    rt->add_boolvalue(retValue);
3295
3296    void *pointerArgs[] = {
3297    };
3298
3299    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3300                              threadStartTime, threadEndTime,
3301                              &glmsg, pointerArgs);
3302    glContext->traceGLMessage(&glmsg);
3303
3304    return retValue;
3305}
3306
3307GLboolean GLTrace_glIsProgram(GLuint program) {
3308    GLMessage glmsg;
3309    GLTraceContext *glContext = getGLTraceContext();
3310
3311    glmsg.set_function(GLMessage::glIsProgram);
3312
3313    // copy argument program
3314    GLMessage_DataType *arg_program = glmsg.add_args();
3315    arg_program->set_isarray(false);
3316    arg_program->set_type(GLMessage::DataType::INT);
3317    arg_program->add_intvalue(program);
3318
3319    // call function
3320    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3321    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3322    GLboolean retValue = glContext->hooks->gl.glIsProgram(program);
3323    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3324    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3325
3326    // set return value
3327    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
3328    rt->set_isarray(false);
3329    rt->set_type(GLMessage::DataType::BOOL);
3330    rt->add_boolvalue(retValue);
3331
3332    void *pointerArgs[] = {
3333    };
3334
3335    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3336                              threadStartTime, threadEndTime,
3337                              &glmsg, pointerArgs);
3338    glContext->traceGLMessage(&glmsg);
3339
3340    return retValue;
3341}
3342
3343GLboolean GLTrace_glIsRenderbuffer(GLuint renderbuffer) {
3344    GLMessage glmsg;
3345    GLTraceContext *glContext = getGLTraceContext();
3346
3347    glmsg.set_function(GLMessage::glIsRenderbuffer);
3348
3349    // copy argument renderbuffer
3350    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
3351    arg_renderbuffer->set_isarray(false);
3352    arg_renderbuffer->set_type(GLMessage::DataType::INT);
3353    arg_renderbuffer->add_intvalue(renderbuffer);
3354
3355    // call function
3356    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3357    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3358    GLboolean retValue = glContext->hooks->gl.glIsRenderbuffer(renderbuffer);
3359    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3360    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3361
3362    // set return value
3363    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
3364    rt->set_isarray(false);
3365    rt->set_type(GLMessage::DataType::BOOL);
3366    rt->add_boolvalue(retValue);
3367
3368    void *pointerArgs[] = {
3369    };
3370
3371    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3372                              threadStartTime, threadEndTime,
3373                              &glmsg, pointerArgs);
3374    glContext->traceGLMessage(&glmsg);
3375
3376    return retValue;
3377}
3378
3379GLboolean GLTrace_glIsShader(GLuint shader) {
3380    GLMessage glmsg;
3381    GLTraceContext *glContext = getGLTraceContext();
3382
3383    glmsg.set_function(GLMessage::glIsShader);
3384
3385    // copy argument shader
3386    GLMessage_DataType *arg_shader = glmsg.add_args();
3387    arg_shader->set_isarray(false);
3388    arg_shader->set_type(GLMessage::DataType::INT);
3389    arg_shader->add_intvalue(shader);
3390
3391    // call function
3392    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3393    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3394    GLboolean retValue = glContext->hooks->gl.glIsShader(shader);
3395    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3396    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3397
3398    // set return value
3399    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
3400    rt->set_isarray(false);
3401    rt->set_type(GLMessage::DataType::BOOL);
3402    rt->add_boolvalue(retValue);
3403
3404    void *pointerArgs[] = {
3405    };
3406
3407    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3408                              threadStartTime, threadEndTime,
3409                              &glmsg, pointerArgs);
3410    glContext->traceGLMessage(&glmsg);
3411
3412    return retValue;
3413}
3414
3415GLboolean GLTrace_glIsTexture(GLuint texture) {
3416    GLMessage glmsg;
3417    GLTraceContext *glContext = getGLTraceContext();
3418
3419    glmsg.set_function(GLMessage::glIsTexture);
3420
3421    // copy argument texture
3422    GLMessage_DataType *arg_texture = glmsg.add_args();
3423    arg_texture->set_isarray(false);
3424    arg_texture->set_type(GLMessage::DataType::INT);
3425    arg_texture->add_intvalue(texture);
3426
3427    // call function
3428    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3429    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3430    GLboolean retValue = glContext->hooks->gl.glIsTexture(texture);
3431    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3432    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3433
3434    // set return value
3435    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
3436    rt->set_isarray(false);
3437    rt->set_type(GLMessage::DataType::BOOL);
3438    rt->add_boolvalue(retValue);
3439
3440    void *pointerArgs[] = {
3441    };
3442
3443    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3444                              threadStartTime, threadEndTime,
3445                              &glmsg, pointerArgs);
3446    glContext->traceGLMessage(&glmsg);
3447
3448    return retValue;
3449}
3450
3451void GLTrace_glLineWidth(GLfloat width) {
3452    GLMessage glmsg;
3453    GLTraceContext *glContext = getGLTraceContext();
3454
3455    glmsg.set_function(GLMessage::glLineWidth);
3456
3457    // copy argument width
3458    GLMessage_DataType *arg_width = glmsg.add_args();
3459    arg_width->set_isarray(false);
3460    arg_width->set_type(GLMessage::DataType::FLOAT);
3461    arg_width->add_floatvalue(width);
3462
3463    // call function
3464    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3465    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3466    glContext->hooks->gl.glLineWidth(width);
3467    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3468    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3469
3470    void *pointerArgs[] = {
3471    };
3472
3473    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3474                              threadStartTime, threadEndTime,
3475                              &glmsg, pointerArgs);
3476    glContext->traceGLMessage(&glmsg);
3477}
3478
3479void GLTrace_glLinkProgram(GLuint program) {
3480    GLMessage glmsg;
3481    GLTraceContext *glContext = getGLTraceContext();
3482
3483    glmsg.set_function(GLMessage::glLinkProgram);
3484
3485    // copy argument program
3486    GLMessage_DataType *arg_program = glmsg.add_args();
3487    arg_program->set_isarray(false);
3488    arg_program->set_type(GLMessage::DataType::INT);
3489    arg_program->add_intvalue(program);
3490
3491    // call function
3492    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3493    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3494    glContext->hooks->gl.glLinkProgram(program);
3495    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3496    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3497
3498    void *pointerArgs[] = {
3499    };
3500
3501    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3502                              threadStartTime, threadEndTime,
3503                              &glmsg, pointerArgs);
3504    glContext->traceGLMessage(&glmsg);
3505}
3506
3507void GLTrace_glPixelStorei(GLenum pname, GLint param) {
3508    GLMessage glmsg;
3509    GLTraceContext *glContext = getGLTraceContext();
3510
3511    glmsg.set_function(GLMessage::glPixelStorei);
3512
3513    // copy argument pname
3514    GLMessage_DataType *arg_pname = glmsg.add_args();
3515    arg_pname->set_isarray(false);
3516    arg_pname->set_type(GLMessage::DataType::ENUM);
3517    arg_pname->add_intvalue((int)pname);
3518
3519    // copy argument param
3520    GLMessage_DataType *arg_param = glmsg.add_args();
3521    arg_param->set_isarray(false);
3522    arg_param->set_type(GLMessage::DataType::INT);
3523    arg_param->add_intvalue(param);
3524
3525    // call function
3526    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3527    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3528    glContext->hooks->gl.glPixelStorei(pname, param);
3529    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3530    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3531
3532    void *pointerArgs[] = {
3533    };
3534
3535    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3536                              threadStartTime, threadEndTime,
3537                              &glmsg, pointerArgs);
3538    glContext->traceGLMessage(&glmsg);
3539}
3540
3541void GLTrace_glPolygonOffset(GLfloat factor, GLfloat units) {
3542    GLMessage glmsg;
3543    GLTraceContext *glContext = getGLTraceContext();
3544
3545    glmsg.set_function(GLMessage::glPolygonOffset);
3546
3547    // copy argument factor
3548    GLMessage_DataType *arg_factor = glmsg.add_args();
3549    arg_factor->set_isarray(false);
3550    arg_factor->set_type(GLMessage::DataType::FLOAT);
3551    arg_factor->add_floatvalue(factor);
3552
3553    // copy argument units
3554    GLMessage_DataType *arg_units = glmsg.add_args();
3555    arg_units->set_isarray(false);
3556    arg_units->set_type(GLMessage::DataType::FLOAT);
3557    arg_units->add_floatvalue(units);
3558
3559    // call function
3560    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3561    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3562    glContext->hooks->gl.glPolygonOffset(factor, units);
3563    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3564    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3565
3566    void *pointerArgs[] = {
3567    };
3568
3569    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3570                              threadStartTime, threadEndTime,
3571                              &glmsg, pointerArgs);
3572    glContext->traceGLMessage(&glmsg);
3573}
3574
3575void GLTrace_glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels) {
3576    GLMessage glmsg;
3577    GLTraceContext *glContext = getGLTraceContext();
3578
3579    glmsg.set_function(GLMessage::glReadPixels);
3580
3581    // copy argument x
3582    GLMessage_DataType *arg_x = glmsg.add_args();
3583    arg_x->set_isarray(false);
3584    arg_x->set_type(GLMessage::DataType::INT);
3585    arg_x->add_intvalue(x);
3586
3587    // copy argument y
3588    GLMessage_DataType *arg_y = glmsg.add_args();
3589    arg_y->set_isarray(false);
3590    arg_y->set_type(GLMessage::DataType::INT);
3591    arg_y->add_intvalue(y);
3592
3593    // copy argument width
3594    GLMessage_DataType *arg_width = glmsg.add_args();
3595    arg_width->set_isarray(false);
3596    arg_width->set_type(GLMessage::DataType::INT);
3597    arg_width->add_intvalue(width);
3598
3599    // copy argument height
3600    GLMessage_DataType *arg_height = glmsg.add_args();
3601    arg_height->set_isarray(false);
3602    arg_height->set_type(GLMessage::DataType::INT);
3603    arg_height->add_intvalue(height);
3604
3605    // copy argument format
3606    GLMessage_DataType *arg_format = glmsg.add_args();
3607    arg_format->set_isarray(false);
3608    arg_format->set_type(GLMessage::DataType::ENUM);
3609    arg_format->add_intvalue((int)format);
3610
3611    // copy argument type
3612    GLMessage_DataType *arg_type = glmsg.add_args();
3613    arg_type->set_isarray(false);
3614    arg_type->set_type(GLMessage::DataType::ENUM);
3615    arg_type->add_intvalue((int)type);
3616
3617    // copy argument pixels
3618    GLMessage_DataType *arg_pixels = glmsg.add_args();
3619    arg_pixels->set_isarray(false);
3620    arg_pixels->set_type(GLMessage::DataType::INT);
3621    arg_pixels->add_intvalue((int)pixels);
3622
3623    // call function
3624    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3625    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3626    glContext->hooks->gl.glReadPixels(x, y, width, height, format, type, pixels);
3627    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3628    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3629
3630    void *pointerArgs[] = {
3631        (void *) pixels,
3632    };
3633
3634    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3635                              threadStartTime, threadEndTime,
3636                              &glmsg, pointerArgs);
3637    glContext->traceGLMessage(&glmsg);
3638}
3639
3640void GLTrace_glReleaseShaderCompiler(void) {
3641    GLMessage glmsg;
3642    GLTraceContext *glContext = getGLTraceContext();
3643
3644    glmsg.set_function(GLMessage::glReleaseShaderCompiler);
3645
3646    // call function
3647    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3648    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3649    glContext->hooks->gl.glReleaseShaderCompiler();
3650    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3651    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3652
3653    void *pointerArgs[] = {
3654    };
3655
3656    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3657                              threadStartTime, threadEndTime,
3658                              &glmsg, pointerArgs);
3659    glContext->traceGLMessage(&glmsg);
3660}
3661
3662void GLTrace_glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) {
3663    GLMessage glmsg;
3664    GLTraceContext *glContext = getGLTraceContext();
3665
3666    glmsg.set_function(GLMessage::glRenderbufferStorage);
3667
3668    // copy argument target
3669    GLMessage_DataType *arg_target = glmsg.add_args();
3670    arg_target->set_isarray(false);
3671    arg_target->set_type(GLMessage::DataType::ENUM);
3672    arg_target->add_intvalue((int)target);
3673
3674    // copy argument internalformat
3675    GLMessage_DataType *arg_internalformat = glmsg.add_args();
3676    arg_internalformat->set_isarray(false);
3677    arg_internalformat->set_type(GLMessage::DataType::ENUM);
3678    arg_internalformat->add_intvalue((int)internalformat);
3679
3680    // copy argument width
3681    GLMessage_DataType *arg_width = glmsg.add_args();
3682    arg_width->set_isarray(false);
3683    arg_width->set_type(GLMessage::DataType::INT);
3684    arg_width->add_intvalue(width);
3685
3686    // copy argument height
3687    GLMessage_DataType *arg_height = glmsg.add_args();
3688    arg_height->set_isarray(false);
3689    arg_height->set_type(GLMessage::DataType::INT);
3690    arg_height->add_intvalue(height);
3691
3692    // call function
3693    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3694    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3695    glContext->hooks->gl.glRenderbufferStorage(target, internalformat, width, height);
3696    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3697    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3698
3699    void *pointerArgs[] = {
3700    };
3701
3702    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3703                              threadStartTime, threadEndTime,
3704                              &glmsg, pointerArgs);
3705    glContext->traceGLMessage(&glmsg);
3706}
3707
3708void GLTrace_glSampleCoverage(GLclampf value, GLboolean invert) {
3709    GLMessage glmsg;
3710    GLTraceContext *glContext = getGLTraceContext();
3711
3712    glmsg.set_function(GLMessage::glSampleCoverage);
3713
3714    // copy argument value
3715    GLMessage_DataType *arg_value = glmsg.add_args();
3716    arg_value->set_isarray(false);
3717    arg_value->set_type(GLMessage::DataType::FLOAT);
3718    arg_value->add_floatvalue(value);
3719
3720    // copy argument invert
3721    GLMessage_DataType *arg_invert = glmsg.add_args();
3722    arg_invert->set_isarray(false);
3723    arg_invert->set_type(GLMessage::DataType::BOOL);
3724    arg_invert->add_boolvalue(invert);
3725
3726    // call function
3727    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3728    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3729    glContext->hooks->gl.glSampleCoverage(value, invert);
3730    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3731    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3732
3733    void *pointerArgs[] = {
3734    };
3735
3736    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3737                              threadStartTime, threadEndTime,
3738                              &glmsg, pointerArgs);
3739    glContext->traceGLMessage(&glmsg);
3740}
3741
3742void GLTrace_glScissor(GLint x, GLint y, GLsizei width, GLsizei height) {
3743    GLMessage glmsg;
3744    GLTraceContext *glContext = getGLTraceContext();
3745
3746    glmsg.set_function(GLMessage::glScissor);
3747
3748    // copy argument x
3749    GLMessage_DataType *arg_x = glmsg.add_args();
3750    arg_x->set_isarray(false);
3751    arg_x->set_type(GLMessage::DataType::INT);
3752    arg_x->add_intvalue(x);
3753
3754    // copy argument y
3755    GLMessage_DataType *arg_y = glmsg.add_args();
3756    arg_y->set_isarray(false);
3757    arg_y->set_type(GLMessage::DataType::INT);
3758    arg_y->add_intvalue(y);
3759
3760    // copy argument width
3761    GLMessage_DataType *arg_width = glmsg.add_args();
3762    arg_width->set_isarray(false);
3763    arg_width->set_type(GLMessage::DataType::INT);
3764    arg_width->add_intvalue(width);
3765
3766    // copy argument height
3767    GLMessage_DataType *arg_height = glmsg.add_args();
3768    arg_height->set_isarray(false);
3769    arg_height->set_type(GLMessage::DataType::INT);
3770    arg_height->add_intvalue(height);
3771
3772    // call function
3773    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3774    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3775    glContext->hooks->gl.glScissor(x, y, width, height);
3776    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3777    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3778
3779    void *pointerArgs[] = {
3780    };
3781
3782    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3783                              threadStartTime, threadEndTime,
3784                              &glmsg, pointerArgs);
3785    glContext->traceGLMessage(&glmsg);
3786}
3787
3788void GLTrace_glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length) {
3789    GLMessage glmsg;
3790    GLTraceContext *glContext = getGLTraceContext();
3791
3792    glmsg.set_function(GLMessage::glShaderBinary);
3793
3794    // copy argument n
3795    GLMessage_DataType *arg_n = glmsg.add_args();
3796    arg_n->set_isarray(false);
3797    arg_n->set_type(GLMessage::DataType::INT);
3798    arg_n->add_intvalue(n);
3799
3800    // copy argument shaders
3801    GLMessage_DataType *arg_shaders = glmsg.add_args();
3802    arg_shaders->set_isarray(false);
3803    arg_shaders->set_type(GLMessage::DataType::INT);
3804    arg_shaders->add_intvalue((int)shaders);
3805
3806    // copy argument binaryformat
3807    GLMessage_DataType *arg_binaryformat = glmsg.add_args();
3808    arg_binaryformat->set_isarray(false);
3809    arg_binaryformat->set_type(GLMessage::DataType::ENUM);
3810    arg_binaryformat->add_intvalue((int)binaryformat);
3811
3812    // copy argument binary
3813    GLMessage_DataType *arg_binary = glmsg.add_args();
3814    arg_binary->set_isarray(false);
3815    arg_binary->set_type(GLMessage::DataType::INT);
3816    arg_binary->add_intvalue((int)binary);
3817
3818    // copy argument length
3819    GLMessage_DataType *arg_length = glmsg.add_args();
3820    arg_length->set_isarray(false);
3821    arg_length->set_type(GLMessage::DataType::INT);
3822    arg_length->add_intvalue(length);
3823
3824    // call function
3825    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3826    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3827    glContext->hooks->gl.glShaderBinary(n, shaders, binaryformat, binary, length);
3828    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3829    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3830
3831    void *pointerArgs[] = {
3832        (void *) shaders,
3833        (void *) binary,
3834    };
3835
3836    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3837                              threadStartTime, threadEndTime,
3838                              &glmsg, pointerArgs);
3839    glContext->traceGLMessage(&glmsg);
3840}
3841
3842void GLTrace_glShaderSource(GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length) {
3843    GLMessage glmsg;
3844    GLTraceContext *glContext = getGLTraceContext();
3845
3846    glmsg.set_function(GLMessage::glShaderSource);
3847
3848    // copy argument shader
3849    GLMessage_DataType *arg_shader = glmsg.add_args();
3850    arg_shader->set_isarray(false);
3851    arg_shader->set_type(GLMessage::DataType::INT);
3852    arg_shader->add_intvalue(shader);
3853
3854    // copy argument count
3855    GLMessage_DataType *arg_count = glmsg.add_args();
3856    arg_count->set_isarray(false);
3857    arg_count->set_type(GLMessage::DataType::INT);
3858    arg_count->add_intvalue(count);
3859
3860    // copy argument string
3861    GLMessage_DataType *arg_string = glmsg.add_args();
3862    arg_string->set_isarray(false);
3863    arg_string->set_type(GLMessage::DataType::INT);
3864    arg_string->add_intvalue((int)string);
3865
3866    // copy argument length
3867    GLMessage_DataType *arg_length = glmsg.add_args();
3868    arg_length->set_isarray(false);
3869    arg_length->set_type(GLMessage::DataType::INT);
3870    arg_length->add_intvalue((int)length);
3871
3872    // call function
3873    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3874    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3875    glContext->hooks->gl.glShaderSource(shader, count, string, length);
3876    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3877    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3878
3879    void *pointerArgs[] = {
3880        (void *) string,
3881        (void *) length,
3882    };
3883
3884    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3885                              threadStartTime, threadEndTime,
3886                              &glmsg, pointerArgs);
3887    glContext->traceGLMessage(&glmsg);
3888}
3889
3890void GLTrace_glStencilFunc(GLenum func, GLint ref, GLuint mask) {
3891    GLMessage glmsg;
3892    GLTraceContext *glContext = getGLTraceContext();
3893
3894    glmsg.set_function(GLMessage::glStencilFunc);
3895
3896    // copy argument func
3897    GLMessage_DataType *arg_func = glmsg.add_args();
3898    arg_func->set_isarray(false);
3899    arg_func->set_type(GLMessage::DataType::ENUM);
3900    arg_func->add_intvalue((int)func);
3901
3902    // copy argument ref
3903    GLMessage_DataType *arg_ref = glmsg.add_args();
3904    arg_ref->set_isarray(false);
3905    arg_ref->set_type(GLMessage::DataType::INT);
3906    arg_ref->add_intvalue(ref);
3907
3908    // copy argument mask
3909    GLMessage_DataType *arg_mask = glmsg.add_args();
3910    arg_mask->set_isarray(false);
3911    arg_mask->set_type(GLMessage::DataType::INT);
3912    arg_mask->add_intvalue(mask);
3913
3914    // call function
3915    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3916    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3917    glContext->hooks->gl.glStencilFunc(func, ref, mask);
3918    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3919    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3920
3921    void *pointerArgs[] = {
3922    };
3923
3924    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3925                              threadStartTime, threadEndTime,
3926                              &glmsg, pointerArgs);
3927    glContext->traceGLMessage(&glmsg);
3928}
3929
3930void GLTrace_glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) {
3931    GLMessage glmsg;
3932    GLTraceContext *glContext = getGLTraceContext();
3933
3934    glmsg.set_function(GLMessage::glStencilFuncSeparate);
3935
3936    // copy argument face
3937    GLMessage_DataType *arg_face = glmsg.add_args();
3938    arg_face->set_isarray(false);
3939    arg_face->set_type(GLMessage::DataType::ENUM);
3940    arg_face->add_intvalue((int)face);
3941
3942    // copy argument func
3943    GLMessage_DataType *arg_func = glmsg.add_args();
3944    arg_func->set_isarray(false);
3945    arg_func->set_type(GLMessage::DataType::ENUM);
3946    arg_func->add_intvalue((int)func);
3947
3948    // copy argument ref
3949    GLMessage_DataType *arg_ref = glmsg.add_args();
3950    arg_ref->set_isarray(false);
3951    arg_ref->set_type(GLMessage::DataType::INT);
3952    arg_ref->add_intvalue(ref);
3953
3954    // copy argument mask
3955    GLMessage_DataType *arg_mask = glmsg.add_args();
3956    arg_mask->set_isarray(false);
3957    arg_mask->set_type(GLMessage::DataType::INT);
3958    arg_mask->add_intvalue(mask);
3959
3960    // call function
3961    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3962    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3963    glContext->hooks->gl.glStencilFuncSeparate(face, func, ref, mask);
3964    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3965    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3966
3967    void *pointerArgs[] = {
3968    };
3969
3970    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3971                              threadStartTime, threadEndTime,
3972                              &glmsg, pointerArgs);
3973    glContext->traceGLMessage(&glmsg);
3974}
3975
3976void GLTrace_glStencilMask(GLuint mask) {
3977    GLMessage glmsg;
3978    GLTraceContext *glContext = getGLTraceContext();
3979
3980    glmsg.set_function(GLMessage::glStencilMask);
3981
3982    // copy argument mask
3983    GLMessage_DataType *arg_mask = glmsg.add_args();
3984    arg_mask->set_isarray(false);
3985    arg_mask->set_type(GLMessage::DataType::INT);
3986    arg_mask->add_intvalue(mask);
3987
3988    // call function
3989    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3990    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3991    glContext->hooks->gl.glStencilMask(mask);
3992    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3993    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3994
3995    void *pointerArgs[] = {
3996    };
3997
3998    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3999                              threadStartTime, threadEndTime,
4000                              &glmsg, pointerArgs);
4001    glContext->traceGLMessage(&glmsg);
4002}
4003
4004void GLTrace_glStencilMaskSeparate(GLenum face, GLuint mask) {
4005    GLMessage glmsg;
4006    GLTraceContext *glContext = getGLTraceContext();
4007
4008    glmsg.set_function(GLMessage::glStencilMaskSeparate);
4009
4010    // copy argument face
4011    GLMessage_DataType *arg_face = glmsg.add_args();
4012    arg_face->set_isarray(false);
4013    arg_face->set_type(GLMessage::DataType::ENUM);
4014    arg_face->add_intvalue((int)face);
4015
4016    // copy argument mask
4017    GLMessage_DataType *arg_mask = glmsg.add_args();
4018    arg_mask->set_isarray(false);
4019    arg_mask->set_type(GLMessage::DataType::INT);
4020    arg_mask->add_intvalue(mask);
4021
4022    // call function
4023    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4024    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4025    glContext->hooks->gl.glStencilMaskSeparate(face, mask);
4026    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4027    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4028
4029    void *pointerArgs[] = {
4030    };
4031
4032    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4033                              threadStartTime, threadEndTime,
4034                              &glmsg, pointerArgs);
4035    glContext->traceGLMessage(&glmsg);
4036}
4037
4038void GLTrace_glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) {
4039    GLMessage glmsg;
4040    GLTraceContext *glContext = getGLTraceContext();
4041
4042    glmsg.set_function(GLMessage::glStencilOp);
4043
4044    // copy argument fail
4045    GLMessage_DataType *arg_fail = glmsg.add_args();
4046    arg_fail->set_isarray(false);
4047    arg_fail->set_type(GLMessage::DataType::ENUM);
4048    arg_fail->add_intvalue((int)fail);
4049
4050    // copy argument zfail
4051    GLMessage_DataType *arg_zfail = glmsg.add_args();
4052    arg_zfail->set_isarray(false);
4053    arg_zfail->set_type(GLMessage::DataType::ENUM);
4054    arg_zfail->add_intvalue((int)zfail);
4055
4056    // copy argument zpass
4057    GLMessage_DataType *arg_zpass = glmsg.add_args();
4058    arg_zpass->set_isarray(false);
4059    arg_zpass->set_type(GLMessage::DataType::ENUM);
4060    arg_zpass->add_intvalue((int)zpass);
4061
4062    // call function
4063    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4064    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4065    glContext->hooks->gl.glStencilOp(fail, zfail, zpass);
4066    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4067    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4068
4069    void *pointerArgs[] = {
4070    };
4071
4072    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4073                              threadStartTime, threadEndTime,
4074                              &glmsg, pointerArgs);
4075    glContext->traceGLMessage(&glmsg);
4076}
4077
4078void GLTrace_glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass) {
4079    GLMessage glmsg;
4080    GLTraceContext *glContext = getGLTraceContext();
4081
4082    glmsg.set_function(GLMessage::glStencilOpSeparate);
4083
4084    // copy argument face
4085    GLMessage_DataType *arg_face = glmsg.add_args();
4086    arg_face->set_isarray(false);
4087    arg_face->set_type(GLMessage::DataType::ENUM);
4088    arg_face->add_intvalue((int)face);
4089
4090    // copy argument fail
4091    GLMessage_DataType *arg_fail = glmsg.add_args();
4092    arg_fail->set_isarray(false);
4093    arg_fail->set_type(GLMessage::DataType::ENUM);
4094    arg_fail->add_intvalue((int)fail);
4095
4096    // copy argument zfail
4097    GLMessage_DataType *arg_zfail = glmsg.add_args();
4098    arg_zfail->set_isarray(false);
4099    arg_zfail->set_type(GLMessage::DataType::ENUM);
4100    arg_zfail->add_intvalue((int)zfail);
4101
4102    // copy argument zpass
4103    GLMessage_DataType *arg_zpass = glmsg.add_args();
4104    arg_zpass->set_isarray(false);
4105    arg_zpass->set_type(GLMessage::DataType::ENUM);
4106    arg_zpass->add_intvalue((int)zpass);
4107
4108    // call function
4109    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4110    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4111    glContext->hooks->gl.glStencilOpSeparate(face, fail, zfail, zpass);
4112    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4113    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4114
4115    void *pointerArgs[] = {
4116    };
4117
4118    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4119                              threadStartTime, threadEndTime,
4120                              &glmsg, pointerArgs);
4121    glContext->traceGLMessage(&glmsg);
4122}
4123
4124void GLTrace_glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels) {
4125    GLMessage glmsg;
4126    GLTraceContext *glContext = getGLTraceContext();
4127
4128    glmsg.set_function(GLMessage::glTexImage2D);
4129
4130    // copy argument target
4131    GLMessage_DataType *arg_target = glmsg.add_args();
4132    arg_target->set_isarray(false);
4133    arg_target->set_type(GLMessage::DataType::ENUM);
4134    arg_target->add_intvalue((int)target);
4135
4136    // copy argument level
4137    GLMessage_DataType *arg_level = glmsg.add_args();
4138    arg_level->set_isarray(false);
4139    arg_level->set_type(GLMessage::DataType::INT);
4140    arg_level->add_intvalue(level);
4141
4142    // copy argument internalformat
4143    GLMessage_DataType *arg_internalformat = glmsg.add_args();
4144    arg_internalformat->set_isarray(false);
4145    arg_internalformat->set_type(GLMessage::DataType::INT);
4146    arg_internalformat->add_intvalue(internalformat);
4147
4148    // copy argument width
4149    GLMessage_DataType *arg_width = glmsg.add_args();
4150    arg_width->set_isarray(false);
4151    arg_width->set_type(GLMessage::DataType::INT);
4152    arg_width->add_intvalue(width);
4153
4154    // copy argument height
4155    GLMessage_DataType *arg_height = glmsg.add_args();
4156    arg_height->set_isarray(false);
4157    arg_height->set_type(GLMessage::DataType::INT);
4158    arg_height->add_intvalue(height);
4159
4160    // copy argument border
4161    GLMessage_DataType *arg_border = glmsg.add_args();
4162    arg_border->set_isarray(false);
4163    arg_border->set_type(GLMessage::DataType::INT);
4164    arg_border->add_intvalue(border);
4165
4166    // copy argument format
4167    GLMessage_DataType *arg_format = glmsg.add_args();
4168    arg_format->set_isarray(false);
4169    arg_format->set_type(GLMessage::DataType::ENUM);
4170    arg_format->add_intvalue((int)format);
4171
4172    // copy argument type
4173    GLMessage_DataType *arg_type = glmsg.add_args();
4174    arg_type->set_isarray(false);
4175    arg_type->set_type(GLMessage::DataType::ENUM);
4176    arg_type->add_intvalue((int)type);
4177
4178    // copy argument pixels
4179    GLMessage_DataType *arg_pixels = glmsg.add_args();
4180    arg_pixels->set_isarray(false);
4181    arg_pixels->set_type(GLMessage::DataType::INT);
4182    arg_pixels->add_intvalue((int)pixels);
4183
4184    // call function
4185    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4186    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4187    glContext->hooks->gl.glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels);
4188    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4189    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4190
4191    void *pointerArgs[] = {
4192        (void *) pixels,
4193    };
4194
4195    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4196                              threadStartTime, threadEndTime,
4197                              &glmsg, pointerArgs);
4198    glContext->traceGLMessage(&glmsg);
4199}
4200
4201void GLTrace_glTexParameterf(GLenum target, GLenum pname, GLfloat param) {
4202    GLMessage glmsg;
4203    GLTraceContext *glContext = getGLTraceContext();
4204
4205    glmsg.set_function(GLMessage::glTexParameterf);
4206
4207    // copy argument target
4208    GLMessage_DataType *arg_target = glmsg.add_args();
4209    arg_target->set_isarray(false);
4210    arg_target->set_type(GLMessage::DataType::ENUM);
4211    arg_target->add_intvalue((int)target);
4212
4213    // copy argument pname
4214    GLMessage_DataType *arg_pname = glmsg.add_args();
4215    arg_pname->set_isarray(false);
4216    arg_pname->set_type(GLMessage::DataType::ENUM);
4217    arg_pname->add_intvalue((int)pname);
4218
4219    // copy argument param
4220    GLMessage_DataType *arg_param = glmsg.add_args();
4221    arg_param->set_isarray(false);
4222    arg_param->set_type(GLMessage::DataType::FLOAT);
4223    arg_param->add_floatvalue(param);
4224
4225    // call function
4226    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4227    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4228    glContext->hooks->gl.glTexParameterf(target, pname, param);
4229    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4230    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4231
4232    void *pointerArgs[] = {
4233    };
4234
4235    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4236                              threadStartTime, threadEndTime,
4237                              &glmsg, pointerArgs);
4238    glContext->traceGLMessage(&glmsg);
4239}
4240
4241void GLTrace_glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params) {
4242    GLMessage glmsg;
4243    GLTraceContext *glContext = getGLTraceContext();
4244
4245    glmsg.set_function(GLMessage::glTexParameterfv);
4246
4247    // copy argument target
4248    GLMessage_DataType *arg_target = glmsg.add_args();
4249    arg_target->set_isarray(false);
4250    arg_target->set_type(GLMessage::DataType::ENUM);
4251    arg_target->add_intvalue((int)target);
4252
4253    // copy argument pname
4254    GLMessage_DataType *arg_pname = glmsg.add_args();
4255    arg_pname->set_isarray(false);
4256    arg_pname->set_type(GLMessage::DataType::ENUM);
4257    arg_pname->add_intvalue((int)pname);
4258
4259    // copy argument params
4260    GLMessage_DataType *arg_params = glmsg.add_args();
4261    arg_params->set_isarray(false);
4262    arg_params->set_type(GLMessage::DataType::INT);
4263    arg_params->add_intvalue((int)params);
4264
4265    // call function
4266    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4267    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4268    glContext->hooks->gl.glTexParameterfv(target, pname, params);
4269    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4270    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4271
4272    void *pointerArgs[] = {
4273        (void *) params,
4274    };
4275
4276    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4277                              threadStartTime, threadEndTime,
4278                              &glmsg, pointerArgs);
4279    glContext->traceGLMessage(&glmsg);
4280}
4281
4282void GLTrace_glTexParameteri(GLenum target, GLenum pname, GLint param) {
4283    GLMessage glmsg;
4284    GLTraceContext *glContext = getGLTraceContext();
4285
4286    glmsg.set_function(GLMessage::glTexParameteri);
4287
4288    // copy argument target
4289    GLMessage_DataType *arg_target = glmsg.add_args();
4290    arg_target->set_isarray(false);
4291    arg_target->set_type(GLMessage::DataType::ENUM);
4292    arg_target->add_intvalue((int)target);
4293
4294    // copy argument pname
4295    GLMessage_DataType *arg_pname = glmsg.add_args();
4296    arg_pname->set_isarray(false);
4297    arg_pname->set_type(GLMessage::DataType::ENUM);
4298    arg_pname->add_intvalue((int)pname);
4299
4300    // copy argument param
4301    GLMessage_DataType *arg_param = glmsg.add_args();
4302    arg_param->set_isarray(false);
4303    arg_param->set_type(GLMessage::DataType::INT);
4304    arg_param->add_intvalue(param);
4305
4306    // call function
4307    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4308    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4309    glContext->hooks->gl.glTexParameteri(target, pname, param);
4310    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4311    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4312
4313    void *pointerArgs[] = {
4314    };
4315
4316    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4317                              threadStartTime, threadEndTime,
4318                              &glmsg, pointerArgs);
4319    glContext->traceGLMessage(&glmsg);
4320}
4321
4322void GLTrace_glTexParameteriv(GLenum target, GLenum pname, const GLint* params) {
4323    GLMessage glmsg;
4324    GLTraceContext *glContext = getGLTraceContext();
4325
4326    glmsg.set_function(GLMessage::glTexParameteriv);
4327
4328    // copy argument target
4329    GLMessage_DataType *arg_target = glmsg.add_args();
4330    arg_target->set_isarray(false);
4331    arg_target->set_type(GLMessage::DataType::ENUM);
4332    arg_target->add_intvalue((int)target);
4333
4334    // copy argument pname
4335    GLMessage_DataType *arg_pname = glmsg.add_args();
4336    arg_pname->set_isarray(false);
4337    arg_pname->set_type(GLMessage::DataType::ENUM);
4338    arg_pname->add_intvalue((int)pname);
4339
4340    // copy argument params
4341    GLMessage_DataType *arg_params = glmsg.add_args();
4342    arg_params->set_isarray(false);
4343    arg_params->set_type(GLMessage::DataType::INT);
4344    arg_params->add_intvalue((int)params);
4345
4346    // call function
4347    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4348    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4349    glContext->hooks->gl.glTexParameteriv(target, pname, params);
4350    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4351    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4352
4353    void *pointerArgs[] = {
4354        (void *) params,
4355    };
4356
4357    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4358                              threadStartTime, threadEndTime,
4359                              &glmsg, pointerArgs);
4360    glContext->traceGLMessage(&glmsg);
4361}
4362
4363void GLTrace_glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels) {
4364    GLMessage glmsg;
4365    GLTraceContext *glContext = getGLTraceContext();
4366
4367    glmsg.set_function(GLMessage::glTexSubImage2D);
4368
4369    // copy argument target
4370    GLMessage_DataType *arg_target = glmsg.add_args();
4371    arg_target->set_isarray(false);
4372    arg_target->set_type(GLMessage::DataType::ENUM);
4373    arg_target->add_intvalue((int)target);
4374
4375    // copy argument level
4376    GLMessage_DataType *arg_level = glmsg.add_args();
4377    arg_level->set_isarray(false);
4378    arg_level->set_type(GLMessage::DataType::INT);
4379    arg_level->add_intvalue(level);
4380
4381    // copy argument xoffset
4382    GLMessage_DataType *arg_xoffset = glmsg.add_args();
4383    arg_xoffset->set_isarray(false);
4384    arg_xoffset->set_type(GLMessage::DataType::INT);
4385    arg_xoffset->add_intvalue(xoffset);
4386
4387    // copy argument yoffset
4388    GLMessage_DataType *arg_yoffset = glmsg.add_args();
4389    arg_yoffset->set_isarray(false);
4390    arg_yoffset->set_type(GLMessage::DataType::INT);
4391    arg_yoffset->add_intvalue(yoffset);
4392
4393    // copy argument width
4394    GLMessage_DataType *arg_width = glmsg.add_args();
4395    arg_width->set_isarray(false);
4396    arg_width->set_type(GLMessage::DataType::INT);
4397    arg_width->add_intvalue(width);
4398
4399    // copy argument height
4400    GLMessage_DataType *arg_height = glmsg.add_args();
4401    arg_height->set_isarray(false);
4402    arg_height->set_type(GLMessage::DataType::INT);
4403    arg_height->add_intvalue(height);
4404
4405    // copy argument format
4406    GLMessage_DataType *arg_format = glmsg.add_args();
4407    arg_format->set_isarray(false);
4408    arg_format->set_type(GLMessage::DataType::ENUM);
4409    arg_format->add_intvalue((int)format);
4410
4411    // copy argument type
4412    GLMessage_DataType *arg_type = glmsg.add_args();
4413    arg_type->set_isarray(false);
4414    arg_type->set_type(GLMessage::DataType::ENUM);
4415    arg_type->add_intvalue((int)type);
4416
4417    // copy argument pixels
4418    GLMessage_DataType *arg_pixels = glmsg.add_args();
4419    arg_pixels->set_isarray(false);
4420    arg_pixels->set_type(GLMessage::DataType::INT);
4421    arg_pixels->add_intvalue((int)pixels);
4422
4423    // call function
4424    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4425    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4426    glContext->hooks->gl.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
4427    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4428    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4429
4430    void *pointerArgs[] = {
4431        (void *) pixels,
4432    };
4433
4434    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4435                              threadStartTime, threadEndTime,
4436                              &glmsg, pointerArgs);
4437    glContext->traceGLMessage(&glmsg);
4438}
4439
4440void GLTrace_glUniform1f(GLint location, GLfloat x) {
4441    GLMessage glmsg;
4442    GLTraceContext *glContext = getGLTraceContext();
4443
4444    glmsg.set_function(GLMessage::glUniform1f);
4445
4446    // copy argument location
4447    GLMessage_DataType *arg_location = glmsg.add_args();
4448    arg_location->set_isarray(false);
4449    arg_location->set_type(GLMessage::DataType::INT);
4450    arg_location->add_intvalue(location);
4451
4452    // copy argument x
4453    GLMessage_DataType *arg_x = glmsg.add_args();
4454    arg_x->set_isarray(false);
4455    arg_x->set_type(GLMessage::DataType::FLOAT);
4456    arg_x->add_floatvalue(x);
4457
4458    // call function
4459    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4460    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4461    glContext->hooks->gl.glUniform1f(location, x);
4462    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4463    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4464
4465    void *pointerArgs[] = {
4466    };
4467
4468    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4469                              threadStartTime, threadEndTime,
4470                              &glmsg, pointerArgs);
4471    glContext->traceGLMessage(&glmsg);
4472}
4473
4474void GLTrace_glUniform1fv(GLint location, GLsizei count, const GLfloat* v) {
4475    GLMessage glmsg;
4476    GLTraceContext *glContext = getGLTraceContext();
4477
4478    glmsg.set_function(GLMessage::glUniform1fv);
4479
4480    // copy argument location
4481    GLMessage_DataType *arg_location = glmsg.add_args();
4482    arg_location->set_isarray(false);
4483    arg_location->set_type(GLMessage::DataType::INT);
4484    arg_location->add_intvalue(location);
4485
4486    // copy argument count
4487    GLMessage_DataType *arg_count = glmsg.add_args();
4488    arg_count->set_isarray(false);
4489    arg_count->set_type(GLMessage::DataType::INT);
4490    arg_count->add_intvalue(count);
4491
4492    // copy argument v
4493    GLMessage_DataType *arg_v = glmsg.add_args();
4494    arg_v->set_isarray(false);
4495    arg_v->set_type(GLMessage::DataType::INT);
4496    arg_v->add_intvalue((int)v);
4497
4498    // call function
4499    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4500    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4501    glContext->hooks->gl.glUniform1fv(location, count, v);
4502    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4503    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4504
4505    void *pointerArgs[] = {
4506        (void *) v,
4507    };
4508
4509    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4510                              threadStartTime, threadEndTime,
4511                              &glmsg, pointerArgs);
4512    glContext->traceGLMessage(&glmsg);
4513}
4514
4515void GLTrace_glUniform1i(GLint location, GLint x) {
4516    GLMessage glmsg;
4517    GLTraceContext *glContext = getGLTraceContext();
4518
4519    glmsg.set_function(GLMessage::glUniform1i);
4520
4521    // copy argument location
4522    GLMessage_DataType *arg_location = glmsg.add_args();
4523    arg_location->set_isarray(false);
4524    arg_location->set_type(GLMessage::DataType::INT);
4525    arg_location->add_intvalue(location);
4526
4527    // copy argument x
4528    GLMessage_DataType *arg_x = glmsg.add_args();
4529    arg_x->set_isarray(false);
4530    arg_x->set_type(GLMessage::DataType::INT);
4531    arg_x->add_intvalue(x);
4532
4533    // call function
4534    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4535    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4536    glContext->hooks->gl.glUniform1i(location, x);
4537    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4538    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4539
4540    void *pointerArgs[] = {
4541    };
4542
4543    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4544                              threadStartTime, threadEndTime,
4545                              &glmsg, pointerArgs);
4546    glContext->traceGLMessage(&glmsg);
4547}
4548
4549void GLTrace_glUniform1iv(GLint location, GLsizei count, const GLint* v) {
4550    GLMessage glmsg;
4551    GLTraceContext *glContext = getGLTraceContext();
4552
4553    glmsg.set_function(GLMessage::glUniform1iv);
4554
4555    // copy argument location
4556    GLMessage_DataType *arg_location = glmsg.add_args();
4557    arg_location->set_isarray(false);
4558    arg_location->set_type(GLMessage::DataType::INT);
4559    arg_location->add_intvalue(location);
4560
4561    // copy argument count
4562    GLMessage_DataType *arg_count = glmsg.add_args();
4563    arg_count->set_isarray(false);
4564    arg_count->set_type(GLMessage::DataType::INT);
4565    arg_count->add_intvalue(count);
4566
4567    // copy argument v
4568    GLMessage_DataType *arg_v = glmsg.add_args();
4569    arg_v->set_isarray(false);
4570    arg_v->set_type(GLMessage::DataType::INT);
4571    arg_v->add_intvalue((int)v);
4572
4573    // call function
4574    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4575    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4576    glContext->hooks->gl.glUniform1iv(location, count, v);
4577    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4578    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4579
4580    void *pointerArgs[] = {
4581        (void *) v,
4582    };
4583
4584    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4585                              threadStartTime, threadEndTime,
4586                              &glmsg, pointerArgs);
4587    glContext->traceGLMessage(&glmsg);
4588}
4589
4590void GLTrace_glUniform2f(GLint location, GLfloat x, GLfloat y) {
4591    GLMessage glmsg;
4592    GLTraceContext *glContext = getGLTraceContext();
4593
4594    glmsg.set_function(GLMessage::glUniform2f);
4595
4596    // copy argument location
4597    GLMessage_DataType *arg_location = glmsg.add_args();
4598    arg_location->set_isarray(false);
4599    arg_location->set_type(GLMessage::DataType::INT);
4600    arg_location->add_intvalue(location);
4601
4602    // copy argument x
4603    GLMessage_DataType *arg_x = glmsg.add_args();
4604    arg_x->set_isarray(false);
4605    arg_x->set_type(GLMessage::DataType::FLOAT);
4606    arg_x->add_floatvalue(x);
4607
4608    // copy argument y
4609    GLMessage_DataType *arg_y = glmsg.add_args();
4610    arg_y->set_isarray(false);
4611    arg_y->set_type(GLMessage::DataType::FLOAT);
4612    arg_y->add_floatvalue(y);
4613
4614    // call function
4615    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4616    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4617    glContext->hooks->gl.glUniform2f(location, x, y);
4618    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4619    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4620
4621    void *pointerArgs[] = {
4622    };
4623
4624    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4625                              threadStartTime, threadEndTime,
4626                              &glmsg, pointerArgs);
4627    glContext->traceGLMessage(&glmsg);
4628}
4629
4630void GLTrace_glUniform2fv(GLint location, GLsizei count, const GLfloat* v) {
4631    GLMessage glmsg;
4632    GLTraceContext *glContext = getGLTraceContext();
4633
4634    glmsg.set_function(GLMessage::glUniform2fv);
4635
4636    // copy argument location
4637    GLMessage_DataType *arg_location = glmsg.add_args();
4638    arg_location->set_isarray(false);
4639    arg_location->set_type(GLMessage::DataType::INT);
4640    arg_location->add_intvalue(location);
4641
4642    // copy argument count
4643    GLMessage_DataType *arg_count = glmsg.add_args();
4644    arg_count->set_isarray(false);
4645    arg_count->set_type(GLMessage::DataType::INT);
4646    arg_count->add_intvalue(count);
4647
4648    // copy argument v
4649    GLMessage_DataType *arg_v = glmsg.add_args();
4650    arg_v->set_isarray(false);
4651    arg_v->set_type(GLMessage::DataType::INT);
4652    arg_v->add_intvalue((int)v);
4653
4654    // call function
4655    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4656    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4657    glContext->hooks->gl.glUniform2fv(location, count, v);
4658    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4659    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4660
4661    void *pointerArgs[] = {
4662        (void *) v,
4663    };
4664
4665    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4666                              threadStartTime, threadEndTime,
4667                              &glmsg, pointerArgs);
4668    glContext->traceGLMessage(&glmsg);
4669}
4670
4671void GLTrace_glUniform2i(GLint location, GLint x, GLint y) {
4672    GLMessage glmsg;
4673    GLTraceContext *glContext = getGLTraceContext();
4674
4675    glmsg.set_function(GLMessage::glUniform2i);
4676
4677    // copy argument location
4678    GLMessage_DataType *arg_location = glmsg.add_args();
4679    arg_location->set_isarray(false);
4680    arg_location->set_type(GLMessage::DataType::INT);
4681    arg_location->add_intvalue(location);
4682
4683    // copy argument x
4684    GLMessage_DataType *arg_x = glmsg.add_args();
4685    arg_x->set_isarray(false);
4686    arg_x->set_type(GLMessage::DataType::INT);
4687    arg_x->add_intvalue(x);
4688
4689    // copy argument y
4690    GLMessage_DataType *arg_y = glmsg.add_args();
4691    arg_y->set_isarray(false);
4692    arg_y->set_type(GLMessage::DataType::INT);
4693    arg_y->add_intvalue(y);
4694
4695    // call function
4696    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4697    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4698    glContext->hooks->gl.glUniform2i(location, x, y);
4699    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4700    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4701
4702    void *pointerArgs[] = {
4703    };
4704
4705    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4706                              threadStartTime, threadEndTime,
4707                              &glmsg, pointerArgs);
4708    glContext->traceGLMessage(&glmsg);
4709}
4710
4711void GLTrace_glUniform2iv(GLint location, GLsizei count, const GLint* v) {
4712    GLMessage glmsg;
4713    GLTraceContext *glContext = getGLTraceContext();
4714
4715    glmsg.set_function(GLMessage::glUniform2iv);
4716
4717    // copy argument location
4718    GLMessage_DataType *arg_location = glmsg.add_args();
4719    arg_location->set_isarray(false);
4720    arg_location->set_type(GLMessage::DataType::INT);
4721    arg_location->add_intvalue(location);
4722
4723    // copy argument count
4724    GLMessage_DataType *arg_count = glmsg.add_args();
4725    arg_count->set_isarray(false);
4726    arg_count->set_type(GLMessage::DataType::INT);
4727    arg_count->add_intvalue(count);
4728
4729    // copy argument v
4730    GLMessage_DataType *arg_v = glmsg.add_args();
4731    arg_v->set_isarray(false);
4732    arg_v->set_type(GLMessage::DataType::INT);
4733    arg_v->add_intvalue((int)v);
4734
4735    // call function
4736    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4737    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4738    glContext->hooks->gl.glUniform2iv(location, count, v);
4739    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4740    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4741
4742    void *pointerArgs[] = {
4743        (void *) v,
4744    };
4745
4746    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4747                              threadStartTime, threadEndTime,
4748                              &glmsg, pointerArgs);
4749    glContext->traceGLMessage(&glmsg);
4750}
4751
4752void GLTrace_glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z) {
4753    GLMessage glmsg;
4754    GLTraceContext *glContext = getGLTraceContext();
4755
4756    glmsg.set_function(GLMessage::glUniform3f);
4757
4758    // copy argument location
4759    GLMessage_DataType *arg_location = glmsg.add_args();
4760    arg_location->set_isarray(false);
4761    arg_location->set_type(GLMessage::DataType::INT);
4762    arg_location->add_intvalue(location);
4763
4764    // copy argument x
4765    GLMessage_DataType *arg_x = glmsg.add_args();
4766    arg_x->set_isarray(false);
4767    arg_x->set_type(GLMessage::DataType::FLOAT);
4768    arg_x->add_floatvalue(x);
4769
4770    // copy argument y
4771    GLMessage_DataType *arg_y = glmsg.add_args();
4772    arg_y->set_isarray(false);
4773    arg_y->set_type(GLMessage::DataType::FLOAT);
4774    arg_y->add_floatvalue(y);
4775
4776    // copy argument z
4777    GLMessage_DataType *arg_z = glmsg.add_args();
4778    arg_z->set_isarray(false);
4779    arg_z->set_type(GLMessage::DataType::FLOAT);
4780    arg_z->add_floatvalue(z);
4781
4782    // call function
4783    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4784    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4785    glContext->hooks->gl.glUniform3f(location, x, y, z);
4786    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4787    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4788
4789    void *pointerArgs[] = {
4790    };
4791
4792    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4793                              threadStartTime, threadEndTime,
4794                              &glmsg, pointerArgs);
4795    glContext->traceGLMessage(&glmsg);
4796}
4797
4798void GLTrace_glUniform3fv(GLint location, GLsizei count, const GLfloat* v) {
4799    GLMessage glmsg;
4800    GLTraceContext *glContext = getGLTraceContext();
4801
4802    glmsg.set_function(GLMessage::glUniform3fv);
4803
4804    // copy argument location
4805    GLMessage_DataType *arg_location = glmsg.add_args();
4806    arg_location->set_isarray(false);
4807    arg_location->set_type(GLMessage::DataType::INT);
4808    arg_location->add_intvalue(location);
4809
4810    // copy argument count
4811    GLMessage_DataType *arg_count = glmsg.add_args();
4812    arg_count->set_isarray(false);
4813    arg_count->set_type(GLMessage::DataType::INT);
4814    arg_count->add_intvalue(count);
4815
4816    // copy argument v
4817    GLMessage_DataType *arg_v = glmsg.add_args();
4818    arg_v->set_isarray(false);
4819    arg_v->set_type(GLMessage::DataType::INT);
4820    arg_v->add_intvalue((int)v);
4821
4822    // call function
4823    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4824    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4825    glContext->hooks->gl.glUniform3fv(location, count, v);
4826    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4827    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4828
4829    void *pointerArgs[] = {
4830        (void *) v,
4831    };
4832
4833    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4834                              threadStartTime, threadEndTime,
4835                              &glmsg, pointerArgs);
4836    glContext->traceGLMessage(&glmsg);
4837}
4838
4839void GLTrace_glUniform3i(GLint location, GLint x, GLint y, GLint z) {
4840    GLMessage glmsg;
4841    GLTraceContext *glContext = getGLTraceContext();
4842
4843    glmsg.set_function(GLMessage::glUniform3i);
4844
4845    // copy argument location
4846    GLMessage_DataType *arg_location = glmsg.add_args();
4847    arg_location->set_isarray(false);
4848    arg_location->set_type(GLMessage::DataType::INT);
4849    arg_location->add_intvalue(location);
4850
4851    // copy argument x
4852    GLMessage_DataType *arg_x = glmsg.add_args();
4853    arg_x->set_isarray(false);
4854    arg_x->set_type(GLMessage::DataType::INT);
4855    arg_x->add_intvalue(x);
4856
4857    // copy argument y
4858    GLMessage_DataType *arg_y = glmsg.add_args();
4859    arg_y->set_isarray(false);
4860    arg_y->set_type(GLMessage::DataType::INT);
4861    arg_y->add_intvalue(y);
4862
4863    // copy argument z
4864    GLMessage_DataType *arg_z = glmsg.add_args();
4865    arg_z->set_isarray(false);
4866    arg_z->set_type(GLMessage::DataType::INT);
4867    arg_z->add_intvalue(z);
4868
4869    // call function
4870    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4871    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4872    glContext->hooks->gl.glUniform3i(location, x, y, z);
4873    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4874    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4875
4876    void *pointerArgs[] = {
4877    };
4878
4879    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4880                              threadStartTime, threadEndTime,
4881                              &glmsg, pointerArgs);
4882    glContext->traceGLMessage(&glmsg);
4883}
4884
4885void GLTrace_glUniform3iv(GLint location, GLsizei count, const GLint* v) {
4886    GLMessage glmsg;
4887    GLTraceContext *glContext = getGLTraceContext();
4888
4889    glmsg.set_function(GLMessage::glUniform3iv);
4890
4891    // copy argument location
4892    GLMessage_DataType *arg_location = glmsg.add_args();
4893    arg_location->set_isarray(false);
4894    arg_location->set_type(GLMessage::DataType::INT);
4895    arg_location->add_intvalue(location);
4896
4897    // copy argument count
4898    GLMessage_DataType *arg_count = glmsg.add_args();
4899    arg_count->set_isarray(false);
4900    arg_count->set_type(GLMessage::DataType::INT);
4901    arg_count->add_intvalue(count);
4902
4903    // copy argument v
4904    GLMessage_DataType *arg_v = glmsg.add_args();
4905    arg_v->set_isarray(false);
4906    arg_v->set_type(GLMessage::DataType::INT);
4907    arg_v->add_intvalue((int)v);
4908
4909    // call function
4910    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4911    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4912    glContext->hooks->gl.glUniform3iv(location, count, v);
4913    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4914    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4915
4916    void *pointerArgs[] = {
4917        (void *) v,
4918    };
4919
4920    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4921                              threadStartTime, threadEndTime,
4922                              &glmsg, pointerArgs);
4923    glContext->traceGLMessage(&glmsg);
4924}
4925
4926void GLTrace_glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {
4927    GLMessage glmsg;
4928    GLTraceContext *glContext = getGLTraceContext();
4929
4930    glmsg.set_function(GLMessage::glUniform4f);
4931
4932    // copy argument location
4933    GLMessage_DataType *arg_location = glmsg.add_args();
4934    arg_location->set_isarray(false);
4935    arg_location->set_type(GLMessage::DataType::INT);
4936    arg_location->add_intvalue(location);
4937
4938    // copy argument x
4939    GLMessage_DataType *arg_x = glmsg.add_args();
4940    arg_x->set_isarray(false);
4941    arg_x->set_type(GLMessage::DataType::FLOAT);
4942    arg_x->add_floatvalue(x);
4943
4944    // copy argument y
4945    GLMessage_DataType *arg_y = glmsg.add_args();
4946    arg_y->set_isarray(false);
4947    arg_y->set_type(GLMessage::DataType::FLOAT);
4948    arg_y->add_floatvalue(y);
4949
4950    // copy argument z
4951    GLMessage_DataType *arg_z = glmsg.add_args();
4952    arg_z->set_isarray(false);
4953    arg_z->set_type(GLMessage::DataType::FLOAT);
4954    arg_z->add_floatvalue(z);
4955
4956    // copy argument w
4957    GLMessage_DataType *arg_w = glmsg.add_args();
4958    arg_w->set_isarray(false);
4959    arg_w->set_type(GLMessage::DataType::FLOAT);
4960    arg_w->add_floatvalue(w);
4961
4962    // call function
4963    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4964    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4965    glContext->hooks->gl.glUniform4f(location, x, y, z, w);
4966    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4967    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4968
4969    void *pointerArgs[] = {
4970    };
4971
4972    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4973                              threadStartTime, threadEndTime,
4974                              &glmsg, pointerArgs);
4975    glContext->traceGLMessage(&glmsg);
4976}
4977
4978void GLTrace_glUniform4fv(GLint location, GLsizei count, const GLfloat* v) {
4979    GLMessage glmsg;
4980    GLTraceContext *glContext = getGLTraceContext();
4981
4982    glmsg.set_function(GLMessage::glUniform4fv);
4983
4984    // copy argument location
4985    GLMessage_DataType *arg_location = glmsg.add_args();
4986    arg_location->set_isarray(false);
4987    arg_location->set_type(GLMessage::DataType::INT);
4988    arg_location->add_intvalue(location);
4989
4990    // copy argument count
4991    GLMessage_DataType *arg_count = glmsg.add_args();
4992    arg_count->set_isarray(false);
4993    arg_count->set_type(GLMessage::DataType::INT);
4994    arg_count->add_intvalue(count);
4995
4996    // copy argument v
4997    GLMessage_DataType *arg_v = glmsg.add_args();
4998    arg_v->set_isarray(false);
4999    arg_v->set_type(GLMessage::DataType::INT);
5000    arg_v->add_intvalue((int)v);
5001
5002    // call function
5003    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5004    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5005    glContext->hooks->gl.glUniform4fv(location, count, v);
5006    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5007    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5008
5009    void *pointerArgs[] = {
5010        (void *) v,
5011    };
5012
5013    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5014                              threadStartTime, threadEndTime,
5015                              &glmsg, pointerArgs);
5016    glContext->traceGLMessage(&glmsg);
5017}
5018
5019void GLTrace_glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w) {
5020    GLMessage glmsg;
5021    GLTraceContext *glContext = getGLTraceContext();
5022
5023    glmsg.set_function(GLMessage::glUniform4i);
5024
5025    // copy argument location
5026    GLMessage_DataType *arg_location = glmsg.add_args();
5027    arg_location->set_isarray(false);
5028    arg_location->set_type(GLMessage::DataType::INT);
5029    arg_location->add_intvalue(location);
5030
5031    // copy argument x
5032    GLMessage_DataType *arg_x = glmsg.add_args();
5033    arg_x->set_isarray(false);
5034    arg_x->set_type(GLMessage::DataType::INT);
5035    arg_x->add_intvalue(x);
5036
5037    // copy argument y
5038    GLMessage_DataType *arg_y = glmsg.add_args();
5039    arg_y->set_isarray(false);
5040    arg_y->set_type(GLMessage::DataType::INT);
5041    arg_y->add_intvalue(y);
5042
5043    // copy argument z
5044    GLMessage_DataType *arg_z = glmsg.add_args();
5045    arg_z->set_isarray(false);
5046    arg_z->set_type(GLMessage::DataType::INT);
5047    arg_z->add_intvalue(z);
5048
5049    // copy argument w
5050    GLMessage_DataType *arg_w = glmsg.add_args();
5051    arg_w->set_isarray(false);
5052    arg_w->set_type(GLMessage::DataType::INT);
5053    arg_w->add_intvalue(w);
5054
5055    // call function
5056    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5057    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5058    glContext->hooks->gl.glUniform4i(location, x, y, z, w);
5059    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5060    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5061
5062    void *pointerArgs[] = {
5063    };
5064
5065    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5066                              threadStartTime, threadEndTime,
5067                              &glmsg, pointerArgs);
5068    glContext->traceGLMessage(&glmsg);
5069}
5070
5071void GLTrace_glUniform4iv(GLint location, GLsizei count, const GLint* v) {
5072    GLMessage glmsg;
5073    GLTraceContext *glContext = getGLTraceContext();
5074
5075    glmsg.set_function(GLMessage::glUniform4iv);
5076
5077    // copy argument location
5078    GLMessage_DataType *arg_location = glmsg.add_args();
5079    arg_location->set_isarray(false);
5080    arg_location->set_type(GLMessage::DataType::INT);
5081    arg_location->add_intvalue(location);
5082
5083    // copy argument count
5084    GLMessage_DataType *arg_count = glmsg.add_args();
5085    arg_count->set_isarray(false);
5086    arg_count->set_type(GLMessage::DataType::INT);
5087    arg_count->add_intvalue(count);
5088
5089    // copy argument v
5090    GLMessage_DataType *arg_v = glmsg.add_args();
5091    arg_v->set_isarray(false);
5092    arg_v->set_type(GLMessage::DataType::INT);
5093    arg_v->add_intvalue((int)v);
5094
5095    // call function
5096    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5097    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5098    glContext->hooks->gl.glUniform4iv(location, count, v);
5099    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5100    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5101
5102    void *pointerArgs[] = {
5103        (void *) v,
5104    };
5105
5106    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5107                              threadStartTime, threadEndTime,
5108                              &glmsg, pointerArgs);
5109    glContext->traceGLMessage(&glmsg);
5110}
5111
5112void GLTrace_glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) {
5113    GLMessage glmsg;
5114    GLTraceContext *glContext = getGLTraceContext();
5115
5116    glmsg.set_function(GLMessage::glUniformMatrix2fv);
5117
5118    // copy argument location
5119    GLMessage_DataType *arg_location = glmsg.add_args();
5120    arg_location->set_isarray(false);
5121    arg_location->set_type(GLMessage::DataType::INT);
5122    arg_location->add_intvalue(location);
5123
5124    // copy argument count
5125    GLMessage_DataType *arg_count = glmsg.add_args();
5126    arg_count->set_isarray(false);
5127    arg_count->set_type(GLMessage::DataType::INT);
5128    arg_count->add_intvalue(count);
5129
5130    // copy argument transpose
5131    GLMessage_DataType *arg_transpose = glmsg.add_args();
5132    arg_transpose->set_isarray(false);
5133    arg_transpose->set_type(GLMessage::DataType::BOOL);
5134    arg_transpose->add_boolvalue(transpose);
5135
5136    // copy argument value
5137    GLMessage_DataType *arg_value = glmsg.add_args();
5138    arg_value->set_isarray(false);
5139    arg_value->set_type(GLMessage::DataType::INT);
5140    arg_value->add_intvalue((int)value);
5141
5142    // call function
5143    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5144    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5145    glContext->hooks->gl.glUniformMatrix2fv(location, count, transpose, value);
5146    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5147    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5148
5149    void *pointerArgs[] = {
5150        (void *) value,
5151    };
5152
5153    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5154                              threadStartTime, threadEndTime,
5155                              &glmsg, pointerArgs);
5156    glContext->traceGLMessage(&glmsg);
5157}
5158
5159void GLTrace_glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) {
5160    GLMessage glmsg;
5161    GLTraceContext *glContext = getGLTraceContext();
5162
5163    glmsg.set_function(GLMessage::glUniformMatrix3fv);
5164
5165    // copy argument location
5166    GLMessage_DataType *arg_location = glmsg.add_args();
5167    arg_location->set_isarray(false);
5168    arg_location->set_type(GLMessage::DataType::INT);
5169    arg_location->add_intvalue(location);
5170
5171    // copy argument count
5172    GLMessage_DataType *arg_count = glmsg.add_args();
5173    arg_count->set_isarray(false);
5174    arg_count->set_type(GLMessage::DataType::INT);
5175    arg_count->add_intvalue(count);
5176
5177    // copy argument transpose
5178    GLMessage_DataType *arg_transpose = glmsg.add_args();
5179    arg_transpose->set_isarray(false);
5180    arg_transpose->set_type(GLMessage::DataType::BOOL);
5181    arg_transpose->add_boolvalue(transpose);
5182
5183    // copy argument value
5184    GLMessage_DataType *arg_value = glmsg.add_args();
5185    arg_value->set_isarray(false);
5186    arg_value->set_type(GLMessage::DataType::INT);
5187    arg_value->add_intvalue((int)value);
5188
5189    // call function
5190    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5191    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5192    glContext->hooks->gl.glUniformMatrix3fv(location, count, transpose, value);
5193    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5194    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5195
5196    void *pointerArgs[] = {
5197        (void *) value,
5198    };
5199
5200    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5201                              threadStartTime, threadEndTime,
5202                              &glmsg, pointerArgs);
5203    glContext->traceGLMessage(&glmsg);
5204}
5205
5206void GLTrace_glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) {
5207    GLMessage glmsg;
5208    GLTraceContext *glContext = getGLTraceContext();
5209
5210    glmsg.set_function(GLMessage::glUniformMatrix4fv);
5211
5212    // copy argument location
5213    GLMessage_DataType *arg_location = glmsg.add_args();
5214    arg_location->set_isarray(false);
5215    arg_location->set_type(GLMessage::DataType::INT);
5216    arg_location->add_intvalue(location);
5217
5218    // copy argument count
5219    GLMessage_DataType *arg_count = glmsg.add_args();
5220    arg_count->set_isarray(false);
5221    arg_count->set_type(GLMessage::DataType::INT);
5222    arg_count->add_intvalue(count);
5223
5224    // copy argument transpose
5225    GLMessage_DataType *arg_transpose = glmsg.add_args();
5226    arg_transpose->set_isarray(false);
5227    arg_transpose->set_type(GLMessage::DataType::BOOL);
5228    arg_transpose->add_boolvalue(transpose);
5229
5230    // copy argument value
5231    GLMessage_DataType *arg_value = glmsg.add_args();
5232    arg_value->set_isarray(false);
5233    arg_value->set_type(GLMessage::DataType::INT);
5234    arg_value->add_intvalue((int)value);
5235
5236    // call function
5237    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5238    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5239    glContext->hooks->gl.glUniformMatrix4fv(location, count, transpose, value);
5240    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5241    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5242
5243    void *pointerArgs[] = {
5244        (void *) value,
5245    };
5246
5247    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5248                              threadStartTime, threadEndTime,
5249                              &glmsg, pointerArgs);
5250    glContext->traceGLMessage(&glmsg);
5251}
5252
5253void GLTrace_glUseProgram(GLuint program) {
5254    GLMessage glmsg;
5255    GLTraceContext *glContext = getGLTraceContext();
5256
5257    glmsg.set_function(GLMessage::glUseProgram);
5258
5259    // copy argument program
5260    GLMessage_DataType *arg_program = glmsg.add_args();
5261    arg_program->set_isarray(false);
5262    arg_program->set_type(GLMessage::DataType::INT);
5263    arg_program->add_intvalue(program);
5264
5265    // call function
5266    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5267    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5268    glContext->hooks->gl.glUseProgram(program);
5269    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5270    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5271
5272    void *pointerArgs[] = {
5273    };
5274
5275    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5276                              threadStartTime, threadEndTime,
5277                              &glmsg, pointerArgs);
5278    glContext->traceGLMessage(&glmsg);
5279}
5280
5281void GLTrace_glValidateProgram(GLuint program) {
5282    GLMessage glmsg;
5283    GLTraceContext *glContext = getGLTraceContext();
5284
5285    glmsg.set_function(GLMessage::glValidateProgram);
5286
5287    // copy argument program
5288    GLMessage_DataType *arg_program = glmsg.add_args();
5289    arg_program->set_isarray(false);
5290    arg_program->set_type(GLMessage::DataType::INT);
5291    arg_program->add_intvalue(program);
5292
5293    // call function
5294    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5295    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5296    glContext->hooks->gl.glValidateProgram(program);
5297    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5298    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5299
5300    void *pointerArgs[] = {
5301    };
5302
5303    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5304                              threadStartTime, threadEndTime,
5305                              &glmsg, pointerArgs);
5306    glContext->traceGLMessage(&glmsg);
5307}
5308
5309void GLTrace_glVertexAttrib1f(GLuint indx, GLfloat x) {
5310    GLMessage glmsg;
5311    GLTraceContext *glContext = getGLTraceContext();
5312
5313    glmsg.set_function(GLMessage::glVertexAttrib1f);
5314
5315    // copy argument indx
5316    GLMessage_DataType *arg_indx = glmsg.add_args();
5317    arg_indx->set_isarray(false);
5318    arg_indx->set_type(GLMessage::DataType::INT);
5319    arg_indx->add_intvalue(indx);
5320
5321    // copy argument x
5322    GLMessage_DataType *arg_x = glmsg.add_args();
5323    arg_x->set_isarray(false);
5324    arg_x->set_type(GLMessage::DataType::FLOAT);
5325    arg_x->add_floatvalue(x);
5326
5327    // call function
5328    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5329    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5330    glContext->hooks->gl.glVertexAttrib1f(indx, x);
5331    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5332    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5333
5334    void *pointerArgs[] = {
5335    };
5336
5337    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5338                              threadStartTime, threadEndTime,
5339                              &glmsg, pointerArgs);
5340    glContext->traceGLMessage(&glmsg);
5341}
5342
5343void GLTrace_glVertexAttrib1fv(GLuint indx, const GLfloat* values) {
5344    GLMessage glmsg;
5345    GLTraceContext *glContext = getGLTraceContext();
5346
5347    glmsg.set_function(GLMessage::glVertexAttrib1fv);
5348
5349    // copy argument indx
5350    GLMessage_DataType *arg_indx = glmsg.add_args();
5351    arg_indx->set_isarray(false);
5352    arg_indx->set_type(GLMessage::DataType::INT);
5353    arg_indx->add_intvalue(indx);
5354
5355    // copy argument values
5356    GLMessage_DataType *arg_values = glmsg.add_args();
5357    arg_values->set_isarray(false);
5358    arg_values->set_type(GLMessage::DataType::INT);
5359    arg_values->add_intvalue((int)values);
5360
5361    // call function
5362    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5363    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5364    glContext->hooks->gl.glVertexAttrib1fv(indx, values);
5365    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5366    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5367
5368    void *pointerArgs[] = {
5369        (void *) values,
5370    };
5371
5372    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5373                              threadStartTime, threadEndTime,
5374                              &glmsg, pointerArgs);
5375    glContext->traceGLMessage(&glmsg);
5376}
5377
5378void GLTrace_glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) {
5379    GLMessage glmsg;
5380    GLTraceContext *glContext = getGLTraceContext();
5381
5382    glmsg.set_function(GLMessage::glVertexAttrib2f);
5383
5384    // copy argument indx
5385    GLMessage_DataType *arg_indx = glmsg.add_args();
5386    arg_indx->set_isarray(false);
5387    arg_indx->set_type(GLMessage::DataType::INT);
5388    arg_indx->add_intvalue(indx);
5389
5390    // copy argument x
5391    GLMessage_DataType *arg_x = glmsg.add_args();
5392    arg_x->set_isarray(false);
5393    arg_x->set_type(GLMessage::DataType::FLOAT);
5394    arg_x->add_floatvalue(x);
5395
5396    // copy argument y
5397    GLMessage_DataType *arg_y = glmsg.add_args();
5398    arg_y->set_isarray(false);
5399    arg_y->set_type(GLMessage::DataType::FLOAT);
5400    arg_y->add_floatvalue(y);
5401
5402    // call function
5403    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5404    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5405    glContext->hooks->gl.glVertexAttrib2f(indx, x, y);
5406    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5407    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5408
5409    void *pointerArgs[] = {
5410    };
5411
5412    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5413                              threadStartTime, threadEndTime,
5414                              &glmsg, pointerArgs);
5415    glContext->traceGLMessage(&glmsg);
5416}
5417
5418void GLTrace_glVertexAttrib2fv(GLuint indx, const GLfloat* values) {
5419    GLMessage glmsg;
5420    GLTraceContext *glContext = getGLTraceContext();
5421
5422    glmsg.set_function(GLMessage::glVertexAttrib2fv);
5423
5424    // copy argument indx
5425    GLMessage_DataType *arg_indx = glmsg.add_args();
5426    arg_indx->set_isarray(false);
5427    arg_indx->set_type(GLMessage::DataType::INT);
5428    arg_indx->add_intvalue(indx);
5429
5430    // copy argument values
5431    GLMessage_DataType *arg_values = glmsg.add_args();
5432    arg_values->set_isarray(false);
5433    arg_values->set_type(GLMessage::DataType::INT);
5434    arg_values->add_intvalue((int)values);
5435
5436    // call function
5437    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5438    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5439    glContext->hooks->gl.glVertexAttrib2fv(indx, values);
5440    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5441    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5442
5443    void *pointerArgs[] = {
5444        (void *) values,
5445    };
5446
5447    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5448                              threadStartTime, threadEndTime,
5449                              &glmsg, pointerArgs);
5450    glContext->traceGLMessage(&glmsg);
5451}
5452
5453void GLTrace_glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z) {
5454    GLMessage glmsg;
5455    GLTraceContext *glContext = getGLTraceContext();
5456
5457    glmsg.set_function(GLMessage::glVertexAttrib3f);
5458
5459    // copy argument indx
5460    GLMessage_DataType *arg_indx = glmsg.add_args();
5461    arg_indx->set_isarray(false);
5462    arg_indx->set_type(GLMessage::DataType::INT);
5463    arg_indx->add_intvalue(indx);
5464
5465    // copy argument x
5466    GLMessage_DataType *arg_x = glmsg.add_args();
5467    arg_x->set_isarray(false);
5468    arg_x->set_type(GLMessage::DataType::FLOAT);
5469    arg_x->add_floatvalue(x);
5470
5471    // copy argument y
5472    GLMessage_DataType *arg_y = glmsg.add_args();
5473    arg_y->set_isarray(false);
5474    arg_y->set_type(GLMessage::DataType::FLOAT);
5475    arg_y->add_floatvalue(y);
5476
5477    // copy argument z
5478    GLMessage_DataType *arg_z = glmsg.add_args();
5479    arg_z->set_isarray(false);
5480    arg_z->set_type(GLMessage::DataType::FLOAT);
5481    arg_z->add_floatvalue(z);
5482
5483    // call function
5484    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5485    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5486    glContext->hooks->gl.glVertexAttrib3f(indx, x, y, z);
5487    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5488    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5489
5490    void *pointerArgs[] = {
5491    };
5492
5493    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5494                              threadStartTime, threadEndTime,
5495                              &glmsg, pointerArgs);
5496    glContext->traceGLMessage(&glmsg);
5497}
5498
5499void GLTrace_glVertexAttrib3fv(GLuint indx, const GLfloat* values) {
5500    GLMessage glmsg;
5501    GLTraceContext *glContext = getGLTraceContext();
5502
5503    glmsg.set_function(GLMessage::glVertexAttrib3fv);
5504
5505    // copy argument indx
5506    GLMessage_DataType *arg_indx = glmsg.add_args();
5507    arg_indx->set_isarray(false);
5508    arg_indx->set_type(GLMessage::DataType::INT);
5509    arg_indx->add_intvalue(indx);
5510
5511    // copy argument values
5512    GLMessage_DataType *arg_values = glmsg.add_args();
5513    arg_values->set_isarray(false);
5514    arg_values->set_type(GLMessage::DataType::INT);
5515    arg_values->add_intvalue((int)values);
5516
5517    // call function
5518    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5519    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5520    glContext->hooks->gl.glVertexAttrib3fv(indx, values);
5521    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5522    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5523
5524    void *pointerArgs[] = {
5525        (void *) values,
5526    };
5527
5528    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5529                              threadStartTime, threadEndTime,
5530                              &glmsg, pointerArgs);
5531    glContext->traceGLMessage(&glmsg);
5532}
5533
5534void GLTrace_glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {
5535    GLMessage glmsg;
5536    GLTraceContext *glContext = getGLTraceContext();
5537
5538    glmsg.set_function(GLMessage::glVertexAttrib4f);
5539
5540    // copy argument indx
5541    GLMessage_DataType *arg_indx = glmsg.add_args();
5542    arg_indx->set_isarray(false);
5543    arg_indx->set_type(GLMessage::DataType::INT);
5544    arg_indx->add_intvalue(indx);
5545
5546    // copy argument x
5547    GLMessage_DataType *arg_x = glmsg.add_args();
5548    arg_x->set_isarray(false);
5549    arg_x->set_type(GLMessage::DataType::FLOAT);
5550    arg_x->add_floatvalue(x);
5551
5552    // copy argument y
5553    GLMessage_DataType *arg_y = glmsg.add_args();
5554    arg_y->set_isarray(false);
5555    arg_y->set_type(GLMessage::DataType::FLOAT);
5556    arg_y->add_floatvalue(y);
5557
5558    // copy argument z
5559    GLMessage_DataType *arg_z = glmsg.add_args();
5560    arg_z->set_isarray(false);
5561    arg_z->set_type(GLMessage::DataType::FLOAT);
5562    arg_z->add_floatvalue(z);
5563
5564    // copy argument w
5565    GLMessage_DataType *arg_w = glmsg.add_args();
5566    arg_w->set_isarray(false);
5567    arg_w->set_type(GLMessage::DataType::FLOAT);
5568    arg_w->add_floatvalue(w);
5569
5570    // call function
5571    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5572    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5573    glContext->hooks->gl.glVertexAttrib4f(indx, x, y, z, w);
5574    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5575    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5576
5577    void *pointerArgs[] = {
5578    };
5579
5580    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5581                              threadStartTime, threadEndTime,
5582                              &glmsg, pointerArgs);
5583    glContext->traceGLMessage(&glmsg);
5584}
5585
5586void GLTrace_glVertexAttrib4fv(GLuint indx, const GLfloat* values) {
5587    GLMessage glmsg;
5588    GLTraceContext *glContext = getGLTraceContext();
5589
5590    glmsg.set_function(GLMessage::glVertexAttrib4fv);
5591
5592    // copy argument indx
5593    GLMessage_DataType *arg_indx = glmsg.add_args();
5594    arg_indx->set_isarray(false);
5595    arg_indx->set_type(GLMessage::DataType::INT);
5596    arg_indx->add_intvalue(indx);
5597
5598    // copy argument values
5599    GLMessage_DataType *arg_values = glmsg.add_args();
5600    arg_values->set_isarray(false);
5601    arg_values->set_type(GLMessage::DataType::INT);
5602    arg_values->add_intvalue((int)values);
5603
5604    // call function
5605    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5606    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5607    glContext->hooks->gl.glVertexAttrib4fv(indx, values);
5608    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5609    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5610
5611    void *pointerArgs[] = {
5612        (void *) values,
5613    };
5614
5615    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5616                              threadStartTime, threadEndTime,
5617                              &glmsg, pointerArgs);
5618    glContext->traceGLMessage(&glmsg);
5619}
5620
5621void GLTrace_glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr) {
5622    GLMessage glmsg;
5623    GLTraceContext *glContext = getGLTraceContext();
5624
5625    glmsg.set_function(GLMessage::glVertexAttribPointer);
5626
5627    // copy argument indx
5628    GLMessage_DataType *arg_indx = glmsg.add_args();
5629    arg_indx->set_isarray(false);
5630    arg_indx->set_type(GLMessage::DataType::INT);
5631    arg_indx->add_intvalue(indx);
5632
5633    // copy argument size
5634    GLMessage_DataType *arg_size = glmsg.add_args();
5635    arg_size->set_isarray(false);
5636    arg_size->set_type(GLMessage::DataType::INT);
5637    arg_size->add_intvalue(size);
5638
5639    // copy argument type
5640    GLMessage_DataType *arg_type = glmsg.add_args();
5641    arg_type->set_isarray(false);
5642    arg_type->set_type(GLMessage::DataType::ENUM);
5643    arg_type->add_intvalue((int)type);
5644
5645    // copy argument normalized
5646    GLMessage_DataType *arg_normalized = glmsg.add_args();
5647    arg_normalized->set_isarray(false);
5648    arg_normalized->set_type(GLMessage::DataType::BOOL);
5649    arg_normalized->add_boolvalue(normalized);
5650
5651    // copy argument stride
5652    GLMessage_DataType *arg_stride = glmsg.add_args();
5653    arg_stride->set_isarray(false);
5654    arg_stride->set_type(GLMessage::DataType::INT);
5655    arg_stride->add_intvalue(stride);
5656
5657    // copy argument ptr
5658    GLMessage_DataType *arg_ptr = glmsg.add_args();
5659    arg_ptr->set_isarray(false);
5660    arg_ptr->set_type(GLMessage::DataType::INT);
5661    arg_ptr->add_intvalue((int)ptr);
5662
5663    // call function
5664    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5665    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5666    glContext->hooks->gl.glVertexAttribPointer(indx, size, type, normalized, stride, ptr);
5667    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5668    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5669
5670    void *pointerArgs[] = {
5671        (void *) ptr,
5672    };
5673
5674    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5675                              threadStartTime, threadEndTime,
5676                              &glmsg, pointerArgs);
5677    glContext->traceGLMessage(&glmsg);
5678}
5679
5680void GLTrace_glViewport(GLint x, GLint y, GLsizei width, GLsizei height) {
5681    GLMessage glmsg;
5682    GLTraceContext *glContext = getGLTraceContext();
5683
5684    glmsg.set_function(GLMessage::glViewport);
5685
5686    // copy argument x
5687    GLMessage_DataType *arg_x = glmsg.add_args();
5688    arg_x->set_isarray(false);
5689    arg_x->set_type(GLMessage::DataType::INT);
5690    arg_x->add_intvalue(x);
5691
5692    // copy argument y
5693    GLMessage_DataType *arg_y = glmsg.add_args();
5694    arg_y->set_isarray(false);
5695    arg_y->set_type(GLMessage::DataType::INT);
5696    arg_y->add_intvalue(y);
5697
5698    // copy argument width
5699    GLMessage_DataType *arg_width = glmsg.add_args();
5700    arg_width->set_isarray(false);
5701    arg_width->set_type(GLMessage::DataType::INT);
5702    arg_width->add_intvalue(width);
5703
5704    // copy argument height
5705    GLMessage_DataType *arg_height = glmsg.add_args();
5706    arg_height->set_isarray(false);
5707    arg_height->set_type(GLMessage::DataType::INT);
5708    arg_height->add_intvalue(height);
5709
5710    // call function
5711    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5712    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5713    glContext->hooks->gl.glViewport(x, y, width, height);
5714    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5715    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5716
5717    void *pointerArgs[] = {
5718    };
5719
5720    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5721                              threadStartTime, threadEndTime,
5722                              &glmsg, pointerArgs);
5723    glContext->traceGLMessage(&glmsg);
5724}
5725
5726
5727// Definitions for GL2Ext APIs
5728
5729void GLTrace_glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image) {
5730    GLMessage glmsg;
5731    GLTraceContext *glContext = getGLTraceContext();
5732
5733    glmsg.set_function(GLMessage::glEGLImageTargetTexture2DOES);
5734
5735    // copy argument target
5736    GLMessage_DataType *arg_target = glmsg.add_args();
5737    arg_target->set_isarray(false);
5738    arg_target->set_type(GLMessage::DataType::ENUM);
5739    arg_target->add_intvalue((int)target);
5740
5741    // copy argument image
5742    GLMessage_DataType *arg_image = glmsg.add_args();
5743    arg_image->set_isarray(false);
5744    arg_image->set_type(GLMessage::DataType::INT);
5745    arg_image->add_intvalue((int)image);
5746
5747    // call function
5748    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5749    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5750    glContext->hooks->gl.glEGLImageTargetTexture2DOES(target, image);
5751    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5752    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5753
5754    void *pointerArgs[] = {
5755        (void *) image,
5756    };
5757
5758    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5759                              threadStartTime, threadEndTime,
5760                              &glmsg, pointerArgs);
5761    glContext->traceGLMessage(&glmsg);
5762}
5763
5764void GLTrace_glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image) {
5765    GLMessage glmsg;
5766    GLTraceContext *glContext = getGLTraceContext();
5767
5768    glmsg.set_function(GLMessage::glEGLImageTargetRenderbufferStorageOES);
5769
5770    // copy argument target
5771    GLMessage_DataType *arg_target = glmsg.add_args();
5772    arg_target->set_isarray(false);
5773    arg_target->set_type(GLMessage::DataType::ENUM);
5774    arg_target->add_intvalue((int)target);
5775
5776    // copy argument image
5777    GLMessage_DataType *arg_image = glmsg.add_args();
5778    arg_image->set_isarray(false);
5779    arg_image->set_type(GLMessage::DataType::INT);
5780    arg_image->add_intvalue((int)image);
5781
5782    // call function
5783    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5784    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5785    glContext->hooks->gl.glEGLImageTargetRenderbufferStorageOES(target, image);
5786    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5787    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5788
5789    void *pointerArgs[] = {
5790        (void *) image,
5791    };
5792
5793    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5794                              threadStartTime, threadEndTime,
5795                              &glmsg, pointerArgs);
5796    glContext->traceGLMessage(&glmsg);
5797}
5798
5799void GLTrace_glGetProgramBinaryOES(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary) {
5800    GLMessage glmsg;
5801    GLTraceContext *glContext = getGLTraceContext();
5802
5803    glmsg.set_function(GLMessage::glGetProgramBinaryOES);
5804
5805    // copy argument program
5806    GLMessage_DataType *arg_program = glmsg.add_args();
5807    arg_program->set_isarray(false);
5808    arg_program->set_type(GLMessage::DataType::INT);
5809    arg_program->add_intvalue(program);
5810
5811    // copy argument bufSize
5812    GLMessage_DataType *arg_bufSize = glmsg.add_args();
5813    arg_bufSize->set_isarray(false);
5814    arg_bufSize->set_type(GLMessage::DataType::INT);
5815    arg_bufSize->add_intvalue(bufSize);
5816
5817    // copy argument length
5818    GLMessage_DataType *arg_length = glmsg.add_args();
5819    arg_length->set_isarray(false);
5820    arg_length->set_type(GLMessage::DataType::INT);
5821    arg_length->add_intvalue((int)length);
5822
5823    // copy argument binaryFormat
5824    GLMessage_DataType *arg_binaryFormat = glmsg.add_args();
5825    arg_binaryFormat->set_isarray(false);
5826    arg_binaryFormat->set_type(GLMessage::DataType::INT);
5827    arg_binaryFormat->add_intvalue((int)binaryFormat);
5828
5829    // copy argument binary
5830    GLMessage_DataType *arg_binary = glmsg.add_args();
5831    arg_binary->set_isarray(false);
5832    arg_binary->set_type(GLMessage::DataType::INT);
5833    arg_binary->add_intvalue((int)binary);
5834
5835    // call function
5836    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5837    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5838    glContext->hooks->gl.glGetProgramBinaryOES(program, bufSize, length, binaryFormat, binary);
5839    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5840    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5841
5842    void *pointerArgs[] = {
5843        (void *) length,
5844        (void *) binaryFormat,
5845        (void *) binary,
5846    };
5847
5848    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5849                              threadStartTime, threadEndTime,
5850                              &glmsg, pointerArgs);
5851    glContext->traceGLMessage(&glmsg);
5852}
5853
5854void GLTrace_glProgramBinaryOES(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length) {
5855    GLMessage glmsg;
5856    GLTraceContext *glContext = getGLTraceContext();
5857
5858    glmsg.set_function(GLMessage::glProgramBinaryOES);
5859
5860    // copy argument program
5861    GLMessage_DataType *arg_program = glmsg.add_args();
5862    arg_program->set_isarray(false);
5863    arg_program->set_type(GLMessage::DataType::INT);
5864    arg_program->add_intvalue(program);
5865
5866    // copy argument binaryFormat
5867    GLMessage_DataType *arg_binaryFormat = glmsg.add_args();
5868    arg_binaryFormat->set_isarray(false);
5869    arg_binaryFormat->set_type(GLMessage::DataType::ENUM);
5870    arg_binaryFormat->add_intvalue((int)binaryFormat);
5871
5872    // copy argument binary
5873    GLMessage_DataType *arg_binary = glmsg.add_args();
5874    arg_binary->set_isarray(false);
5875    arg_binary->set_type(GLMessage::DataType::INT);
5876    arg_binary->add_intvalue((int)binary);
5877
5878    // copy argument length
5879    GLMessage_DataType *arg_length = glmsg.add_args();
5880    arg_length->set_isarray(false);
5881    arg_length->set_type(GLMessage::DataType::INT);
5882    arg_length->add_intvalue(length);
5883
5884    // call function
5885    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5886    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5887    glContext->hooks->gl.glProgramBinaryOES(program, binaryFormat, binary, length);
5888    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5889    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5890
5891    void *pointerArgs[] = {
5892        (void *) binary,
5893    };
5894
5895    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5896                              threadStartTime, threadEndTime,
5897                              &glmsg, pointerArgs);
5898    glContext->traceGLMessage(&glmsg);
5899}
5900
5901void* GLTrace_glMapBufferOES(GLenum target, GLenum access) {
5902    GLMessage glmsg;
5903    GLTraceContext *glContext = getGLTraceContext();
5904
5905    glmsg.set_function(GLMessage::glMapBufferOES);
5906
5907    // copy argument target
5908    GLMessage_DataType *arg_target = glmsg.add_args();
5909    arg_target->set_isarray(false);
5910    arg_target->set_type(GLMessage::DataType::ENUM);
5911    arg_target->add_intvalue((int)target);
5912
5913    // copy argument access
5914    GLMessage_DataType *arg_access = glmsg.add_args();
5915    arg_access->set_isarray(false);
5916    arg_access->set_type(GLMessage::DataType::ENUM);
5917    arg_access->add_intvalue((int)access);
5918
5919    // call function
5920    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5921    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5922    void* retValue = glContext->hooks->gl.glMapBufferOES(target, access);
5923    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5924    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5925
5926    // set return value
5927    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
5928    rt->set_isarray(false);
5929    rt->set_type(GLMessage::DataType::INT);
5930    rt->add_intvalue((int)retValue);
5931
5932    void *pointerArgs[] = {
5933        (void *) retValue,
5934    };
5935
5936    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5937                              threadStartTime, threadEndTime,
5938                              &glmsg, pointerArgs);
5939    glContext->traceGLMessage(&glmsg);
5940
5941    return retValue;
5942}
5943
5944GLboolean GLTrace_glUnmapBufferOES(GLenum target) {
5945    GLMessage glmsg;
5946    GLTraceContext *glContext = getGLTraceContext();
5947
5948    glmsg.set_function(GLMessage::glUnmapBufferOES);
5949
5950    // copy argument target
5951    GLMessage_DataType *arg_target = glmsg.add_args();
5952    arg_target->set_isarray(false);
5953    arg_target->set_type(GLMessage::DataType::ENUM);
5954    arg_target->add_intvalue((int)target);
5955
5956    // call function
5957    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5958    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5959    GLboolean retValue = glContext->hooks->gl.glUnmapBufferOES(target);
5960    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5961    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5962
5963    // set return value
5964    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
5965    rt->set_isarray(false);
5966    rt->set_type(GLMessage::DataType::BOOL);
5967    rt->add_boolvalue(retValue);
5968
5969    void *pointerArgs[] = {
5970    };
5971
5972    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5973                              threadStartTime, threadEndTime,
5974                              &glmsg, pointerArgs);
5975    glContext->traceGLMessage(&glmsg);
5976
5977    return retValue;
5978}
5979
5980void GLTrace_glGetBufferPointervOES(GLenum target, GLenum pname, GLvoid** params) {
5981    GLMessage glmsg;
5982    GLTraceContext *glContext = getGLTraceContext();
5983
5984    glmsg.set_function(GLMessage::glGetBufferPointervOES);
5985
5986    // copy argument target
5987    GLMessage_DataType *arg_target = glmsg.add_args();
5988    arg_target->set_isarray(false);
5989    arg_target->set_type(GLMessage::DataType::ENUM);
5990    arg_target->add_intvalue((int)target);
5991
5992    // copy argument pname
5993    GLMessage_DataType *arg_pname = glmsg.add_args();
5994    arg_pname->set_isarray(false);
5995    arg_pname->set_type(GLMessage::DataType::ENUM);
5996    arg_pname->add_intvalue((int)pname);
5997
5998    // copy argument params
5999    GLMessage_DataType *arg_params = glmsg.add_args();
6000    arg_params->set_isarray(false);
6001    arg_params->set_type(GLMessage::DataType::INT);
6002    arg_params->add_intvalue((int)params);
6003
6004    // call function
6005    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6006    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6007    glContext->hooks->gl.glGetBufferPointervOES(target, pname, params);
6008    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6009    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6010
6011    void *pointerArgs[] = {
6012        (void *) params,
6013    };
6014
6015    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6016                              threadStartTime, threadEndTime,
6017                              &glmsg, pointerArgs);
6018    glContext->traceGLMessage(&glmsg);
6019}
6020
6021void GLTrace_glTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels) {
6022    GLMessage glmsg;
6023    GLTraceContext *glContext = getGLTraceContext();
6024
6025    glmsg.set_function(GLMessage::glTexImage3DOES);
6026
6027    // copy argument target
6028    GLMessage_DataType *arg_target = glmsg.add_args();
6029    arg_target->set_isarray(false);
6030    arg_target->set_type(GLMessage::DataType::ENUM);
6031    arg_target->add_intvalue((int)target);
6032
6033    // copy argument level
6034    GLMessage_DataType *arg_level = glmsg.add_args();
6035    arg_level->set_isarray(false);
6036    arg_level->set_type(GLMessage::DataType::INT);
6037    arg_level->add_intvalue(level);
6038
6039    // copy argument internalformat
6040    GLMessage_DataType *arg_internalformat = glmsg.add_args();
6041    arg_internalformat->set_isarray(false);
6042    arg_internalformat->set_type(GLMessage::DataType::ENUM);
6043    arg_internalformat->add_intvalue((int)internalformat);
6044
6045    // copy argument width
6046    GLMessage_DataType *arg_width = glmsg.add_args();
6047    arg_width->set_isarray(false);
6048    arg_width->set_type(GLMessage::DataType::INT);
6049    arg_width->add_intvalue(width);
6050
6051    // copy argument height
6052    GLMessage_DataType *arg_height = glmsg.add_args();
6053    arg_height->set_isarray(false);
6054    arg_height->set_type(GLMessage::DataType::INT);
6055    arg_height->add_intvalue(height);
6056
6057    // copy argument depth
6058    GLMessage_DataType *arg_depth = glmsg.add_args();
6059    arg_depth->set_isarray(false);
6060    arg_depth->set_type(GLMessage::DataType::INT);
6061    arg_depth->add_intvalue(depth);
6062
6063    // copy argument border
6064    GLMessage_DataType *arg_border = glmsg.add_args();
6065    arg_border->set_isarray(false);
6066    arg_border->set_type(GLMessage::DataType::INT);
6067    arg_border->add_intvalue(border);
6068
6069    // copy argument format
6070    GLMessage_DataType *arg_format = glmsg.add_args();
6071    arg_format->set_isarray(false);
6072    arg_format->set_type(GLMessage::DataType::ENUM);
6073    arg_format->add_intvalue((int)format);
6074
6075    // copy argument type
6076    GLMessage_DataType *arg_type = glmsg.add_args();
6077    arg_type->set_isarray(false);
6078    arg_type->set_type(GLMessage::DataType::ENUM);
6079    arg_type->add_intvalue((int)type);
6080
6081    // copy argument pixels
6082    GLMessage_DataType *arg_pixels = glmsg.add_args();
6083    arg_pixels->set_isarray(false);
6084    arg_pixels->set_type(GLMessage::DataType::INT);
6085    arg_pixels->add_intvalue((int)pixels);
6086
6087    // call function
6088    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6089    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6090    glContext->hooks->gl.glTexImage3DOES(target, level, internalformat, width, height, depth, border, format, type, pixels);
6091    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6092    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6093
6094    void *pointerArgs[] = {
6095        (void *) pixels,
6096    };
6097
6098    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6099                              threadStartTime, threadEndTime,
6100                              &glmsg, pointerArgs);
6101    glContext->traceGLMessage(&glmsg);
6102}
6103
6104void 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) {
6105    GLMessage glmsg;
6106    GLTraceContext *glContext = getGLTraceContext();
6107
6108    glmsg.set_function(GLMessage::glTexSubImage3DOES);
6109
6110    // copy argument target
6111    GLMessage_DataType *arg_target = glmsg.add_args();
6112    arg_target->set_isarray(false);
6113    arg_target->set_type(GLMessage::DataType::ENUM);
6114    arg_target->add_intvalue((int)target);
6115
6116    // copy argument level
6117    GLMessage_DataType *arg_level = glmsg.add_args();
6118    arg_level->set_isarray(false);
6119    arg_level->set_type(GLMessage::DataType::INT);
6120    arg_level->add_intvalue(level);
6121
6122    // copy argument xoffset
6123    GLMessage_DataType *arg_xoffset = glmsg.add_args();
6124    arg_xoffset->set_isarray(false);
6125    arg_xoffset->set_type(GLMessage::DataType::INT);
6126    arg_xoffset->add_intvalue(xoffset);
6127
6128    // copy argument yoffset
6129    GLMessage_DataType *arg_yoffset = glmsg.add_args();
6130    arg_yoffset->set_isarray(false);
6131    arg_yoffset->set_type(GLMessage::DataType::INT);
6132    arg_yoffset->add_intvalue(yoffset);
6133
6134    // copy argument zoffset
6135    GLMessage_DataType *arg_zoffset = glmsg.add_args();
6136    arg_zoffset->set_isarray(false);
6137    arg_zoffset->set_type(GLMessage::DataType::INT);
6138    arg_zoffset->add_intvalue(zoffset);
6139
6140    // copy argument width
6141    GLMessage_DataType *arg_width = glmsg.add_args();
6142    arg_width->set_isarray(false);
6143    arg_width->set_type(GLMessage::DataType::INT);
6144    arg_width->add_intvalue(width);
6145
6146    // copy argument height
6147    GLMessage_DataType *arg_height = glmsg.add_args();
6148    arg_height->set_isarray(false);
6149    arg_height->set_type(GLMessage::DataType::INT);
6150    arg_height->add_intvalue(height);
6151
6152    // copy argument depth
6153    GLMessage_DataType *arg_depth = glmsg.add_args();
6154    arg_depth->set_isarray(false);
6155    arg_depth->set_type(GLMessage::DataType::INT);
6156    arg_depth->add_intvalue(depth);
6157
6158    // copy argument format
6159    GLMessage_DataType *arg_format = glmsg.add_args();
6160    arg_format->set_isarray(false);
6161    arg_format->set_type(GLMessage::DataType::ENUM);
6162    arg_format->add_intvalue((int)format);
6163
6164    // copy argument type
6165    GLMessage_DataType *arg_type = glmsg.add_args();
6166    arg_type->set_isarray(false);
6167    arg_type->set_type(GLMessage::DataType::ENUM);
6168    arg_type->add_intvalue((int)type);
6169
6170    // copy argument pixels
6171    GLMessage_DataType *arg_pixels = glmsg.add_args();
6172    arg_pixels->set_isarray(false);
6173    arg_pixels->set_type(GLMessage::DataType::INT);
6174    arg_pixels->add_intvalue((int)pixels);
6175
6176    // call function
6177    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6178    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6179    glContext->hooks->gl.glTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
6180    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6181    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6182
6183    void *pointerArgs[] = {
6184        (void *) pixels,
6185    };
6186
6187    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6188                              threadStartTime, threadEndTime,
6189                              &glmsg, pointerArgs);
6190    glContext->traceGLMessage(&glmsg);
6191}
6192
6193void GLTrace_glCopyTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) {
6194    GLMessage glmsg;
6195    GLTraceContext *glContext = getGLTraceContext();
6196
6197    glmsg.set_function(GLMessage::glCopyTexSubImage3DOES);
6198
6199    // copy argument target
6200    GLMessage_DataType *arg_target = glmsg.add_args();
6201    arg_target->set_isarray(false);
6202    arg_target->set_type(GLMessage::DataType::ENUM);
6203    arg_target->add_intvalue((int)target);
6204
6205    // copy argument level
6206    GLMessage_DataType *arg_level = glmsg.add_args();
6207    arg_level->set_isarray(false);
6208    arg_level->set_type(GLMessage::DataType::INT);
6209    arg_level->add_intvalue(level);
6210
6211    // copy argument xoffset
6212    GLMessage_DataType *arg_xoffset = glmsg.add_args();
6213    arg_xoffset->set_isarray(false);
6214    arg_xoffset->set_type(GLMessage::DataType::INT);
6215    arg_xoffset->add_intvalue(xoffset);
6216
6217    // copy argument yoffset
6218    GLMessage_DataType *arg_yoffset = glmsg.add_args();
6219    arg_yoffset->set_isarray(false);
6220    arg_yoffset->set_type(GLMessage::DataType::INT);
6221    arg_yoffset->add_intvalue(yoffset);
6222
6223    // copy argument zoffset
6224    GLMessage_DataType *arg_zoffset = glmsg.add_args();
6225    arg_zoffset->set_isarray(false);
6226    arg_zoffset->set_type(GLMessage::DataType::INT);
6227    arg_zoffset->add_intvalue(zoffset);
6228
6229    // copy argument x
6230    GLMessage_DataType *arg_x = glmsg.add_args();
6231    arg_x->set_isarray(false);
6232    arg_x->set_type(GLMessage::DataType::INT);
6233    arg_x->add_intvalue(x);
6234
6235    // copy argument y
6236    GLMessage_DataType *arg_y = glmsg.add_args();
6237    arg_y->set_isarray(false);
6238    arg_y->set_type(GLMessage::DataType::INT);
6239    arg_y->add_intvalue(y);
6240
6241    // copy argument width
6242    GLMessage_DataType *arg_width = glmsg.add_args();
6243    arg_width->set_isarray(false);
6244    arg_width->set_type(GLMessage::DataType::INT);
6245    arg_width->add_intvalue(width);
6246
6247    // copy argument height
6248    GLMessage_DataType *arg_height = glmsg.add_args();
6249    arg_height->set_isarray(false);
6250    arg_height->set_type(GLMessage::DataType::INT);
6251    arg_height->add_intvalue(height);
6252
6253    // call function
6254    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6255    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6256    glContext->hooks->gl.glCopyTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, x, y, width, height);
6257    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6258    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6259
6260    void *pointerArgs[] = {
6261    };
6262
6263    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6264                              threadStartTime, threadEndTime,
6265                              &glmsg, pointerArgs);
6266    glContext->traceGLMessage(&glmsg);
6267}
6268
6269void GLTrace_glCompressedTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data) {
6270    GLMessage glmsg;
6271    GLTraceContext *glContext = getGLTraceContext();
6272
6273    glmsg.set_function(GLMessage::glCompressedTexImage3DOES);
6274
6275    // copy argument target
6276    GLMessage_DataType *arg_target = glmsg.add_args();
6277    arg_target->set_isarray(false);
6278    arg_target->set_type(GLMessage::DataType::ENUM);
6279    arg_target->add_intvalue((int)target);
6280
6281    // copy argument level
6282    GLMessage_DataType *arg_level = glmsg.add_args();
6283    arg_level->set_isarray(false);
6284    arg_level->set_type(GLMessage::DataType::INT);
6285    arg_level->add_intvalue(level);
6286
6287    // copy argument internalformat
6288    GLMessage_DataType *arg_internalformat = glmsg.add_args();
6289    arg_internalformat->set_isarray(false);
6290    arg_internalformat->set_type(GLMessage::DataType::ENUM);
6291    arg_internalformat->add_intvalue((int)internalformat);
6292
6293    // copy argument width
6294    GLMessage_DataType *arg_width = glmsg.add_args();
6295    arg_width->set_isarray(false);
6296    arg_width->set_type(GLMessage::DataType::INT);
6297    arg_width->add_intvalue(width);
6298
6299    // copy argument height
6300    GLMessage_DataType *arg_height = glmsg.add_args();
6301    arg_height->set_isarray(false);
6302    arg_height->set_type(GLMessage::DataType::INT);
6303    arg_height->add_intvalue(height);
6304
6305    // copy argument depth
6306    GLMessage_DataType *arg_depth = glmsg.add_args();
6307    arg_depth->set_isarray(false);
6308    arg_depth->set_type(GLMessage::DataType::INT);
6309    arg_depth->add_intvalue(depth);
6310
6311    // copy argument border
6312    GLMessage_DataType *arg_border = glmsg.add_args();
6313    arg_border->set_isarray(false);
6314    arg_border->set_type(GLMessage::DataType::INT);
6315    arg_border->add_intvalue(border);
6316
6317    // copy argument imageSize
6318    GLMessage_DataType *arg_imageSize = glmsg.add_args();
6319    arg_imageSize->set_isarray(false);
6320    arg_imageSize->set_type(GLMessage::DataType::INT);
6321    arg_imageSize->add_intvalue(imageSize);
6322
6323    // copy argument data
6324    GLMessage_DataType *arg_data = glmsg.add_args();
6325    arg_data->set_isarray(false);
6326    arg_data->set_type(GLMessage::DataType::INT);
6327    arg_data->add_intvalue((int)data);
6328
6329    // call function
6330    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6331    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6332    glContext->hooks->gl.glCompressedTexImage3DOES(target, level, internalformat, width, height, depth, border, imageSize, data);
6333    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6334    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6335
6336    void *pointerArgs[] = {
6337        (void *) data,
6338    };
6339
6340    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6341                              threadStartTime, threadEndTime,
6342                              &glmsg, pointerArgs);
6343    glContext->traceGLMessage(&glmsg);
6344}
6345
6346void 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) {
6347    GLMessage glmsg;
6348    GLTraceContext *glContext = getGLTraceContext();
6349
6350    glmsg.set_function(GLMessage::glCompressedTexSubImage3DOES);
6351
6352    // copy argument target
6353    GLMessage_DataType *arg_target = glmsg.add_args();
6354    arg_target->set_isarray(false);
6355    arg_target->set_type(GLMessage::DataType::ENUM);
6356    arg_target->add_intvalue((int)target);
6357
6358    // copy argument level
6359    GLMessage_DataType *arg_level = glmsg.add_args();
6360    arg_level->set_isarray(false);
6361    arg_level->set_type(GLMessage::DataType::INT);
6362    arg_level->add_intvalue(level);
6363
6364    // copy argument xoffset
6365    GLMessage_DataType *arg_xoffset = glmsg.add_args();
6366    arg_xoffset->set_isarray(false);
6367    arg_xoffset->set_type(GLMessage::DataType::INT);
6368    arg_xoffset->add_intvalue(xoffset);
6369
6370    // copy argument yoffset
6371    GLMessage_DataType *arg_yoffset = glmsg.add_args();
6372    arg_yoffset->set_isarray(false);
6373    arg_yoffset->set_type(GLMessage::DataType::INT);
6374    arg_yoffset->add_intvalue(yoffset);
6375
6376    // copy argument zoffset
6377    GLMessage_DataType *arg_zoffset = glmsg.add_args();
6378    arg_zoffset->set_isarray(false);
6379    arg_zoffset->set_type(GLMessage::DataType::INT);
6380    arg_zoffset->add_intvalue(zoffset);
6381
6382    // copy argument width
6383    GLMessage_DataType *arg_width = glmsg.add_args();
6384    arg_width->set_isarray(false);
6385    arg_width->set_type(GLMessage::DataType::INT);
6386    arg_width->add_intvalue(width);
6387
6388    // copy argument height
6389    GLMessage_DataType *arg_height = glmsg.add_args();
6390    arg_height->set_isarray(false);
6391    arg_height->set_type(GLMessage::DataType::INT);
6392    arg_height->add_intvalue(height);
6393
6394    // copy argument depth
6395    GLMessage_DataType *arg_depth = glmsg.add_args();
6396    arg_depth->set_isarray(false);
6397    arg_depth->set_type(GLMessage::DataType::INT);
6398    arg_depth->add_intvalue(depth);
6399
6400    // copy argument format
6401    GLMessage_DataType *arg_format = glmsg.add_args();
6402    arg_format->set_isarray(false);
6403    arg_format->set_type(GLMessage::DataType::ENUM);
6404    arg_format->add_intvalue((int)format);
6405
6406    // copy argument imageSize
6407    GLMessage_DataType *arg_imageSize = glmsg.add_args();
6408    arg_imageSize->set_isarray(false);
6409    arg_imageSize->set_type(GLMessage::DataType::INT);
6410    arg_imageSize->add_intvalue(imageSize);
6411
6412    // copy argument data
6413    GLMessage_DataType *arg_data = glmsg.add_args();
6414    arg_data->set_isarray(false);
6415    arg_data->set_type(GLMessage::DataType::INT);
6416    arg_data->add_intvalue((int)data);
6417
6418    // call function
6419    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6420    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6421    glContext->hooks->gl.glCompressedTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
6422    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6423    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6424
6425    void *pointerArgs[] = {
6426        (void *) data,
6427    };
6428
6429    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6430                              threadStartTime, threadEndTime,
6431                              &glmsg, pointerArgs);
6432    glContext->traceGLMessage(&glmsg);
6433}
6434
6435void GLTrace_glFramebufferTexture3DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) {
6436    GLMessage glmsg;
6437    GLTraceContext *glContext = getGLTraceContext();
6438
6439    glmsg.set_function(GLMessage::glFramebufferTexture3DOES);
6440
6441    // copy argument target
6442    GLMessage_DataType *arg_target = glmsg.add_args();
6443    arg_target->set_isarray(false);
6444    arg_target->set_type(GLMessage::DataType::ENUM);
6445    arg_target->add_intvalue((int)target);
6446
6447    // copy argument attachment
6448    GLMessage_DataType *arg_attachment = glmsg.add_args();
6449    arg_attachment->set_isarray(false);
6450    arg_attachment->set_type(GLMessage::DataType::ENUM);
6451    arg_attachment->add_intvalue((int)attachment);
6452
6453    // copy argument textarget
6454    GLMessage_DataType *arg_textarget = glmsg.add_args();
6455    arg_textarget->set_isarray(false);
6456    arg_textarget->set_type(GLMessage::DataType::ENUM);
6457    arg_textarget->add_intvalue((int)textarget);
6458
6459    // copy argument texture
6460    GLMessage_DataType *arg_texture = glmsg.add_args();
6461    arg_texture->set_isarray(false);
6462    arg_texture->set_type(GLMessage::DataType::INT);
6463    arg_texture->add_intvalue(texture);
6464
6465    // copy argument level
6466    GLMessage_DataType *arg_level = glmsg.add_args();
6467    arg_level->set_isarray(false);
6468    arg_level->set_type(GLMessage::DataType::INT);
6469    arg_level->add_intvalue(level);
6470
6471    // copy argument zoffset
6472    GLMessage_DataType *arg_zoffset = glmsg.add_args();
6473    arg_zoffset->set_isarray(false);
6474    arg_zoffset->set_type(GLMessage::DataType::INT);
6475    arg_zoffset->add_intvalue(zoffset);
6476
6477    // call function
6478    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6479    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6480    glContext->hooks->gl.glFramebufferTexture3DOES(target, attachment, textarget, texture, level, zoffset);
6481    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6482    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6483
6484    void *pointerArgs[] = {
6485    };
6486
6487    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6488                              threadStartTime, threadEndTime,
6489                              &glmsg, pointerArgs);
6490    glContext->traceGLMessage(&glmsg);
6491}
6492
6493void GLTrace_glBindVertexArrayOES(GLuint array) {
6494    GLMessage glmsg;
6495    GLTraceContext *glContext = getGLTraceContext();
6496
6497    glmsg.set_function(GLMessage::glBindVertexArrayOES);
6498
6499    // copy argument array
6500    GLMessage_DataType *arg_array = glmsg.add_args();
6501    arg_array->set_isarray(false);
6502    arg_array->set_type(GLMessage::DataType::INT);
6503    arg_array->add_intvalue(array);
6504
6505    // call function
6506    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6507    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6508    glContext->hooks->gl.glBindVertexArrayOES(array);
6509    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6510    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6511
6512    void *pointerArgs[] = {
6513    };
6514
6515    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6516                              threadStartTime, threadEndTime,
6517                              &glmsg, pointerArgs);
6518    glContext->traceGLMessage(&glmsg);
6519}
6520
6521void GLTrace_glDeleteVertexArraysOES(GLsizei n, const GLuint *arrays) {
6522    GLMessage glmsg;
6523    GLTraceContext *glContext = getGLTraceContext();
6524
6525    glmsg.set_function(GLMessage::glDeleteVertexArraysOES);
6526
6527    // copy argument n
6528    GLMessage_DataType *arg_n = glmsg.add_args();
6529    arg_n->set_isarray(false);
6530    arg_n->set_type(GLMessage::DataType::INT);
6531    arg_n->add_intvalue(n);
6532
6533    // copy argument arrays
6534    GLMessage_DataType *arg_arrays = glmsg.add_args();
6535    arg_arrays->set_isarray(false);
6536    arg_arrays->set_type(GLMessage::DataType::INT);
6537    arg_arrays->add_intvalue((int)arrays);
6538
6539    // call function
6540    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6541    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6542    glContext->hooks->gl.glDeleteVertexArraysOES(n, arrays);
6543    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6544    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6545
6546    void *pointerArgs[] = {
6547        (void *) arrays,
6548    };
6549
6550    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6551                              threadStartTime, threadEndTime,
6552                              &glmsg, pointerArgs);
6553    glContext->traceGLMessage(&glmsg);
6554}
6555
6556void GLTrace_glGenVertexArraysOES(GLsizei n, GLuint *arrays) {
6557    GLMessage glmsg;
6558    GLTraceContext *glContext = getGLTraceContext();
6559
6560    glmsg.set_function(GLMessage::glGenVertexArraysOES);
6561
6562    // copy argument n
6563    GLMessage_DataType *arg_n = glmsg.add_args();
6564    arg_n->set_isarray(false);
6565    arg_n->set_type(GLMessage::DataType::INT);
6566    arg_n->add_intvalue(n);
6567
6568    // copy argument arrays
6569    GLMessage_DataType *arg_arrays = glmsg.add_args();
6570    arg_arrays->set_isarray(false);
6571    arg_arrays->set_type(GLMessage::DataType::INT);
6572    arg_arrays->add_intvalue((int)arrays);
6573
6574    // call function
6575    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6576    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6577    glContext->hooks->gl.glGenVertexArraysOES(n, arrays);
6578    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6579    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6580
6581    void *pointerArgs[] = {
6582        (void *) arrays,
6583    };
6584
6585    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6586                              threadStartTime, threadEndTime,
6587                              &glmsg, pointerArgs);
6588    glContext->traceGLMessage(&glmsg);
6589}
6590
6591GLboolean GLTrace_glIsVertexArrayOES(GLuint array) {
6592    GLMessage glmsg;
6593    GLTraceContext *glContext = getGLTraceContext();
6594
6595    glmsg.set_function(GLMessage::glIsVertexArrayOES);
6596
6597    // copy argument array
6598    GLMessage_DataType *arg_array = glmsg.add_args();
6599    arg_array->set_isarray(false);
6600    arg_array->set_type(GLMessage::DataType::INT);
6601    arg_array->add_intvalue(array);
6602
6603    // call function
6604    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6605    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6606    GLboolean retValue = glContext->hooks->gl.glIsVertexArrayOES(array);
6607    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6608    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6609
6610    // set return value
6611    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
6612    rt->set_isarray(false);
6613    rt->set_type(GLMessage::DataType::BOOL);
6614    rt->add_boolvalue(retValue);
6615
6616    void *pointerArgs[] = {
6617    };
6618
6619    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6620                              threadStartTime, threadEndTime,
6621                              &glmsg, pointerArgs);
6622    glContext->traceGLMessage(&glmsg);
6623
6624    return retValue;
6625}
6626
6627void GLTrace_glGetPerfMonitorGroupsAMD(GLint *numGroups, GLsizei groupsSize, GLuint *groups) {
6628    GLMessage glmsg;
6629    GLTraceContext *glContext = getGLTraceContext();
6630
6631    glmsg.set_function(GLMessage::glGetPerfMonitorGroupsAMD);
6632
6633    // copy argument numGroups
6634    GLMessage_DataType *arg_numGroups = glmsg.add_args();
6635    arg_numGroups->set_isarray(false);
6636    arg_numGroups->set_type(GLMessage::DataType::INT);
6637    arg_numGroups->add_intvalue((int)numGroups);
6638
6639    // copy argument groupsSize
6640    GLMessage_DataType *arg_groupsSize = glmsg.add_args();
6641    arg_groupsSize->set_isarray(false);
6642    arg_groupsSize->set_type(GLMessage::DataType::INT);
6643    arg_groupsSize->add_intvalue(groupsSize);
6644
6645    // copy argument groups
6646    GLMessage_DataType *arg_groups = glmsg.add_args();
6647    arg_groups->set_isarray(false);
6648    arg_groups->set_type(GLMessage::DataType::INT);
6649    arg_groups->add_intvalue((int)groups);
6650
6651    // call function
6652    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6653    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6654    glContext->hooks->gl.glGetPerfMonitorGroupsAMD(numGroups, groupsSize, groups);
6655    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6656    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6657
6658    void *pointerArgs[] = {
6659        (void *) numGroups,
6660        (void *) groups,
6661    };
6662
6663    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6664                              threadStartTime, threadEndTime,
6665                              &glmsg, pointerArgs);
6666    glContext->traceGLMessage(&glmsg);
6667}
6668
6669void GLTrace_glGetPerfMonitorCountersAMD(GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters) {
6670    GLMessage glmsg;
6671    GLTraceContext *glContext = getGLTraceContext();
6672
6673    glmsg.set_function(GLMessage::glGetPerfMonitorCountersAMD);
6674
6675    // copy argument group
6676    GLMessage_DataType *arg_group = glmsg.add_args();
6677    arg_group->set_isarray(false);
6678    arg_group->set_type(GLMessage::DataType::INT);
6679    arg_group->add_intvalue(group);
6680
6681    // copy argument numCounters
6682    GLMessage_DataType *arg_numCounters = glmsg.add_args();
6683    arg_numCounters->set_isarray(false);
6684    arg_numCounters->set_type(GLMessage::DataType::INT);
6685    arg_numCounters->add_intvalue((int)numCounters);
6686
6687    // copy argument maxActiveCounters
6688    GLMessage_DataType *arg_maxActiveCounters = glmsg.add_args();
6689    arg_maxActiveCounters->set_isarray(false);
6690    arg_maxActiveCounters->set_type(GLMessage::DataType::INT);
6691    arg_maxActiveCounters->add_intvalue((int)maxActiveCounters);
6692
6693    // copy argument counterSize
6694    GLMessage_DataType *arg_counterSize = glmsg.add_args();
6695    arg_counterSize->set_isarray(false);
6696    arg_counterSize->set_type(GLMessage::DataType::INT);
6697    arg_counterSize->add_intvalue(counterSize);
6698
6699    // copy argument counters
6700    GLMessage_DataType *arg_counters = glmsg.add_args();
6701    arg_counters->set_isarray(false);
6702    arg_counters->set_type(GLMessage::DataType::INT);
6703    arg_counters->add_intvalue((int)counters);
6704
6705    // call function
6706    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6707    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6708    glContext->hooks->gl.glGetPerfMonitorCountersAMD(group, numCounters, maxActiveCounters, counterSize, counters);
6709    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6710    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6711
6712    void *pointerArgs[] = {
6713        (void *) numCounters,
6714        (void *) maxActiveCounters,
6715        (void *) counters,
6716    };
6717
6718    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6719                              threadStartTime, threadEndTime,
6720                              &glmsg, pointerArgs);
6721    glContext->traceGLMessage(&glmsg);
6722}
6723
6724void GLTrace_glGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString) {
6725    GLMessage glmsg;
6726    GLTraceContext *glContext = getGLTraceContext();
6727
6728    glmsg.set_function(GLMessage::glGetPerfMonitorGroupStringAMD);
6729
6730    // copy argument group
6731    GLMessage_DataType *arg_group = glmsg.add_args();
6732    arg_group->set_isarray(false);
6733    arg_group->set_type(GLMessage::DataType::INT);
6734    arg_group->add_intvalue(group);
6735
6736    // copy argument bufSize
6737    GLMessage_DataType *arg_bufSize = glmsg.add_args();
6738    arg_bufSize->set_isarray(false);
6739    arg_bufSize->set_type(GLMessage::DataType::INT);
6740    arg_bufSize->add_intvalue(bufSize);
6741
6742    // copy argument length
6743    GLMessage_DataType *arg_length = glmsg.add_args();
6744    arg_length->set_isarray(false);
6745    arg_length->set_type(GLMessage::DataType::INT);
6746    arg_length->add_intvalue((int)length);
6747
6748    // copy argument groupString
6749    GLMessage_DataType *arg_groupString = glmsg.add_args();
6750    arg_groupString->set_isarray(false);
6751    arg_groupString->set_type(GLMessage::DataType::INT);
6752    arg_groupString->add_intvalue((int)groupString);
6753
6754    // call function
6755    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6756    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6757    glContext->hooks->gl.glGetPerfMonitorGroupStringAMD(group, bufSize, length, groupString);
6758    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6759    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6760
6761    void *pointerArgs[] = {
6762        (void *) length,
6763        (void *) groupString,
6764    };
6765
6766    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6767                              threadStartTime, threadEndTime,
6768                              &glmsg, pointerArgs);
6769    glContext->traceGLMessage(&glmsg);
6770}
6771
6772void GLTrace_glGetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString) {
6773    GLMessage glmsg;
6774    GLTraceContext *glContext = getGLTraceContext();
6775
6776    glmsg.set_function(GLMessage::glGetPerfMonitorCounterStringAMD);
6777
6778    // copy argument group
6779    GLMessage_DataType *arg_group = glmsg.add_args();
6780    arg_group->set_isarray(false);
6781    arg_group->set_type(GLMessage::DataType::INT);
6782    arg_group->add_intvalue(group);
6783
6784    // copy argument counter
6785    GLMessage_DataType *arg_counter = glmsg.add_args();
6786    arg_counter->set_isarray(false);
6787    arg_counter->set_type(GLMessage::DataType::INT);
6788    arg_counter->add_intvalue(counter);
6789
6790    // copy argument bufSize
6791    GLMessage_DataType *arg_bufSize = glmsg.add_args();
6792    arg_bufSize->set_isarray(false);
6793    arg_bufSize->set_type(GLMessage::DataType::INT);
6794    arg_bufSize->add_intvalue(bufSize);
6795
6796    // copy argument length
6797    GLMessage_DataType *arg_length = glmsg.add_args();
6798    arg_length->set_isarray(false);
6799    arg_length->set_type(GLMessage::DataType::INT);
6800    arg_length->add_intvalue((int)length);
6801
6802    // copy argument counterString
6803    GLMessage_DataType *arg_counterString = glmsg.add_args();
6804    arg_counterString->set_isarray(false);
6805    arg_counterString->set_type(GLMessage::DataType::INT);
6806    arg_counterString->add_intvalue((int)counterString);
6807
6808    // call function
6809    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6810    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6811    glContext->hooks->gl.glGetPerfMonitorCounterStringAMD(group, counter, bufSize, length, counterString);
6812    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6813    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6814
6815    void *pointerArgs[] = {
6816        (void *) length,
6817        (void *) counterString,
6818    };
6819
6820    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6821                              threadStartTime, threadEndTime,
6822                              &glmsg, pointerArgs);
6823    glContext->traceGLMessage(&glmsg);
6824}
6825
6826void GLTrace_glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, GLvoid *data) {
6827    GLMessage glmsg;
6828    GLTraceContext *glContext = getGLTraceContext();
6829
6830    glmsg.set_function(GLMessage::glGetPerfMonitorCounterInfoAMD);
6831
6832    // copy argument group
6833    GLMessage_DataType *arg_group = glmsg.add_args();
6834    arg_group->set_isarray(false);
6835    arg_group->set_type(GLMessage::DataType::INT);
6836    arg_group->add_intvalue(group);
6837
6838    // copy argument counter
6839    GLMessage_DataType *arg_counter = glmsg.add_args();
6840    arg_counter->set_isarray(false);
6841    arg_counter->set_type(GLMessage::DataType::INT);
6842    arg_counter->add_intvalue(counter);
6843
6844    // copy argument pname
6845    GLMessage_DataType *arg_pname = glmsg.add_args();
6846    arg_pname->set_isarray(false);
6847    arg_pname->set_type(GLMessage::DataType::ENUM);
6848    arg_pname->add_intvalue((int)pname);
6849
6850    // copy argument data
6851    GLMessage_DataType *arg_data = glmsg.add_args();
6852    arg_data->set_isarray(false);
6853    arg_data->set_type(GLMessage::DataType::INT);
6854    arg_data->add_intvalue((int)data);
6855
6856    // call function
6857    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6858    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6859    glContext->hooks->gl.glGetPerfMonitorCounterInfoAMD(group, counter, pname, data);
6860    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6861    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6862
6863    void *pointerArgs[] = {
6864        (void *) data,
6865    };
6866
6867    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6868                              threadStartTime, threadEndTime,
6869                              &glmsg, pointerArgs);
6870    glContext->traceGLMessage(&glmsg);
6871}
6872
6873void GLTrace_glGenPerfMonitorsAMD(GLsizei n, GLuint *monitors) {
6874    GLMessage glmsg;
6875    GLTraceContext *glContext = getGLTraceContext();
6876
6877    glmsg.set_function(GLMessage::glGenPerfMonitorsAMD);
6878
6879    // copy argument n
6880    GLMessage_DataType *arg_n = glmsg.add_args();
6881    arg_n->set_isarray(false);
6882    arg_n->set_type(GLMessage::DataType::INT);
6883    arg_n->add_intvalue(n);
6884
6885    // copy argument monitors
6886    GLMessage_DataType *arg_monitors = glmsg.add_args();
6887    arg_monitors->set_isarray(false);
6888    arg_monitors->set_type(GLMessage::DataType::INT);
6889    arg_monitors->add_intvalue((int)monitors);
6890
6891    // call function
6892    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6893    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6894    glContext->hooks->gl.glGenPerfMonitorsAMD(n, monitors);
6895    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6896    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6897
6898    void *pointerArgs[] = {
6899        (void *) monitors,
6900    };
6901
6902    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6903                              threadStartTime, threadEndTime,
6904                              &glmsg, pointerArgs);
6905    glContext->traceGLMessage(&glmsg);
6906}
6907
6908void GLTrace_glDeletePerfMonitorsAMD(GLsizei n, GLuint *monitors) {
6909    GLMessage glmsg;
6910    GLTraceContext *glContext = getGLTraceContext();
6911
6912    glmsg.set_function(GLMessage::glDeletePerfMonitorsAMD);
6913
6914    // copy argument n
6915    GLMessage_DataType *arg_n = glmsg.add_args();
6916    arg_n->set_isarray(false);
6917    arg_n->set_type(GLMessage::DataType::INT);
6918    arg_n->add_intvalue(n);
6919
6920    // copy argument monitors
6921    GLMessage_DataType *arg_monitors = glmsg.add_args();
6922    arg_monitors->set_isarray(false);
6923    arg_monitors->set_type(GLMessage::DataType::INT);
6924    arg_monitors->add_intvalue((int)monitors);
6925
6926    // call function
6927    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6928    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6929    glContext->hooks->gl.glDeletePerfMonitorsAMD(n, monitors);
6930    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6931    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6932
6933    void *pointerArgs[] = {
6934        (void *) monitors,
6935    };
6936
6937    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6938                              threadStartTime, threadEndTime,
6939                              &glmsg, pointerArgs);
6940    glContext->traceGLMessage(&glmsg);
6941}
6942
6943void GLTrace_glSelectPerfMonitorCountersAMD(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList) {
6944    GLMessage glmsg;
6945    GLTraceContext *glContext = getGLTraceContext();
6946
6947    glmsg.set_function(GLMessage::glSelectPerfMonitorCountersAMD);
6948
6949    // copy argument monitor
6950    GLMessage_DataType *arg_monitor = glmsg.add_args();
6951    arg_monitor->set_isarray(false);
6952    arg_monitor->set_type(GLMessage::DataType::INT);
6953    arg_monitor->add_intvalue(monitor);
6954
6955    // copy argument enable
6956    GLMessage_DataType *arg_enable = glmsg.add_args();
6957    arg_enable->set_isarray(false);
6958    arg_enable->set_type(GLMessage::DataType::BOOL);
6959    arg_enable->add_boolvalue(enable);
6960
6961    // copy argument group
6962    GLMessage_DataType *arg_group = glmsg.add_args();
6963    arg_group->set_isarray(false);
6964    arg_group->set_type(GLMessage::DataType::INT);
6965    arg_group->add_intvalue(group);
6966
6967    // copy argument numCounters
6968    GLMessage_DataType *arg_numCounters = glmsg.add_args();
6969    arg_numCounters->set_isarray(false);
6970    arg_numCounters->set_type(GLMessage::DataType::INT);
6971    arg_numCounters->add_intvalue(numCounters);
6972
6973    // copy argument countersList
6974    GLMessage_DataType *arg_countersList = glmsg.add_args();
6975    arg_countersList->set_isarray(false);
6976    arg_countersList->set_type(GLMessage::DataType::INT);
6977    arg_countersList->add_intvalue((int)countersList);
6978
6979    // call function
6980    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6981    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6982    glContext->hooks->gl.glSelectPerfMonitorCountersAMD(monitor, enable, group, numCounters, countersList);
6983    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6984    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6985
6986    void *pointerArgs[] = {
6987        (void *) countersList,
6988    };
6989
6990    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6991                              threadStartTime, threadEndTime,
6992                              &glmsg, pointerArgs);
6993    glContext->traceGLMessage(&glmsg);
6994}
6995
6996void GLTrace_glBeginPerfMonitorAMD(GLuint monitor) {
6997    GLMessage glmsg;
6998    GLTraceContext *glContext = getGLTraceContext();
6999
7000    glmsg.set_function(GLMessage::glBeginPerfMonitorAMD);
7001
7002    // copy argument monitor
7003    GLMessage_DataType *arg_monitor = glmsg.add_args();
7004    arg_monitor->set_isarray(false);
7005    arg_monitor->set_type(GLMessage::DataType::INT);
7006    arg_monitor->add_intvalue(monitor);
7007
7008    // call function
7009    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7010    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7011    glContext->hooks->gl.glBeginPerfMonitorAMD(monitor);
7012    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7013    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7014
7015    void *pointerArgs[] = {
7016    };
7017
7018    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7019                              threadStartTime, threadEndTime,
7020                              &glmsg, pointerArgs);
7021    glContext->traceGLMessage(&glmsg);
7022}
7023
7024void GLTrace_glEndPerfMonitorAMD(GLuint monitor) {
7025    GLMessage glmsg;
7026    GLTraceContext *glContext = getGLTraceContext();
7027
7028    glmsg.set_function(GLMessage::glEndPerfMonitorAMD);
7029
7030    // copy argument monitor
7031    GLMessage_DataType *arg_monitor = glmsg.add_args();
7032    arg_monitor->set_isarray(false);
7033    arg_monitor->set_type(GLMessage::DataType::INT);
7034    arg_monitor->add_intvalue(monitor);
7035
7036    // call function
7037    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7038    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7039    glContext->hooks->gl.glEndPerfMonitorAMD(monitor);
7040    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7041    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7042
7043    void *pointerArgs[] = {
7044    };
7045
7046    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7047                              threadStartTime, threadEndTime,
7048                              &glmsg, pointerArgs);
7049    glContext->traceGLMessage(&glmsg);
7050}
7051
7052void GLTrace_glGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten) {
7053    GLMessage glmsg;
7054    GLTraceContext *glContext = getGLTraceContext();
7055
7056    glmsg.set_function(GLMessage::glGetPerfMonitorCounterDataAMD);
7057
7058    // copy argument monitor
7059    GLMessage_DataType *arg_monitor = glmsg.add_args();
7060    arg_monitor->set_isarray(false);
7061    arg_monitor->set_type(GLMessage::DataType::INT);
7062    arg_monitor->add_intvalue(monitor);
7063
7064    // copy argument pname
7065    GLMessage_DataType *arg_pname = glmsg.add_args();
7066    arg_pname->set_isarray(false);
7067    arg_pname->set_type(GLMessage::DataType::ENUM);
7068    arg_pname->add_intvalue((int)pname);
7069
7070    // copy argument dataSize
7071    GLMessage_DataType *arg_dataSize = glmsg.add_args();
7072    arg_dataSize->set_isarray(false);
7073    arg_dataSize->set_type(GLMessage::DataType::INT);
7074    arg_dataSize->add_intvalue(dataSize);
7075
7076    // copy argument data
7077    GLMessage_DataType *arg_data = glmsg.add_args();
7078    arg_data->set_isarray(false);
7079    arg_data->set_type(GLMessage::DataType::INT);
7080    arg_data->add_intvalue((int)data);
7081
7082    // copy argument bytesWritten
7083    GLMessage_DataType *arg_bytesWritten = glmsg.add_args();
7084    arg_bytesWritten->set_isarray(false);
7085    arg_bytesWritten->set_type(GLMessage::DataType::INT);
7086    arg_bytesWritten->add_intvalue((int)bytesWritten);
7087
7088    // call function
7089    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7090    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7091    glContext->hooks->gl.glGetPerfMonitorCounterDataAMD(monitor, pname, dataSize, data, bytesWritten);
7092    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7093    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7094
7095    void *pointerArgs[] = {
7096        (void *) data,
7097        (void *) bytesWritten,
7098    };
7099
7100    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7101                              threadStartTime, threadEndTime,
7102                              &glmsg, pointerArgs);
7103    glContext->traceGLMessage(&glmsg);
7104}
7105
7106void GLTrace_glBlitFramebufferANGLE(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) {
7107    GLMessage glmsg;
7108    GLTraceContext *glContext = getGLTraceContext();
7109
7110    glmsg.set_function(GLMessage::glBlitFramebufferANGLE);
7111
7112    // copy argument srcX0
7113    GLMessage_DataType *arg_srcX0 = glmsg.add_args();
7114    arg_srcX0->set_isarray(false);
7115    arg_srcX0->set_type(GLMessage::DataType::INT);
7116    arg_srcX0->add_intvalue(srcX0);
7117
7118    // copy argument srcY0
7119    GLMessage_DataType *arg_srcY0 = glmsg.add_args();
7120    arg_srcY0->set_isarray(false);
7121    arg_srcY0->set_type(GLMessage::DataType::INT);
7122    arg_srcY0->add_intvalue(srcY0);
7123
7124    // copy argument srcX1
7125    GLMessage_DataType *arg_srcX1 = glmsg.add_args();
7126    arg_srcX1->set_isarray(false);
7127    arg_srcX1->set_type(GLMessage::DataType::INT);
7128    arg_srcX1->add_intvalue(srcX1);
7129
7130    // copy argument srcY1
7131    GLMessage_DataType *arg_srcY1 = glmsg.add_args();
7132    arg_srcY1->set_isarray(false);
7133    arg_srcY1->set_type(GLMessage::DataType::INT);
7134    arg_srcY1->add_intvalue(srcY1);
7135
7136    // copy argument dstX0
7137    GLMessage_DataType *arg_dstX0 = glmsg.add_args();
7138    arg_dstX0->set_isarray(false);
7139    arg_dstX0->set_type(GLMessage::DataType::INT);
7140    arg_dstX0->add_intvalue(dstX0);
7141
7142    // copy argument dstY0
7143    GLMessage_DataType *arg_dstY0 = glmsg.add_args();
7144    arg_dstY0->set_isarray(false);
7145    arg_dstY0->set_type(GLMessage::DataType::INT);
7146    arg_dstY0->add_intvalue(dstY0);
7147
7148    // copy argument dstX1
7149    GLMessage_DataType *arg_dstX1 = glmsg.add_args();
7150    arg_dstX1->set_isarray(false);
7151    arg_dstX1->set_type(GLMessage::DataType::INT);
7152    arg_dstX1->add_intvalue(dstX1);
7153
7154    // copy argument dstY1
7155    GLMessage_DataType *arg_dstY1 = glmsg.add_args();
7156    arg_dstY1->set_isarray(false);
7157    arg_dstY1->set_type(GLMessage::DataType::INT);
7158    arg_dstY1->add_intvalue(dstY1);
7159
7160    // copy argument mask
7161    GLMessage_DataType *arg_mask = glmsg.add_args();
7162    arg_mask->set_isarray(false);
7163    arg_mask->set_type(GLMessage::DataType::INT);
7164    arg_mask->add_intvalue(mask);
7165
7166    // copy argument filter
7167    GLMessage_DataType *arg_filter = glmsg.add_args();
7168    arg_filter->set_isarray(false);
7169    arg_filter->set_type(GLMessage::DataType::ENUM);
7170    arg_filter->add_intvalue((int)filter);
7171
7172    // call function
7173    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7174    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7175    glContext->hooks->gl.glBlitFramebufferANGLE(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
7176    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7177    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7178
7179    void *pointerArgs[] = {
7180    };
7181
7182    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7183                              threadStartTime, threadEndTime,
7184                              &glmsg, pointerArgs);
7185    glContext->traceGLMessage(&glmsg);
7186}
7187
7188void GLTrace_glRenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
7189    GLMessage glmsg;
7190    GLTraceContext *glContext = getGLTraceContext();
7191
7192    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleANGLE);
7193
7194    // copy argument target
7195    GLMessage_DataType *arg_target = glmsg.add_args();
7196    arg_target->set_isarray(false);
7197    arg_target->set_type(GLMessage::DataType::ENUM);
7198    arg_target->add_intvalue((int)target);
7199
7200    // copy argument samples
7201    GLMessage_DataType *arg_samples = glmsg.add_args();
7202    arg_samples->set_isarray(false);
7203    arg_samples->set_type(GLMessage::DataType::INT);
7204    arg_samples->add_intvalue(samples);
7205
7206    // copy argument internalformat
7207    GLMessage_DataType *arg_internalformat = glmsg.add_args();
7208    arg_internalformat->set_isarray(false);
7209    arg_internalformat->set_type(GLMessage::DataType::ENUM);
7210    arg_internalformat->add_intvalue((int)internalformat);
7211
7212    // copy argument width
7213    GLMessage_DataType *arg_width = glmsg.add_args();
7214    arg_width->set_isarray(false);
7215    arg_width->set_type(GLMessage::DataType::INT);
7216    arg_width->add_intvalue(width);
7217
7218    // copy argument height
7219    GLMessage_DataType *arg_height = glmsg.add_args();
7220    arg_height->set_isarray(false);
7221    arg_height->set_type(GLMessage::DataType::INT);
7222    arg_height->add_intvalue(height);
7223
7224    // call function
7225    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7226    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7227    glContext->hooks->gl.glRenderbufferStorageMultisampleANGLE(target, samples, internalformat, width, height);
7228    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7229    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7230
7231    void *pointerArgs[] = {
7232    };
7233
7234    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7235                              threadStartTime, threadEndTime,
7236                              &glmsg, pointerArgs);
7237    glContext->traceGLMessage(&glmsg);
7238}
7239
7240void GLTrace_glRenderbufferStorageMultisampleAPPLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
7241    GLMessage glmsg;
7242    GLTraceContext *glContext = getGLTraceContext();
7243
7244    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleAPPLE);
7245
7246    // copy argument target
7247    GLMessage_DataType *arg_target = glmsg.add_args();
7248    arg_target->set_isarray(false);
7249    arg_target->set_type(GLMessage::DataType::ENUM);
7250    arg_target->add_intvalue((int)target);
7251
7252    // copy argument samples
7253    GLMessage_DataType *arg_samples = glmsg.add_args();
7254    arg_samples->set_isarray(false);
7255    arg_samples->set_type(GLMessage::DataType::INT);
7256    arg_samples->add_intvalue(samples);
7257
7258    // copy argument internalformat
7259    GLMessage_DataType *arg_internalformat = glmsg.add_args();
7260    arg_internalformat->set_isarray(false);
7261    arg_internalformat->set_type(GLMessage::DataType::ENUM);
7262    arg_internalformat->add_intvalue((int)internalformat);
7263
7264    // copy argument width
7265    GLMessage_DataType *arg_width = glmsg.add_args();
7266    arg_width->set_isarray(false);
7267    arg_width->set_type(GLMessage::DataType::INT);
7268    arg_width->add_intvalue(width);
7269
7270    // copy argument height
7271    GLMessage_DataType *arg_height = glmsg.add_args();
7272    arg_height->set_isarray(false);
7273    arg_height->set_type(GLMessage::DataType::INT);
7274    arg_height->add_intvalue(height);
7275
7276    // call function
7277    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7278    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7279    glContext->hooks->gl.glRenderbufferStorageMultisampleAPPLE(target, samples, internalformat, width, height);
7280    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7281    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7282
7283    void *pointerArgs[] = {
7284    };
7285
7286    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7287                              threadStartTime, threadEndTime,
7288                              &glmsg, pointerArgs);
7289    glContext->traceGLMessage(&glmsg);
7290}
7291
7292void GLTrace_glResolveMultisampleFramebufferAPPLE(void) {
7293    GLMessage glmsg;
7294    GLTraceContext *glContext = getGLTraceContext();
7295
7296    glmsg.set_function(GLMessage::glResolveMultisampleFramebufferAPPLE);
7297
7298    // call function
7299    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7300    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7301    glContext->hooks->gl.glResolveMultisampleFramebufferAPPLE();
7302    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7303    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7304
7305    void *pointerArgs[] = {
7306    };
7307
7308    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7309                              threadStartTime, threadEndTime,
7310                              &glmsg, pointerArgs);
7311    glContext->traceGLMessage(&glmsg);
7312}
7313
7314void GLTrace_glLabelObjectEXT(GLenum type, GLuint object, GLsizei length, const GLchar *label) {
7315    GLMessage glmsg;
7316    GLTraceContext *glContext = getGLTraceContext();
7317
7318    glmsg.set_function(GLMessage::glLabelObjectEXT);
7319
7320    // copy argument type
7321    GLMessage_DataType *arg_type = glmsg.add_args();
7322    arg_type->set_isarray(false);
7323    arg_type->set_type(GLMessage::DataType::ENUM);
7324    arg_type->add_intvalue((int)type);
7325
7326    // copy argument object
7327    GLMessage_DataType *arg_object = glmsg.add_args();
7328    arg_object->set_isarray(false);
7329    arg_object->set_type(GLMessage::DataType::INT);
7330    arg_object->add_intvalue(object);
7331
7332    // copy argument length
7333    GLMessage_DataType *arg_length = glmsg.add_args();
7334    arg_length->set_isarray(false);
7335    arg_length->set_type(GLMessage::DataType::INT);
7336    arg_length->add_intvalue(length);
7337
7338    // copy argument label
7339    GLMessage_DataType *arg_label = glmsg.add_args();
7340    arg_label->set_isarray(false);
7341    arg_label->set_type(GLMessage::DataType::INT);
7342    arg_label->add_intvalue((int)label);
7343
7344    // call function
7345    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7346    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7347    glContext->hooks->gl.glLabelObjectEXT(type, object, length, label);
7348    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7349    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7350
7351    void *pointerArgs[] = {
7352        (void *) label,
7353    };
7354
7355    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7356                              threadStartTime, threadEndTime,
7357                              &glmsg, pointerArgs);
7358    glContext->traceGLMessage(&glmsg);
7359}
7360
7361void GLTrace_glGetObjectLabelEXT(GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label) {
7362    GLMessage glmsg;
7363    GLTraceContext *glContext = getGLTraceContext();
7364
7365    glmsg.set_function(GLMessage::glGetObjectLabelEXT);
7366
7367    // copy argument type
7368    GLMessage_DataType *arg_type = glmsg.add_args();
7369    arg_type->set_isarray(false);
7370    arg_type->set_type(GLMessage::DataType::ENUM);
7371    arg_type->add_intvalue((int)type);
7372
7373    // copy argument object
7374    GLMessage_DataType *arg_object = glmsg.add_args();
7375    arg_object->set_isarray(false);
7376    arg_object->set_type(GLMessage::DataType::INT);
7377    arg_object->add_intvalue(object);
7378
7379    // copy argument bufSize
7380    GLMessage_DataType *arg_bufSize = glmsg.add_args();
7381    arg_bufSize->set_isarray(false);
7382    arg_bufSize->set_type(GLMessage::DataType::INT);
7383    arg_bufSize->add_intvalue(bufSize);
7384
7385    // copy argument length
7386    GLMessage_DataType *arg_length = glmsg.add_args();
7387    arg_length->set_isarray(false);
7388    arg_length->set_type(GLMessage::DataType::INT);
7389    arg_length->add_intvalue((int)length);
7390
7391    // copy argument label
7392    GLMessage_DataType *arg_label = glmsg.add_args();
7393    arg_label->set_isarray(false);
7394    arg_label->set_type(GLMessage::DataType::INT);
7395    arg_label->add_intvalue((int)label);
7396
7397    // call function
7398    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7399    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7400    glContext->hooks->gl.glGetObjectLabelEXT(type, object, bufSize, length, label);
7401    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7402    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7403
7404    void *pointerArgs[] = {
7405        (void *) length,
7406        (void *) label,
7407    };
7408
7409    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7410                              threadStartTime, threadEndTime,
7411                              &glmsg, pointerArgs);
7412    glContext->traceGLMessage(&glmsg);
7413}
7414
7415void GLTrace_glInsertEventMarkerEXT(GLsizei length, const GLchar *marker) {
7416    GLMessage glmsg;
7417    GLTraceContext *glContext = getGLTraceContext();
7418
7419    glmsg.set_function(GLMessage::glInsertEventMarkerEXT);
7420
7421    // copy argument length
7422    GLMessage_DataType *arg_length = glmsg.add_args();
7423    arg_length->set_isarray(false);
7424    arg_length->set_type(GLMessage::DataType::INT);
7425    arg_length->add_intvalue(length);
7426
7427    // copy argument marker
7428    GLMessage_DataType *arg_marker = glmsg.add_args();
7429    arg_marker->set_isarray(false);
7430    arg_marker->set_type(GLMessage::DataType::INT);
7431    arg_marker->add_intvalue((int)marker);
7432
7433    // call function
7434    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7435    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7436    glContext->hooks->gl.glInsertEventMarkerEXT(length, marker);
7437    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7438    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7439
7440    void *pointerArgs[] = {
7441        (void *) marker,
7442    };
7443
7444    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7445                              threadStartTime, threadEndTime,
7446                              &glmsg, pointerArgs);
7447    glContext->traceGLMessage(&glmsg);
7448}
7449
7450void GLTrace_glPushGroupMarkerEXT(GLsizei length, const GLchar *marker) {
7451    GLMessage glmsg;
7452    GLTraceContext *glContext = getGLTraceContext();
7453
7454    glmsg.set_function(GLMessage::glPushGroupMarkerEXT);
7455
7456    // copy argument length
7457    GLMessage_DataType *arg_length = glmsg.add_args();
7458    arg_length->set_isarray(false);
7459    arg_length->set_type(GLMessage::DataType::INT);
7460    arg_length->add_intvalue(length);
7461
7462    // copy argument marker
7463    GLMessage_DataType *arg_marker = glmsg.add_args();
7464    arg_marker->set_isarray(false);
7465    arg_marker->set_type(GLMessage::DataType::INT);
7466    arg_marker->add_intvalue((int)marker);
7467
7468    // call function
7469    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7470    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7471    glContext->hooks->gl.glPushGroupMarkerEXT(length, marker);
7472    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7473    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7474
7475    void *pointerArgs[] = {
7476        (void *) marker,
7477    };
7478
7479    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7480                              threadStartTime, threadEndTime,
7481                              &glmsg, pointerArgs);
7482    glContext->traceGLMessage(&glmsg);
7483}
7484
7485void GLTrace_glPopGroupMarkerEXT(void) {
7486    GLMessage glmsg;
7487    GLTraceContext *glContext = getGLTraceContext();
7488
7489    glmsg.set_function(GLMessage::glPopGroupMarkerEXT);
7490
7491    // call function
7492    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7493    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7494    glContext->hooks->gl.glPopGroupMarkerEXT();
7495    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7496    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7497
7498    void *pointerArgs[] = {
7499    };
7500
7501    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7502                              threadStartTime, threadEndTime,
7503                              &glmsg, pointerArgs);
7504    glContext->traceGLMessage(&glmsg);
7505}
7506
7507void GLTrace_glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum *attachments) {
7508    GLMessage glmsg;
7509    GLTraceContext *glContext = getGLTraceContext();
7510
7511    glmsg.set_function(GLMessage::glDiscardFramebufferEXT);
7512
7513    // copy argument target
7514    GLMessage_DataType *arg_target = glmsg.add_args();
7515    arg_target->set_isarray(false);
7516    arg_target->set_type(GLMessage::DataType::ENUM);
7517    arg_target->add_intvalue((int)target);
7518
7519    // copy argument numAttachments
7520    GLMessage_DataType *arg_numAttachments = glmsg.add_args();
7521    arg_numAttachments->set_isarray(false);
7522    arg_numAttachments->set_type(GLMessage::DataType::INT);
7523    arg_numAttachments->add_intvalue(numAttachments);
7524
7525    // copy argument attachments
7526    GLMessage_DataType *arg_attachments = glmsg.add_args();
7527    arg_attachments->set_isarray(false);
7528    arg_attachments->set_type(GLMessage::DataType::INT);
7529    arg_attachments->add_intvalue((int)attachments);
7530
7531    // call function
7532    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7533    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7534    glContext->hooks->gl.glDiscardFramebufferEXT(target, numAttachments, attachments);
7535    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7536    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7537
7538    void *pointerArgs[] = {
7539        (void *) attachments,
7540    };
7541
7542    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7543                              threadStartTime, threadEndTime,
7544                              &glmsg, pointerArgs);
7545    glContext->traceGLMessage(&glmsg);
7546}
7547
7548void GLTrace_glRenderbufferStorageMultisampleEXT(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
7549    GLMessage glmsg;
7550    GLTraceContext *glContext = getGLTraceContext();
7551
7552    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleEXT);
7553
7554    // copy argument target
7555    GLMessage_DataType *arg_target = glmsg.add_args();
7556    arg_target->set_isarray(false);
7557    arg_target->set_type(GLMessage::DataType::ENUM);
7558    arg_target->add_intvalue((int)target);
7559
7560    // copy argument samples
7561    GLMessage_DataType *arg_samples = glmsg.add_args();
7562    arg_samples->set_isarray(false);
7563    arg_samples->set_type(GLMessage::DataType::INT);
7564    arg_samples->add_intvalue(samples);
7565
7566    // copy argument internalformat
7567    GLMessage_DataType *arg_internalformat = glmsg.add_args();
7568    arg_internalformat->set_isarray(false);
7569    arg_internalformat->set_type(GLMessage::DataType::ENUM);
7570    arg_internalformat->add_intvalue((int)internalformat);
7571
7572    // copy argument width
7573    GLMessage_DataType *arg_width = glmsg.add_args();
7574    arg_width->set_isarray(false);
7575    arg_width->set_type(GLMessage::DataType::INT);
7576    arg_width->add_intvalue(width);
7577
7578    // copy argument height
7579    GLMessage_DataType *arg_height = glmsg.add_args();
7580    arg_height->set_isarray(false);
7581    arg_height->set_type(GLMessage::DataType::INT);
7582    arg_height->add_intvalue(height);
7583
7584    // call function
7585    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7586    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7587    glContext->hooks->gl.glRenderbufferStorageMultisampleEXT(target, samples, internalformat, width, height);
7588    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7589    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7590
7591    void *pointerArgs[] = {
7592    };
7593
7594    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7595                              threadStartTime, threadEndTime,
7596                              &glmsg, pointerArgs);
7597    glContext->traceGLMessage(&glmsg);
7598}
7599
7600void GLTrace_glFramebufferTexture2DMultisampleEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples) {
7601    GLMessage glmsg;
7602    GLTraceContext *glContext = getGLTraceContext();
7603
7604    glmsg.set_function(GLMessage::glFramebufferTexture2DMultisampleEXT);
7605
7606    // copy argument target
7607    GLMessage_DataType *arg_target = glmsg.add_args();
7608    arg_target->set_isarray(false);
7609    arg_target->set_type(GLMessage::DataType::ENUM);
7610    arg_target->add_intvalue((int)target);
7611
7612    // copy argument attachment
7613    GLMessage_DataType *arg_attachment = glmsg.add_args();
7614    arg_attachment->set_isarray(false);
7615    arg_attachment->set_type(GLMessage::DataType::ENUM);
7616    arg_attachment->add_intvalue((int)attachment);
7617
7618    // copy argument textarget
7619    GLMessage_DataType *arg_textarget = glmsg.add_args();
7620    arg_textarget->set_isarray(false);
7621    arg_textarget->set_type(GLMessage::DataType::ENUM);
7622    arg_textarget->add_intvalue((int)textarget);
7623
7624    // copy argument texture
7625    GLMessage_DataType *arg_texture = glmsg.add_args();
7626    arg_texture->set_isarray(false);
7627    arg_texture->set_type(GLMessage::DataType::INT);
7628    arg_texture->add_intvalue(texture);
7629
7630    // copy argument level
7631    GLMessage_DataType *arg_level = glmsg.add_args();
7632    arg_level->set_isarray(false);
7633    arg_level->set_type(GLMessage::DataType::INT);
7634    arg_level->add_intvalue(level);
7635
7636    // copy argument samples
7637    GLMessage_DataType *arg_samples = glmsg.add_args();
7638    arg_samples->set_isarray(false);
7639    arg_samples->set_type(GLMessage::DataType::INT);
7640    arg_samples->add_intvalue(samples);
7641
7642    // call function
7643    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7644    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7645    glContext->hooks->gl.glFramebufferTexture2DMultisampleEXT(target, attachment, textarget, texture, level, samples);
7646    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7647    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7648
7649    void *pointerArgs[] = {
7650    };
7651
7652    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7653                              threadStartTime, threadEndTime,
7654                              &glmsg, pointerArgs);
7655    glContext->traceGLMessage(&glmsg);
7656}
7657
7658void GLTrace_glMultiDrawArraysEXT(GLenum mode, GLint *first, GLsizei *count, GLsizei primcount) {
7659    GLMessage glmsg;
7660    GLTraceContext *glContext = getGLTraceContext();
7661
7662    glmsg.set_function(GLMessage::glMultiDrawArraysEXT);
7663
7664    // copy argument mode
7665    GLMessage_DataType *arg_mode = glmsg.add_args();
7666    arg_mode->set_isarray(false);
7667    arg_mode->set_type(GLMessage::DataType::ENUM);
7668    arg_mode->add_intvalue((int)mode);
7669
7670    // copy argument first
7671    GLMessage_DataType *arg_first = glmsg.add_args();
7672    arg_first->set_isarray(false);
7673    arg_first->set_type(GLMessage::DataType::INT);
7674    arg_first->add_intvalue((int)first);
7675
7676    // copy argument count
7677    GLMessage_DataType *arg_count = glmsg.add_args();
7678    arg_count->set_isarray(false);
7679    arg_count->set_type(GLMessage::DataType::INT);
7680    arg_count->add_intvalue((int)count);
7681
7682    // copy argument primcount
7683    GLMessage_DataType *arg_primcount = glmsg.add_args();
7684    arg_primcount->set_isarray(false);
7685    arg_primcount->set_type(GLMessage::DataType::INT);
7686    arg_primcount->add_intvalue(primcount);
7687
7688    // call function
7689    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7690    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7691    glContext->hooks->gl.glMultiDrawArraysEXT(mode, first, count, primcount);
7692    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7693    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7694
7695    void *pointerArgs[] = {
7696        (void *) first,
7697        (void *) count,
7698    };
7699
7700    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7701                              threadStartTime, threadEndTime,
7702                              &glmsg, pointerArgs);
7703    glContext->traceGLMessage(&glmsg);
7704}
7705
7706void GLTrace_glMultiDrawElementsEXT(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount) {
7707    GLMessage glmsg;
7708    GLTraceContext *glContext = getGLTraceContext();
7709
7710    glmsg.set_function(GLMessage::glMultiDrawElementsEXT);
7711
7712    // copy argument mode
7713    GLMessage_DataType *arg_mode = glmsg.add_args();
7714    arg_mode->set_isarray(false);
7715    arg_mode->set_type(GLMessage::DataType::ENUM);
7716    arg_mode->add_intvalue((int)mode);
7717
7718    // copy argument count
7719    GLMessage_DataType *arg_count = glmsg.add_args();
7720    arg_count->set_isarray(false);
7721    arg_count->set_type(GLMessage::DataType::INT);
7722    arg_count->add_intvalue((int)count);
7723
7724    // copy argument type
7725    GLMessage_DataType *arg_type = glmsg.add_args();
7726    arg_type->set_isarray(false);
7727    arg_type->set_type(GLMessage::DataType::ENUM);
7728    arg_type->add_intvalue((int)type);
7729
7730    // copy argument indices
7731    GLMessage_DataType *arg_indices = glmsg.add_args();
7732    arg_indices->set_isarray(false);
7733    arg_indices->set_type(GLMessage::DataType::INT);
7734    arg_indices->add_intvalue((int)indices);
7735
7736    // copy argument primcount
7737    GLMessage_DataType *arg_primcount = glmsg.add_args();
7738    arg_primcount->set_isarray(false);
7739    arg_primcount->set_type(GLMessage::DataType::INT);
7740    arg_primcount->add_intvalue(primcount);
7741
7742    // call function
7743    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7744    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7745    glContext->hooks->gl.glMultiDrawElementsEXT(mode, count, type, indices, primcount);
7746    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7747    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7748
7749    void *pointerArgs[] = {
7750        (void *) count,
7751        (void *) indices,
7752    };
7753
7754    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7755                              threadStartTime, threadEndTime,
7756                              &glmsg, pointerArgs);
7757    glContext->traceGLMessage(&glmsg);
7758}
7759
7760void GLTrace_glGenQueriesEXT(GLsizei n, GLuint *ids) {
7761    GLMessage glmsg;
7762    GLTraceContext *glContext = getGLTraceContext();
7763
7764    glmsg.set_function(GLMessage::glGenQueriesEXT);
7765
7766    // copy argument n
7767    GLMessage_DataType *arg_n = glmsg.add_args();
7768    arg_n->set_isarray(false);
7769    arg_n->set_type(GLMessage::DataType::INT);
7770    arg_n->add_intvalue(n);
7771
7772    // copy argument ids
7773    GLMessage_DataType *arg_ids = glmsg.add_args();
7774    arg_ids->set_isarray(false);
7775    arg_ids->set_type(GLMessage::DataType::INT);
7776    arg_ids->add_intvalue((int)ids);
7777
7778    // call function
7779    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7780    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7781    glContext->hooks->gl.glGenQueriesEXT(n, ids);
7782    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7783    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7784
7785    void *pointerArgs[] = {
7786        (void *) ids,
7787    };
7788
7789    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7790                              threadStartTime, threadEndTime,
7791                              &glmsg, pointerArgs);
7792    glContext->traceGLMessage(&glmsg);
7793}
7794
7795void GLTrace_glDeleteQueriesEXT(GLsizei n, const GLuint *ids) {
7796    GLMessage glmsg;
7797    GLTraceContext *glContext = getGLTraceContext();
7798
7799    glmsg.set_function(GLMessage::glDeleteQueriesEXT);
7800
7801    // copy argument n
7802    GLMessage_DataType *arg_n = glmsg.add_args();
7803    arg_n->set_isarray(false);
7804    arg_n->set_type(GLMessage::DataType::INT);
7805    arg_n->add_intvalue(n);
7806
7807    // copy argument ids
7808    GLMessage_DataType *arg_ids = glmsg.add_args();
7809    arg_ids->set_isarray(false);
7810    arg_ids->set_type(GLMessage::DataType::INT);
7811    arg_ids->add_intvalue((int)ids);
7812
7813    // call function
7814    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7815    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7816    glContext->hooks->gl.glDeleteQueriesEXT(n, ids);
7817    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7818    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7819
7820    void *pointerArgs[] = {
7821        (void *) ids,
7822    };
7823
7824    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7825                              threadStartTime, threadEndTime,
7826                              &glmsg, pointerArgs);
7827    glContext->traceGLMessage(&glmsg);
7828}
7829
7830GLboolean GLTrace_glIsQueryEXT(GLuint id) {
7831    GLMessage glmsg;
7832    GLTraceContext *glContext = getGLTraceContext();
7833
7834    glmsg.set_function(GLMessage::glIsQueryEXT);
7835
7836    // copy argument id
7837    GLMessage_DataType *arg_id = glmsg.add_args();
7838    arg_id->set_isarray(false);
7839    arg_id->set_type(GLMessage::DataType::INT);
7840    arg_id->add_intvalue(id);
7841
7842    // call function
7843    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7844    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7845    GLboolean retValue = glContext->hooks->gl.glIsQueryEXT(id);
7846    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7847    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7848
7849    // set return value
7850    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
7851    rt->set_isarray(false);
7852    rt->set_type(GLMessage::DataType::BOOL);
7853    rt->add_boolvalue(retValue);
7854
7855    void *pointerArgs[] = {
7856    };
7857
7858    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7859                              threadStartTime, threadEndTime,
7860                              &glmsg, pointerArgs);
7861    glContext->traceGLMessage(&glmsg);
7862
7863    return retValue;
7864}
7865
7866void GLTrace_glBeginQueryEXT(GLenum target, GLuint id) {
7867    GLMessage glmsg;
7868    GLTraceContext *glContext = getGLTraceContext();
7869
7870    glmsg.set_function(GLMessage::glBeginQueryEXT);
7871
7872    // copy argument target
7873    GLMessage_DataType *arg_target = glmsg.add_args();
7874    arg_target->set_isarray(false);
7875    arg_target->set_type(GLMessage::DataType::ENUM);
7876    arg_target->add_intvalue((int)target);
7877
7878    // copy argument id
7879    GLMessage_DataType *arg_id = glmsg.add_args();
7880    arg_id->set_isarray(false);
7881    arg_id->set_type(GLMessage::DataType::INT);
7882    arg_id->add_intvalue(id);
7883
7884    // call function
7885    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7886    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7887    glContext->hooks->gl.glBeginQueryEXT(target, id);
7888    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7889    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7890
7891    void *pointerArgs[] = {
7892    };
7893
7894    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7895                              threadStartTime, threadEndTime,
7896                              &glmsg, pointerArgs);
7897    glContext->traceGLMessage(&glmsg);
7898}
7899
7900void GLTrace_glEndQueryEXT(GLenum target) {
7901    GLMessage glmsg;
7902    GLTraceContext *glContext = getGLTraceContext();
7903
7904    glmsg.set_function(GLMessage::glEndQueryEXT);
7905
7906    // copy argument target
7907    GLMessage_DataType *arg_target = glmsg.add_args();
7908    arg_target->set_isarray(false);
7909    arg_target->set_type(GLMessage::DataType::ENUM);
7910    arg_target->add_intvalue((int)target);
7911
7912    // call function
7913    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7914    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7915    glContext->hooks->gl.glEndQueryEXT(target);
7916    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7917    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7918
7919    void *pointerArgs[] = {
7920    };
7921
7922    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7923                              threadStartTime, threadEndTime,
7924                              &glmsg, pointerArgs);
7925    glContext->traceGLMessage(&glmsg);
7926}
7927
7928void GLTrace_glGetQueryivEXT(GLenum target, GLenum pname, GLint *params) {
7929    GLMessage glmsg;
7930    GLTraceContext *glContext = getGLTraceContext();
7931
7932    glmsg.set_function(GLMessage::glGetQueryivEXT);
7933
7934    // copy argument target
7935    GLMessage_DataType *arg_target = glmsg.add_args();
7936    arg_target->set_isarray(false);
7937    arg_target->set_type(GLMessage::DataType::ENUM);
7938    arg_target->add_intvalue((int)target);
7939
7940    // copy argument pname
7941    GLMessage_DataType *arg_pname = glmsg.add_args();
7942    arg_pname->set_isarray(false);
7943    arg_pname->set_type(GLMessage::DataType::ENUM);
7944    arg_pname->add_intvalue((int)pname);
7945
7946    // copy argument params
7947    GLMessage_DataType *arg_params = glmsg.add_args();
7948    arg_params->set_isarray(false);
7949    arg_params->set_type(GLMessage::DataType::INT);
7950    arg_params->add_intvalue((int)params);
7951
7952    // call function
7953    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7954    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7955    glContext->hooks->gl.glGetQueryivEXT(target, pname, params);
7956    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7957    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7958
7959    void *pointerArgs[] = {
7960        (void *) params,
7961    };
7962
7963    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7964                              threadStartTime, threadEndTime,
7965                              &glmsg, pointerArgs);
7966    glContext->traceGLMessage(&glmsg);
7967}
7968
7969void GLTrace_glGetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint *params) {
7970    GLMessage glmsg;
7971    GLTraceContext *glContext = getGLTraceContext();
7972
7973    glmsg.set_function(GLMessage::glGetQueryObjectuivEXT);
7974
7975    // copy argument id
7976    GLMessage_DataType *arg_id = glmsg.add_args();
7977    arg_id->set_isarray(false);
7978    arg_id->set_type(GLMessage::DataType::INT);
7979    arg_id->add_intvalue(id);
7980
7981    // copy argument pname
7982    GLMessage_DataType *arg_pname = glmsg.add_args();
7983    arg_pname->set_isarray(false);
7984    arg_pname->set_type(GLMessage::DataType::ENUM);
7985    arg_pname->add_intvalue((int)pname);
7986
7987    // copy argument params
7988    GLMessage_DataType *arg_params = glmsg.add_args();
7989    arg_params->set_isarray(false);
7990    arg_params->set_type(GLMessage::DataType::INT);
7991    arg_params->add_intvalue((int)params);
7992
7993    // call function
7994    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7995    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7996    glContext->hooks->gl.glGetQueryObjectuivEXT(id, pname, params);
7997    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7998    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7999
8000    void *pointerArgs[] = {
8001        (void *) params,
8002    };
8003
8004    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8005                              threadStartTime, threadEndTime,
8006                              &glmsg, pointerArgs);
8007    glContext->traceGLMessage(&glmsg);
8008}
8009
8010GLenum GLTrace_glGetGraphicsResetStatusEXT(void) {
8011    GLMessage glmsg;
8012    GLTraceContext *glContext = getGLTraceContext();
8013
8014    glmsg.set_function(GLMessage::glGetGraphicsResetStatusEXT);
8015
8016    // call function
8017    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8018    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8019    GLenum retValue = glContext->hooks->gl.glGetGraphicsResetStatusEXT();
8020    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8021    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8022
8023    // set return value
8024    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
8025    rt->set_isarray(false);
8026    rt->set_type(GLMessage::DataType::ENUM);
8027    rt->add_intvalue((int)retValue);
8028
8029    void *pointerArgs[] = {
8030    };
8031
8032    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8033                              threadStartTime, threadEndTime,
8034                              &glmsg, pointerArgs);
8035    glContext->traceGLMessage(&glmsg);
8036
8037    return retValue;
8038}
8039
8040void GLTrace_glReadnPixelsEXT(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data) {
8041    GLMessage glmsg;
8042    GLTraceContext *glContext = getGLTraceContext();
8043
8044    glmsg.set_function(GLMessage::glReadnPixelsEXT);
8045
8046    // copy argument x
8047    GLMessage_DataType *arg_x = glmsg.add_args();
8048    arg_x->set_isarray(false);
8049    arg_x->set_type(GLMessage::DataType::INT);
8050    arg_x->add_intvalue(x);
8051
8052    // copy argument y
8053    GLMessage_DataType *arg_y = glmsg.add_args();
8054    arg_y->set_isarray(false);
8055    arg_y->set_type(GLMessage::DataType::INT);
8056    arg_y->add_intvalue(y);
8057
8058    // copy argument width
8059    GLMessage_DataType *arg_width = glmsg.add_args();
8060    arg_width->set_isarray(false);
8061    arg_width->set_type(GLMessage::DataType::INT);
8062    arg_width->add_intvalue(width);
8063
8064    // copy argument height
8065    GLMessage_DataType *arg_height = glmsg.add_args();
8066    arg_height->set_isarray(false);
8067    arg_height->set_type(GLMessage::DataType::INT);
8068    arg_height->add_intvalue(height);
8069
8070    // copy argument format
8071    GLMessage_DataType *arg_format = glmsg.add_args();
8072    arg_format->set_isarray(false);
8073    arg_format->set_type(GLMessage::DataType::ENUM);
8074    arg_format->add_intvalue((int)format);
8075
8076    // copy argument type
8077    GLMessage_DataType *arg_type = glmsg.add_args();
8078    arg_type->set_isarray(false);
8079    arg_type->set_type(GLMessage::DataType::ENUM);
8080    arg_type->add_intvalue((int)type);
8081
8082    // copy argument bufSize
8083    GLMessage_DataType *arg_bufSize = glmsg.add_args();
8084    arg_bufSize->set_isarray(false);
8085    arg_bufSize->set_type(GLMessage::DataType::INT);
8086    arg_bufSize->add_intvalue(bufSize);
8087
8088    // copy argument data
8089    GLMessage_DataType *arg_data = glmsg.add_args();
8090    arg_data->set_isarray(false);
8091    arg_data->set_type(GLMessage::DataType::INT);
8092    arg_data->add_intvalue((int)data);
8093
8094    // call function
8095    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8096    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8097    glContext->hooks->gl.glReadnPixelsEXT(x, y, width, height, format, type, bufSize, data);
8098    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8099    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8100
8101    void *pointerArgs[] = {
8102        (void *) data,
8103    };
8104
8105    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8106                              threadStartTime, threadEndTime,
8107                              &glmsg, pointerArgs);
8108    glContext->traceGLMessage(&glmsg);
8109}
8110
8111void GLTrace_glGetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSize, float *params) {
8112    GLMessage glmsg;
8113    GLTraceContext *glContext = getGLTraceContext();
8114
8115    glmsg.set_function(GLMessage::glGetnUniformfvEXT);
8116
8117    // copy argument program
8118    GLMessage_DataType *arg_program = glmsg.add_args();
8119    arg_program->set_isarray(false);
8120    arg_program->set_type(GLMessage::DataType::INT);
8121    arg_program->add_intvalue(program);
8122
8123    // copy argument location
8124    GLMessage_DataType *arg_location = glmsg.add_args();
8125    arg_location->set_isarray(false);
8126    arg_location->set_type(GLMessage::DataType::INT);
8127    arg_location->add_intvalue(location);
8128
8129    // copy argument bufSize
8130    GLMessage_DataType *arg_bufSize = glmsg.add_args();
8131    arg_bufSize->set_isarray(false);
8132    arg_bufSize->set_type(GLMessage::DataType::INT);
8133    arg_bufSize->add_intvalue(bufSize);
8134
8135    // copy argument params
8136    GLMessage_DataType *arg_params = glmsg.add_args();
8137    arg_params->set_isarray(false);
8138    arg_params->set_type(GLMessage::DataType::INT);
8139    arg_params->add_intvalue((int)params);
8140
8141    // call function
8142    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8143    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8144    glContext->hooks->gl.glGetnUniformfvEXT(program, location, bufSize, params);
8145    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8146    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8147
8148    void *pointerArgs[] = {
8149        (void *) params,
8150    };
8151
8152    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8153                              threadStartTime, threadEndTime,
8154                              &glmsg, pointerArgs);
8155    glContext->traceGLMessage(&glmsg);
8156}
8157
8158void GLTrace_glGetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint *params) {
8159    GLMessage glmsg;
8160    GLTraceContext *glContext = getGLTraceContext();
8161
8162    glmsg.set_function(GLMessage::glGetnUniformivEXT);
8163
8164    // copy argument program
8165    GLMessage_DataType *arg_program = glmsg.add_args();
8166    arg_program->set_isarray(false);
8167    arg_program->set_type(GLMessage::DataType::INT);
8168    arg_program->add_intvalue(program);
8169
8170    // copy argument location
8171    GLMessage_DataType *arg_location = glmsg.add_args();
8172    arg_location->set_isarray(false);
8173    arg_location->set_type(GLMessage::DataType::INT);
8174    arg_location->add_intvalue(location);
8175
8176    // copy argument bufSize
8177    GLMessage_DataType *arg_bufSize = glmsg.add_args();
8178    arg_bufSize->set_isarray(false);
8179    arg_bufSize->set_type(GLMessage::DataType::INT);
8180    arg_bufSize->add_intvalue(bufSize);
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 wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8190    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8191    glContext->hooks->gl.glGetnUniformivEXT(program, location, bufSize, params);
8192    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8193    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8194
8195    void *pointerArgs[] = {
8196        (void *) params,
8197    };
8198
8199    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8200                              threadStartTime, threadEndTime,
8201                              &glmsg, pointerArgs);
8202    glContext->traceGLMessage(&glmsg);
8203}
8204
8205void GLTrace_glUseProgramStagesEXT(GLuint pipeline, GLbitfield stages, GLuint program) {
8206    GLMessage glmsg;
8207    GLTraceContext *glContext = getGLTraceContext();
8208
8209    glmsg.set_function(GLMessage::glUseProgramStagesEXT);
8210
8211    // copy argument pipeline
8212    GLMessage_DataType *arg_pipeline = glmsg.add_args();
8213    arg_pipeline->set_isarray(false);
8214    arg_pipeline->set_type(GLMessage::DataType::INT);
8215    arg_pipeline->add_intvalue(pipeline);
8216
8217    // copy argument stages
8218    GLMessage_DataType *arg_stages = glmsg.add_args();
8219    arg_stages->set_isarray(false);
8220    arg_stages->set_type(GLMessage::DataType::INT);
8221    arg_stages->add_intvalue(stages);
8222
8223    // copy argument program
8224    GLMessage_DataType *arg_program = glmsg.add_args();
8225    arg_program->set_isarray(false);
8226    arg_program->set_type(GLMessage::DataType::INT);
8227    arg_program->add_intvalue(program);
8228
8229    // call function
8230    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8231    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8232    glContext->hooks->gl.glUseProgramStagesEXT(pipeline, stages, program);
8233    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8234    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8235
8236    void *pointerArgs[] = {
8237    };
8238
8239    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8240                              threadStartTime, threadEndTime,
8241                              &glmsg, pointerArgs);
8242    glContext->traceGLMessage(&glmsg);
8243}
8244
8245void GLTrace_glActiveShaderProgramEXT(GLuint pipeline, GLuint program) {
8246    GLMessage glmsg;
8247    GLTraceContext *glContext = getGLTraceContext();
8248
8249    glmsg.set_function(GLMessage::glActiveShaderProgramEXT);
8250
8251    // copy argument pipeline
8252    GLMessage_DataType *arg_pipeline = glmsg.add_args();
8253    arg_pipeline->set_isarray(false);
8254    arg_pipeline->set_type(GLMessage::DataType::INT);
8255    arg_pipeline->add_intvalue(pipeline);
8256
8257    // copy argument program
8258    GLMessage_DataType *arg_program = glmsg.add_args();
8259    arg_program->set_isarray(false);
8260    arg_program->set_type(GLMessage::DataType::INT);
8261    arg_program->add_intvalue(program);
8262
8263    // call function
8264    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8265    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8266    glContext->hooks->gl.glActiveShaderProgramEXT(pipeline, program);
8267    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8268    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8269
8270    void *pointerArgs[] = {
8271    };
8272
8273    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8274                              threadStartTime, threadEndTime,
8275                              &glmsg, pointerArgs);
8276    glContext->traceGLMessage(&glmsg);
8277}
8278
8279GLuint GLTrace_glCreateShaderProgramvEXT(GLenum type, GLsizei count, const GLchar **strings) {
8280    GLMessage glmsg;
8281    GLTraceContext *glContext = getGLTraceContext();
8282
8283    glmsg.set_function(GLMessage::glCreateShaderProgramvEXT);
8284
8285    // copy argument type
8286    GLMessage_DataType *arg_type = glmsg.add_args();
8287    arg_type->set_isarray(false);
8288    arg_type->set_type(GLMessage::DataType::ENUM);
8289    arg_type->add_intvalue((int)type);
8290
8291    // copy argument count
8292    GLMessage_DataType *arg_count = glmsg.add_args();
8293    arg_count->set_isarray(false);
8294    arg_count->set_type(GLMessage::DataType::INT);
8295    arg_count->add_intvalue(count);
8296
8297    // copy argument strings
8298    GLMessage_DataType *arg_strings = glmsg.add_args();
8299    arg_strings->set_isarray(false);
8300    arg_strings->set_type(GLMessage::DataType::INT);
8301    arg_strings->add_intvalue((int)strings);
8302
8303    // call function
8304    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8305    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8306    GLuint retValue = glContext->hooks->gl.glCreateShaderProgramvEXT(type, count, strings);
8307    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8308    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8309
8310    // set return value
8311    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
8312    rt->set_isarray(false);
8313    rt->set_type(GLMessage::DataType::INT);
8314    rt->add_intvalue(retValue);
8315
8316    void *pointerArgs[] = {
8317        (void *) strings,
8318    };
8319
8320    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8321                              threadStartTime, threadEndTime,
8322                              &glmsg, pointerArgs);
8323    glContext->traceGLMessage(&glmsg);
8324
8325    return retValue;
8326}
8327
8328void GLTrace_glBindProgramPipelineEXT(GLuint pipeline) {
8329    GLMessage glmsg;
8330    GLTraceContext *glContext = getGLTraceContext();
8331
8332    glmsg.set_function(GLMessage::glBindProgramPipelineEXT);
8333
8334    // copy argument pipeline
8335    GLMessage_DataType *arg_pipeline = glmsg.add_args();
8336    arg_pipeline->set_isarray(false);
8337    arg_pipeline->set_type(GLMessage::DataType::INT);
8338    arg_pipeline->add_intvalue(pipeline);
8339
8340    // call function
8341    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8342    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8343    glContext->hooks->gl.glBindProgramPipelineEXT(pipeline);
8344    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8345    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8346
8347    void *pointerArgs[] = {
8348    };
8349
8350    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8351                              threadStartTime, threadEndTime,
8352                              &glmsg, pointerArgs);
8353    glContext->traceGLMessage(&glmsg);
8354}
8355
8356void GLTrace_glDeleteProgramPipelinesEXT(GLsizei n, const GLuint *pipelines) {
8357    GLMessage glmsg;
8358    GLTraceContext *glContext = getGLTraceContext();
8359
8360    glmsg.set_function(GLMessage::glDeleteProgramPipelinesEXT);
8361
8362    // copy argument n
8363    GLMessage_DataType *arg_n = glmsg.add_args();
8364    arg_n->set_isarray(false);
8365    arg_n->set_type(GLMessage::DataType::INT);
8366    arg_n->add_intvalue(n);
8367
8368    // copy argument pipelines
8369    GLMessage_DataType *arg_pipelines = glmsg.add_args();
8370    arg_pipelines->set_isarray(false);
8371    arg_pipelines->set_type(GLMessage::DataType::INT);
8372    arg_pipelines->add_intvalue((int)pipelines);
8373
8374    // call function
8375    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8376    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8377    glContext->hooks->gl.glDeleteProgramPipelinesEXT(n, pipelines);
8378    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8379    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8380
8381    void *pointerArgs[] = {
8382        (void *) pipelines,
8383    };
8384
8385    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8386                              threadStartTime, threadEndTime,
8387                              &glmsg, pointerArgs);
8388    glContext->traceGLMessage(&glmsg);
8389}
8390
8391void GLTrace_glGenProgramPipelinesEXT(GLsizei n, GLuint *pipelines) {
8392    GLMessage glmsg;
8393    GLTraceContext *glContext = getGLTraceContext();
8394
8395    glmsg.set_function(GLMessage::glGenProgramPipelinesEXT);
8396
8397    // copy argument n
8398    GLMessage_DataType *arg_n = glmsg.add_args();
8399    arg_n->set_isarray(false);
8400    arg_n->set_type(GLMessage::DataType::INT);
8401    arg_n->add_intvalue(n);
8402
8403    // copy argument pipelines
8404    GLMessage_DataType *arg_pipelines = glmsg.add_args();
8405    arg_pipelines->set_isarray(false);
8406    arg_pipelines->set_type(GLMessage::DataType::INT);
8407    arg_pipelines->add_intvalue((int)pipelines);
8408
8409    // call function
8410    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8411    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8412    glContext->hooks->gl.glGenProgramPipelinesEXT(n, pipelines);
8413    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8414    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8415
8416    void *pointerArgs[] = {
8417        (void *) pipelines,
8418    };
8419
8420    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8421                              threadStartTime, threadEndTime,
8422                              &glmsg, pointerArgs);
8423    glContext->traceGLMessage(&glmsg);
8424}
8425
8426GLboolean GLTrace_glIsProgramPipelineEXT(GLuint pipeline) {
8427    GLMessage glmsg;
8428    GLTraceContext *glContext = getGLTraceContext();
8429
8430    glmsg.set_function(GLMessage::glIsProgramPipelineEXT);
8431
8432    // copy argument pipeline
8433    GLMessage_DataType *arg_pipeline = glmsg.add_args();
8434    arg_pipeline->set_isarray(false);
8435    arg_pipeline->set_type(GLMessage::DataType::INT);
8436    arg_pipeline->add_intvalue(pipeline);
8437
8438    // call function
8439    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8440    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8441    GLboolean retValue = glContext->hooks->gl.glIsProgramPipelineEXT(pipeline);
8442    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8443    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8444
8445    // set return value
8446    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
8447    rt->set_isarray(false);
8448    rt->set_type(GLMessage::DataType::BOOL);
8449    rt->add_boolvalue(retValue);
8450
8451    void *pointerArgs[] = {
8452    };
8453
8454    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8455                              threadStartTime, threadEndTime,
8456                              &glmsg, pointerArgs);
8457    glContext->traceGLMessage(&glmsg);
8458
8459    return retValue;
8460}
8461
8462void GLTrace_glProgramParameteriEXT(GLuint program, GLenum pname, GLint value) {
8463    GLMessage glmsg;
8464    GLTraceContext *glContext = getGLTraceContext();
8465
8466    glmsg.set_function(GLMessage::glProgramParameteriEXT);
8467
8468    // copy argument program
8469    GLMessage_DataType *arg_program = glmsg.add_args();
8470    arg_program->set_isarray(false);
8471    arg_program->set_type(GLMessage::DataType::INT);
8472    arg_program->add_intvalue(program);
8473
8474    // copy argument pname
8475    GLMessage_DataType *arg_pname = glmsg.add_args();
8476    arg_pname->set_isarray(false);
8477    arg_pname->set_type(GLMessage::DataType::ENUM);
8478    arg_pname->add_intvalue((int)pname);
8479
8480    // copy argument value
8481    GLMessage_DataType *arg_value = glmsg.add_args();
8482    arg_value->set_isarray(false);
8483    arg_value->set_type(GLMessage::DataType::INT);
8484    arg_value->add_intvalue(value);
8485
8486    // call function
8487    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8488    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8489    glContext->hooks->gl.glProgramParameteriEXT(program, pname, value);
8490    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8491    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8492
8493    void *pointerArgs[] = {
8494    };
8495
8496    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8497                              threadStartTime, threadEndTime,
8498                              &glmsg, pointerArgs);
8499    glContext->traceGLMessage(&glmsg);
8500}
8501
8502void GLTrace_glGetProgramPipelineivEXT(GLuint pipeline, GLenum pname, GLint *params) {
8503    GLMessage glmsg;
8504    GLTraceContext *glContext = getGLTraceContext();
8505
8506    glmsg.set_function(GLMessage::glGetProgramPipelineivEXT);
8507
8508    // copy argument pipeline
8509    GLMessage_DataType *arg_pipeline = glmsg.add_args();
8510    arg_pipeline->set_isarray(false);
8511    arg_pipeline->set_type(GLMessage::DataType::INT);
8512    arg_pipeline->add_intvalue(pipeline);
8513
8514    // copy argument pname
8515    GLMessage_DataType *arg_pname = glmsg.add_args();
8516    arg_pname->set_isarray(false);
8517    arg_pname->set_type(GLMessage::DataType::ENUM);
8518    arg_pname->add_intvalue((int)pname);
8519
8520    // copy argument params
8521    GLMessage_DataType *arg_params = glmsg.add_args();
8522    arg_params->set_isarray(false);
8523    arg_params->set_type(GLMessage::DataType::INT);
8524    arg_params->add_intvalue((int)params);
8525
8526    // call function
8527    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8528    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8529    glContext->hooks->gl.glGetProgramPipelineivEXT(pipeline, pname, params);
8530    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8531    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8532
8533    void *pointerArgs[] = {
8534        (void *) params,
8535    };
8536
8537    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8538                              threadStartTime, threadEndTime,
8539                              &glmsg, pointerArgs);
8540    glContext->traceGLMessage(&glmsg);
8541}
8542
8543void GLTrace_glProgramUniform1iEXT(GLuint program, GLint location, GLint x) {
8544    GLMessage glmsg;
8545    GLTraceContext *glContext = getGLTraceContext();
8546
8547    glmsg.set_function(GLMessage::glProgramUniform1iEXT);
8548
8549    // copy argument program
8550    GLMessage_DataType *arg_program = glmsg.add_args();
8551    arg_program->set_isarray(false);
8552    arg_program->set_type(GLMessage::DataType::INT);
8553    arg_program->add_intvalue(program);
8554
8555    // copy argument location
8556    GLMessage_DataType *arg_location = glmsg.add_args();
8557    arg_location->set_isarray(false);
8558    arg_location->set_type(GLMessage::DataType::INT);
8559    arg_location->add_intvalue(location);
8560
8561    // copy argument x
8562    GLMessage_DataType *arg_x = glmsg.add_args();
8563    arg_x->set_isarray(false);
8564    arg_x->set_type(GLMessage::DataType::INT);
8565    arg_x->add_intvalue(x);
8566
8567    // call function
8568    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8569    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8570    glContext->hooks->gl.glProgramUniform1iEXT(program, location, x);
8571    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8572    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8573
8574    void *pointerArgs[] = {
8575    };
8576
8577    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8578                              threadStartTime, threadEndTime,
8579                              &glmsg, pointerArgs);
8580    glContext->traceGLMessage(&glmsg);
8581}
8582
8583void GLTrace_glProgramUniform2iEXT(GLuint program, GLint location, GLint x, GLint y) {
8584    GLMessage glmsg;
8585    GLTraceContext *glContext = getGLTraceContext();
8586
8587    glmsg.set_function(GLMessage::glProgramUniform2iEXT);
8588
8589    // copy argument program
8590    GLMessage_DataType *arg_program = glmsg.add_args();
8591    arg_program->set_isarray(false);
8592    arg_program->set_type(GLMessage::DataType::INT);
8593    arg_program->add_intvalue(program);
8594
8595    // copy argument location
8596    GLMessage_DataType *arg_location = glmsg.add_args();
8597    arg_location->set_isarray(false);
8598    arg_location->set_type(GLMessage::DataType::INT);
8599    arg_location->add_intvalue(location);
8600
8601    // copy argument x
8602    GLMessage_DataType *arg_x = glmsg.add_args();
8603    arg_x->set_isarray(false);
8604    arg_x->set_type(GLMessage::DataType::INT);
8605    arg_x->add_intvalue(x);
8606
8607    // copy argument y
8608    GLMessage_DataType *arg_y = glmsg.add_args();
8609    arg_y->set_isarray(false);
8610    arg_y->set_type(GLMessage::DataType::INT);
8611    arg_y->add_intvalue(y);
8612
8613    // call function
8614    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8615    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8616    glContext->hooks->gl.glProgramUniform2iEXT(program, location, x, y);
8617    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8618    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8619
8620    void *pointerArgs[] = {
8621    };
8622
8623    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8624                              threadStartTime, threadEndTime,
8625                              &glmsg, pointerArgs);
8626    glContext->traceGLMessage(&glmsg);
8627}
8628
8629void GLTrace_glProgramUniform3iEXT(GLuint program, GLint location, GLint x, GLint y, GLint z) {
8630    GLMessage glmsg;
8631    GLTraceContext *glContext = getGLTraceContext();
8632
8633    glmsg.set_function(GLMessage::glProgramUniform3iEXT);
8634
8635    // copy argument program
8636    GLMessage_DataType *arg_program = glmsg.add_args();
8637    arg_program->set_isarray(false);
8638    arg_program->set_type(GLMessage::DataType::INT);
8639    arg_program->add_intvalue(program);
8640
8641    // copy argument location
8642    GLMessage_DataType *arg_location = glmsg.add_args();
8643    arg_location->set_isarray(false);
8644    arg_location->set_type(GLMessage::DataType::INT);
8645    arg_location->add_intvalue(location);
8646
8647    // copy argument x
8648    GLMessage_DataType *arg_x = glmsg.add_args();
8649    arg_x->set_isarray(false);
8650    arg_x->set_type(GLMessage::DataType::INT);
8651    arg_x->add_intvalue(x);
8652
8653    // copy argument y
8654    GLMessage_DataType *arg_y = glmsg.add_args();
8655    arg_y->set_isarray(false);
8656    arg_y->set_type(GLMessage::DataType::INT);
8657    arg_y->add_intvalue(y);
8658
8659    // copy argument z
8660    GLMessage_DataType *arg_z = glmsg.add_args();
8661    arg_z->set_isarray(false);
8662    arg_z->set_type(GLMessage::DataType::INT);
8663    arg_z->add_intvalue(z);
8664
8665    // call function
8666    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8667    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8668    glContext->hooks->gl.glProgramUniform3iEXT(program, location, x, y, z);
8669    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8670    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8671
8672    void *pointerArgs[] = {
8673    };
8674
8675    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8676                              threadStartTime, threadEndTime,
8677                              &glmsg, pointerArgs);
8678    glContext->traceGLMessage(&glmsg);
8679}
8680
8681void GLTrace_glProgramUniform4iEXT(GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w) {
8682    GLMessage glmsg;
8683    GLTraceContext *glContext = getGLTraceContext();
8684
8685    glmsg.set_function(GLMessage::glProgramUniform4iEXT);
8686
8687    // copy argument program
8688    GLMessage_DataType *arg_program = glmsg.add_args();
8689    arg_program->set_isarray(false);
8690    arg_program->set_type(GLMessage::DataType::INT);
8691    arg_program->add_intvalue(program);
8692
8693    // copy argument location
8694    GLMessage_DataType *arg_location = glmsg.add_args();
8695    arg_location->set_isarray(false);
8696    arg_location->set_type(GLMessage::DataType::INT);
8697    arg_location->add_intvalue(location);
8698
8699    // copy argument x
8700    GLMessage_DataType *arg_x = glmsg.add_args();
8701    arg_x->set_isarray(false);
8702    arg_x->set_type(GLMessage::DataType::INT);
8703    arg_x->add_intvalue(x);
8704
8705    // copy argument y
8706    GLMessage_DataType *arg_y = glmsg.add_args();
8707    arg_y->set_isarray(false);
8708    arg_y->set_type(GLMessage::DataType::INT);
8709    arg_y->add_intvalue(y);
8710
8711    // copy argument z
8712    GLMessage_DataType *arg_z = glmsg.add_args();
8713    arg_z->set_isarray(false);
8714    arg_z->set_type(GLMessage::DataType::INT);
8715    arg_z->add_intvalue(z);
8716
8717    // copy argument w
8718    GLMessage_DataType *arg_w = glmsg.add_args();
8719    arg_w->set_isarray(false);
8720    arg_w->set_type(GLMessage::DataType::INT);
8721    arg_w->add_intvalue(w);
8722
8723    // call function
8724    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8725    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8726    glContext->hooks->gl.glProgramUniform4iEXT(program, location, x, y, z, w);
8727    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8728    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8729
8730    void *pointerArgs[] = {
8731    };
8732
8733    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8734                              threadStartTime, threadEndTime,
8735                              &glmsg, pointerArgs);
8736    glContext->traceGLMessage(&glmsg);
8737}
8738
8739void GLTrace_glProgramUniform1fEXT(GLuint program, GLint location, GLfloat x) {
8740    GLMessage glmsg;
8741    GLTraceContext *glContext = getGLTraceContext();
8742
8743    glmsg.set_function(GLMessage::glProgramUniform1fEXT);
8744
8745    // copy argument program
8746    GLMessage_DataType *arg_program = glmsg.add_args();
8747    arg_program->set_isarray(false);
8748    arg_program->set_type(GLMessage::DataType::INT);
8749    arg_program->add_intvalue(program);
8750
8751    // copy argument location
8752    GLMessage_DataType *arg_location = glmsg.add_args();
8753    arg_location->set_isarray(false);
8754    arg_location->set_type(GLMessage::DataType::INT);
8755    arg_location->add_intvalue(location);
8756
8757    // copy argument x
8758    GLMessage_DataType *arg_x = glmsg.add_args();
8759    arg_x->set_isarray(false);
8760    arg_x->set_type(GLMessage::DataType::FLOAT);
8761    arg_x->add_floatvalue(x);
8762
8763    // call function
8764    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8765    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8766    glContext->hooks->gl.glProgramUniform1fEXT(program, location, x);
8767    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8768    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8769
8770    void *pointerArgs[] = {
8771    };
8772
8773    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8774                              threadStartTime, threadEndTime,
8775                              &glmsg, pointerArgs);
8776    glContext->traceGLMessage(&glmsg);
8777}
8778
8779void GLTrace_glProgramUniform2fEXT(GLuint program, GLint location, GLfloat x, GLfloat y) {
8780    GLMessage glmsg;
8781    GLTraceContext *glContext = getGLTraceContext();
8782
8783    glmsg.set_function(GLMessage::glProgramUniform2fEXT);
8784
8785    // copy argument program
8786    GLMessage_DataType *arg_program = glmsg.add_args();
8787    arg_program->set_isarray(false);
8788    arg_program->set_type(GLMessage::DataType::INT);
8789    arg_program->add_intvalue(program);
8790
8791    // copy argument location
8792    GLMessage_DataType *arg_location = glmsg.add_args();
8793    arg_location->set_isarray(false);
8794    arg_location->set_type(GLMessage::DataType::INT);
8795    arg_location->add_intvalue(location);
8796
8797    // copy argument x
8798    GLMessage_DataType *arg_x = glmsg.add_args();
8799    arg_x->set_isarray(false);
8800    arg_x->set_type(GLMessage::DataType::FLOAT);
8801    arg_x->add_floatvalue(x);
8802
8803    // copy argument y
8804    GLMessage_DataType *arg_y = glmsg.add_args();
8805    arg_y->set_isarray(false);
8806    arg_y->set_type(GLMessage::DataType::FLOAT);
8807    arg_y->add_floatvalue(y);
8808
8809    // call function
8810    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8811    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8812    glContext->hooks->gl.glProgramUniform2fEXT(program, location, x, y);
8813    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8814    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8815
8816    void *pointerArgs[] = {
8817    };
8818
8819    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8820                              threadStartTime, threadEndTime,
8821                              &glmsg, pointerArgs);
8822    glContext->traceGLMessage(&glmsg);
8823}
8824
8825void GLTrace_glProgramUniform3fEXT(GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z) {
8826    GLMessage glmsg;
8827    GLTraceContext *glContext = getGLTraceContext();
8828
8829    glmsg.set_function(GLMessage::glProgramUniform3fEXT);
8830
8831    // copy argument program
8832    GLMessage_DataType *arg_program = glmsg.add_args();
8833    arg_program->set_isarray(false);
8834    arg_program->set_type(GLMessage::DataType::INT);
8835    arg_program->add_intvalue(program);
8836
8837    // copy argument location
8838    GLMessage_DataType *arg_location = glmsg.add_args();
8839    arg_location->set_isarray(false);
8840    arg_location->set_type(GLMessage::DataType::INT);
8841    arg_location->add_intvalue(location);
8842
8843    // copy argument x
8844    GLMessage_DataType *arg_x = glmsg.add_args();
8845    arg_x->set_isarray(false);
8846    arg_x->set_type(GLMessage::DataType::FLOAT);
8847    arg_x->add_floatvalue(x);
8848
8849    // copy argument y
8850    GLMessage_DataType *arg_y = glmsg.add_args();
8851    arg_y->set_isarray(false);
8852    arg_y->set_type(GLMessage::DataType::FLOAT);
8853    arg_y->add_floatvalue(y);
8854
8855    // copy argument z
8856    GLMessage_DataType *arg_z = glmsg.add_args();
8857    arg_z->set_isarray(false);
8858    arg_z->set_type(GLMessage::DataType::FLOAT);
8859    arg_z->add_floatvalue(z);
8860
8861    // call function
8862    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8863    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8864    glContext->hooks->gl.glProgramUniform3fEXT(program, location, x, y, z);
8865    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8866    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8867
8868    void *pointerArgs[] = {
8869    };
8870
8871    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8872                              threadStartTime, threadEndTime,
8873                              &glmsg, pointerArgs);
8874    glContext->traceGLMessage(&glmsg);
8875}
8876
8877void GLTrace_glProgramUniform4fEXT(GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {
8878    GLMessage glmsg;
8879    GLTraceContext *glContext = getGLTraceContext();
8880
8881    glmsg.set_function(GLMessage::glProgramUniform4fEXT);
8882
8883    // copy argument program
8884    GLMessage_DataType *arg_program = glmsg.add_args();
8885    arg_program->set_isarray(false);
8886    arg_program->set_type(GLMessage::DataType::INT);
8887    arg_program->add_intvalue(program);
8888
8889    // copy argument location
8890    GLMessage_DataType *arg_location = glmsg.add_args();
8891    arg_location->set_isarray(false);
8892    arg_location->set_type(GLMessage::DataType::INT);
8893    arg_location->add_intvalue(location);
8894
8895    // copy argument x
8896    GLMessage_DataType *arg_x = glmsg.add_args();
8897    arg_x->set_isarray(false);
8898    arg_x->set_type(GLMessage::DataType::FLOAT);
8899    arg_x->add_floatvalue(x);
8900
8901    // copy argument y
8902    GLMessage_DataType *arg_y = glmsg.add_args();
8903    arg_y->set_isarray(false);
8904    arg_y->set_type(GLMessage::DataType::FLOAT);
8905    arg_y->add_floatvalue(y);
8906
8907    // copy argument z
8908    GLMessage_DataType *arg_z = glmsg.add_args();
8909    arg_z->set_isarray(false);
8910    arg_z->set_type(GLMessage::DataType::FLOAT);
8911    arg_z->add_floatvalue(z);
8912
8913    // copy argument w
8914    GLMessage_DataType *arg_w = glmsg.add_args();
8915    arg_w->set_isarray(false);
8916    arg_w->set_type(GLMessage::DataType::FLOAT);
8917    arg_w->add_floatvalue(w);
8918
8919    // call function
8920    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8921    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8922    glContext->hooks->gl.glProgramUniform4fEXT(program, location, x, y, z, w);
8923    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8924    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8925
8926    void *pointerArgs[] = {
8927    };
8928
8929    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8930                              threadStartTime, threadEndTime,
8931                              &glmsg, pointerArgs);
8932    glContext->traceGLMessage(&glmsg);
8933}
8934
8935void GLTrace_glProgramUniform1ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) {
8936    GLMessage glmsg;
8937    GLTraceContext *glContext = getGLTraceContext();
8938
8939    glmsg.set_function(GLMessage::glProgramUniform1ivEXT);
8940
8941    // copy argument program
8942    GLMessage_DataType *arg_program = glmsg.add_args();
8943    arg_program->set_isarray(false);
8944    arg_program->set_type(GLMessage::DataType::INT);
8945    arg_program->add_intvalue(program);
8946
8947    // copy argument location
8948    GLMessage_DataType *arg_location = glmsg.add_args();
8949    arg_location->set_isarray(false);
8950    arg_location->set_type(GLMessage::DataType::INT);
8951    arg_location->add_intvalue(location);
8952
8953    // copy argument count
8954    GLMessage_DataType *arg_count = glmsg.add_args();
8955    arg_count->set_isarray(false);
8956    arg_count->set_type(GLMessage::DataType::INT);
8957    arg_count->add_intvalue(count);
8958
8959    // copy argument value
8960    GLMessage_DataType *arg_value = glmsg.add_args();
8961    arg_value->set_isarray(false);
8962    arg_value->set_type(GLMessage::DataType::INT);
8963    arg_value->add_intvalue((int)value);
8964
8965    // call function
8966    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8967    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8968    glContext->hooks->gl.glProgramUniform1ivEXT(program, location, count, value);
8969    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8970    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8971
8972    void *pointerArgs[] = {
8973        (void *) value,
8974    };
8975
8976    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8977                              threadStartTime, threadEndTime,
8978                              &glmsg, pointerArgs);
8979    glContext->traceGLMessage(&glmsg);
8980}
8981
8982void GLTrace_glProgramUniform2ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) {
8983    GLMessage glmsg;
8984    GLTraceContext *glContext = getGLTraceContext();
8985
8986    glmsg.set_function(GLMessage::glProgramUniform2ivEXT);
8987
8988    // copy argument program
8989    GLMessage_DataType *arg_program = glmsg.add_args();
8990    arg_program->set_isarray(false);
8991    arg_program->set_type(GLMessage::DataType::INT);
8992    arg_program->add_intvalue(program);
8993
8994    // copy argument location
8995    GLMessage_DataType *arg_location = glmsg.add_args();
8996    arg_location->set_isarray(false);
8997    arg_location->set_type(GLMessage::DataType::INT);
8998    arg_location->add_intvalue(location);
8999
9000    // copy argument count
9001    GLMessage_DataType *arg_count = glmsg.add_args();
9002    arg_count->set_isarray(false);
9003    arg_count->set_type(GLMessage::DataType::INT);
9004    arg_count->add_intvalue(count);
9005
9006    // copy argument value
9007    GLMessage_DataType *arg_value = glmsg.add_args();
9008    arg_value->set_isarray(false);
9009    arg_value->set_type(GLMessage::DataType::INT);
9010    arg_value->add_intvalue((int)value);
9011
9012    // call function
9013    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9014    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9015    glContext->hooks->gl.glProgramUniform2ivEXT(program, location, count, value);
9016    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9017    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9018
9019    void *pointerArgs[] = {
9020        (void *) value,
9021    };
9022
9023    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9024                              threadStartTime, threadEndTime,
9025                              &glmsg, pointerArgs);
9026    glContext->traceGLMessage(&glmsg);
9027}
9028
9029void GLTrace_glProgramUniform3ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) {
9030    GLMessage glmsg;
9031    GLTraceContext *glContext = getGLTraceContext();
9032
9033    glmsg.set_function(GLMessage::glProgramUniform3ivEXT);
9034
9035    // copy argument program
9036    GLMessage_DataType *arg_program = glmsg.add_args();
9037    arg_program->set_isarray(false);
9038    arg_program->set_type(GLMessage::DataType::INT);
9039    arg_program->add_intvalue(program);
9040
9041    // copy argument location
9042    GLMessage_DataType *arg_location = glmsg.add_args();
9043    arg_location->set_isarray(false);
9044    arg_location->set_type(GLMessage::DataType::INT);
9045    arg_location->add_intvalue(location);
9046
9047    // copy argument count
9048    GLMessage_DataType *arg_count = glmsg.add_args();
9049    arg_count->set_isarray(false);
9050    arg_count->set_type(GLMessage::DataType::INT);
9051    arg_count->add_intvalue(count);
9052
9053    // copy argument value
9054    GLMessage_DataType *arg_value = glmsg.add_args();
9055    arg_value->set_isarray(false);
9056    arg_value->set_type(GLMessage::DataType::INT);
9057    arg_value->add_intvalue((int)value);
9058
9059    // call function
9060    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9061    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9062    glContext->hooks->gl.glProgramUniform3ivEXT(program, location, count, value);
9063    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9064    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9065
9066    void *pointerArgs[] = {
9067        (void *) value,
9068    };
9069
9070    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9071                              threadStartTime, threadEndTime,
9072                              &glmsg, pointerArgs);
9073    glContext->traceGLMessage(&glmsg);
9074}
9075
9076void GLTrace_glProgramUniform4ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) {
9077    GLMessage glmsg;
9078    GLTraceContext *glContext = getGLTraceContext();
9079
9080    glmsg.set_function(GLMessage::glProgramUniform4ivEXT);
9081
9082    // copy argument program
9083    GLMessage_DataType *arg_program = glmsg.add_args();
9084    arg_program->set_isarray(false);
9085    arg_program->set_type(GLMessage::DataType::INT);
9086    arg_program->add_intvalue(program);
9087
9088    // copy argument location
9089    GLMessage_DataType *arg_location = glmsg.add_args();
9090    arg_location->set_isarray(false);
9091    arg_location->set_type(GLMessage::DataType::INT);
9092    arg_location->add_intvalue(location);
9093
9094    // copy argument count
9095    GLMessage_DataType *arg_count = glmsg.add_args();
9096    arg_count->set_isarray(false);
9097    arg_count->set_type(GLMessage::DataType::INT);
9098    arg_count->add_intvalue(count);
9099
9100    // copy argument value
9101    GLMessage_DataType *arg_value = glmsg.add_args();
9102    arg_value->set_isarray(false);
9103    arg_value->set_type(GLMessage::DataType::INT);
9104    arg_value->add_intvalue((int)value);
9105
9106    // call function
9107    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9108    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9109    glContext->hooks->gl.glProgramUniform4ivEXT(program, location, count, value);
9110    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9111    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9112
9113    void *pointerArgs[] = {
9114        (void *) value,
9115    };
9116
9117    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9118                              threadStartTime, threadEndTime,
9119                              &glmsg, pointerArgs);
9120    glContext->traceGLMessage(&glmsg);
9121}
9122
9123void GLTrace_glProgramUniform1fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) {
9124    GLMessage glmsg;
9125    GLTraceContext *glContext = getGLTraceContext();
9126
9127    glmsg.set_function(GLMessage::glProgramUniform1fvEXT);
9128
9129    // copy argument program
9130    GLMessage_DataType *arg_program = glmsg.add_args();
9131    arg_program->set_isarray(false);
9132    arg_program->set_type(GLMessage::DataType::INT);
9133    arg_program->add_intvalue(program);
9134
9135    // copy argument location
9136    GLMessage_DataType *arg_location = glmsg.add_args();
9137    arg_location->set_isarray(false);
9138    arg_location->set_type(GLMessage::DataType::INT);
9139    arg_location->add_intvalue(location);
9140
9141    // copy argument count
9142    GLMessage_DataType *arg_count = glmsg.add_args();
9143    arg_count->set_isarray(false);
9144    arg_count->set_type(GLMessage::DataType::INT);
9145    arg_count->add_intvalue(count);
9146
9147    // copy argument value
9148    GLMessage_DataType *arg_value = glmsg.add_args();
9149    arg_value->set_isarray(false);
9150    arg_value->set_type(GLMessage::DataType::INT);
9151    arg_value->add_intvalue((int)value);
9152
9153    // call function
9154    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9155    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9156    glContext->hooks->gl.glProgramUniform1fvEXT(program, location, count, value);
9157    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9158    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9159
9160    void *pointerArgs[] = {
9161        (void *) value,
9162    };
9163
9164    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9165                              threadStartTime, threadEndTime,
9166                              &glmsg, pointerArgs);
9167    glContext->traceGLMessage(&glmsg);
9168}
9169
9170void GLTrace_glProgramUniform2fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) {
9171    GLMessage glmsg;
9172    GLTraceContext *glContext = getGLTraceContext();
9173
9174    glmsg.set_function(GLMessage::glProgramUniform2fvEXT);
9175
9176    // copy argument program
9177    GLMessage_DataType *arg_program = glmsg.add_args();
9178    arg_program->set_isarray(false);
9179    arg_program->set_type(GLMessage::DataType::INT);
9180    arg_program->add_intvalue(program);
9181
9182    // copy argument location
9183    GLMessage_DataType *arg_location = glmsg.add_args();
9184    arg_location->set_isarray(false);
9185    arg_location->set_type(GLMessage::DataType::INT);
9186    arg_location->add_intvalue(location);
9187
9188    // copy argument count
9189    GLMessage_DataType *arg_count = glmsg.add_args();
9190    arg_count->set_isarray(false);
9191    arg_count->set_type(GLMessage::DataType::INT);
9192    arg_count->add_intvalue(count);
9193
9194    // copy argument value
9195    GLMessage_DataType *arg_value = glmsg.add_args();
9196    arg_value->set_isarray(false);
9197    arg_value->set_type(GLMessage::DataType::INT);
9198    arg_value->add_intvalue((int)value);
9199
9200    // call function
9201    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9202    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9203    glContext->hooks->gl.glProgramUniform2fvEXT(program, location, count, value);
9204    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9205    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9206
9207    void *pointerArgs[] = {
9208        (void *) value,
9209    };
9210
9211    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9212                              threadStartTime, threadEndTime,
9213                              &glmsg, pointerArgs);
9214    glContext->traceGLMessage(&glmsg);
9215}
9216
9217void GLTrace_glProgramUniform3fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) {
9218    GLMessage glmsg;
9219    GLTraceContext *glContext = getGLTraceContext();
9220
9221    glmsg.set_function(GLMessage::glProgramUniform3fvEXT);
9222
9223    // copy argument program
9224    GLMessage_DataType *arg_program = glmsg.add_args();
9225    arg_program->set_isarray(false);
9226    arg_program->set_type(GLMessage::DataType::INT);
9227    arg_program->add_intvalue(program);
9228
9229    // copy argument location
9230    GLMessage_DataType *arg_location = glmsg.add_args();
9231    arg_location->set_isarray(false);
9232    arg_location->set_type(GLMessage::DataType::INT);
9233    arg_location->add_intvalue(location);
9234
9235    // copy argument count
9236    GLMessage_DataType *arg_count = glmsg.add_args();
9237    arg_count->set_isarray(false);
9238    arg_count->set_type(GLMessage::DataType::INT);
9239    arg_count->add_intvalue(count);
9240
9241    // copy argument value
9242    GLMessage_DataType *arg_value = glmsg.add_args();
9243    arg_value->set_isarray(false);
9244    arg_value->set_type(GLMessage::DataType::INT);
9245    arg_value->add_intvalue((int)value);
9246
9247    // call function
9248    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9249    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9250    glContext->hooks->gl.glProgramUniform3fvEXT(program, location, count, value);
9251    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9252    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9253
9254    void *pointerArgs[] = {
9255        (void *) value,
9256    };
9257
9258    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9259                              threadStartTime, threadEndTime,
9260                              &glmsg, pointerArgs);
9261    glContext->traceGLMessage(&glmsg);
9262}
9263
9264void GLTrace_glProgramUniform4fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) {
9265    GLMessage glmsg;
9266    GLTraceContext *glContext = getGLTraceContext();
9267
9268    glmsg.set_function(GLMessage::glProgramUniform4fvEXT);
9269
9270    // copy argument program
9271    GLMessage_DataType *arg_program = glmsg.add_args();
9272    arg_program->set_isarray(false);
9273    arg_program->set_type(GLMessage::DataType::INT);
9274    arg_program->add_intvalue(program);
9275
9276    // copy argument location
9277    GLMessage_DataType *arg_location = glmsg.add_args();
9278    arg_location->set_isarray(false);
9279    arg_location->set_type(GLMessage::DataType::INT);
9280    arg_location->add_intvalue(location);
9281
9282    // copy argument count
9283    GLMessage_DataType *arg_count = glmsg.add_args();
9284    arg_count->set_isarray(false);
9285    arg_count->set_type(GLMessage::DataType::INT);
9286    arg_count->add_intvalue(count);
9287
9288    // copy argument value
9289    GLMessage_DataType *arg_value = glmsg.add_args();
9290    arg_value->set_isarray(false);
9291    arg_value->set_type(GLMessage::DataType::INT);
9292    arg_value->add_intvalue((int)value);
9293
9294    // call function
9295    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9296    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9297    glContext->hooks->gl.glProgramUniform4fvEXT(program, location, count, value);
9298    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9299    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9300
9301    void *pointerArgs[] = {
9302        (void *) value,
9303    };
9304
9305    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9306                              threadStartTime, threadEndTime,
9307                              &glmsg, pointerArgs);
9308    glContext->traceGLMessage(&glmsg);
9309}
9310
9311void GLTrace_glProgramUniformMatrix2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) {
9312    GLMessage glmsg;
9313    GLTraceContext *glContext = getGLTraceContext();
9314
9315    glmsg.set_function(GLMessage::glProgramUniformMatrix2fvEXT);
9316
9317    // copy argument program
9318    GLMessage_DataType *arg_program = glmsg.add_args();
9319    arg_program->set_isarray(false);
9320    arg_program->set_type(GLMessage::DataType::INT);
9321    arg_program->add_intvalue(program);
9322
9323    // copy argument location
9324    GLMessage_DataType *arg_location = glmsg.add_args();
9325    arg_location->set_isarray(false);
9326    arg_location->set_type(GLMessage::DataType::INT);
9327    arg_location->add_intvalue(location);
9328
9329    // copy argument count
9330    GLMessage_DataType *arg_count = glmsg.add_args();
9331    arg_count->set_isarray(false);
9332    arg_count->set_type(GLMessage::DataType::INT);
9333    arg_count->add_intvalue(count);
9334
9335    // copy argument transpose
9336    GLMessage_DataType *arg_transpose = glmsg.add_args();
9337    arg_transpose->set_isarray(false);
9338    arg_transpose->set_type(GLMessage::DataType::BOOL);
9339    arg_transpose->add_boolvalue(transpose);
9340
9341    // copy argument value
9342    GLMessage_DataType *arg_value = glmsg.add_args();
9343    arg_value->set_isarray(false);
9344    arg_value->set_type(GLMessage::DataType::INT);
9345    arg_value->add_intvalue((int)value);
9346
9347    // call function
9348    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9349    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9350    glContext->hooks->gl.glProgramUniformMatrix2fvEXT(program, location, count, transpose, value);
9351    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9352    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9353
9354    void *pointerArgs[] = {
9355        (void *) value,
9356    };
9357
9358    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9359                              threadStartTime, threadEndTime,
9360                              &glmsg, pointerArgs);
9361    glContext->traceGLMessage(&glmsg);
9362}
9363
9364void GLTrace_glProgramUniformMatrix3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) {
9365    GLMessage glmsg;
9366    GLTraceContext *glContext = getGLTraceContext();
9367
9368    glmsg.set_function(GLMessage::glProgramUniformMatrix3fvEXT);
9369
9370    // copy argument program
9371    GLMessage_DataType *arg_program = glmsg.add_args();
9372    arg_program->set_isarray(false);
9373    arg_program->set_type(GLMessage::DataType::INT);
9374    arg_program->add_intvalue(program);
9375
9376    // copy argument location
9377    GLMessage_DataType *arg_location = glmsg.add_args();
9378    arg_location->set_isarray(false);
9379    arg_location->set_type(GLMessage::DataType::INT);
9380    arg_location->add_intvalue(location);
9381
9382    // copy argument count
9383    GLMessage_DataType *arg_count = glmsg.add_args();
9384    arg_count->set_isarray(false);
9385    arg_count->set_type(GLMessage::DataType::INT);
9386    arg_count->add_intvalue(count);
9387
9388    // copy argument transpose
9389    GLMessage_DataType *arg_transpose = glmsg.add_args();
9390    arg_transpose->set_isarray(false);
9391    arg_transpose->set_type(GLMessage::DataType::BOOL);
9392    arg_transpose->add_boolvalue(transpose);
9393
9394    // copy argument value
9395    GLMessage_DataType *arg_value = glmsg.add_args();
9396    arg_value->set_isarray(false);
9397    arg_value->set_type(GLMessage::DataType::INT);
9398    arg_value->add_intvalue((int)value);
9399
9400    // call function
9401    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9402    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9403    glContext->hooks->gl.glProgramUniformMatrix3fvEXT(program, location, count, transpose, value);
9404    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9405    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9406
9407    void *pointerArgs[] = {
9408        (void *) value,
9409    };
9410
9411    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9412                              threadStartTime, threadEndTime,
9413                              &glmsg, pointerArgs);
9414    glContext->traceGLMessage(&glmsg);
9415}
9416
9417void GLTrace_glProgramUniformMatrix4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) {
9418    GLMessage glmsg;
9419    GLTraceContext *glContext = getGLTraceContext();
9420
9421    glmsg.set_function(GLMessage::glProgramUniformMatrix4fvEXT);
9422
9423    // copy argument program
9424    GLMessage_DataType *arg_program = glmsg.add_args();
9425    arg_program->set_isarray(false);
9426    arg_program->set_type(GLMessage::DataType::INT);
9427    arg_program->add_intvalue(program);
9428
9429    // copy argument location
9430    GLMessage_DataType *arg_location = glmsg.add_args();
9431    arg_location->set_isarray(false);
9432    arg_location->set_type(GLMessage::DataType::INT);
9433    arg_location->add_intvalue(location);
9434
9435    // copy argument count
9436    GLMessage_DataType *arg_count = glmsg.add_args();
9437    arg_count->set_isarray(false);
9438    arg_count->set_type(GLMessage::DataType::INT);
9439    arg_count->add_intvalue(count);
9440
9441    // copy argument transpose
9442    GLMessage_DataType *arg_transpose = glmsg.add_args();
9443    arg_transpose->set_isarray(false);
9444    arg_transpose->set_type(GLMessage::DataType::BOOL);
9445    arg_transpose->add_boolvalue(transpose);
9446
9447    // copy argument value
9448    GLMessage_DataType *arg_value = glmsg.add_args();
9449    arg_value->set_isarray(false);
9450    arg_value->set_type(GLMessage::DataType::INT);
9451    arg_value->add_intvalue((int)value);
9452
9453    // call function
9454    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9455    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9456    glContext->hooks->gl.glProgramUniformMatrix4fvEXT(program, location, count, transpose, value);
9457    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9458    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9459
9460    void *pointerArgs[] = {
9461        (void *) value,
9462    };
9463
9464    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9465                              threadStartTime, threadEndTime,
9466                              &glmsg, pointerArgs);
9467    glContext->traceGLMessage(&glmsg);
9468}
9469
9470void GLTrace_glValidateProgramPipelineEXT(GLuint pipeline) {
9471    GLMessage glmsg;
9472    GLTraceContext *glContext = getGLTraceContext();
9473
9474    glmsg.set_function(GLMessage::glValidateProgramPipelineEXT);
9475
9476    // copy argument pipeline
9477    GLMessage_DataType *arg_pipeline = glmsg.add_args();
9478    arg_pipeline->set_isarray(false);
9479    arg_pipeline->set_type(GLMessage::DataType::INT);
9480    arg_pipeline->add_intvalue(pipeline);
9481
9482    // call function
9483    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9484    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9485    glContext->hooks->gl.glValidateProgramPipelineEXT(pipeline);
9486    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9487    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9488
9489    void *pointerArgs[] = {
9490    };
9491
9492    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9493                              threadStartTime, threadEndTime,
9494                              &glmsg, pointerArgs);
9495    glContext->traceGLMessage(&glmsg);
9496}
9497
9498void GLTrace_glGetProgramPipelineInfoLogEXT(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) {
9499    GLMessage glmsg;
9500    GLTraceContext *glContext = getGLTraceContext();
9501
9502    glmsg.set_function(GLMessage::glGetProgramPipelineInfoLogEXT);
9503
9504    // copy argument pipeline
9505    GLMessage_DataType *arg_pipeline = glmsg.add_args();
9506    arg_pipeline->set_isarray(false);
9507    arg_pipeline->set_type(GLMessage::DataType::INT);
9508    arg_pipeline->add_intvalue(pipeline);
9509
9510    // copy argument bufSize
9511    GLMessage_DataType *arg_bufSize = glmsg.add_args();
9512    arg_bufSize->set_isarray(false);
9513    arg_bufSize->set_type(GLMessage::DataType::INT);
9514    arg_bufSize->add_intvalue(bufSize);
9515
9516    // copy argument length
9517    GLMessage_DataType *arg_length = glmsg.add_args();
9518    arg_length->set_isarray(false);
9519    arg_length->set_type(GLMessage::DataType::INT);
9520    arg_length->add_intvalue((int)length);
9521
9522    // copy argument infoLog
9523    GLMessage_DataType *arg_infoLog = glmsg.add_args();
9524    arg_infoLog->set_isarray(false);
9525    arg_infoLog->set_type(GLMessage::DataType::INT);
9526    arg_infoLog->add_intvalue((int)infoLog);
9527
9528    // call function
9529    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9530    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9531    glContext->hooks->gl.glGetProgramPipelineInfoLogEXT(pipeline, bufSize, length, infoLog);
9532    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9533    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9534
9535    void *pointerArgs[] = {
9536        (void *) length,
9537        (void *) infoLog,
9538    };
9539
9540    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9541                              threadStartTime, threadEndTime,
9542                              &glmsg, pointerArgs);
9543    glContext->traceGLMessage(&glmsg);
9544}
9545
9546void GLTrace_glTexStorage1DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) {
9547    GLMessage glmsg;
9548    GLTraceContext *glContext = getGLTraceContext();
9549
9550    glmsg.set_function(GLMessage::glTexStorage1DEXT);
9551
9552    // copy argument target
9553    GLMessage_DataType *arg_target = glmsg.add_args();
9554    arg_target->set_isarray(false);
9555    arg_target->set_type(GLMessage::DataType::ENUM);
9556    arg_target->add_intvalue((int)target);
9557
9558    // copy argument levels
9559    GLMessage_DataType *arg_levels = glmsg.add_args();
9560    arg_levels->set_isarray(false);
9561    arg_levels->set_type(GLMessage::DataType::INT);
9562    arg_levels->add_intvalue(levels);
9563
9564    // copy argument internalformat
9565    GLMessage_DataType *arg_internalformat = glmsg.add_args();
9566    arg_internalformat->set_isarray(false);
9567    arg_internalformat->set_type(GLMessage::DataType::ENUM);
9568    arg_internalformat->add_intvalue((int)internalformat);
9569
9570    // copy argument width
9571    GLMessage_DataType *arg_width = glmsg.add_args();
9572    arg_width->set_isarray(false);
9573    arg_width->set_type(GLMessage::DataType::INT);
9574    arg_width->add_intvalue(width);
9575
9576    // call function
9577    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9578    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9579    glContext->hooks->gl.glTexStorage1DEXT(target, levels, internalformat, width);
9580    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9581    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9582
9583    void *pointerArgs[] = {
9584    };
9585
9586    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9587                              threadStartTime, threadEndTime,
9588                              &glmsg, pointerArgs);
9589    glContext->traceGLMessage(&glmsg);
9590}
9591
9592void GLTrace_glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) {
9593    GLMessage glmsg;
9594    GLTraceContext *glContext = getGLTraceContext();
9595
9596    glmsg.set_function(GLMessage::glTexStorage2DEXT);
9597
9598    // copy argument target
9599    GLMessage_DataType *arg_target = glmsg.add_args();
9600    arg_target->set_isarray(false);
9601    arg_target->set_type(GLMessage::DataType::ENUM);
9602    arg_target->add_intvalue((int)target);
9603
9604    // copy argument levels
9605    GLMessage_DataType *arg_levels = glmsg.add_args();
9606    arg_levels->set_isarray(false);
9607    arg_levels->set_type(GLMessage::DataType::INT);
9608    arg_levels->add_intvalue(levels);
9609
9610    // copy argument internalformat
9611    GLMessage_DataType *arg_internalformat = glmsg.add_args();
9612    arg_internalformat->set_isarray(false);
9613    arg_internalformat->set_type(GLMessage::DataType::ENUM);
9614    arg_internalformat->add_intvalue((int)internalformat);
9615
9616    // copy argument width
9617    GLMessage_DataType *arg_width = glmsg.add_args();
9618    arg_width->set_isarray(false);
9619    arg_width->set_type(GLMessage::DataType::INT);
9620    arg_width->add_intvalue(width);
9621
9622    // copy argument height
9623    GLMessage_DataType *arg_height = glmsg.add_args();
9624    arg_height->set_isarray(false);
9625    arg_height->set_type(GLMessage::DataType::INT);
9626    arg_height->add_intvalue(height);
9627
9628    // call function
9629    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9630    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9631    glContext->hooks->gl.glTexStorage2DEXT(target, levels, internalformat, width, height);
9632    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9633    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9634
9635    void *pointerArgs[] = {
9636    };
9637
9638    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9639                              threadStartTime, threadEndTime,
9640                              &glmsg, pointerArgs);
9641    glContext->traceGLMessage(&glmsg);
9642}
9643
9644void GLTrace_glTexStorage3DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) {
9645    GLMessage glmsg;
9646    GLTraceContext *glContext = getGLTraceContext();
9647
9648    glmsg.set_function(GLMessage::glTexStorage3DEXT);
9649
9650    // copy argument target
9651    GLMessage_DataType *arg_target = glmsg.add_args();
9652    arg_target->set_isarray(false);
9653    arg_target->set_type(GLMessage::DataType::ENUM);
9654    arg_target->add_intvalue((int)target);
9655
9656    // copy argument levels
9657    GLMessage_DataType *arg_levels = glmsg.add_args();
9658    arg_levels->set_isarray(false);
9659    arg_levels->set_type(GLMessage::DataType::INT);
9660    arg_levels->add_intvalue(levels);
9661
9662    // copy argument internalformat
9663    GLMessage_DataType *arg_internalformat = glmsg.add_args();
9664    arg_internalformat->set_isarray(false);
9665    arg_internalformat->set_type(GLMessage::DataType::ENUM);
9666    arg_internalformat->add_intvalue((int)internalformat);
9667
9668    // copy argument width
9669    GLMessage_DataType *arg_width = glmsg.add_args();
9670    arg_width->set_isarray(false);
9671    arg_width->set_type(GLMessage::DataType::INT);
9672    arg_width->add_intvalue(width);
9673
9674    // copy argument height
9675    GLMessage_DataType *arg_height = glmsg.add_args();
9676    arg_height->set_isarray(false);
9677    arg_height->set_type(GLMessage::DataType::INT);
9678    arg_height->add_intvalue(height);
9679
9680    // copy argument depth
9681    GLMessage_DataType *arg_depth = glmsg.add_args();
9682    arg_depth->set_isarray(false);
9683    arg_depth->set_type(GLMessage::DataType::INT);
9684    arg_depth->add_intvalue(depth);
9685
9686    // call function
9687    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9688    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9689    glContext->hooks->gl.glTexStorage3DEXT(target, levels, internalformat, width, height, depth);
9690    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9691    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9692
9693    void *pointerArgs[] = {
9694    };
9695
9696    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9697                              threadStartTime, threadEndTime,
9698                              &glmsg, pointerArgs);
9699    glContext->traceGLMessage(&glmsg);
9700}
9701
9702void GLTrace_glTextureStorage1DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) {
9703    GLMessage glmsg;
9704    GLTraceContext *glContext = getGLTraceContext();
9705
9706    glmsg.set_function(GLMessage::glTextureStorage1DEXT);
9707
9708    // copy argument texture
9709    GLMessage_DataType *arg_texture = glmsg.add_args();
9710    arg_texture->set_isarray(false);
9711    arg_texture->set_type(GLMessage::DataType::INT);
9712    arg_texture->add_intvalue(texture);
9713
9714    // copy argument target
9715    GLMessage_DataType *arg_target = glmsg.add_args();
9716    arg_target->set_isarray(false);
9717    arg_target->set_type(GLMessage::DataType::ENUM);
9718    arg_target->add_intvalue((int)target);
9719
9720    // copy argument levels
9721    GLMessage_DataType *arg_levels = glmsg.add_args();
9722    arg_levels->set_isarray(false);
9723    arg_levels->set_type(GLMessage::DataType::INT);
9724    arg_levels->add_intvalue(levels);
9725
9726    // copy argument internalformat
9727    GLMessage_DataType *arg_internalformat = glmsg.add_args();
9728    arg_internalformat->set_isarray(false);
9729    arg_internalformat->set_type(GLMessage::DataType::ENUM);
9730    arg_internalformat->add_intvalue((int)internalformat);
9731
9732    // copy argument width
9733    GLMessage_DataType *arg_width = glmsg.add_args();
9734    arg_width->set_isarray(false);
9735    arg_width->set_type(GLMessage::DataType::INT);
9736    arg_width->add_intvalue(width);
9737
9738    // call function
9739    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9740    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9741    glContext->hooks->gl.glTextureStorage1DEXT(texture, target, levels, internalformat, width);
9742    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9743    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9744
9745    void *pointerArgs[] = {
9746    };
9747
9748    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9749                              threadStartTime, threadEndTime,
9750                              &glmsg, pointerArgs);
9751    glContext->traceGLMessage(&glmsg);
9752}
9753
9754void GLTrace_glTextureStorage2DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) {
9755    GLMessage glmsg;
9756    GLTraceContext *glContext = getGLTraceContext();
9757
9758    glmsg.set_function(GLMessage::glTextureStorage2DEXT);
9759
9760    // copy argument texture
9761    GLMessage_DataType *arg_texture = glmsg.add_args();
9762    arg_texture->set_isarray(false);
9763    arg_texture->set_type(GLMessage::DataType::INT);
9764    arg_texture->add_intvalue(texture);
9765
9766    // copy argument target
9767    GLMessage_DataType *arg_target = glmsg.add_args();
9768    arg_target->set_isarray(false);
9769    arg_target->set_type(GLMessage::DataType::ENUM);
9770    arg_target->add_intvalue((int)target);
9771
9772    // copy argument levels
9773    GLMessage_DataType *arg_levels = glmsg.add_args();
9774    arg_levels->set_isarray(false);
9775    arg_levels->set_type(GLMessage::DataType::INT);
9776    arg_levels->add_intvalue(levels);
9777
9778    // copy argument internalformat
9779    GLMessage_DataType *arg_internalformat = glmsg.add_args();
9780    arg_internalformat->set_isarray(false);
9781    arg_internalformat->set_type(GLMessage::DataType::ENUM);
9782    arg_internalformat->add_intvalue((int)internalformat);
9783
9784    // copy argument width
9785    GLMessage_DataType *arg_width = glmsg.add_args();
9786    arg_width->set_isarray(false);
9787    arg_width->set_type(GLMessage::DataType::INT);
9788    arg_width->add_intvalue(width);
9789
9790    // copy argument height
9791    GLMessage_DataType *arg_height = glmsg.add_args();
9792    arg_height->set_isarray(false);
9793    arg_height->set_type(GLMessage::DataType::INT);
9794    arg_height->add_intvalue(height);
9795
9796    // call function
9797    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9798    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9799    glContext->hooks->gl.glTextureStorage2DEXT(texture, target, levels, internalformat, width, height);
9800    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9801    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9802
9803    void *pointerArgs[] = {
9804    };
9805
9806    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9807                              threadStartTime, threadEndTime,
9808                              &glmsg, pointerArgs);
9809    glContext->traceGLMessage(&glmsg);
9810}
9811
9812void GLTrace_glTextureStorage3DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) {
9813    GLMessage glmsg;
9814    GLTraceContext *glContext = getGLTraceContext();
9815
9816    glmsg.set_function(GLMessage::glTextureStorage3DEXT);
9817
9818    // copy argument texture
9819    GLMessage_DataType *arg_texture = glmsg.add_args();
9820    arg_texture->set_isarray(false);
9821    arg_texture->set_type(GLMessage::DataType::INT);
9822    arg_texture->add_intvalue(texture);
9823
9824    // copy argument target
9825    GLMessage_DataType *arg_target = glmsg.add_args();
9826    arg_target->set_isarray(false);
9827    arg_target->set_type(GLMessage::DataType::ENUM);
9828    arg_target->add_intvalue((int)target);
9829
9830    // copy argument levels
9831    GLMessage_DataType *arg_levels = glmsg.add_args();
9832    arg_levels->set_isarray(false);
9833    arg_levels->set_type(GLMessage::DataType::INT);
9834    arg_levels->add_intvalue(levels);
9835
9836    // copy argument internalformat
9837    GLMessage_DataType *arg_internalformat = glmsg.add_args();
9838    arg_internalformat->set_isarray(false);
9839    arg_internalformat->set_type(GLMessage::DataType::ENUM);
9840    arg_internalformat->add_intvalue((int)internalformat);
9841
9842    // copy argument width
9843    GLMessage_DataType *arg_width = glmsg.add_args();
9844    arg_width->set_isarray(false);
9845    arg_width->set_type(GLMessage::DataType::INT);
9846    arg_width->add_intvalue(width);
9847
9848    // copy argument height
9849    GLMessage_DataType *arg_height = glmsg.add_args();
9850    arg_height->set_isarray(false);
9851    arg_height->set_type(GLMessage::DataType::INT);
9852    arg_height->add_intvalue(height);
9853
9854    // copy argument depth
9855    GLMessage_DataType *arg_depth = glmsg.add_args();
9856    arg_depth->set_isarray(false);
9857    arg_depth->set_type(GLMessage::DataType::INT);
9858    arg_depth->add_intvalue(depth);
9859
9860    // call function
9861    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9862    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9863    glContext->hooks->gl.glTextureStorage3DEXT(texture, target, levels, internalformat, width, height, depth);
9864    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9865    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9866
9867    void *pointerArgs[] = {
9868    };
9869
9870    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9871                              threadStartTime, threadEndTime,
9872                              &glmsg, pointerArgs);
9873    glContext->traceGLMessage(&glmsg);
9874}
9875
9876void GLTrace_glRenderbufferStorageMultisampleIMG(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
9877    GLMessage glmsg;
9878    GLTraceContext *glContext = getGLTraceContext();
9879
9880    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleIMG);
9881
9882    // copy argument target
9883    GLMessage_DataType *arg_target = glmsg.add_args();
9884    arg_target->set_isarray(false);
9885    arg_target->set_type(GLMessage::DataType::ENUM);
9886    arg_target->add_intvalue((int)target);
9887
9888    // copy argument samples
9889    GLMessage_DataType *arg_samples = glmsg.add_args();
9890    arg_samples->set_isarray(false);
9891    arg_samples->set_type(GLMessage::DataType::INT);
9892    arg_samples->add_intvalue(samples);
9893
9894    // copy argument internalformat
9895    GLMessage_DataType *arg_internalformat = glmsg.add_args();
9896    arg_internalformat->set_isarray(false);
9897    arg_internalformat->set_type(GLMessage::DataType::ENUM);
9898    arg_internalformat->add_intvalue((int)internalformat);
9899
9900    // copy argument width
9901    GLMessage_DataType *arg_width = glmsg.add_args();
9902    arg_width->set_isarray(false);
9903    arg_width->set_type(GLMessage::DataType::INT);
9904    arg_width->add_intvalue(width);
9905
9906    // copy argument height
9907    GLMessage_DataType *arg_height = glmsg.add_args();
9908    arg_height->set_isarray(false);
9909    arg_height->set_type(GLMessage::DataType::INT);
9910    arg_height->add_intvalue(height);
9911
9912    // call function
9913    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9914    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9915    glContext->hooks->gl.glRenderbufferStorageMultisampleIMG(target, samples, internalformat, width, height);
9916    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9917    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9918
9919    void *pointerArgs[] = {
9920    };
9921
9922    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9923                              threadStartTime, threadEndTime,
9924                              &glmsg, pointerArgs);
9925    glContext->traceGLMessage(&glmsg);
9926}
9927
9928void GLTrace_glFramebufferTexture2DMultisampleIMG(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples) {
9929    GLMessage glmsg;
9930    GLTraceContext *glContext = getGLTraceContext();
9931
9932    glmsg.set_function(GLMessage::glFramebufferTexture2DMultisampleIMG);
9933
9934    // copy argument target
9935    GLMessage_DataType *arg_target = glmsg.add_args();
9936    arg_target->set_isarray(false);
9937    arg_target->set_type(GLMessage::DataType::ENUM);
9938    arg_target->add_intvalue((int)target);
9939
9940    // copy argument attachment
9941    GLMessage_DataType *arg_attachment = glmsg.add_args();
9942    arg_attachment->set_isarray(false);
9943    arg_attachment->set_type(GLMessage::DataType::ENUM);
9944    arg_attachment->add_intvalue((int)attachment);
9945
9946    // copy argument textarget
9947    GLMessage_DataType *arg_textarget = glmsg.add_args();
9948    arg_textarget->set_isarray(false);
9949    arg_textarget->set_type(GLMessage::DataType::ENUM);
9950    arg_textarget->add_intvalue((int)textarget);
9951
9952    // copy argument texture
9953    GLMessage_DataType *arg_texture = glmsg.add_args();
9954    arg_texture->set_isarray(false);
9955    arg_texture->set_type(GLMessage::DataType::INT);
9956    arg_texture->add_intvalue(texture);
9957
9958    // copy argument level
9959    GLMessage_DataType *arg_level = glmsg.add_args();
9960    arg_level->set_isarray(false);
9961    arg_level->set_type(GLMessage::DataType::INT);
9962    arg_level->add_intvalue(level);
9963
9964    // copy argument samples
9965    GLMessage_DataType *arg_samples = glmsg.add_args();
9966    arg_samples->set_isarray(false);
9967    arg_samples->set_type(GLMessage::DataType::INT);
9968    arg_samples->add_intvalue(samples);
9969
9970    // call function
9971    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9972    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9973    glContext->hooks->gl.glFramebufferTexture2DMultisampleIMG(target, attachment, textarget, texture, level, samples);
9974    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9975    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9976
9977    void *pointerArgs[] = {
9978    };
9979
9980    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9981                              threadStartTime, threadEndTime,
9982                              &glmsg, pointerArgs);
9983    glContext->traceGLMessage(&glmsg);
9984}
9985
9986void GLTrace_glCoverageMaskNV(GLboolean mask) {
9987    GLMessage glmsg;
9988    GLTraceContext *glContext = getGLTraceContext();
9989
9990    glmsg.set_function(GLMessage::glCoverageMaskNV);
9991
9992    // copy argument mask
9993    GLMessage_DataType *arg_mask = glmsg.add_args();
9994    arg_mask->set_isarray(false);
9995    arg_mask->set_type(GLMessage::DataType::BOOL);
9996    arg_mask->add_boolvalue(mask);
9997
9998    // call function
9999    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10000    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10001    glContext->hooks->gl.glCoverageMaskNV(mask);
10002    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10003    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10004
10005    void *pointerArgs[] = {
10006    };
10007
10008    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10009                              threadStartTime, threadEndTime,
10010                              &glmsg, pointerArgs);
10011    glContext->traceGLMessage(&glmsg);
10012}
10013
10014void GLTrace_glCoverageOperationNV(GLenum operation) {
10015    GLMessage glmsg;
10016    GLTraceContext *glContext = getGLTraceContext();
10017
10018    glmsg.set_function(GLMessage::glCoverageOperationNV);
10019
10020    // copy argument operation
10021    GLMessage_DataType *arg_operation = glmsg.add_args();
10022    arg_operation->set_isarray(false);
10023    arg_operation->set_type(GLMessage::DataType::ENUM);
10024    arg_operation->add_intvalue((int)operation);
10025
10026    // call function
10027    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10028    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10029    glContext->hooks->gl.glCoverageOperationNV(operation);
10030    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10031    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10032
10033    void *pointerArgs[] = {
10034    };
10035
10036    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10037                              threadStartTime, threadEndTime,
10038                              &glmsg, pointerArgs);
10039    glContext->traceGLMessage(&glmsg);
10040}
10041
10042void GLTrace_glDrawBuffersNV(GLsizei n, const GLenum *bufs) {
10043    GLMessage glmsg;
10044    GLTraceContext *glContext = getGLTraceContext();
10045
10046    glmsg.set_function(GLMessage::glDrawBuffersNV);
10047
10048    // copy argument n
10049    GLMessage_DataType *arg_n = glmsg.add_args();
10050    arg_n->set_isarray(false);
10051    arg_n->set_type(GLMessage::DataType::INT);
10052    arg_n->add_intvalue(n);
10053
10054    // copy argument bufs
10055    GLMessage_DataType *arg_bufs = glmsg.add_args();
10056    arg_bufs->set_isarray(false);
10057    arg_bufs->set_type(GLMessage::DataType::INT);
10058    arg_bufs->add_intvalue((int)bufs);
10059
10060    // call function
10061    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10062    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10063    glContext->hooks->gl.glDrawBuffersNV(n, bufs);
10064    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10065    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10066
10067    void *pointerArgs[] = {
10068        (void *) bufs,
10069    };
10070
10071    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10072                              threadStartTime, threadEndTime,
10073                              &glmsg, pointerArgs);
10074    glContext->traceGLMessage(&glmsg);
10075}
10076
10077void GLTrace_glDeleteFencesNV(GLsizei n, const GLuint *fences) {
10078    GLMessage glmsg;
10079    GLTraceContext *glContext = getGLTraceContext();
10080
10081    glmsg.set_function(GLMessage::glDeleteFencesNV);
10082
10083    // copy argument n
10084    GLMessage_DataType *arg_n = glmsg.add_args();
10085    arg_n->set_isarray(false);
10086    arg_n->set_type(GLMessage::DataType::INT);
10087    arg_n->add_intvalue(n);
10088
10089    // copy argument fences
10090    GLMessage_DataType *arg_fences = glmsg.add_args();
10091    arg_fences->set_isarray(false);
10092    arg_fences->set_type(GLMessage::DataType::INT);
10093    arg_fences->add_intvalue((int)fences);
10094
10095    // call function
10096    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10097    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10098    glContext->hooks->gl.glDeleteFencesNV(n, fences);
10099    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10100    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10101
10102    void *pointerArgs[] = {
10103        (void *) fences,
10104    };
10105
10106    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10107                              threadStartTime, threadEndTime,
10108                              &glmsg, pointerArgs);
10109    glContext->traceGLMessage(&glmsg);
10110}
10111
10112void GLTrace_glGenFencesNV(GLsizei n, GLuint *fences) {
10113    GLMessage glmsg;
10114    GLTraceContext *glContext = getGLTraceContext();
10115
10116    glmsg.set_function(GLMessage::glGenFencesNV);
10117
10118    // copy argument n
10119    GLMessage_DataType *arg_n = glmsg.add_args();
10120    arg_n->set_isarray(false);
10121    arg_n->set_type(GLMessage::DataType::INT);
10122    arg_n->add_intvalue(n);
10123
10124    // copy argument fences
10125    GLMessage_DataType *arg_fences = glmsg.add_args();
10126    arg_fences->set_isarray(false);
10127    arg_fences->set_type(GLMessage::DataType::INT);
10128    arg_fences->add_intvalue((int)fences);
10129
10130    // call function
10131    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10132    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10133    glContext->hooks->gl.glGenFencesNV(n, fences);
10134    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10135    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10136
10137    void *pointerArgs[] = {
10138        (void *) fences,
10139    };
10140
10141    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10142                              threadStartTime, threadEndTime,
10143                              &glmsg, pointerArgs);
10144    glContext->traceGLMessage(&glmsg);
10145}
10146
10147GLboolean GLTrace_glIsFenceNV(GLuint fence) {
10148    GLMessage glmsg;
10149    GLTraceContext *glContext = getGLTraceContext();
10150
10151    glmsg.set_function(GLMessage::glIsFenceNV);
10152
10153    // copy argument fence
10154    GLMessage_DataType *arg_fence = glmsg.add_args();
10155    arg_fence->set_isarray(false);
10156    arg_fence->set_type(GLMessage::DataType::INT);
10157    arg_fence->add_intvalue(fence);
10158
10159    // call function
10160    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10161    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10162    GLboolean retValue = glContext->hooks->gl.glIsFenceNV(fence);
10163    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10164    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10165
10166    // set return value
10167    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
10168    rt->set_isarray(false);
10169    rt->set_type(GLMessage::DataType::BOOL);
10170    rt->add_boolvalue(retValue);
10171
10172    void *pointerArgs[] = {
10173    };
10174
10175    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10176                              threadStartTime, threadEndTime,
10177                              &glmsg, pointerArgs);
10178    glContext->traceGLMessage(&glmsg);
10179
10180    return retValue;
10181}
10182
10183GLboolean GLTrace_glTestFenceNV(GLuint fence) {
10184    GLMessage glmsg;
10185    GLTraceContext *glContext = getGLTraceContext();
10186
10187    glmsg.set_function(GLMessage::glTestFenceNV);
10188
10189    // copy argument fence
10190    GLMessage_DataType *arg_fence = glmsg.add_args();
10191    arg_fence->set_isarray(false);
10192    arg_fence->set_type(GLMessage::DataType::INT);
10193    arg_fence->add_intvalue(fence);
10194
10195    // call function
10196    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10197    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10198    GLboolean retValue = glContext->hooks->gl.glTestFenceNV(fence);
10199    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10200    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10201
10202    // set return value
10203    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
10204    rt->set_isarray(false);
10205    rt->set_type(GLMessage::DataType::BOOL);
10206    rt->add_boolvalue(retValue);
10207
10208    void *pointerArgs[] = {
10209    };
10210
10211    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10212                              threadStartTime, threadEndTime,
10213                              &glmsg, pointerArgs);
10214    glContext->traceGLMessage(&glmsg);
10215
10216    return retValue;
10217}
10218
10219void GLTrace_glGetFenceivNV(GLuint fence, GLenum pname, GLint *params) {
10220    GLMessage glmsg;
10221    GLTraceContext *glContext = getGLTraceContext();
10222
10223    glmsg.set_function(GLMessage::glGetFenceivNV);
10224
10225    // copy argument fence
10226    GLMessage_DataType *arg_fence = glmsg.add_args();
10227    arg_fence->set_isarray(false);
10228    arg_fence->set_type(GLMessage::DataType::INT);
10229    arg_fence->add_intvalue(fence);
10230
10231    // copy argument pname
10232    GLMessage_DataType *arg_pname = glmsg.add_args();
10233    arg_pname->set_isarray(false);
10234    arg_pname->set_type(GLMessage::DataType::ENUM);
10235    arg_pname->add_intvalue((int)pname);
10236
10237    // copy argument params
10238    GLMessage_DataType *arg_params = glmsg.add_args();
10239    arg_params->set_isarray(false);
10240    arg_params->set_type(GLMessage::DataType::INT);
10241    arg_params->add_intvalue((int)params);
10242
10243    // call function
10244    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10245    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10246    glContext->hooks->gl.glGetFenceivNV(fence, pname, params);
10247    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10248    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10249
10250    void *pointerArgs[] = {
10251        (void *) params,
10252    };
10253
10254    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10255                              threadStartTime, threadEndTime,
10256                              &glmsg, pointerArgs);
10257    glContext->traceGLMessage(&glmsg);
10258}
10259
10260void GLTrace_glFinishFenceNV(GLuint fence) {
10261    GLMessage glmsg;
10262    GLTraceContext *glContext = getGLTraceContext();
10263
10264    glmsg.set_function(GLMessage::glFinishFenceNV);
10265
10266    // copy argument fence
10267    GLMessage_DataType *arg_fence = glmsg.add_args();
10268    arg_fence->set_isarray(false);
10269    arg_fence->set_type(GLMessage::DataType::INT);
10270    arg_fence->add_intvalue(fence);
10271
10272    // call function
10273    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10274    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10275    glContext->hooks->gl.glFinishFenceNV(fence);
10276    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10277    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10278
10279    void *pointerArgs[] = {
10280    };
10281
10282    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10283                              threadStartTime, threadEndTime,
10284                              &glmsg, pointerArgs);
10285    glContext->traceGLMessage(&glmsg);
10286}
10287
10288void GLTrace_glSetFenceNV(GLuint fence, GLenum condition) {
10289    GLMessage glmsg;
10290    GLTraceContext *glContext = getGLTraceContext();
10291
10292    glmsg.set_function(GLMessage::glSetFenceNV);
10293
10294    // copy argument fence
10295    GLMessage_DataType *arg_fence = glmsg.add_args();
10296    arg_fence->set_isarray(false);
10297    arg_fence->set_type(GLMessage::DataType::INT);
10298    arg_fence->add_intvalue(fence);
10299
10300    // copy argument condition
10301    GLMessage_DataType *arg_condition = glmsg.add_args();
10302    arg_condition->set_isarray(false);
10303    arg_condition->set_type(GLMessage::DataType::ENUM);
10304    arg_condition->add_intvalue((int)condition);
10305
10306    // call function
10307    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10308    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10309    glContext->hooks->gl.glSetFenceNV(fence, condition);
10310    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10311    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10312
10313    void *pointerArgs[] = {
10314    };
10315
10316    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10317                              threadStartTime, threadEndTime,
10318                              &glmsg, pointerArgs);
10319    glContext->traceGLMessage(&glmsg);
10320}
10321
10322void GLTrace_glReadBufferNV(GLenum mode) {
10323    GLMessage glmsg;
10324    GLTraceContext *glContext = getGLTraceContext();
10325
10326    glmsg.set_function(GLMessage::glReadBufferNV);
10327
10328    // copy argument mode
10329    GLMessage_DataType *arg_mode = glmsg.add_args();
10330    arg_mode->set_isarray(false);
10331    arg_mode->set_type(GLMessage::DataType::ENUM);
10332    arg_mode->add_intvalue((int)mode);
10333
10334    // call function
10335    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10336    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10337    glContext->hooks->gl.glReadBufferNV(mode);
10338    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10339    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10340
10341    void *pointerArgs[] = {
10342    };
10343
10344    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10345                              threadStartTime, threadEndTime,
10346                              &glmsg, pointerArgs);
10347    glContext->traceGLMessage(&glmsg);
10348}
10349
10350void GLTrace_glAlphaFuncQCOM(GLenum func, GLclampf ref) {
10351    GLMessage glmsg;
10352    GLTraceContext *glContext = getGLTraceContext();
10353
10354    glmsg.set_function(GLMessage::glAlphaFuncQCOM);
10355
10356    // copy argument func
10357    GLMessage_DataType *arg_func = glmsg.add_args();
10358    arg_func->set_isarray(false);
10359    arg_func->set_type(GLMessage::DataType::ENUM);
10360    arg_func->add_intvalue((int)func);
10361
10362    // copy argument ref
10363    GLMessage_DataType *arg_ref = glmsg.add_args();
10364    arg_ref->set_isarray(false);
10365    arg_ref->set_type(GLMessage::DataType::FLOAT);
10366    arg_ref->add_floatvalue(ref);
10367
10368    // call function
10369    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10370    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10371    glContext->hooks->gl.glAlphaFuncQCOM(func, ref);
10372    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10373    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10374
10375    void *pointerArgs[] = {
10376    };
10377
10378    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10379                              threadStartTime, threadEndTime,
10380                              &glmsg, pointerArgs);
10381    glContext->traceGLMessage(&glmsg);
10382}
10383
10384void GLTrace_glGetDriverControlsQCOM(GLint *num, GLsizei size, GLuint *driverControls) {
10385    GLMessage glmsg;
10386    GLTraceContext *glContext = getGLTraceContext();
10387
10388    glmsg.set_function(GLMessage::glGetDriverControlsQCOM);
10389
10390    // copy argument num
10391    GLMessage_DataType *arg_num = glmsg.add_args();
10392    arg_num->set_isarray(false);
10393    arg_num->set_type(GLMessage::DataType::INT);
10394    arg_num->add_intvalue((int)num);
10395
10396    // copy argument size
10397    GLMessage_DataType *arg_size = glmsg.add_args();
10398    arg_size->set_isarray(false);
10399    arg_size->set_type(GLMessage::DataType::INT);
10400    arg_size->add_intvalue(size);
10401
10402    // copy argument driverControls
10403    GLMessage_DataType *arg_driverControls = glmsg.add_args();
10404    arg_driverControls->set_isarray(false);
10405    arg_driverControls->set_type(GLMessage::DataType::INT);
10406    arg_driverControls->add_intvalue((int)driverControls);
10407
10408    // call function
10409    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10410    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10411    glContext->hooks->gl.glGetDriverControlsQCOM(num, size, driverControls);
10412    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10413    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10414
10415    void *pointerArgs[] = {
10416        (void *) num,
10417        (void *) driverControls,
10418    };
10419
10420    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10421                              threadStartTime, threadEndTime,
10422                              &glmsg, pointerArgs);
10423    glContext->traceGLMessage(&glmsg);
10424}
10425
10426void GLTrace_glGetDriverControlStringQCOM(GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString) {
10427    GLMessage glmsg;
10428    GLTraceContext *glContext = getGLTraceContext();
10429
10430    glmsg.set_function(GLMessage::glGetDriverControlStringQCOM);
10431
10432    // copy argument driverControl
10433    GLMessage_DataType *arg_driverControl = glmsg.add_args();
10434    arg_driverControl->set_isarray(false);
10435    arg_driverControl->set_type(GLMessage::DataType::INT);
10436    arg_driverControl->add_intvalue(driverControl);
10437
10438    // copy argument bufSize
10439    GLMessage_DataType *arg_bufSize = glmsg.add_args();
10440    arg_bufSize->set_isarray(false);
10441    arg_bufSize->set_type(GLMessage::DataType::INT);
10442    arg_bufSize->add_intvalue(bufSize);
10443
10444    // copy argument length
10445    GLMessage_DataType *arg_length = glmsg.add_args();
10446    arg_length->set_isarray(false);
10447    arg_length->set_type(GLMessage::DataType::INT);
10448    arg_length->add_intvalue((int)length);
10449
10450    // copy argument driverControlString
10451    GLMessage_DataType *arg_driverControlString = glmsg.add_args();
10452    arg_driverControlString->set_isarray(false);
10453    arg_driverControlString->set_type(GLMessage::DataType::INT);
10454    arg_driverControlString->add_intvalue((int)driverControlString);
10455
10456    // call function
10457    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10458    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10459    glContext->hooks->gl.glGetDriverControlStringQCOM(driverControl, bufSize, length, driverControlString);
10460    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10461    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10462
10463    void *pointerArgs[] = {
10464        (void *) length,
10465        (void *) driverControlString,
10466    };
10467
10468    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10469                              threadStartTime, threadEndTime,
10470                              &glmsg, pointerArgs);
10471    glContext->traceGLMessage(&glmsg);
10472}
10473
10474void GLTrace_glEnableDriverControlQCOM(GLuint driverControl) {
10475    GLMessage glmsg;
10476    GLTraceContext *glContext = getGLTraceContext();
10477
10478    glmsg.set_function(GLMessage::glEnableDriverControlQCOM);
10479
10480    // copy argument driverControl
10481    GLMessage_DataType *arg_driverControl = glmsg.add_args();
10482    arg_driverControl->set_isarray(false);
10483    arg_driverControl->set_type(GLMessage::DataType::INT);
10484    arg_driverControl->add_intvalue(driverControl);
10485
10486    // call function
10487    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10488    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10489    glContext->hooks->gl.glEnableDriverControlQCOM(driverControl);
10490    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10491    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10492
10493    void *pointerArgs[] = {
10494    };
10495
10496    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10497                              threadStartTime, threadEndTime,
10498                              &glmsg, pointerArgs);
10499    glContext->traceGLMessage(&glmsg);
10500}
10501
10502void GLTrace_glDisableDriverControlQCOM(GLuint driverControl) {
10503    GLMessage glmsg;
10504    GLTraceContext *glContext = getGLTraceContext();
10505
10506    glmsg.set_function(GLMessage::glDisableDriverControlQCOM);
10507
10508    // copy argument driverControl
10509    GLMessage_DataType *arg_driverControl = glmsg.add_args();
10510    arg_driverControl->set_isarray(false);
10511    arg_driverControl->set_type(GLMessage::DataType::INT);
10512    arg_driverControl->add_intvalue(driverControl);
10513
10514    // call function
10515    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10516    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10517    glContext->hooks->gl.glDisableDriverControlQCOM(driverControl);
10518    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10519    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10520
10521    void *pointerArgs[] = {
10522    };
10523
10524    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10525                              threadStartTime, threadEndTime,
10526                              &glmsg, pointerArgs);
10527    glContext->traceGLMessage(&glmsg);
10528}
10529
10530void GLTrace_glExtGetTexturesQCOM(GLuint *textures, GLint maxTextures, GLint *numTextures) {
10531    GLMessage glmsg;
10532    GLTraceContext *glContext = getGLTraceContext();
10533
10534    glmsg.set_function(GLMessage::glExtGetTexturesQCOM);
10535
10536    // copy argument textures
10537    GLMessage_DataType *arg_textures = glmsg.add_args();
10538    arg_textures->set_isarray(false);
10539    arg_textures->set_type(GLMessage::DataType::INT);
10540    arg_textures->add_intvalue((int)textures);
10541
10542    // copy argument maxTextures
10543    GLMessage_DataType *arg_maxTextures = glmsg.add_args();
10544    arg_maxTextures->set_isarray(false);
10545    arg_maxTextures->set_type(GLMessage::DataType::INT);
10546    arg_maxTextures->add_intvalue(maxTextures);
10547
10548    // copy argument numTextures
10549    GLMessage_DataType *arg_numTextures = glmsg.add_args();
10550    arg_numTextures->set_isarray(false);
10551    arg_numTextures->set_type(GLMessage::DataType::INT);
10552    arg_numTextures->add_intvalue((int)numTextures);
10553
10554    // call function
10555    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10556    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10557    glContext->hooks->gl.glExtGetTexturesQCOM(textures, maxTextures, numTextures);
10558    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10559    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10560
10561    void *pointerArgs[] = {
10562        (void *) textures,
10563        (void *) numTextures,
10564    };
10565
10566    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10567                              threadStartTime, threadEndTime,
10568                              &glmsg, pointerArgs);
10569    glContext->traceGLMessage(&glmsg);
10570}
10571
10572void GLTrace_glExtGetBuffersQCOM(GLuint *buffers, GLint maxBuffers, GLint *numBuffers) {
10573    GLMessage glmsg;
10574    GLTraceContext *glContext = getGLTraceContext();
10575
10576    glmsg.set_function(GLMessage::glExtGetBuffersQCOM);
10577
10578    // copy argument buffers
10579    GLMessage_DataType *arg_buffers = glmsg.add_args();
10580    arg_buffers->set_isarray(false);
10581    arg_buffers->set_type(GLMessage::DataType::INT);
10582    arg_buffers->add_intvalue((int)buffers);
10583
10584    // copy argument maxBuffers
10585    GLMessage_DataType *arg_maxBuffers = glmsg.add_args();
10586    arg_maxBuffers->set_isarray(false);
10587    arg_maxBuffers->set_type(GLMessage::DataType::INT);
10588    arg_maxBuffers->add_intvalue(maxBuffers);
10589
10590    // copy argument numBuffers
10591    GLMessage_DataType *arg_numBuffers = glmsg.add_args();
10592    arg_numBuffers->set_isarray(false);
10593    arg_numBuffers->set_type(GLMessage::DataType::INT);
10594    arg_numBuffers->add_intvalue((int)numBuffers);
10595
10596    // call function
10597    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10598    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10599    glContext->hooks->gl.glExtGetBuffersQCOM(buffers, maxBuffers, numBuffers);
10600    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10601    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10602
10603    void *pointerArgs[] = {
10604        (void *) buffers,
10605        (void *) numBuffers,
10606    };
10607
10608    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10609                              threadStartTime, threadEndTime,
10610                              &glmsg, pointerArgs);
10611    glContext->traceGLMessage(&glmsg);
10612}
10613
10614void GLTrace_glExtGetRenderbuffersQCOM(GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers) {
10615    GLMessage glmsg;
10616    GLTraceContext *glContext = getGLTraceContext();
10617
10618    glmsg.set_function(GLMessage::glExtGetRenderbuffersQCOM);
10619
10620    // copy argument renderbuffers
10621    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
10622    arg_renderbuffers->set_isarray(false);
10623    arg_renderbuffers->set_type(GLMessage::DataType::INT);
10624    arg_renderbuffers->add_intvalue((int)renderbuffers);
10625
10626    // copy argument maxRenderbuffers
10627    GLMessage_DataType *arg_maxRenderbuffers = glmsg.add_args();
10628    arg_maxRenderbuffers->set_isarray(false);
10629    arg_maxRenderbuffers->set_type(GLMessage::DataType::INT);
10630    arg_maxRenderbuffers->add_intvalue(maxRenderbuffers);
10631
10632    // copy argument numRenderbuffers
10633    GLMessage_DataType *arg_numRenderbuffers = glmsg.add_args();
10634    arg_numRenderbuffers->set_isarray(false);
10635    arg_numRenderbuffers->set_type(GLMessage::DataType::INT);
10636    arg_numRenderbuffers->add_intvalue((int)numRenderbuffers);
10637
10638    // call function
10639    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10640    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10641    glContext->hooks->gl.glExtGetRenderbuffersQCOM(renderbuffers, maxRenderbuffers, numRenderbuffers);
10642    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10643    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10644
10645    void *pointerArgs[] = {
10646        (void *) renderbuffers,
10647        (void *) numRenderbuffers,
10648    };
10649
10650    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10651                              threadStartTime, threadEndTime,
10652                              &glmsg, pointerArgs);
10653    glContext->traceGLMessage(&glmsg);
10654}
10655
10656void GLTrace_glExtGetFramebuffersQCOM(GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers) {
10657    GLMessage glmsg;
10658    GLTraceContext *glContext = getGLTraceContext();
10659
10660    glmsg.set_function(GLMessage::glExtGetFramebuffersQCOM);
10661
10662    // copy argument framebuffers
10663    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
10664    arg_framebuffers->set_isarray(false);
10665    arg_framebuffers->set_type(GLMessage::DataType::INT);
10666    arg_framebuffers->add_intvalue((int)framebuffers);
10667
10668    // copy argument maxFramebuffers
10669    GLMessage_DataType *arg_maxFramebuffers = glmsg.add_args();
10670    arg_maxFramebuffers->set_isarray(false);
10671    arg_maxFramebuffers->set_type(GLMessage::DataType::INT);
10672    arg_maxFramebuffers->add_intvalue(maxFramebuffers);
10673
10674    // copy argument numFramebuffers
10675    GLMessage_DataType *arg_numFramebuffers = glmsg.add_args();
10676    arg_numFramebuffers->set_isarray(false);
10677    arg_numFramebuffers->set_type(GLMessage::DataType::INT);
10678    arg_numFramebuffers->add_intvalue((int)numFramebuffers);
10679
10680    // call function
10681    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10682    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10683    glContext->hooks->gl.glExtGetFramebuffersQCOM(framebuffers, maxFramebuffers, numFramebuffers);
10684    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10685    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10686
10687    void *pointerArgs[] = {
10688        (void *) framebuffers,
10689        (void *) numFramebuffers,
10690    };
10691
10692    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10693                              threadStartTime, threadEndTime,
10694                              &glmsg, pointerArgs);
10695    glContext->traceGLMessage(&glmsg);
10696}
10697
10698void GLTrace_glExtGetTexLevelParameterivQCOM(GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params) {
10699    GLMessage glmsg;
10700    GLTraceContext *glContext = getGLTraceContext();
10701
10702    glmsg.set_function(GLMessage::glExtGetTexLevelParameterivQCOM);
10703
10704    // copy argument texture
10705    GLMessage_DataType *arg_texture = glmsg.add_args();
10706    arg_texture->set_isarray(false);
10707    arg_texture->set_type(GLMessage::DataType::INT);
10708    arg_texture->add_intvalue(texture);
10709
10710    // copy argument face
10711    GLMessage_DataType *arg_face = glmsg.add_args();
10712    arg_face->set_isarray(false);
10713    arg_face->set_type(GLMessage::DataType::ENUM);
10714    arg_face->add_intvalue((int)face);
10715
10716    // copy argument level
10717    GLMessage_DataType *arg_level = glmsg.add_args();
10718    arg_level->set_isarray(false);
10719    arg_level->set_type(GLMessage::DataType::INT);
10720    arg_level->add_intvalue(level);
10721
10722    // copy argument pname
10723    GLMessage_DataType *arg_pname = glmsg.add_args();
10724    arg_pname->set_isarray(false);
10725    arg_pname->set_type(GLMessage::DataType::ENUM);
10726    arg_pname->add_intvalue((int)pname);
10727
10728    // copy argument params
10729    GLMessage_DataType *arg_params = glmsg.add_args();
10730    arg_params->set_isarray(false);
10731    arg_params->set_type(GLMessage::DataType::INT);
10732    arg_params->add_intvalue((int)params);
10733
10734    // call function
10735    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10736    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10737    glContext->hooks->gl.glExtGetTexLevelParameterivQCOM(texture, face, level, pname, params);
10738    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10739    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10740
10741    void *pointerArgs[] = {
10742        (void *) params,
10743    };
10744
10745    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10746                              threadStartTime, threadEndTime,
10747                              &glmsg, pointerArgs);
10748    glContext->traceGLMessage(&glmsg);
10749}
10750
10751void GLTrace_glExtTexObjectStateOverrideiQCOM(GLenum target, GLenum pname, GLint param) {
10752    GLMessage glmsg;
10753    GLTraceContext *glContext = getGLTraceContext();
10754
10755    glmsg.set_function(GLMessage::glExtTexObjectStateOverrideiQCOM);
10756
10757    // copy argument target
10758    GLMessage_DataType *arg_target = glmsg.add_args();
10759    arg_target->set_isarray(false);
10760    arg_target->set_type(GLMessage::DataType::ENUM);
10761    arg_target->add_intvalue((int)target);
10762
10763    // copy argument pname
10764    GLMessage_DataType *arg_pname = glmsg.add_args();
10765    arg_pname->set_isarray(false);
10766    arg_pname->set_type(GLMessage::DataType::ENUM);
10767    arg_pname->add_intvalue((int)pname);
10768
10769    // copy argument param
10770    GLMessage_DataType *arg_param = glmsg.add_args();
10771    arg_param->set_isarray(false);
10772    arg_param->set_type(GLMessage::DataType::INT);
10773    arg_param->add_intvalue(param);
10774
10775    // call function
10776    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10777    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10778    glContext->hooks->gl.glExtTexObjectStateOverrideiQCOM(target, pname, param);
10779    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10780    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10781
10782    void *pointerArgs[] = {
10783    };
10784
10785    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10786                              threadStartTime, threadEndTime,
10787                              &glmsg, pointerArgs);
10788    glContext->traceGLMessage(&glmsg);
10789}
10790
10791void GLTrace_glExtGetTexSubImageQCOM(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels) {
10792    GLMessage glmsg;
10793    GLTraceContext *glContext = getGLTraceContext();
10794
10795    glmsg.set_function(GLMessage::glExtGetTexSubImageQCOM);
10796
10797    // copy argument target
10798    GLMessage_DataType *arg_target = glmsg.add_args();
10799    arg_target->set_isarray(false);
10800    arg_target->set_type(GLMessage::DataType::ENUM);
10801    arg_target->add_intvalue((int)target);
10802
10803    // copy argument level
10804    GLMessage_DataType *arg_level = glmsg.add_args();
10805    arg_level->set_isarray(false);
10806    arg_level->set_type(GLMessage::DataType::INT);
10807    arg_level->add_intvalue(level);
10808
10809    // copy argument xoffset
10810    GLMessage_DataType *arg_xoffset = glmsg.add_args();
10811    arg_xoffset->set_isarray(false);
10812    arg_xoffset->set_type(GLMessage::DataType::INT);
10813    arg_xoffset->add_intvalue(xoffset);
10814
10815    // copy argument yoffset
10816    GLMessage_DataType *arg_yoffset = glmsg.add_args();
10817    arg_yoffset->set_isarray(false);
10818    arg_yoffset->set_type(GLMessage::DataType::INT);
10819    arg_yoffset->add_intvalue(yoffset);
10820
10821    // copy argument zoffset
10822    GLMessage_DataType *arg_zoffset = glmsg.add_args();
10823    arg_zoffset->set_isarray(false);
10824    arg_zoffset->set_type(GLMessage::DataType::INT);
10825    arg_zoffset->add_intvalue(zoffset);
10826
10827    // copy argument width
10828    GLMessage_DataType *arg_width = glmsg.add_args();
10829    arg_width->set_isarray(false);
10830    arg_width->set_type(GLMessage::DataType::INT);
10831    arg_width->add_intvalue(width);
10832
10833    // copy argument height
10834    GLMessage_DataType *arg_height = glmsg.add_args();
10835    arg_height->set_isarray(false);
10836    arg_height->set_type(GLMessage::DataType::INT);
10837    arg_height->add_intvalue(height);
10838
10839    // copy argument depth
10840    GLMessage_DataType *arg_depth = glmsg.add_args();
10841    arg_depth->set_isarray(false);
10842    arg_depth->set_type(GLMessage::DataType::INT);
10843    arg_depth->add_intvalue(depth);
10844
10845    // copy argument format
10846    GLMessage_DataType *arg_format = glmsg.add_args();
10847    arg_format->set_isarray(false);
10848    arg_format->set_type(GLMessage::DataType::ENUM);
10849    arg_format->add_intvalue((int)format);
10850
10851    // copy argument type
10852    GLMessage_DataType *arg_type = glmsg.add_args();
10853    arg_type->set_isarray(false);
10854    arg_type->set_type(GLMessage::DataType::ENUM);
10855    arg_type->add_intvalue((int)type);
10856
10857    // copy argument texels
10858    GLMessage_DataType *arg_texels = glmsg.add_args();
10859    arg_texels->set_isarray(false);
10860    arg_texels->set_type(GLMessage::DataType::INT);
10861    arg_texels->add_intvalue((int)texels);
10862
10863    // call function
10864    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10865    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10866    glContext->hooks->gl.glExtGetTexSubImageQCOM(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, texels);
10867    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10868    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10869
10870    void *pointerArgs[] = {
10871        (void *) texels,
10872    };
10873
10874    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10875                              threadStartTime, threadEndTime,
10876                              &glmsg, pointerArgs);
10877    glContext->traceGLMessage(&glmsg);
10878}
10879
10880void GLTrace_glExtGetBufferPointervQCOM(GLenum target, GLvoid **params) {
10881    GLMessage glmsg;
10882    GLTraceContext *glContext = getGLTraceContext();
10883
10884    glmsg.set_function(GLMessage::glExtGetBufferPointervQCOM);
10885
10886    // copy argument target
10887    GLMessage_DataType *arg_target = glmsg.add_args();
10888    arg_target->set_isarray(false);
10889    arg_target->set_type(GLMessage::DataType::ENUM);
10890    arg_target->add_intvalue((int)target);
10891
10892    // copy argument params
10893    GLMessage_DataType *arg_params = glmsg.add_args();
10894    arg_params->set_isarray(false);
10895    arg_params->set_type(GLMessage::DataType::INT);
10896    arg_params->add_intvalue((int)params);
10897
10898    // call function
10899    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10900    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10901    glContext->hooks->gl.glExtGetBufferPointervQCOM(target, params);
10902    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10903    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10904
10905    void *pointerArgs[] = {
10906        (void *) params,
10907    };
10908
10909    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10910                              threadStartTime, threadEndTime,
10911                              &glmsg, pointerArgs);
10912    glContext->traceGLMessage(&glmsg);
10913}
10914
10915void GLTrace_glExtGetShadersQCOM(GLuint *shaders, GLint maxShaders, GLint *numShaders) {
10916    GLMessage glmsg;
10917    GLTraceContext *glContext = getGLTraceContext();
10918
10919    glmsg.set_function(GLMessage::glExtGetShadersQCOM);
10920
10921    // copy argument shaders
10922    GLMessage_DataType *arg_shaders = glmsg.add_args();
10923    arg_shaders->set_isarray(false);
10924    arg_shaders->set_type(GLMessage::DataType::INT);
10925    arg_shaders->add_intvalue((int)shaders);
10926
10927    // copy argument maxShaders
10928    GLMessage_DataType *arg_maxShaders = glmsg.add_args();
10929    arg_maxShaders->set_isarray(false);
10930    arg_maxShaders->set_type(GLMessage::DataType::INT);
10931    arg_maxShaders->add_intvalue(maxShaders);
10932
10933    // copy argument numShaders
10934    GLMessage_DataType *arg_numShaders = glmsg.add_args();
10935    arg_numShaders->set_isarray(false);
10936    arg_numShaders->set_type(GLMessage::DataType::INT);
10937    arg_numShaders->add_intvalue((int)numShaders);
10938
10939    // call function
10940    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10941    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10942    glContext->hooks->gl.glExtGetShadersQCOM(shaders, maxShaders, numShaders);
10943    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10944    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10945
10946    void *pointerArgs[] = {
10947        (void *) shaders,
10948        (void *) numShaders,
10949    };
10950
10951    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10952                              threadStartTime, threadEndTime,
10953                              &glmsg, pointerArgs);
10954    glContext->traceGLMessage(&glmsg);
10955}
10956
10957void GLTrace_glExtGetProgramsQCOM(GLuint *programs, GLint maxPrograms, GLint *numPrograms) {
10958    GLMessage glmsg;
10959    GLTraceContext *glContext = getGLTraceContext();
10960
10961    glmsg.set_function(GLMessage::glExtGetProgramsQCOM);
10962
10963    // copy argument programs
10964    GLMessage_DataType *arg_programs = glmsg.add_args();
10965    arg_programs->set_isarray(false);
10966    arg_programs->set_type(GLMessage::DataType::INT);
10967    arg_programs->add_intvalue((int)programs);
10968
10969    // copy argument maxPrograms
10970    GLMessage_DataType *arg_maxPrograms = glmsg.add_args();
10971    arg_maxPrograms->set_isarray(false);
10972    arg_maxPrograms->set_type(GLMessage::DataType::INT);
10973    arg_maxPrograms->add_intvalue(maxPrograms);
10974
10975    // copy argument numPrograms
10976    GLMessage_DataType *arg_numPrograms = glmsg.add_args();
10977    arg_numPrograms->set_isarray(false);
10978    arg_numPrograms->set_type(GLMessage::DataType::INT);
10979    arg_numPrograms->add_intvalue((int)numPrograms);
10980
10981    // call function
10982    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10983    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10984    glContext->hooks->gl.glExtGetProgramsQCOM(programs, maxPrograms, numPrograms);
10985    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10986    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10987
10988    void *pointerArgs[] = {
10989        (void *) programs,
10990        (void *) numPrograms,
10991    };
10992
10993    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10994                              threadStartTime, threadEndTime,
10995                              &glmsg, pointerArgs);
10996    glContext->traceGLMessage(&glmsg);
10997}
10998
10999GLboolean GLTrace_glExtIsProgramBinaryQCOM(GLuint program) {
11000    GLMessage glmsg;
11001    GLTraceContext *glContext = getGLTraceContext();
11002
11003    glmsg.set_function(GLMessage::glExtIsProgramBinaryQCOM);
11004
11005    // copy argument program
11006    GLMessage_DataType *arg_program = glmsg.add_args();
11007    arg_program->set_isarray(false);
11008    arg_program->set_type(GLMessage::DataType::INT);
11009    arg_program->add_intvalue(program);
11010
11011    // call function
11012    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11013    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11014    GLboolean retValue = glContext->hooks->gl.glExtIsProgramBinaryQCOM(program);
11015    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11016    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11017
11018    // set return value
11019    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
11020    rt->set_isarray(false);
11021    rt->set_type(GLMessage::DataType::BOOL);
11022    rt->add_boolvalue(retValue);
11023
11024    void *pointerArgs[] = {
11025    };
11026
11027    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11028                              threadStartTime, threadEndTime,
11029                              &glmsg, pointerArgs);
11030    glContext->traceGLMessage(&glmsg);
11031
11032    return retValue;
11033}
11034
11035void GLTrace_glExtGetProgramBinarySourceQCOM(GLuint program, GLenum shadertype, GLchar *source, GLint *length) {
11036    GLMessage glmsg;
11037    GLTraceContext *glContext = getGLTraceContext();
11038
11039    glmsg.set_function(GLMessage::glExtGetProgramBinarySourceQCOM);
11040
11041    // copy argument program
11042    GLMessage_DataType *arg_program = glmsg.add_args();
11043    arg_program->set_isarray(false);
11044    arg_program->set_type(GLMessage::DataType::INT);
11045    arg_program->add_intvalue(program);
11046
11047    // copy argument shadertype
11048    GLMessage_DataType *arg_shadertype = glmsg.add_args();
11049    arg_shadertype->set_isarray(false);
11050    arg_shadertype->set_type(GLMessage::DataType::ENUM);
11051    arg_shadertype->add_intvalue((int)shadertype);
11052
11053    // copy argument source
11054    GLMessage_DataType *arg_source = glmsg.add_args();
11055    arg_source->set_isarray(false);
11056    arg_source->set_type(GLMessage::DataType::INT);
11057    arg_source->add_intvalue((int)source);
11058
11059    // copy argument length
11060    GLMessage_DataType *arg_length = glmsg.add_args();
11061    arg_length->set_isarray(false);
11062    arg_length->set_type(GLMessage::DataType::INT);
11063    arg_length->add_intvalue((int)length);
11064
11065    // call function
11066    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11067    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11068    glContext->hooks->gl.glExtGetProgramBinarySourceQCOM(program, shadertype, source, length);
11069    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11070    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11071
11072    void *pointerArgs[] = {
11073        (void *) source,
11074        (void *) length,
11075    };
11076
11077    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11078                              threadStartTime, threadEndTime,
11079                              &glmsg, pointerArgs);
11080    glContext->traceGLMessage(&glmsg);
11081}
11082
11083void GLTrace_glStartTilingQCOM(GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask) {
11084    GLMessage glmsg;
11085    GLTraceContext *glContext = getGLTraceContext();
11086
11087    glmsg.set_function(GLMessage::glStartTilingQCOM);
11088
11089    // copy argument x
11090    GLMessage_DataType *arg_x = glmsg.add_args();
11091    arg_x->set_isarray(false);
11092    arg_x->set_type(GLMessage::DataType::INT);
11093    arg_x->add_intvalue(x);
11094
11095    // copy argument y
11096    GLMessage_DataType *arg_y = glmsg.add_args();
11097    arg_y->set_isarray(false);
11098    arg_y->set_type(GLMessage::DataType::INT);
11099    arg_y->add_intvalue(y);
11100
11101    // copy argument width
11102    GLMessage_DataType *arg_width = glmsg.add_args();
11103    arg_width->set_isarray(false);
11104    arg_width->set_type(GLMessage::DataType::INT);
11105    arg_width->add_intvalue(width);
11106
11107    // copy argument height
11108    GLMessage_DataType *arg_height = glmsg.add_args();
11109    arg_height->set_isarray(false);
11110    arg_height->set_type(GLMessage::DataType::INT);
11111    arg_height->add_intvalue(height);
11112
11113    // copy argument preserveMask
11114    GLMessage_DataType *arg_preserveMask = glmsg.add_args();
11115    arg_preserveMask->set_isarray(false);
11116    arg_preserveMask->set_type(GLMessage::DataType::INT);
11117    arg_preserveMask->add_intvalue(preserveMask);
11118
11119    // call function
11120    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11121    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11122    glContext->hooks->gl.glStartTilingQCOM(x, y, width, height, preserveMask);
11123    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11124    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11125
11126    void *pointerArgs[] = {
11127    };
11128
11129    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11130                              threadStartTime, threadEndTime,
11131                              &glmsg, pointerArgs);
11132    glContext->traceGLMessage(&glmsg);
11133}
11134
11135void GLTrace_glEndTilingQCOM(GLbitfield preserveMask) {
11136    GLMessage glmsg;
11137    GLTraceContext *glContext = getGLTraceContext();
11138
11139    glmsg.set_function(GLMessage::glEndTilingQCOM);
11140
11141    // copy argument preserveMask
11142    GLMessage_DataType *arg_preserveMask = glmsg.add_args();
11143    arg_preserveMask->set_isarray(false);
11144    arg_preserveMask->set_type(GLMessage::DataType::INT);
11145    arg_preserveMask->add_intvalue(preserveMask);
11146
11147    // call function
11148    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11149    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11150    glContext->hooks->gl.glEndTilingQCOM(preserveMask);
11151    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11152    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11153
11154    void *pointerArgs[] = {
11155    };
11156
11157    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11158                              threadStartTime, threadEndTime,
11159                              &glmsg, pointerArgs);
11160    glContext->traceGLMessage(&glmsg);
11161}
11162
11163
11164// Definitions for GL1 APIs
11165
11166void GLTrace_glAlphaFunc(GLenum func, GLclampf ref) {
11167    GLMessage glmsg;
11168    GLTraceContext *glContext = getGLTraceContext();
11169
11170    glmsg.set_function(GLMessage::glAlphaFunc);
11171
11172    // copy argument func
11173    GLMessage_DataType *arg_func = glmsg.add_args();
11174    arg_func->set_isarray(false);
11175    arg_func->set_type(GLMessage::DataType::ENUM);
11176    arg_func->add_intvalue((int)func);
11177
11178    // copy argument ref
11179    GLMessage_DataType *arg_ref = glmsg.add_args();
11180    arg_ref->set_isarray(false);
11181    arg_ref->set_type(GLMessage::DataType::FLOAT);
11182    arg_ref->add_floatvalue(ref);
11183
11184    // call function
11185    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11186    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11187    glContext->hooks->gl.glAlphaFunc(func, ref);
11188    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11189    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11190
11191    void *pointerArgs[] = {
11192    };
11193
11194    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11195                              threadStartTime, threadEndTime,
11196                              &glmsg, pointerArgs);
11197    glContext->traceGLMessage(&glmsg);
11198}
11199
11200void GLTrace_glClipPlanef(GLenum plane, const GLfloat *equation) {
11201    GLMessage glmsg;
11202    GLTraceContext *glContext = getGLTraceContext();
11203
11204    glmsg.set_function(GLMessage::glClipPlanef);
11205
11206    // copy argument plane
11207    GLMessage_DataType *arg_plane = glmsg.add_args();
11208    arg_plane->set_isarray(false);
11209    arg_plane->set_type(GLMessage::DataType::ENUM);
11210    arg_plane->add_intvalue((int)plane);
11211
11212    // copy argument equation
11213    GLMessage_DataType *arg_equation = glmsg.add_args();
11214    arg_equation->set_isarray(false);
11215    arg_equation->set_type(GLMessage::DataType::INT);
11216    arg_equation->add_intvalue((int)equation);
11217
11218    // call function
11219    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11220    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11221    glContext->hooks->gl.glClipPlanef(plane, equation);
11222    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11223    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11224
11225    void *pointerArgs[] = {
11226        (void *) equation,
11227    };
11228
11229    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11230                              threadStartTime, threadEndTime,
11231                              &glmsg, pointerArgs);
11232    glContext->traceGLMessage(&glmsg);
11233}
11234
11235void GLTrace_glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) {
11236    GLMessage glmsg;
11237    GLTraceContext *glContext = getGLTraceContext();
11238
11239    glmsg.set_function(GLMessage::glColor4f);
11240
11241    // copy argument red
11242    GLMessage_DataType *arg_red = glmsg.add_args();
11243    arg_red->set_isarray(false);
11244    arg_red->set_type(GLMessage::DataType::FLOAT);
11245    arg_red->add_floatvalue(red);
11246
11247    // copy argument green
11248    GLMessage_DataType *arg_green = glmsg.add_args();
11249    arg_green->set_isarray(false);
11250    arg_green->set_type(GLMessage::DataType::FLOAT);
11251    arg_green->add_floatvalue(green);
11252
11253    // copy argument blue
11254    GLMessage_DataType *arg_blue = glmsg.add_args();
11255    arg_blue->set_isarray(false);
11256    arg_blue->set_type(GLMessage::DataType::FLOAT);
11257    arg_blue->add_floatvalue(blue);
11258
11259    // copy argument alpha
11260    GLMessage_DataType *arg_alpha = glmsg.add_args();
11261    arg_alpha->set_isarray(false);
11262    arg_alpha->set_type(GLMessage::DataType::FLOAT);
11263    arg_alpha->add_floatvalue(alpha);
11264
11265    // call function
11266    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11267    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11268    glContext->hooks->gl.glColor4f(red, green, blue, alpha);
11269    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11270    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11271
11272    void *pointerArgs[] = {
11273    };
11274
11275    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11276                              threadStartTime, threadEndTime,
11277                              &glmsg, pointerArgs);
11278    glContext->traceGLMessage(&glmsg);
11279}
11280
11281void GLTrace_glFogf(GLenum pname, GLfloat param) {
11282    GLMessage glmsg;
11283    GLTraceContext *glContext = getGLTraceContext();
11284
11285    glmsg.set_function(GLMessage::glFogf);
11286
11287    // copy argument pname
11288    GLMessage_DataType *arg_pname = glmsg.add_args();
11289    arg_pname->set_isarray(false);
11290    arg_pname->set_type(GLMessage::DataType::ENUM);
11291    arg_pname->add_intvalue((int)pname);
11292
11293    // copy argument param
11294    GLMessage_DataType *arg_param = glmsg.add_args();
11295    arg_param->set_isarray(false);
11296    arg_param->set_type(GLMessage::DataType::FLOAT);
11297    arg_param->add_floatvalue(param);
11298
11299    // call function
11300    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11301    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11302    glContext->hooks->gl.glFogf(pname, param);
11303    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11304    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11305
11306    void *pointerArgs[] = {
11307    };
11308
11309    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11310                              threadStartTime, threadEndTime,
11311                              &glmsg, pointerArgs);
11312    glContext->traceGLMessage(&glmsg);
11313}
11314
11315void GLTrace_glFogfv(GLenum pname, const GLfloat *params) {
11316    GLMessage glmsg;
11317    GLTraceContext *glContext = getGLTraceContext();
11318
11319    glmsg.set_function(GLMessage::glFogfv);
11320
11321    // copy argument pname
11322    GLMessage_DataType *arg_pname = glmsg.add_args();
11323    arg_pname->set_isarray(false);
11324    arg_pname->set_type(GLMessage::DataType::ENUM);
11325    arg_pname->add_intvalue((int)pname);
11326
11327    // copy argument params
11328    GLMessage_DataType *arg_params = glmsg.add_args();
11329    arg_params->set_isarray(false);
11330    arg_params->set_type(GLMessage::DataType::INT);
11331    arg_params->add_intvalue((int)params);
11332
11333    // call function
11334    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11335    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11336    glContext->hooks->gl.glFogfv(pname, params);
11337    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11338    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11339
11340    void *pointerArgs[] = {
11341        (void *) params,
11342    };
11343
11344    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11345                              threadStartTime, threadEndTime,
11346                              &glmsg, pointerArgs);
11347    glContext->traceGLMessage(&glmsg);
11348}
11349
11350void GLTrace_glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
11351    GLMessage glmsg;
11352    GLTraceContext *glContext = getGLTraceContext();
11353
11354    glmsg.set_function(GLMessage::glFrustumf);
11355
11356    // copy argument left
11357    GLMessage_DataType *arg_left = glmsg.add_args();
11358    arg_left->set_isarray(false);
11359    arg_left->set_type(GLMessage::DataType::FLOAT);
11360    arg_left->add_floatvalue(left);
11361
11362    // copy argument right
11363    GLMessage_DataType *arg_right = glmsg.add_args();
11364    arg_right->set_isarray(false);
11365    arg_right->set_type(GLMessage::DataType::FLOAT);
11366    arg_right->add_floatvalue(right);
11367
11368    // copy argument bottom
11369    GLMessage_DataType *arg_bottom = glmsg.add_args();
11370    arg_bottom->set_isarray(false);
11371    arg_bottom->set_type(GLMessage::DataType::FLOAT);
11372    arg_bottom->add_floatvalue(bottom);
11373
11374    // copy argument top
11375    GLMessage_DataType *arg_top = glmsg.add_args();
11376    arg_top->set_isarray(false);
11377    arg_top->set_type(GLMessage::DataType::FLOAT);
11378    arg_top->add_floatvalue(top);
11379
11380    // copy argument zNear
11381    GLMessage_DataType *arg_zNear = glmsg.add_args();
11382    arg_zNear->set_isarray(false);
11383    arg_zNear->set_type(GLMessage::DataType::FLOAT);
11384    arg_zNear->add_floatvalue(zNear);
11385
11386    // copy argument zFar
11387    GLMessage_DataType *arg_zFar = glmsg.add_args();
11388    arg_zFar->set_isarray(false);
11389    arg_zFar->set_type(GLMessage::DataType::FLOAT);
11390    arg_zFar->add_floatvalue(zFar);
11391
11392    // call function
11393    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11394    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11395    glContext->hooks->gl.glFrustumf(left, right, bottom, top, zNear, zFar);
11396    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11397    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11398
11399    void *pointerArgs[] = {
11400    };
11401
11402    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11403                              threadStartTime, threadEndTime,
11404                              &glmsg, pointerArgs);
11405    glContext->traceGLMessage(&glmsg);
11406}
11407
11408void GLTrace_glGetClipPlanef(GLenum pname, GLfloat eqn[4]) {
11409    GLMessage glmsg;
11410    GLTraceContext *glContext = getGLTraceContext();
11411
11412    glmsg.set_function(GLMessage::glGetClipPlanef);
11413
11414    // copy argument pname
11415    GLMessage_DataType *arg_pname = glmsg.add_args();
11416    arg_pname->set_isarray(false);
11417    arg_pname->set_type(GLMessage::DataType::ENUM);
11418    arg_pname->add_intvalue((int)pname);
11419
11420    // copy argument eqn
11421    GLMessage_DataType *arg_eqn = glmsg.add_args();
11422    arg_eqn->set_isarray(false);
11423    arg_eqn->set_type(GLMessage::DataType::INT);
11424    arg_eqn->add_intvalue((int)eqn);
11425
11426    // call function
11427    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11428    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11429    glContext->hooks->gl.glGetClipPlanef(pname, eqn);
11430    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11431    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11432
11433    void *pointerArgs[] = {
11434        (void *) eqn,
11435    };
11436
11437    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11438                              threadStartTime, threadEndTime,
11439                              &glmsg, pointerArgs);
11440    glContext->traceGLMessage(&glmsg);
11441}
11442
11443void GLTrace_glGetLightfv(GLenum light, GLenum pname, GLfloat *params) {
11444    GLMessage glmsg;
11445    GLTraceContext *glContext = getGLTraceContext();
11446
11447    glmsg.set_function(GLMessage::glGetLightfv);
11448
11449    // copy argument light
11450    GLMessage_DataType *arg_light = glmsg.add_args();
11451    arg_light->set_isarray(false);
11452    arg_light->set_type(GLMessage::DataType::ENUM);
11453    arg_light->add_intvalue((int)light);
11454
11455    // copy argument pname
11456    GLMessage_DataType *arg_pname = glmsg.add_args();
11457    arg_pname->set_isarray(false);
11458    arg_pname->set_type(GLMessage::DataType::ENUM);
11459    arg_pname->add_intvalue((int)pname);
11460
11461    // copy argument params
11462    GLMessage_DataType *arg_params = glmsg.add_args();
11463    arg_params->set_isarray(false);
11464    arg_params->set_type(GLMessage::DataType::INT);
11465    arg_params->add_intvalue((int)params);
11466
11467    // call function
11468    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11469    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11470    glContext->hooks->gl.glGetLightfv(light, pname, params);
11471    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11472    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11473
11474    void *pointerArgs[] = {
11475        (void *) params,
11476    };
11477
11478    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11479                              threadStartTime, threadEndTime,
11480                              &glmsg, pointerArgs);
11481    glContext->traceGLMessage(&glmsg);
11482}
11483
11484void GLTrace_glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) {
11485    GLMessage glmsg;
11486    GLTraceContext *glContext = getGLTraceContext();
11487
11488    glmsg.set_function(GLMessage::glGetMaterialfv);
11489
11490    // copy argument face
11491    GLMessage_DataType *arg_face = glmsg.add_args();
11492    arg_face->set_isarray(false);
11493    arg_face->set_type(GLMessage::DataType::ENUM);
11494    arg_face->add_intvalue((int)face);
11495
11496    // copy argument pname
11497    GLMessage_DataType *arg_pname = glmsg.add_args();
11498    arg_pname->set_isarray(false);
11499    arg_pname->set_type(GLMessage::DataType::ENUM);
11500    arg_pname->add_intvalue((int)pname);
11501
11502    // copy argument params
11503    GLMessage_DataType *arg_params = glmsg.add_args();
11504    arg_params->set_isarray(false);
11505    arg_params->set_type(GLMessage::DataType::INT);
11506    arg_params->add_intvalue((int)params);
11507
11508    // call function
11509    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11510    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11511    glContext->hooks->gl.glGetMaterialfv(face, pname, params);
11512    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11513    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11514
11515    void *pointerArgs[] = {
11516        (void *) params,
11517    };
11518
11519    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11520                              threadStartTime, threadEndTime,
11521                              &glmsg, pointerArgs);
11522    glContext->traceGLMessage(&glmsg);
11523}
11524
11525void GLTrace_glGetTexEnvfv(GLenum env, GLenum pname, GLfloat *params) {
11526    GLMessage glmsg;
11527    GLTraceContext *glContext = getGLTraceContext();
11528
11529    glmsg.set_function(GLMessage::glGetTexEnvfv);
11530
11531    // copy argument env
11532    GLMessage_DataType *arg_env = glmsg.add_args();
11533    arg_env->set_isarray(false);
11534    arg_env->set_type(GLMessage::DataType::ENUM);
11535    arg_env->add_intvalue((int)env);
11536
11537    // copy argument pname
11538    GLMessage_DataType *arg_pname = glmsg.add_args();
11539    arg_pname->set_isarray(false);
11540    arg_pname->set_type(GLMessage::DataType::ENUM);
11541    arg_pname->add_intvalue((int)pname);
11542
11543    // copy argument params
11544    GLMessage_DataType *arg_params = glmsg.add_args();
11545    arg_params->set_isarray(false);
11546    arg_params->set_type(GLMessage::DataType::INT);
11547    arg_params->add_intvalue((int)params);
11548
11549    // call function
11550    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11551    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11552    glContext->hooks->gl.glGetTexEnvfv(env, pname, params);
11553    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11554    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11555
11556    void *pointerArgs[] = {
11557        (void *) params,
11558    };
11559
11560    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11561                              threadStartTime, threadEndTime,
11562                              &glmsg, pointerArgs);
11563    glContext->traceGLMessage(&glmsg);
11564}
11565
11566void GLTrace_glLightModelf(GLenum pname, GLfloat param) {
11567    GLMessage glmsg;
11568    GLTraceContext *glContext = getGLTraceContext();
11569
11570    glmsg.set_function(GLMessage::glLightModelf);
11571
11572    // copy argument pname
11573    GLMessage_DataType *arg_pname = glmsg.add_args();
11574    arg_pname->set_isarray(false);
11575    arg_pname->set_type(GLMessage::DataType::ENUM);
11576    arg_pname->add_intvalue((int)pname);
11577
11578    // copy argument param
11579    GLMessage_DataType *arg_param = glmsg.add_args();
11580    arg_param->set_isarray(false);
11581    arg_param->set_type(GLMessage::DataType::FLOAT);
11582    arg_param->add_floatvalue(param);
11583
11584    // call function
11585    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11586    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11587    glContext->hooks->gl.glLightModelf(pname, param);
11588    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11589    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11590
11591    void *pointerArgs[] = {
11592    };
11593
11594    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11595                              threadStartTime, threadEndTime,
11596                              &glmsg, pointerArgs);
11597    glContext->traceGLMessage(&glmsg);
11598}
11599
11600void GLTrace_glLightModelfv(GLenum pname, const GLfloat *params) {
11601    GLMessage glmsg;
11602    GLTraceContext *glContext = getGLTraceContext();
11603
11604    glmsg.set_function(GLMessage::glLightModelfv);
11605
11606    // copy argument pname
11607    GLMessage_DataType *arg_pname = glmsg.add_args();
11608    arg_pname->set_isarray(false);
11609    arg_pname->set_type(GLMessage::DataType::ENUM);
11610    arg_pname->add_intvalue((int)pname);
11611
11612    // copy argument params
11613    GLMessage_DataType *arg_params = glmsg.add_args();
11614    arg_params->set_isarray(false);
11615    arg_params->set_type(GLMessage::DataType::INT);
11616    arg_params->add_intvalue((int)params);
11617
11618    // call function
11619    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11620    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11621    glContext->hooks->gl.glLightModelfv(pname, params);
11622    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11623    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11624
11625    void *pointerArgs[] = {
11626        (void *) params,
11627    };
11628
11629    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11630                              threadStartTime, threadEndTime,
11631                              &glmsg, pointerArgs);
11632    glContext->traceGLMessage(&glmsg);
11633}
11634
11635void GLTrace_glLightf(GLenum light, GLenum pname, GLfloat param) {
11636    GLMessage glmsg;
11637    GLTraceContext *glContext = getGLTraceContext();
11638
11639    glmsg.set_function(GLMessage::glLightf);
11640
11641    // copy argument light
11642    GLMessage_DataType *arg_light = glmsg.add_args();
11643    arg_light->set_isarray(false);
11644    arg_light->set_type(GLMessage::DataType::ENUM);
11645    arg_light->add_intvalue((int)light);
11646
11647    // copy argument pname
11648    GLMessage_DataType *arg_pname = glmsg.add_args();
11649    arg_pname->set_isarray(false);
11650    arg_pname->set_type(GLMessage::DataType::ENUM);
11651    arg_pname->add_intvalue((int)pname);
11652
11653    // copy argument param
11654    GLMessage_DataType *arg_param = glmsg.add_args();
11655    arg_param->set_isarray(false);
11656    arg_param->set_type(GLMessage::DataType::FLOAT);
11657    arg_param->add_floatvalue(param);
11658
11659    // call function
11660    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11661    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11662    glContext->hooks->gl.glLightf(light, pname, param);
11663    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11664    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11665
11666    void *pointerArgs[] = {
11667    };
11668
11669    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11670                              threadStartTime, threadEndTime,
11671                              &glmsg, pointerArgs);
11672    glContext->traceGLMessage(&glmsg);
11673}
11674
11675void GLTrace_glLightfv(GLenum light, GLenum pname, const GLfloat *params) {
11676    GLMessage glmsg;
11677    GLTraceContext *glContext = getGLTraceContext();
11678
11679    glmsg.set_function(GLMessage::glLightfv);
11680
11681    // copy argument light
11682    GLMessage_DataType *arg_light = glmsg.add_args();
11683    arg_light->set_isarray(false);
11684    arg_light->set_type(GLMessage::DataType::ENUM);
11685    arg_light->add_intvalue((int)light);
11686
11687    // copy argument pname
11688    GLMessage_DataType *arg_pname = glmsg.add_args();
11689    arg_pname->set_isarray(false);
11690    arg_pname->set_type(GLMessage::DataType::ENUM);
11691    arg_pname->add_intvalue((int)pname);
11692
11693    // copy argument params
11694    GLMessage_DataType *arg_params = glmsg.add_args();
11695    arg_params->set_isarray(false);
11696    arg_params->set_type(GLMessage::DataType::INT);
11697    arg_params->add_intvalue((int)params);
11698
11699    // call function
11700    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11701    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11702    glContext->hooks->gl.glLightfv(light, pname, params);
11703    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11704    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11705
11706    void *pointerArgs[] = {
11707        (void *) params,
11708    };
11709
11710    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11711                              threadStartTime, threadEndTime,
11712                              &glmsg, pointerArgs);
11713    glContext->traceGLMessage(&glmsg);
11714}
11715
11716void GLTrace_glLoadMatrixf(const GLfloat *m) {
11717    GLMessage glmsg;
11718    GLTraceContext *glContext = getGLTraceContext();
11719
11720    glmsg.set_function(GLMessage::glLoadMatrixf);
11721
11722    // copy argument m
11723    GLMessage_DataType *arg_m = glmsg.add_args();
11724    arg_m->set_isarray(false);
11725    arg_m->set_type(GLMessage::DataType::INT);
11726    arg_m->add_intvalue((int)m);
11727
11728    // call function
11729    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11730    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11731    glContext->hooks->gl.glLoadMatrixf(m);
11732    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11733    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11734
11735    void *pointerArgs[] = {
11736        (void *) m,
11737    };
11738
11739    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11740                              threadStartTime, threadEndTime,
11741                              &glmsg, pointerArgs);
11742    glContext->traceGLMessage(&glmsg);
11743}
11744
11745void GLTrace_glMaterialf(GLenum face, GLenum pname, GLfloat param) {
11746    GLMessage glmsg;
11747    GLTraceContext *glContext = getGLTraceContext();
11748
11749    glmsg.set_function(GLMessage::glMaterialf);
11750
11751    // copy argument face
11752    GLMessage_DataType *arg_face = glmsg.add_args();
11753    arg_face->set_isarray(false);
11754    arg_face->set_type(GLMessage::DataType::ENUM);
11755    arg_face->add_intvalue((int)face);
11756
11757    // copy argument pname
11758    GLMessage_DataType *arg_pname = glmsg.add_args();
11759    arg_pname->set_isarray(false);
11760    arg_pname->set_type(GLMessage::DataType::ENUM);
11761    arg_pname->add_intvalue((int)pname);
11762
11763    // copy argument param
11764    GLMessage_DataType *arg_param = glmsg.add_args();
11765    arg_param->set_isarray(false);
11766    arg_param->set_type(GLMessage::DataType::FLOAT);
11767    arg_param->add_floatvalue(param);
11768
11769    // call function
11770    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11771    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11772    glContext->hooks->gl.glMaterialf(face, pname, param);
11773    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11774    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11775
11776    void *pointerArgs[] = {
11777    };
11778
11779    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11780                              threadStartTime, threadEndTime,
11781                              &glmsg, pointerArgs);
11782    glContext->traceGLMessage(&glmsg);
11783}
11784
11785void GLTrace_glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) {
11786    GLMessage glmsg;
11787    GLTraceContext *glContext = getGLTraceContext();
11788
11789    glmsg.set_function(GLMessage::glMaterialfv);
11790
11791    // copy argument face
11792    GLMessage_DataType *arg_face = glmsg.add_args();
11793    arg_face->set_isarray(false);
11794    arg_face->set_type(GLMessage::DataType::ENUM);
11795    arg_face->add_intvalue((int)face);
11796
11797    // copy argument pname
11798    GLMessage_DataType *arg_pname = glmsg.add_args();
11799    arg_pname->set_isarray(false);
11800    arg_pname->set_type(GLMessage::DataType::ENUM);
11801    arg_pname->add_intvalue((int)pname);
11802
11803    // copy argument params
11804    GLMessage_DataType *arg_params = glmsg.add_args();
11805    arg_params->set_isarray(false);
11806    arg_params->set_type(GLMessage::DataType::INT);
11807    arg_params->add_intvalue((int)params);
11808
11809    // call function
11810    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11811    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11812    glContext->hooks->gl.glMaterialfv(face, pname, params);
11813    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11814    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11815
11816    void *pointerArgs[] = {
11817        (void *) params,
11818    };
11819
11820    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11821                              threadStartTime, threadEndTime,
11822                              &glmsg, pointerArgs);
11823    glContext->traceGLMessage(&glmsg);
11824}
11825
11826void GLTrace_glMultMatrixf(const GLfloat *m) {
11827    GLMessage glmsg;
11828    GLTraceContext *glContext = getGLTraceContext();
11829
11830    glmsg.set_function(GLMessage::glMultMatrixf);
11831
11832    // copy argument m
11833    GLMessage_DataType *arg_m = glmsg.add_args();
11834    arg_m->set_isarray(false);
11835    arg_m->set_type(GLMessage::DataType::INT);
11836    arg_m->add_intvalue((int)m);
11837
11838    // call function
11839    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11840    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11841    glContext->hooks->gl.glMultMatrixf(m);
11842    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11843    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11844
11845    void *pointerArgs[] = {
11846        (void *) m,
11847    };
11848
11849    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11850                              threadStartTime, threadEndTime,
11851                              &glmsg, pointerArgs);
11852    glContext->traceGLMessage(&glmsg);
11853}
11854
11855void GLTrace_glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) {
11856    GLMessage glmsg;
11857    GLTraceContext *glContext = getGLTraceContext();
11858
11859    glmsg.set_function(GLMessage::glMultiTexCoord4f);
11860
11861    // copy argument target
11862    GLMessage_DataType *arg_target = glmsg.add_args();
11863    arg_target->set_isarray(false);
11864    arg_target->set_type(GLMessage::DataType::ENUM);
11865    arg_target->add_intvalue((int)target);
11866
11867    // copy argument s
11868    GLMessage_DataType *arg_s = glmsg.add_args();
11869    arg_s->set_isarray(false);
11870    arg_s->set_type(GLMessage::DataType::FLOAT);
11871    arg_s->add_floatvalue(s);
11872
11873    // copy argument t
11874    GLMessage_DataType *arg_t = glmsg.add_args();
11875    arg_t->set_isarray(false);
11876    arg_t->set_type(GLMessage::DataType::FLOAT);
11877    arg_t->add_floatvalue(t);
11878
11879    // copy argument r
11880    GLMessage_DataType *arg_r = glmsg.add_args();
11881    arg_r->set_isarray(false);
11882    arg_r->set_type(GLMessage::DataType::FLOAT);
11883    arg_r->add_floatvalue(r);
11884
11885    // copy argument q
11886    GLMessage_DataType *arg_q = glmsg.add_args();
11887    arg_q->set_isarray(false);
11888    arg_q->set_type(GLMessage::DataType::FLOAT);
11889    arg_q->add_floatvalue(q);
11890
11891    // call function
11892    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11893    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11894    glContext->hooks->gl.glMultiTexCoord4f(target, s, t, r, q);
11895    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11896    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11897
11898    void *pointerArgs[] = {
11899    };
11900
11901    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11902                              threadStartTime, threadEndTime,
11903                              &glmsg, pointerArgs);
11904    glContext->traceGLMessage(&glmsg);
11905}
11906
11907void GLTrace_glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) {
11908    GLMessage glmsg;
11909    GLTraceContext *glContext = getGLTraceContext();
11910
11911    glmsg.set_function(GLMessage::glNormal3f);
11912
11913    // copy argument nx
11914    GLMessage_DataType *arg_nx = glmsg.add_args();
11915    arg_nx->set_isarray(false);
11916    arg_nx->set_type(GLMessage::DataType::FLOAT);
11917    arg_nx->add_floatvalue(nx);
11918
11919    // copy argument ny
11920    GLMessage_DataType *arg_ny = glmsg.add_args();
11921    arg_ny->set_isarray(false);
11922    arg_ny->set_type(GLMessage::DataType::FLOAT);
11923    arg_ny->add_floatvalue(ny);
11924
11925    // copy argument nz
11926    GLMessage_DataType *arg_nz = glmsg.add_args();
11927    arg_nz->set_isarray(false);
11928    arg_nz->set_type(GLMessage::DataType::FLOAT);
11929    arg_nz->add_floatvalue(nz);
11930
11931    // call function
11932    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11933    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11934    glContext->hooks->gl.glNormal3f(nx, ny, nz);
11935    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11936    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11937
11938    void *pointerArgs[] = {
11939    };
11940
11941    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11942                              threadStartTime, threadEndTime,
11943                              &glmsg, pointerArgs);
11944    glContext->traceGLMessage(&glmsg);
11945}
11946
11947void GLTrace_glOrthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
11948    GLMessage glmsg;
11949    GLTraceContext *glContext = getGLTraceContext();
11950
11951    glmsg.set_function(GLMessage::glOrthof);
11952
11953    // copy argument left
11954    GLMessage_DataType *arg_left = glmsg.add_args();
11955    arg_left->set_isarray(false);
11956    arg_left->set_type(GLMessage::DataType::FLOAT);
11957    arg_left->add_floatvalue(left);
11958
11959    // copy argument right
11960    GLMessage_DataType *arg_right = glmsg.add_args();
11961    arg_right->set_isarray(false);
11962    arg_right->set_type(GLMessage::DataType::FLOAT);
11963    arg_right->add_floatvalue(right);
11964
11965    // copy argument bottom
11966    GLMessage_DataType *arg_bottom = glmsg.add_args();
11967    arg_bottom->set_isarray(false);
11968    arg_bottom->set_type(GLMessage::DataType::FLOAT);
11969    arg_bottom->add_floatvalue(bottom);
11970
11971    // copy argument top
11972    GLMessage_DataType *arg_top = glmsg.add_args();
11973    arg_top->set_isarray(false);
11974    arg_top->set_type(GLMessage::DataType::FLOAT);
11975    arg_top->add_floatvalue(top);
11976
11977    // copy argument zNear
11978    GLMessage_DataType *arg_zNear = glmsg.add_args();
11979    arg_zNear->set_isarray(false);
11980    arg_zNear->set_type(GLMessage::DataType::FLOAT);
11981    arg_zNear->add_floatvalue(zNear);
11982
11983    // copy argument zFar
11984    GLMessage_DataType *arg_zFar = glmsg.add_args();
11985    arg_zFar->set_isarray(false);
11986    arg_zFar->set_type(GLMessage::DataType::FLOAT);
11987    arg_zFar->add_floatvalue(zFar);
11988
11989    // call function
11990    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11991    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11992    glContext->hooks->gl.glOrthof(left, right, bottom, top, zNear, zFar);
11993    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11994    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11995
11996    void *pointerArgs[] = {
11997    };
11998
11999    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12000                              threadStartTime, threadEndTime,
12001                              &glmsg, pointerArgs);
12002    glContext->traceGLMessage(&glmsg);
12003}
12004
12005void GLTrace_glPointParameterf(GLenum pname, GLfloat param) {
12006    GLMessage glmsg;
12007    GLTraceContext *glContext = getGLTraceContext();
12008
12009    glmsg.set_function(GLMessage::glPointParameterf);
12010
12011    // copy argument pname
12012    GLMessage_DataType *arg_pname = glmsg.add_args();
12013    arg_pname->set_isarray(false);
12014    arg_pname->set_type(GLMessage::DataType::ENUM);
12015    arg_pname->add_intvalue((int)pname);
12016
12017    // copy argument param
12018    GLMessage_DataType *arg_param = glmsg.add_args();
12019    arg_param->set_isarray(false);
12020    arg_param->set_type(GLMessage::DataType::FLOAT);
12021    arg_param->add_floatvalue(param);
12022
12023    // call function
12024    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12025    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12026    glContext->hooks->gl.glPointParameterf(pname, param);
12027    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12028    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12029
12030    void *pointerArgs[] = {
12031    };
12032
12033    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12034                              threadStartTime, threadEndTime,
12035                              &glmsg, pointerArgs);
12036    glContext->traceGLMessage(&glmsg);
12037}
12038
12039void GLTrace_glPointParameterfv(GLenum pname, const GLfloat *params) {
12040    GLMessage glmsg;
12041    GLTraceContext *glContext = getGLTraceContext();
12042
12043    glmsg.set_function(GLMessage::glPointParameterfv);
12044
12045    // copy argument pname
12046    GLMessage_DataType *arg_pname = glmsg.add_args();
12047    arg_pname->set_isarray(false);
12048    arg_pname->set_type(GLMessage::DataType::ENUM);
12049    arg_pname->add_intvalue((int)pname);
12050
12051    // copy argument params
12052    GLMessage_DataType *arg_params = glmsg.add_args();
12053    arg_params->set_isarray(false);
12054    arg_params->set_type(GLMessage::DataType::INT);
12055    arg_params->add_intvalue((int)params);
12056
12057    // call function
12058    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12059    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12060    glContext->hooks->gl.glPointParameterfv(pname, params);
12061    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12062    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12063
12064    void *pointerArgs[] = {
12065        (void *) params,
12066    };
12067
12068    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12069                              threadStartTime, threadEndTime,
12070                              &glmsg, pointerArgs);
12071    glContext->traceGLMessage(&glmsg);
12072}
12073
12074void GLTrace_glPointSize(GLfloat size) {
12075    GLMessage glmsg;
12076    GLTraceContext *glContext = getGLTraceContext();
12077
12078    glmsg.set_function(GLMessage::glPointSize);
12079
12080    // copy argument size
12081    GLMessage_DataType *arg_size = glmsg.add_args();
12082    arg_size->set_isarray(false);
12083    arg_size->set_type(GLMessage::DataType::FLOAT);
12084    arg_size->add_floatvalue(size);
12085
12086    // call function
12087    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12088    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12089    glContext->hooks->gl.glPointSize(size);
12090    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12091    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12092
12093    void *pointerArgs[] = {
12094    };
12095
12096    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12097                              threadStartTime, threadEndTime,
12098                              &glmsg, pointerArgs);
12099    glContext->traceGLMessage(&glmsg);
12100}
12101
12102void GLTrace_glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) {
12103    GLMessage glmsg;
12104    GLTraceContext *glContext = getGLTraceContext();
12105
12106    glmsg.set_function(GLMessage::glRotatef);
12107
12108    // copy argument angle
12109    GLMessage_DataType *arg_angle = glmsg.add_args();
12110    arg_angle->set_isarray(false);
12111    arg_angle->set_type(GLMessage::DataType::FLOAT);
12112    arg_angle->add_floatvalue(angle);
12113
12114    // copy argument x
12115    GLMessage_DataType *arg_x = glmsg.add_args();
12116    arg_x->set_isarray(false);
12117    arg_x->set_type(GLMessage::DataType::FLOAT);
12118    arg_x->add_floatvalue(x);
12119
12120    // copy argument y
12121    GLMessage_DataType *arg_y = glmsg.add_args();
12122    arg_y->set_isarray(false);
12123    arg_y->set_type(GLMessage::DataType::FLOAT);
12124    arg_y->add_floatvalue(y);
12125
12126    // copy argument z
12127    GLMessage_DataType *arg_z = glmsg.add_args();
12128    arg_z->set_isarray(false);
12129    arg_z->set_type(GLMessage::DataType::FLOAT);
12130    arg_z->add_floatvalue(z);
12131
12132    // call function
12133    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12134    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12135    glContext->hooks->gl.glRotatef(angle, x, y, z);
12136    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12137    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12138
12139    void *pointerArgs[] = {
12140    };
12141
12142    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12143                              threadStartTime, threadEndTime,
12144                              &glmsg, pointerArgs);
12145    glContext->traceGLMessage(&glmsg);
12146}
12147
12148void GLTrace_glScalef(GLfloat x, GLfloat y, GLfloat z) {
12149    GLMessage glmsg;
12150    GLTraceContext *glContext = getGLTraceContext();
12151
12152    glmsg.set_function(GLMessage::glScalef);
12153
12154    // copy argument x
12155    GLMessage_DataType *arg_x = glmsg.add_args();
12156    arg_x->set_isarray(false);
12157    arg_x->set_type(GLMessage::DataType::FLOAT);
12158    arg_x->add_floatvalue(x);
12159
12160    // copy argument y
12161    GLMessage_DataType *arg_y = glmsg.add_args();
12162    arg_y->set_isarray(false);
12163    arg_y->set_type(GLMessage::DataType::FLOAT);
12164    arg_y->add_floatvalue(y);
12165
12166    // copy argument z
12167    GLMessage_DataType *arg_z = glmsg.add_args();
12168    arg_z->set_isarray(false);
12169    arg_z->set_type(GLMessage::DataType::FLOAT);
12170    arg_z->add_floatvalue(z);
12171
12172    // call function
12173    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12174    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12175    glContext->hooks->gl.glScalef(x, y, z);
12176    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12177    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12178
12179    void *pointerArgs[] = {
12180    };
12181
12182    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12183                              threadStartTime, threadEndTime,
12184                              &glmsg, pointerArgs);
12185    glContext->traceGLMessage(&glmsg);
12186}
12187
12188void GLTrace_glTexEnvf(GLenum target, GLenum pname, GLfloat param) {
12189    GLMessage glmsg;
12190    GLTraceContext *glContext = getGLTraceContext();
12191
12192    glmsg.set_function(GLMessage::glTexEnvf);
12193
12194    // copy argument target
12195    GLMessage_DataType *arg_target = glmsg.add_args();
12196    arg_target->set_isarray(false);
12197    arg_target->set_type(GLMessage::DataType::ENUM);
12198    arg_target->add_intvalue((int)target);
12199
12200    // copy argument pname
12201    GLMessage_DataType *arg_pname = glmsg.add_args();
12202    arg_pname->set_isarray(false);
12203    arg_pname->set_type(GLMessage::DataType::ENUM);
12204    arg_pname->add_intvalue((int)pname);
12205
12206    // copy argument param
12207    GLMessage_DataType *arg_param = glmsg.add_args();
12208    arg_param->set_isarray(false);
12209    arg_param->set_type(GLMessage::DataType::FLOAT);
12210    arg_param->add_floatvalue(param);
12211
12212    // call function
12213    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12214    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12215    glContext->hooks->gl.glTexEnvf(target, pname, param);
12216    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12217    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12218
12219    void *pointerArgs[] = {
12220    };
12221
12222    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12223                              threadStartTime, threadEndTime,
12224                              &glmsg, pointerArgs);
12225    glContext->traceGLMessage(&glmsg);
12226}
12227
12228void GLTrace_glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) {
12229    GLMessage glmsg;
12230    GLTraceContext *glContext = getGLTraceContext();
12231
12232    glmsg.set_function(GLMessage::glTexEnvfv);
12233
12234    // copy argument target
12235    GLMessage_DataType *arg_target = glmsg.add_args();
12236    arg_target->set_isarray(false);
12237    arg_target->set_type(GLMessage::DataType::ENUM);
12238    arg_target->add_intvalue((int)target);
12239
12240    // copy argument pname
12241    GLMessage_DataType *arg_pname = glmsg.add_args();
12242    arg_pname->set_isarray(false);
12243    arg_pname->set_type(GLMessage::DataType::ENUM);
12244    arg_pname->add_intvalue((int)pname);
12245
12246    // copy argument params
12247    GLMessage_DataType *arg_params = glmsg.add_args();
12248    arg_params->set_isarray(false);
12249    arg_params->set_type(GLMessage::DataType::INT);
12250    arg_params->add_intvalue((int)params);
12251
12252    // call function
12253    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12254    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12255    glContext->hooks->gl.glTexEnvfv(target, pname, params);
12256    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12257    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12258
12259    void *pointerArgs[] = {
12260        (void *) params,
12261    };
12262
12263    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12264                              threadStartTime, threadEndTime,
12265                              &glmsg, pointerArgs);
12266    glContext->traceGLMessage(&glmsg);
12267}
12268
12269void GLTrace_glTranslatef(GLfloat x, GLfloat y, GLfloat z) {
12270    GLMessage glmsg;
12271    GLTraceContext *glContext = getGLTraceContext();
12272
12273    glmsg.set_function(GLMessage::glTranslatef);
12274
12275    // copy argument x
12276    GLMessage_DataType *arg_x = glmsg.add_args();
12277    arg_x->set_isarray(false);
12278    arg_x->set_type(GLMessage::DataType::FLOAT);
12279    arg_x->add_floatvalue(x);
12280
12281    // copy argument y
12282    GLMessage_DataType *arg_y = glmsg.add_args();
12283    arg_y->set_isarray(false);
12284    arg_y->set_type(GLMessage::DataType::FLOAT);
12285    arg_y->add_floatvalue(y);
12286
12287    // copy argument z
12288    GLMessage_DataType *arg_z = glmsg.add_args();
12289    arg_z->set_isarray(false);
12290    arg_z->set_type(GLMessage::DataType::FLOAT);
12291    arg_z->add_floatvalue(z);
12292
12293    // call function
12294    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12295    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12296    glContext->hooks->gl.glTranslatef(x, y, z);
12297    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12298    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12299
12300    void *pointerArgs[] = {
12301    };
12302
12303    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12304                              threadStartTime, threadEndTime,
12305                              &glmsg, pointerArgs);
12306    glContext->traceGLMessage(&glmsg);
12307}
12308
12309void GLTrace_glAlphaFuncx(GLenum func, GLclampx ref) {
12310    GLMessage glmsg;
12311    GLTraceContext *glContext = getGLTraceContext();
12312
12313    glmsg.set_function(GLMessage::glAlphaFuncx);
12314
12315    // copy argument func
12316    GLMessage_DataType *arg_func = glmsg.add_args();
12317    arg_func->set_isarray(false);
12318    arg_func->set_type(GLMessage::DataType::ENUM);
12319    arg_func->add_intvalue((int)func);
12320
12321    // copy argument ref
12322    GLMessage_DataType *arg_ref = glmsg.add_args();
12323    arg_ref->set_isarray(false);
12324    arg_ref->set_type(GLMessage::DataType::INT);
12325    arg_ref->add_intvalue(ref);
12326
12327    // call function
12328    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12329    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12330    glContext->hooks->gl.glAlphaFuncx(func, ref);
12331    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12332    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12333
12334    void *pointerArgs[] = {
12335    };
12336
12337    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12338                              threadStartTime, threadEndTime,
12339                              &glmsg, pointerArgs);
12340    glContext->traceGLMessage(&glmsg);
12341}
12342
12343void GLTrace_glClearColorx(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha) {
12344    GLMessage glmsg;
12345    GLTraceContext *glContext = getGLTraceContext();
12346
12347    glmsg.set_function(GLMessage::glClearColorx);
12348
12349    // copy argument red
12350    GLMessage_DataType *arg_red = glmsg.add_args();
12351    arg_red->set_isarray(false);
12352    arg_red->set_type(GLMessage::DataType::INT);
12353    arg_red->add_intvalue(red);
12354
12355    // copy argument green
12356    GLMessage_DataType *arg_green = glmsg.add_args();
12357    arg_green->set_isarray(false);
12358    arg_green->set_type(GLMessage::DataType::INT);
12359    arg_green->add_intvalue(green);
12360
12361    // copy argument blue
12362    GLMessage_DataType *arg_blue = glmsg.add_args();
12363    arg_blue->set_isarray(false);
12364    arg_blue->set_type(GLMessage::DataType::INT);
12365    arg_blue->add_intvalue(blue);
12366
12367    // copy argument alpha
12368    GLMessage_DataType *arg_alpha = glmsg.add_args();
12369    arg_alpha->set_isarray(false);
12370    arg_alpha->set_type(GLMessage::DataType::INT);
12371    arg_alpha->add_intvalue(alpha);
12372
12373    // call function
12374    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12375    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12376    glContext->hooks->gl.glClearColorx(red, green, blue, alpha);
12377    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12378    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12379
12380    void *pointerArgs[] = {
12381    };
12382
12383    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12384                              threadStartTime, threadEndTime,
12385                              &glmsg, pointerArgs);
12386    glContext->traceGLMessage(&glmsg);
12387}
12388
12389void GLTrace_glClearDepthx(GLclampx depth) {
12390    GLMessage glmsg;
12391    GLTraceContext *glContext = getGLTraceContext();
12392
12393    glmsg.set_function(GLMessage::glClearDepthx);
12394
12395    // copy argument depth
12396    GLMessage_DataType *arg_depth = glmsg.add_args();
12397    arg_depth->set_isarray(false);
12398    arg_depth->set_type(GLMessage::DataType::INT);
12399    arg_depth->add_intvalue(depth);
12400
12401    // call function
12402    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12403    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12404    glContext->hooks->gl.glClearDepthx(depth);
12405    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12406    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12407
12408    void *pointerArgs[] = {
12409    };
12410
12411    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12412                              threadStartTime, threadEndTime,
12413                              &glmsg, pointerArgs);
12414    glContext->traceGLMessage(&glmsg);
12415}
12416
12417void GLTrace_glClientActiveTexture(GLenum texture) {
12418    GLMessage glmsg;
12419    GLTraceContext *glContext = getGLTraceContext();
12420
12421    glmsg.set_function(GLMessage::glClientActiveTexture);
12422
12423    // copy argument texture
12424    GLMessage_DataType *arg_texture = glmsg.add_args();
12425    arg_texture->set_isarray(false);
12426    arg_texture->set_type(GLMessage::DataType::ENUM);
12427    arg_texture->add_intvalue((int)texture);
12428
12429    // call function
12430    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12431    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12432    glContext->hooks->gl.glClientActiveTexture(texture);
12433    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12434    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12435
12436    void *pointerArgs[] = {
12437    };
12438
12439    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12440                              threadStartTime, threadEndTime,
12441                              &glmsg, pointerArgs);
12442    glContext->traceGLMessage(&glmsg);
12443}
12444
12445void GLTrace_glClipPlanex(GLenum plane, const GLfixed *equation) {
12446    GLMessage glmsg;
12447    GLTraceContext *glContext = getGLTraceContext();
12448
12449    glmsg.set_function(GLMessage::glClipPlanex);
12450
12451    // copy argument plane
12452    GLMessage_DataType *arg_plane = glmsg.add_args();
12453    arg_plane->set_isarray(false);
12454    arg_plane->set_type(GLMessage::DataType::ENUM);
12455    arg_plane->add_intvalue((int)plane);
12456
12457    // copy argument equation
12458    GLMessage_DataType *arg_equation = glmsg.add_args();
12459    arg_equation->set_isarray(false);
12460    arg_equation->set_type(GLMessage::DataType::INT);
12461    arg_equation->add_intvalue((int)equation);
12462
12463    // call function
12464    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12465    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12466    glContext->hooks->gl.glClipPlanex(plane, equation);
12467    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12468    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12469
12470    void *pointerArgs[] = {
12471        (void *) equation,
12472    };
12473
12474    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12475                              threadStartTime, threadEndTime,
12476                              &glmsg, pointerArgs);
12477    glContext->traceGLMessage(&glmsg);
12478}
12479
12480void GLTrace_glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) {
12481    GLMessage glmsg;
12482    GLTraceContext *glContext = getGLTraceContext();
12483
12484    glmsg.set_function(GLMessage::glColor4ub);
12485
12486    // copy argument red
12487    GLMessage_DataType *arg_red = glmsg.add_args();
12488    arg_red->set_isarray(false);
12489    arg_red->set_type(GLMessage::DataType::BYTE);
12490    arg_red->add_intvalue((int)red);
12491
12492    // copy argument green
12493    GLMessage_DataType *arg_green = glmsg.add_args();
12494    arg_green->set_isarray(false);
12495    arg_green->set_type(GLMessage::DataType::BYTE);
12496    arg_green->add_intvalue((int)green);
12497
12498    // copy argument blue
12499    GLMessage_DataType *arg_blue = glmsg.add_args();
12500    arg_blue->set_isarray(false);
12501    arg_blue->set_type(GLMessage::DataType::BYTE);
12502    arg_blue->add_intvalue((int)blue);
12503
12504    // copy argument alpha
12505    GLMessage_DataType *arg_alpha = glmsg.add_args();
12506    arg_alpha->set_isarray(false);
12507    arg_alpha->set_type(GLMessage::DataType::BYTE);
12508    arg_alpha->add_intvalue((int)alpha);
12509
12510    // call function
12511    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12512    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12513    glContext->hooks->gl.glColor4ub(red, green, blue, alpha);
12514    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12515    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12516
12517    void *pointerArgs[] = {
12518    };
12519
12520    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12521                              threadStartTime, threadEndTime,
12522                              &glmsg, pointerArgs);
12523    glContext->traceGLMessage(&glmsg);
12524}
12525
12526void GLTrace_glColor4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {
12527    GLMessage glmsg;
12528    GLTraceContext *glContext = getGLTraceContext();
12529
12530    glmsg.set_function(GLMessage::glColor4x);
12531
12532    // copy argument red
12533    GLMessage_DataType *arg_red = glmsg.add_args();
12534    arg_red->set_isarray(false);
12535    arg_red->set_type(GLMessage::DataType::INT);
12536    arg_red->add_intvalue(red);
12537
12538    // copy argument green
12539    GLMessage_DataType *arg_green = glmsg.add_args();
12540    arg_green->set_isarray(false);
12541    arg_green->set_type(GLMessage::DataType::INT);
12542    arg_green->add_intvalue(green);
12543
12544    // copy argument blue
12545    GLMessage_DataType *arg_blue = glmsg.add_args();
12546    arg_blue->set_isarray(false);
12547    arg_blue->set_type(GLMessage::DataType::INT);
12548    arg_blue->add_intvalue(blue);
12549
12550    // copy argument alpha
12551    GLMessage_DataType *arg_alpha = glmsg.add_args();
12552    arg_alpha->set_isarray(false);
12553    arg_alpha->set_type(GLMessage::DataType::INT);
12554    arg_alpha->add_intvalue(alpha);
12555
12556    // call function
12557    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12558    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12559    glContext->hooks->gl.glColor4x(red, green, blue, alpha);
12560    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12561    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12562
12563    void *pointerArgs[] = {
12564    };
12565
12566    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12567                              threadStartTime, threadEndTime,
12568                              &glmsg, pointerArgs);
12569    glContext->traceGLMessage(&glmsg);
12570}
12571
12572void GLTrace_glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
12573    GLMessage glmsg;
12574    GLTraceContext *glContext = getGLTraceContext();
12575
12576    glmsg.set_function(GLMessage::glColorPointer);
12577
12578    // copy argument size
12579    GLMessage_DataType *arg_size = glmsg.add_args();
12580    arg_size->set_isarray(false);
12581    arg_size->set_type(GLMessage::DataType::INT);
12582    arg_size->add_intvalue(size);
12583
12584    // copy argument type
12585    GLMessage_DataType *arg_type = glmsg.add_args();
12586    arg_type->set_isarray(false);
12587    arg_type->set_type(GLMessage::DataType::ENUM);
12588    arg_type->add_intvalue((int)type);
12589
12590    // copy argument stride
12591    GLMessage_DataType *arg_stride = glmsg.add_args();
12592    arg_stride->set_isarray(false);
12593    arg_stride->set_type(GLMessage::DataType::INT);
12594    arg_stride->add_intvalue(stride);
12595
12596    // copy argument pointer
12597    GLMessage_DataType *arg_pointer = glmsg.add_args();
12598    arg_pointer->set_isarray(false);
12599    arg_pointer->set_type(GLMessage::DataType::INT);
12600    arg_pointer->add_intvalue((int)pointer);
12601
12602    // call function
12603    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12604    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12605    glContext->hooks->gl.glColorPointer(size, type, stride, pointer);
12606    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12607    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12608
12609    void *pointerArgs[] = {
12610        (void *) pointer,
12611    };
12612
12613    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12614                              threadStartTime, threadEndTime,
12615                              &glmsg, pointerArgs);
12616    glContext->traceGLMessage(&glmsg);
12617}
12618
12619void GLTrace_glDepthRangex(GLclampx zNear, GLclampx zFar) {
12620    GLMessage glmsg;
12621    GLTraceContext *glContext = getGLTraceContext();
12622
12623    glmsg.set_function(GLMessage::glDepthRangex);
12624
12625    // copy argument zNear
12626    GLMessage_DataType *arg_zNear = glmsg.add_args();
12627    arg_zNear->set_isarray(false);
12628    arg_zNear->set_type(GLMessage::DataType::INT);
12629    arg_zNear->add_intvalue(zNear);
12630
12631    // copy argument zFar
12632    GLMessage_DataType *arg_zFar = glmsg.add_args();
12633    arg_zFar->set_isarray(false);
12634    arg_zFar->set_type(GLMessage::DataType::INT);
12635    arg_zFar->add_intvalue(zFar);
12636
12637    // call function
12638    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12639    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12640    glContext->hooks->gl.glDepthRangex(zNear, zFar);
12641    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12642    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12643
12644    void *pointerArgs[] = {
12645    };
12646
12647    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12648                              threadStartTime, threadEndTime,
12649                              &glmsg, pointerArgs);
12650    glContext->traceGLMessage(&glmsg);
12651}
12652
12653void GLTrace_glDisableClientState(GLenum array) {
12654    GLMessage glmsg;
12655    GLTraceContext *glContext = getGLTraceContext();
12656
12657    glmsg.set_function(GLMessage::glDisableClientState);
12658
12659    // copy argument array
12660    GLMessage_DataType *arg_array = glmsg.add_args();
12661    arg_array->set_isarray(false);
12662    arg_array->set_type(GLMessage::DataType::ENUM);
12663    arg_array->add_intvalue((int)array);
12664
12665    // call function
12666    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12667    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12668    glContext->hooks->gl.glDisableClientState(array);
12669    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12670    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12671
12672    void *pointerArgs[] = {
12673    };
12674
12675    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12676                              threadStartTime, threadEndTime,
12677                              &glmsg, pointerArgs);
12678    glContext->traceGLMessage(&glmsg);
12679}
12680
12681void GLTrace_glEnableClientState(GLenum array) {
12682    GLMessage glmsg;
12683    GLTraceContext *glContext = getGLTraceContext();
12684
12685    glmsg.set_function(GLMessage::glEnableClientState);
12686
12687    // copy argument array
12688    GLMessage_DataType *arg_array = glmsg.add_args();
12689    arg_array->set_isarray(false);
12690    arg_array->set_type(GLMessage::DataType::ENUM);
12691    arg_array->add_intvalue((int)array);
12692
12693    // call function
12694    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12695    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12696    glContext->hooks->gl.glEnableClientState(array);
12697    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12698    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12699
12700    void *pointerArgs[] = {
12701    };
12702
12703    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12704                              threadStartTime, threadEndTime,
12705                              &glmsg, pointerArgs);
12706    glContext->traceGLMessage(&glmsg);
12707}
12708
12709void GLTrace_glFogx(GLenum pname, GLfixed param) {
12710    GLMessage glmsg;
12711    GLTraceContext *glContext = getGLTraceContext();
12712
12713    glmsg.set_function(GLMessage::glFogx);
12714
12715    // copy argument pname
12716    GLMessage_DataType *arg_pname = glmsg.add_args();
12717    arg_pname->set_isarray(false);
12718    arg_pname->set_type(GLMessage::DataType::ENUM);
12719    arg_pname->add_intvalue((int)pname);
12720
12721    // copy argument param
12722    GLMessage_DataType *arg_param = glmsg.add_args();
12723    arg_param->set_isarray(false);
12724    arg_param->set_type(GLMessage::DataType::INT);
12725    arg_param->add_intvalue(param);
12726
12727    // call function
12728    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12729    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12730    glContext->hooks->gl.glFogx(pname, param);
12731    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12732    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12733
12734    void *pointerArgs[] = {
12735    };
12736
12737    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12738                              threadStartTime, threadEndTime,
12739                              &glmsg, pointerArgs);
12740    glContext->traceGLMessage(&glmsg);
12741}
12742
12743void GLTrace_glFogxv(GLenum pname, const GLfixed *params) {
12744    GLMessage glmsg;
12745    GLTraceContext *glContext = getGLTraceContext();
12746
12747    glmsg.set_function(GLMessage::glFogxv);
12748
12749    // copy argument pname
12750    GLMessage_DataType *arg_pname = glmsg.add_args();
12751    arg_pname->set_isarray(false);
12752    arg_pname->set_type(GLMessage::DataType::ENUM);
12753    arg_pname->add_intvalue((int)pname);
12754
12755    // copy argument params
12756    GLMessage_DataType *arg_params = glmsg.add_args();
12757    arg_params->set_isarray(false);
12758    arg_params->set_type(GLMessage::DataType::INT);
12759    arg_params->add_intvalue((int)params);
12760
12761    // call function
12762    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12763    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12764    glContext->hooks->gl.glFogxv(pname, params);
12765    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12766    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12767
12768    void *pointerArgs[] = {
12769        (void *) params,
12770    };
12771
12772    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12773                              threadStartTime, threadEndTime,
12774                              &glmsg, pointerArgs);
12775    glContext->traceGLMessage(&glmsg);
12776}
12777
12778void GLTrace_glFrustumx(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
12779    GLMessage glmsg;
12780    GLTraceContext *glContext = getGLTraceContext();
12781
12782    glmsg.set_function(GLMessage::glFrustumx);
12783
12784    // copy argument left
12785    GLMessage_DataType *arg_left = glmsg.add_args();
12786    arg_left->set_isarray(false);
12787    arg_left->set_type(GLMessage::DataType::INT);
12788    arg_left->add_intvalue(left);
12789
12790    // copy argument right
12791    GLMessage_DataType *arg_right = glmsg.add_args();
12792    arg_right->set_isarray(false);
12793    arg_right->set_type(GLMessage::DataType::INT);
12794    arg_right->add_intvalue(right);
12795
12796    // copy argument bottom
12797    GLMessage_DataType *arg_bottom = glmsg.add_args();
12798    arg_bottom->set_isarray(false);
12799    arg_bottom->set_type(GLMessage::DataType::INT);
12800    arg_bottom->add_intvalue(bottom);
12801
12802    // copy argument top
12803    GLMessage_DataType *arg_top = glmsg.add_args();
12804    arg_top->set_isarray(false);
12805    arg_top->set_type(GLMessage::DataType::INT);
12806    arg_top->add_intvalue(top);
12807
12808    // copy argument zNear
12809    GLMessage_DataType *arg_zNear = glmsg.add_args();
12810    arg_zNear->set_isarray(false);
12811    arg_zNear->set_type(GLMessage::DataType::INT);
12812    arg_zNear->add_intvalue(zNear);
12813
12814    // copy argument zFar
12815    GLMessage_DataType *arg_zFar = glmsg.add_args();
12816    arg_zFar->set_isarray(false);
12817    arg_zFar->set_type(GLMessage::DataType::INT);
12818    arg_zFar->add_intvalue(zFar);
12819
12820    // call function
12821    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12822    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12823    glContext->hooks->gl.glFrustumx(left, right, bottom, top, zNear, zFar);
12824    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12825    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12826
12827    void *pointerArgs[] = {
12828    };
12829
12830    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12831                              threadStartTime, threadEndTime,
12832                              &glmsg, pointerArgs);
12833    glContext->traceGLMessage(&glmsg);
12834}
12835
12836void GLTrace_glGetClipPlanex(GLenum pname, GLfixed eqn[4]) {
12837    GLMessage glmsg;
12838    GLTraceContext *glContext = getGLTraceContext();
12839
12840    glmsg.set_function(GLMessage::glGetClipPlanex);
12841
12842    // copy argument pname
12843    GLMessage_DataType *arg_pname = glmsg.add_args();
12844    arg_pname->set_isarray(false);
12845    arg_pname->set_type(GLMessage::DataType::ENUM);
12846    arg_pname->add_intvalue((int)pname);
12847
12848    // copy argument eqn
12849    GLMessage_DataType *arg_eqn = glmsg.add_args();
12850    arg_eqn->set_isarray(false);
12851    arg_eqn->set_type(GLMessage::DataType::INT);
12852    arg_eqn->add_intvalue((int)eqn);
12853
12854    // call function
12855    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12856    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12857    glContext->hooks->gl.glGetClipPlanex(pname, eqn);
12858    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12859    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12860
12861    void *pointerArgs[] = {
12862        (void *) eqn,
12863    };
12864
12865    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12866                              threadStartTime, threadEndTime,
12867                              &glmsg, pointerArgs);
12868    glContext->traceGLMessage(&glmsg);
12869}
12870
12871void GLTrace_glGetFixedv(GLenum pname, GLfixed *params) {
12872    GLMessage glmsg;
12873    GLTraceContext *glContext = getGLTraceContext();
12874
12875    glmsg.set_function(GLMessage::glGetFixedv);
12876
12877    // copy argument pname
12878    GLMessage_DataType *arg_pname = glmsg.add_args();
12879    arg_pname->set_isarray(false);
12880    arg_pname->set_type(GLMessage::DataType::ENUM);
12881    arg_pname->add_intvalue((int)pname);
12882
12883    // copy argument params
12884    GLMessage_DataType *arg_params = glmsg.add_args();
12885    arg_params->set_isarray(false);
12886    arg_params->set_type(GLMessage::DataType::INT);
12887    arg_params->add_intvalue((int)params);
12888
12889    // call function
12890    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12891    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12892    glContext->hooks->gl.glGetFixedv(pname, params);
12893    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12894    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12895
12896    void *pointerArgs[] = {
12897        (void *) params,
12898    };
12899
12900    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12901                              threadStartTime, threadEndTime,
12902                              &glmsg, pointerArgs);
12903    glContext->traceGLMessage(&glmsg);
12904}
12905
12906void GLTrace_glGetLightxv(GLenum light, GLenum pname, GLfixed *params) {
12907    GLMessage glmsg;
12908    GLTraceContext *glContext = getGLTraceContext();
12909
12910    glmsg.set_function(GLMessage::glGetLightxv);
12911
12912    // copy argument light
12913    GLMessage_DataType *arg_light = glmsg.add_args();
12914    arg_light->set_isarray(false);
12915    arg_light->set_type(GLMessage::DataType::ENUM);
12916    arg_light->add_intvalue((int)light);
12917
12918    // copy argument pname
12919    GLMessage_DataType *arg_pname = glmsg.add_args();
12920    arg_pname->set_isarray(false);
12921    arg_pname->set_type(GLMessage::DataType::ENUM);
12922    arg_pname->add_intvalue((int)pname);
12923
12924    // copy argument params
12925    GLMessage_DataType *arg_params = glmsg.add_args();
12926    arg_params->set_isarray(false);
12927    arg_params->set_type(GLMessage::DataType::INT);
12928    arg_params->add_intvalue((int)params);
12929
12930    // call function
12931    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12932    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12933    glContext->hooks->gl.glGetLightxv(light, pname, params);
12934    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12935    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12936
12937    void *pointerArgs[] = {
12938        (void *) params,
12939    };
12940
12941    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12942                              threadStartTime, threadEndTime,
12943                              &glmsg, pointerArgs);
12944    glContext->traceGLMessage(&glmsg);
12945}
12946
12947void GLTrace_glGetMaterialxv(GLenum face, GLenum pname, GLfixed *params) {
12948    GLMessage glmsg;
12949    GLTraceContext *glContext = getGLTraceContext();
12950
12951    glmsg.set_function(GLMessage::glGetMaterialxv);
12952
12953    // copy argument face
12954    GLMessage_DataType *arg_face = glmsg.add_args();
12955    arg_face->set_isarray(false);
12956    arg_face->set_type(GLMessage::DataType::ENUM);
12957    arg_face->add_intvalue((int)face);
12958
12959    // copy argument pname
12960    GLMessage_DataType *arg_pname = glmsg.add_args();
12961    arg_pname->set_isarray(false);
12962    arg_pname->set_type(GLMessage::DataType::ENUM);
12963    arg_pname->add_intvalue((int)pname);
12964
12965    // copy argument params
12966    GLMessage_DataType *arg_params = glmsg.add_args();
12967    arg_params->set_isarray(false);
12968    arg_params->set_type(GLMessage::DataType::INT);
12969    arg_params->add_intvalue((int)params);
12970
12971    // call function
12972    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12973    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12974    glContext->hooks->gl.glGetMaterialxv(face, pname, params);
12975    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12976    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12977
12978    void *pointerArgs[] = {
12979        (void *) params,
12980    };
12981
12982    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12983                              threadStartTime, threadEndTime,
12984                              &glmsg, pointerArgs);
12985    glContext->traceGLMessage(&glmsg);
12986}
12987
12988void GLTrace_glGetPointerv(GLenum pname, GLvoid **params) {
12989    GLMessage glmsg;
12990    GLTraceContext *glContext = getGLTraceContext();
12991
12992    glmsg.set_function(GLMessage::glGetPointerv);
12993
12994    // copy argument pname
12995    GLMessage_DataType *arg_pname = glmsg.add_args();
12996    arg_pname->set_isarray(false);
12997    arg_pname->set_type(GLMessage::DataType::ENUM);
12998    arg_pname->add_intvalue((int)pname);
12999
13000    // copy argument params
13001    GLMessage_DataType *arg_params = glmsg.add_args();
13002    arg_params->set_isarray(false);
13003    arg_params->set_type(GLMessage::DataType::INT);
13004    arg_params->add_intvalue((int)params);
13005
13006    // call function
13007    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13008    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13009    glContext->hooks->gl.glGetPointerv(pname, params);
13010    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13011    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13012
13013    void *pointerArgs[] = {
13014        (void *) params,
13015    };
13016
13017    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13018                              threadStartTime, threadEndTime,
13019                              &glmsg, pointerArgs);
13020    glContext->traceGLMessage(&glmsg);
13021}
13022
13023void GLTrace_glGetTexEnviv(GLenum env, GLenum pname, GLint *params) {
13024    GLMessage glmsg;
13025    GLTraceContext *glContext = getGLTraceContext();
13026
13027    glmsg.set_function(GLMessage::glGetTexEnviv);
13028
13029    // copy argument env
13030    GLMessage_DataType *arg_env = glmsg.add_args();
13031    arg_env->set_isarray(false);
13032    arg_env->set_type(GLMessage::DataType::ENUM);
13033    arg_env->add_intvalue((int)env);
13034
13035    // copy argument pname
13036    GLMessage_DataType *arg_pname = glmsg.add_args();
13037    arg_pname->set_isarray(false);
13038    arg_pname->set_type(GLMessage::DataType::ENUM);
13039    arg_pname->add_intvalue((int)pname);
13040
13041    // copy argument params
13042    GLMessage_DataType *arg_params = glmsg.add_args();
13043    arg_params->set_isarray(false);
13044    arg_params->set_type(GLMessage::DataType::INT);
13045    arg_params->add_intvalue((int)params);
13046
13047    // call function
13048    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13049    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13050    glContext->hooks->gl.glGetTexEnviv(env, pname, params);
13051    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13052    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13053
13054    void *pointerArgs[] = {
13055        (void *) params,
13056    };
13057
13058    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13059                              threadStartTime, threadEndTime,
13060                              &glmsg, pointerArgs);
13061    glContext->traceGLMessage(&glmsg);
13062}
13063
13064void GLTrace_glGetTexEnvxv(GLenum env, GLenum pname, GLfixed *params) {
13065    GLMessage glmsg;
13066    GLTraceContext *glContext = getGLTraceContext();
13067
13068    glmsg.set_function(GLMessage::glGetTexEnvxv);
13069
13070    // copy argument env
13071    GLMessage_DataType *arg_env = glmsg.add_args();
13072    arg_env->set_isarray(false);
13073    arg_env->set_type(GLMessage::DataType::ENUM);
13074    arg_env->add_intvalue((int)env);
13075
13076    // copy argument pname
13077    GLMessage_DataType *arg_pname = glmsg.add_args();
13078    arg_pname->set_isarray(false);
13079    arg_pname->set_type(GLMessage::DataType::ENUM);
13080    arg_pname->add_intvalue((int)pname);
13081
13082    // copy argument params
13083    GLMessage_DataType *arg_params = glmsg.add_args();
13084    arg_params->set_isarray(false);
13085    arg_params->set_type(GLMessage::DataType::INT);
13086    arg_params->add_intvalue((int)params);
13087
13088    // call function
13089    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13090    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13091    glContext->hooks->gl.glGetTexEnvxv(env, pname, params);
13092    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13093    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13094
13095    void *pointerArgs[] = {
13096        (void *) params,
13097    };
13098
13099    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13100                              threadStartTime, threadEndTime,
13101                              &glmsg, pointerArgs);
13102    glContext->traceGLMessage(&glmsg);
13103}
13104
13105void GLTrace_glGetTexParameterxv(GLenum target, GLenum pname, GLfixed *params) {
13106    GLMessage glmsg;
13107    GLTraceContext *glContext = getGLTraceContext();
13108
13109    glmsg.set_function(GLMessage::glGetTexParameterxv);
13110
13111    // copy argument target
13112    GLMessage_DataType *arg_target = glmsg.add_args();
13113    arg_target->set_isarray(false);
13114    arg_target->set_type(GLMessage::DataType::ENUM);
13115    arg_target->add_intvalue((int)target);
13116
13117    // copy argument pname
13118    GLMessage_DataType *arg_pname = glmsg.add_args();
13119    arg_pname->set_isarray(false);
13120    arg_pname->set_type(GLMessage::DataType::ENUM);
13121    arg_pname->add_intvalue((int)pname);
13122
13123    // copy argument params
13124    GLMessage_DataType *arg_params = glmsg.add_args();
13125    arg_params->set_isarray(false);
13126    arg_params->set_type(GLMessage::DataType::INT);
13127    arg_params->add_intvalue((int)params);
13128
13129    // call function
13130    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13131    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13132    glContext->hooks->gl.glGetTexParameterxv(target, pname, params);
13133    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13134    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13135
13136    void *pointerArgs[] = {
13137        (void *) params,
13138    };
13139
13140    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13141                              threadStartTime, threadEndTime,
13142                              &glmsg, pointerArgs);
13143    glContext->traceGLMessage(&glmsg);
13144}
13145
13146void GLTrace_glLightModelx(GLenum pname, GLfixed param) {
13147    GLMessage glmsg;
13148    GLTraceContext *glContext = getGLTraceContext();
13149
13150    glmsg.set_function(GLMessage::glLightModelx);
13151
13152    // copy argument pname
13153    GLMessage_DataType *arg_pname = glmsg.add_args();
13154    arg_pname->set_isarray(false);
13155    arg_pname->set_type(GLMessage::DataType::ENUM);
13156    arg_pname->add_intvalue((int)pname);
13157
13158    // copy argument param
13159    GLMessage_DataType *arg_param = glmsg.add_args();
13160    arg_param->set_isarray(false);
13161    arg_param->set_type(GLMessage::DataType::INT);
13162    arg_param->add_intvalue(param);
13163
13164    // call function
13165    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13166    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13167    glContext->hooks->gl.glLightModelx(pname, param);
13168    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13169    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13170
13171    void *pointerArgs[] = {
13172    };
13173
13174    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13175                              threadStartTime, threadEndTime,
13176                              &glmsg, pointerArgs);
13177    glContext->traceGLMessage(&glmsg);
13178}
13179
13180void GLTrace_glLightModelxv(GLenum pname, const GLfixed *params) {
13181    GLMessage glmsg;
13182    GLTraceContext *glContext = getGLTraceContext();
13183
13184    glmsg.set_function(GLMessage::glLightModelxv);
13185
13186    // copy argument pname
13187    GLMessage_DataType *arg_pname = glmsg.add_args();
13188    arg_pname->set_isarray(false);
13189    arg_pname->set_type(GLMessage::DataType::ENUM);
13190    arg_pname->add_intvalue((int)pname);
13191
13192    // copy argument params
13193    GLMessage_DataType *arg_params = glmsg.add_args();
13194    arg_params->set_isarray(false);
13195    arg_params->set_type(GLMessage::DataType::INT);
13196    arg_params->add_intvalue((int)params);
13197
13198    // call function
13199    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13200    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13201    glContext->hooks->gl.glLightModelxv(pname, params);
13202    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13203    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13204
13205    void *pointerArgs[] = {
13206        (void *) params,
13207    };
13208
13209    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13210                              threadStartTime, threadEndTime,
13211                              &glmsg, pointerArgs);
13212    glContext->traceGLMessage(&glmsg);
13213}
13214
13215void GLTrace_glLightx(GLenum light, GLenum pname, GLfixed param) {
13216    GLMessage glmsg;
13217    GLTraceContext *glContext = getGLTraceContext();
13218
13219    glmsg.set_function(GLMessage::glLightx);
13220
13221    // copy argument light
13222    GLMessage_DataType *arg_light = glmsg.add_args();
13223    arg_light->set_isarray(false);
13224    arg_light->set_type(GLMessage::DataType::ENUM);
13225    arg_light->add_intvalue((int)light);
13226
13227    // copy argument pname
13228    GLMessage_DataType *arg_pname = glmsg.add_args();
13229    arg_pname->set_isarray(false);
13230    arg_pname->set_type(GLMessage::DataType::ENUM);
13231    arg_pname->add_intvalue((int)pname);
13232
13233    // copy argument param
13234    GLMessage_DataType *arg_param = glmsg.add_args();
13235    arg_param->set_isarray(false);
13236    arg_param->set_type(GLMessage::DataType::INT);
13237    arg_param->add_intvalue(param);
13238
13239    // call function
13240    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13241    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13242    glContext->hooks->gl.glLightx(light, pname, param);
13243    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13244    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13245
13246    void *pointerArgs[] = {
13247    };
13248
13249    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13250                              threadStartTime, threadEndTime,
13251                              &glmsg, pointerArgs);
13252    glContext->traceGLMessage(&glmsg);
13253}
13254
13255void GLTrace_glLightxv(GLenum light, GLenum pname, const GLfixed *params) {
13256    GLMessage glmsg;
13257    GLTraceContext *glContext = getGLTraceContext();
13258
13259    glmsg.set_function(GLMessage::glLightxv);
13260
13261    // copy argument light
13262    GLMessage_DataType *arg_light = glmsg.add_args();
13263    arg_light->set_isarray(false);
13264    arg_light->set_type(GLMessage::DataType::ENUM);
13265    arg_light->add_intvalue((int)light);
13266
13267    // copy argument pname
13268    GLMessage_DataType *arg_pname = glmsg.add_args();
13269    arg_pname->set_isarray(false);
13270    arg_pname->set_type(GLMessage::DataType::ENUM);
13271    arg_pname->add_intvalue((int)pname);
13272
13273    // copy argument params
13274    GLMessage_DataType *arg_params = glmsg.add_args();
13275    arg_params->set_isarray(false);
13276    arg_params->set_type(GLMessage::DataType::INT);
13277    arg_params->add_intvalue((int)params);
13278
13279    // call function
13280    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13281    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13282    glContext->hooks->gl.glLightxv(light, pname, params);
13283    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13284    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13285
13286    void *pointerArgs[] = {
13287        (void *) params,
13288    };
13289
13290    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13291                              threadStartTime, threadEndTime,
13292                              &glmsg, pointerArgs);
13293    glContext->traceGLMessage(&glmsg);
13294}
13295
13296void GLTrace_glLineWidthx(GLfixed width) {
13297    GLMessage glmsg;
13298    GLTraceContext *glContext = getGLTraceContext();
13299
13300    glmsg.set_function(GLMessage::glLineWidthx);
13301
13302    // copy argument width
13303    GLMessage_DataType *arg_width = glmsg.add_args();
13304    arg_width->set_isarray(false);
13305    arg_width->set_type(GLMessage::DataType::INT);
13306    arg_width->add_intvalue(width);
13307
13308    // call function
13309    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13310    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13311    glContext->hooks->gl.glLineWidthx(width);
13312    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13313    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13314
13315    void *pointerArgs[] = {
13316    };
13317
13318    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13319                              threadStartTime, threadEndTime,
13320                              &glmsg, pointerArgs);
13321    glContext->traceGLMessage(&glmsg);
13322}
13323
13324void GLTrace_glLoadIdentity(void) {
13325    GLMessage glmsg;
13326    GLTraceContext *glContext = getGLTraceContext();
13327
13328    glmsg.set_function(GLMessage::glLoadIdentity);
13329
13330    // call function
13331    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13332    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13333    glContext->hooks->gl.glLoadIdentity();
13334    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13335    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13336
13337    void *pointerArgs[] = {
13338    };
13339
13340    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13341                              threadStartTime, threadEndTime,
13342                              &glmsg, pointerArgs);
13343    glContext->traceGLMessage(&glmsg);
13344}
13345
13346void GLTrace_glLoadMatrixx(const GLfixed *m) {
13347    GLMessage glmsg;
13348    GLTraceContext *glContext = getGLTraceContext();
13349
13350    glmsg.set_function(GLMessage::glLoadMatrixx);
13351
13352    // copy argument m
13353    GLMessage_DataType *arg_m = glmsg.add_args();
13354    arg_m->set_isarray(false);
13355    arg_m->set_type(GLMessage::DataType::INT);
13356    arg_m->add_intvalue((int)m);
13357
13358    // call function
13359    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13360    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13361    glContext->hooks->gl.glLoadMatrixx(m);
13362    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13363    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13364
13365    void *pointerArgs[] = {
13366        (void *) m,
13367    };
13368
13369    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13370                              threadStartTime, threadEndTime,
13371                              &glmsg, pointerArgs);
13372    glContext->traceGLMessage(&glmsg);
13373}
13374
13375void GLTrace_glLogicOp(GLenum opcode) {
13376    GLMessage glmsg;
13377    GLTraceContext *glContext = getGLTraceContext();
13378
13379    glmsg.set_function(GLMessage::glLogicOp);
13380
13381    // copy argument opcode
13382    GLMessage_DataType *arg_opcode = glmsg.add_args();
13383    arg_opcode->set_isarray(false);
13384    arg_opcode->set_type(GLMessage::DataType::ENUM);
13385    arg_opcode->add_intvalue((int)opcode);
13386
13387    // call function
13388    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13389    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13390    glContext->hooks->gl.glLogicOp(opcode);
13391    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13392    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13393
13394    void *pointerArgs[] = {
13395    };
13396
13397    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13398                              threadStartTime, threadEndTime,
13399                              &glmsg, pointerArgs);
13400    glContext->traceGLMessage(&glmsg);
13401}
13402
13403void GLTrace_glMaterialx(GLenum face, GLenum pname, GLfixed param) {
13404    GLMessage glmsg;
13405    GLTraceContext *glContext = getGLTraceContext();
13406
13407    glmsg.set_function(GLMessage::glMaterialx);
13408
13409    // copy argument face
13410    GLMessage_DataType *arg_face = glmsg.add_args();
13411    arg_face->set_isarray(false);
13412    arg_face->set_type(GLMessage::DataType::ENUM);
13413    arg_face->add_intvalue((int)face);
13414
13415    // copy argument pname
13416    GLMessage_DataType *arg_pname = glmsg.add_args();
13417    arg_pname->set_isarray(false);
13418    arg_pname->set_type(GLMessage::DataType::ENUM);
13419    arg_pname->add_intvalue((int)pname);
13420
13421    // copy argument param
13422    GLMessage_DataType *arg_param = glmsg.add_args();
13423    arg_param->set_isarray(false);
13424    arg_param->set_type(GLMessage::DataType::INT);
13425    arg_param->add_intvalue(param);
13426
13427    // call function
13428    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13429    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13430    glContext->hooks->gl.glMaterialx(face, pname, param);
13431    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13432    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13433
13434    void *pointerArgs[] = {
13435    };
13436
13437    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13438                              threadStartTime, threadEndTime,
13439                              &glmsg, pointerArgs);
13440    glContext->traceGLMessage(&glmsg);
13441}
13442
13443void GLTrace_glMaterialxv(GLenum face, GLenum pname, const GLfixed *params) {
13444    GLMessage glmsg;
13445    GLTraceContext *glContext = getGLTraceContext();
13446
13447    glmsg.set_function(GLMessage::glMaterialxv);
13448
13449    // copy argument face
13450    GLMessage_DataType *arg_face = glmsg.add_args();
13451    arg_face->set_isarray(false);
13452    arg_face->set_type(GLMessage::DataType::ENUM);
13453    arg_face->add_intvalue((int)face);
13454
13455    // copy argument pname
13456    GLMessage_DataType *arg_pname = glmsg.add_args();
13457    arg_pname->set_isarray(false);
13458    arg_pname->set_type(GLMessage::DataType::ENUM);
13459    arg_pname->add_intvalue((int)pname);
13460
13461    // copy argument params
13462    GLMessage_DataType *arg_params = glmsg.add_args();
13463    arg_params->set_isarray(false);
13464    arg_params->set_type(GLMessage::DataType::INT);
13465    arg_params->add_intvalue((int)params);
13466
13467    // call function
13468    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13469    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13470    glContext->hooks->gl.glMaterialxv(face, pname, params);
13471    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13472    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13473
13474    void *pointerArgs[] = {
13475        (void *) params,
13476    };
13477
13478    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13479                              threadStartTime, threadEndTime,
13480                              &glmsg, pointerArgs);
13481    glContext->traceGLMessage(&glmsg);
13482}
13483
13484void GLTrace_glMatrixMode(GLenum mode) {
13485    GLMessage glmsg;
13486    GLTraceContext *glContext = getGLTraceContext();
13487
13488    glmsg.set_function(GLMessage::glMatrixMode);
13489
13490    // copy argument mode
13491    GLMessage_DataType *arg_mode = glmsg.add_args();
13492    arg_mode->set_isarray(false);
13493    arg_mode->set_type(GLMessage::DataType::ENUM);
13494    arg_mode->add_intvalue((int)mode);
13495
13496    // call function
13497    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13498    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13499    glContext->hooks->gl.glMatrixMode(mode);
13500    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13501    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13502
13503    void *pointerArgs[] = {
13504    };
13505
13506    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13507                              threadStartTime, threadEndTime,
13508                              &glmsg, pointerArgs);
13509    glContext->traceGLMessage(&glmsg);
13510}
13511
13512void GLTrace_glMultMatrixx(const GLfixed *m) {
13513    GLMessage glmsg;
13514    GLTraceContext *glContext = getGLTraceContext();
13515
13516    glmsg.set_function(GLMessage::glMultMatrixx);
13517
13518    // copy argument m
13519    GLMessage_DataType *arg_m = glmsg.add_args();
13520    arg_m->set_isarray(false);
13521    arg_m->set_type(GLMessage::DataType::INT);
13522    arg_m->add_intvalue((int)m);
13523
13524    // call function
13525    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13526    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13527    glContext->hooks->gl.glMultMatrixx(m);
13528    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13529    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13530
13531    void *pointerArgs[] = {
13532        (void *) m,
13533    };
13534
13535    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13536                              threadStartTime, threadEndTime,
13537                              &glmsg, pointerArgs);
13538    glContext->traceGLMessage(&glmsg);
13539}
13540
13541void GLTrace_glMultiTexCoord4x(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q) {
13542    GLMessage glmsg;
13543    GLTraceContext *glContext = getGLTraceContext();
13544
13545    glmsg.set_function(GLMessage::glMultiTexCoord4x);
13546
13547    // copy argument target
13548    GLMessage_DataType *arg_target = glmsg.add_args();
13549    arg_target->set_isarray(false);
13550    arg_target->set_type(GLMessage::DataType::ENUM);
13551    arg_target->add_intvalue((int)target);
13552
13553    // copy argument s
13554    GLMessage_DataType *arg_s = glmsg.add_args();
13555    arg_s->set_isarray(false);
13556    arg_s->set_type(GLMessage::DataType::INT);
13557    arg_s->add_intvalue(s);
13558
13559    // copy argument t
13560    GLMessage_DataType *arg_t = glmsg.add_args();
13561    arg_t->set_isarray(false);
13562    arg_t->set_type(GLMessage::DataType::INT);
13563    arg_t->add_intvalue(t);
13564
13565    // copy argument r
13566    GLMessage_DataType *arg_r = glmsg.add_args();
13567    arg_r->set_isarray(false);
13568    arg_r->set_type(GLMessage::DataType::INT);
13569    arg_r->add_intvalue(r);
13570
13571    // copy argument q
13572    GLMessage_DataType *arg_q = glmsg.add_args();
13573    arg_q->set_isarray(false);
13574    arg_q->set_type(GLMessage::DataType::INT);
13575    arg_q->add_intvalue(q);
13576
13577    // call function
13578    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13579    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13580    glContext->hooks->gl.glMultiTexCoord4x(target, s, t, r, q);
13581    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13582    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13583
13584    void *pointerArgs[] = {
13585    };
13586
13587    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13588                              threadStartTime, threadEndTime,
13589                              &glmsg, pointerArgs);
13590    glContext->traceGLMessage(&glmsg);
13591}
13592
13593void GLTrace_glNormal3x(GLfixed nx, GLfixed ny, GLfixed nz) {
13594    GLMessage glmsg;
13595    GLTraceContext *glContext = getGLTraceContext();
13596
13597    glmsg.set_function(GLMessage::glNormal3x);
13598
13599    // copy argument nx
13600    GLMessage_DataType *arg_nx = glmsg.add_args();
13601    arg_nx->set_isarray(false);
13602    arg_nx->set_type(GLMessage::DataType::INT);
13603    arg_nx->add_intvalue(nx);
13604
13605    // copy argument ny
13606    GLMessage_DataType *arg_ny = glmsg.add_args();
13607    arg_ny->set_isarray(false);
13608    arg_ny->set_type(GLMessage::DataType::INT);
13609    arg_ny->add_intvalue(ny);
13610
13611    // copy argument nz
13612    GLMessage_DataType *arg_nz = glmsg.add_args();
13613    arg_nz->set_isarray(false);
13614    arg_nz->set_type(GLMessage::DataType::INT);
13615    arg_nz->add_intvalue(nz);
13616
13617    // call function
13618    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13619    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13620    glContext->hooks->gl.glNormal3x(nx, ny, nz);
13621    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13622    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13623
13624    void *pointerArgs[] = {
13625    };
13626
13627    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13628                              threadStartTime, threadEndTime,
13629                              &glmsg, pointerArgs);
13630    glContext->traceGLMessage(&glmsg);
13631}
13632
13633void GLTrace_glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) {
13634    GLMessage glmsg;
13635    GLTraceContext *glContext = getGLTraceContext();
13636
13637    glmsg.set_function(GLMessage::glNormalPointer);
13638
13639    // copy argument type
13640    GLMessage_DataType *arg_type = glmsg.add_args();
13641    arg_type->set_isarray(false);
13642    arg_type->set_type(GLMessage::DataType::ENUM);
13643    arg_type->add_intvalue((int)type);
13644
13645    // copy argument stride
13646    GLMessage_DataType *arg_stride = glmsg.add_args();
13647    arg_stride->set_isarray(false);
13648    arg_stride->set_type(GLMessage::DataType::INT);
13649    arg_stride->add_intvalue(stride);
13650
13651    // copy argument pointer
13652    GLMessage_DataType *arg_pointer = glmsg.add_args();
13653    arg_pointer->set_isarray(false);
13654    arg_pointer->set_type(GLMessage::DataType::INT);
13655    arg_pointer->add_intvalue((int)pointer);
13656
13657    // call function
13658    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13659    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13660    glContext->hooks->gl.glNormalPointer(type, stride, pointer);
13661    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13662    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13663
13664    void *pointerArgs[] = {
13665        (void *) pointer,
13666    };
13667
13668    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13669                              threadStartTime, threadEndTime,
13670                              &glmsg, pointerArgs);
13671    glContext->traceGLMessage(&glmsg);
13672}
13673
13674void GLTrace_glOrthox(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
13675    GLMessage glmsg;
13676    GLTraceContext *glContext = getGLTraceContext();
13677
13678    glmsg.set_function(GLMessage::glOrthox);
13679
13680    // copy argument left
13681    GLMessage_DataType *arg_left = glmsg.add_args();
13682    arg_left->set_isarray(false);
13683    arg_left->set_type(GLMessage::DataType::INT);
13684    arg_left->add_intvalue(left);
13685
13686    // copy argument right
13687    GLMessage_DataType *arg_right = glmsg.add_args();
13688    arg_right->set_isarray(false);
13689    arg_right->set_type(GLMessage::DataType::INT);
13690    arg_right->add_intvalue(right);
13691
13692    // copy argument bottom
13693    GLMessage_DataType *arg_bottom = glmsg.add_args();
13694    arg_bottom->set_isarray(false);
13695    arg_bottom->set_type(GLMessage::DataType::INT);
13696    arg_bottom->add_intvalue(bottom);
13697
13698    // copy argument top
13699    GLMessage_DataType *arg_top = glmsg.add_args();
13700    arg_top->set_isarray(false);
13701    arg_top->set_type(GLMessage::DataType::INT);
13702    arg_top->add_intvalue(top);
13703
13704    // copy argument zNear
13705    GLMessage_DataType *arg_zNear = glmsg.add_args();
13706    arg_zNear->set_isarray(false);
13707    arg_zNear->set_type(GLMessage::DataType::INT);
13708    arg_zNear->add_intvalue(zNear);
13709
13710    // copy argument zFar
13711    GLMessage_DataType *arg_zFar = glmsg.add_args();
13712    arg_zFar->set_isarray(false);
13713    arg_zFar->set_type(GLMessage::DataType::INT);
13714    arg_zFar->add_intvalue(zFar);
13715
13716    // call function
13717    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13718    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13719    glContext->hooks->gl.glOrthox(left, right, bottom, top, zNear, zFar);
13720    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13721    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13722
13723    void *pointerArgs[] = {
13724    };
13725
13726    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13727                              threadStartTime, threadEndTime,
13728                              &glmsg, pointerArgs);
13729    glContext->traceGLMessage(&glmsg);
13730}
13731
13732void GLTrace_glPointParameterx(GLenum pname, GLfixed param) {
13733    GLMessage glmsg;
13734    GLTraceContext *glContext = getGLTraceContext();
13735
13736    glmsg.set_function(GLMessage::glPointParameterx);
13737
13738    // copy argument pname
13739    GLMessage_DataType *arg_pname = glmsg.add_args();
13740    arg_pname->set_isarray(false);
13741    arg_pname->set_type(GLMessage::DataType::ENUM);
13742    arg_pname->add_intvalue((int)pname);
13743
13744    // copy argument param
13745    GLMessage_DataType *arg_param = glmsg.add_args();
13746    arg_param->set_isarray(false);
13747    arg_param->set_type(GLMessage::DataType::INT);
13748    arg_param->add_intvalue(param);
13749
13750    // call function
13751    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13752    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13753    glContext->hooks->gl.glPointParameterx(pname, param);
13754    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13755    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13756
13757    void *pointerArgs[] = {
13758    };
13759
13760    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13761                              threadStartTime, threadEndTime,
13762                              &glmsg, pointerArgs);
13763    glContext->traceGLMessage(&glmsg);
13764}
13765
13766void GLTrace_glPointParameterxv(GLenum pname, const GLfixed *params) {
13767    GLMessage glmsg;
13768    GLTraceContext *glContext = getGLTraceContext();
13769
13770    glmsg.set_function(GLMessage::glPointParameterxv);
13771
13772    // copy argument pname
13773    GLMessage_DataType *arg_pname = glmsg.add_args();
13774    arg_pname->set_isarray(false);
13775    arg_pname->set_type(GLMessage::DataType::ENUM);
13776    arg_pname->add_intvalue((int)pname);
13777
13778    // copy argument params
13779    GLMessage_DataType *arg_params = glmsg.add_args();
13780    arg_params->set_isarray(false);
13781    arg_params->set_type(GLMessage::DataType::INT);
13782    arg_params->add_intvalue((int)params);
13783
13784    // call function
13785    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13786    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13787    glContext->hooks->gl.glPointParameterxv(pname, params);
13788    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13789    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13790
13791    void *pointerArgs[] = {
13792        (void *) params,
13793    };
13794
13795    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13796                              threadStartTime, threadEndTime,
13797                              &glmsg, pointerArgs);
13798    glContext->traceGLMessage(&glmsg);
13799}
13800
13801void GLTrace_glPointSizex(GLfixed size) {
13802    GLMessage glmsg;
13803    GLTraceContext *glContext = getGLTraceContext();
13804
13805    glmsg.set_function(GLMessage::glPointSizex);
13806
13807    // copy argument size
13808    GLMessage_DataType *arg_size = glmsg.add_args();
13809    arg_size->set_isarray(false);
13810    arg_size->set_type(GLMessage::DataType::INT);
13811    arg_size->add_intvalue(size);
13812
13813    // call function
13814    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13815    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13816    glContext->hooks->gl.glPointSizex(size);
13817    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13818    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13819
13820    void *pointerArgs[] = {
13821    };
13822
13823    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13824                              threadStartTime, threadEndTime,
13825                              &glmsg, pointerArgs);
13826    glContext->traceGLMessage(&glmsg);
13827}
13828
13829void GLTrace_glPolygonOffsetx(GLfixed factor, GLfixed units) {
13830    GLMessage glmsg;
13831    GLTraceContext *glContext = getGLTraceContext();
13832
13833    glmsg.set_function(GLMessage::glPolygonOffsetx);
13834
13835    // copy argument factor
13836    GLMessage_DataType *arg_factor = glmsg.add_args();
13837    arg_factor->set_isarray(false);
13838    arg_factor->set_type(GLMessage::DataType::INT);
13839    arg_factor->add_intvalue(factor);
13840
13841    // copy argument units
13842    GLMessage_DataType *arg_units = glmsg.add_args();
13843    arg_units->set_isarray(false);
13844    arg_units->set_type(GLMessage::DataType::INT);
13845    arg_units->add_intvalue(units);
13846
13847    // call function
13848    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13849    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13850    glContext->hooks->gl.glPolygonOffsetx(factor, units);
13851    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13852    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13853
13854    void *pointerArgs[] = {
13855    };
13856
13857    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13858                              threadStartTime, threadEndTime,
13859                              &glmsg, pointerArgs);
13860    glContext->traceGLMessage(&glmsg);
13861}
13862
13863void GLTrace_glPopMatrix(void) {
13864    GLMessage glmsg;
13865    GLTraceContext *glContext = getGLTraceContext();
13866
13867    glmsg.set_function(GLMessage::glPopMatrix);
13868
13869    // call function
13870    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13871    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13872    glContext->hooks->gl.glPopMatrix();
13873    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13874    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13875
13876    void *pointerArgs[] = {
13877    };
13878
13879    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13880                              threadStartTime, threadEndTime,
13881                              &glmsg, pointerArgs);
13882    glContext->traceGLMessage(&glmsg);
13883}
13884
13885void GLTrace_glPushMatrix(void) {
13886    GLMessage glmsg;
13887    GLTraceContext *glContext = getGLTraceContext();
13888
13889    glmsg.set_function(GLMessage::glPushMatrix);
13890
13891    // call function
13892    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13893    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13894    glContext->hooks->gl.glPushMatrix();
13895    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13896    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13897
13898    void *pointerArgs[] = {
13899    };
13900
13901    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13902                              threadStartTime, threadEndTime,
13903                              &glmsg, pointerArgs);
13904    glContext->traceGLMessage(&glmsg);
13905}
13906
13907void GLTrace_glRotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z) {
13908    GLMessage glmsg;
13909    GLTraceContext *glContext = getGLTraceContext();
13910
13911    glmsg.set_function(GLMessage::glRotatex);
13912
13913    // copy argument angle
13914    GLMessage_DataType *arg_angle = glmsg.add_args();
13915    arg_angle->set_isarray(false);
13916    arg_angle->set_type(GLMessage::DataType::INT);
13917    arg_angle->add_intvalue(angle);
13918
13919    // copy argument x
13920    GLMessage_DataType *arg_x = glmsg.add_args();
13921    arg_x->set_isarray(false);
13922    arg_x->set_type(GLMessage::DataType::INT);
13923    arg_x->add_intvalue(x);
13924
13925    // copy argument y
13926    GLMessage_DataType *arg_y = glmsg.add_args();
13927    arg_y->set_isarray(false);
13928    arg_y->set_type(GLMessage::DataType::INT);
13929    arg_y->add_intvalue(y);
13930
13931    // copy argument z
13932    GLMessage_DataType *arg_z = glmsg.add_args();
13933    arg_z->set_isarray(false);
13934    arg_z->set_type(GLMessage::DataType::INT);
13935    arg_z->add_intvalue(z);
13936
13937    // call function
13938    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13939    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13940    glContext->hooks->gl.glRotatex(angle, x, y, z);
13941    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13942    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13943
13944    void *pointerArgs[] = {
13945    };
13946
13947    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13948                              threadStartTime, threadEndTime,
13949                              &glmsg, pointerArgs);
13950    glContext->traceGLMessage(&glmsg);
13951}
13952
13953void GLTrace_glSampleCoveragex(GLclampx value, GLboolean invert) {
13954    GLMessage glmsg;
13955    GLTraceContext *glContext = getGLTraceContext();
13956
13957    glmsg.set_function(GLMessage::glSampleCoveragex);
13958
13959    // copy argument value
13960    GLMessage_DataType *arg_value = glmsg.add_args();
13961    arg_value->set_isarray(false);
13962    arg_value->set_type(GLMessage::DataType::INT);
13963    arg_value->add_intvalue(value);
13964
13965    // copy argument invert
13966    GLMessage_DataType *arg_invert = glmsg.add_args();
13967    arg_invert->set_isarray(false);
13968    arg_invert->set_type(GLMessage::DataType::BOOL);
13969    arg_invert->add_boolvalue(invert);
13970
13971    // call function
13972    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13973    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13974    glContext->hooks->gl.glSampleCoveragex(value, invert);
13975    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13976    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13977
13978    void *pointerArgs[] = {
13979    };
13980
13981    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13982                              threadStartTime, threadEndTime,
13983                              &glmsg, pointerArgs);
13984    glContext->traceGLMessage(&glmsg);
13985}
13986
13987void GLTrace_glScalex(GLfixed x, GLfixed y, GLfixed z) {
13988    GLMessage glmsg;
13989    GLTraceContext *glContext = getGLTraceContext();
13990
13991    glmsg.set_function(GLMessage::glScalex);
13992
13993    // copy argument x
13994    GLMessage_DataType *arg_x = glmsg.add_args();
13995    arg_x->set_isarray(false);
13996    arg_x->set_type(GLMessage::DataType::INT);
13997    arg_x->add_intvalue(x);
13998
13999    // copy argument y
14000    GLMessage_DataType *arg_y = glmsg.add_args();
14001    arg_y->set_isarray(false);
14002    arg_y->set_type(GLMessage::DataType::INT);
14003    arg_y->add_intvalue(y);
14004
14005    // copy argument z
14006    GLMessage_DataType *arg_z = glmsg.add_args();
14007    arg_z->set_isarray(false);
14008    arg_z->set_type(GLMessage::DataType::INT);
14009    arg_z->add_intvalue(z);
14010
14011    // call function
14012    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14013    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14014    glContext->hooks->gl.glScalex(x, y, z);
14015    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14016    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14017
14018    void *pointerArgs[] = {
14019    };
14020
14021    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14022                              threadStartTime, threadEndTime,
14023                              &glmsg, pointerArgs);
14024    glContext->traceGLMessage(&glmsg);
14025}
14026
14027void GLTrace_glShadeModel(GLenum mode) {
14028    GLMessage glmsg;
14029    GLTraceContext *glContext = getGLTraceContext();
14030
14031    glmsg.set_function(GLMessage::glShadeModel);
14032
14033    // copy argument mode
14034    GLMessage_DataType *arg_mode = glmsg.add_args();
14035    arg_mode->set_isarray(false);
14036    arg_mode->set_type(GLMessage::DataType::ENUM);
14037    arg_mode->add_intvalue((int)mode);
14038
14039    // call function
14040    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14041    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14042    glContext->hooks->gl.glShadeModel(mode);
14043    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14044    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14045
14046    void *pointerArgs[] = {
14047    };
14048
14049    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14050                              threadStartTime, threadEndTime,
14051                              &glmsg, pointerArgs);
14052    glContext->traceGLMessage(&glmsg);
14053}
14054
14055void GLTrace_glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
14056    GLMessage glmsg;
14057    GLTraceContext *glContext = getGLTraceContext();
14058
14059    glmsg.set_function(GLMessage::glTexCoordPointer);
14060
14061    // copy argument size
14062    GLMessage_DataType *arg_size = glmsg.add_args();
14063    arg_size->set_isarray(false);
14064    arg_size->set_type(GLMessage::DataType::INT);
14065    arg_size->add_intvalue(size);
14066
14067    // copy argument type
14068    GLMessage_DataType *arg_type = glmsg.add_args();
14069    arg_type->set_isarray(false);
14070    arg_type->set_type(GLMessage::DataType::ENUM);
14071    arg_type->add_intvalue((int)type);
14072
14073    // copy argument stride
14074    GLMessage_DataType *arg_stride = glmsg.add_args();
14075    arg_stride->set_isarray(false);
14076    arg_stride->set_type(GLMessage::DataType::INT);
14077    arg_stride->add_intvalue(stride);
14078
14079    // copy argument pointer
14080    GLMessage_DataType *arg_pointer = glmsg.add_args();
14081    arg_pointer->set_isarray(false);
14082    arg_pointer->set_type(GLMessage::DataType::INT);
14083    arg_pointer->add_intvalue((int)pointer);
14084
14085    // call function
14086    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14087    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14088    glContext->hooks->gl.glTexCoordPointer(size, type, stride, pointer);
14089    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14090    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14091
14092    void *pointerArgs[] = {
14093        (void *) pointer,
14094    };
14095
14096    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14097                              threadStartTime, threadEndTime,
14098                              &glmsg, pointerArgs);
14099    glContext->traceGLMessage(&glmsg);
14100}
14101
14102void GLTrace_glTexEnvi(GLenum target, GLenum pname, GLint param) {
14103    GLMessage glmsg;
14104    GLTraceContext *glContext = getGLTraceContext();
14105
14106    glmsg.set_function(GLMessage::glTexEnvi);
14107
14108    // copy argument target
14109    GLMessage_DataType *arg_target = glmsg.add_args();
14110    arg_target->set_isarray(false);
14111    arg_target->set_type(GLMessage::DataType::ENUM);
14112    arg_target->add_intvalue((int)target);
14113
14114    // copy argument pname
14115    GLMessage_DataType *arg_pname = glmsg.add_args();
14116    arg_pname->set_isarray(false);
14117    arg_pname->set_type(GLMessage::DataType::ENUM);
14118    arg_pname->add_intvalue((int)pname);
14119
14120    // copy argument param
14121    GLMessage_DataType *arg_param = glmsg.add_args();
14122    arg_param->set_isarray(false);
14123    arg_param->set_type(GLMessage::DataType::INT);
14124    arg_param->add_intvalue(param);
14125
14126    // call function
14127    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14128    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14129    glContext->hooks->gl.glTexEnvi(target, pname, param);
14130    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14131    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14132
14133    void *pointerArgs[] = {
14134    };
14135
14136    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14137                              threadStartTime, threadEndTime,
14138                              &glmsg, pointerArgs);
14139    glContext->traceGLMessage(&glmsg);
14140}
14141
14142void GLTrace_glTexEnvx(GLenum target, GLenum pname, GLfixed param) {
14143    GLMessage glmsg;
14144    GLTraceContext *glContext = getGLTraceContext();
14145
14146    glmsg.set_function(GLMessage::glTexEnvx);
14147
14148    // copy argument target
14149    GLMessage_DataType *arg_target = glmsg.add_args();
14150    arg_target->set_isarray(false);
14151    arg_target->set_type(GLMessage::DataType::ENUM);
14152    arg_target->add_intvalue((int)target);
14153
14154    // copy argument pname
14155    GLMessage_DataType *arg_pname = glmsg.add_args();
14156    arg_pname->set_isarray(false);
14157    arg_pname->set_type(GLMessage::DataType::ENUM);
14158    arg_pname->add_intvalue((int)pname);
14159
14160    // copy argument param
14161    GLMessage_DataType *arg_param = glmsg.add_args();
14162    arg_param->set_isarray(false);
14163    arg_param->set_type(GLMessage::DataType::INT);
14164    arg_param->add_intvalue(param);
14165
14166    // call function
14167    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14168    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14169    glContext->hooks->gl.glTexEnvx(target, pname, param);
14170    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14171    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14172
14173    void *pointerArgs[] = {
14174    };
14175
14176    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14177                              threadStartTime, threadEndTime,
14178                              &glmsg, pointerArgs);
14179    glContext->traceGLMessage(&glmsg);
14180}
14181
14182void GLTrace_glTexEnviv(GLenum target, GLenum pname, const GLint *params) {
14183    GLMessage glmsg;
14184    GLTraceContext *glContext = getGLTraceContext();
14185
14186    glmsg.set_function(GLMessage::glTexEnviv);
14187
14188    // copy argument target
14189    GLMessage_DataType *arg_target = glmsg.add_args();
14190    arg_target->set_isarray(false);
14191    arg_target->set_type(GLMessage::DataType::ENUM);
14192    arg_target->add_intvalue((int)target);
14193
14194    // copy argument pname
14195    GLMessage_DataType *arg_pname = glmsg.add_args();
14196    arg_pname->set_isarray(false);
14197    arg_pname->set_type(GLMessage::DataType::ENUM);
14198    arg_pname->add_intvalue((int)pname);
14199
14200    // copy argument params
14201    GLMessage_DataType *arg_params = glmsg.add_args();
14202    arg_params->set_isarray(false);
14203    arg_params->set_type(GLMessage::DataType::INT);
14204    arg_params->add_intvalue((int)params);
14205
14206    // call function
14207    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14208    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14209    glContext->hooks->gl.glTexEnviv(target, pname, params);
14210    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14211    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14212
14213    void *pointerArgs[] = {
14214        (void *) params,
14215    };
14216
14217    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14218                              threadStartTime, threadEndTime,
14219                              &glmsg, pointerArgs);
14220    glContext->traceGLMessage(&glmsg);
14221}
14222
14223void GLTrace_glTexEnvxv(GLenum target, GLenum pname, const GLfixed *params) {
14224    GLMessage glmsg;
14225    GLTraceContext *glContext = getGLTraceContext();
14226
14227    glmsg.set_function(GLMessage::glTexEnvxv);
14228
14229    // copy argument target
14230    GLMessage_DataType *arg_target = glmsg.add_args();
14231    arg_target->set_isarray(false);
14232    arg_target->set_type(GLMessage::DataType::ENUM);
14233    arg_target->add_intvalue((int)target);
14234
14235    // copy argument pname
14236    GLMessage_DataType *arg_pname = glmsg.add_args();
14237    arg_pname->set_isarray(false);
14238    arg_pname->set_type(GLMessage::DataType::ENUM);
14239    arg_pname->add_intvalue((int)pname);
14240
14241    // copy argument params
14242    GLMessage_DataType *arg_params = glmsg.add_args();
14243    arg_params->set_isarray(false);
14244    arg_params->set_type(GLMessage::DataType::INT);
14245    arg_params->add_intvalue((int)params);
14246
14247    // call function
14248    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14249    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14250    glContext->hooks->gl.glTexEnvxv(target, pname, params);
14251    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14252    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14253
14254    void *pointerArgs[] = {
14255        (void *) params,
14256    };
14257
14258    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14259                              threadStartTime, threadEndTime,
14260                              &glmsg, pointerArgs);
14261    glContext->traceGLMessage(&glmsg);
14262}
14263
14264void GLTrace_glTexParameterx(GLenum target, GLenum pname, GLfixed param) {
14265    GLMessage glmsg;
14266    GLTraceContext *glContext = getGLTraceContext();
14267
14268    glmsg.set_function(GLMessage::glTexParameterx);
14269
14270    // copy argument target
14271    GLMessage_DataType *arg_target = glmsg.add_args();
14272    arg_target->set_isarray(false);
14273    arg_target->set_type(GLMessage::DataType::ENUM);
14274    arg_target->add_intvalue((int)target);
14275
14276    // copy argument pname
14277    GLMessage_DataType *arg_pname = glmsg.add_args();
14278    arg_pname->set_isarray(false);
14279    arg_pname->set_type(GLMessage::DataType::ENUM);
14280    arg_pname->add_intvalue((int)pname);
14281
14282    // copy argument param
14283    GLMessage_DataType *arg_param = glmsg.add_args();
14284    arg_param->set_isarray(false);
14285    arg_param->set_type(GLMessage::DataType::INT);
14286    arg_param->add_intvalue(param);
14287
14288    // call function
14289    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14290    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14291    glContext->hooks->gl.glTexParameterx(target, pname, param);
14292    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14293    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14294
14295    void *pointerArgs[] = {
14296    };
14297
14298    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14299                              threadStartTime, threadEndTime,
14300                              &glmsg, pointerArgs);
14301    glContext->traceGLMessage(&glmsg);
14302}
14303
14304void GLTrace_glTexParameterxv(GLenum target, GLenum pname, const GLfixed *params) {
14305    GLMessage glmsg;
14306    GLTraceContext *glContext = getGLTraceContext();
14307
14308    glmsg.set_function(GLMessage::glTexParameterxv);
14309
14310    // copy argument target
14311    GLMessage_DataType *arg_target = glmsg.add_args();
14312    arg_target->set_isarray(false);
14313    arg_target->set_type(GLMessage::DataType::ENUM);
14314    arg_target->add_intvalue((int)target);
14315
14316    // copy argument pname
14317    GLMessage_DataType *arg_pname = glmsg.add_args();
14318    arg_pname->set_isarray(false);
14319    arg_pname->set_type(GLMessage::DataType::ENUM);
14320    arg_pname->add_intvalue((int)pname);
14321
14322    // copy argument params
14323    GLMessage_DataType *arg_params = glmsg.add_args();
14324    arg_params->set_isarray(false);
14325    arg_params->set_type(GLMessage::DataType::INT);
14326    arg_params->add_intvalue((int)params);
14327
14328    // call function
14329    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14330    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14331    glContext->hooks->gl.glTexParameterxv(target, pname, params);
14332    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14333    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14334
14335    void *pointerArgs[] = {
14336        (void *) params,
14337    };
14338
14339    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14340                              threadStartTime, threadEndTime,
14341                              &glmsg, pointerArgs);
14342    glContext->traceGLMessage(&glmsg);
14343}
14344
14345void GLTrace_glTranslatex(GLfixed x, GLfixed y, GLfixed z) {
14346    GLMessage glmsg;
14347    GLTraceContext *glContext = getGLTraceContext();
14348
14349    glmsg.set_function(GLMessage::glTranslatex);
14350
14351    // copy argument x
14352    GLMessage_DataType *arg_x = glmsg.add_args();
14353    arg_x->set_isarray(false);
14354    arg_x->set_type(GLMessage::DataType::INT);
14355    arg_x->add_intvalue(x);
14356
14357    // copy argument y
14358    GLMessage_DataType *arg_y = glmsg.add_args();
14359    arg_y->set_isarray(false);
14360    arg_y->set_type(GLMessage::DataType::INT);
14361    arg_y->add_intvalue(y);
14362
14363    // copy argument z
14364    GLMessage_DataType *arg_z = glmsg.add_args();
14365    arg_z->set_isarray(false);
14366    arg_z->set_type(GLMessage::DataType::INT);
14367    arg_z->add_intvalue(z);
14368
14369    // call function
14370    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14371    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14372    glContext->hooks->gl.glTranslatex(x, y, z);
14373    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14374    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14375
14376    void *pointerArgs[] = {
14377    };
14378
14379    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14380                              threadStartTime, threadEndTime,
14381                              &glmsg, pointerArgs);
14382    glContext->traceGLMessage(&glmsg);
14383}
14384
14385void GLTrace_glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
14386    GLMessage glmsg;
14387    GLTraceContext *glContext = getGLTraceContext();
14388
14389    glmsg.set_function(GLMessage::glVertexPointer);
14390
14391    // copy argument size
14392    GLMessage_DataType *arg_size = glmsg.add_args();
14393    arg_size->set_isarray(false);
14394    arg_size->set_type(GLMessage::DataType::INT);
14395    arg_size->add_intvalue(size);
14396
14397    // copy argument type
14398    GLMessage_DataType *arg_type = glmsg.add_args();
14399    arg_type->set_isarray(false);
14400    arg_type->set_type(GLMessage::DataType::ENUM);
14401    arg_type->add_intvalue((int)type);
14402
14403    // copy argument stride
14404    GLMessage_DataType *arg_stride = glmsg.add_args();
14405    arg_stride->set_isarray(false);
14406    arg_stride->set_type(GLMessage::DataType::INT);
14407    arg_stride->add_intvalue(stride);
14408
14409    // copy argument pointer
14410    GLMessage_DataType *arg_pointer = glmsg.add_args();
14411    arg_pointer->set_isarray(false);
14412    arg_pointer->set_type(GLMessage::DataType::INT);
14413    arg_pointer->add_intvalue((int)pointer);
14414
14415    // call function
14416    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14417    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14418    glContext->hooks->gl.glVertexPointer(size, type, stride, pointer);
14419    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14420    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14421
14422    void *pointerArgs[] = {
14423        (void *) pointer,
14424    };
14425
14426    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14427                              threadStartTime, threadEndTime,
14428                              &glmsg, pointerArgs);
14429    glContext->traceGLMessage(&glmsg);
14430}
14431
14432void GLTrace_glPointSizePointerOES(GLenum type, GLsizei stride, const GLvoid *pointer) {
14433    GLMessage glmsg;
14434    GLTraceContext *glContext = getGLTraceContext();
14435
14436    glmsg.set_function(GLMessage::glPointSizePointerOES);
14437
14438    // copy argument type
14439    GLMessage_DataType *arg_type = glmsg.add_args();
14440    arg_type->set_isarray(false);
14441    arg_type->set_type(GLMessage::DataType::ENUM);
14442    arg_type->add_intvalue((int)type);
14443
14444    // copy argument stride
14445    GLMessage_DataType *arg_stride = glmsg.add_args();
14446    arg_stride->set_isarray(false);
14447    arg_stride->set_type(GLMessage::DataType::INT);
14448    arg_stride->add_intvalue(stride);
14449
14450    // copy argument pointer
14451    GLMessage_DataType *arg_pointer = glmsg.add_args();
14452    arg_pointer->set_isarray(false);
14453    arg_pointer->set_type(GLMessage::DataType::INT);
14454    arg_pointer->add_intvalue((int)pointer);
14455
14456    // call function
14457    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14458    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14459    glContext->hooks->gl.glPointSizePointerOES(type, stride, pointer);
14460    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14461    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14462
14463    void *pointerArgs[] = {
14464        (void *) pointer,
14465    };
14466
14467    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14468                              threadStartTime, threadEndTime,
14469                              &glmsg, pointerArgs);
14470    glContext->traceGLMessage(&glmsg);
14471}
14472
14473
14474// Definitions for GL1Ext APIs
14475
14476void GLTrace_glBlendEquationSeparateOES(GLenum modeRGB, GLenum modeAlpha) {
14477    GLMessage glmsg;
14478    GLTraceContext *glContext = getGLTraceContext();
14479
14480    glmsg.set_function(GLMessage::glBlendEquationSeparateOES);
14481
14482    // copy argument modeRGB
14483    GLMessage_DataType *arg_modeRGB = glmsg.add_args();
14484    arg_modeRGB->set_isarray(false);
14485    arg_modeRGB->set_type(GLMessage::DataType::ENUM);
14486    arg_modeRGB->add_intvalue((int)modeRGB);
14487
14488    // copy argument modeAlpha
14489    GLMessage_DataType *arg_modeAlpha = glmsg.add_args();
14490    arg_modeAlpha->set_isarray(false);
14491    arg_modeAlpha->set_type(GLMessage::DataType::ENUM);
14492    arg_modeAlpha->add_intvalue((int)modeAlpha);
14493
14494    // call function
14495    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14496    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14497    glContext->hooks->gl.glBlendEquationSeparateOES(modeRGB, modeAlpha);
14498    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14499    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14500
14501    void *pointerArgs[] = {
14502    };
14503
14504    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14505                              threadStartTime, threadEndTime,
14506                              &glmsg, pointerArgs);
14507    glContext->traceGLMessage(&glmsg);
14508}
14509
14510void GLTrace_glBlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) {
14511    GLMessage glmsg;
14512    GLTraceContext *glContext = getGLTraceContext();
14513
14514    glmsg.set_function(GLMessage::glBlendFuncSeparateOES);
14515
14516    // copy argument srcRGB
14517    GLMessage_DataType *arg_srcRGB = glmsg.add_args();
14518    arg_srcRGB->set_isarray(false);
14519    arg_srcRGB->set_type(GLMessage::DataType::ENUM);
14520    arg_srcRGB->add_intvalue((int)srcRGB);
14521
14522    // copy argument dstRGB
14523    GLMessage_DataType *arg_dstRGB = glmsg.add_args();
14524    arg_dstRGB->set_isarray(false);
14525    arg_dstRGB->set_type(GLMessage::DataType::ENUM);
14526    arg_dstRGB->add_intvalue((int)dstRGB);
14527
14528    // copy argument srcAlpha
14529    GLMessage_DataType *arg_srcAlpha = glmsg.add_args();
14530    arg_srcAlpha->set_isarray(false);
14531    arg_srcAlpha->set_type(GLMessage::DataType::ENUM);
14532    arg_srcAlpha->add_intvalue((int)srcAlpha);
14533
14534    // copy argument dstAlpha
14535    GLMessage_DataType *arg_dstAlpha = glmsg.add_args();
14536    arg_dstAlpha->set_isarray(false);
14537    arg_dstAlpha->set_type(GLMessage::DataType::ENUM);
14538    arg_dstAlpha->add_intvalue((int)dstAlpha);
14539
14540    // call function
14541    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14542    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14543    glContext->hooks->gl.glBlendFuncSeparateOES(srcRGB, dstRGB, srcAlpha, dstAlpha);
14544    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14545    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14546
14547    void *pointerArgs[] = {
14548    };
14549
14550    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14551                              threadStartTime, threadEndTime,
14552                              &glmsg, pointerArgs);
14553    glContext->traceGLMessage(&glmsg);
14554}
14555
14556void GLTrace_glBlendEquationOES(GLenum mode) {
14557    GLMessage glmsg;
14558    GLTraceContext *glContext = getGLTraceContext();
14559
14560    glmsg.set_function(GLMessage::glBlendEquationOES);
14561
14562    // copy argument mode
14563    GLMessage_DataType *arg_mode = glmsg.add_args();
14564    arg_mode->set_isarray(false);
14565    arg_mode->set_type(GLMessage::DataType::ENUM);
14566    arg_mode->add_intvalue((int)mode);
14567
14568    // call function
14569    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14570    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14571    glContext->hooks->gl.glBlendEquationOES(mode);
14572    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14573    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14574
14575    void *pointerArgs[] = {
14576    };
14577
14578    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14579                              threadStartTime, threadEndTime,
14580                              &glmsg, pointerArgs);
14581    glContext->traceGLMessage(&glmsg);
14582}
14583
14584void GLTrace_glDrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height) {
14585    GLMessage glmsg;
14586    GLTraceContext *glContext = getGLTraceContext();
14587
14588    glmsg.set_function(GLMessage::glDrawTexsOES);
14589
14590    // copy argument x
14591    GLMessage_DataType *arg_x = glmsg.add_args();
14592    arg_x->set_isarray(false);
14593    arg_x->set_type(GLMessage::DataType::INT);
14594    arg_x->add_intvalue(x);
14595
14596    // copy argument y
14597    GLMessage_DataType *arg_y = glmsg.add_args();
14598    arg_y->set_isarray(false);
14599    arg_y->set_type(GLMessage::DataType::INT);
14600    arg_y->add_intvalue(y);
14601
14602    // copy argument z
14603    GLMessage_DataType *arg_z = glmsg.add_args();
14604    arg_z->set_isarray(false);
14605    arg_z->set_type(GLMessage::DataType::INT);
14606    arg_z->add_intvalue(z);
14607
14608    // copy argument width
14609    GLMessage_DataType *arg_width = glmsg.add_args();
14610    arg_width->set_isarray(false);
14611    arg_width->set_type(GLMessage::DataType::INT);
14612    arg_width->add_intvalue(width);
14613
14614    // copy argument height
14615    GLMessage_DataType *arg_height = glmsg.add_args();
14616    arg_height->set_isarray(false);
14617    arg_height->set_type(GLMessage::DataType::INT);
14618    arg_height->add_intvalue(height);
14619
14620    // call function
14621    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14622    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14623    glContext->hooks->gl.glDrawTexsOES(x, y, z, width, height);
14624    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14625    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14626
14627    void *pointerArgs[] = {
14628    };
14629
14630    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14631                              threadStartTime, threadEndTime,
14632                              &glmsg, pointerArgs);
14633    glContext->traceGLMessage(&glmsg);
14634}
14635
14636void GLTrace_glDrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height) {
14637    GLMessage glmsg;
14638    GLTraceContext *glContext = getGLTraceContext();
14639
14640    glmsg.set_function(GLMessage::glDrawTexiOES);
14641
14642    // copy argument x
14643    GLMessage_DataType *arg_x = glmsg.add_args();
14644    arg_x->set_isarray(false);
14645    arg_x->set_type(GLMessage::DataType::INT);
14646    arg_x->add_intvalue(x);
14647
14648    // copy argument y
14649    GLMessage_DataType *arg_y = glmsg.add_args();
14650    arg_y->set_isarray(false);
14651    arg_y->set_type(GLMessage::DataType::INT);
14652    arg_y->add_intvalue(y);
14653
14654    // copy argument z
14655    GLMessage_DataType *arg_z = glmsg.add_args();
14656    arg_z->set_isarray(false);
14657    arg_z->set_type(GLMessage::DataType::INT);
14658    arg_z->add_intvalue(z);
14659
14660    // copy argument width
14661    GLMessage_DataType *arg_width = glmsg.add_args();
14662    arg_width->set_isarray(false);
14663    arg_width->set_type(GLMessage::DataType::INT);
14664    arg_width->add_intvalue(width);
14665
14666    // copy argument height
14667    GLMessage_DataType *arg_height = glmsg.add_args();
14668    arg_height->set_isarray(false);
14669    arg_height->set_type(GLMessage::DataType::INT);
14670    arg_height->add_intvalue(height);
14671
14672    // call function
14673    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14674    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14675    glContext->hooks->gl.glDrawTexiOES(x, y, z, width, height);
14676    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14677    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14678
14679    void *pointerArgs[] = {
14680    };
14681
14682    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14683                              threadStartTime, threadEndTime,
14684                              &glmsg, pointerArgs);
14685    glContext->traceGLMessage(&glmsg);
14686}
14687
14688void GLTrace_glDrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height) {
14689    GLMessage glmsg;
14690    GLTraceContext *glContext = getGLTraceContext();
14691
14692    glmsg.set_function(GLMessage::glDrawTexxOES);
14693
14694    // copy argument x
14695    GLMessage_DataType *arg_x = glmsg.add_args();
14696    arg_x->set_isarray(false);
14697    arg_x->set_type(GLMessage::DataType::INT);
14698    arg_x->add_intvalue(x);
14699
14700    // copy argument y
14701    GLMessage_DataType *arg_y = glmsg.add_args();
14702    arg_y->set_isarray(false);
14703    arg_y->set_type(GLMessage::DataType::INT);
14704    arg_y->add_intvalue(y);
14705
14706    // copy argument z
14707    GLMessage_DataType *arg_z = glmsg.add_args();
14708    arg_z->set_isarray(false);
14709    arg_z->set_type(GLMessage::DataType::INT);
14710    arg_z->add_intvalue(z);
14711
14712    // copy argument width
14713    GLMessage_DataType *arg_width = glmsg.add_args();
14714    arg_width->set_isarray(false);
14715    arg_width->set_type(GLMessage::DataType::INT);
14716    arg_width->add_intvalue(width);
14717
14718    // copy argument height
14719    GLMessage_DataType *arg_height = glmsg.add_args();
14720    arg_height->set_isarray(false);
14721    arg_height->set_type(GLMessage::DataType::INT);
14722    arg_height->add_intvalue(height);
14723
14724    // call function
14725    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14726    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14727    glContext->hooks->gl.glDrawTexxOES(x, y, z, width, height);
14728    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14729    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14730
14731    void *pointerArgs[] = {
14732    };
14733
14734    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14735                              threadStartTime, threadEndTime,
14736                              &glmsg, pointerArgs);
14737    glContext->traceGLMessage(&glmsg);
14738}
14739
14740void GLTrace_glDrawTexsvOES(const GLshort *coords) {
14741    GLMessage glmsg;
14742    GLTraceContext *glContext = getGLTraceContext();
14743
14744    glmsg.set_function(GLMessage::glDrawTexsvOES);
14745
14746    // copy argument coords
14747    GLMessage_DataType *arg_coords = glmsg.add_args();
14748    arg_coords->set_isarray(false);
14749    arg_coords->set_type(GLMessage::DataType::INT);
14750    arg_coords->add_intvalue((int)coords);
14751
14752    // call function
14753    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14754    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14755    glContext->hooks->gl.glDrawTexsvOES(coords);
14756    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14757    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14758
14759    void *pointerArgs[] = {
14760        (void *) coords,
14761    };
14762
14763    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14764                              threadStartTime, threadEndTime,
14765                              &glmsg, pointerArgs);
14766    glContext->traceGLMessage(&glmsg);
14767}
14768
14769void GLTrace_glDrawTexivOES(const GLint *coords) {
14770    GLMessage glmsg;
14771    GLTraceContext *glContext = getGLTraceContext();
14772
14773    glmsg.set_function(GLMessage::glDrawTexivOES);
14774
14775    // copy argument coords
14776    GLMessage_DataType *arg_coords = glmsg.add_args();
14777    arg_coords->set_isarray(false);
14778    arg_coords->set_type(GLMessage::DataType::INT);
14779    arg_coords->add_intvalue((int)coords);
14780
14781    // call function
14782    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14783    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14784    glContext->hooks->gl.glDrawTexivOES(coords);
14785    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14786    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14787
14788    void *pointerArgs[] = {
14789        (void *) coords,
14790    };
14791
14792    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14793                              threadStartTime, threadEndTime,
14794                              &glmsg, pointerArgs);
14795    glContext->traceGLMessage(&glmsg);
14796}
14797
14798void GLTrace_glDrawTexxvOES(const GLfixed *coords) {
14799    GLMessage glmsg;
14800    GLTraceContext *glContext = getGLTraceContext();
14801
14802    glmsg.set_function(GLMessage::glDrawTexxvOES);
14803
14804    // copy argument coords
14805    GLMessage_DataType *arg_coords = glmsg.add_args();
14806    arg_coords->set_isarray(false);
14807    arg_coords->set_type(GLMessage::DataType::INT);
14808    arg_coords->add_intvalue((int)coords);
14809
14810    // call function
14811    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14812    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14813    glContext->hooks->gl.glDrawTexxvOES(coords);
14814    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14815    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14816
14817    void *pointerArgs[] = {
14818        (void *) coords,
14819    };
14820
14821    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14822                              threadStartTime, threadEndTime,
14823                              &glmsg, pointerArgs);
14824    glContext->traceGLMessage(&glmsg);
14825}
14826
14827void GLTrace_glDrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height) {
14828    GLMessage glmsg;
14829    GLTraceContext *glContext = getGLTraceContext();
14830
14831    glmsg.set_function(GLMessage::glDrawTexfOES);
14832
14833    // copy argument x
14834    GLMessage_DataType *arg_x = glmsg.add_args();
14835    arg_x->set_isarray(false);
14836    arg_x->set_type(GLMessage::DataType::FLOAT);
14837    arg_x->add_floatvalue(x);
14838
14839    // copy argument y
14840    GLMessage_DataType *arg_y = glmsg.add_args();
14841    arg_y->set_isarray(false);
14842    arg_y->set_type(GLMessage::DataType::FLOAT);
14843    arg_y->add_floatvalue(y);
14844
14845    // copy argument z
14846    GLMessage_DataType *arg_z = glmsg.add_args();
14847    arg_z->set_isarray(false);
14848    arg_z->set_type(GLMessage::DataType::FLOAT);
14849    arg_z->add_floatvalue(z);
14850
14851    // copy argument width
14852    GLMessage_DataType *arg_width = glmsg.add_args();
14853    arg_width->set_isarray(false);
14854    arg_width->set_type(GLMessage::DataType::FLOAT);
14855    arg_width->add_floatvalue(width);
14856
14857    // copy argument height
14858    GLMessage_DataType *arg_height = glmsg.add_args();
14859    arg_height->set_isarray(false);
14860    arg_height->set_type(GLMessage::DataType::FLOAT);
14861    arg_height->add_floatvalue(height);
14862
14863    // call function
14864    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14865    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14866    glContext->hooks->gl.glDrawTexfOES(x, y, z, width, height);
14867    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14868    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14869
14870    void *pointerArgs[] = {
14871    };
14872
14873    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14874                              threadStartTime, threadEndTime,
14875                              &glmsg, pointerArgs);
14876    glContext->traceGLMessage(&glmsg);
14877}
14878
14879void GLTrace_glDrawTexfvOES(const GLfloat *coords) {
14880    GLMessage glmsg;
14881    GLTraceContext *glContext = getGLTraceContext();
14882
14883    glmsg.set_function(GLMessage::glDrawTexfvOES);
14884
14885    // copy argument coords
14886    GLMessage_DataType *arg_coords = glmsg.add_args();
14887    arg_coords->set_isarray(false);
14888    arg_coords->set_type(GLMessage::DataType::INT);
14889    arg_coords->add_intvalue((int)coords);
14890
14891    // call function
14892    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14893    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14894    glContext->hooks->gl.glDrawTexfvOES(coords);
14895    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14896    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14897
14898    void *pointerArgs[] = {
14899        (void *) coords,
14900    };
14901
14902    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14903                              threadStartTime, threadEndTime,
14904                              &glmsg, pointerArgs);
14905    glContext->traceGLMessage(&glmsg);
14906}
14907
14908void GLTrace_glAlphaFuncxOES(GLenum func, GLclampx ref) {
14909    GLMessage glmsg;
14910    GLTraceContext *glContext = getGLTraceContext();
14911
14912    glmsg.set_function(GLMessage::glAlphaFuncxOES);
14913
14914    // copy argument func
14915    GLMessage_DataType *arg_func = glmsg.add_args();
14916    arg_func->set_isarray(false);
14917    arg_func->set_type(GLMessage::DataType::ENUM);
14918    arg_func->add_intvalue((int)func);
14919
14920    // copy argument ref
14921    GLMessage_DataType *arg_ref = glmsg.add_args();
14922    arg_ref->set_isarray(false);
14923    arg_ref->set_type(GLMessage::DataType::INT);
14924    arg_ref->add_intvalue(ref);
14925
14926    // call function
14927    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14928    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14929    glContext->hooks->gl.glAlphaFuncxOES(func, ref);
14930    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14931    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14932
14933    void *pointerArgs[] = {
14934    };
14935
14936    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14937                              threadStartTime, threadEndTime,
14938                              &glmsg, pointerArgs);
14939    glContext->traceGLMessage(&glmsg);
14940}
14941
14942void GLTrace_glClearColorxOES(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha) {
14943    GLMessage glmsg;
14944    GLTraceContext *glContext = getGLTraceContext();
14945
14946    glmsg.set_function(GLMessage::glClearColorxOES);
14947
14948    // copy argument red
14949    GLMessage_DataType *arg_red = glmsg.add_args();
14950    arg_red->set_isarray(false);
14951    arg_red->set_type(GLMessage::DataType::INT);
14952    arg_red->add_intvalue(red);
14953
14954    // copy argument green
14955    GLMessage_DataType *arg_green = glmsg.add_args();
14956    arg_green->set_isarray(false);
14957    arg_green->set_type(GLMessage::DataType::INT);
14958    arg_green->add_intvalue(green);
14959
14960    // copy argument blue
14961    GLMessage_DataType *arg_blue = glmsg.add_args();
14962    arg_blue->set_isarray(false);
14963    arg_blue->set_type(GLMessage::DataType::INT);
14964    arg_blue->add_intvalue(blue);
14965
14966    // copy argument alpha
14967    GLMessage_DataType *arg_alpha = glmsg.add_args();
14968    arg_alpha->set_isarray(false);
14969    arg_alpha->set_type(GLMessage::DataType::INT);
14970    arg_alpha->add_intvalue(alpha);
14971
14972    // call function
14973    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14974    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14975    glContext->hooks->gl.glClearColorxOES(red, green, blue, alpha);
14976    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14977    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14978
14979    void *pointerArgs[] = {
14980    };
14981
14982    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14983                              threadStartTime, threadEndTime,
14984                              &glmsg, pointerArgs);
14985    glContext->traceGLMessage(&glmsg);
14986}
14987
14988void GLTrace_glClearDepthxOES(GLclampx depth) {
14989    GLMessage glmsg;
14990    GLTraceContext *glContext = getGLTraceContext();
14991
14992    glmsg.set_function(GLMessage::glClearDepthxOES);
14993
14994    // copy argument depth
14995    GLMessage_DataType *arg_depth = glmsg.add_args();
14996    arg_depth->set_isarray(false);
14997    arg_depth->set_type(GLMessage::DataType::INT);
14998    arg_depth->add_intvalue(depth);
14999
15000    // call function
15001    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15002    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15003    glContext->hooks->gl.glClearDepthxOES(depth);
15004    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15005    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15006
15007    void *pointerArgs[] = {
15008    };
15009
15010    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15011                              threadStartTime, threadEndTime,
15012                              &glmsg, pointerArgs);
15013    glContext->traceGLMessage(&glmsg);
15014}
15015
15016void GLTrace_glClipPlanexOES(GLenum plane, const GLfixed *equation) {
15017    GLMessage glmsg;
15018    GLTraceContext *glContext = getGLTraceContext();
15019
15020    glmsg.set_function(GLMessage::glClipPlanexOES);
15021
15022    // copy argument plane
15023    GLMessage_DataType *arg_plane = glmsg.add_args();
15024    arg_plane->set_isarray(false);
15025    arg_plane->set_type(GLMessage::DataType::ENUM);
15026    arg_plane->add_intvalue((int)plane);
15027
15028    // copy argument equation
15029    GLMessage_DataType *arg_equation = glmsg.add_args();
15030    arg_equation->set_isarray(false);
15031    arg_equation->set_type(GLMessage::DataType::INT);
15032    arg_equation->add_intvalue((int)equation);
15033
15034    // call function
15035    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15036    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15037    glContext->hooks->gl.glClipPlanexOES(plane, equation);
15038    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15039    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15040
15041    void *pointerArgs[] = {
15042        (void *) equation,
15043    };
15044
15045    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15046                              threadStartTime, threadEndTime,
15047                              &glmsg, pointerArgs);
15048    glContext->traceGLMessage(&glmsg);
15049}
15050
15051void GLTrace_glColor4xOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {
15052    GLMessage glmsg;
15053    GLTraceContext *glContext = getGLTraceContext();
15054
15055    glmsg.set_function(GLMessage::glColor4xOES);
15056
15057    // copy argument red
15058    GLMessage_DataType *arg_red = glmsg.add_args();
15059    arg_red->set_isarray(false);
15060    arg_red->set_type(GLMessage::DataType::INT);
15061    arg_red->add_intvalue(red);
15062
15063    // copy argument green
15064    GLMessage_DataType *arg_green = glmsg.add_args();
15065    arg_green->set_isarray(false);
15066    arg_green->set_type(GLMessage::DataType::INT);
15067    arg_green->add_intvalue(green);
15068
15069    // copy argument blue
15070    GLMessage_DataType *arg_blue = glmsg.add_args();
15071    arg_blue->set_isarray(false);
15072    arg_blue->set_type(GLMessage::DataType::INT);
15073    arg_blue->add_intvalue(blue);
15074
15075    // copy argument alpha
15076    GLMessage_DataType *arg_alpha = glmsg.add_args();
15077    arg_alpha->set_isarray(false);
15078    arg_alpha->set_type(GLMessage::DataType::INT);
15079    arg_alpha->add_intvalue(alpha);
15080
15081    // call function
15082    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15083    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15084    glContext->hooks->gl.glColor4xOES(red, green, blue, alpha);
15085    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15086    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15087
15088    void *pointerArgs[] = {
15089    };
15090
15091    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15092                              threadStartTime, threadEndTime,
15093                              &glmsg, pointerArgs);
15094    glContext->traceGLMessage(&glmsg);
15095}
15096
15097void GLTrace_glDepthRangexOES(GLclampx zNear, GLclampx zFar) {
15098    GLMessage glmsg;
15099    GLTraceContext *glContext = getGLTraceContext();
15100
15101    glmsg.set_function(GLMessage::glDepthRangexOES);
15102
15103    // copy argument zNear
15104    GLMessage_DataType *arg_zNear = glmsg.add_args();
15105    arg_zNear->set_isarray(false);
15106    arg_zNear->set_type(GLMessage::DataType::INT);
15107    arg_zNear->add_intvalue(zNear);
15108
15109    // copy argument zFar
15110    GLMessage_DataType *arg_zFar = glmsg.add_args();
15111    arg_zFar->set_isarray(false);
15112    arg_zFar->set_type(GLMessage::DataType::INT);
15113    arg_zFar->add_intvalue(zFar);
15114
15115    // call function
15116    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15117    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15118    glContext->hooks->gl.glDepthRangexOES(zNear, zFar);
15119    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15120    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15121
15122    void *pointerArgs[] = {
15123    };
15124
15125    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15126                              threadStartTime, threadEndTime,
15127                              &glmsg, pointerArgs);
15128    glContext->traceGLMessage(&glmsg);
15129}
15130
15131void GLTrace_glFogxOES(GLenum pname, GLfixed param) {
15132    GLMessage glmsg;
15133    GLTraceContext *glContext = getGLTraceContext();
15134
15135    glmsg.set_function(GLMessage::glFogxOES);
15136
15137    // copy argument pname
15138    GLMessage_DataType *arg_pname = glmsg.add_args();
15139    arg_pname->set_isarray(false);
15140    arg_pname->set_type(GLMessage::DataType::ENUM);
15141    arg_pname->add_intvalue((int)pname);
15142
15143    // copy argument param
15144    GLMessage_DataType *arg_param = glmsg.add_args();
15145    arg_param->set_isarray(false);
15146    arg_param->set_type(GLMessage::DataType::INT);
15147    arg_param->add_intvalue(param);
15148
15149    // call function
15150    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15151    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15152    glContext->hooks->gl.glFogxOES(pname, param);
15153    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15154    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15155
15156    void *pointerArgs[] = {
15157    };
15158
15159    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15160                              threadStartTime, threadEndTime,
15161                              &glmsg, pointerArgs);
15162    glContext->traceGLMessage(&glmsg);
15163}
15164
15165void GLTrace_glFogxvOES(GLenum pname, const GLfixed *params) {
15166    GLMessage glmsg;
15167    GLTraceContext *glContext = getGLTraceContext();
15168
15169    glmsg.set_function(GLMessage::glFogxvOES);
15170
15171    // copy argument pname
15172    GLMessage_DataType *arg_pname = glmsg.add_args();
15173    arg_pname->set_isarray(false);
15174    arg_pname->set_type(GLMessage::DataType::ENUM);
15175    arg_pname->add_intvalue((int)pname);
15176
15177    // copy argument params
15178    GLMessage_DataType *arg_params = glmsg.add_args();
15179    arg_params->set_isarray(false);
15180    arg_params->set_type(GLMessage::DataType::INT);
15181    arg_params->add_intvalue((int)params);
15182
15183    // call function
15184    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15185    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15186    glContext->hooks->gl.glFogxvOES(pname, params);
15187    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15188    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15189
15190    void *pointerArgs[] = {
15191        (void *) params,
15192    };
15193
15194    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15195                              threadStartTime, threadEndTime,
15196                              &glmsg, pointerArgs);
15197    glContext->traceGLMessage(&glmsg);
15198}
15199
15200void GLTrace_glFrustumxOES(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
15201    GLMessage glmsg;
15202    GLTraceContext *glContext = getGLTraceContext();
15203
15204    glmsg.set_function(GLMessage::glFrustumxOES);
15205
15206    // copy argument left
15207    GLMessage_DataType *arg_left = glmsg.add_args();
15208    arg_left->set_isarray(false);
15209    arg_left->set_type(GLMessage::DataType::INT);
15210    arg_left->add_intvalue(left);
15211
15212    // copy argument right
15213    GLMessage_DataType *arg_right = glmsg.add_args();
15214    arg_right->set_isarray(false);
15215    arg_right->set_type(GLMessage::DataType::INT);
15216    arg_right->add_intvalue(right);
15217
15218    // copy argument bottom
15219    GLMessage_DataType *arg_bottom = glmsg.add_args();
15220    arg_bottom->set_isarray(false);
15221    arg_bottom->set_type(GLMessage::DataType::INT);
15222    arg_bottom->add_intvalue(bottom);
15223
15224    // copy argument top
15225    GLMessage_DataType *arg_top = glmsg.add_args();
15226    arg_top->set_isarray(false);
15227    arg_top->set_type(GLMessage::DataType::INT);
15228    arg_top->add_intvalue(top);
15229
15230    // copy argument zNear
15231    GLMessage_DataType *arg_zNear = glmsg.add_args();
15232    arg_zNear->set_isarray(false);
15233    arg_zNear->set_type(GLMessage::DataType::INT);
15234    arg_zNear->add_intvalue(zNear);
15235
15236    // copy argument zFar
15237    GLMessage_DataType *arg_zFar = glmsg.add_args();
15238    arg_zFar->set_isarray(false);
15239    arg_zFar->set_type(GLMessage::DataType::INT);
15240    arg_zFar->add_intvalue(zFar);
15241
15242    // call function
15243    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15244    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15245    glContext->hooks->gl.glFrustumxOES(left, right, bottom, top, zNear, zFar);
15246    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15247    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15248
15249    void *pointerArgs[] = {
15250    };
15251
15252    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15253                              threadStartTime, threadEndTime,
15254                              &glmsg, pointerArgs);
15255    glContext->traceGLMessage(&glmsg);
15256}
15257
15258void GLTrace_glGetClipPlanexOES(GLenum pname, GLfixed eqn[4]) {
15259    GLMessage glmsg;
15260    GLTraceContext *glContext = getGLTraceContext();
15261
15262    glmsg.set_function(GLMessage::glGetClipPlanexOES);
15263
15264    // copy argument pname
15265    GLMessage_DataType *arg_pname = glmsg.add_args();
15266    arg_pname->set_isarray(false);
15267    arg_pname->set_type(GLMessage::DataType::ENUM);
15268    arg_pname->add_intvalue((int)pname);
15269
15270    // copy argument eqn
15271    GLMessage_DataType *arg_eqn = glmsg.add_args();
15272    arg_eqn->set_isarray(false);
15273    arg_eqn->set_type(GLMessage::DataType::INT);
15274    arg_eqn->add_intvalue((int)eqn);
15275
15276    // call function
15277    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15278    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15279    glContext->hooks->gl.glGetClipPlanexOES(pname, eqn);
15280    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15281    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15282
15283    void *pointerArgs[] = {
15284        (void *) eqn,
15285    };
15286
15287    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15288                              threadStartTime, threadEndTime,
15289                              &glmsg, pointerArgs);
15290    glContext->traceGLMessage(&glmsg);
15291}
15292
15293void GLTrace_glGetFixedvOES(GLenum pname, GLfixed *params) {
15294    GLMessage glmsg;
15295    GLTraceContext *glContext = getGLTraceContext();
15296
15297    glmsg.set_function(GLMessage::glGetFixedvOES);
15298
15299    // copy argument pname
15300    GLMessage_DataType *arg_pname = glmsg.add_args();
15301    arg_pname->set_isarray(false);
15302    arg_pname->set_type(GLMessage::DataType::ENUM);
15303    arg_pname->add_intvalue((int)pname);
15304
15305    // copy argument params
15306    GLMessage_DataType *arg_params = glmsg.add_args();
15307    arg_params->set_isarray(false);
15308    arg_params->set_type(GLMessage::DataType::INT);
15309    arg_params->add_intvalue((int)params);
15310
15311    // call function
15312    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15313    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15314    glContext->hooks->gl.glGetFixedvOES(pname, params);
15315    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15316    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15317
15318    void *pointerArgs[] = {
15319        (void *) params,
15320    };
15321
15322    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15323                              threadStartTime, threadEndTime,
15324                              &glmsg, pointerArgs);
15325    glContext->traceGLMessage(&glmsg);
15326}
15327
15328void GLTrace_glGetLightxvOES(GLenum light, GLenum pname, GLfixed *params) {
15329    GLMessage glmsg;
15330    GLTraceContext *glContext = getGLTraceContext();
15331
15332    glmsg.set_function(GLMessage::glGetLightxvOES);
15333
15334    // copy argument light
15335    GLMessage_DataType *arg_light = glmsg.add_args();
15336    arg_light->set_isarray(false);
15337    arg_light->set_type(GLMessage::DataType::ENUM);
15338    arg_light->add_intvalue((int)light);
15339
15340    // copy argument pname
15341    GLMessage_DataType *arg_pname = glmsg.add_args();
15342    arg_pname->set_isarray(false);
15343    arg_pname->set_type(GLMessage::DataType::ENUM);
15344    arg_pname->add_intvalue((int)pname);
15345
15346    // copy argument params
15347    GLMessage_DataType *arg_params = glmsg.add_args();
15348    arg_params->set_isarray(false);
15349    arg_params->set_type(GLMessage::DataType::INT);
15350    arg_params->add_intvalue((int)params);
15351
15352    // call function
15353    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15354    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15355    glContext->hooks->gl.glGetLightxvOES(light, pname, params);
15356    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15357    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15358
15359    void *pointerArgs[] = {
15360        (void *) params,
15361    };
15362
15363    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15364                              threadStartTime, threadEndTime,
15365                              &glmsg, pointerArgs);
15366    glContext->traceGLMessage(&glmsg);
15367}
15368
15369void GLTrace_glGetMaterialxvOES(GLenum face, GLenum pname, GLfixed *params) {
15370    GLMessage glmsg;
15371    GLTraceContext *glContext = getGLTraceContext();
15372
15373    glmsg.set_function(GLMessage::glGetMaterialxvOES);
15374
15375    // copy argument face
15376    GLMessage_DataType *arg_face = glmsg.add_args();
15377    arg_face->set_isarray(false);
15378    arg_face->set_type(GLMessage::DataType::ENUM);
15379    arg_face->add_intvalue((int)face);
15380
15381    // copy argument pname
15382    GLMessage_DataType *arg_pname = glmsg.add_args();
15383    arg_pname->set_isarray(false);
15384    arg_pname->set_type(GLMessage::DataType::ENUM);
15385    arg_pname->add_intvalue((int)pname);
15386
15387    // copy argument params
15388    GLMessage_DataType *arg_params = glmsg.add_args();
15389    arg_params->set_isarray(false);
15390    arg_params->set_type(GLMessage::DataType::INT);
15391    arg_params->add_intvalue((int)params);
15392
15393    // call function
15394    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15395    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15396    glContext->hooks->gl.glGetMaterialxvOES(face, pname, params);
15397    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15398    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15399
15400    void *pointerArgs[] = {
15401        (void *) params,
15402    };
15403
15404    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15405                              threadStartTime, threadEndTime,
15406                              &glmsg, pointerArgs);
15407    glContext->traceGLMessage(&glmsg);
15408}
15409
15410void GLTrace_glGetTexEnvxvOES(GLenum env, GLenum pname, GLfixed *params) {
15411    GLMessage glmsg;
15412    GLTraceContext *glContext = getGLTraceContext();
15413
15414    glmsg.set_function(GLMessage::glGetTexEnvxvOES);
15415
15416    // copy argument env
15417    GLMessage_DataType *arg_env = glmsg.add_args();
15418    arg_env->set_isarray(false);
15419    arg_env->set_type(GLMessage::DataType::ENUM);
15420    arg_env->add_intvalue((int)env);
15421
15422    // copy argument pname
15423    GLMessage_DataType *arg_pname = glmsg.add_args();
15424    arg_pname->set_isarray(false);
15425    arg_pname->set_type(GLMessage::DataType::ENUM);
15426    arg_pname->add_intvalue((int)pname);
15427
15428    // copy argument params
15429    GLMessage_DataType *arg_params = glmsg.add_args();
15430    arg_params->set_isarray(false);
15431    arg_params->set_type(GLMessage::DataType::INT);
15432    arg_params->add_intvalue((int)params);
15433
15434    // call function
15435    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15436    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15437    glContext->hooks->gl.glGetTexEnvxvOES(env, pname, params);
15438    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15439    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15440
15441    void *pointerArgs[] = {
15442        (void *) params,
15443    };
15444
15445    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15446                              threadStartTime, threadEndTime,
15447                              &glmsg, pointerArgs);
15448    glContext->traceGLMessage(&glmsg);
15449}
15450
15451void GLTrace_glGetTexParameterxvOES(GLenum target, GLenum pname, GLfixed *params) {
15452    GLMessage glmsg;
15453    GLTraceContext *glContext = getGLTraceContext();
15454
15455    glmsg.set_function(GLMessage::glGetTexParameterxvOES);
15456
15457    // copy argument target
15458    GLMessage_DataType *arg_target = glmsg.add_args();
15459    arg_target->set_isarray(false);
15460    arg_target->set_type(GLMessage::DataType::ENUM);
15461    arg_target->add_intvalue((int)target);
15462
15463    // copy argument pname
15464    GLMessage_DataType *arg_pname = glmsg.add_args();
15465    arg_pname->set_isarray(false);
15466    arg_pname->set_type(GLMessage::DataType::ENUM);
15467    arg_pname->add_intvalue((int)pname);
15468
15469    // copy argument params
15470    GLMessage_DataType *arg_params = glmsg.add_args();
15471    arg_params->set_isarray(false);
15472    arg_params->set_type(GLMessage::DataType::INT);
15473    arg_params->add_intvalue((int)params);
15474
15475    // call function
15476    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15477    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15478    glContext->hooks->gl.glGetTexParameterxvOES(target, pname, params);
15479    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15480    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15481
15482    void *pointerArgs[] = {
15483        (void *) params,
15484    };
15485
15486    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15487                              threadStartTime, threadEndTime,
15488                              &glmsg, pointerArgs);
15489    glContext->traceGLMessage(&glmsg);
15490}
15491
15492void GLTrace_glLightModelxOES(GLenum pname, GLfixed param) {
15493    GLMessage glmsg;
15494    GLTraceContext *glContext = getGLTraceContext();
15495
15496    glmsg.set_function(GLMessage::glLightModelxOES);
15497
15498    // copy argument pname
15499    GLMessage_DataType *arg_pname = glmsg.add_args();
15500    arg_pname->set_isarray(false);
15501    arg_pname->set_type(GLMessage::DataType::ENUM);
15502    arg_pname->add_intvalue((int)pname);
15503
15504    // copy argument param
15505    GLMessage_DataType *arg_param = glmsg.add_args();
15506    arg_param->set_isarray(false);
15507    arg_param->set_type(GLMessage::DataType::INT);
15508    arg_param->add_intvalue(param);
15509
15510    // call function
15511    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15512    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15513    glContext->hooks->gl.glLightModelxOES(pname, param);
15514    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15515    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15516
15517    void *pointerArgs[] = {
15518    };
15519
15520    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15521                              threadStartTime, threadEndTime,
15522                              &glmsg, pointerArgs);
15523    glContext->traceGLMessage(&glmsg);
15524}
15525
15526void GLTrace_glLightModelxvOES(GLenum pname, const GLfixed *params) {
15527    GLMessage glmsg;
15528    GLTraceContext *glContext = getGLTraceContext();
15529
15530    glmsg.set_function(GLMessage::glLightModelxvOES);
15531
15532    // copy argument pname
15533    GLMessage_DataType *arg_pname = glmsg.add_args();
15534    arg_pname->set_isarray(false);
15535    arg_pname->set_type(GLMessage::DataType::ENUM);
15536    arg_pname->add_intvalue((int)pname);
15537
15538    // copy argument params
15539    GLMessage_DataType *arg_params = glmsg.add_args();
15540    arg_params->set_isarray(false);
15541    arg_params->set_type(GLMessage::DataType::INT);
15542    arg_params->add_intvalue((int)params);
15543
15544    // call function
15545    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15546    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15547    glContext->hooks->gl.glLightModelxvOES(pname, params);
15548    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15549    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15550
15551    void *pointerArgs[] = {
15552        (void *) params,
15553    };
15554
15555    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15556                              threadStartTime, threadEndTime,
15557                              &glmsg, pointerArgs);
15558    glContext->traceGLMessage(&glmsg);
15559}
15560
15561void GLTrace_glLightxOES(GLenum light, GLenum pname, GLfixed param) {
15562    GLMessage glmsg;
15563    GLTraceContext *glContext = getGLTraceContext();
15564
15565    glmsg.set_function(GLMessage::glLightxOES);
15566
15567    // copy argument light
15568    GLMessage_DataType *arg_light = glmsg.add_args();
15569    arg_light->set_isarray(false);
15570    arg_light->set_type(GLMessage::DataType::ENUM);
15571    arg_light->add_intvalue((int)light);
15572
15573    // copy argument pname
15574    GLMessage_DataType *arg_pname = glmsg.add_args();
15575    arg_pname->set_isarray(false);
15576    arg_pname->set_type(GLMessage::DataType::ENUM);
15577    arg_pname->add_intvalue((int)pname);
15578
15579    // copy argument param
15580    GLMessage_DataType *arg_param = glmsg.add_args();
15581    arg_param->set_isarray(false);
15582    arg_param->set_type(GLMessage::DataType::INT);
15583    arg_param->add_intvalue(param);
15584
15585    // call function
15586    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15587    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15588    glContext->hooks->gl.glLightxOES(light, pname, param);
15589    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15590    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15591
15592    void *pointerArgs[] = {
15593    };
15594
15595    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15596                              threadStartTime, threadEndTime,
15597                              &glmsg, pointerArgs);
15598    glContext->traceGLMessage(&glmsg);
15599}
15600
15601void GLTrace_glLightxvOES(GLenum light, GLenum pname, const GLfixed *params) {
15602    GLMessage glmsg;
15603    GLTraceContext *glContext = getGLTraceContext();
15604
15605    glmsg.set_function(GLMessage::glLightxvOES);
15606
15607    // copy argument light
15608    GLMessage_DataType *arg_light = glmsg.add_args();
15609    arg_light->set_isarray(false);
15610    arg_light->set_type(GLMessage::DataType::ENUM);
15611    arg_light->add_intvalue((int)light);
15612
15613    // copy argument pname
15614    GLMessage_DataType *arg_pname = glmsg.add_args();
15615    arg_pname->set_isarray(false);
15616    arg_pname->set_type(GLMessage::DataType::ENUM);
15617    arg_pname->add_intvalue((int)pname);
15618
15619    // copy argument params
15620    GLMessage_DataType *arg_params = glmsg.add_args();
15621    arg_params->set_isarray(false);
15622    arg_params->set_type(GLMessage::DataType::INT);
15623    arg_params->add_intvalue((int)params);
15624
15625    // call function
15626    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15627    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15628    glContext->hooks->gl.glLightxvOES(light, pname, params);
15629    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15630    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15631
15632    void *pointerArgs[] = {
15633        (void *) params,
15634    };
15635
15636    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15637                              threadStartTime, threadEndTime,
15638                              &glmsg, pointerArgs);
15639    glContext->traceGLMessage(&glmsg);
15640}
15641
15642void GLTrace_glLineWidthxOES(GLfixed width) {
15643    GLMessage glmsg;
15644    GLTraceContext *glContext = getGLTraceContext();
15645
15646    glmsg.set_function(GLMessage::glLineWidthxOES);
15647
15648    // copy argument width
15649    GLMessage_DataType *arg_width = glmsg.add_args();
15650    arg_width->set_isarray(false);
15651    arg_width->set_type(GLMessage::DataType::INT);
15652    arg_width->add_intvalue(width);
15653
15654    // call function
15655    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15656    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15657    glContext->hooks->gl.glLineWidthxOES(width);
15658    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15659    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15660
15661    void *pointerArgs[] = {
15662    };
15663
15664    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15665                              threadStartTime, threadEndTime,
15666                              &glmsg, pointerArgs);
15667    glContext->traceGLMessage(&glmsg);
15668}
15669
15670void GLTrace_glLoadMatrixxOES(const GLfixed *m) {
15671    GLMessage glmsg;
15672    GLTraceContext *glContext = getGLTraceContext();
15673
15674    glmsg.set_function(GLMessage::glLoadMatrixxOES);
15675
15676    // copy argument m
15677    GLMessage_DataType *arg_m = glmsg.add_args();
15678    arg_m->set_isarray(false);
15679    arg_m->set_type(GLMessage::DataType::INT);
15680    arg_m->add_intvalue((int)m);
15681
15682    // call function
15683    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15684    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15685    glContext->hooks->gl.glLoadMatrixxOES(m);
15686    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15687    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15688
15689    void *pointerArgs[] = {
15690        (void *) m,
15691    };
15692
15693    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15694                              threadStartTime, threadEndTime,
15695                              &glmsg, pointerArgs);
15696    glContext->traceGLMessage(&glmsg);
15697}
15698
15699void GLTrace_glMaterialxOES(GLenum face, GLenum pname, GLfixed param) {
15700    GLMessage glmsg;
15701    GLTraceContext *glContext = getGLTraceContext();
15702
15703    glmsg.set_function(GLMessage::glMaterialxOES);
15704
15705    // copy argument face
15706    GLMessage_DataType *arg_face = glmsg.add_args();
15707    arg_face->set_isarray(false);
15708    arg_face->set_type(GLMessage::DataType::ENUM);
15709    arg_face->add_intvalue((int)face);
15710
15711    // copy argument pname
15712    GLMessage_DataType *arg_pname = glmsg.add_args();
15713    arg_pname->set_isarray(false);
15714    arg_pname->set_type(GLMessage::DataType::ENUM);
15715    arg_pname->add_intvalue((int)pname);
15716
15717    // copy argument param
15718    GLMessage_DataType *arg_param = glmsg.add_args();
15719    arg_param->set_isarray(false);
15720    arg_param->set_type(GLMessage::DataType::INT);
15721    arg_param->add_intvalue(param);
15722
15723    // call function
15724    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15725    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15726    glContext->hooks->gl.glMaterialxOES(face, pname, param);
15727    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15728    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15729
15730    void *pointerArgs[] = {
15731    };
15732
15733    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15734                              threadStartTime, threadEndTime,
15735                              &glmsg, pointerArgs);
15736    glContext->traceGLMessage(&glmsg);
15737}
15738
15739void GLTrace_glMaterialxvOES(GLenum face, GLenum pname, const GLfixed *params) {
15740    GLMessage glmsg;
15741    GLTraceContext *glContext = getGLTraceContext();
15742
15743    glmsg.set_function(GLMessage::glMaterialxvOES);
15744
15745    // copy argument face
15746    GLMessage_DataType *arg_face = glmsg.add_args();
15747    arg_face->set_isarray(false);
15748    arg_face->set_type(GLMessage::DataType::ENUM);
15749    arg_face->add_intvalue((int)face);
15750
15751    // copy argument pname
15752    GLMessage_DataType *arg_pname = glmsg.add_args();
15753    arg_pname->set_isarray(false);
15754    arg_pname->set_type(GLMessage::DataType::ENUM);
15755    arg_pname->add_intvalue((int)pname);
15756
15757    // copy argument params
15758    GLMessage_DataType *arg_params = glmsg.add_args();
15759    arg_params->set_isarray(false);
15760    arg_params->set_type(GLMessage::DataType::INT);
15761    arg_params->add_intvalue((int)params);
15762
15763    // call function
15764    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15765    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15766    glContext->hooks->gl.glMaterialxvOES(face, pname, params);
15767    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15768    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15769
15770    void *pointerArgs[] = {
15771        (void *) params,
15772    };
15773
15774    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15775                              threadStartTime, threadEndTime,
15776                              &glmsg, pointerArgs);
15777    glContext->traceGLMessage(&glmsg);
15778}
15779
15780void GLTrace_glMultMatrixxOES(const GLfixed *m) {
15781    GLMessage glmsg;
15782    GLTraceContext *glContext = getGLTraceContext();
15783
15784    glmsg.set_function(GLMessage::glMultMatrixxOES);
15785
15786    // copy argument m
15787    GLMessage_DataType *arg_m = glmsg.add_args();
15788    arg_m->set_isarray(false);
15789    arg_m->set_type(GLMessage::DataType::INT);
15790    arg_m->add_intvalue((int)m);
15791
15792    // call function
15793    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15794    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15795    glContext->hooks->gl.glMultMatrixxOES(m);
15796    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15797    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15798
15799    void *pointerArgs[] = {
15800        (void *) m,
15801    };
15802
15803    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15804                              threadStartTime, threadEndTime,
15805                              &glmsg, pointerArgs);
15806    glContext->traceGLMessage(&glmsg);
15807}
15808
15809void GLTrace_glMultiTexCoord4xOES(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q) {
15810    GLMessage glmsg;
15811    GLTraceContext *glContext = getGLTraceContext();
15812
15813    glmsg.set_function(GLMessage::glMultiTexCoord4xOES);
15814
15815    // copy argument target
15816    GLMessage_DataType *arg_target = glmsg.add_args();
15817    arg_target->set_isarray(false);
15818    arg_target->set_type(GLMessage::DataType::ENUM);
15819    arg_target->add_intvalue((int)target);
15820
15821    // copy argument s
15822    GLMessage_DataType *arg_s = glmsg.add_args();
15823    arg_s->set_isarray(false);
15824    arg_s->set_type(GLMessage::DataType::INT);
15825    arg_s->add_intvalue(s);
15826
15827    // copy argument t
15828    GLMessage_DataType *arg_t = glmsg.add_args();
15829    arg_t->set_isarray(false);
15830    arg_t->set_type(GLMessage::DataType::INT);
15831    arg_t->add_intvalue(t);
15832
15833    // copy argument r
15834    GLMessage_DataType *arg_r = glmsg.add_args();
15835    arg_r->set_isarray(false);
15836    arg_r->set_type(GLMessage::DataType::INT);
15837    arg_r->add_intvalue(r);
15838
15839    // copy argument q
15840    GLMessage_DataType *arg_q = glmsg.add_args();
15841    arg_q->set_isarray(false);
15842    arg_q->set_type(GLMessage::DataType::INT);
15843    arg_q->add_intvalue(q);
15844
15845    // call function
15846    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15847    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15848    glContext->hooks->gl.glMultiTexCoord4xOES(target, s, t, r, q);
15849    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15850    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15851
15852    void *pointerArgs[] = {
15853    };
15854
15855    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15856                              threadStartTime, threadEndTime,
15857                              &glmsg, pointerArgs);
15858    glContext->traceGLMessage(&glmsg);
15859}
15860
15861void GLTrace_glNormal3xOES(GLfixed nx, GLfixed ny, GLfixed nz) {
15862    GLMessage glmsg;
15863    GLTraceContext *glContext = getGLTraceContext();
15864
15865    glmsg.set_function(GLMessage::glNormal3xOES);
15866
15867    // copy argument nx
15868    GLMessage_DataType *arg_nx = glmsg.add_args();
15869    arg_nx->set_isarray(false);
15870    arg_nx->set_type(GLMessage::DataType::INT);
15871    arg_nx->add_intvalue(nx);
15872
15873    // copy argument ny
15874    GLMessage_DataType *arg_ny = glmsg.add_args();
15875    arg_ny->set_isarray(false);
15876    arg_ny->set_type(GLMessage::DataType::INT);
15877    arg_ny->add_intvalue(ny);
15878
15879    // copy argument nz
15880    GLMessage_DataType *arg_nz = glmsg.add_args();
15881    arg_nz->set_isarray(false);
15882    arg_nz->set_type(GLMessage::DataType::INT);
15883    arg_nz->add_intvalue(nz);
15884
15885    // call function
15886    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15887    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15888    glContext->hooks->gl.glNormal3xOES(nx, ny, nz);
15889    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15890    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15891
15892    void *pointerArgs[] = {
15893    };
15894
15895    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15896                              threadStartTime, threadEndTime,
15897                              &glmsg, pointerArgs);
15898    glContext->traceGLMessage(&glmsg);
15899}
15900
15901void GLTrace_glOrthoxOES(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
15902    GLMessage glmsg;
15903    GLTraceContext *glContext = getGLTraceContext();
15904
15905    glmsg.set_function(GLMessage::glOrthoxOES);
15906
15907    // copy argument left
15908    GLMessage_DataType *arg_left = glmsg.add_args();
15909    arg_left->set_isarray(false);
15910    arg_left->set_type(GLMessage::DataType::INT);
15911    arg_left->add_intvalue(left);
15912
15913    // copy argument right
15914    GLMessage_DataType *arg_right = glmsg.add_args();
15915    arg_right->set_isarray(false);
15916    arg_right->set_type(GLMessage::DataType::INT);
15917    arg_right->add_intvalue(right);
15918
15919    // copy argument bottom
15920    GLMessage_DataType *arg_bottom = glmsg.add_args();
15921    arg_bottom->set_isarray(false);
15922    arg_bottom->set_type(GLMessage::DataType::INT);
15923    arg_bottom->add_intvalue(bottom);
15924
15925    // copy argument top
15926    GLMessage_DataType *arg_top = glmsg.add_args();
15927    arg_top->set_isarray(false);
15928    arg_top->set_type(GLMessage::DataType::INT);
15929    arg_top->add_intvalue(top);
15930
15931    // copy argument zNear
15932    GLMessage_DataType *arg_zNear = glmsg.add_args();
15933    arg_zNear->set_isarray(false);
15934    arg_zNear->set_type(GLMessage::DataType::INT);
15935    arg_zNear->add_intvalue(zNear);
15936
15937    // copy argument zFar
15938    GLMessage_DataType *arg_zFar = glmsg.add_args();
15939    arg_zFar->set_isarray(false);
15940    arg_zFar->set_type(GLMessage::DataType::INT);
15941    arg_zFar->add_intvalue(zFar);
15942
15943    // call function
15944    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15945    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15946    glContext->hooks->gl.glOrthoxOES(left, right, bottom, top, zNear, zFar);
15947    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15948    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15949
15950    void *pointerArgs[] = {
15951    };
15952
15953    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15954                              threadStartTime, threadEndTime,
15955                              &glmsg, pointerArgs);
15956    glContext->traceGLMessage(&glmsg);
15957}
15958
15959void GLTrace_glPointParameterxOES(GLenum pname, GLfixed param) {
15960    GLMessage glmsg;
15961    GLTraceContext *glContext = getGLTraceContext();
15962
15963    glmsg.set_function(GLMessage::glPointParameterxOES);
15964
15965    // copy argument pname
15966    GLMessage_DataType *arg_pname = glmsg.add_args();
15967    arg_pname->set_isarray(false);
15968    arg_pname->set_type(GLMessage::DataType::ENUM);
15969    arg_pname->add_intvalue((int)pname);
15970
15971    // copy argument param
15972    GLMessage_DataType *arg_param = glmsg.add_args();
15973    arg_param->set_isarray(false);
15974    arg_param->set_type(GLMessage::DataType::INT);
15975    arg_param->add_intvalue(param);
15976
15977    // call function
15978    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15979    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15980    glContext->hooks->gl.glPointParameterxOES(pname, param);
15981    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15982    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15983
15984    void *pointerArgs[] = {
15985    };
15986
15987    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15988                              threadStartTime, threadEndTime,
15989                              &glmsg, pointerArgs);
15990    glContext->traceGLMessage(&glmsg);
15991}
15992
15993void GLTrace_glPointParameterxvOES(GLenum pname, const GLfixed *params) {
15994    GLMessage glmsg;
15995    GLTraceContext *glContext = getGLTraceContext();
15996
15997    glmsg.set_function(GLMessage::glPointParameterxvOES);
15998
15999    // copy argument pname
16000    GLMessage_DataType *arg_pname = glmsg.add_args();
16001    arg_pname->set_isarray(false);
16002    arg_pname->set_type(GLMessage::DataType::ENUM);
16003    arg_pname->add_intvalue((int)pname);
16004
16005    // copy argument params
16006    GLMessage_DataType *arg_params = glmsg.add_args();
16007    arg_params->set_isarray(false);
16008    arg_params->set_type(GLMessage::DataType::INT);
16009    arg_params->add_intvalue((int)params);
16010
16011    // call function
16012    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16013    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16014    glContext->hooks->gl.glPointParameterxvOES(pname, params);
16015    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16016    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16017
16018    void *pointerArgs[] = {
16019        (void *) params,
16020    };
16021
16022    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16023                              threadStartTime, threadEndTime,
16024                              &glmsg, pointerArgs);
16025    glContext->traceGLMessage(&glmsg);
16026}
16027
16028void GLTrace_glPointSizexOES(GLfixed size) {
16029    GLMessage glmsg;
16030    GLTraceContext *glContext = getGLTraceContext();
16031
16032    glmsg.set_function(GLMessage::glPointSizexOES);
16033
16034    // copy argument size
16035    GLMessage_DataType *arg_size = glmsg.add_args();
16036    arg_size->set_isarray(false);
16037    arg_size->set_type(GLMessage::DataType::INT);
16038    arg_size->add_intvalue(size);
16039
16040    // call function
16041    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16042    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16043    glContext->hooks->gl.glPointSizexOES(size);
16044    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16045    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16046
16047    void *pointerArgs[] = {
16048    };
16049
16050    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16051                              threadStartTime, threadEndTime,
16052                              &glmsg, pointerArgs);
16053    glContext->traceGLMessage(&glmsg);
16054}
16055
16056void GLTrace_glPolygonOffsetxOES(GLfixed factor, GLfixed units) {
16057    GLMessage glmsg;
16058    GLTraceContext *glContext = getGLTraceContext();
16059
16060    glmsg.set_function(GLMessage::glPolygonOffsetxOES);
16061
16062    // copy argument factor
16063    GLMessage_DataType *arg_factor = glmsg.add_args();
16064    arg_factor->set_isarray(false);
16065    arg_factor->set_type(GLMessage::DataType::INT);
16066    arg_factor->add_intvalue(factor);
16067
16068    // copy argument units
16069    GLMessage_DataType *arg_units = glmsg.add_args();
16070    arg_units->set_isarray(false);
16071    arg_units->set_type(GLMessage::DataType::INT);
16072    arg_units->add_intvalue(units);
16073
16074    // call function
16075    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16076    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16077    glContext->hooks->gl.glPolygonOffsetxOES(factor, units);
16078    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16079    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16080
16081    void *pointerArgs[] = {
16082    };
16083
16084    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16085                              threadStartTime, threadEndTime,
16086                              &glmsg, pointerArgs);
16087    glContext->traceGLMessage(&glmsg);
16088}
16089
16090void GLTrace_glRotatexOES(GLfixed angle, GLfixed x, GLfixed y, GLfixed z) {
16091    GLMessage glmsg;
16092    GLTraceContext *glContext = getGLTraceContext();
16093
16094    glmsg.set_function(GLMessage::glRotatexOES);
16095
16096    // copy argument angle
16097    GLMessage_DataType *arg_angle = glmsg.add_args();
16098    arg_angle->set_isarray(false);
16099    arg_angle->set_type(GLMessage::DataType::INT);
16100    arg_angle->add_intvalue(angle);
16101
16102    // copy argument x
16103    GLMessage_DataType *arg_x = glmsg.add_args();
16104    arg_x->set_isarray(false);
16105    arg_x->set_type(GLMessage::DataType::INT);
16106    arg_x->add_intvalue(x);
16107
16108    // copy argument y
16109    GLMessage_DataType *arg_y = glmsg.add_args();
16110    arg_y->set_isarray(false);
16111    arg_y->set_type(GLMessage::DataType::INT);
16112    arg_y->add_intvalue(y);
16113
16114    // copy argument z
16115    GLMessage_DataType *arg_z = glmsg.add_args();
16116    arg_z->set_isarray(false);
16117    arg_z->set_type(GLMessage::DataType::INT);
16118    arg_z->add_intvalue(z);
16119
16120    // call function
16121    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16122    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16123    glContext->hooks->gl.glRotatexOES(angle, x, y, z);
16124    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16125    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16126
16127    void *pointerArgs[] = {
16128    };
16129
16130    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16131                              threadStartTime, threadEndTime,
16132                              &glmsg, pointerArgs);
16133    glContext->traceGLMessage(&glmsg);
16134}
16135
16136void GLTrace_glSampleCoveragexOES(GLclampx value, GLboolean invert) {
16137    GLMessage glmsg;
16138    GLTraceContext *glContext = getGLTraceContext();
16139
16140    glmsg.set_function(GLMessage::glSampleCoveragexOES);
16141
16142    // copy argument value
16143    GLMessage_DataType *arg_value = glmsg.add_args();
16144    arg_value->set_isarray(false);
16145    arg_value->set_type(GLMessage::DataType::INT);
16146    arg_value->add_intvalue(value);
16147
16148    // copy argument invert
16149    GLMessage_DataType *arg_invert = glmsg.add_args();
16150    arg_invert->set_isarray(false);
16151    arg_invert->set_type(GLMessage::DataType::BOOL);
16152    arg_invert->add_boolvalue(invert);
16153
16154    // call function
16155    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16156    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16157    glContext->hooks->gl.glSampleCoveragexOES(value, invert);
16158    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16159    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16160
16161    void *pointerArgs[] = {
16162    };
16163
16164    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16165                              threadStartTime, threadEndTime,
16166                              &glmsg, pointerArgs);
16167    glContext->traceGLMessage(&glmsg);
16168}
16169
16170void GLTrace_glScalexOES(GLfixed x, GLfixed y, GLfixed z) {
16171    GLMessage glmsg;
16172    GLTraceContext *glContext = getGLTraceContext();
16173
16174    glmsg.set_function(GLMessage::glScalexOES);
16175
16176    // copy argument x
16177    GLMessage_DataType *arg_x = glmsg.add_args();
16178    arg_x->set_isarray(false);
16179    arg_x->set_type(GLMessage::DataType::INT);
16180    arg_x->add_intvalue(x);
16181
16182    // copy argument y
16183    GLMessage_DataType *arg_y = glmsg.add_args();
16184    arg_y->set_isarray(false);
16185    arg_y->set_type(GLMessage::DataType::INT);
16186    arg_y->add_intvalue(y);
16187
16188    // copy argument z
16189    GLMessage_DataType *arg_z = glmsg.add_args();
16190    arg_z->set_isarray(false);
16191    arg_z->set_type(GLMessage::DataType::INT);
16192    arg_z->add_intvalue(z);
16193
16194    // call function
16195    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16196    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16197    glContext->hooks->gl.glScalexOES(x, y, z);
16198    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16199    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16200
16201    void *pointerArgs[] = {
16202    };
16203
16204    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16205                              threadStartTime, threadEndTime,
16206                              &glmsg, pointerArgs);
16207    glContext->traceGLMessage(&glmsg);
16208}
16209
16210void GLTrace_glTexEnvxOES(GLenum target, GLenum pname, GLfixed param) {
16211    GLMessage glmsg;
16212    GLTraceContext *glContext = getGLTraceContext();
16213
16214    glmsg.set_function(GLMessage::glTexEnvxOES);
16215
16216    // copy argument target
16217    GLMessage_DataType *arg_target = glmsg.add_args();
16218    arg_target->set_isarray(false);
16219    arg_target->set_type(GLMessage::DataType::ENUM);
16220    arg_target->add_intvalue((int)target);
16221
16222    // copy argument pname
16223    GLMessage_DataType *arg_pname = glmsg.add_args();
16224    arg_pname->set_isarray(false);
16225    arg_pname->set_type(GLMessage::DataType::ENUM);
16226    arg_pname->add_intvalue((int)pname);
16227
16228    // copy argument param
16229    GLMessage_DataType *arg_param = glmsg.add_args();
16230    arg_param->set_isarray(false);
16231    arg_param->set_type(GLMessage::DataType::INT);
16232    arg_param->add_intvalue(param);
16233
16234    // call function
16235    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16236    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16237    glContext->hooks->gl.glTexEnvxOES(target, pname, param);
16238    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16239    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16240
16241    void *pointerArgs[] = {
16242    };
16243
16244    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16245                              threadStartTime, threadEndTime,
16246                              &glmsg, pointerArgs);
16247    glContext->traceGLMessage(&glmsg);
16248}
16249
16250void GLTrace_glTexEnvxvOES(GLenum target, GLenum pname, const GLfixed *params) {
16251    GLMessage glmsg;
16252    GLTraceContext *glContext = getGLTraceContext();
16253
16254    glmsg.set_function(GLMessage::glTexEnvxvOES);
16255
16256    // copy argument target
16257    GLMessage_DataType *arg_target = glmsg.add_args();
16258    arg_target->set_isarray(false);
16259    arg_target->set_type(GLMessage::DataType::ENUM);
16260    arg_target->add_intvalue((int)target);
16261
16262    // copy argument pname
16263    GLMessage_DataType *arg_pname = glmsg.add_args();
16264    arg_pname->set_isarray(false);
16265    arg_pname->set_type(GLMessage::DataType::ENUM);
16266    arg_pname->add_intvalue((int)pname);
16267
16268    // copy argument params
16269    GLMessage_DataType *arg_params = glmsg.add_args();
16270    arg_params->set_isarray(false);
16271    arg_params->set_type(GLMessage::DataType::INT);
16272    arg_params->add_intvalue((int)params);
16273
16274    // call function
16275    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16276    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16277    glContext->hooks->gl.glTexEnvxvOES(target, pname, params);
16278    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16279    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16280
16281    void *pointerArgs[] = {
16282        (void *) params,
16283    };
16284
16285    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16286                              threadStartTime, threadEndTime,
16287                              &glmsg, pointerArgs);
16288    glContext->traceGLMessage(&glmsg);
16289}
16290
16291void GLTrace_glTexParameterxOES(GLenum target, GLenum pname, GLfixed param) {
16292    GLMessage glmsg;
16293    GLTraceContext *glContext = getGLTraceContext();
16294
16295    glmsg.set_function(GLMessage::glTexParameterxOES);
16296
16297    // copy argument target
16298    GLMessage_DataType *arg_target = glmsg.add_args();
16299    arg_target->set_isarray(false);
16300    arg_target->set_type(GLMessage::DataType::ENUM);
16301    arg_target->add_intvalue((int)target);
16302
16303    // copy argument pname
16304    GLMessage_DataType *arg_pname = glmsg.add_args();
16305    arg_pname->set_isarray(false);
16306    arg_pname->set_type(GLMessage::DataType::ENUM);
16307    arg_pname->add_intvalue((int)pname);
16308
16309    // copy argument param
16310    GLMessage_DataType *arg_param = glmsg.add_args();
16311    arg_param->set_isarray(false);
16312    arg_param->set_type(GLMessage::DataType::INT);
16313    arg_param->add_intvalue(param);
16314
16315    // call function
16316    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16317    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16318    glContext->hooks->gl.glTexParameterxOES(target, pname, param);
16319    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16320    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16321
16322    void *pointerArgs[] = {
16323    };
16324
16325    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16326                              threadStartTime, threadEndTime,
16327                              &glmsg, pointerArgs);
16328    glContext->traceGLMessage(&glmsg);
16329}
16330
16331void GLTrace_glTexParameterxvOES(GLenum target, GLenum pname, const GLfixed *params) {
16332    GLMessage glmsg;
16333    GLTraceContext *glContext = getGLTraceContext();
16334
16335    glmsg.set_function(GLMessage::glTexParameterxvOES);
16336
16337    // copy argument target
16338    GLMessage_DataType *arg_target = glmsg.add_args();
16339    arg_target->set_isarray(false);
16340    arg_target->set_type(GLMessage::DataType::ENUM);
16341    arg_target->add_intvalue((int)target);
16342
16343    // copy argument pname
16344    GLMessage_DataType *arg_pname = glmsg.add_args();
16345    arg_pname->set_isarray(false);
16346    arg_pname->set_type(GLMessage::DataType::ENUM);
16347    arg_pname->add_intvalue((int)pname);
16348
16349    // copy argument params
16350    GLMessage_DataType *arg_params = glmsg.add_args();
16351    arg_params->set_isarray(false);
16352    arg_params->set_type(GLMessage::DataType::INT);
16353    arg_params->add_intvalue((int)params);
16354
16355    // call function
16356    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16357    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16358    glContext->hooks->gl.glTexParameterxvOES(target, pname, params);
16359    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16360    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16361
16362    void *pointerArgs[] = {
16363        (void *) params,
16364    };
16365
16366    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16367                              threadStartTime, threadEndTime,
16368                              &glmsg, pointerArgs);
16369    glContext->traceGLMessage(&glmsg);
16370}
16371
16372void GLTrace_glTranslatexOES(GLfixed x, GLfixed y, GLfixed z) {
16373    GLMessage glmsg;
16374    GLTraceContext *glContext = getGLTraceContext();
16375
16376    glmsg.set_function(GLMessage::glTranslatexOES);
16377
16378    // copy argument x
16379    GLMessage_DataType *arg_x = glmsg.add_args();
16380    arg_x->set_isarray(false);
16381    arg_x->set_type(GLMessage::DataType::INT);
16382    arg_x->add_intvalue(x);
16383
16384    // copy argument y
16385    GLMessage_DataType *arg_y = glmsg.add_args();
16386    arg_y->set_isarray(false);
16387    arg_y->set_type(GLMessage::DataType::INT);
16388    arg_y->add_intvalue(y);
16389
16390    // copy argument z
16391    GLMessage_DataType *arg_z = glmsg.add_args();
16392    arg_z->set_isarray(false);
16393    arg_z->set_type(GLMessage::DataType::INT);
16394    arg_z->add_intvalue(z);
16395
16396    // call function
16397    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16398    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16399    glContext->hooks->gl.glTranslatexOES(x, y, z);
16400    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16401    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16402
16403    void *pointerArgs[] = {
16404    };
16405
16406    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16407                              threadStartTime, threadEndTime,
16408                              &glmsg, pointerArgs);
16409    glContext->traceGLMessage(&glmsg);
16410}
16411
16412GLboolean GLTrace_glIsRenderbufferOES(GLuint renderbuffer) {
16413    GLMessage glmsg;
16414    GLTraceContext *glContext = getGLTraceContext();
16415
16416    glmsg.set_function(GLMessage::glIsRenderbufferOES);
16417
16418    // copy argument renderbuffer
16419    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
16420    arg_renderbuffer->set_isarray(false);
16421    arg_renderbuffer->set_type(GLMessage::DataType::INT);
16422    arg_renderbuffer->add_intvalue(renderbuffer);
16423
16424    // call function
16425    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16426    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16427    GLboolean retValue = glContext->hooks->gl.glIsRenderbufferOES(renderbuffer);
16428    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16429    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16430
16431    // set return value
16432    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
16433    rt->set_isarray(false);
16434    rt->set_type(GLMessage::DataType::BOOL);
16435    rt->add_boolvalue(retValue);
16436
16437    void *pointerArgs[] = {
16438    };
16439
16440    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16441                              threadStartTime, threadEndTime,
16442                              &glmsg, pointerArgs);
16443    glContext->traceGLMessage(&glmsg);
16444
16445    return retValue;
16446}
16447
16448void GLTrace_glBindRenderbufferOES(GLenum target, GLuint renderbuffer) {
16449    GLMessage glmsg;
16450    GLTraceContext *glContext = getGLTraceContext();
16451
16452    glmsg.set_function(GLMessage::glBindRenderbufferOES);
16453
16454    // copy argument target
16455    GLMessage_DataType *arg_target = glmsg.add_args();
16456    arg_target->set_isarray(false);
16457    arg_target->set_type(GLMessage::DataType::ENUM);
16458    arg_target->add_intvalue((int)target);
16459
16460    // copy argument renderbuffer
16461    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
16462    arg_renderbuffer->set_isarray(false);
16463    arg_renderbuffer->set_type(GLMessage::DataType::INT);
16464    arg_renderbuffer->add_intvalue(renderbuffer);
16465
16466    // call function
16467    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16468    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16469    glContext->hooks->gl.glBindRenderbufferOES(target, renderbuffer);
16470    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16471    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16472
16473    void *pointerArgs[] = {
16474    };
16475
16476    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16477                              threadStartTime, threadEndTime,
16478                              &glmsg, pointerArgs);
16479    glContext->traceGLMessage(&glmsg);
16480}
16481
16482void GLTrace_glDeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers) {
16483    GLMessage glmsg;
16484    GLTraceContext *glContext = getGLTraceContext();
16485
16486    glmsg.set_function(GLMessage::glDeleteRenderbuffersOES);
16487
16488    // copy argument n
16489    GLMessage_DataType *arg_n = glmsg.add_args();
16490    arg_n->set_isarray(false);
16491    arg_n->set_type(GLMessage::DataType::INT);
16492    arg_n->add_intvalue(n);
16493
16494    // copy argument renderbuffers
16495    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
16496    arg_renderbuffers->set_isarray(false);
16497    arg_renderbuffers->set_type(GLMessage::DataType::INT);
16498    arg_renderbuffers->add_intvalue((int)renderbuffers);
16499
16500    // call function
16501    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16502    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16503    glContext->hooks->gl.glDeleteRenderbuffersOES(n, renderbuffers);
16504    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16505    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16506
16507    void *pointerArgs[] = {
16508        (void *) renderbuffers,
16509    };
16510
16511    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16512                              threadStartTime, threadEndTime,
16513                              &glmsg, pointerArgs);
16514    glContext->traceGLMessage(&glmsg);
16515}
16516
16517void GLTrace_glGenRenderbuffersOES(GLsizei n, GLuint* renderbuffers) {
16518    GLMessage glmsg;
16519    GLTraceContext *glContext = getGLTraceContext();
16520
16521    glmsg.set_function(GLMessage::glGenRenderbuffersOES);
16522
16523    // copy argument n
16524    GLMessage_DataType *arg_n = glmsg.add_args();
16525    arg_n->set_isarray(false);
16526    arg_n->set_type(GLMessage::DataType::INT);
16527    arg_n->add_intvalue(n);
16528
16529    // copy argument renderbuffers
16530    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
16531    arg_renderbuffers->set_isarray(false);
16532    arg_renderbuffers->set_type(GLMessage::DataType::INT);
16533    arg_renderbuffers->add_intvalue((int)renderbuffers);
16534
16535    // call function
16536    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16537    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16538    glContext->hooks->gl.glGenRenderbuffersOES(n, renderbuffers);
16539    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16540    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16541
16542    void *pointerArgs[] = {
16543        (void *) renderbuffers,
16544    };
16545
16546    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16547                              threadStartTime, threadEndTime,
16548                              &glmsg, pointerArgs);
16549    glContext->traceGLMessage(&glmsg);
16550}
16551
16552void GLTrace_glRenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) {
16553    GLMessage glmsg;
16554    GLTraceContext *glContext = getGLTraceContext();
16555
16556    glmsg.set_function(GLMessage::glRenderbufferStorageOES);
16557
16558    // copy argument target
16559    GLMessage_DataType *arg_target = glmsg.add_args();
16560    arg_target->set_isarray(false);
16561    arg_target->set_type(GLMessage::DataType::ENUM);
16562    arg_target->add_intvalue((int)target);
16563
16564    // copy argument internalformat
16565    GLMessage_DataType *arg_internalformat = glmsg.add_args();
16566    arg_internalformat->set_isarray(false);
16567    arg_internalformat->set_type(GLMessage::DataType::ENUM);
16568    arg_internalformat->add_intvalue((int)internalformat);
16569
16570    // copy argument width
16571    GLMessage_DataType *arg_width = glmsg.add_args();
16572    arg_width->set_isarray(false);
16573    arg_width->set_type(GLMessage::DataType::INT);
16574    arg_width->add_intvalue(width);
16575
16576    // copy argument height
16577    GLMessage_DataType *arg_height = glmsg.add_args();
16578    arg_height->set_isarray(false);
16579    arg_height->set_type(GLMessage::DataType::INT);
16580    arg_height->add_intvalue(height);
16581
16582    // call function
16583    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16584    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16585    glContext->hooks->gl.glRenderbufferStorageOES(target, internalformat, width, height);
16586    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16587    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16588
16589    void *pointerArgs[] = {
16590    };
16591
16592    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16593                              threadStartTime, threadEndTime,
16594                              &glmsg, pointerArgs);
16595    glContext->traceGLMessage(&glmsg);
16596}
16597
16598void GLTrace_glGetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params) {
16599    GLMessage glmsg;
16600    GLTraceContext *glContext = getGLTraceContext();
16601
16602    glmsg.set_function(GLMessage::glGetRenderbufferParameterivOES);
16603
16604    // copy argument target
16605    GLMessage_DataType *arg_target = glmsg.add_args();
16606    arg_target->set_isarray(false);
16607    arg_target->set_type(GLMessage::DataType::ENUM);
16608    arg_target->add_intvalue((int)target);
16609
16610    // copy argument pname
16611    GLMessage_DataType *arg_pname = glmsg.add_args();
16612    arg_pname->set_isarray(false);
16613    arg_pname->set_type(GLMessage::DataType::ENUM);
16614    arg_pname->add_intvalue((int)pname);
16615
16616    // copy argument params
16617    GLMessage_DataType *arg_params = glmsg.add_args();
16618    arg_params->set_isarray(false);
16619    arg_params->set_type(GLMessage::DataType::INT);
16620    arg_params->add_intvalue((int)params);
16621
16622    // call function
16623    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16624    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16625    glContext->hooks->gl.glGetRenderbufferParameterivOES(target, pname, params);
16626    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16627    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16628
16629    void *pointerArgs[] = {
16630        (void *) params,
16631    };
16632
16633    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16634                              threadStartTime, threadEndTime,
16635                              &glmsg, pointerArgs);
16636    glContext->traceGLMessage(&glmsg);
16637}
16638
16639GLboolean GLTrace_glIsFramebufferOES(GLuint framebuffer) {
16640    GLMessage glmsg;
16641    GLTraceContext *glContext = getGLTraceContext();
16642
16643    glmsg.set_function(GLMessage::glIsFramebufferOES);
16644
16645    // copy argument framebuffer
16646    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
16647    arg_framebuffer->set_isarray(false);
16648    arg_framebuffer->set_type(GLMessage::DataType::INT);
16649    arg_framebuffer->add_intvalue(framebuffer);
16650
16651    // call function
16652    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16653    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16654    GLboolean retValue = glContext->hooks->gl.glIsFramebufferOES(framebuffer);
16655    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16656    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16657
16658    // set return value
16659    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
16660    rt->set_isarray(false);
16661    rt->set_type(GLMessage::DataType::BOOL);
16662    rt->add_boolvalue(retValue);
16663
16664    void *pointerArgs[] = {
16665    };
16666
16667    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16668                              threadStartTime, threadEndTime,
16669                              &glmsg, pointerArgs);
16670    glContext->traceGLMessage(&glmsg);
16671
16672    return retValue;
16673}
16674
16675void GLTrace_glBindFramebufferOES(GLenum target, GLuint framebuffer) {
16676    GLMessage glmsg;
16677    GLTraceContext *glContext = getGLTraceContext();
16678
16679    glmsg.set_function(GLMessage::glBindFramebufferOES);
16680
16681    // copy argument target
16682    GLMessage_DataType *arg_target = glmsg.add_args();
16683    arg_target->set_isarray(false);
16684    arg_target->set_type(GLMessage::DataType::ENUM);
16685    arg_target->add_intvalue((int)target);
16686
16687    // copy argument framebuffer
16688    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
16689    arg_framebuffer->set_isarray(false);
16690    arg_framebuffer->set_type(GLMessage::DataType::INT);
16691    arg_framebuffer->add_intvalue(framebuffer);
16692
16693    // call function
16694    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16695    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16696    glContext->hooks->gl.glBindFramebufferOES(target, framebuffer);
16697    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16698    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16699
16700    void *pointerArgs[] = {
16701    };
16702
16703    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16704                              threadStartTime, threadEndTime,
16705                              &glmsg, pointerArgs);
16706    glContext->traceGLMessage(&glmsg);
16707}
16708
16709void GLTrace_glDeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers) {
16710    GLMessage glmsg;
16711    GLTraceContext *glContext = getGLTraceContext();
16712
16713    glmsg.set_function(GLMessage::glDeleteFramebuffersOES);
16714
16715    // copy argument n
16716    GLMessage_DataType *arg_n = glmsg.add_args();
16717    arg_n->set_isarray(false);
16718    arg_n->set_type(GLMessage::DataType::INT);
16719    arg_n->add_intvalue(n);
16720
16721    // copy argument framebuffers
16722    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
16723    arg_framebuffers->set_isarray(false);
16724    arg_framebuffers->set_type(GLMessage::DataType::INT);
16725    arg_framebuffers->add_intvalue((int)framebuffers);
16726
16727    // call function
16728    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16729    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16730    glContext->hooks->gl.glDeleteFramebuffersOES(n, framebuffers);
16731    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16732    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16733
16734    void *pointerArgs[] = {
16735        (void *) framebuffers,
16736    };
16737
16738    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16739                              threadStartTime, threadEndTime,
16740                              &glmsg, pointerArgs);
16741    glContext->traceGLMessage(&glmsg);
16742}
16743
16744void GLTrace_glGenFramebuffersOES(GLsizei n, GLuint* framebuffers) {
16745    GLMessage glmsg;
16746    GLTraceContext *glContext = getGLTraceContext();
16747
16748    glmsg.set_function(GLMessage::glGenFramebuffersOES);
16749
16750    // copy argument n
16751    GLMessage_DataType *arg_n = glmsg.add_args();
16752    arg_n->set_isarray(false);
16753    arg_n->set_type(GLMessage::DataType::INT);
16754    arg_n->add_intvalue(n);
16755
16756    // copy argument framebuffers
16757    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
16758    arg_framebuffers->set_isarray(false);
16759    arg_framebuffers->set_type(GLMessage::DataType::INT);
16760    arg_framebuffers->add_intvalue((int)framebuffers);
16761
16762    // call function
16763    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16764    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16765    glContext->hooks->gl.glGenFramebuffersOES(n, framebuffers);
16766    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16767    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16768
16769    void *pointerArgs[] = {
16770        (void *) framebuffers,
16771    };
16772
16773    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16774                              threadStartTime, threadEndTime,
16775                              &glmsg, pointerArgs);
16776    glContext->traceGLMessage(&glmsg);
16777}
16778
16779GLenum GLTrace_glCheckFramebufferStatusOES(GLenum target) {
16780    GLMessage glmsg;
16781    GLTraceContext *glContext = getGLTraceContext();
16782
16783    glmsg.set_function(GLMessage::glCheckFramebufferStatusOES);
16784
16785    // copy argument target
16786    GLMessage_DataType *arg_target = glmsg.add_args();
16787    arg_target->set_isarray(false);
16788    arg_target->set_type(GLMessage::DataType::ENUM);
16789    arg_target->add_intvalue((int)target);
16790
16791    // call function
16792    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16793    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16794    GLenum retValue = glContext->hooks->gl.glCheckFramebufferStatusOES(target);
16795    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16796    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16797
16798    // set return value
16799    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
16800    rt->set_isarray(false);
16801    rt->set_type(GLMessage::DataType::ENUM);
16802    rt->add_intvalue((int)retValue);
16803
16804    void *pointerArgs[] = {
16805    };
16806
16807    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16808                              threadStartTime, threadEndTime,
16809                              &glmsg, pointerArgs);
16810    glContext->traceGLMessage(&glmsg);
16811
16812    return retValue;
16813}
16814
16815void GLTrace_glFramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) {
16816    GLMessage glmsg;
16817    GLTraceContext *glContext = getGLTraceContext();
16818
16819    glmsg.set_function(GLMessage::glFramebufferRenderbufferOES);
16820
16821    // copy argument target
16822    GLMessage_DataType *arg_target = glmsg.add_args();
16823    arg_target->set_isarray(false);
16824    arg_target->set_type(GLMessage::DataType::ENUM);
16825    arg_target->add_intvalue((int)target);
16826
16827    // copy argument attachment
16828    GLMessage_DataType *arg_attachment = glmsg.add_args();
16829    arg_attachment->set_isarray(false);
16830    arg_attachment->set_type(GLMessage::DataType::ENUM);
16831    arg_attachment->add_intvalue((int)attachment);
16832
16833    // copy argument renderbuffertarget
16834    GLMessage_DataType *arg_renderbuffertarget = glmsg.add_args();
16835    arg_renderbuffertarget->set_isarray(false);
16836    arg_renderbuffertarget->set_type(GLMessage::DataType::ENUM);
16837    arg_renderbuffertarget->add_intvalue((int)renderbuffertarget);
16838
16839    // copy argument renderbuffer
16840    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
16841    arg_renderbuffer->set_isarray(false);
16842    arg_renderbuffer->set_type(GLMessage::DataType::INT);
16843    arg_renderbuffer->add_intvalue(renderbuffer);
16844
16845    // call function
16846    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16847    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16848    glContext->hooks->gl.glFramebufferRenderbufferOES(target, attachment, renderbuffertarget, renderbuffer);
16849    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16850    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16851
16852    void *pointerArgs[] = {
16853    };
16854
16855    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16856                              threadStartTime, threadEndTime,
16857                              &glmsg, pointerArgs);
16858    glContext->traceGLMessage(&glmsg);
16859}
16860
16861void GLTrace_glFramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) {
16862    GLMessage glmsg;
16863    GLTraceContext *glContext = getGLTraceContext();
16864
16865    glmsg.set_function(GLMessage::glFramebufferTexture2DOES);
16866
16867    // copy argument target
16868    GLMessage_DataType *arg_target = glmsg.add_args();
16869    arg_target->set_isarray(false);
16870    arg_target->set_type(GLMessage::DataType::ENUM);
16871    arg_target->add_intvalue((int)target);
16872
16873    // copy argument attachment
16874    GLMessage_DataType *arg_attachment = glmsg.add_args();
16875    arg_attachment->set_isarray(false);
16876    arg_attachment->set_type(GLMessage::DataType::ENUM);
16877    arg_attachment->add_intvalue((int)attachment);
16878
16879    // copy argument textarget
16880    GLMessage_DataType *arg_textarget = glmsg.add_args();
16881    arg_textarget->set_isarray(false);
16882    arg_textarget->set_type(GLMessage::DataType::ENUM);
16883    arg_textarget->add_intvalue((int)textarget);
16884
16885    // copy argument texture
16886    GLMessage_DataType *arg_texture = glmsg.add_args();
16887    arg_texture->set_isarray(false);
16888    arg_texture->set_type(GLMessage::DataType::INT);
16889    arg_texture->add_intvalue(texture);
16890
16891    // copy argument level
16892    GLMessage_DataType *arg_level = glmsg.add_args();
16893    arg_level->set_isarray(false);
16894    arg_level->set_type(GLMessage::DataType::INT);
16895    arg_level->add_intvalue(level);
16896
16897    // call function
16898    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16899    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16900    glContext->hooks->gl.glFramebufferTexture2DOES(target, attachment, textarget, texture, level);
16901    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16902    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16903
16904    void *pointerArgs[] = {
16905    };
16906
16907    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16908                              threadStartTime, threadEndTime,
16909                              &glmsg, pointerArgs);
16910    glContext->traceGLMessage(&glmsg);
16911}
16912
16913void GLTrace_glGetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint* params) {
16914    GLMessage glmsg;
16915    GLTraceContext *glContext = getGLTraceContext();
16916
16917    glmsg.set_function(GLMessage::glGetFramebufferAttachmentParameterivOES);
16918
16919    // copy argument target
16920    GLMessage_DataType *arg_target = glmsg.add_args();
16921    arg_target->set_isarray(false);
16922    arg_target->set_type(GLMessage::DataType::ENUM);
16923    arg_target->add_intvalue((int)target);
16924
16925    // copy argument attachment
16926    GLMessage_DataType *arg_attachment = glmsg.add_args();
16927    arg_attachment->set_isarray(false);
16928    arg_attachment->set_type(GLMessage::DataType::ENUM);
16929    arg_attachment->add_intvalue((int)attachment);
16930
16931    // copy argument pname
16932    GLMessage_DataType *arg_pname = glmsg.add_args();
16933    arg_pname->set_isarray(false);
16934    arg_pname->set_type(GLMessage::DataType::ENUM);
16935    arg_pname->add_intvalue((int)pname);
16936
16937    // copy argument params
16938    GLMessage_DataType *arg_params = glmsg.add_args();
16939    arg_params->set_isarray(false);
16940    arg_params->set_type(GLMessage::DataType::INT);
16941    arg_params->add_intvalue((int)params);
16942
16943    // call function
16944    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16945    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16946    glContext->hooks->gl.glGetFramebufferAttachmentParameterivOES(target, attachment, pname, params);
16947    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16948    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16949
16950    void *pointerArgs[] = {
16951        (void *) params,
16952    };
16953
16954    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16955                              threadStartTime, threadEndTime,
16956                              &glmsg, pointerArgs);
16957    glContext->traceGLMessage(&glmsg);
16958}
16959
16960void GLTrace_glGenerateMipmapOES(GLenum target) {
16961    GLMessage glmsg;
16962    GLTraceContext *glContext = getGLTraceContext();
16963
16964    glmsg.set_function(GLMessage::glGenerateMipmapOES);
16965
16966    // copy argument target
16967    GLMessage_DataType *arg_target = glmsg.add_args();
16968    arg_target->set_isarray(false);
16969    arg_target->set_type(GLMessage::DataType::ENUM);
16970    arg_target->add_intvalue((int)target);
16971
16972    // call function
16973    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16974    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16975    glContext->hooks->gl.glGenerateMipmapOES(target);
16976    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16977    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16978
16979    void *pointerArgs[] = {
16980    };
16981
16982    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16983                              threadStartTime, threadEndTime,
16984                              &glmsg, pointerArgs);
16985    glContext->traceGLMessage(&glmsg);
16986}
16987
16988void GLTrace_glCurrentPaletteMatrixOES(GLuint matrixpaletteindex) {
16989    GLMessage glmsg;
16990    GLTraceContext *glContext = getGLTraceContext();
16991
16992    glmsg.set_function(GLMessage::glCurrentPaletteMatrixOES);
16993
16994    // copy argument matrixpaletteindex
16995    GLMessage_DataType *arg_matrixpaletteindex = glmsg.add_args();
16996    arg_matrixpaletteindex->set_isarray(false);
16997    arg_matrixpaletteindex->set_type(GLMessage::DataType::INT);
16998    arg_matrixpaletteindex->add_intvalue(matrixpaletteindex);
16999
17000    // call function
17001    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17002    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17003    glContext->hooks->gl.glCurrentPaletteMatrixOES(matrixpaletteindex);
17004    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17005    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17006
17007    void *pointerArgs[] = {
17008    };
17009
17010    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17011                              threadStartTime, threadEndTime,
17012                              &glmsg, pointerArgs);
17013    glContext->traceGLMessage(&glmsg);
17014}
17015
17016void GLTrace_glLoadPaletteFromModelViewMatrixOES(void) {
17017    GLMessage glmsg;
17018    GLTraceContext *glContext = getGLTraceContext();
17019
17020    glmsg.set_function(GLMessage::glLoadPaletteFromModelViewMatrixOES);
17021
17022    // call function
17023    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17024    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17025    glContext->hooks->gl.glLoadPaletteFromModelViewMatrixOES();
17026    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17027    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17028
17029    void *pointerArgs[] = {
17030    };
17031
17032    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17033                              threadStartTime, threadEndTime,
17034                              &glmsg, pointerArgs);
17035    glContext->traceGLMessage(&glmsg);
17036}
17037
17038void GLTrace_glMatrixIndexPointerOES(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
17039    GLMessage glmsg;
17040    GLTraceContext *glContext = getGLTraceContext();
17041
17042    glmsg.set_function(GLMessage::glMatrixIndexPointerOES);
17043
17044    // copy argument size
17045    GLMessage_DataType *arg_size = glmsg.add_args();
17046    arg_size->set_isarray(false);
17047    arg_size->set_type(GLMessage::DataType::INT);
17048    arg_size->add_intvalue(size);
17049
17050    // copy argument type
17051    GLMessage_DataType *arg_type = glmsg.add_args();
17052    arg_type->set_isarray(false);
17053    arg_type->set_type(GLMessage::DataType::ENUM);
17054    arg_type->add_intvalue((int)type);
17055
17056    // copy argument stride
17057    GLMessage_DataType *arg_stride = glmsg.add_args();
17058    arg_stride->set_isarray(false);
17059    arg_stride->set_type(GLMessage::DataType::INT);
17060    arg_stride->add_intvalue(stride);
17061
17062    // copy argument pointer
17063    GLMessage_DataType *arg_pointer = glmsg.add_args();
17064    arg_pointer->set_isarray(false);
17065    arg_pointer->set_type(GLMessage::DataType::INT);
17066    arg_pointer->add_intvalue((int)pointer);
17067
17068    // call function
17069    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17070    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17071    glContext->hooks->gl.glMatrixIndexPointerOES(size, type, stride, pointer);
17072    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17073    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17074
17075    void *pointerArgs[] = {
17076        (void *) pointer,
17077    };
17078
17079    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17080                              threadStartTime, threadEndTime,
17081                              &glmsg, pointerArgs);
17082    glContext->traceGLMessage(&glmsg);
17083}
17084
17085void GLTrace_glWeightPointerOES(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
17086    GLMessage glmsg;
17087    GLTraceContext *glContext = getGLTraceContext();
17088
17089    glmsg.set_function(GLMessage::glWeightPointerOES);
17090
17091    // copy argument size
17092    GLMessage_DataType *arg_size = glmsg.add_args();
17093    arg_size->set_isarray(false);
17094    arg_size->set_type(GLMessage::DataType::INT);
17095    arg_size->add_intvalue(size);
17096
17097    // copy argument type
17098    GLMessage_DataType *arg_type = glmsg.add_args();
17099    arg_type->set_isarray(false);
17100    arg_type->set_type(GLMessage::DataType::ENUM);
17101    arg_type->add_intvalue((int)type);
17102
17103    // copy argument stride
17104    GLMessage_DataType *arg_stride = glmsg.add_args();
17105    arg_stride->set_isarray(false);
17106    arg_stride->set_type(GLMessage::DataType::INT);
17107    arg_stride->add_intvalue(stride);
17108
17109    // copy argument pointer
17110    GLMessage_DataType *arg_pointer = glmsg.add_args();
17111    arg_pointer->set_isarray(false);
17112    arg_pointer->set_type(GLMessage::DataType::INT);
17113    arg_pointer->add_intvalue((int)pointer);
17114
17115    // call function
17116    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17117    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17118    glContext->hooks->gl.glWeightPointerOES(size, type, stride, pointer);
17119    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17120    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17121
17122    void *pointerArgs[] = {
17123        (void *) pointer,
17124    };
17125
17126    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17127                              threadStartTime, threadEndTime,
17128                              &glmsg, pointerArgs);
17129    glContext->traceGLMessage(&glmsg);
17130}
17131
17132GLbitfield GLTrace_glQueryMatrixxOES(GLfixed mantissa[16], GLint exponent[16]) {
17133    GLMessage glmsg;
17134    GLTraceContext *glContext = getGLTraceContext();
17135
17136    glmsg.set_function(GLMessage::glQueryMatrixxOES);
17137
17138    // copy argument mantissa
17139    GLMessage_DataType *arg_mantissa = glmsg.add_args();
17140    arg_mantissa->set_isarray(false);
17141    arg_mantissa->set_type(GLMessage::DataType::INT);
17142    arg_mantissa->add_intvalue((int)mantissa);
17143
17144    // copy argument exponent
17145    GLMessage_DataType *arg_exponent = glmsg.add_args();
17146    arg_exponent->set_isarray(false);
17147    arg_exponent->set_type(GLMessage::DataType::INT);
17148    arg_exponent->add_intvalue((int)exponent);
17149
17150    // call function
17151    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17152    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17153    GLbitfield retValue = glContext->hooks->gl.glQueryMatrixxOES(mantissa, exponent);
17154    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17155    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17156
17157    // set return value
17158    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
17159    rt->set_isarray(false);
17160    rt->set_type(GLMessage::DataType::INT);
17161    rt->add_intvalue(retValue);
17162
17163    void *pointerArgs[] = {
17164        (void *) mantissa,
17165        (void *) exponent,
17166    };
17167
17168    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17169                              threadStartTime, threadEndTime,
17170                              &glmsg, pointerArgs);
17171    glContext->traceGLMessage(&glmsg);
17172
17173    return retValue;
17174}
17175
17176void GLTrace_glDepthRangefOES(GLclampf zNear, GLclampf zFar) {
17177    GLMessage glmsg;
17178    GLTraceContext *glContext = getGLTraceContext();
17179
17180    glmsg.set_function(GLMessage::glDepthRangefOES);
17181
17182    // copy argument zNear
17183    GLMessage_DataType *arg_zNear = glmsg.add_args();
17184    arg_zNear->set_isarray(false);
17185    arg_zNear->set_type(GLMessage::DataType::FLOAT);
17186    arg_zNear->add_floatvalue(zNear);
17187
17188    // copy argument zFar
17189    GLMessage_DataType *arg_zFar = glmsg.add_args();
17190    arg_zFar->set_isarray(false);
17191    arg_zFar->set_type(GLMessage::DataType::FLOAT);
17192    arg_zFar->add_floatvalue(zFar);
17193
17194    // call function
17195    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17196    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17197    glContext->hooks->gl.glDepthRangefOES(zNear, zFar);
17198    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17199    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17200
17201    void *pointerArgs[] = {
17202    };
17203
17204    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17205                              threadStartTime, threadEndTime,
17206                              &glmsg, pointerArgs);
17207    glContext->traceGLMessage(&glmsg);
17208}
17209
17210void GLTrace_glFrustumfOES(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
17211    GLMessage glmsg;
17212    GLTraceContext *glContext = getGLTraceContext();
17213
17214    glmsg.set_function(GLMessage::glFrustumfOES);
17215
17216    // copy argument left
17217    GLMessage_DataType *arg_left = glmsg.add_args();
17218    arg_left->set_isarray(false);
17219    arg_left->set_type(GLMessage::DataType::FLOAT);
17220    arg_left->add_floatvalue(left);
17221
17222    // copy argument right
17223    GLMessage_DataType *arg_right = glmsg.add_args();
17224    arg_right->set_isarray(false);
17225    arg_right->set_type(GLMessage::DataType::FLOAT);
17226    arg_right->add_floatvalue(right);
17227
17228    // copy argument bottom
17229    GLMessage_DataType *arg_bottom = glmsg.add_args();
17230    arg_bottom->set_isarray(false);
17231    arg_bottom->set_type(GLMessage::DataType::FLOAT);
17232    arg_bottom->add_floatvalue(bottom);
17233
17234    // copy argument top
17235    GLMessage_DataType *arg_top = glmsg.add_args();
17236    arg_top->set_isarray(false);
17237    arg_top->set_type(GLMessage::DataType::FLOAT);
17238    arg_top->add_floatvalue(top);
17239
17240    // copy argument zNear
17241    GLMessage_DataType *arg_zNear = glmsg.add_args();
17242    arg_zNear->set_isarray(false);
17243    arg_zNear->set_type(GLMessage::DataType::FLOAT);
17244    arg_zNear->add_floatvalue(zNear);
17245
17246    // copy argument zFar
17247    GLMessage_DataType *arg_zFar = glmsg.add_args();
17248    arg_zFar->set_isarray(false);
17249    arg_zFar->set_type(GLMessage::DataType::FLOAT);
17250    arg_zFar->add_floatvalue(zFar);
17251
17252    // call function
17253    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17254    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17255    glContext->hooks->gl.glFrustumfOES(left, right, bottom, top, zNear, zFar);
17256    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17257    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17258
17259    void *pointerArgs[] = {
17260    };
17261
17262    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17263                              threadStartTime, threadEndTime,
17264                              &glmsg, pointerArgs);
17265    glContext->traceGLMessage(&glmsg);
17266}
17267
17268void GLTrace_glOrthofOES(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
17269    GLMessage glmsg;
17270    GLTraceContext *glContext = getGLTraceContext();
17271
17272    glmsg.set_function(GLMessage::glOrthofOES);
17273
17274    // copy argument left
17275    GLMessage_DataType *arg_left = glmsg.add_args();
17276    arg_left->set_isarray(false);
17277    arg_left->set_type(GLMessage::DataType::FLOAT);
17278    arg_left->add_floatvalue(left);
17279
17280    // copy argument right
17281    GLMessage_DataType *arg_right = glmsg.add_args();
17282    arg_right->set_isarray(false);
17283    arg_right->set_type(GLMessage::DataType::FLOAT);
17284    arg_right->add_floatvalue(right);
17285
17286    // copy argument bottom
17287    GLMessage_DataType *arg_bottom = glmsg.add_args();
17288    arg_bottom->set_isarray(false);
17289    arg_bottom->set_type(GLMessage::DataType::FLOAT);
17290    arg_bottom->add_floatvalue(bottom);
17291
17292    // copy argument top
17293    GLMessage_DataType *arg_top = glmsg.add_args();
17294    arg_top->set_isarray(false);
17295    arg_top->set_type(GLMessage::DataType::FLOAT);
17296    arg_top->add_floatvalue(top);
17297
17298    // copy argument zNear
17299    GLMessage_DataType *arg_zNear = glmsg.add_args();
17300    arg_zNear->set_isarray(false);
17301    arg_zNear->set_type(GLMessage::DataType::FLOAT);
17302    arg_zNear->add_floatvalue(zNear);
17303
17304    // copy argument zFar
17305    GLMessage_DataType *arg_zFar = glmsg.add_args();
17306    arg_zFar->set_isarray(false);
17307    arg_zFar->set_type(GLMessage::DataType::FLOAT);
17308    arg_zFar->add_floatvalue(zFar);
17309
17310    // call function
17311    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17312    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17313    glContext->hooks->gl.glOrthofOES(left, right, bottom, top, zNear, zFar);
17314    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17315    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17316
17317    void *pointerArgs[] = {
17318    };
17319
17320    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17321                              threadStartTime, threadEndTime,
17322                              &glmsg, pointerArgs);
17323    glContext->traceGLMessage(&glmsg);
17324}
17325
17326void GLTrace_glClipPlanefOES(GLenum plane, const GLfloat *equation) {
17327    GLMessage glmsg;
17328    GLTraceContext *glContext = getGLTraceContext();
17329
17330    glmsg.set_function(GLMessage::glClipPlanefOES);
17331
17332    // copy argument plane
17333    GLMessage_DataType *arg_plane = glmsg.add_args();
17334    arg_plane->set_isarray(false);
17335    arg_plane->set_type(GLMessage::DataType::ENUM);
17336    arg_plane->add_intvalue((int)plane);
17337
17338    // copy argument equation
17339    GLMessage_DataType *arg_equation = glmsg.add_args();
17340    arg_equation->set_isarray(false);
17341    arg_equation->set_type(GLMessage::DataType::INT);
17342    arg_equation->add_intvalue((int)equation);
17343
17344    // call function
17345    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17346    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17347    glContext->hooks->gl.glClipPlanefOES(plane, equation);
17348    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17349    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17350
17351    void *pointerArgs[] = {
17352        (void *) equation,
17353    };
17354
17355    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17356                              threadStartTime, threadEndTime,
17357                              &glmsg, pointerArgs);
17358    glContext->traceGLMessage(&glmsg);
17359}
17360
17361void GLTrace_glGetClipPlanefOES(GLenum pname, GLfloat eqn[4]) {
17362    GLMessage glmsg;
17363    GLTraceContext *glContext = getGLTraceContext();
17364
17365    glmsg.set_function(GLMessage::glGetClipPlanefOES);
17366
17367    // copy argument pname
17368    GLMessage_DataType *arg_pname = glmsg.add_args();
17369    arg_pname->set_isarray(false);
17370    arg_pname->set_type(GLMessage::DataType::ENUM);
17371    arg_pname->add_intvalue((int)pname);
17372
17373    // copy argument eqn
17374    GLMessage_DataType *arg_eqn = glmsg.add_args();
17375    arg_eqn->set_isarray(false);
17376    arg_eqn->set_type(GLMessage::DataType::INT);
17377    arg_eqn->add_intvalue((int)eqn);
17378
17379    // call function
17380    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17381    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17382    glContext->hooks->gl.glGetClipPlanefOES(pname, eqn);
17383    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17384    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17385
17386    void *pointerArgs[] = {
17387        (void *) eqn,
17388    };
17389
17390    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17391                              threadStartTime, threadEndTime,
17392                              &glmsg, pointerArgs);
17393    glContext->traceGLMessage(&glmsg);
17394}
17395
17396void GLTrace_glClearDepthfOES(GLclampf depth) {
17397    GLMessage glmsg;
17398    GLTraceContext *glContext = getGLTraceContext();
17399
17400    glmsg.set_function(GLMessage::glClearDepthfOES);
17401
17402    // copy argument depth
17403    GLMessage_DataType *arg_depth = glmsg.add_args();
17404    arg_depth->set_isarray(false);
17405    arg_depth->set_type(GLMessage::DataType::FLOAT);
17406    arg_depth->add_floatvalue(depth);
17407
17408    // call function
17409    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17410    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17411    glContext->hooks->gl.glClearDepthfOES(depth);
17412    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17413    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17414
17415    void *pointerArgs[] = {
17416    };
17417
17418    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17419                              threadStartTime, threadEndTime,
17420                              &glmsg, pointerArgs);
17421    glContext->traceGLMessage(&glmsg);
17422}
17423
17424void GLTrace_glTexGenfOES(GLenum coord, GLenum pname, GLfloat param) {
17425    GLMessage glmsg;
17426    GLTraceContext *glContext = getGLTraceContext();
17427
17428    glmsg.set_function(GLMessage::glTexGenfOES);
17429
17430    // copy argument coord
17431    GLMessage_DataType *arg_coord = glmsg.add_args();
17432    arg_coord->set_isarray(false);
17433    arg_coord->set_type(GLMessage::DataType::ENUM);
17434    arg_coord->add_intvalue((int)coord);
17435
17436    // copy argument pname
17437    GLMessage_DataType *arg_pname = glmsg.add_args();
17438    arg_pname->set_isarray(false);
17439    arg_pname->set_type(GLMessage::DataType::ENUM);
17440    arg_pname->add_intvalue((int)pname);
17441
17442    // copy argument param
17443    GLMessage_DataType *arg_param = glmsg.add_args();
17444    arg_param->set_isarray(false);
17445    arg_param->set_type(GLMessage::DataType::FLOAT);
17446    arg_param->add_floatvalue(param);
17447
17448    // call function
17449    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17450    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17451    glContext->hooks->gl.glTexGenfOES(coord, pname, param);
17452    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17453    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17454
17455    void *pointerArgs[] = {
17456    };
17457
17458    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17459                              threadStartTime, threadEndTime,
17460                              &glmsg, pointerArgs);
17461    glContext->traceGLMessage(&glmsg);
17462}
17463
17464void GLTrace_glTexGenfvOES(GLenum coord, GLenum pname, const GLfloat *params) {
17465    GLMessage glmsg;
17466    GLTraceContext *glContext = getGLTraceContext();
17467
17468    glmsg.set_function(GLMessage::glTexGenfvOES);
17469
17470    // copy argument coord
17471    GLMessage_DataType *arg_coord = glmsg.add_args();
17472    arg_coord->set_isarray(false);
17473    arg_coord->set_type(GLMessage::DataType::ENUM);
17474    arg_coord->add_intvalue((int)coord);
17475
17476    // copy argument pname
17477    GLMessage_DataType *arg_pname = glmsg.add_args();
17478    arg_pname->set_isarray(false);
17479    arg_pname->set_type(GLMessage::DataType::ENUM);
17480    arg_pname->add_intvalue((int)pname);
17481
17482    // copy argument params
17483    GLMessage_DataType *arg_params = glmsg.add_args();
17484    arg_params->set_isarray(false);
17485    arg_params->set_type(GLMessage::DataType::INT);
17486    arg_params->add_intvalue((int)params);
17487
17488    // call function
17489    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17490    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17491    glContext->hooks->gl.glTexGenfvOES(coord, pname, params);
17492    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17493    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17494
17495    void *pointerArgs[] = {
17496        (void *) params,
17497    };
17498
17499    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17500                              threadStartTime, threadEndTime,
17501                              &glmsg, pointerArgs);
17502    glContext->traceGLMessage(&glmsg);
17503}
17504
17505void GLTrace_glTexGeniOES(GLenum coord, GLenum pname, GLint param) {
17506    GLMessage glmsg;
17507    GLTraceContext *glContext = getGLTraceContext();
17508
17509    glmsg.set_function(GLMessage::glTexGeniOES);
17510
17511    // copy argument coord
17512    GLMessage_DataType *arg_coord = glmsg.add_args();
17513    arg_coord->set_isarray(false);
17514    arg_coord->set_type(GLMessage::DataType::ENUM);
17515    arg_coord->add_intvalue((int)coord);
17516
17517    // copy argument pname
17518    GLMessage_DataType *arg_pname = glmsg.add_args();
17519    arg_pname->set_isarray(false);
17520    arg_pname->set_type(GLMessage::DataType::ENUM);
17521    arg_pname->add_intvalue((int)pname);
17522
17523    // copy argument param
17524    GLMessage_DataType *arg_param = glmsg.add_args();
17525    arg_param->set_isarray(false);
17526    arg_param->set_type(GLMessage::DataType::INT);
17527    arg_param->add_intvalue(param);
17528
17529    // call function
17530    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17531    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17532    glContext->hooks->gl.glTexGeniOES(coord, pname, param);
17533    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17534    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17535
17536    void *pointerArgs[] = {
17537    };
17538
17539    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17540                              threadStartTime, threadEndTime,
17541                              &glmsg, pointerArgs);
17542    glContext->traceGLMessage(&glmsg);
17543}
17544
17545void GLTrace_glTexGenivOES(GLenum coord, GLenum pname, const GLint *params) {
17546    GLMessage glmsg;
17547    GLTraceContext *glContext = getGLTraceContext();
17548
17549    glmsg.set_function(GLMessage::glTexGenivOES);
17550
17551    // copy argument coord
17552    GLMessage_DataType *arg_coord = glmsg.add_args();
17553    arg_coord->set_isarray(false);
17554    arg_coord->set_type(GLMessage::DataType::ENUM);
17555    arg_coord->add_intvalue((int)coord);
17556
17557    // copy argument pname
17558    GLMessage_DataType *arg_pname = glmsg.add_args();
17559    arg_pname->set_isarray(false);
17560    arg_pname->set_type(GLMessage::DataType::ENUM);
17561    arg_pname->add_intvalue((int)pname);
17562
17563    // copy argument params
17564    GLMessage_DataType *arg_params = glmsg.add_args();
17565    arg_params->set_isarray(false);
17566    arg_params->set_type(GLMessage::DataType::INT);
17567    arg_params->add_intvalue((int)params);
17568
17569    // call function
17570    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17571    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17572    glContext->hooks->gl.glTexGenivOES(coord, pname, params);
17573    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17574    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17575
17576    void *pointerArgs[] = {
17577        (void *) params,
17578    };
17579
17580    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17581                              threadStartTime, threadEndTime,
17582                              &glmsg, pointerArgs);
17583    glContext->traceGLMessage(&glmsg);
17584}
17585
17586void GLTrace_glTexGenxOES(GLenum coord, GLenum pname, GLfixed param) {
17587    GLMessage glmsg;
17588    GLTraceContext *glContext = getGLTraceContext();
17589
17590    glmsg.set_function(GLMessage::glTexGenxOES);
17591
17592    // copy argument coord
17593    GLMessage_DataType *arg_coord = glmsg.add_args();
17594    arg_coord->set_isarray(false);
17595    arg_coord->set_type(GLMessage::DataType::ENUM);
17596    arg_coord->add_intvalue((int)coord);
17597
17598    // copy argument pname
17599    GLMessage_DataType *arg_pname = glmsg.add_args();
17600    arg_pname->set_isarray(false);
17601    arg_pname->set_type(GLMessage::DataType::ENUM);
17602    arg_pname->add_intvalue((int)pname);
17603
17604    // copy argument param
17605    GLMessage_DataType *arg_param = glmsg.add_args();
17606    arg_param->set_isarray(false);
17607    arg_param->set_type(GLMessage::DataType::INT);
17608    arg_param->add_intvalue(param);
17609
17610    // call function
17611    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17612    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17613    glContext->hooks->gl.glTexGenxOES(coord, pname, param);
17614    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17615    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17616
17617    void *pointerArgs[] = {
17618    };
17619
17620    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17621                              threadStartTime, threadEndTime,
17622                              &glmsg, pointerArgs);
17623    glContext->traceGLMessage(&glmsg);
17624}
17625
17626void GLTrace_glTexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params) {
17627    GLMessage glmsg;
17628    GLTraceContext *glContext = getGLTraceContext();
17629
17630    glmsg.set_function(GLMessage::glTexGenxvOES);
17631
17632    // copy argument coord
17633    GLMessage_DataType *arg_coord = glmsg.add_args();
17634    arg_coord->set_isarray(false);
17635    arg_coord->set_type(GLMessage::DataType::ENUM);
17636    arg_coord->add_intvalue((int)coord);
17637
17638    // copy argument pname
17639    GLMessage_DataType *arg_pname = glmsg.add_args();
17640    arg_pname->set_isarray(false);
17641    arg_pname->set_type(GLMessage::DataType::ENUM);
17642    arg_pname->add_intvalue((int)pname);
17643
17644    // copy argument params
17645    GLMessage_DataType *arg_params = glmsg.add_args();
17646    arg_params->set_isarray(false);
17647    arg_params->set_type(GLMessage::DataType::INT);
17648    arg_params->add_intvalue((int)params);
17649
17650    // call function
17651    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17652    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17653    glContext->hooks->gl.glTexGenxvOES(coord, pname, params);
17654    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17655    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17656
17657    void *pointerArgs[] = {
17658        (void *) params,
17659    };
17660
17661    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17662                              threadStartTime, threadEndTime,
17663                              &glmsg, pointerArgs);
17664    glContext->traceGLMessage(&glmsg);
17665}
17666
17667void GLTrace_glGetTexGenfvOES(GLenum coord, GLenum pname, GLfloat *params) {
17668    GLMessage glmsg;
17669    GLTraceContext *glContext = getGLTraceContext();
17670
17671    glmsg.set_function(GLMessage::glGetTexGenfvOES);
17672
17673    // copy argument coord
17674    GLMessage_DataType *arg_coord = glmsg.add_args();
17675    arg_coord->set_isarray(false);
17676    arg_coord->set_type(GLMessage::DataType::ENUM);
17677    arg_coord->add_intvalue((int)coord);
17678
17679    // copy argument pname
17680    GLMessage_DataType *arg_pname = glmsg.add_args();
17681    arg_pname->set_isarray(false);
17682    arg_pname->set_type(GLMessage::DataType::ENUM);
17683    arg_pname->add_intvalue((int)pname);
17684
17685    // copy argument params
17686    GLMessage_DataType *arg_params = glmsg.add_args();
17687    arg_params->set_isarray(false);
17688    arg_params->set_type(GLMessage::DataType::INT);
17689    arg_params->add_intvalue((int)params);
17690
17691    // call function
17692    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17693    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17694    glContext->hooks->gl.glGetTexGenfvOES(coord, pname, params);
17695    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17696    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17697
17698    void *pointerArgs[] = {
17699        (void *) params,
17700    };
17701
17702    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17703                              threadStartTime, threadEndTime,
17704                              &glmsg, pointerArgs);
17705    glContext->traceGLMessage(&glmsg);
17706}
17707
17708void GLTrace_glGetTexGenivOES(GLenum coord, GLenum pname, GLint *params) {
17709    GLMessage glmsg;
17710    GLTraceContext *glContext = getGLTraceContext();
17711
17712    glmsg.set_function(GLMessage::glGetTexGenivOES);
17713
17714    // copy argument coord
17715    GLMessage_DataType *arg_coord = glmsg.add_args();
17716    arg_coord->set_isarray(false);
17717    arg_coord->set_type(GLMessage::DataType::ENUM);
17718    arg_coord->add_intvalue((int)coord);
17719
17720    // copy argument pname
17721    GLMessage_DataType *arg_pname = glmsg.add_args();
17722    arg_pname->set_isarray(false);
17723    arg_pname->set_type(GLMessage::DataType::ENUM);
17724    arg_pname->add_intvalue((int)pname);
17725
17726    // copy argument params
17727    GLMessage_DataType *arg_params = glmsg.add_args();
17728    arg_params->set_isarray(false);
17729    arg_params->set_type(GLMessage::DataType::INT);
17730    arg_params->add_intvalue((int)params);
17731
17732    // call function
17733    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17734    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17735    glContext->hooks->gl.glGetTexGenivOES(coord, pname, params);
17736    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17737    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17738
17739    void *pointerArgs[] = {
17740        (void *) params,
17741    };
17742
17743    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17744                              threadStartTime, threadEndTime,
17745                              &glmsg, pointerArgs);
17746    glContext->traceGLMessage(&glmsg);
17747}
17748
17749void GLTrace_glGetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params) {
17750    GLMessage glmsg;
17751    GLTraceContext *glContext = getGLTraceContext();
17752
17753    glmsg.set_function(GLMessage::glGetTexGenxvOES);
17754
17755    // copy argument coord
17756    GLMessage_DataType *arg_coord = glmsg.add_args();
17757    arg_coord->set_isarray(false);
17758    arg_coord->set_type(GLMessage::DataType::ENUM);
17759    arg_coord->add_intvalue((int)coord);
17760
17761    // copy argument pname
17762    GLMessage_DataType *arg_pname = glmsg.add_args();
17763    arg_pname->set_isarray(false);
17764    arg_pname->set_type(GLMessage::DataType::ENUM);
17765    arg_pname->add_intvalue((int)pname);
17766
17767    // copy argument params
17768    GLMessage_DataType *arg_params = glmsg.add_args();
17769    arg_params->set_isarray(false);
17770    arg_params->set_type(GLMessage::DataType::INT);
17771    arg_params->add_intvalue((int)params);
17772
17773    // call function
17774    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17775    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17776    glContext->hooks->gl.glGetTexGenxvOES(coord, pname, params);
17777    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17778    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17779
17780    void *pointerArgs[] = {
17781        (void *) params,
17782    };
17783
17784    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17785                              threadStartTime, threadEndTime,
17786                              &glmsg, pointerArgs);
17787    glContext->traceGLMessage(&glmsg);
17788}
17789
17790void GLTrace_glClipPlanefIMG(GLenum p, const GLfloat *eqn) {
17791    GLMessage glmsg;
17792    GLTraceContext *glContext = getGLTraceContext();
17793
17794    glmsg.set_function(GLMessage::glClipPlanefIMG);
17795
17796    // copy argument p
17797    GLMessage_DataType *arg_p = glmsg.add_args();
17798    arg_p->set_isarray(false);
17799    arg_p->set_type(GLMessage::DataType::ENUM);
17800    arg_p->add_intvalue((int)p);
17801
17802    // copy argument eqn
17803    GLMessage_DataType *arg_eqn = glmsg.add_args();
17804    arg_eqn->set_isarray(false);
17805    arg_eqn->set_type(GLMessage::DataType::INT);
17806    arg_eqn->add_intvalue((int)eqn);
17807
17808    // call function
17809    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17810    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17811    glContext->hooks->gl.glClipPlanefIMG(p, eqn);
17812    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17813    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17814
17815    void *pointerArgs[] = {
17816        (void *) eqn,
17817    };
17818
17819    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17820                              threadStartTime, threadEndTime,
17821                              &glmsg, pointerArgs);
17822    glContext->traceGLMessage(&glmsg);
17823}
17824
17825void GLTrace_glClipPlanexIMG(GLenum p, const GLfixed *eqn) {
17826    GLMessage glmsg;
17827    GLTraceContext *glContext = getGLTraceContext();
17828
17829    glmsg.set_function(GLMessage::glClipPlanexIMG);
17830
17831    // copy argument p
17832    GLMessage_DataType *arg_p = glmsg.add_args();
17833    arg_p->set_isarray(false);
17834    arg_p->set_type(GLMessage::DataType::ENUM);
17835    arg_p->add_intvalue((int)p);
17836
17837    // copy argument eqn
17838    GLMessage_DataType *arg_eqn = glmsg.add_args();
17839    arg_eqn->set_isarray(false);
17840    arg_eqn->set_type(GLMessage::DataType::INT);
17841    arg_eqn->add_intvalue((int)eqn);
17842
17843    // call function
17844    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17845    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17846    glContext->hooks->gl.glClipPlanexIMG(p, eqn);
17847    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17848    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17849
17850    void *pointerArgs[] = {
17851        (void *) eqn,
17852    };
17853
17854    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17855                              threadStartTime, threadEndTime,
17856                              &glmsg, pointerArgs);
17857    glContext->traceGLMessage(&glmsg);
17858}
17859
17860
17861}; // namespace gltrace
17862}; // namespace android
17863