gltrace_api.cpp revision 3703f7f014846b8bf83e08a8bf25450dd0dcd7af
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 <GLES3/gl3.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::INT64);
117    arg_name->add_int64value((uintptr_t)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(GLfloat red, GLfloat green, GLfloat blue, GLfloat 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 sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) {
415    GLMessage glmsg;
416    GLTraceContext *glContext = getGLTraceContext();
417
418    glmsg.set_function(GLMessage::glBlendFuncSeparate);
419
420    // copy argument sfactorRGB
421    GLMessage_DataType *arg_sfactorRGB = glmsg.add_args();
422    arg_sfactorRGB->set_isarray(false);
423    arg_sfactorRGB->set_type(GLMessage::DataType::ENUM);
424    arg_sfactorRGB->add_intvalue((int)sfactorRGB);
425
426    // copy argument dfactorRGB
427    GLMessage_DataType *arg_dfactorRGB = glmsg.add_args();
428    arg_dfactorRGB->set_isarray(false);
429    arg_dfactorRGB->set_type(GLMessage::DataType::ENUM);
430    arg_dfactorRGB->add_intvalue((int)dfactorRGB);
431
432    // copy argument sfactorAlpha
433    GLMessage_DataType *arg_sfactorAlpha = glmsg.add_args();
434    arg_sfactorAlpha->set_isarray(false);
435    arg_sfactorAlpha->set_type(GLMessage::DataType::ENUM);
436    arg_sfactorAlpha->add_intvalue((int)sfactorAlpha);
437
438    // copy argument dfactorAlpha
439    GLMessage_DataType *arg_dfactorAlpha = glmsg.add_args();
440    arg_dfactorAlpha->set_isarray(false);
441    arg_dfactorAlpha->set_type(GLMessage::DataType::ENUM);
442    arg_dfactorAlpha->add_intvalue((int)dfactorAlpha);
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(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
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 void * 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::INT64);
482    arg_data->add_int64value((uintptr_t)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 void * 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::INT64);
535    arg_data->add_int64value((uintptr_t)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(GLfloat red, GLfloat green, GLfloat blue, GLfloat 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(GLfloat d) {
665    GLMessage glmsg;
666    GLTraceContext *glContext = getGLTraceContext();
667
668    glmsg.set_function(GLMessage::glClearDepthf);
669
670    // copy argument d
671    GLMessage_DataType *arg_d = glmsg.add_args();
672    arg_d->set_isarray(false);
673    arg_d->set_type(GLMessage::DataType::FLOAT);
674    arg_d->add_floatvalue(d);
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(d);
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 void * 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::INT64);
846    arg_data->add_int64value((uintptr_t)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 void * 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::INT64);
923    arg_data->add_int64value((uintptr_t)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::INT64);
1192    arg_buffers->add_int64value((uintptr_t)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::INT64);
1227    arg_framebuffers->add_int64value((uintptr_t)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::INT64);
1290    arg_renderbuffers->add_int64value((uintptr_t)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::INT64);
1353    arg_textures->add_int64value((uintptr_t)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(GLfloat n, GLfloat f) {
1429    GLMessage glmsg;
1430    GLTraceContext *glContext = getGLTraceContext();
1431
1432    glmsg.set_function(GLMessage::glDepthRangef);
1433
1434    // copy argument n
1435    GLMessage_DataType *arg_n = glmsg.add_args();
1436    arg_n->set_isarray(false);
1437    arg_n->set_type(GLMessage::DataType::FLOAT);
1438    arg_n->add_floatvalue(n);
1439
1440    // copy argument f
1441    GLMessage_DataType *arg_f = glmsg.add_args();
1442    arg_f->set_isarray(false);
1443    arg_f->set_type(GLMessage::DataType::FLOAT);
1444    arg_f->add_floatvalue(f);
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(n, f);
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 void * 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::INT64);
1620    arg_indices->add_int64value((uintptr_t)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::INT64);
1881    arg_buffers->add_int64value((uintptr_t)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::INT64);
1944    arg_framebuffers->add_int64value((uintptr_t)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::INT64);
1979    arg_renderbuffers->add_int64value((uintptr_t)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::INT64);
2014    arg_textures->add_int64value((uintptr_t)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::INT64);
2061    arg_length->add_int64value((uintptr_t)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::INT64);
2067    arg_size->add_int64value((uintptr_t)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::INT64);
2073    arg_type->add_int64value((uintptr_t)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::INT64);
2079    arg_name->add_int64value((uintptr_t)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::INT64);
2129    arg_length->add_int64value((uintptr_t)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::INT64);
2135    arg_size->add_int64value((uintptr_t)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::INT64);
2141    arg_type->add_int64value((uintptr_t)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::INT64);
2147    arg_name->add_int64value((uintptr_t)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::INT64);
2191    arg_count->add_int64value((uintptr_t)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::INT64);
2197    arg_shaders->add_int64value((uintptr_t)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::INT64);
2233    arg_name->add_int64value((uintptr_t)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 * data) {
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 data
2273    GLMessage_DataType *arg_data = glmsg.add_args();
2274    arg_data->set_isarray(false);
2275    arg_data->set_type(GLMessage::DataType::INT64);
2276    arg_data->add_int64value((uintptr_t)data);
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, data);
2282    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2283    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2284
2285    void *pointerArgs[] = {
2286        (void *) data,
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::INT64);
2317    arg_params->add_int64value((uintptr_t)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 * data) {
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 data
2379    GLMessage_DataType *arg_data = glmsg.add_args();
2380    arg_data->set_isarray(false);
2381    arg_data->set_type(GLMessage::DataType::INT64);
2382    arg_data->add_int64value((uintptr_t)data);
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, data);
2388    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2389    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2390
2391    void *pointerArgs[] = {
2392        (void *) data,
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::INT64);
2429    arg_params->add_int64value((uintptr_t)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 * data) {
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 data
2461    GLMessage_DataType *arg_data = glmsg.add_args();
2462    arg_data->set_isarray(false);
2463    arg_data->set_type(GLMessage::DataType::INT64);
2464    arg_data->add_int64value((uintptr_t)data);
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, data);
2470    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2471    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2472
2473    void *pointerArgs[] = {
2474        (void *) data,
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::INT64);
2505    arg_params->add_int64value((uintptr_t)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::INT64);
2546    arg_length->add_int64value((uintptr_t)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::INT64);
2552    arg_infoLog->add_int64value((uintptr_t)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::INT64);
2594    arg_params->add_int64value((uintptr_t)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::INT64);
2635    arg_params->add_int64value((uintptr_t)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::INT64);
2676    arg_length->add_int64value((uintptr_t)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::INT64);
2682    arg_infoLog->add_int64value((uintptr_t)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::INT64);
2724    arg_range->add_int64value((uintptr_t)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::INT64);
2730    arg_precision->add_int64value((uintptr_t)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::INT64);
2772    arg_length->add_int64value((uintptr_t)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::INT64);
2778    arg_source->add_int64value((uintptr_t)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::INT64);
2821    rt->add_int64value((uintptr_t)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::INT64);
2857    arg_params->add_int64value((uintptr_t)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::INT64);
2898    arg_params->add_int64value((uintptr_t)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::INT64);
2939    arg_params->add_int64value((uintptr_t)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::INT64);
2980    arg_params->add_int64value((uintptr_t)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::INT64);
3015    arg_name->add_int64value((uintptr_t)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::INT64);
3064    arg_params->add_int64value((uintptr_t)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::INT64);
3105    arg_params->add_int64value((uintptr_t)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, void ** 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::INT64);
3146    arg_pointer->add_int64value((uintptr_t)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, void * 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::INT64);
3621    arg_pixels->add_int64value((uintptr_t)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(GLfloat 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 count, const GLuint * shaders, GLenum binaryformat, const void * binary, GLsizei length) {
3789    GLMessage glmsg;
3790    GLTraceContext *glContext = getGLTraceContext();
3791
3792    glmsg.set_function(GLMessage::glShaderBinary);
3793
3794    // copy argument count
3795    GLMessage_DataType *arg_count = glmsg.add_args();
3796    arg_count->set_isarray(false);
3797    arg_count->set_type(GLMessage::DataType::INT);
3798    arg_count->add_intvalue(count);
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::INT64);
3804    arg_shaders->add_int64value((uintptr_t)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::INT64);
3816    arg_binary->add_int64value((uintptr_t)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(count, 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::INT64);
3864    arg_string->add_int64value((uintptr_t)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::INT64);
3870    arg_length->add_int64value((uintptr_t)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 sfail, GLenum dpfail, GLenum dppass) {
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 sfail
4091    GLMessage_DataType *arg_sfail = glmsg.add_args();
4092    arg_sfail->set_isarray(false);
4093    arg_sfail->set_type(GLMessage::DataType::ENUM);
4094    arg_sfail->add_intvalue((int)sfail);
4095
4096    // copy argument dpfail
4097    GLMessage_DataType *arg_dpfail = glmsg.add_args();
4098    arg_dpfail->set_isarray(false);
4099    arg_dpfail->set_type(GLMessage::DataType::ENUM);
4100    arg_dpfail->add_intvalue((int)dpfail);
4101
4102    // copy argument dppass
4103    GLMessage_DataType *arg_dppass = glmsg.add_args();
4104    arg_dppass->set_isarray(false);
4105    arg_dppass->set_type(GLMessage::DataType::ENUM);
4106    arg_dppass->add_intvalue((int)dppass);
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, sfail, dpfail, dppass);
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 void * 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::INT64);
4182    arg_pixels->add_int64value((uintptr_t)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::INT64);
4263    arg_params->add_int64value((uintptr_t)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::INT64);
4344    arg_params->add_int64value((uintptr_t)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 void * 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::INT64);
4421    arg_pixels->add_int64value((uintptr_t)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 v0) {
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 v0
4453    GLMessage_DataType *arg_v0 = glmsg.add_args();
4454    arg_v0->set_isarray(false);
4455    arg_v0->set_type(GLMessage::DataType::FLOAT);
4456    arg_v0->add_floatvalue(v0);
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, v0);
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 * value) {
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 value
4493    GLMessage_DataType *arg_value = glmsg.add_args();
4494    arg_value->set_isarray(false);
4495    arg_value->set_type(GLMessage::DataType::INT64);
4496    arg_value->add_int64value((uintptr_t)value);
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, value);
4502    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4503    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4504
4505    void *pointerArgs[] = {
4506        (void *) value,
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 v0) {
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 v0
4528    GLMessage_DataType *arg_v0 = glmsg.add_args();
4529    arg_v0->set_isarray(false);
4530    arg_v0->set_type(GLMessage::DataType::INT);
4531    arg_v0->add_intvalue(v0);
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, v0);
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 * value) {
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 value
4568    GLMessage_DataType *arg_value = glmsg.add_args();
4569    arg_value->set_isarray(false);
4570    arg_value->set_type(GLMessage::DataType::INT64);
4571    arg_value->add_int64value((uintptr_t)value);
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, value);
4577    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4578    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4579
4580    void *pointerArgs[] = {
4581        (void *) value,
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 v0, GLfloat v1) {
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 v0
4603    GLMessage_DataType *arg_v0 = glmsg.add_args();
4604    arg_v0->set_isarray(false);
4605    arg_v0->set_type(GLMessage::DataType::FLOAT);
4606    arg_v0->add_floatvalue(v0);
4607
4608    // copy argument v1
4609    GLMessage_DataType *arg_v1 = glmsg.add_args();
4610    arg_v1->set_isarray(false);
4611    arg_v1->set_type(GLMessage::DataType::FLOAT);
4612    arg_v1->add_floatvalue(v1);
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, v0, v1);
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 * value) {
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 value
4649    GLMessage_DataType *arg_value = glmsg.add_args();
4650    arg_value->set_isarray(false);
4651    arg_value->set_type(GLMessage::DataType::INT64);
4652    arg_value->add_int64value((uintptr_t)value);
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, value);
4658    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4659    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4660
4661    void *pointerArgs[] = {
4662        (void *) value,
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 v0, GLint v1) {
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 v0
4684    GLMessage_DataType *arg_v0 = glmsg.add_args();
4685    arg_v0->set_isarray(false);
4686    arg_v0->set_type(GLMessage::DataType::INT);
4687    arg_v0->add_intvalue(v0);
4688
4689    // copy argument v1
4690    GLMessage_DataType *arg_v1 = glmsg.add_args();
4691    arg_v1->set_isarray(false);
4692    arg_v1->set_type(GLMessage::DataType::INT);
4693    arg_v1->add_intvalue(v1);
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, v0, v1);
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 * value) {
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 value
4730    GLMessage_DataType *arg_value = glmsg.add_args();
4731    arg_value->set_isarray(false);
4732    arg_value->set_type(GLMessage::DataType::INT64);
4733    arg_value->add_int64value((uintptr_t)value);
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, value);
4739    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4740    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4741
4742    void *pointerArgs[] = {
4743        (void *) value,
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 v0, GLfloat v1, GLfloat v2) {
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 v0
4765    GLMessage_DataType *arg_v0 = glmsg.add_args();
4766    arg_v0->set_isarray(false);
4767    arg_v0->set_type(GLMessage::DataType::FLOAT);
4768    arg_v0->add_floatvalue(v0);
4769
4770    // copy argument v1
4771    GLMessage_DataType *arg_v1 = glmsg.add_args();
4772    arg_v1->set_isarray(false);
4773    arg_v1->set_type(GLMessage::DataType::FLOAT);
4774    arg_v1->add_floatvalue(v1);
4775
4776    // copy argument v2
4777    GLMessage_DataType *arg_v2 = glmsg.add_args();
4778    arg_v2->set_isarray(false);
4779    arg_v2->set_type(GLMessage::DataType::FLOAT);
4780    arg_v2->add_floatvalue(v2);
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, v0, v1, v2);
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 * value) {
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 value
4817    GLMessage_DataType *arg_value = glmsg.add_args();
4818    arg_value->set_isarray(false);
4819    arg_value->set_type(GLMessage::DataType::INT64);
4820    arg_value->add_int64value((uintptr_t)value);
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, value);
4826    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4827    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4828
4829    void *pointerArgs[] = {
4830        (void *) value,
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 v0, GLint v1, GLint v2) {
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 v0
4852    GLMessage_DataType *arg_v0 = glmsg.add_args();
4853    arg_v0->set_isarray(false);
4854    arg_v0->set_type(GLMessage::DataType::INT);
4855    arg_v0->add_intvalue(v0);
4856
4857    // copy argument v1
4858    GLMessage_DataType *arg_v1 = glmsg.add_args();
4859    arg_v1->set_isarray(false);
4860    arg_v1->set_type(GLMessage::DataType::INT);
4861    arg_v1->add_intvalue(v1);
4862
4863    // copy argument v2
4864    GLMessage_DataType *arg_v2 = glmsg.add_args();
4865    arg_v2->set_isarray(false);
4866    arg_v2->set_type(GLMessage::DataType::INT);
4867    arg_v2->add_intvalue(v2);
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, v0, v1, v2);
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 * value) {
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 value
4904    GLMessage_DataType *arg_value = glmsg.add_args();
4905    arg_value->set_isarray(false);
4906    arg_value->set_type(GLMessage::DataType::INT64);
4907    arg_value->add_int64value((uintptr_t)value);
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, value);
4913    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4914    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4915
4916    void *pointerArgs[] = {
4917        (void *) value,
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 v0, GLfloat v1, GLfloat v2, GLfloat v3) {
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 v0
4939    GLMessage_DataType *arg_v0 = glmsg.add_args();
4940    arg_v0->set_isarray(false);
4941    arg_v0->set_type(GLMessage::DataType::FLOAT);
4942    arg_v0->add_floatvalue(v0);
4943
4944    // copy argument v1
4945    GLMessage_DataType *arg_v1 = glmsg.add_args();
4946    arg_v1->set_isarray(false);
4947    arg_v1->set_type(GLMessage::DataType::FLOAT);
4948    arg_v1->add_floatvalue(v1);
4949
4950    // copy argument v2
4951    GLMessage_DataType *arg_v2 = glmsg.add_args();
4952    arg_v2->set_isarray(false);
4953    arg_v2->set_type(GLMessage::DataType::FLOAT);
4954    arg_v2->add_floatvalue(v2);
4955
4956    // copy argument v3
4957    GLMessage_DataType *arg_v3 = glmsg.add_args();
4958    arg_v3->set_isarray(false);
4959    arg_v3->set_type(GLMessage::DataType::FLOAT);
4960    arg_v3->add_floatvalue(v3);
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, v0, v1, v2, v3);
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 * value) {
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 value
4997    GLMessage_DataType *arg_value = glmsg.add_args();
4998    arg_value->set_isarray(false);
4999    arg_value->set_type(GLMessage::DataType::INT64);
5000    arg_value->add_int64value((uintptr_t)value);
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, value);
5006    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5007    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5008
5009    void *pointerArgs[] = {
5010        (void *) value,
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 v0, GLint v1, GLint v2, GLint v3) {
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 v0
5032    GLMessage_DataType *arg_v0 = glmsg.add_args();
5033    arg_v0->set_isarray(false);
5034    arg_v0->set_type(GLMessage::DataType::INT);
5035    arg_v0->add_intvalue(v0);
5036
5037    // copy argument v1
5038    GLMessage_DataType *arg_v1 = glmsg.add_args();
5039    arg_v1->set_isarray(false);
5040    arg_v1->set_type(GLMessage::DataType::INT);
5041    arg_v1->add_intvalue(v1);
5042
5043    // copy argument v2
5044    GLMessage_DataType *arg_v2 = glmsg.add_args();
5045    arg_v2->set_isarray(false);
5046    arg_v2->set_type(GLMessage::DataType::INT);
5047    arg_v2->add_intvalue(v2);
5048
5049    // copy argument v3
5050    GLMessage_DataType *arg_v3 = glmsg.add_args();
5051    arg_v3->set_isarray(false);
5052    arg_v3->set_type(GLMessage::DataType::INT);
5053    arg_v3->add_intvalue(v3);
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, v0, v1, v2, v3);
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 * value) {
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 value
5090    GLMessage_DataType *arg_value = glmsg.add_args();
5091    arg_value->set_isarray(false);
5092    arg_value->set_type(GLMessage::DataType::INT64);
5093    arg_value->add_int64value((uintptr_t)value);
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, value);
5099    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5100    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5101
5102    void *pointerArgs[] = {
5103        (void *) value,
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::INT64);
5140    arg_value->add_int64value((uintptr_t)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::INT64);
5187    arg_value->add_int64value((uintptr_t)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::INT64);
5234    arg_value->add_int64value((uintptr_t)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 index, GLfloat x) {
5310    GLMessage glmsg;
5311    GLTraceContext *glContext = getGLTraceContext();
5312
5313    glmsg.set_function(GLMessage::glVertexAttrib1f);
5314
5315    // copy argument index
5316    GLMessage_DataType *arg_index = glmsg.add_args();
5317    arg_index->set_isarray(false);
5318    arg_index->set_type(GLMessage::DataType::INT);
5319    arg_index->add_intvalue(index);
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(index, 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 index, const GLfloat * v) {
5344    GLMessage glmsg;
5345    GLTraceContext *glContext = getGLTraceContext();
5346
5347    glmsg.set_function(GLMessage::glVertexAttrib1fv);
5348
5349    // copy argument index
5350    GLMessage_DataType *arg_index = glmsg.add_args();
5351    arg_index->set_isarray(false);
5352    arg_index->set_type(GLMessage::DataType::INT);
5353    arg_index->add_intvalue(index);
5354
5355    // copy argument v
5356    GLMessage_DataType *arg_v = glmsg.add_args();
5357    arg_v->set_isarray(false);
5358    arg_v->set_type(GLMessage::DataType::INT64);
5359    arg_v->add_int64value((uintptr_t)v);
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(index, v);
5365    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5366    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5367
5368    void *pointerArgs[] = {
5369        (void *) v,
5370    };
5371
5372    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5373                              threadStartTime, threadEndTime,
5374                              &glmsg, pointerArgs);
5375    glContext->traceGLMessage(&glmsg);
5376}
5377
5378void GLTrace_glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) {
5379    GLMessage glmsg;
5380    GLTraceContext *glContext = getGLTraceContext();
5381
5382    glmsg.set_function(GLMessage::glVertexAttrib2f);
5383
5384    // copy argument index
5385    GLMessage_DataType *arg_index = glmsg.add_args();
5386    arg_index->set_isarray(false);
5387    arg_index->set_type(GLMessage::DataType::INT);
5388    arg_index->add_intvalue(index);
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(index, 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 index, const GLfloat * v) {
5419    GLMessage glmsg;
5420    GLTraceContext *glContext = getGLTraceContext();
5421
5422    glmsg.set_function(GLMessage::glVertexAttrib2fv);
5423
5424    // copy argument index
5425    GLMessage_DataType *arg_index = glmsg.add_args();
5426    arg_index->set_isarray(false);
5427    arg_index->set_type(GLMessage::DataType::INT);
5428    arg_index->add_intvalue(index);
5429
5430    // copy argument v
5431    GLMessage_DataType *arg_v = glmsg.add_args();
5432    arg_v->set_isarray(false);
5433    arg_v->set_type(GLMessage::DataType::INT64);
5434    arg_v->add_int64value((uintptr_t)v);
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(index, v);
5440    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5441    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5442
5443    void *pointerArgs[] = {
5444        (void *) v,
5445    };
5446
5447    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5448                              threadStartTime, threadEndTime,
5449                              &glmsg, pointerArgs);
5450    glContext->traceGLMessage(&glmsg);
5451}
5452
5453void GLTrace_glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) {
5454    GLMessage glmsg;
5455    GLTraceContext *glContext = getGLTraceContext();
5456
5457    glmsg.set_function(GLMessage::glVertexAttrib3f);
5458
5459    // copy argument index
5460    GLMessage_DataType *arg_index = glmsg.add_args();
5461    arg_index->set_isarray(false);
5462    arg_index->set_type(GLMessage::DataType::INT);
5463    arg_index->add_intvalue(index);
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(index, 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 index, const GLfloat * v) {
5500    GLMessage glmsg;
5501    GLTraceContext *glContext = getGLTraceContext();
5502
5503    glmsg.set_function(GLMessage::glVertexAttrib3fv);
5504
5505    // copy argument index
5506    GLMessage_DataType *arg_index = glmsg.add_args();
5507    arg_index->set_isarray(false);
5508    arg_index->set_type(GLMessage::DataType::INT);
5509    arg_index->add_intvalue(index);
5510
5511    // copy argument v
5512    GLMessage_DataType *arg_v = glmsg.add_args();
5513    arg_v->set_isarray(false);
5514    arg_v->set_type(GLMessage::DataType::INT64);
5515    arg_v->add_int64value((uintptr_t)v);
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(index, v);
5521    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5522    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5523
5524    void *pointerArgs[] = {
5525        (void *) v,
5526    };
5527
5528    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5529                              threadStartTime, threadEndTime,
5530                              &glmsg, pointerArgs);
5531    glContext->traceGLMessage(&glmsg);
5532}
5533
5534void GLTrace_glVertexAttrib4f(GLuint index, 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 index
5541    GLMessage_DataType *arg_index = glmsg.add_args();
5542    arg_index->set_isarray(false);
5543    arg_index->set_type(GLMessage::DataType::INT);
5544    arg_index->add_intvalue(index);
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(index, 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 index, const GLfloat * v) {
5587    GLMessage glmsg;
5588    GLTraceContext *glContext = getGLTraceContext();
5589
5590    glmsg.set_function(GLMessage::glVertexAttrib4fv);
5591
5592    // copy argument index
5593    GLMessage_DataType *arg_index = glmsg.add_args();
5594    arg_index->set_isarray(false);
5595    arg_index->set_type(GLMessage::DataType::INT);
5596    arg_index->add_intvalue(index);
5597
5598    // copy argument v
5599    GLMessage_DataType *arg_v = glmsg.add_args();
5600    arg_v->set_isarray(false);
5601    arg_v->set_type(GLMessage::DataType::INT64);
5602    arg_v->add_int64value((uintptr_t)v);
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(index, v);
5608    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5609    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5610
5611    void *pointerArgs[] = {
5612        (void *) v,
5613    };
5614
5615    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5616                              threadStartTime, threadEndTime,
5617                              &glmsg, pointerArgs);
5618    glContext->traceGLMessage(&glmsg);
5619}
5620
5621void GLTrace_glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer) {
5622    GLMessage glmsg;
5623    GLTraceContext *glContext = getGLTraceContext();
5624
5625    glmsg.set_function(GLMessage::glVertexAttribPointer);
5626
5627    // copy argument index
5628    GLMessage_DataType *arg_index = glmsg.add_args();
5629    arg_index->set_isarray(false);
5630    arg_index->set_type(GLMessage::DataType::INT);
5631    arg_index->add_intvalue(index);
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 pointer
5658    GLMessage_DataType *arg_pointer = glmsg.add_args();
5659    arg_pointer->set_isarray(false);
5660    arg_pointer->set_type(GLMessage::DataType::INT64);
5661    arg_pointer->add_int64value((uintptr_t)pointer);
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(index, size, type, normalized, stride, pointer);
5667    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5668    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5669
5670    void *pointerArgs[] = {
5671        (void *) pointer,
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
5726void GLTrace_glReadBuffer(GLenum mode) {
5727    GLMessage glmsg;
5728    GLTraceContext *glContext = getGLTraceContext();
5729
5730    glmsg.set_function(GLMessage::glReadBuffer);
5731
5732    // copy argument mode
5733    GLMessage_DataType *arg_mode = glmsg.add_args();
5734    arg_mode->set_isarray(false);
5735    arg_mode->set_type(GLMessage::DataType::ENUM);
5736    arg_mode->add_intvalue((int)mode);
5737
5738    // call function
5739    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5740    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5741    glContext->hooks->gl.glReadBuffer(mode);
5742    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5743    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5744
5745    void *pointerArgs[] = {
5746    };
5747
5748    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5749                              threadStartTime, threadEndTime,
5750                              &glmsg, pointerArgs);
5751    glContext->traceGLMessage(&glmsg);
5752}
5753
5754void GLTrace_glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices) {
5755    GLMessage glmsg;
5756    GLTraceContext *glContext = getGLTraceContext();
5757
5758    glmsg.set_function(GLMessage::glDrawRangeElements);
5759
5760    // copy argument mode
5761    GLMessage_DataType *arg_mode = glmsg.add_args();
5762    arg_mode->set_isarray(false);
5763    arg_mode->set_type(GLMessage::DataType::ENUM);
5764    arg_mode->add_intvalue((int)mode);
5765
5766    // copy argument start
5767    GLMessage_DataType *arg_start = glmsg.add_args();
5768    arg_start->set_isarray(false);
5769    arg_start->set_type(GLMessage::DataType::INT);
5770    arg_start->add_intvalue(start);
5771
5772    // copy argument end
5773    GLMessage_DataType *arg_end = glmsg.add_args();
5774    arg_end->set_isarray(false);
5775    arg_end->set_type(GLMessage::DataType::INT);
5776    arg_end->add_intvalue(end);
5777
5778    // copy argument count
5779    GLMessage_DataType *arg_count = glmsg.add_args();
5780    arg_count->set_isarray(false);
5781    arg_count->set_type(GLMessage::DataType::INT);
5782    arg_count->add_intvalue(count);
5783
5784    // copy argument type
5785    GLMessage_DataType *arg_type = glmsg.add_args();
5786    arg_type->set_isarray(false);
5787    arg_type->set_type(GLMessage::DataType::ENUM);
5788    arg_type->add_intvalue((int)type);
5789
5790    // copy argument indices
5791    GLMessage_DataType *arg_indices = glmsg.add_args();
5792    arg_indices->set_isarray(false);
5793    arg_indices->set_type(GLMessage::DataType::INT64);
5794    arg_indices->add_int64value((uintptr_t)indices);
5795
5796    // call function
5797    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5798    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5799    glContext->hooks->gl.glDrawRangeElements(mode, start, end, count, type, indices);
5800    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5801    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5802
5803    void *pointerArgs[] = {
5804        (void *) indices,
5805    };
5806
5807    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5808                              threadStartTime, threadEndTime,
5809                              &glmsg, pointerArgs);
5810    glContext->traceGLMessage(&glmsg);
5811}
5812
5813void GLTrace_glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels) {
5814    GLMessage glmsg;
5815    GLTraceContext *glContext = getGLTraceContext();
5816
5817    glmsg.set_function(GLMessage::glTexImage3D);
5818
5819    // copy argument target
5820    GLMessage_DataType *arg_target = glmsg.add_args();
5821    arg_target->set_isarray(false);
5822    arg_target->set_type(GLMessage::DataType::ENUM);
5823    arg_target->add_intvalue((int)target);
5824
5825    // copy argument level
5826    GLMessage_DataType *arg_level = glmsg.add_args();
5827    arg_level->set_isarray(false);
5828    arg_level->set_type(GLMessage::DataType::INT);
5829    arg_level->add_intvalue(level);
5830
5831    // copy argument internalformat
5832    GLMessage_DataType *arg_internalformat = glmsg.add_args();
5833    arg_internalformat->set_isarray(false);
5834    arg_internalformat->set_type(GLMessage::DataType::INT);
5835    arg_internalformat->add_intvalue(internalformat);
5836
5837    // copy argument width
5838    GLMessage_DataType *arg_width = glmsg.add_args();
5839    arg_width->set_isarray(false);
5840    arg_width->set_type(GLMessage::DataType::INT);
5841    arg_width->add_intvalue(width);
5842
5843    // copy argument height
5844    GLMessage_DataType *arg_height = glmsg.add_args();
5845    arg_height->set_isarray(false);
5846    arg_height->set_type(GLMessage::DataType::INT);
5847    arg_height->add_intvalue(height);
5848
5849    // copy argument depth
5850    GLMessage_DataType *arg_depth = glmsg.add_args();
5851    arg_depth->set_isarray(false);
5852    arg_depth->set_type(GLMessage::DataType::INT);
5853    arg_depth->add_intvalue(depth);
5854
5855    // copy argument border
5856    GLMessage_DataType *arg_border = glmsg.add_args();
5857    arg_border->set_isarray(false);
5858    arg_border->set_type(GLMessage::DataType::INT);
5859    arg_border->add_intvalue(border);
5860
5861    // copy argument format
5862    GLMessage_DataType *arg_format = glmsg.add_args();
5863    arg_format->set_isarray(false);
5864    arg_format->set_type(GLMessage::DataType::ENUM);
5865    arg_format->add_intvalue((int)format);
5866
5867    // copy argument type
5868    GLMessage_DataType *arg_type = glmsg.add_args();
5869    arg_type->set_isarray(false);
5870    arg_type->set_type(GLMessage::DataType::ENUM);
5871    arg_type->add_intvalue((int)type);
5872
5873    // copy argument pixels
5874    GLMessage_DataType *arg_pixels = glmsg.add_args();
5875    arg_pixels->set_isarray(false);
5876    arg_pixels->set_type(GLMessage::DataType::INT64);
5877    arg_pixels->add_int64value((uintptr_t)pixels);
5878
5879    // call function
5880    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5881    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5882    glContext->hooks->gl.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels);
5883    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5884    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5885
5886    void *pointerArgs[] = {
5887        (void *) pixels,
5888    };
5889
5890    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5891                              threadStartTime, threadEndTime,
5892                              &glmsg, pointerArgs);
5893    glContext->traceGLMessage(&glmsg);
5894}
5895
5896void GLTrace_glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels) {
5897    GLMessage glmsg;
5898    GLTraceContext *glContext = getGLTraceContext();
5899
5900    glmsg.set_function(GLMessage::glTexSubImage3D);
5901
5902    // copy argument target
5903    GLMessage_DataType *arg_target = glmsg.add_args();
5904    arg_target->set_isarray(false);
5905    arg_target->set_type(GLMessage::DataType::ENUM);
5906    arg_target->add_intvalue((int)target);
5907
5908    // copy argument level
5909    GLMessage_DataType *arg_level = glmsg.add_args();
5910    arg_level->set_isarray(false);
5911    arg_level->set_type(GLMessage::DataType::INT);
5912    arg_level->add_intvalue(level);
5913
5914    // copy argument xoffset
5915    GLMessage_DataType *arg_xoffset = glmsg.add_args();
5916    arg_xoffset->set_isarray(false);
5917    arg_xoffset->set_type(GLMessage::DataType::INT);
5918    arg_xoffset->add_intvalue(xoffset);
5919
5920    // copy argument yoffset
5921    GLMessage_DataType *arg_yoffset = glmsg.add_args();
5922    arg_yoffset->set_isarray(false);
5923    arg_yoffset->set_type(GLMessage::DataType::INT);
5924    arg_yoffset->add_intvalue(yoffset);
5925
5926    // copy argument zoffset
5927    GLMessage_DataType *arg_zoffset = glmsg.add_args();
5928    arg_zoffset->set_isarray(false);
5929    arg_zoffset->set_type(GLMessage::DataType::INT);
5930    arg_zoffset->add_intvalue(zoffset);
5931
5932    // copy argument width
5933    GLMessage_DataType *arg_width = glmsg.add_args();
5934    arg_width->set_isarray(false);
5935    arg_width->set_type(GLMessage::DataType::INT);
5936    arg_width->add_intvalue(width);
5937
5938    // copy argument height
5939    GLMessage_DataType *arg_height = glmsg.add_args();
5940    arg_height->set_isarray(false);
5941    arg_height->set_type(GLMessage::DataType::INT);
5942    arg_height->add_intvalue(height);
5943
5944    // copy argument depth
5945    GLMessage_DataType *arg_depth = glmsg.add_args();
5946    arg_depth->set_isarray(false);
5947    arg_depth->set_type(GLMessage::DataType::INT);
5948    arg_depth->add_intvalue(depth);
5949
5950    // copy argument format
5951    GLMessage_DataType *arg_format = glmsg.add_args();
5952    arg_format->set_isarray(false);
5953    arg_format->set_type(GLMessage::DataType::ENUM);
5954    arg_format->add_intvalue((int)format);
5955
5956    // copy argument type
5957    GLMessage_DataType *arg_type = glmsg.add_args();
5958    arg_type->set_isarray(false);
5959    arg_type->set_type(GLMessage::DataType::ENUM);
5960    arg_type->add_intvalue((int)type);
5961
5962    // copy argument pixels
5963    GLMessage_DataType *arg_pixels = glmsg.add_args();
5964    arg_pixels->set_isarray(false);
5965    arg_pixels->set_type(GLMessage::DataType::INT64);
5966    arg_pixels->add_int64value((uintptr_t)pixels);
5967
5968    // call function
5969    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5970    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5971    glContext->hooks->gl.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
5972    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5973    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5974
5975    void *pointerArgs[] = {
5976        (void *) pixels,
5977    };
5978
5979    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5980                              threadStartTime, threadEndTime,
5981                              &glmsg, pointerArgs);
5982    glContext->traceGLMessage(&glmsg);
5983}
5984
5985void GLTrace_glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) {
5986    GLMessage glmsg;
5987    GLTraceContext *glContext = getGLTraceContext();
5988
5989    glmsg.set_function(GLMessage::glCopyTexSubImage3D);
5990
5991    // copy argument target
5992    GLMessage_DataType *arg_target = glmsg.add_args();
5993    arg_target->set_isarray(false);
5994    arg_target->set_type(GLMessage::DataType::ENUM);
5995    arg_target->add_intvalue((int)target);
5996
5997    // copy argument level
5998    GLMessage_DataType *arg_level = glmsg.add_args();
5999    arg_level->set_isarray(false);
6000    arg_level->set_type(GLMessage::DataType::INT);
6001    arg_level->add_intvalue(level);
6002
6003    // copy argument xoffset
6004    GLMessage_DataType *arg_xoffset = glmsg.add_args();
6005    arg_xoffset->set_isarray(false);
6006    arg_xoffset->set_type(GLMessage::DataType::INT);
6007    arg_xoffset->add_intvalue(xoffset);
6008
6009    // copy argument yoffset
6010    GLMessage_DataType *arg_yoffset = glmsg.add_args();
6011    arg_yoffset->set_isarray(false);
6012    arg_yoffset->set_type(GLMessage::DataType::INT);
6013    arg_yoffset->add_intvalue(yoffset);
6014
6015    // copy argument zoffset
6016    GLMessage_DataType *arg_zoffset = glmsg.add_args();
6017    arg_zoffset->set_isarray(false);
6018    arg_zoffset->set_type(GLMessage::DataType::INT);
6019    arg_zoffset->add_intvalue(zoffset);
6020
6021    // copy argument x
6022    GLMessage_DataType *arg_x = glmsg.add_args();
6023    arg_x->set_isarray(false);
6024    arg_x->set_type(GLMessage::DataType::INT);
6025    arg_x->add_intvalue(x);
6026
6027    // copy argument y
6028    GLMessage_DataType *arg_y = glmsg.add_args();
6029    arg_y->set_isarray(false);
6030    arg_y->set_type(GLMessage::DataType::INT);
6031    arg_y->add_intvalue(y);
6032
6033    // copy argument width
6034    GLMessage_DataType *arg_width = glmsg.add_args();
6035    arg_width->set_isarray(false);
6036    arg_width->set_type(GLMessage::DataType::INT);
6037    arg_width->add_intvalue(width);
6038
6039    // copy argument height
6040    GLMessage_DataType *arg_height = glmsg.add_args();
6041    arg_height->set_isarray(false);
6042    arg_height->set_type(GLMessage::DataType::INT);
6043    arg_height->add_intvalue(height);
6044
6045    // call function
6046    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6047    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6048    glContext->hooks->gl.glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);
6049    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6050    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6051
6052    void *pointerArgs[] = {
6053    };
6054
6055    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6056                              threadStartTime, threadEndTime,
6057                              &glmsg, pointerArgs);
6058    glContext->traceGLMessage(&glmsg);
6059}
6060
6061void GLTrace_glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data) {
6062    GLMessage glmsg;
6063    GLTraceContext *glContext = getGLTraceContext();
6064
6065    glmsg.set_function(GLMessage::glCompressedTexImage3D);
6066
6067    // copy argument target
6068    GLMessage_DataType *arg_target = glmsg.add_args();
6069    arg_target->set_isarray(false);
6070    arg_target->set_type(GLMessage::DataType::ENUM);
6071    arg_target->add_intvalue((int)target);
6072
6073    // copy argument level
6074    GLMessage_DataType *arg_level = glmsg.add_args();
6075    arg_level->set_isarray(false);
6076    arg_level->set_type(GLMessage::DataType::INT);
6077    arg_level->add_intvalue(level);
6078
6079    // copy argument internalformat
6080    GLMessage_DataType *arg_internalformat = glmsg.add_args();
6081    arg_internalformat->set_isarray(false);
6082    arg_internalformat->set_type(GLMessage::DataType::ENUM);
6083    arg_internalformat->add_intvalue((int)internalformat);
6084
6085    // copy argument width
6086    GLMessage_DataType *arg_width = glmsg.add_args();
6087    arg_width->set_isarray(false);
6088    arg_width->set_type(GLMessage::DataType::INT);
6089    arg_width->add_intvalue(width);
6090
6091    // copy argument height
6092    GLMessage_DataType *arg_height = glmsg.add_args();
6093    arg_height->set_isarray(false);
6094    arg_height->set_type(GLMessage::DataType::INT);
6095    arg_height->add_intvalue(height);
6096
6097    // copy argument depth
6098    GLMessage_DataType *arg_depth = glmsg.add_args();
6099    arg_depth->set_isarray(false);
6100    arg_depth->set_type(GLMessage::DataType::INT);
6101    arg_depth->add_intvalue(depth);
6102
6103    // copy argument border
6104    GLMessage_DataType *arg_border = glmsg.add_args();
6105    arg_border->set_isarray(false);
6106    arg_border->set_type(GLMessage::DataType::INT);
6107    arg_border->add_intvalue(border);
6108
6109    // copy argument imageSize
6110    GLMessage_DataType *arg_imageSize = glmsg.add_args();
6111    arg_imageSize->set_isarray(false);
6112    arg_imageSize->set_type(GLMessage::DataType::INT);
6113    arg_imageSize->add_intvalue(imageSize);
6114
6115    // copy argument data
6116    GLMessage_DataType *arg_data = glmsg.add_args();
6117    arg_data->set_isarray(false);
6118    arg_data->set_type(GLMessage::DataType::INT64);
6119    arg_data->add_int64value((uintptr_t)data);
6120
6121    // call function
6122    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6123    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6124    glContext->hooks->gl.glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data);
6125    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6126    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6127
6128    void *pointerArgs[] = {
6129        (void *) data,
6130    };
6131
6132    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6133                              threadStartTime, threadEndTime,
6134                              &glmsg, pointerArgs);
6135    glContext->traceGLMessage(&glmsg);
6136}
6137
6138void GLTrace_glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data) {
6139    GLMessage glmsg;
6140    GLTraceContext *glContext = getGLTraceContext();
6141
6142    glmsg.set_function(GLMessage::glCompressedTexSubImage3D);
6143
6144    // copy argument target
6145    GLMessage_DataType *arg_target = glmsg.add_args();
6146    arg_target->set_isarray(false);
6147    arg_target->set_type(GLMessage::DataType::ENUM);
6148    arg_target->add_intvalue((int)target);
6149
6150    // copy argument level
6151    GLMessage_DataType *arg_level = glmsg.add_args();
6152    arg_level->set_isarray(false);
6153    arg_level->set_type(GLMessage::DataType::INT);
6154    arg_level->add_intvalue(level);
6155
6156    // copy argument xoffset
6157    GLMessage_DataType *arg_xoffset = glmsg.add_args();
6158    arg_xoffset->set_isarray(false);
6159    arg_xoffset->set_type(GLMessage::DataType::INT);
6160    arg_xoffset->add_intvalue(xoffset);
6161
6162    // copy argument yoffset
6163    GLMessage_DataType *arg_yoffset = glmsg.add_args();
6164    arg_yoffset->set_isarray(false);
6165    arg_yoffset->set_type(GLMessage::DataType::INT);
6166    arg_yoffset->add_intvalue(yoffset);
6167
6168    // copy argument zoffset
6169    GLMessage_DataType *arg_zoffset = glmsg.add_args();
6170    arg_zoffset->set_isarray(false);
6171    arg_zoffset->set_type(GLMessage::DataType::INT);
6172    arg_zoffset->add_intvalue(zoffset);
6173
6174    // copy argument width
6175    GLMessage_DataType *arg_width = glmsg.add_args();
6176    arg_width->set_isarray(false);
6177    arg_width->set_type(GLMessage::DataType::INT);
6178    arg_width->add_intvalue(width);
6179
6180    // copy argument height
6181    GLMessage_DataType *arg_height = glmsg.add_args();
6182    arg_height->set_isarray(false);
6183    arg_height->set_type(GLMessage::DataType::INT);
6184    arg_height->add_intvalue(height);
6185
6186    // copy argument depth
6187    GLMessage_DataType *arg_depth = glmsg.add_args();
6188    arg_depth->set_isarray(false);
6189    arg_depth->set_type(GLMessage::DataType::INT);
6190    arg_depth->add_intvalue(depth);
6191
6192    // copy argument format
6193    GLMessage_DataType *arg_format = glmsg.add_args();
6194    arg_format->set_isarray(false);
6195    arg_format->set_type(GLMessage::DataType::ENUM);
6196    arg_format->add_intvalue((int)format);
6197
6198    // copy argument imageSize
6199    GLMessage_DataType *arg_imageSize = glmsg.add_args();
6200    arg_imageSize->set_isarray(false);
6201    arg_imageSize->set_type(GLMessage::DataType::INT);
6202    arg_imageSize->add_intvalue(imageSize);
6203
6204    // copy argument data
6205    GLMessage_DataType *arg_data = glmsg.add_args();
6206    arg_data->set_isarray(false);
6207    arg_data->set_type(GLMessage::DataType::INT64);
6208    arg_data->add_int64value((uintptr_t)data);
6209
6210    // call function
6211    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6212    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6213    glContext->hooks->gl.glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
6214    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6215    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6216
6217    void *pointerArgs[] = {
6218        (void *) data,
6219    };
6220
6221    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6222                              threadStartTime, threadEndTime,
6223                              &glmsg, pointerArgs);
6224    glContext->traceGLMessage(&glmsg);
6225}
6226
6227void GLTrace_glGenQueries(GLsizei n, GLuint * ids) {
6228    GLMessage glmsg;
6229    GLTraceContext *glContext = getGLTraceContext();
6230
6231    glmsg.set_function(GLMessage::glGenQueries);
6232
6233    // copy argument n
6234    GLMessage_DataType *arg_n = glmsg.add_args();
6235    arg_n->set_isarray(false);
6236    arg_n->set_type(GLMessage::DataType::INT);
6237    arg_n->add_intvalue(n);
6238
6239    // copy argument ids
6240    GLMessage_DataType *arg_ids = glmsg.add_args();
6241    arg_ids->set_isarray(false);
6242    arg_ids->set_type(GLMessage::DataType::INT64);
6243    arg_ids->add_int64value((uintptr_t)ids);
6244
6245    // call function
6246    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6247    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6248    glContext->hooks->gl.glGenQueries(n, ids);
6249    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6250    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6251
6252    void *pointerArgs[] = {
6253        (void *) ids,
6254    };
6255
6256    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6257                              threadStartTime, threadEndTime,
6258                              &glmsg, pointerArgs);
6259    glContext->traceGLMessage(&glmsg);
6260}
6261
6262void GLTrace_glDeleteQueries(GLsizei n, const GLuint * ids) {
6263    GLMessage glmsg;
6264    GLTraceContext *glContext = getGLTraceContext();
6265
6266    glmsg.set_function(GLMessage::glDeleteQueries);
6267
6268    // copy argument n
6269    GLMessage_DataType *arg_n = glmsg.add_args();
6270    arg_n->set_isarray(false);
6271    arg_n->set_type(GLMessage::DataType::INT);
6272    arg_n->add_intvalue(n);
6273
6274    // copy argument ids
6275    GLMessage_DataType *arg_ids = glmsg.add_args();
6276    arg_ids->set_isarray(false);
6277    arg_ids->set_type(GLMessage::DataType::INT64);
6278    arg_ids->add_int64value((uintptr_t)ids);
6279
6280    // call function
6281    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6282    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6283    glContext->hooks->gl.glDeleteQueries(n, ids);
6284    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6285    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6286
6287    void *pointerArgs[] = {
6288        (void *) ids,
6289    };
6290
6291    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6292                              threadStartTime, threadEndTime,
6293                              &glmsg, pointerArgs);
6294    glContext->traceGLMessage(&glmsg);
6295}
6296
6297GLboolean GLTrace_glIsQuery(GLuint id) {
6298    GLMessage glmsg;
6299    GLTraceContext *glContext = getGLTraceContext();
6300
6301    glmsg.set_function(GLMessage::glIsQuery);
6302
6303    // copy argument id
6304    GLMessage_DataType *arg_id = glmsg.add_args();
6305    arg_id->set_isarray(false);
6306    arg_id->set_type(GLMessage::DataType::INT);
6307    arg_id->add_intvalue(id);
6308
6309    // call function
6310    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6311    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6312    GLboolean retValue = glContext->hooks->gl.glIsQuery(id);
6313    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6314    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6315
6316    // set return value
6317    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
6318    rt->set_isarray(false);
6319    rt->set_type(GLMessage::DataType::BOOL);
6320    rt->add_boolvalue(retValue);
6321
6322    void *pointerArgs[] = {
6323    };
6324
6325    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6326                              threadStartTime, threadEndTime,
6327                              &glmsg, pointerArgs);
6328    glContext->traceGLMessage(&glmsg);
6329
6330    return retValue;
6331}
6332
6333void GLTrace_glBeginQuery(GLenum target, GLuint id) {
6334    GLMessage glmsg;
6335    GLTraceContext *glContext = getGLTraceContext();
6336
6337    glmsg.set_function(GLMessage::glBeginQuery);
6338
6339    // copy argument target
6340    GLMessage_DataType *arg_target = glmsg.add_args();
6341    arg_target->set_isarray(false);
6342    arg_target->set_type(GLMessage::DataType::ENUM);
6343    arg_target->add_intvalue((int)target);
6344
6345    // copy argument id
6346    GLMessage_DataType *arg_id = glmsg.add_args();
6347    arg_id->set_isarray(false);
6348    arg_id->set_type(GLMessage::DataType::INT);
6349    arg_id->add_intvalue(id);
6350
6351    // call function
6352    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6353    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6354    glContext->hooks->gl.glBeginQuery(target, id);
6355    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6356    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6357
6358    void *pointerArgs[] = {
6359    };
6360
6361    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6362                              threadStartTime, threadEndTime,
6363                              &glmsg, pointerArgs);
6364    glContext->traceGLMessage(&glmsg);
6365}
6366
6367void GLTrace_glEndQuery(GLenum target) {
6368    GLMessage glmsg;
6369    GLTraceContext *glContext = getGLTraceContext();
6370
6371    glmsg.set_function(GLMessage::glEndQuery);
6372
6373    // copy argument target
6374    GLMessage_DataType *arg_target = glmsg.add_args();
6375    arg_target->set_isarray(false);
6376    arg_target->set_type(GLMessage::DataType::ENUM);
6377    arg_target->add_intvalue((int)target);
6378
6379    // call function
6380    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6381    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6382    glContext->hooks->gl.glEndQuery(target);
6383    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6384    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6385
6386    void *pointerArgs[] = {
6387    };
6388
6389    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6390                              threadStartTime, threadEndTime,
6391                              &glmsg, pointerArgs);
6392    glContext->traceGLMessage(&glmsg);
6393}
6394
6395void GLTrace_glGetQueryiv(GLenum target, GLenum pname, GLint * params) {
6396    GLMessage glmsg;
6397    GLTraceContext *glContext = getGLTraceContext();
6398
6399    glmsg.set_function(GLMessage::glGetQueryiv);
6400
6401    // copy argument target
6402    GLMessage_DataType *arg_target = glmsg.add_args();
6403    arg_target->set_isarray(false);
6404    arg_target->set_type(GLMessage::DataType::ENUM);
6405    arg_target->add_intvalue((int)target);
6406
6407    // copy argument pname
6408    GLMessage_DataType *arg_pname = glmsg.add_args();
6409    arg_pname->set_isarray(false);
6410    arg_pname->set_type(GLMessage::DataType::ENUM);
6411    arg_pname->add_intvalue((int)pname);
6412
6413    // copy argument params
6414    GLMessage_DataType *arg_params = glmsg.add_args();
6415    arg_params->set_isarray(false);
6416    arg_params->set_type(GLMessage::DataType::INT64);
6417    arg_params->add_int64value((uintptr_t)params);
6418
6419    // call function
6420    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6421    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6422    glContext->hooks->gl.glGetQueryiv(target, pname, params);
6423    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6424    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6425
6426    void *pointerArgs[] = {
6427        (void *) params,
6428    };
6429
6430    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6431                              threadStartTime, threadEndTime,
6432                              &glmsg, pointerArgs);
6433    glContext->traceGLMessage(&glmsg);
6434}
6435
6436void GLTrace_glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint * params) {
6437    GLMessage glmsg;
6438    GLTraceContext *glContext = getGLTraceContext();
6439
6440    glmsg.set_function(GLMessage::glGetQueryObjectuiv);
6441
6442    // copy argument id
6443    GLMessage_DataType *arg_id = glmsg.add_args();
6444    arg_id->set_isarray(false);
6445    arg_id->set_type(GLMessage::DataType::INT);
6446    arg_id->add_intvalue(id);
6447
6448    // copy argument pname
6449    GLMessage_DataType *arg_pname = glmsg.add_args();
6450    arg_pname->set_isarray(false);
6451    arg_pname->set_type(GLMessage::DataType::ENUM);
6452    arg_pname->add_intvalue((int)pname);
6453
6454    // copy argument params
6455    GLMessage_DataType *arg_params = glmsg.add_args();
6456    arg_params->set_isarray(false);
6457    arg_params->set_type(GLMessage::DataType::INT64);
6458    arg_params->add_int64value((uintptr_t)params);
6459
6460    // call function
6461    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6462    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6463    glContext->hooks->gl.glGetQueryObjectuiv(id, pname, params);
6464    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6465    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6466
6467    void *pointerArgs[] = {
6468        (void *) params,
6469    };
6470
6471    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6472                              threadStartTime, threadEndTime,
6473                              &glmsg, pointerArgs);
6474    glContext->traceGLMessage(&glmsg);
6475}
6476
6477GLboolean GLTrace_glUnmapBuffer(GLenum target) {
6478    GLMessage glmsg;
6479    GLTraceContext *glContext = getGLTraceContext();
6480
6481    glmsg.set_function(GLMessage::glUnmapBuffer);
6482
6483    // copy argument target
6484    GLMessage_DataType *arg_target = glmsg.add_args();
6485    arg_target->set_isarray(false);
6486    arg_target->set_type(GLMessage::DataType::ENUM);
6487    arg_target->add_intvalue((int)target);
6488
6489    // call function
6490    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6491    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6492    GLboolean retValue = glContext->hooks->gl.glUnmapBuffer(target);
6493    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6494    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6495
6496    // set return value
6497    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
6498    rt->set_isarray(false);
6499    rt->set_type(GLMessage::DataType::BOOL);
6500    rt->add_boolvalue(retValue);
6501
6502    void *pointerArgs[] = {
6503    };
6504
6505    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6506                              threadStartTime, threadEndTime,
6507                              &glmsg, pointerArgs);
6508    glContext->traceGLMessage(&glmsg);
6509
6510    return retValue;
6511}
6512
6513void GLTrace_glGetBufferPointerv(GLenum target, GLenum pname, void ** params) {
6514    GLMessage glmsg;
6515    GLTraceContext *glContext = getGLTraceContext();
6516
6517    glmsg.set_function(GLMessage::glGetBufferPointerv);
6518
6519    // copy argument target
6520    GLMessage_DataType *arg_target = glmsg.add_args();
6521    arg_target->set_isarray(false);
6522    arg_target->set_type(GLMessage::DataType::ENUM);
6523    arg_target->add_intvalue((int)target);
6524
6525    // copy argument pname
6526    GLMessage_DataType *arg_pname = glmsg.add_args();
6527    arg_pname->set_isarray(false);
6528    arg_pname->set_type(GLMessage::DataType::ENUM);
6529    arg_pname->add_intvalue((int)pname);
6530
6531    // copy argument params
6532    GLMessage_DataType *arg_params = glmsg.add_args();
6533    arg_params->set_isarray(false);
6534    arg_params->set_type(GLMessage::DataType::INT64);
6535    arg_params->add_int64value((uintptr_t)params);
6536
6537    // call function
6538    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6539    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6540    glContext->hooks->gl.glGetBufferPointerv(target, pname, params);
6541    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6542    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6543
6544    void *pointerArgs[] = {
6545        (void *) params,
6546    };
6547
6548    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6549                              threadStartTime, threadEndTime,
6550                              &glmsg, pointerArgs);
6551    glContext->traceGLMessage(&glmsg);
6552}
6553
6554void GLTrace_glDrawBuffers(GLsizei n, const GLenum * bufs) {
6555    GLMessage glmsg;
6556    GLTraceContext *glContext = getGLTraceContext();
6557
6558    glmsg.set_function(GLMessage::glDrawBuffers);
6559
6560    // copy argument n
6561    GLMessage_DataType *arg_n = glmsg.add_args();
6562    arg_n->set_isarray(false);
6563    arg_n->set_type(GLMessage::DataType::INT);
6564    arg_n->add_intvalue(n);
6565
6566    // copy argument bufs
6567    GLMessage_DataType *arg_bufs = glmsg.add_args();
6568    arg_bufs->set_isarray(false);
6569    arg_bufs->set_type(GLMessage::DataType::INT64);
6570    arg_bufs->add_int64value((uintptr_t)bufs);
6571
6572    // call function
6573    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6574    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6575    glContext->hooks->gl.glDrawBuffers(n, bufs);
6576    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6577    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6578
6579    void *pointerArgs[] = {
6580        (void *) bufs,
6581    };
6582
6583    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6584                              threadStartTime, threadEndTime,
6585                              &glmsg, pointerArgs);
6586    glContext->traceGLMessage(&glmsg);
6587}
6588
6589void GLTrace_glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
6590    GLMessage glmsg;
6591    GLTraceContext *glContext = getGLTraceContext();
6592
6593    glmsg.set_function(GLMessage::glUniformMatrix2x3fv);
6594
6595    // copy argument location
6596    GLMessage_DataType *arg_location = glmsg.add_args();
6597    arg_location->set_isarray(false);
6598    arg_location->set_type(GLMessage::DataType::INT);
6599    arg_location->add_intvalue(location);
6600
6601    // copy argument count
6602    GLMessage_DataType *arg_count = glmsg.add_args();
6603    arg_count->set_isarray(false);
6604    arg_count->set_type(GLMessage::DataType::INT);
6605    arg_count->add_intvalue(count);
6606
6607    // copy argument transpose
6608    GLMessage_DataType *arg_transpose = glmsg.add_args();
6609    arg_transpose->set_isarray(false);
6610    arg_transpose->set_type(GLMessage::DataType::BOOL);
6611    arg_transpose->add_boolvalue(transpose);
6612
6613    // copy argument value
6614    GLMessage_DataType *arg_value = glmsg.add_args();
6615    arg_value->set_isarray(false);
6616    arg_value->set_type(GLMessage::DataType::INT64);
6617    arg_value->add_int64value((uintptr_t)value);
6618
6619    // call function
6620    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6621    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6622    glContext->hooks->gl.glUniformMatrix2x3fv(location, count, transpose, value);
6623    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6624    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6625
6626    void *pointerArgs[] = {
6627        (void *) value,
6628    };
6629
6630    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6631                              threadStartTime, threadEndTime,
6632                              &glmsg, pointerArgs);
6633    glContext->traceGLMessage(&glmsg);
6634}
6635
6636void GLTrace_glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
6637    GLMessage glmsg;
6638    GLTraceContext *glContext = getGLTraceContext();
6639
6640    glmsg.set_function(GLMessage::glUniformMatrix3x2fv);
6641
6642    // copy argument location
6643    GLMessage_DataType *arg_location = glmsg.add_args();
6644    arg_location->set_isarray(false);
6645    arg_location->set_type(GLMessage::DataType::INT);
6646    arg_location->add_intvalue(location);
6647
6648    // copy argument count
6649    GLMessage_DataType *arg_count = glmsg.add_args();
6650    arg_count->set_isarray(false);
6651    arg_count->set_type(GLMessage::DataType::INT);
6652    arg_count->add_intvalue(count);
6653
6654    // copy argument transpose
6655    GLMessage_DataType *arg_transpose = glmsg.add_args();
6656    arg_transpose->set_isarray(false);
6657    arg_transpose->set_type(GLMessage::DataType::BOOL);
6658    arg_transpose->add_boolvalue(transpose);
6659
6660    // copy argument value
6661    GLMessage_DataType *arg_value = glmsg.add_args();
6662    arg_value->set_isarray(false);
6663    arg_value->set_type(GLMessage::DataType::INT64);
6664    arg_value->add_int64value((uintptr_t)value);
6665
6666    // call function
6667    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6668    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6669    glContext->hooks->gl.glUniformMatrix3x2fv(location, count, transpose, value);
6670    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6671    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6672
6673    void *pointerArgs[] = {
6674        (void *) value,
6675    };
6676
6677    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6678                              threadStartTime, threadEndTime,
6679                              &glmsg, pointerArgs);
6680    glContext->traceGLMessage(&glmsg);
6681}
6682
6683void GLTrace_glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
6684    GLMessage glmsg;
6685    GLTraceContext *glContext = getGLTraceContext();
6686
6687    glmsg.set_function(GLMessage::glUniformMatrix2x4fv);
6688
6689    // copy argument location
6690    GLMessage_DataType *arg_location = glmsg.add_args();
6691    arg_location->set_isarray(false);
6692    arg_location->set_type(GLMessage::DataType::INT);
6693    arg_location->add_intvalue(location);
6694
6695    // copy argument count
6696    GLMessage_DataType *arg_count = glmsg.add_args();
6697    arg_count->set_isarray(false);
6698    arg_count->set_type(GLMessage::DataType::INT);
6699    arg_count->add_intvalue(count);
6700
6701    // copy argument transpose
6702    GLMessage_DataType *arg_transpose = glmsg.add_args();
6703    arg_transpose->set_isarray(false);
6704    arg_transpose->set_type(GLMessage::DataType::BOOL);
6705    arg_transpose->add_boolvalue(transpose);
6706
6707    // copy argument value
6708    GLMessage_DataType *arg_value = glmsg.add_args();
6709    arg_value->set_isarray(false);
6710    arg_value->set_type(GLMessage::DataType::INT64);
6711    arg_value->add_int64value((uintptr_t)value);
6712
6713    // call function
6714    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6715    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6716    glContext->hooks->gl.glUniformMatrix2x4fv(location, count, transpose, value);
6717    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6718    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6719
6720    void *pointerArgs[] = {
6721        (void *) value,
6722    };
6723
6724    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6725                              threadStartTime, threadEndTime,
6726                              &glmsg, pointerArgs);
6727    glContext->traceGLMessage(&glmsg);
6728}
6729
6730void GLTrace_glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
6731    GLMessage glmsg;
6732    GLTraceContext *glContext = getGLTraceContext();
6733
6734    glmsg.set_function(GLMessage::glUniformMatrix4x2fv);
6735
6736    // copy argument location
6737    GLMessage_DataType *arg_location = glmsg.add_args();
6738    arg_location->set_isarray(false);
6739    arg_location->set_type(GLMessage::DataType::INT);
6740    arg_location->add_intvalue(location);
6741
6742    // copy argument count
6743    GLMessage_DataType *arg_count = glmsg.add_args();
6744    arg_count->set_isarray(false);
6745    arg_count->set_type(GLMessage::DataType::INT);
6746    arg_count->add_intvalue(count);
6747
6748    // copy argument transpose
6749    GLMessage_DataType *arg_transpose = glmsg.add_args();
6750    arg_transpose->set_isarray(false);
6751    arg_transpose->set_type(GLMessage::DataType::BOOL);
6752    arg_transpose->add_boolvalue(transpose);
6753
6754    // copy argument value
6755    GLMessage_DataType *arg_value = glmsg.add_args();
6756    arg_value->set_isarray(false);
6757    arg_value->set_type(GLMessage::DataType::INT64);
6758    arg_value->add_int64value((uintptr_t)value);
6759
6760    // call function
6761    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6762    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6763    glContext->hooks->gl.glUniformMatrix4x2fv(location, count, transpose, value);
6764    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6765    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6766
6767    void *pointerArgs[] = {
6768        (void *) value,
6769    };
6770
6771    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6772                              threadStartTime, threadEndTime,
6773                              &glmsg, pointerArgs);
6774    glContext->traceGLMessage(&glmsg);
6775}
6776
6777void GLTrace_glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
6778    GLMessage glmsg;
6779    GLTraceContext *glContext = getGLTraceContext();
6780
6781    glmsg.set_function(GLMessage::glUniformMatrix3x4fv);
6782
6783    // copy argument location
6784    GLMessage_DataType *arg_location = glmsg.add_args();
6785    arg_location->set_isarray(false);
6786    arg_location->set_type(GLMessage::DataType::INT);
6787    arg_location->add_intvalue(location);
6788
6789    // copy argument count
6790    GLMessage_DataType *arg_count = glmsg.add_args();
6791    arg_count->set_isarray(false);
6792    arg_count->set_type(GLMessage::DataType::INT);
6793    arg_count->add_intvalue(count);
6794
6795    // copy argument transpose
6796    GLMessage_DataType *arg_transpose = glmsg.add_args();
6797    arg_transpose->set_isarray(false);
6798    arg_transpose->set_type(GLMessage::DataType::BOOL);
6799    arg_transpose->add_boolvalue(transpose);
6800
6801    // copy argument value
6802    GLMessage_DataType *arg_value = glmsg.add_args();
6803    arg_value->set_isarray(false);
6804    arg_value->set_type(GLMessage::DataType::INT64);
6805    arg_value->add_int64value((uintptr_t)value);
6806
6807    // call function
6808    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6809    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6810    glContext->hooks->gl.glUniformMatrix3x4fv(location, count, transpose, value);
6811    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6812    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6813
6814    void *pointerArgs[] = {
6815        (void *) value,
6816    };
6817
6818    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6819                              threadStartTime, threadEndTime,
6820                              &glmsg, pointerArgs);
6821    glContext->traceGLMessage(&glmsg);
6822}
6823
6824void GLTrace_glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
6825    GLMessage glmsg;
6826    GLTraceContext *glContext = getGLTraceContext();
6827
6828    glmsg.set_function(GLMessage::glUniformMatrix4x3fv);
6829
6830    // copy argument location
6831    GLMessage_DataType *arg_location = glmsg.add_args();
6832    arg_location->set_isarray(false);
6833    arg_location->set_type(GLMessage::DataType::INT);
6834    arg_location->add_intvalue(location);
6835
6836    // copy argument count
6837    GLMessage_DataType *arg_count = glmsg.add_args();
6838    arg_count->set_isarray(false);
6839    arg_count->set_type(GLMessage::DataType::INT);
6840    arg_count->add_intvalue(count);
6841
6842    // copy argument transpose
6843    GLMessage_DataType *arg_transpose = glmsg.add_args();
6844    arg_transpose->set_isarray(false);
6845    arg_transpose->set_type(GLMessage::DataType::BOOL);
6846    arg_transpose->add_boolvalue(transpose);
6847
6848    // copy argument value
6849    GLMessage_DataType *arg_value = glmsg.add_args();
6850    arg_value->set_isarray(false);
6851    arg_value->set_type(GLMessage::DataType::INT64);
6852    arg_value->add_int64value((uintptr_t)value);
6853
6854    // call function
6855    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6856    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6857    glContext->hooks->gl.glUniformMatrix4x3fv(location, count, transpose, value);
6858    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6859    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6860
6861    void *pointerArgs[] = {
6862        (void *) value,
6863    };
6864
6865    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6866                              threadStartTime, threadEndTime,
6867                              &glmsg, pointerArgs);
6868    glContext->traceGLMessage(&glmsg);
6869}
6870
6871void GLTrace_glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) {
6872    GLMessage glmsg;
6873    GLTraceContext *glContext = getGLTraceContext();
6874
6875    glmsg.set_function(GLMessage::glBlitFramebuffer);
6876
6877    // copy argument srcX0
6878    GLMessage_DataType *arg_srcX0 = glmsg.add_args();
6879    arg_srcX0->set_isarray(false);
6880    arg_srcX0->set_type(GLMessage::DataType::INT);
6881    arg_srcX0->add_intvalue(srcX0);
6882
6883    // copy argument srcY0
6884    GLMessage_DataType *arg_srcY0 = glmsg.add_args();
6885    arg_srcY0->set_isarray(false);
6886    arg_srcY0->set_type(GLMessage::DataType::INT);
6887    arg_srcY0->add_intvalue(srcY0);
6888
6889    // copy argument srcX1
6890    GLMessage_DataType *arg_srcX1 = glmsg.add_args();
6891    arg_srcX1->set_isarray(false);
6892    arg_srcX1->set_type(GLMessage::DataType::INT);
6893    arg_srcX1->add_intvalue(srcX1);
6894
6895    // copy argument srcY1
6896    GLMessage_DataType *arg_srcY1 = glmsg.add_args();
6897    arg_srcY1->set_isarray(false);
6898    arg_srcY1->set_type(GLMessage::DataType::INT);
6899    arg_srcY1->add_intvalue(srcY1);
6900
6901    // copy argument dstX0
6902    GLMessage_DataType *arg_dstX0 = glmsg.add_args();
6903    arg_dstX0->set_isarray(false);
6904    arg_dstX0->set_type(GLMessage::DataType::INT);
6905    arg_dstX0->add_intvalue(dstX0);
6906
6907    // copy argument dstY0
6908    GLMessage_DataType *arg_dstY0 = glmsg.add_args();
6909    arg_dstY0->set_isarray(false);
6910    arg_dstY0->set_type(GLMessage::DataType::INT);
6911    arg_dstY0->add_intvalue(dstY0);
6912
6913    // copy argument dstX1
6914    GLMessage_DataType *arg_dstX1 = glmsg.add_args();
6915    arg_dstX1->set_isarray(false);
6916    arg_dstX1->set_type(GLMessage::DataType::INT);
6917    arg_dstX1->add_intvalue(dstX1);
6918
6919    // copy argument dstY1
6920    GLMessage_DataType *arg_dstY1 = glmsg.add_args();
6921    arg_dstY1->set_isarray(false);
6922    arg_dstY1->set_type(GLMessage::DataType::INT);
6923    arg_dstY1->add_intvalue(dstY1);
6924
6925    // copy argument mask
6926    GLMessage_DataType *arg_mask = glmsg.add_args();
6927    arg_mask->set_isarray(false);
6928    arg_mask->set_type(GLMessage::DataType::INT);
6929    arg_mask->add_intvalue(mask);
6930
6931    // copy argument filter
6932    GLMessage_DataType *arg_filter = glmsg.add_args();
6933    arg_filter->set_isarray(false);
6934    arg_filter->set_type(GLMessage::DataType::ENUM);
6935    arg_filter->add_intvalue((int)filter);
6936
6937    // call function
6938    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6939    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6940    glContext->hooks->gl.glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
6941    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6942    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6943
6944    void *pointerArgs[] = {
6945    };
6946
6947    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6948                              threadStartTime, threadEndTime,
6949                              &glmsg, pointerArgs);
6950    glContext->traceGLMessage(&glmsg);
6951}
6952
6953void GLTrace_glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
6954    GLMessage glmsg;
6955    GLTraceContext *glContext = getGLTraceContext();
6956
6957    glmsg.set_function(GLMessage::glRenderbufferStorageMultisample);
6958
6959    // copy argument target
6960    GLMessage_DataType *arg_target = glmsg.add_args();
6961    arg_target->set_isarray(false);
6962    arg_target->set_type(GLMessage::DataType::ENUM);
6963    arg_target->add_intvalue((int)target);
6964
6965    // copy argument samples
6966    GLMessage_DataType *arg_samples = glmsg.add_args();
6967    arg_samples->set_isarray(false);
6968    arg_samples->set_type(GLMessage::DataType::INT);
6969    arg_samples->add_intvalue(samples);
6970
6971    // copy argument internalformat
6972    GLMessage_DataType *arg_internalformat = glmsg.add_args();
6973    arg_internalformat->set_isarray(false);
6974    arg_internalformat->set_type(GLMessage::DataType::ENUM);
6975    arg_internalformat->add_intvalue((int)internalformat);
6976
6977    // copy argument width
6978    GLMessage_DataType *arg_width = glmsg.add_args();
6979    arg_width->set_isarray(false);
6980    arg_width->set_type(GLMessage::DataType::INT);
6981    arg_width->add_intvalue(width);
6982
6983    // copy argument height
6984    GLMessage_DataType *arg_height = glmsg.add_args();
6985    arg_height->set_isarray(false);
6986    arg_height->set_type(GLMessage::DataType::INT);
6987    arg_height->add_intvalue(height);
6988
6989    // call function
6990    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6991    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6992    glContext->hooks->gl.glRenderbufferStorageMultisample(target, samples, internalformat, width, height);
6993    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6994    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6995
6996    void *pointerArgs[] = {
6997    };
6998
6999    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7000                              threadStartTime, threadEndTime,
7001                              &glmsg, pointerArgs);
7002    glContext->traceGLMessage(&glmsg);
7003}
7004
7005void GLTrace_glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) {
7006    GLMessage glmsg;
7007    GLTraceContext *glContext = getGLTraceContext();
7008
7009    glmsg.set_function(GLMessage::glFramebufferTextureLayer);
7010
7011    // copy argument target
7012    GLMessage_DataType *arg_target = glmsg.add_args();
7013    arg_target->set_isarray(false);
7014    arg_target->set_type(GLMessage::DataType::ENUM);
7015    arg_target->add_intvalue((int)target);
7016
7017    // copy argument attachment
7018    GLMessage_DataType *arg_attachment = glmsg.add_args();
7019    arg_attachment->set_isarray(false);
7020    arg_attachment->set_type(GLMessage::DataType::ENUM);
7021    arg_attachment->add_intvalue((int)attachment);
7022
7023    // copy argument texture
7024    GLMessage_DataType *arg_texture = glmsg.add_args();
7025    arg_texture->set_isarray(false);
7026    arg_texture->set_type(GLMessage::DataType::INT);
7027    arg_texture->add_intvalue(texture);
7028
7029    // copy argument level
7030    GLMessage_DataType *arg_level = glmsg.add_args();
7031    arg_level->set_isarray(false);
7032    arg_level->set_type(GLMessage::DataType::INT);
7033    arg_level->add_intvalue(level);
7034
7035    // copy argument layer
7036    GLMessage_DataType *arg_layer = glmsg.add_args();
7037    arg_layer->set_isarray(false);
7038    arg_layer->set_type(GLMessage::DataType::INT);
7039    arg_layer->add_intvalue(layer);
7040
7041    // call function
7042    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7043    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7044    glContext->hooks->gl.glFramebufferTextureLayer(target, attachment, texture, level, layer);
7045    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7046    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7047
7048    void *pointerArgs[] = {
7049    };
7050
7051    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7052                              threadStartTime, threadEndTime,
7053                              &glmsg, pointerArgs);
7054    glContext->traceGLMessage(&glmsg);
7055}
7056
7057void * GLTrace_glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) {
7058    GLMessage glmsg;
7059    GLTraceContext *glContext = getGLTraceContext();
7060
7061    glmsg.set_function(GLMessage::glMapBufferRange);
7062
7063    // copy argument target
7064    GLMessage_DataType *arg_target = glmsg.add_args();
7065    arg_target->set_isarray(false);
7066    arg_target->set_type(GLMessage::DataType::ENUM);
7067    arg_target->add_intvalue((int)target);
7068
7069    // copy argument offset
7070    GLMessage_DataType *arg_offset = glmsg.add_args();
7071    arg_offset->set_isarray(false);
7072    arg_offset->set_type(GLMessage::DataType::INT);
7073    arg_offset->add_intvalue(offset);
7074
7075    // copy argument length
7076    GLMessage_DataType *arg_length = glmsg.add_args();
7077    arg_length->set_isarray(false);
7078    arg_length->set_type(GLMessage::DataType::INT);
7079    arg_length->add_intvalue(length);
7080
7081    // copy argument access
7082    GLMessage_DataType *arg_access = glmsg.add_args();
7083    arg_access->set_isarray(false);
7084    arg_access->set_type(GLMessage::DataType::INT);
7085    arg_access->add_intvalue(access);
7086
7087    // call function
7088    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7089    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7090    void * retValue = glContext->hooks->gl.glMapBufferRange(target, offset, length, access);
7091    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7092    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7093
7094    // set return value
7095    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
7096    rt->set_isarray(false);
7097    rt->set_type(GLMessage::DataType::INT64);
7098    rt->add_int64value((uintptr_t)retValue);
7099
7100    void *pointerArgs[] = {
7101        (void *) retValue,
7102    };
7103
7104    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7105                              threadStartTime, threadEndTime,
7106                              &glmsg, pointerArgs);
7107    glContext->traceGLMessage(&glmsg);
7108
7109    return retValue;
7110}
7111
7112void GLTrace_glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) {
7113    GLMessage glmsg;
7114    GLTraceContext *glContext = getGLTraceContext();
7115
7116    glmsg.set_function(GLMessage::glFlushMappedBufferRange);
7117
7118    // copy argument target
7119    GLMessage_DataType *arg_target = glmsg.add_args();
7120    arg_target->set_isarray(false);
7121    arg_target->set_type(GLMessage::DataType::ENUM);
7122    arg_target->add_intvalue((int)target);
7123
7124    // copy argument offset
7125    GLMessage_DataType *arg_offset = glmsg.add_args();
7126    arg_offset->set_isarray(false);
7127    arg_offset->set_type(GLMessage::DataType::INT);
7128    arg_offset->add_intvalue(offset);
7129
7130    // copy argument length
7131    GLMessage_DataType *arg_length = glmsg.add_args();
7132    arg_length->set_isarray(false);
7133    arg_length->set_type(GLMessage::DataType::INT);
7134    arg_length->add_intvalue(length);
7135
7136    // call function
7137    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7138    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7139    glContext->hooks->gl.glFlushMappedBufferRange(target, offset, length);
7140    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7141    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7142
7143    void *pointerArgs[] = {
7144    };
7145
7146    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7147                              threadStartTime, threadEndTime,
7148                              &glmsg, pointerArgs);
7149    glContext->traceGLMessage(&glmsg);
7150}
7151
7152void GLTrace_glBindVertexArray(GLuint array) {
7153    GLMessage glmsg;
7154    GLTraceContext *glContext = getGLTraceContext();
7155
7156    glmsg.set_function(GLMessage::glBindVertexArray);
7157
7158    // copy argument array
7159    GLMessage_DataType *arg_array = glmsg.add_args();
7160    arg_array->set_isarray(false);
7161    arg_array->set_type(GLMessage::DataType::INT);
7162    arg_array->add_intvalue(array);
7163
7164    // call function
7165    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7166    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7167    glContext->hooks->gl.glBindVertexArray(array);
7168    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7169    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7170
7171    void *pointerArgs[] = {
7172    };
7173
7174    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7175                              threadStartTime, threadEndTime,
7176                              &glmsg, pointerArgs);
7177    glContext->traceGLMessage(&glmsg);
7178}
7179
7180void GLTrace_glDeleteVertexArrays(GLsizei n, const GLuint * arrays) {
7181    GLMessage glmsg;
7182    GLTraceContext *glContext = getGLTraceContext();
7183
7184    glmsg.set_function(GLMessage::glDeleteVertexArrays);
7185
7186    // copy argument n
7187    GLMessage_DataType *arg_n = glmsg.add_args();
7188    arg_n->set_isarray(false);
7189    arg_n->set_type(GLMessage::DataType::INT);
7190    arg_n->add_intvalue(n);
7191
7192    // copy argument arrays
7193    GLMessage_DataType *arg_arrays = glmsg.add_args();
7194    arg_arrays->set_isarray(false);
7195    arg_arrays->set_type(GLMessage::DataType::INT64);
7196    arg_arrays->add_int64value((uintptr_t)arrays);
7197
7198    // call function
7199    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7200    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7201    glContext->hooks->gl.glDeleteVertexArrays(n, arrays);
7202    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7203    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7204
7205    void *pointerArgs[] = {
7206        (void *) arrays,
7207    };
7208
7209    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7210                              threadStartTime, threadEndTime,
7211                              &glmsg, pointerArgs);
7212    glContext->traceGLMessage(&glmsg);
7213}
7214
7215void GLTrace_glGenVertexArrays(GLsizei n, GLuint * arrays) {
7216    GLMessage glmsg;
7217    GLTraceContext *glContext = getGLTraceContext();
7218
7219    glmsg.set_function(GLMessage::glGenVertexArrays);
7220
7221    // copy argument n
7222    GLMessage_DataType *arg_n = glmsg.add_args();
7223    arg_n->set_isarray(false);
7224    arg_n->set_type(GLMessage::DataType::INT);
7225    arg_n->add_intvalue(n);
7226
7227    // copy argument arrays
7228    GLMessage_DataType *arg_arrays = glmsg.add_args();
7229    arg_arrays->set_isarray(false);
7230    arg_arrays->set_type(GLMessage::DataType::INT64);
7231    arg_arrays->add_int64value((uintptr_t)arrays);
7232
7233    // call function
7234    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7235    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7236    glContext->hooks->gl.glGenVertexArrays(n, arrays);
7237    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7238    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7239
7240    void *pointerArgs[] = {
7241        (void *) arrays,
7242    };
7243
7244    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7245                              threadStartTime, threadEndTime,
7246                              &glmsg, pointerArgs);
7247    glContext->traceGLMessage(&glmsg);
7248}
7249
7250GLboolean GLTrace_glIsVertexArray(GLuint array) {
7251    GLMessage glmsg;
7252    GLTraceContext *glContext = getGLTraceContext();
7253
7254    glmsg.set_function(GLMessage::glIsVertexArray);
7255
7256    // copy argument array
7257    GLMessage_DataType *arg_array = glmsg.add_args();
7258    arg_array->set_isarray(false);
7259    arg_array->set_type(GLMessage::DataType::INT);
7260    arg_array->add_intvalue(array);
7261
7262    // call function
7263    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7264    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7265    GLboolean retValue = glContext->hooks->gl.glIsVertexArray(array);
7266    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7267    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7268
7269    // set return value
7270    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
7271    rt->set_isarray(false);
7272    rt->set_type(GLMessage::DataType::BOOL);
7273    rt->add_boolvalue(retValue);
7274
7275    void *pointerArgs[] = {
7276    };
7277
7278    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7279                              threadStartTime, threadEndTime,
7280                              &glmsg, pointerArgs);
7281    glContext->traceGLMessage(&glmsg);
7282
7283    return retValue;
7284}
7285
7286void GLTrace_glGetIntegeri_v(GLenum target, GLuint index, GLint * data) {
7287    GLMessage glmsg;
7288    GLTraceContext *glContext = getGLTraceContext();
7289
7290    glmsg.set_function(GLMessage::glGetIntegeri_v);
7291
7292    // copy argument target
7293    GLMessage_DataType *arg_target = glmsg.add_args();
7294    arg_target->set_isarray(false);
7295    arg_target->set_type(GLMessage::DataType::ENUM);
7296    arg_target->add_intvalue((int)target);
7297
7298    // copy argument index
7299    GLMessage_DataType *arg_index = glmsg.add_args();
7300    arg_index->set_isarray(false);
7301    arg_index->set_type(GLMessage::DataType::INT);
7302    arg_index->add_intvalue(index);
7303
7304    // copy argument data
7305    GLMessage_DataType *arg_data = glmsg.add_args();
7306    arg_data->set_isarray(false);
7307    arg_data->set_type(GLMessage::DataType::INT64);
7308    arg_data->add_int64value((uintptr_t)data);
7309
7310    // call function
7311    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7312    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7313    glContext->hooks->gl.glGetIntegeri_v(target, index, data);
7314    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7315    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7316
7317    void *pointerArgs[] = {
7318        (void *) data,
7319    };
7320
7321    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7322                              threadStartTime, threadEndTime,
7323                              &glmsg, pointerArgs);
7324    glContext->traceGLMessage(&glmsg);
7325}
7326
7327void GLTrace_glBeginTransformFeedback(GLenum primitiveMode) {
7328    GLMessage glmsg;
7329    GLTraceContext *glContext = getGLTraceContext();
7330
7331    glmsg.set_function(GLMessage::glBeginTransformFeedback);
7332
7333    // copy argument primitiveMode
7334    GLMessage_DataType *arg_primitiveMode = glmsg.add_args();
7335    arg_primitiveMode->set_isarray(false);
7336    arg_primitiveMode->set_type(GLMessage::DataType::ENUM);
7337    arg_primitiveMode->add_intvalue((int)primitiveMode);
7338
7339    // call function
7340    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7341    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7342    glContext->hooks->gl.glBeginTransformFeedback(primitiveMode);
7343    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7344    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7345
7346    void *pointerArgs[] = {
7347    };
7348
7349    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7350                              threadStartTime, threadEndTime,
7351                              &glmsg, pointerArgs);
7352    glContext->traceGLMessage(&glmsg);
7353}
7354
7355void GLTrace_glEndTransformFeedback(void) {
7356    GLMessage glmsg;
7357    GLTraceContext *glContext = getGLTraceContext();
7358
7359    glmsg.set_function(GLMessage::glEndTransformFeedback);
7360
7361    // call function
7362    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7363    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7364    glContext->hooks->gl.glEndTransformFeedback();
7365    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7366    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7367
7368    void *pointerArgs[] = {
7369    };
7370
7371    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7372                              threadStartTime, threadEndTime,
7373                              &glmsg, pointerArgs);
7374    glContext->traceGLMessage(&glmsg);
7375}
7376
7377void GLTrace_glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) {
7378    GLMessage glmsg;
7379    GLTraceContext *glContext = getGLTraceContext();
7380
7381    glmsg.set_function(GLMessage::glBindBufferRange);
7382
7383    // copy argument target
7384    GLMessage_DataType *arg_target = glmsg.add_args();
7385    arg_target->set_isarray(false);
7386    arg_target->set_type(GLMessage::DataType::ENUM);
7387    arg_target->add_intvalue((int)target);
7388
7389    // copy argument index
7390    GLMessage_DataType *arg_index = glmsg.add_args();
7391    arg_index->set_isarray(false);
7392    arg_index->set_type(GLMessage::DataType::INT);
7393    arg_index->add_intvalue(index);
7394
7395    // copy argument buffer
7396    GLMessage_DataType *arg_buffer = glmsg.add_args();
7397    arg_buffer->set_isarray(false);
7398    arg_buffer->set_type(GLMessage::DataType::INT);
7399    arg_buffer->add_intvalue(buffer);
7400
7401    // copy argument offset
7402    GLMessage_DataType *arg_offset = glmsg.add_args();
7403    arg_offset->set_isarray(false);
7404    arg_offset->set_type(GLMessage::DataType::INT);
7405    arg_offset->add_intvalue(offset);
7406
7407    // copy argument size
7408    GLMessage_DataType *arg_size = glmsg.add_args();
7409    arg_size->set_isarray(false);
7410    arg_size->set_type(GLMessage::DataType::INT);
7411    arg_size->add_intvalue(size);
7412
7413    // call function
7414    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7415    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7416    glContext->hooks->gl.glBindBufferRange(target, index, buffer, offset, size);
7417    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7418    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7419
7420    void *pointerArgs[] = {
7421    };
7422
7423    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7424                              threadStartTime, threadEndTime,
7425                              &glmsg, pointerArgs);
7426    glContext->traceGLMessage(&glmsg);
7427}
7428
7429void GLTrace_glBindBufferBase(GLenum target, GLuint index, GLuint buffer) {
7430    GLMessage glmsg;
7431    GLTraceContext *glContext = getGLTraceContext();
7432
7433    glmsg.set_function(GLMessage::glBindBufferBase);
7434
7435    // copy argument target
7436    GLMessage_DataType *arg_target = glmsg.add_args();
7437    arg_target->set_isarray(false);
7438    arg_target->set_type(GLMessage::DataType::ENUM);
7439    arg_target->add_intvalue((int)target);
7440
7441    // copy argument index
7442    GLMessage_DataType *arg_index = glmsg.add_args();
7443    arg_index->set_isarray(false);
7444    arg_index->set_type(GLMessage::DataType::INT);
7445    arg_index->add_intvalue(index);
7446
7447    // copy argument buffer
7448    GLMessage_DataType *arg_buffer = glmsg.add_args();
7449    arg_buffer->set_isarray(false);
7450    arg_buffer->set_type(GLMessage::DataType::INT);
7451    arg_buffer->add_intvalue(buffer);
7452
7453    // call function
7454    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7455    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7456    glContext->hooks->gl.glBindBufferBase(target, index, buffer);
7457    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7458    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7459
7460    void *pointerArgs[] = {
7461    };
7462
7463    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7464                              threadStartTime, threadEndTime,
7465                              &glmsg, pointerArgs);
7466    glContext->traceGLMessage(&glmsg);
7467}
7468
7469void GLTrace_glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode) {
7470    GLMessage glmsg;
7471    GLTraceContext *glContext = getGLTraceContext();
7472
7473    glmsg.set_function(GLMessage::glTransformFeedbackVaryings);
7474
7475    // copy argument program
7476    GLMessage_DataType *arg_program = glmsg.add_args();
7477    arg_program->set_isarray(false);
7478    arg_program->set_type(GLMessage::DataType::INT);
7479    arg_program->add_intvalue(program);
7480
7481    // copy argument count
7482    GLMessage_DataType *arg_count = glmsg.add_args();
7483    arg_count->set_isarray(false);
7484    arg_count->set_type(GLMessage::DataType::INT);
7485    arg_count->add_intvalue(count);
7486
7487    // copy argument varyings
7488    GLMessage_DataType *arg_varyings = glmsg.add_args();
7489    arg_varyings->set_isarray(false);
7490    arg_varyings->set_type(GLMessage::DataType::INT64);
7491    arg_varyings->add_int64value((uintptr_t)varyings);
7492
7493    // copy argument bufferMode
7494    GLMessage_DataType *arg_bufferMode = glmsg.add_args();
7495    arg_bufferMode->set_isarray(false);
7496    arg_bufferMode->set_type(GLMessage::DataType::ENUM);
7497    arg_bufferMode->add_intvalue((int)bufferMode);
7498
7499    // call function
7500    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7501    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7502    glContext->hooks->gl.glTransformFeedbackVaryings(program, count, varyings, bufferMode);
7503    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7504    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7505
7506    void *pointerArgs[] = {
7507        (void *) varyings,
7508    };
7509
7510    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7511                              threadStartTime, threadEndTime,
7512                              &glmsg, pointerArgs);
7513    glContext->traceGLMessage(&glmsg);
7514}
7515
7516void GLTrace_glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name) {
7517    GLMessage glmsg;
7518    GLTraceContext *glContext = getGLTraceContext();
7519
7520    glmsg.set_function(GLMessage::glGetTransformFeedbackVarying);
7521
7522    // copy argument program
7523    GLMessage_DataType *arg_program = glmsg.add_args();
7524    arg_program->set_isarray(false);
7525    arg_program->set_type(GLMessage::DataType::INT);
7526    arg_program->add_intvalue(program);
7527
7528    // copy argument index
7529    GLMessage_DataType *arg_index = glmsg.add_args();
7530    arg_index->set_isarray(false);
7531    arg_index->set_type(GLMessage::DataType::INT);
7532    arg_index->add_intvalue(index);
7533
7534    // copy argument bufSize
7535    GLMessage_DataType *arg_bufSize = glmsg.add_args();
7536    arg_bufSize->set_isarray(false);
7537    arg_bufSize->set_type(GLMessage::DataType::INT);
7538    arg_bufSize->add_intvalue(bufSize);
7539
7540    // copy argument length
7541    GLMessage_DataType *arg_length = glmsg.add_args();
7542    arg_length->set_isarray(false);
7543    arg_length->set_type(GLMessage::DataType::INT64);
7544    arg_length->add_int64value((uintptr_t)length);
7545
7546    // copy argument size
7547    GLMessage_DataType *arg_size = glmsg.add_args();
7548    arg_size->set_isarray(false);
7549    arg_size->set_type(GLMessage::DataType::INT64);
7550    arg_size->add_int64value((uintptr_t)size);
7551
7552    // copy argument type
7553    GLMessage_DataType *arg_type = glmsg.add_args();
7554    arg_type->set_isarray(false);
7555    arg_type->set_type(GLMessage::DataType::INT64);
7556    arg_type->add_int64value((uintptr_t)type);
7557
7558    // copy argument name
7559    GLMessage_DataType *arg_name = glmsg.add_args();
7560    arg_name->set_isarray(false);
7561    arg_name->set_type(GLMessage::DataType::INT64);
7562    arg_name->add_int64value((uintptr_t)name);
7563
7564    // call function
7565    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7566    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7567    glContext->hooks->gl.glGetTransformFeedbackVarying(program, index, bufSize, length, size, type, name);
7568    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7569    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7570
7571    void *pointerArgs[] = {
7572        (void *) length,
7573        (void *) size,
7574        (void *) type,
7575        (void *) name,
7576    };
7577
7578    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7579                              threadStartTime, threadEndTime,
7580                              &glmsg, pointerArgs);
7581    glContext->traceGLMessage(&glmsg);
7582}
7583
7584void GLTrace_glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer) {
7585    GLMessage glmsg;
7586    GLTraceContext *glContext = getGLTraceContext();
7587
7588    glmsg.set_function(GLMessage::glVertexAttribIPointer);
7589
7590    // copy argument index
7591    GLMessage_DataType *arg_index = glmsg.add_args();
7592    arg_index->set_isarray(false);
7593    arg_index->set_type(GLMessage::DataType::INT);
7594    arg_index->add_intvalue(index);
7595
7596    // copy argument size
7597    GLMessage_DataType *arg_size = glmsg.add_args();
7598    arg_size->set_isarray(false);
7599    arg_size->set_type(GLMessage::DataType::INT);
7600    arg_size->add_intvalue(size);
7601
7602    // copy argument type
7603    GLMessage_DataType *arg_type = glmsg.add_args();
7604    arg_type->set_isarray(false);
7605    arg_type->set_type(GLMessage::DataType::ENUM);
7606    arg_type->add_intvalue((int)type);
7607
7608    // copy argument stride
7609    GLMessage_DataType *arg_stride = glmsg.add_args();
7610    arg_stride->set_isarray(false);
7611    arg_stride->set_type(GLMessage::DataType::INT);
7612    arg_stride->add_intvalue(stride);
7613
7614    // copy argument pointer
7615    GLMessage_DataType *arg_pointer = glmsg.add_args();
7616    arg_pointer->set_isarray(false);
7617    arg_pointer->set_type(GLMessage::DataType::INT64);
7618    arg_pointer->add_int64value((uintptr_t)pointer);
7619
7620    // call function
7621    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7622    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7623    glContext->hooks->gl.glVertexAttribIPointer(index, size, type, stride, pointer);
7624    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7625    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7626
7627    void *pointerArgs[] = {
7628        (void *) pointer,
7629    };
7630
7631    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7632                              threadStartTime, threadEndTime,
7633                              &glmsg, pointerArgs);
7634    glContext->traceGLMessage(&glmsg);
7635}
7636
7637void GLTrace_glGetVertexAttribIiv(GLuint index, GLenum pname, GLint * params) {
7638    GLMessage glmsg;
7639    GLTraceContext *glContext = getGLTraceContext();
7640
7641    glmsg.set_function(GLMessage::glGetVertexAttribIiv);
7642
7643    // copy argument index
7644    GLMessage_DataType *arg_index = glmsg.add_args();
7645    arg_index->set_isarray(false);
7646    arg_index->set_type(GLMessage::DataType::INT);
7647    arg_index->add_intvalue(index);
7648
7649    // copy argument pname
7650    GLMessage_DataType *arg_pname = glmsg.add_args();
7651    arg_pname->set_isarray(false);
7652    arg_pname->set_type(GLMessage::DataType::ENUM);
7653    arg_pname->add_intvalue((int)pname);
7654
7655    // copy argument params
7656    GLMessage_DataType *arg_params = glmsg.add_args();
7657    arg_params->set_isarray(false);
7658    arg_params->set_type(GLMessage::DataType::INT64);
7659    arg_params->add_int64value((uintptr_t)params);
7660
7661    // call function
7662    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7663    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7664    glContext->hooks->gl.glGetVertexAttribIiv(index, pname, params);
7665    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7666    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7667
7668    void *pointerArgs[] = {
7669        (void *) params,
7670    };
7671
7672    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7673                              threadStartTime, threadEndTime,
7674                              &glmsg, pointerArgs);
7675    glContext->traceGLMessage(&glmsg);
7676}
7677
7678void GLTrace_glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint * params) {
7679    GLMessage glmsg;
7680    GLTraceContext *glContext = getGLTraceContext();
7681
7682    glmsg.set_function(GLMessage::glGetVertexAttribIuiv);
7683
7684    // copy argument index
7685    GLMessage_DataType *arg_index = glmsg.add_args();
7686    arg_index->set_isarray(false);
7687    arg_index->set_type(GLMessage::DataType::INT);
7688    arg_index->add_intvalue(index);
7689
7690    // copy argument pname
7691    GLMessage_DataType *arg_pname = glmsg.add_args();
7692    arg_pname->set_isarray(false);
7693    arg_pname->set_type(GLMessage::DataType::ENUM);
7694    arg_pname->add_intvalue((int)pname);
7695
7696    // copy argument params
7697    GLMessage_DataType *arg_params = glmsg.add_args();
7698    arg_params->set_isarray(false);
7699    arg_params->set_type(GLMessage::DataType::INT64);
7700    arg_params->add_int64value((uintptr_t)params);
7701
7702    // call function
7703    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7704    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7705    glContext->hooks->gl.glGetVertexAttribIuiv(index, pname, params);
7706    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7707    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7708
7709    void *pointerArgs[] = {
7710        (void *) params,
7711    };
7712
7713    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7714                              threadStartTime, threadEndTime,
7715                              &glmsg, pointerArgs);
7716    glContext->traceGLMessage(&glmsg);
7717}
7718
7719void GLTrace_glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) {
7720    GLMessage glmsg;
7721    GLTraceContext *glContext = getGLTraceContext();
7722
7723    glmsg.set_function(GLMessage::glVertexAttribI4i);
7724
7725    // copy argument index
7726    GLMessage_DataType *arg_index = glmsg.add_args();
7727    arg_index->set_isarray(false);
7728    arg_index->set_type(GLMessage::DataType::INT);
7729    arg_index->add_intvalue(index);
7730
7731    // copy argument x
7732    GLMessage_DataType *arg_x = glmsg.add_args();
7733    arg_x->set_isarray(false);
7734    arg_x->set_type(GLMessage::DataType::INT);
7735    arg_x->add_intvalue(x);
7736
7737    // copy argument y
7738    GLMessage_DataType *arg_y = glmsg.add_args();
7739    arg_y->set_isarray(false);
7740    arg_y->set_type(GLMessage::DataType::INT);
7741    arg_y->add_intvalue(y);
7742
7743    // copy argument z
7744    GLMessage_DataType *arg_z = glmsg.add_args();
7745    arg_z->set_isarray(false);
7746    arg_z->set_type(GLMessage::DataType::INT);
7747    arg_z->add_intvalue(z);
7748
7749    // copy argument w
7750    GLMessage_DataType *arg_w = glmsg.add_args();
7751    arg_w->set_isarray(false);
7752    arg_w->set_type(GLMessage::DataType::INT);
7753    arg_w->add_intvalue(w);
7754
7755    // call function
7756    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7757    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7758    glContext->hooks->gl.glVertexAttribI4i(index, x, y, z, w);
7759    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7760    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7761
7762    void *pointerArgs[] = {
7763    };
7764
7765    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7766                              threadStartTime, threadEndTime,
7767                              &glmsg, pointerArgs);
7768    glContext->traceGLMessage(&glmsg);
7769}
7770
7771void GLTrace_glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) {
7772    GLMessage glmsg;
7773    GLTraceContext *glContext = getGLTraceContext();
7774
7775    glmsg.set_function(GLMessage::glVertexAttribI4ui);
7776
7777    // copy argument index
7778    GLMessage_DataType *arg_index = glmsg.add_args();
7779    arg_index->set_isarray(false);
7780    arg_index->set_type(GLMessage::DataType::INT);
7781    arg_index->add_intvalue(index);
7782
7783    // copy argument x
7784    GLMessage_DataType *arg_x = glmsg.add_args();
7785    arg_x->set_isarray(false);
7786    arg_x->set_type(GLMessage::DataType::INT);
7787    arg_x->add_intvalue(x);
7788
7789    // copy argument y
7790    GLMessage_DataType *arg_y = glmsg.add_args();
7791    arg_y->set_isarray(false);
7792    arg_y->set_type(GLMessage::DataType::INT);
7793    arg_y->add_intvalue(y);
7794
7795    // copy argument z
7796    GLMessage_DataType *arg_z = glmsg.add_args();
7797    arg_z->set_isarray(false);
7798    arg_z->set_type(GLMessage::DataType::INT);
7799    arg_z->add_intvalue(z);
7800
7801    // copy argument w
7802    GLMessage_DataType *arg_w = glmsg.add_args();
7803    arg_w->set_isarray(false);
7804    arg_w->set_type(GLMessage::DataType::INT);
7805    arg_w->add_intvalue(w);
7806
7807    // call function
7808    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7809    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7810    glContext->hooks->gl.glVertexAttribI4ui(index, x, y, z, w);
7811    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7812    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7813
7814    void *pointerArgs[] = {
7815    };
7816
7817    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7818                              threadStartTime, threadEndTime,
7819                              &glmsg, pointerArgs);
7820    glContext->traceGLMessage(&glmsg);
7821}
7822
7823void GLTrace_glVertexAttribI4iv(GLuint index, const GLint * v) {
7824    GLMessage glmsg;
7825    GLTraceContext *glContext = getGLTraceContext();
7826
7827    glmsg.set_function(GLMessage::glVertexAttribI4iv);
7828
7829    // copy argument index
7830    GLMessage_DataType *arg_index = glmsg.add_args();
7831    arg_index->set_isarray(false);
7832    arg_index->set_type(GLMessage::DataType::INT);
7833    arg_index->add_intvalue(index);
7834
7835    // copy argument v
7836    GLMessage_DataType *arg_v = glmsg.add_args();
7837    arg_v->set_isarray(false);
7838    arg_v->set_type(GLMessage::DataType::INT64);
7839    arg_v->add_int64value((uintptr_t)v);
7840
7841    // call function
7842    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7843    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7844    glContext->hooks->gl.glVertexAttribI4iv(index, v);
7845    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7846    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7847
7848    void *pointerArgs[] = {
7849        (void *) v,
7850    };
7851
7852    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7853                              threadStartTime, threadEndTime,
7854                              &glmsg, pointerArgs);
7855    glContext->traceGLMessage(&glmsg);
7856}
7857
7858void GLTrace_glVertexAttribI4uiv(GLuint index, const GLuint * v) {
7859    GLMessage glmsg;
7860    GLTraceContext *glContext = getGLTraceContext();
7861
7862    glmsg.set_function(GLMessage::glVertexAttribI4uiv);
7863
7864    // copy argument index
7865    GLMessage_DataType *arg_index = glmsg.add_args();
7866    arg_index->set_isarray(false);
7867    arg_index->set_type(GLMessage::DataType::INT);
7868    arg_index->add_intvalue(index);
7869
7870    // copy argument v
7871    GLMessage_DataType *arg_v = glmsg.add_args();
7872    arg_v->set_isarray(false);
7873    arg_v->set_type(GLMessage::DataType::INT64);
7874    arg_v->add_int64value((uintptr_t)v);
7875
7876    // call function
7877    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7878    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7879    glContext->hooks->gl.glVertexAttribI4uiv(index, v);
7880    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7881    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7882
7883    void *pointerArgs[] = {
7884        (void *) v,
7885    };
7886
7887    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7888                              threadStartTime, threadEndTime,
7889                              &glmsg, pointerArgs);
7890    glContext->traceGLMessage(&glmsg);
7891}
7892
7893void GLTrace_glGetUniformuiv(GLuint program, GLint location, GLuint * params) {
7894    GLMessage glmsg;
7895    GLTraceContext *glContext = getGLTraceContext();
7896
7897    glmsg.set_function(GLMessage::glGetUniformuiv);
7898
7899    // copy argument program
7900    GLMessage_DataType *arg_program = glmsg.add_args();
7901    arg_program->set_isarray(false);
7902    arg_program->set_type(GLMessage::DataType::INT);
7903    arg_program->add_intvalue(program);
7904
7905    // copy argument location
7906    GLMessage_DataType *arg_location = glmsg.add_args();
7907    arg_location->set_isarray(false);
7908    arg_location->set_type(GLMessage::DataType::INT);
7909    arg_location->add_intvalue(location);
7910
7911    // copy argument params
7912    GLMessage_DataType *arg_params = glmsg.add_args();
7913    arg_params->set_isarray(false);
7914    arg_params->set_type(GLMessage::DataType::INT64);
7915    arg_params->add_int64value((uintptr_t)params);
7916
7917    // call function
7918    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7919    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7920    glContext->hooks->gl.glGetUniformuiv(program, location, params);
7921    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7922    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7923
7924    void *pointerArgs[] = {
7925        (void *) params,
7926    };
7927
7928    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7929                              threadStartTime, threadEndTime,
7930                              &glmsg, pointerArgs);
7931    glContext->traceGLMessage(&glmsg);
7932}
7933
7934GLint GLTrace_glGetFragDataLocation(GLuint program, const GLchar * name) {
7935    GLMessage glmsg;
7936    GLTraceContext *glContext = getGLTraceContext();
7937
7938    glmsg.set_function(GLMessage::glGetFragDataLocation);
7939
7940    // copy argument program
7941    GLMessage_DataType *arg_program = glmsg.add_args();
7942    arg_program->set_isarray(false);
7943    arg_program->set_type(GLMessage::DataType::INT);
7944    arg_program->add_intvalue(program);
7945
7946    // copy argument name
7947    GLMessage_DataType *arg_name = glmsg.add_args();
7948    arg_name->set_isarray(false);
7949    arg_name->set_type(GLMessage::DataType::INT64);
7950    arg_name->add_int64value((uintptr_t)name);
7951
7952    // call function
7953    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7954    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7955    GLint retValue = glContext->hooks->gl.glGetFragDataLocation(program, name);
7956    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7957    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7958
7959    // set return value
7960    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
7961    rt->set_isarray(false);
7962    rt->set_type(GLMessage::DataType::INT);
7963    rt->add_intvalue(retValue);
7964
7965    void *pointerArgs[] = {
7966        (void *) name,
7967    };
7968
7969    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7970                              threadStartTime, threadEndTime,
7971                              &glmsg, pointerArgs);
7972    glContext->traceGLMessage(&glmsg);
7973
7974    return retValue;
7975}
7976
7977void GLTrace_glUniform1ui(GLint location, GLuint v0) {
7978    GLMessage glmsg;
7979    GLTraceContext *glContext = getGLTraceContext();
7980
7981    glmsg.set_function(GLMessage::glUniform1ui);
7982
7983    // copy argument location
7984    GLMessage_DataType *arg_location = glmsg.add_args();
7985    arg_location->set_isarray(false);
7986    arg_location->set_type(GLMessage::DataType::INT);
7987    arg_location->add_intvalue(location);
7988
7989    // copy argument v0
7990    GLMessage_DataType *arg_v0 = glmsg.add_args();
7991    arg_v0->set_isarray(false);
7992    arg_v0->set_type(GLMessage::DataType::INT);
7993    arg_v0->add_intvalue(v0);
7994
7995    // call function
7996    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7997    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7998    glContext->hooks->gl.glUniform1ui(location, v0);
7999    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8000    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8001
8002    void *pointerArgs[] = {
8003    };
8004
8005    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8006                              threadStartTime, threadEndTime,
8007                              &glmsg, pointerArgs);
8008    glContext->traceGLMessage(&glmsg);
8009}
8010
8011void GLTrace_glUniform2ui(GLint location, GLuint v0, GLuint v1) {
8012    GLMessage glmsg;
8013    GLTraceContext *glContext = getGLTraceContext();
8014
8015    glmsg.set_function(GLMessage::glUniform2ui);
8016
8017    // copy argument location
8018    GLMessage_DataType *arg_location = glmsg.add_args();
8019    arg_location->set_isarray(false);
8020    arg_location->set_type(GLMessage::DataType::INT);
8021    arg_location->add_intvalue(location);
8022
8023    // copy argument v0
8024    GLMessage_DataType *arg_v0 = glmsg.add_args();
8025    arg_v0->set_isarray(false);
8026    arg_v0->set_type(GLMessage::DataType::INT);
8027    arg_v0->add_intvalue(v0);
8028
8029    // copy argument v1
8030    GLMessage_DataType *arg_v1 = glmsg.add_args();
8031    arg_v1->set_isarray(false);
8032    arg_v1->set_type(GLMessage::DataType::INT);
8033    arg_v1->add_intvalue(v1);
8034
8035    // call function
8036    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8037    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8038    glContext->hooks->gl.glUniform2ui(location, v0, v1);
8039    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8040    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8041
8042    void *pointerArgs[] = {
8043    };
8044
8045    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8046                              threadStartTime, threadEndTime,
8047                              &glmsg, pointerArgs);
8048    glContext->traceGLMessage(&glmsg);
8049}
8050
8051void GLTrace_glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) {
8052    GLMessage glmsg;
8053    GLTraceContext *glContext = getGLTraceContext();
8054
8055    glmsg.set_function(GLMessage::glUniform3ui);
8056
8057    // copy argument location
8058    GLMessage_DataType *arg_location = glmsg.add_args();
8059    arg_location->set_isarray(false);
8060    arg_location->set_type(GLMessage::DataType::INT);
8061    arg_location->add_intvalue(location);
8062
8063    // copy argument v0
8064    GLMessage_DataType *arg_v0 = glmsg.add_args();
8065    arg_v0->set_isarray(false);
8066    arg_v0->set_type(GLMessage::DataType::INT);
8067    arg_v0->add_intvalue(v0);
8068
8069    // copy argument v1
8070    GLMessage_DataType *arg_v1 = glmsg.add_args();
8071    arg_v1->set_isarray(false);
8072    arg_v1->set_type(GLMessage::DataType::INT);
8073    arg_v1->add_intvalue(v1);
8074
8075    // copy argument v2
8076    GLMessage_DataType *arg_v2 = glmsg.add_args();
8077    arg_v2->set_isarray(false);
8078    arg_v2->set_type(GLMessage::DataType::INT);
8079    arg_v2->add_intvalue(v2);
8080
8081    // call function
8082    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8083    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8084    glContext->hooks->gl.glUniform3ui(location, v0, v1, v2);
8085    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8086    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8087
8088    void *pointerArgs[] = {
8089    };
8090
8091    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8092                              threadStartTime, threadEndTime,
8093                              &glmsg, pointerArgs);
8094    glContext->traceGLMessage(&glmsg);
8095}
8096
8097void GLTrace_glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) {
8098    GLMessage glmsg;
8099    GLTraceContext *glContext = getGLTraceContext();
8100
8101    glmsg.set_function(GLMessage::glUniform4ui);
8102
8103    // copy argument location
8104    GLMessage_DataType *arg_location = glmsg.add_args();
8105    arg_location->set_isarray(false);
8106    arg_location->set_type(GLMessage::DataType::INT);
8107    arg_location->add_intvalue(location);
8108
8109    // copy argument v0
8110    GLMessage_DataType *arg_v0 = glmsg.add_args();
8111    arg_v0->set_isarray(false);
8112    arg_v0->set_type(GLMessage::DataType::INT);
8113    arg_v0->add_intvalue(v0);
8114
8115    // copy argument v1
8116    GLMessage_DataType *arg_v1 = glmsg.add_args();
8117    arg_v1->set_isarray(false);
8118    arg_v1->set_type(GLMessage::DataType::INT);
8119    arg_v1->add_intvalue(v1);
8120
8121    // copy argument v2
8122    GLMessage_DataType *arg_v2 = glmsg.add_args();
8123    arg_v2->set_isarray(false);
8124    arg_v2->set_type(GLMessage::DataType::INT);
8125    arg_v2->add_intvalue(v2);
8126
8127    // copy argument v3
8128    GLMessage_DataType *arg_v3 = glmsg.add_args();
8129    arg_v3->set_isarray(false);
8130    arg_v3->set_type(GLMessage::DataType::INT);
8131    arg_v3->add_intvalue(v3);
8132
8133    // call function
8134    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8135    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8136    glContext->hooks->gl.glUniform4ui(location, v0, v1, v2, v3);
8137    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8138    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8139
8140    void *pointerArgs[] = {
8141    };
8142
8143    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8144                              threadStartTime, threadEndTime,
8145                              &glmsg, pointerArgs);
8146    glContext->traceGLMessage(&glmsg);
8147}
8148
8149void GLTrace_glUniform1uiv(GLint location, GLsizei count, const GLuint * value) {
8150    GLMessage glmsg;
8151    GLTraceContext *glContext = getGLTraceContext();
8152
8153    glmsg.set_function(GLMessage::glUniform1uiv);
8154
8155    // copy argument location
8156    GLMessage_DataType *arg_location = glmsg.add_args();
8157    arg_location->set_isarray(false);
8158    arg_location->set_type(GLMessage::DataType::INT);
8159    arg_location->add_intvalue(location);
8160
8161    // copy argument count
8162    GLMessage_DataType *arg_count = glmsg.add_args();
8163    arg_count->set_isarray(false);
8164    arg_count->set_type(GLMessage::DataType::INT);
8165    arg_count->add_intvalue(count);
8166
8167    // copy argument value
8168    GLMessage_DataType *arg_value = glmsg.add_args();
8169    arg_value->set_isarray(false);
8170    arg_value->set_type(GLMessage::DataType::INT64);
8171    arg_value->add_int64value((uintptr_t)value);
8172
8173    // call function
8174    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8175    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8176    glContext->hooks->gl.glUniform1uiv(location, count, value);
8177    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8178    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8179
8180    void *pointerArgs[] = {
8181        (void *) value,
8182    };
8183
8184    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8185                              threadStartTime, threadEndTime,
8186                              &glmsg, pointerArgs);
8187    glContext->traceGLMessage(&glmsg);
8188}
8189
8190void GLTrace_glUniform2uiv(GLint location, GLsizei count, const GLuint * value) {
8191    GLMessage glmsg;
8192    GLTraceContext *glContext = getGLTraceContext();
8193
8194    glmsg.set_function(GLMessage::glUniform2uiv);
8195
8196    // copy argument location
8197    GLMessage_DataType *arg_location = glmsg.add_args();
8198    arg_location->set_isarray(false);
8199    arg_location->set_type(GLMessage::DataType::INT);
8200    arg_location->add_intvalue(location);
8201
8202    // copy argument count
8203    GLMessage_DataType *arg_count = glmsg.add_args();
8204    arg_count->set_isarray(false);
8205    arg_count->set_type(GLMessage::DataType::INT);
8206    arg_count->add_intvalue(count);
8207
8208    // copy argument value
8209    GLMessage_DataType *arg_value = glmsg.add_args();
8210    arg_value->set_isarray(false);
8211    arg_value->set_type(GLMessage::DataType::INT64);
8212    arg_value->add_int64value((uintptr_t)value);
8213
8214    // call function
8215    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8216    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8217    glContext->hooks->gl.glUniform2uiv(location, count, value);
8218    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8219    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8220
8221    void *pointerArgs[] = {
8222        (void *) value,
8223    };
8224
8225    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8226                              threadStartTime, threadEndTime,
8227                              &glmsg, pointerArgs);
8228    glContext->traceGLMessage(&glmsg);
8229}
8230
8231void GLTrace_glUniform3uiv(GLint location, GLsizei count, const GLuint * value) {
8232    GLMessage glmsg;
8233    GLTraceContext *glContext = getGLTraceContext();
8234
8235    glmsg.set_function(GLMessage::glUniform3uiv);
8236
8237    // copy argument location
8238    GLMessage_DataType *arg_location = glmsg.add_args();
8239    arg_location->set_isarray(false);
8240    arg_location->set_type(GLMessage::DataType::INT);
8241    arg_location->add_intvalue(location);
8242
8243    // copy argument count
8244    GLMessage_DataType *arg_count = glmsg.add_args();
8245    arg_count->set_isarray(false);
8246    arg_count->set_type(GLMessage::DataType::INT);
8247    arg_count->add_intvalue(count);
8248
8249    // copy argument value
8250    GLMessage_DataType *arg_value = glmsg.add_args();
8251    arg_value->set_isarray(false);
8252    arg_value->set_type(GLMessage::DataType::INT64);
8253    arg_value->add_int64value((uintptr_t)value);
8254
8255    // call function
8256    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8257    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8258    glContext->hooks->gl.glUniform3uiv(location, count, value);
8259    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8260    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8261
8262    void *pointerArgs[] = {
8263        (void *) value,
8264    };
8265
8266    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8267                              threadStartTime, threadEndTime,
8268                              &glmsg, pointerArgs);
8269    glContext->traceGLMessage(&glmsg);
8270}
8271
8272void GLTrace_glUniform4uiv(GLint location, GLsizei count, const GLuint * value) {
8273    GLMessage glmsg;
8274    GLTraceContext *glContext = getGLTraceContext();
8275
8276    glmsg.set_function(GLMessage::glUniform4uiv);
8277
8278    // copy argument location
8279    GLMessage_DataType *arg_location = glmsg.add_args();
8280    arg_location->set_isarray(false);
8281    arg_location->set_type(GLMessage::DataType::INT);
8282    arg_location->add_intvalue(location);
8283
8284    // copy argument count
8285    GLMessage_DataType *arg_count = glmsg.add_args();
8286    arg_count->set_isarray(false);
8287    arg_count->set_type(GLMessage::DataType::INT);
8288    arg_count->add_intvalue(count);
8289
8290    // copy argument value
8291    GLMessage_DataType *arg_value = glmsg.add_args();
8292    arg_value->set_isarray(false);
8293    arg_value->set_type(GLMessage::DataType::INT64);
8294    arg_value->add_int64value((uintptr_t)value);
8295
8296    // call function
8297    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8298    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8299    glContext->hooks->gl.glUniform4uiv(location, count, value);
8300    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8301    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8302
8303    void *pointerArgs[] = {
8304        (void *) value,
8305    };
8306
8307    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8308                              threadStartTime, threadEndTime,
8309                              &glmsg, pointerArgs);
8310    glContext->traceGLMessage(&glmsg);
8311}
8312
8313void GLTrace_glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint * value) {
8314    GLMessage glmsg;
8315    GLTraceContext *glContext = getGLTraceContext();
8316
8317    glmsg.set_function(GLMessage::glClearBufferiv);
8318
8319    // copy argument buffer
8320    GLMessage_DataType *arg_buffer = glmsg.add_args();
8321    arg_buffer->set_isarray(false);
8322    arg_buffer->set_type(GLMessage::DataType::ENUM);
8323    arg_buffer->add_intvalue((int)buffer);
8324
8325    // copy argument drawbuffer
8326    GLMessage_DataType *arg_drawbuffer = glmsg.add_args();
8327    arg_drawbuffer->set_isarray(false);
8328    arg_drawbuffer->set_type(GLMessage::DataType::INT);
8329    arg_drawbuffer->add_intvalue(drawbuffer);
8330
8331    // copy argument value
8332    GLMessage_DataType *arg_value = glmsg.add_args();
8333    arg_value->set_isarray(false);
8334    arg_value->set_type(GLMessage::DataType::INT64);
8335    arg_value->add_int64value((uintptr_t)value);
8336
8337    // call function
8338    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8339    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8340    glContext->hooks->gl.glClearBufferiv(buffer, drawbuffer, value);
8341    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8342    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8343
8344    void *pointerArgs[] = {
8345        (void *) value,
8346    };
8347
8348    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8349                              threadStartTime, threadEndTime,
8350                              &glmsg, pointerArgs);
8351    glContext->traceGLMessage(&glmsg);
8352}
8353
8354void GLTrace_glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint * value) {
8355    GLMessage glmsg;
8356    GLTraceContext *glContext = getGLTraceContext();
8357
8358    glmsg.set_function(GLMessage::glClearBufferuiv);
8359
8360    // copy argument buffer
8361    GLMessage_DataType *arg_buffer = glmsg.add_args();
8362    arg_buffer->set_isarray(false);
8363    arg_buffer->set_type(GLMessage::DataType::ENUM);
8364    arg_buffer->add_intvalue((int)buffer);
8365
8366    // copy argument drawbuffer
8367    GLMessage_DataType *arg_drawbuffer = glmsg.add_args();
8368    arg_drawbuffer->set_isarray(false);
8369    arg_drawbuffer->set_type(GLMessage::DataType::INT);
8370    arg_drawbuffer->add_intvalue(drawbuffer);
8371
8372    // copy argument value
8373    GLMessage_DataType *arg_value = glmsg.add_args();
8374    arg_value->set_isarray(false);
8375    arg_value->set_type(GLMessage::DataType::INT64);
8376    arg_value->add_int64value((uintptr_t)value);
8377
8378    // call function
8379    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8380    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8381    glContext->hooks->gl.glClearBufferuiv(buffer, drawbuffer, value);
8382    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8383    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8384
8385    void *pointerArgs[] = {
8386        (void *) value,
8387    };
8388
8389    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8390                              threadStartTime, threadEndTime,
8391                              &glmsg, pointerArgs);
8392    glContext->traceGLMessage(&glmsg);
8393}
8394
8395void GLTrace_glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat * value) {
8396    GLMessage glmsg;
8397    GLTraceContext *glContext = getGLTraceContext();
8398
8399    glmsg.set_function(GLMessage::glClearBufferfv);
8400
8401    // copy argument buffer
8402    GLMessage_DataType *arg_buffer = glmsg.add_args();
8403    arg_buffer->set_isarray(false);
8404    arg_buffer->set_type(GLMessage::DataType::ENUM);
8405    arg_buffer->add_intvalue((int)buffer);
8406
8407    // copy argument drawbuffer
8408    GLMessage_DataType *arg_drawbuffer = glmsg.add_args();
8409    arg_drawbuffer->set_isarray(false);
8410    arg_drawbuffer->set_type(GLMessage::DataType::INT);
8411    arg_drawbuffer->add_intvalue(drawbuffer);
8412
8413    // copy argument value
8414    GLMessage_DataType *arg_value = glmsg.add_args();
8415    arg_value->set_isarray(false);
8416    arg_value->set_type(GLMessage::DataType::INT64);
8417    arg_value->add_int64value((uintptr_t)value);
8418
8419    // call function
8420    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8421    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8422    glContext->hooks->gl.glClearBufferfv(buffer, drawbuffer, value);
8423    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8424    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8425
8426    void *pointerArgs[] = {
8427        (void *) value,
8428    };
8429
8430    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8431                              threadStartTime, threadEndTime,
8432                              &glmsg, pointerArgs);
8433    glContext->traceGLMessage(&glmsg);
8434}
8435
8436void GLTrace_glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) {
8437    GLMessage glmsg;
8438    GLTraceContext *glContext = getGLTraceContext();
8439
8440    glmsg.set_function(GLMessage::glClearBufferfi);
8441
8442    // copy argument buffer
8443    GLMessage_DataType *arg_buffer = glmsg.add_args();
8444    arg_buffer->set_isarray(false);
8445    arg_buffer->set_type(GLMessage::DataType::ENUM);
8446    arg_buffer->add_intvalue((int)buffer);
8447
8448    // copy argument drawbuffer
8449    GLMessage_DataType *arg_drawbuffer = glmsg.add_args();
8450    arg_drawbuffer->set_isarray(false);
8451    arg_drawbuffer->set_type(GLMessage::DataType::INT);
8452    arg_drawbuffer->add_intvalue(drawbuffer);
8453
8454    // copy argument depth
8455    GLMessage_DataType *arg_depth = glmsg.add_args();
8456    arg_depth->set_isarray(false);
8457    arg_depth->set_type(GLMessage::DataType::FLOAT);
8458    arg_depth->add_floatvalue(depth);
8459
8460    // copy argument stencil
8461    GLMessage_DataType *arg_stencil = glmsg.add_args();
8462    arg_stencil->set_isarray(false);
8463    arg_stencil->set_type(GLMessage::DataType::INT);
8464    arg_stencil->add_intvalue(stencil);
8465
8466    // call function
8467    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8468    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8469    glContext->hooks->gl.glClearBufferfi(buffer, drawbuffer, depth, stencil);
8470    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8471    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8472
8473    void *pointerArgs[] = {
8474    };
8475
8476    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8477                              threadStartTime, threadEndTime,
8478                              &glmsg, pointerArgs);
8479    glContext->traceGLMessage(&glmsg);
8480}
8481
8482const GLubyte * GLTrace_glGetStringi(GLenum name, GLuint index) {
8483    GLMessage glmsg;
8484    GLTraceContext *glContext = getGLTraceContext();
8485
8486    glmsg.set_function(GLMessage::glGetStringi);
8487
8488    // copy argument name
8489    GLMessage_DataType *arg_name = glmsg.add_args();
8490    arg_name->set_isarray(false);
8491    arg_name->set_type(GLMessage::DataType::ENUM);
8492    arg_name->add_intvalue((int)name);
8493
8494    // copy argument index
8495    GLMessage_DataType *arg_index = glmsg.add_args();
8496    arg_index->set_isarray(false);
8497    arg_index->set_type(GLMessage::DataType::INT);
8498    arg_index->add_intvalue(index);
8499
8500    // call function
8501    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8502    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8503    const GLubyte * retValue = glContext->hooks->gl.glGetStringi(name, index);
8504    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8505    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8506
8507    // set return value
8508    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
8509    rt->set_isarray(false);
8510    rt->set_type(GLMessage::DataType::INT64);
8511    rt->add_int64value((uintptr_t)retValue);
8512
8513    void *pointerArgs[] = {
8514        (void *) retValue,
8515    };
8516
8517    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8518                              threadStartTime, threadEndTime,
8519                              &glmsg, pointerArgs);
8520    glContext->traceGLMessage(&glmsg);
8521
8522    return retValue;
8523}
8524
8525void GLTrace_glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) {
8526    GLMessage glmsg;
8527    GLTraceContext *glContext = getGLTraceContext();
8528
8529    glmsg.set_function(GLMessage::glCopyBufferSubData);
8530
8531    // copy argument readTarget
8532    GLMessage_DataType *arg_readTarget = glmsg.add_args();
8533    arg_readTarget->set_isarray(false);
8534    arg_readTarget->set_type(GLMessage::DataType::ENUM);
8535    arg_readTarget->add_intvalue((int)readTarget);
8536
8537    // copy argument writeTarget
8538    GLMessage_DataType *arg_writeTarget = glmsg.add_args();
8539    arg_writeTarget->set_isarray(false);
8540    arg_writeTarget->set_type(GLMessage::DataType::ENUM);
8541    arg_writeTarget->add_intvalue((int)writeTarget);
8542
8543    // copy argument readOffset
8544    GLMessage_DataType *arg_readOffset = glmsg.add_args();
8545    arg_readOffset->set_isarray(false);
8546    arg_readOffset->set_type(GLMessage::DataType::INT);
8547    arg_readOffset->add_intvalue(readOffset);
8548
8549    // copy argument writeOffset
8550    GLMessage_DataType *arg_writeOffset = glmsg.add_args();
8551    arg_writeOffset->set_isarray(false);
8552    arg_writeOffset->set_type(GLMessage::DataType::INT);
8553    arg_writeOffset->add_intvalue(writeOffset);
8554
8555    // copy argument size
8556    GLMessage_DataType *arg_size = glmsg.add_args();
8557    arg_size->set_isarray(false);
8558    arg_size->set_type(GLMessage::DataType::INT);
8559    arg_size->add_intvalue(size);
8560
8561    // call function
8562    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8563    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8564    glContext->hooks->gl.glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size);
8565    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8566    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8567
8568    void *pointerArgs[] = {
8569    };
8570
8571    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8572                              threadStartTime, threadEndTime,
8573                              &glmsg, pointerArgs);
8574    glContext->traceGLMessage(&glmsg);
8575}
8576
8577void GLTrace_glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const* uniformNames, GLuint * uniformIndices) {
8578    GLMessage glmsg;
8579    GLTraceContext *glContext = getGLTraceContext();
8580
8581    glmsg.set_function(GLMessage::glGetUniformIndices);
8582
8583    // copy argument program
8584    GLMessage_DataType *arg_program = glmsg.add_args();
8585    arg_program->set_isarray(false);
8586    arg_program->set_type(GLMessage::DataType::INT);
8587    arg_program->add_intvalue(program);
8588
8589    // copy argument uniformCount
8590    GLMessage_DataType *arg_uniformCount = glmsg.add_args();
8591    arg_uniformCount->set_isarray(false);
8592    arg_uniformCount->set_type(GLMessage::DataType::INT);
8593    arg_uniformCount->add_intvalue(uniformCount);
8594
8595    // copy argument uniformNames
8596    GLMessage_DataType *arg_uniformNames = glmsg.add_args();
8597    arg_uniformNames->set_isarray(false);
8598    arg_uniformNames->set_type(GLMessage::DataType::INT64);
8599    arg_uniformNames->add_int64value((uintptr_t)uniformNames);
8600
8601    // copy argument uniformIndices
8602    GLMessage_DataType *arg_uniformIndices = glmsg.add_args();
8603    arg_uniformIndices->set_isarray(false);
8604    arg_uniformIndices->set_type(GLMessage::DataType::INT64);
8605    arg_uniformIndices->add_int64value((uintptr_t)uniformIndices);
8606
8607    // call function
8608    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8609    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8610    glContext->hooks->gl.glGetUniformIndices(program, uniformCount, uniformNames, uniformIndices);
8611    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8612    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8613
8614    void *pointerArgs[] = {
8615        (void *) uniformNames,
8616        (void *) uniformIndices,
8617    };
8618
8619    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8620                              threadStartTime, threadEndTime,
8621                              &glmsg, pointerArgs);
8622    glContext->traceGLMessage(&glmsg);
8623}
8624
8625void GLTrace_glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint * uniformIndices, GLenum pname, GLint * params) {
8626    GLMessage glmsg;
8627    GLTraceContext *glContext = getGLTraceContext();
8628
8629    glmsg.set_function(GLMessage::glGetActiveUniformsiv);
8630
8631    // copy argument program
8632    GLMessage_DataType *arg_program = glmsg.add_args();
8633    arg_program->set_isarray(false);
8634    arg_program->set_type(GLMessage::DataType::INT);
8635    arg_program->add_intvalue(program);
8636
8637    // copy argument uniformCount
8638    GLMessage_DataType *arg_uniformCount = glmsg.add_args();
8639    arg_uniformCount->set_isarray(false);
8640    arg_uniformCount->set_type(GLMessage::DataType::INT);
8641    arg_uniformCount->add_intvalue(uniformCount);
8642
8643    // copy argument uniformIndices
8644    GLMessage_DataType *arg_uniformIndices = glmsg.add_args();
8645    arg_uniformIndices->set_isarray(false);
8646    arg_uniformIndices->set_type(GLMessage::DataType::INT64);
8647    arg_uniformIndices->add_int64value((uintptr_t)uniformIndices);
8648
8649    // copy argument pname
8650    GLMessage_DataType *arg_pname = glmsg.add_args();
8651    arg_pname->set_isarray(false);
8652    arg_pname->set_type(GLMessage::DataType::ENUM);
8653    arg_pname->add_intvalue((int)pname);
8654
8655    // copy argument params
8656    GLMessage_DataType *arg_params = glmsg.add_args();
8657    arg_params->set_isarray(false);
8658    arg_params->set_type(GLMessage::DataType::INT64);
8659    arg_params->add_int64value((uintptr_t)params);
8660
8661    // call function
8662    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8663    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8664    glContext->hooks->gl.glGetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params);
8665    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8666    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8667
8668    void *pointerArgs[] = {
8669        (void *) uniformIndices,
8670        (void *) params,
8671    };
8672
8673    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8674                              threadStartTime, threadEndTime,
8675                              &glmsg, pointerArgs);
8676    glContext->traceGLMessage(&glmsg);
8677}
8678
8679GLuint GLTrace_glGetUniformBlockIndex(GLuint program, const GLchar * uniformBlockName) {
8680    GLMessage glmsg;
8681    GLTraceContext *glContext = getGLTraceContext();
8682
8683    glmsg.set_function(GLMessage::glGetUniformBlockIndex);
8684
8685    // copy argument program
8686    GLMessage_DataType *arg_program = glmsg.add_args();
8687    arg_program->set_isarray(false);
8688    arg_program->set_type(GLMessage::DataType::INT);
8689    arg_program->add_intvalue(program);
8690
8691    // copy argument uniformBlockName
8692    GLMessage_DataType *arg_uniformBlockName = glmsg.add_args();
8693    arg_uniformBlockName->set_isarray(false);
8694    arg_uniformBlockName->set_type(GLMessage::DataType::INT64);
8695    arg_uniformBlockName->add_int64value((uintptr_t)uniformBlockName);
8696
8697    // call function
8698    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8699    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8700    GLuint retValue = glContext->hooks->gl.glGetUniformBlockIndex(program, uniformBlockName);
8701    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8702    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8703
8704    // set return value
8705    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
8706    rt->set_isarray(false);
8707    rt->set_type(GLMessage::DataType::INT);
8708    rt->add_intvalue(retValue);
8709
8710    void *pointerArgs[] = {
8711        (void *) uniformBlockName,
8712    };
8713
8714    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8715                              threadStartTime, threadEndTime,
8716                              &glmsg, pointerArgs);
8717    glContext->traceGLMessage(&glmsg);
8718
8719    return retValue;
8720}
8721
8722void GLTrace_glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint * params) {
8723    GLMessage glmsg;
8724    GLTraceContext *glContext = getGLTraceContext();
8725
8726    glmsg.set_function(GLMessage::glGetActiveUniformBlockiv);
8727
8728    // copy argument program
8729    GLMessage_DataType *arg_program = glmsg.add_args();
8730    arg_program->set_isarray(false);
8731    arg_program->set_type(GLMessage::DataType::INT);
8732    arg_program->add_intvalue(program);
8733
8734    // copy argument uniformBlockIndex
8735    GLMessage_DataType *arg_uniformBlockIndex = glmsg.add_args();
8736    arg_uniformBlockIndex->set_isarray(false);
8737    arg_uniformBlockIndex->set_type(GLMessage::DataType::INT);
8738    arg_uniformBlockIndex->add_intvalue(uniformBlockIndex);
8739
8740    // copy argument pname
8741    GLMessage_DataType *arg_pname = glmsg.add_args();
8742    arg_pname->set_isarray(false);
8743    arg_pname->set_type(GLMessage::DataType::ENUM);
8744    arg_pname->add_intvalue((int)pname);
8745
8746    // copy argument params
8747    GLMessage_DataType *arg_params = glmsg.add_args();
8748    arg_params->set_isarray(false);
8749    arg_params->set_type(GLMessage::DataType::INT64);
8750    arg_params->add_int64value((uintptr_t)params);
8751
8752    // call function
8753    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8754    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8755    glContext->hooks->gl.glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, params);
8756    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8757    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8758
8759    void *pointerArgs[] = {
8760        (void *) params,
8761    };
8762
8763    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8764                              threadStartTime, threadEndTime,
8765                              &glmsg, pointerArgs);
8766    glContext->traceGLMessage(&glmsg);
8767}
8768
8769void GLTrace_glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformBlockName) {
8770    GLMessage glmsg;
8771    GLTraceContext *glContext = getGLTraceContext();
8772
8773    glmsg.set_function(GLMessage::glGetActiveUniformBlockName);
8774
8775    // copy argument program
8776    GLMessage_DataType *arg_program = glmsg.add_args();
8777    arg_program->set_isarray(false);
8778    arg_program->set_type(GLMessage::DataType::INT);
8779    arg_program->add_intvalue(program);
8780
8781    // copy argument uniformBlockIndex
8782    GLMessage_DataType *arg_uniformBlockIndex = glmsg.add_args();
8783    arg_uniformBlockIndex->set_isarray(false);
8784    arg_uniformBlockIndex->set_type(GLMessage::DataType::INT);
8785    arg_uniformBlockIndex->add_intvalue(uniformBlockIndex);
8786
8787    // copy argument bufSize
8788    GLMessage_DataType *arg_bufSize = glmsg.add_args();
8789    arg_bufSize->set_isarray(false);
8790    arg_bufSize->set_type(GLMessage::DataType::INT);
8791    arg_bufSize->add_intvalue(bufSize);
8792
8793    // copy argument length
8794    GLMessage_DataType *arg_length = glmsg.add_args();
8795    arg_length->set_isarray(false);
8796    arg_length->set_type(GLMessage::DataType::INT64);
8797    arg_length->add_int64value((uintptr_t)length);
8798
8799    // copy argument uniformBlockName
8800    GLMessage_DataType *arg_uniformBlockName = glmsg.add_args();
8801    arg_uniformBlockName->set_isarray(false);
8802    arg_uniformBlockName->set_type(GLMessage::DataType::INT64);
8803    arg_uniformBlockName->add_int64value((uintptr_t)uniformBlockName);
8804
8805    // call function
8806    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8807    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8808    glContext->hooks->gl.glGetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName);
8809    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8810    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8811
8812    void *pointerArgs[] = {
8813        (void *) length,
8814        (void *) uniformBlockName,
8815    };
8816
8817    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8818                              threadStartTime, threadEndTime,
8819                              &glmsg, pointerArgs);
8820    glContext->traceGLMessage(&glmsg);
8821}
8822
8823void GLTrace_glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) {
8824    GLMessage glmsg;
8825    GLTraceContext *glContext = getGLTraceContext();
8826
8827    glmsg.set_function(GLMessage::glUniformBlockBinding);
8828
8829    // copy argument program
8830    GLMessage_DataType *arg_program = glmsg.add_args();
8831    arg_program->set_isarray(false);
8832    arg_program->set_type(GLMessage::DataType::INT);
8833    arg_program->add_intvalue(program);
8834
8835    // copy argument uniformBlockIndex
8836    GLMessage_DataType *arg_uniformBlockIndex = glmsg.add_args();
8837    arg_uniformBlockIndex->set_isarray(false);
8838    arg_uniformBlockIndex->set_type(GLMessage::DataType::INT);
8839    arg_uniformBlockIndex->add_intvalue(uniformBlockIndex);
8840
8841    // copy argument uniformBlockBinding
8842    GLMessage_DataType *arg_uniformBlockBinding = glmsg.add_args();
8843    arg_uniformBlockBinding->set_isarray(false);
8844    arg_uniformBlockBinding->set_type(GLMessage::DataType::INT);
8845    arg_uniformBlockBinding->add_intvalue(uniformBlockBinding);
8846
8847    // call function
8848    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8849    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8850    glContext->hooks->gl.glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding);
8851    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8852    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8853
8854    void *pointerArgs[] = {
8855    };
8856
8857    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8858                              threadStartTime, threadEndTime,
8859                              &glmsg, pointerArgs);
8860    glContext->traceGLMessage(&glmsg);
8861}
8862
8863void GLTrace_glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) {
8864    GLMessage glmsg;
8865    GLTraceContext *glContext = getGLTraceContext();
8866
8867    glmsg.set_function(GLMessage::glDrawArraysInstanced);
8868
8869    // copy argument mode
8870    GLMessage_DataType *arg_mode = glmsg.add_args();
8871    arg_mode->set_isarray(false);
8872    arg_mode->set_type(GLMessage::DataType::ENUM);
8873    arg_mode->add_intvalue((int)mode);
8874
8875    // copy argument first
8876    GLMessage_DataType *arg_first = glmsg.add_args();
8877    arg_first->set_isarray(false);
8878    arg_first->set_type(GLMessage::DataType::INT);
8879    arg_first->add_intvalue(first);
8880
8881    // copy argument count
8882    GLMessage_DataType *arg_count = glmsg.add_args();
8883    arg_count->set_isarray(false);
8884    arg_count->set_type(GLMessage::DataType::INT);
8885    arg_count->add_intvalue(count);
8886
8887    // copy argument instancecount
8888    GLMessage_DataType *arg_instancecount = glmsg.add_args();
8889    arg_instancecount->set_isarray(false);
8890    arg_instancecount->set_type(GLMessage::DataType::INT);
8891    arg_instancecount->add_intvalue(instancecount);
8892
8893    // call function
8894    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8895    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8896    glContext->hooks->gl.glDrawArraysInstanced(mode, first, count, instancecount);
8897    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8898    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8899
8900    void *pointerArgs[] = {
8901    };
8902
8903    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8904                              threadStartTime, threadEndTime,
8905                              &glmsg, pointerArgs);
8906    glContext->traceGLMessage(&glmsg);
8907}
8908
8909void GLTrace_glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount) {
8910    GLMessage glmsg;
8911    GLTraceContext *glContext = getGLTraceContext();
8912
8913    glmsg.set_function(GLMessage::glDrawElementsInstanced);
8914
8915    // copy argument mode
8916    GLMessage_DataType *arg_mode = glmsg.add_args();
8917    arg_mode->set_isarray(false);
8918    arg_mode->set_type(GLMessage::DataType::ENUM);
8919    arg_mode->add_intvalue((int)mode);
8920
8921    // copy argument count
8922    GLMessage_DataType *arg_count = glmsg.add_args();
8923    arg_count->set_isarray(false);
8924    arg_count->set_type(GLMessage::DataType::INT);
8925    arg_count->add_intvalue(count);
8926
8927    // copy argument type
8928    GLMessage_DataType *arg_type = glmsg.add_args();
8929    arg_type->set_isarray(false);
8930    arg_type->set_type(GLMessage::DataType::ENUM);
8931    arg_type->add_intvalue((int)type);
8932
8933    // copy argument indices
8934    GLMessage_DataType *arg_indices = glmsg.add_args();
8935    arg_indices->set_isarray(false);
8936    arg_indices->set_type(GLMessage::DataType::INT64);
8937    arg_indices->add_int64value((uintptr_t)indices);
8938
8939    // copy argument instancecount
8940    GLMessage_DataType *arg_instancecount = glmsg.add_args();
8941    arg_instancecount->set_isarray(false);
8942    arg_instancecount->set_type(GLMessage::DataType::INT);
8943    arg_instancecount->add_intvalue(instancecount);
8944
8945    // call function
8946    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8947    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8948    glContext->hooks->gl.glDrawElementsInstanced(mode, count, type, indices, instancecount);
8949    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8950    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8951
8952    void *pointerArgs[] = {
8953        (void *) indices,
8954    };
8955
8956    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8957                              threadStartTime, threadEndTime,
8958                              &glmsg, pointerArgs);
8959    glContext->traceGLMessage(&glmsg);
8960}
8961
8962GLsync GLTrace_glFenceSync(GLenum condition, GLbitfield flags) {
8963    GLMessage glmsg;
8964    GLTraceContext *glContext = getGLTraceContext();
8965
8966    glmsg.set_function(GLMessage::glFenceSync);
8967
8968    // copy argument condition
8969    GLMessage_DataType *arg_condition = glmsg.add_args();
8970    arg_condition->set_isarray(false);
8971    arg_condition->set_type(GLMessage::DataType::ENUM);
8972    arg_condition->add_intvalue((int)condition);
8973
8974    // copy argument flags
8975    GLMessage_DataType *arg_flags = glmsg.add_args();
8976    arg_flags->set_isarray(false);
8977    arg_flags->set_type(GLMessage::DataType::INT);
8978    arg_flags->add_intvalue(flags);
8979
8980    // call function
8981    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8982    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8983    GLsync retValue = glContext->hooks->gl.glFenceSync(condition, flags);
8984    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8985    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8986
8987    // set return value
8988    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
8989    rt->set_isarray(false);
8990    rt->set_type(GLMessage::DataType::INT64);
8991    rt->add_int64value((uintptr_t)retValue);
8992
8993    void *pointerArgs[] = {
8994        (void *) retValue,
8995    };
8996
8997    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8998                              threadStartTime, threadEndTime,
8999                              &glmsg, pointerArgs);
9000    glContext->traceGLMessage(&glmsg);
9001
9002    return retValue;
9003}
9004
9005GLboolean GLTrace_glIsSync(GLsync sync) {
9006    GLMessage glmsg;
9007    GLTraceContext *glContext = getGLTraceContext();
9008
9009    glmsg.set_function(GLMessage::glIsSync);
9010
9011    // copy argument sync
9012    GLMessage_DataType *arg_sync = glmsg.add_args();
9013    arg_sync->set_isarray(false);
9014    arg_sync->set_type(GLMessage::DataType::INT64);
9015    arg_sync->add_int64value((uintptr_t)sync);
9016
9017    // call function
9018    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9019    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9020    GLboolean retValue = glContext->hooks->gl.glIsSync(sync);
9021    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9022    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9023
9024    // set return value
9025    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
9026    rt->set_isarray(false);
9027    rt->set_type(GLMessage::DataType::BOOL);
9028    rt->add_boolvalue(retValue);
9029
9030    void *pointerArgs[] = {
9031        (void *) sync,
9032    };
9033
9034    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9035                              threadStartTime, threadEndTime,
9036                              &glmsg, pointerArgs);
9037    glContext->traceGLMessage(&glmsg);
9038
9039    return retValue;
9040}
9041
9042void GLTrace_glDeleteSync(GLsync sync) {
9043    GLMessage glmsg;
9044    GLTraceContext *glContext = getGLTraceContext();
9045
9046    glmsg.set_function(GLMessage::glDeleteSync);
9047
9048    // copy argument sync
9049    GLMessage_DataType *arg_sync = glmsg.add_args();
9050    arg_sync->set_isarray(false);
9051    arg_sync->set_type(GLMessage::DataType::INT64);
9052    arg_sync->add_int64value((uintptr_t)sync);
9053
9054    // call function
9055    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9056    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9057    glContext->hooks->gl.glDeleteSync(sync);
9058    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9059    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9060
9061    void *pointerArgs[] = {
9062        (void *) sync,
9063    };
9064
9065    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9066                              threadStartTime, threadEndTime,
9067                              &glmsg, pointerArgs);
9068    glContext->traceGLMessage(&glmsg);
9069}
9070
9071GLenum GLTrace_glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) {
9072    GLMessage glmsg;
9073    GLTraceContext *glContext = getGLTraceContext();
9074
9075    glmsg.set_function(GLMessage::glClientWaitSync);
9076
9077    // copy argument sync
9078    GLMessage_DataType *arg_sync = glmsg.add_args();
9079    arg_sync->set_isarray(false);
9080    arg_sync->set_type(GLMessage::DataType::INT64);
9081    arg_sync->add_int64value((uintptr_t)sync);
9082
9083    // copy argument flags
9084    GLMessage_DataType *arg_flags = glmsg.add_args();
9085    arg_flags->set_isarray(false);
9086    arg_flags->set_type(GLMessage::DataType::INT);
9087    arg_flags->add_intvalue(flags);
9088
9089    // copy argument timeout
9090    GLMessage_DataType *arg_timeout = glmsg.add_args();
9091    arg_timeout->set_isarray(false);
9092    arg_timeout->set_type(GLMessage::DataType::INT64);
9093    arg_timeout->add_int64value(timeout);
9094
9095    // call function
9096    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9097    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9098    GLenum retValue = glContext->hooks->gl.glClientWaitSync(sync, flags, timeout);
9099    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9100    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9101
9102    // set return value
9103    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
9104    rt->set_isarray(false);
9105    rt->set_type(GLMessage::DataType::ENUM);
9106    rt->add_intvalue((int)retValue);
9107
9108    void *pointerArgs[] = {
9109        (void *) sync,
9110    };
9111
9112    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9113                              threadStartTime, threadEndTime,
9114                              &glmsg, pointerArgs);
9115    glContext->traceGLMessage(&glmsg);
9116
9117    return retValue;
9118}
9119
9120void GLTrace_glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) {
9121    GLMessage glmsg;
9122    GLTraceContext *glContext = getGLTraceContext();
9123
9124    glmsg.set_function(GLMessage::glWaitSync);
9125
9126    // copy argument sync
9127    GLMessage_DataType *arg_sync = glmsg.add_args();
9128    arg_sync->set_isarray(false);
9129    arg_sync->set_type(GLMessage::DataType::INT64);
9130    arg_sync->add_int64value((uintptr_t)sync);
9131
9132    // copy argument flags
9133    GLMessage_DataType *arg_flags = glmsg.add_args();
9134    arg_flags->set_isarray(false);
9135    arg_flags->set_type(GLMessage::DataType::INT);
9136    arg_flags->add_intvalue(flags);
9137
9138    // copy argument timeout
9139    GLMessage_DataType *arg_timeout = glmsg.add_args();
9140    arg_timeout->set_isarray(false);
9141    arg_timeout->set_type(GLMessage::DataType::INT64);
9142    arg_timeout->add_int64value(timeout);
9143
9144    // call function
9145    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9146    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9147    glContext->hooks->gl.glWaitSync(sync, flags, timeout);
9148    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9149    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9150
9151    void *pointerArgs[] = {
9152        (void *) sync,
9153    };
9154
9155    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9156                              threadStartTime, threadEndTime,
9157                              &glmsg, pointerArgs);
9158    glContext->traceGLMessage(&glmsg);
9159}
9160
9161void GLTrace_glGetInteger64v(GLenum pname, GLint64 * data) {
9162    GLMessage glmsg;
9163    GLTraceContext *glContext = getGLTraceContext();
9164
9165    glmsg.set_function(GLMessage::glGetInteger64v);
9166
9167    // copy argument pname
9168    GLMessage_DataType *arg_pname = glmsg.add_args();
9169    arg_pname->set_isarray(false);
9170    arg_pname->set_type(GLMessage::DataType::ENUM);
9171    arg_pname->add_intvalue((int)pname);
9172
9173    // copy argument data
9174    GLMessage_DataType *arg_data = glmsg.add_args();
9175    arg_data->set_isarray(false);
9176    arg_data->set_type(GLMessage::DataType::INT64);
9177    arg_data->add_int64value((uintptr_t)data);
9178
9179    // call function
9180    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9181    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9182    glContext->hooks->gl.glGetInteger64v(pname, data);
9183    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9184    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9185
9186    void *pointerArgs[] = {
9187        (void *) data,
9188    };
9189
9190    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9191                              threadStartTime, threadEndTime,
9192                              &glmsg, pointerArgs);
9193    glContext->traceGLMessage(&glmsg);
9194}
9195
9196void GLTrace_glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values) {
9197    GLMessage glmsg;
9198    GLTraceContext *glContext = getGLTraceContext();
9199
9200    glmsg.set_function(GLMessage::glGetSynciv);
9201
9202    // copy argument sync
9203    GLMessage_DataType *arg_sync = glmsg.add_args();
9204    arg_sync->set_isarray(false);
9205    arg_sync->set_type(GLMessage::DataType::INT64);
9206    arg_sync->add_int64value((uintptr_t)sync);
9207
9208    // copy argument pname
9209    GLMessage_DataType *arg_pname = glmsg.add_args();
9210    arg_pname->set_isarray(false);
9211    arg_pname->set_type(GLMessage::DataType::ENUM);
9212    arg_pname->add_intvalue((int)pname);
9213
9214    // copy argument bufSize
9215    GLMessage_DataType *arg_bufSize = glmsg.add_args();
9216    arg_bufSize->set_isarray(false);
9217    arg_bufSize->set_type(GLMessage::DataType::INT);
9218    arg_bufSize->add_intvalue(bufSize);
9219
9220    // copy argument length
9221    GLMessage_DataType *arg_length = glmsg.add_args();
9222    arg_length->set_isarray(false);
9223    arg_length->set_type(GLMessage::DataType::INT64);
9224    arg_length->add_int64value((uintptr_t)length);
9225
9226    // copy argument values
9227    GLMessage_DataType *arg_values = glmsg.add_args();
9228    arg_values->set_isarray(false);
9229    arg_values->set_type(GLMessage::DataType::INT64);
9230    arg_values->add_int64value((uintptr_t)values);
9231
9232    // call function
9233    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9234    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9235    glContext->hooks->gl.glGetSynciv(sync, pname, bufSize, length, values);
9236    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9237    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9238
9239    void *pointerArgs[] = {
9240        (void *) sync,
9241        (void *) length,
9242        (void *) values,
9243    };
9244
9245    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9246                              threadStartTime, threadEndTime,
9247                              &glmsg, pointerArgs);
9248    glContext->traceGLMessage(&glmsg);
9249}
9250
9251void GLTrace_glGetInteger64i_v(GLenum target, GLuint index, GLint64 * data) {
9252    GLMessage glmsg;
9253    GLTraceContext *glContext = getGLTraceContext();
9254
9255    glmsg.set_function(GLMessage::glGetInteger64i_v);
9256
9257    // copy argument target
9258    GLMessage_DataType *arg_target = glmsg.add_args();
9259    arg_target->set_isarray(false);
9260    arg_target->set_type(GLMessage::DataType::ENUM);
9261    arg_target->add_intvalue((int)target);
9262
9263    // copy argument index
9264    GLMessage_DataType *arg_index = glmsg.add_args();
9265    arg_index->set_isarray(false);
9266    arg_index->set_type(GLMessage::DataType::INT);
9267    arg_index->add_intvalue(index);
9268
9269    // copy argument data
9270    GLMessage_DataType *arg_data = glmsg.add_args();
9271    arg_data->set_isarray(false);
9272    arg_data->set_type(GLMessage::DataType::INT64);
9273    arg_data->add_int64value((uintptr_t)data);
9274
9275    // call function
9276    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9277    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9278    glContext->hooks->gl.glGetInteger64i_v(target, index, data);
9279    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9280    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9281
9282    void *pointerArgs[] = {
9283        (void *) data,
9284    };
9285
9286    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9287                              threadStartTime, threadEndTime,
9288                              &glmsg, pointerArgs);
9289    glContext->traceGLMessage(&glmsg);
9290}
9291
9292void GLTrace_glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 * params) {
9293    GLMessage glmsg;
9294    GLTraceContext *glContext = getGLTraceContext();
9295
9296    glmsg.set_function(GLMessage::glGetBufferParameteri64v);
9297
9298    // copy argument target
9299    GLMessage_DataType *arg_target = glmsg.add_args();
9300    arg_target->set_isarray(false);
9301    arg_target->set_type(GLMessage::DataType::ENUM);
9302    arg_target->add_intvalue((int)target);
9303
9304    // copy argument pname
9305    GLMessage_DataType *arg_pname = glmsg.add_args();
9306    arg_pname->set_isarray(false);
9307    arg_pname->set_type(GLMessage::DataType::ENUM);
9308    arg_pname->add_intvalue((int)pname);
9309
9310    // copy argument params
9311    GLMessage_DataType *arg_params = glmsg.add_args();
9312    arg_params->set_isarray(false);
9313    arg_params->set_type(GLMessage::DataType::INT64);
9314    arg_params->add_int64value((uintptr_t)params);
9315
9316    // call function
9317    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9318    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9319    glContext->hooks->gl.glGetBufferParameteri64v(target, pname, params);
9320    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9321    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9322
9323    void *pointerArgs[] = {
9324        (void *) params,
9325    };
9326
9327    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9328                              threadStartTime, threadEndTime,
9329                              &glmsg, pointerArgs);
9330    glContext->traceGLMessage(&glmsg);
9331}
9332
9333void GLTrace_glGenSamplers(GLsizei count, GLuint * samplers) {
9334    GLMessage glmsg;
9335    GLTraceContext *glContext = getGLTraceContext();
9336
9337    glmsg.set_function(GLMessage::glGenSamplers);
9338
9339    // copy argument count
9340    GLMessage_DataType *arg_count = glmsg.add_args();
9341    arg_count->set_isarray(false);
9342    arg_count->set_type(GLMessage::DataType::INT);
9343    arg_count->add_intvalue(count);
9344
9345    // copy argument samplers
9346    GLMessage_DataType *arg_samplers = glmsg.add_args();
9347    arg_samplers->set_isarray(false);
9348    arg_samplers->set_type(GLMessage::DataType::INT64);
9349    arg_samplers->add_int64value((uintptr_t)samplers);
9350
9351    // call function
9352    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9353    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9354    glContext->hooks->gl.glGenSamplers(count, samplers);
9355    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9356    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9357
9358    void *pointerArgs[] = {
9359        (void *) samplers,
9360    };
9361
9362    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9363                              threadStartTime, threadEndTime,
9364                              &glmsg, pointerArgs);
9365    glContext->traceGLMessage(&glmsg);
9366}
9367
9368void GLTrace_glDeleteSamplers(GLsizei count, const GLuint * samplers) {
9369    GLMessage glmsg;
9370    GLTraceContext *glContext = getGLTraceContext();
9371
9372    glmsg.set_function(GLMessage::glDeleteSamplers);
9373
9374    // copy argument count
9375    GLMessage_DataType *arg_count = glmsg.add_args();
9376    arg_count->set_isarray(false);
9377    arg_count->set_type(GLMessage::DataType::INT);
9378    arg_count->add_intvalue(count);
9379
9380    // copy argument samplers
9381    GLMessage_DataType *arg_samplers = glmsg.add_args();
9382    arg_samplers->set_isarray(false);
9383    arg_samplers->set_type(GLMessage::DataType::INT64);
9384    arg_samplers->add_int64value((uintptr_t)samplers);
9385
9386    // call function
9387    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9388    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9389    glContext->hooks->gl.glDeleteSamplers(count, samplers);
9390    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9391    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9392
9393    void *pointerArgs[] = {
9394        (void *) samplers,
9395    };
9396
9397    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9398                              threadStartTime, threadEndTime,
9399                              &glmsg, pointerArgs);
9400    glContext->traceGLMessage(&glmsg);
9401}
9402
9403GLboolean GLTrace_glIsSampler(GLuint sampler) {
9404    GLMessage glmsg;
9405    GLTraceContext *glContext = getGLTraceContext();
9406
9407    glmsg.set_function(GLMessage::glIsSampler);
9408
9409    // copy argument sampler
9410    GLMessage_DataType *arg_sampler = glmsg.add_args();
9411    arg_sampler->set_isarray(false);
9412    arg_sampler->set_type(GLMessage::DataType::INT);
9413    arg_sampler->add_intvalue(sampler);
9414
9415    // call function
9416    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9417    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9418    GLboolean retValue = glContext->hooks->gl.glIsSampler(sampler);
9419    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9420    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9421
9422    // set return value
9423    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
9424    rt->set_isarray(false);
9425    rt->set_type(GLMessage::DataType::BOOL);
9426    rt->add_boolvalue(retValue);
9427
9428    void *pointerArgs[] = {
9429    };
9430
9431    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9432                              threadStartTime, threadEndTime,
9433                              &glmsg, pointerArgs);
9434    glContext->traceGLMessage(&glmsg);
9435
9436    return retValue;
9437}
9438
9439void GLTrace_glBindSampler(GLuint unit, GLuint sampler) {
9440    GLMessage glmsg;
9441    GLTraceContext *glContext = getGLTraceContext();
9442
9443    glmsg.set_function(GLMessage::glBindSampler);
9444
9445    // copy argument unit
9446    GLMessage_DataType *arg_unit = glmsg.add_args();
9447    arg_unit->set_isarray(false);
9448    arg_unit->set_type(GLMessage::DataType::INT);
9449    arg_unit->add_intvalue(unit);
9450
9451    // copy argument sampler
9452    GLMessage_DataType *arg_sampler = glmsg.add_args();
9453    arg_sampler->set_isarray(false);
9454    arg_sampler->set_type(GLMessage::DataType::INT);
9455    arg_sampler->add_intvalue(sampler);
9456
9457    // call function
9458    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9459    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9460    glContext->hooks->gl.glBindSampler(unit, sampler);
9461    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9462    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9463
9464    void *pointerArgs[] = {
9465    };
9466
9467    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9468                              threadStartTime, threadEndTime,
9469                              &glmsg, pointerArgs);
9470    glContext->traceGLMessage(&glmsg);
9471}
9472
9473void GLTrace_glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) {
9474    GLMessage glmsg;
9475    GLTraceContext *glContext = getGLTraceContext();
9476
9477    glmsg.set_function(GLMessage::glSamplerParameteri);
9478
9479    // copy argument sampler
9480    GLMessage_DataType *arg_sampler = glmsg.add_args();
9481    arg_sampler->set_isarray(false);
9482    arg_sampler->set_type(GLMessage::DataType::INT);
9483    arg_sampler->add_intvalue(sampler);
9484
9485    // copy argument pname
9486    GLMessage_DataType *arg_pname = glmsg.add_args();
9487    arg_pname->set_isarray(false);
9488    arg_pname->set_type(GLMessage::DataType::ENUM);
9489    arg_pname->add_intvalue((int)pname);
9490
9491    // copy argument param
9492    GLMessage_DataType *arg_param = glmsg.add_args();
9493    arg_param->set_isarray(false);
9494    arg_param->set_type(GLMessage::DataType::INT);
9495    arg_param->add_intvalue(param);
9496
9497    // call function
9498    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9499    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9500    glContext->hooks->gl.glSamplerParameteri(sampler, pname, param);
9501    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9502    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9503
9504    void *pointerArgs[] = {
9505    };
9506
9507    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9508                              threadStartTime, threadEndTime,
9509                              &glmsg, pointerArgs);
9510    glContext->traceGLMessage(&glmsg);
9511}
9512
9513void GLTrace_glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint * param) {
9514    GLMessage glmsg;
9515    GLTraceContext *glContext = getGLTraceContext();
9516
9517    glmsg.set_function(GLMessage::glSamplerParameteriv);
9518
9519    // copy argument sampler
9520    GLMessage_DataType *arg_sampler = glmsg.add_args();
9521    arg_sampler->set_isarray(false);
9522    arg_sampler->set_type(GLMessage::DataType::INT);
9523    arg_sampler->add_intvalue(sampler);
9524
9525    // copy argument pname
9526    GLMessage_DataType *arg_pname = glmsg.add_args();
9527    arg_pname->set_isarray(false);
9528    arg_pname->set_type(GLMessage::DataType::ENUM);
9529    arg_pname->add_intvalue((int)pname);
9530
9531    // copy argument param
9532    GLMessage_DataType *arg_param = glmsg.add_args();
9533    arg_param->set_isarray(false);
9534    arg_param->set_type(GLMessage::DataType::INT64);
9535    arg_param->add_int64value((uintptr_t)param);
9536
9537    // call function
9538    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9539    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9540    glContext->hooks->gl.glSamplerParameteriv(sampler, pname, param);
9541    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9542    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9543
9544    void *pointerArgs[] = {
9545        (void *) param,
9546    };
9547
9548    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9549                              threadStartTime, threadEndTime,
9550                              &glmsg, pointerArgs);
9551    glContext->traceGLMessage(&glmsg);
9552}
9553
9554void GLTrace_glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) {
9555    GLMessage glmsg;
9556    GLTraceContext *glContext = getGLTraceContext();
9557
9558    glmsg.set_function(GLMessage::glSamplerParameterf);
9559
9560    // copy argument sampler
9561    GLMessage_DataType *arg_sampler = glmsg.add_args();
9562    arg_sampler->set_isarray(false);
9563    arg_sampler->set_type(GLMessage::DataType::INT);
9564    arg_sampler->add_intvalue(sampler);
9565
9566    // copy argument pname
9567    GLMessage_DataType *arg_pname = glmsg.add_args();
9568    arg_pname->set_isarray(false);
9569    arg_pname->set_type(GLMessage::DataType::ENUM);
9570    arg_pname->add_intvalue((int)pname);
9571
9572    // copy argument param
9573    GLMessage_DataType *arg_param = glmsg.add_args();
9574    arg_param->set_isarray(false);
9575    arg_param->set_type(GLMessage::DataType::FLOAT);
9576    arg_param->add_floatvalue(param);
9577
9578    // call function
9579    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9580    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9581    glContext->hooks->gl.glSamplerParameterf(sampler, pname, param);
9582    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9583    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9584
9585    void *pointerArgs[] = {
9586    };
9587
9588    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9589                              threadStartTime, threadEndTime,
9590                              &glmsg, pointerArgs);
9591    glContext->traceGLMessage(&glmsg);
9592}
9593
9594void GLTrace_glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat * param) {
9595    GLMessage glmsg;
9596    GLTraceContext *glContext = getGLTraceContext();
9597
9598    glmsg.set_function(GLMessage::glSamplerParameterfv);
9599
9600    // copy argument sampler
9601    GLMessage_DataType *arg_sampler = glmsg.add_args();
9602    arg_sampler->set_isarray(false);
9603    arg_sampler->set_type(GLMessage::DataType::INT);
9604    arg_sampler->add_intvalue(sampler);
9605
9606    // copy argument pname
9607    GLMessage_DataType *arg_pname = glmsg.add_args();
9608    arg_pname->set_isarray(false);
9609    arg_pname->set_type(GLMessage::DataType::ENUM);
9610    arg_pname->add_intvalue((int)pname);
9611
9612    // copy argument param
9613    GLMessage_DataType *arg_param = glmsg.add_args();
9614    arg_param->set_isarray(false);
9615    arg_param->set_type(GLMessage::DataType::INT64);
9616    arg_param->add_int64value((uintptr_t)param);
9617
9618    // call function
9619    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9620    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9621    glContext->hooks->gl.glSamplerParameterfv(sampler, pname, param);
9622    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9623    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9624
9625    void *pointerArgs[] = {
9626        (void *) param,
9627    };
9628
9629    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9630                              threadStartTime, threadEndTime,
9631                              &glmsg, pointerArgs);
9632    glContext->traceGLMessage(&glmsg);
9633}
9634
9635void GLTrace_glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint * params) {
9636    GLMessage glmsg;
9637    GLTraceContext *glContext = getGLTraceContext();
9638
9639    glmsg.set_function(GLMessage::glGetSamplerParameteriv);
9640
9641    // copy argument sampler
9642    GLMessage_DataType *arg_sampler = glmsg.add_args();
9643    arg_sampler->set_isarray(false);
9644    arg_sampler->set_type(GLMessage::DataType::INT);
9645    arg_sampler->add_intvalue(sampler);
9646
9647    // copy argument pname
9648    GLMessage_DataType *arg_pname = glmsg.add_args();
9649    arg_pname->set_isarray(false);
9650    arg_pname->set_type(GLMessage::DataType::ENUM);
9651    arg_pname->add_intvalue((int)pname);
9652
9653    // copy argument params
9654    GLMessage_DataType *arg_params = glmsg.add_args();
9655    arg_params->set_isarray(false);
9656    arg_params->set_type(GLMessage::DataType::INT64);
9657    arg_params->add_int64value((uintptr_t)params);
9658
9659    // call function
9660    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9661    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9662    glContext->hooks->gl.glGetSamplerParameteriv(sampler, pname, params);
9663    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9664    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9665
9666    void *pointerArgs[] = {
9667        (void *) params,
9668    };
9669
9670    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9671                              threadStartTime, threadEndTime,
9672                              &glmsg, pointerArgs);
9673    glContext->traceGLMessage(&glmsg);
9674}
9675
9676void GLTrace_glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat * params) {
9677    GLMessage glmsg;
9678    GLTraceContext *glContext = getGLTraceContext();
9679
9680    glmsg.set_function(GLMessage::glGetSamplerParameterfv);
9681
9682    // copy argument sampler
9683    GLMessage_DataType *arg_sampler = glmsg.add_args();
9684    arg_sampler->set_isarray(false);
9685    arg_sampler->set_type(GLMessage::DataType::INT);
9686    arg_sampler->add_intvalue(sampler);
9687
9688    // copy argument pname
9689    GLMessage_DataType *arg_pname = glmsg.add_args();
9690    arg_pname->set_isarray(false);
9691    arg_pname->set_type(GLMessage::DataType::ENUM);
9692    arg_pname->add_intvalue((int)pname);
9693
9694    // copy argument params
9695    GLMessage_DataType *arg_params = glmsg.add_args();
9696    arg_params->set_isarray(false);
9697    arg_params->set_type(GLMessage::DataType::INT64);
9698    arg_params->add_int64value((uintptr_t)params);
9699
9700    // call function
9701    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9702    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9703    glContext->hooks->gl.glGetSamplerParameterfv(sampler, pname, params);
9704    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9705    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9706
9707    void *pointerArgs[] = {
9708        (void *) params,
9709    };
9710
9711    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9712                              threadStartTime, threadEndTime,
9713                              &glmsg, pointerArgs);
9714    glContext->traceGLMessage(&glmsg);
9715}
9716
9717void GLTrace_glVertexAttribDivisor(GLuint index, GLuint divisor) {
9718    GLMessage glmsg;
9719    GLTraceContext *glContext = getGLTraceContext();
9720
9721    glmsg.set_function(GLMessage::glVertexAttribDivisor);
9722
9723    // copy argument index
9724    GLMessage_DataType *arg_index = glmsg.add_args();
9725    arg_index->set_isarray(false);
9726    arg_index->set_type(GLMessage::DataType::INT);
9727    arg_index->add_intvalue(index);
9728
9729    // copy argument divisor
9730    GLMessage_DataType *arg_divisor = glmsg.add_args();
9731    arg_divisor->set_isarray(false);
9732    arg_divisor->set_type(GLMessage::DataType::INT);
9733    arg_divisor->add_intvalue(divisor);
9734
9735    // call function
9736    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9737    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9738    glContext->hooks->gl.glVertexAttribDivisor(index, divisor);
9739    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9740    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9741
9742    void *pointerArgs[] = {
9743    };
9744
9745    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9746                              threadStartTime, threadEndTime,
9747                              &glmsg, pointerArgs);
9748    glContext->traceGLMessage(&glmsg);
9749}
9750
9751void GLTrace_glBindTransformFeedback(GLenum target, GLuint id) {
9752    GLMessage glmsg;
9753    GLTraceContext *glContext = getGLTraceContext();
9754
9755    glmsg.set_function(GLMessage::glBindTransformFeedback);
9756
9757    // copy argument target
9758    GLMessage_DataType *arg_target = glmsg.add_args();
9759    arg_target->set_isarray(false);
9760    arg_target->set_type(GLMessage::DataType::ENUM);
9761    arg_target->add_intvalue((int)target);
9762
9763    // copy argument id
9764    GLMessage_DataType *arg_id = glmsg.add_args();
9765    arg_id->set_isarray(false);
9766    arg_id->set_type(GLMessage::DataType::INT);
9767    arg_id->add_intvalue(id);
9768
9769    // call function
9770    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9771    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9772    glContext->hooks->gl.glBindTransformFeedback(target, id);
9773    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9774    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9775
9776    void *pointerArgs[] = {
9777    };
9778
9779    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9780                              threadStartTime, threadEndTime,
9781                              &glmsg, pointerArgs);
9782    glContext->traceGLMessage(&glmsg);
9783}
9784
9785void GLTrace_glDeleteTransformFeedbacks(GLsizei n, const GLuint * ids) {
9786    GLMessage glmsg;
9787    GLTraceContext *glContext = getGLTraceContext();
9788
9789    glmsg.set_function(GLMessage::glDeleteTransformFeedbacks);
9790
9791    // copy argument n
9792    GLMessage_DataType *arg_n = glmsg.add_args();
9793    arg_n->set_isarray(false);
9794    arg_n->set_type(GLMessage::DataType::INT);
9795    arg_n->add_intvalue(n);
9796
9797    // copy argument ids
9798    GLMessage_DataType *arg_ids = glmsg.add_args();
9799    arg_ids->set_isarray(false);
9800    arg_ids->set_type(GLMessage::DataType::INT64);
9801    arg_ids->add_int64value((uintptr_t)ids);
9802
9803    // call function
9804    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9805    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9806    glContext->hooks->gl.glDeleteTransformFeedbacks(n, ids);
9807    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9808    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9809
9810    void *pointerArgs[] = {
9811        (void *) ids,
9812    };
9813
9814    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9815                              threadStartTime, threadEndTime,
9816                              &glmsg, pointerArgs);
9817    glContext->traceGLMessage(&glmsg);
9818}
9819
9820void GLTrace_glGenTransformFeedbacks(GLsizei n, GLuint * ids) {
9821    GLMessage glmsg;
9822    GLTraceContext *glContext = getGLTraceContext();
9823
9824    glmsg.set_function(GLMessage::glGenTransformFeedbacks);
9825
9826    // copy argument n
9827    GLMessage_DataType *arg_n = glmsg.add_args();
9828    arg_n->set_isarray(false);
9829    arg_n->set_type(GLMessage::DataType::INT);
9830    arg_n->add_intvalue(n);
9831
9832    // copy argument ids
9833    GLMessage_DataType *arg_ids = glmsg.add_args();
9834    arg_ids->set_isarray(false);
9835    arg_ids->set_type(GLMessage::DataType::INT64);
9836    arg_ids->add_int64value((uintptr_t)ids);
9837
9838    // call function
9839    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9840    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9841    glContext->hooks->gl.glGenTransformFeedbacks(n, ids);
9842    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9843    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9844
9845    void *pointerArgs[] = {
9846        (void *) ids,
9847    };
9848
9849    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9850                              threadStartTime, threadEndTime,
9851                              &glmsg, pointerArgs);
9852    glContext->traceGLMessage(&glmsg);
9853}
9854
9855GLboolean GLTrace_glIsTransformFeedback(GLuint id) {
9856    GLMessage glmsg;
9857    GLTraceContext *glContext = getGLTraceContext();
9858
9859    glmsg.set_function(GLMessage::glIsTransformFeedback);
9860
9861    // copy argument id
9862    GLMessage_DataType *arg_id = glmsg.add_args();
9863    arg_id->set_isarray(false);
9864    arg_id->set_type(GLMessage::DataType::INT);
9865    arg_id->add_intvalue(id);
9866
9867    // call function
9868    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9869    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9870    GLboolean retValue = glContext->hooks->gl.glIsTransformFeedback(id);
9871    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9872    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9873
9874    // set return value
9875    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
9876    rt->set_isarray(false);
9877    rt->set_type(GLMessage::DataType::BOOL);
9878    rt->add_boolvalue(retValue);
9879
9880    void *pointerArgs[] = {
9881    };
9882
9883    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9884                              threadStartTime, threadEndTime,
9885                              &glmsg, pointerArgs);
9886    glContext->traceGLMessage(&glmsg);
9887
9888    return retValue;
9889}
9890
9891void GLTrace_glPauseTransformFeedback(void) {
9892    GLMessage glmsg;
9893    GLTraceContext *glContext = getGLTraceContext();
9894
9895    glmsg.set_function(GLMessage::glPauseTransformFeedback);
9896
9897    // call function
9898    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9899    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9900    glContext->hooks->gl.glPauseTransformFeedback();
9901    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9902    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9903
9904    void *pointerArgs[] = {
9905    };
9906
9907    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9908                              threadStartTime, threadEndTime,
9909                              &glmsg, pointerArgs);
9910    glContext->traceGLMessage(&glmsg);
9911}
9912
9913void GLTrace_glResumeTransformFeedback(void) {
9914    GLMessage glmsg;
9915    GLTraceContext *glContext = getGLTraceContext();
9916
9917    glmsg.set_function(GLMessage::glResumeTransformFeedback);
9918
9919    // call function
9920    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9921    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9922    glContext->hooks->gl.glResumeTransformFeedback();
9923    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9924    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9925
9926    void *pointerArgs[] = {
9927    };
9928
9929    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9930                              threadStartTime, threadEndTime,
9931                              &glmsg, pointerArgs);
9932    glContext->traceGLMessage(&glmsg);
9933}
9934
9935void GLTrace_glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei * length, GLenum * binaryFormat, void * binary) {
9936    GLMessage glmsg;
9937    GLTraceContext *glContext = getGLTraceContext();
9938
9939    glmsg.set_function(GLMessage::glGetProgramBinary);
9940
9941    // copy argument program
9942    GLMessage_DataType *arg_program = glmsg.add_args();
9943    arg_program->set_isarray(false);
9944    arg_program->set_type(GLMessage::DataType::INT);
9945    arg_program->add_intvalue(program);
9946
9947    // copy argument bufSize
9948    GLMessage_DataType *arg_bufSize = glmsg.add_args();
9949    arg_bufSize->set_isarray(false);
9950    arg_bufSize->set_type(GLMessage::DataType::INT);
9951    arg_bufSize->add_intvalue(bufSize);
9952
9953    // copy argument length
9954    GLMessage_DataType *arg_length = glmsg.add_args();
9955    arg_length->set_isarray(false);
9956    arg_length->set_type(GLMessage::DataType::INT64);
9957    arg_length->add_int64value((uintptr_t)length);
9958
9959    // copy argument binaryFormat
9960    GLMessage_DataType *arg_binaryFormat = glmsg.add_args();
9961    arg_binaryFormat->set_isarray(false);
9962    arg_binaryFormat->set_type(GLMessage::DataType::INT64);
9963    arg_binaryFormat->add_int64value((uintptr_t)binaryFormat);
9964
9965    // copy argument binary
9966    GLMessage_DataType *arg_binary = glmsg.add_args();
9967    arg_binary->set_isarray(false);
9968    arg_binary->set_type(GLMessage::DataType::INT64);
9969    arg_binary->add_int64value((uintptr_t)binary);
9970
9971    // call function
9972    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9973    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9974    glContext->hooks->gl.glGetProgramBinary(program, bufSize, length, binaryFormat, binary);
9975    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9976    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9977
9978    void *pointerArgs[] = {
9979        (void *) length,
9980        (void *) binaryFormat,
9981        (void *) binary,
9982    };
9983
9984    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9985                              threadStartTime, threadEndTime,
9986                              &glmsg, pointerArgs);
9987    glContext->traceGLMessage(&glmsg);
9988}
9989
9990void GLTrace_glProgramBinary(GLuint program, GLenum binaryFormat, const void * binary, GLsizei length) {
9991    GLMessage glmsg;
9992    GLTraceContext *glContext = getGLTraceContext();
9993
9994    glmsg.set_function(GLMessage::glProgramBinary);
9995
9996    // copy argument program
9997    GLMessage_DataType *arg_program = glmsg.add_args();
9998    arg_program->set_isarray(false);
9999    arg_program->set_type(GLMessage::DataType::INT);
10000    arg_program->add_intvalue(program);
10001
10002    // copy argument binaryFormat
10003    GLMessage_DataType *arg_binaryFormat = glmsg.add_args();
10004    arg_binaryFormat->set_isarray(false);
10005    arg_binaryFormat->set_type(GLMessage::DataType::ENUM);
10006    arg_binaryFormat->add_intvalue((int)binaryFormat);
10007
10008    // copy argument binary
10009    GLMessage_DataType *arg_binary = glmsg.add_args();
10010    arg_binary->set_isarray(false);
10011    arg_binary->set_type(GLMessage::DataType::INT64);
10012    arg_binary->add_int64value((uintptr_t)binary);
10013
10014    // copy argument length
10015    GLMessage_DataType *arg_length = glmsg.add_args();
10016    arg_length->set_isarray(false);
10017    arg_length->set_type(GLMessage::DataType::INT);
10018    arg_length->add_intvalue(length);
10019
10020    // call function
10021    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10022    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10023    glContext->hooks->gl.glProgramBinary(program, binaryFormat, binary, length);
10024    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10025    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10026
10027    void *pointerArgs[] = {
10028        (void *) binary,
10029    };
10030
10031    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10032                              threadStartTime, threadEndTime,
10033                              &glmsg, pointerArgs);
10034    glContext->traceGLMessage(&glmsg);
10035}
10036
10037void GLTrace_glProgramParameteri(GLuint program, GLenum pname, GLint value) {
10038    GLMessage glmsg;
10039    GLTraceContext *glContext = getGLTraceContext();
10040
10041    glmsg.set_function(GLMessage::glProgramParameteri);
10042
10043    // copy argument program
10044    GLMessage_DataType *arg_program = glmsg.add_args();
10045    arg_program->set_isarray(false);
10046    arg_program->set_type(GLMessage::DataType::INT);
10047    arg_program->add_intvalue(program);
10048
10049    // copy argument pname
10050    GLMessage_DataType *arg_pname = glmsg.add_args();
10051    arg_pname->set_isarray(false);
10052    arg_pname->set_type(GLMessage::DataType::ENUM);
10053    arg_pname->add_intvalue((int)pname);
10054
10055    // copy argument value
10056    GLMessage_DataType *arg_value = glmsg.add_args();
10057    arg_value->set_isarray(false);
10058    arg_value->set_type(GLMessage::DataType::INT);
10059    arg_value->add_intvalue(value);
10060
10061    // call function
10062    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10063    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10064    glContext->hooks->gl.glProgramParameteri(program, pname, value);
10065    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10066    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10067
10068    void *pointerArgs[] = {
10069    };
10070
10071    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10072                              threadStartTime, threadEndTime,
10073                              &glmsg, pointerArgs);
10074    glContext->traceGLMessage(&glmsg);
10075}
10076
10077void GLTrace_glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum * attachments) {
10078    GLMessage glmsg;
10079    GLTraceContext *glContext = getGLTraceContext();
10080
10081    glmsg.set_function(GLMessage::glInvalidateFramebuffer);
10082
10083    // copy argument target
10084    GLMessage_DataType *arg_target = glmsg.add_args();
10085    arg_target->set_isarray(false);
10086    arg_target->set_type(GLMessage::DataType::ENUM);
10087    arg_target->add_intvalue((int)target);
10088
10089    // copy argument numAttachments
10090    GLMessage_DataType *arg_numAttachments = glmsg.add_args();
10091    arg_numAttachments->set_isarray(false);
10092    arg_numAttachments->set_type(GLMessage::DataType::INT);
10093    arg_numAttachments->add_intvalue(numAttachments);
10094
10095    // copy argument attachments
10096    GLMessage_DataType *arg_attachments = glmsg.add_args();
10097    arg_attachments->set_isarray(false);
10098    arg_attachments->set_type(GLMessage::DataType::INT64);
10099    arg_attachments->add_int64value((uintptr_t)attachments);
10100
10101    // call function
10102    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10103    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10104    glContext->hooks->gl.glInvalidateFramebuffer(target, numAttachments, attachments);
10105    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10106    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10107
10108    void *pointerArgs[] = {
10109        (void *) attachments,
10110    };
10111
10112    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10113                              threadStartTime, threadEndTime,
10114                              &glmsg, pointerArgs);
10115    glContext->traceGLMessage(&glmsg);
10116}
10117
10118void GLTrace_glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height) {
10119    GLMessage glmsg;
10120    GLTraceContext *glContext = getGLTraceContext();
10121
10122    glmsg.set_function(GLMessage::glInvalidateSubFramebuffer);
10123
10124    // copy argument target
10125    GLMessage_DataType *arg_target = glmsg.add_args();
10126    arg_target->set_isarray(false);
10127    arg_target->set_type(GLMessage::DataType::ENUM);
10128    arg_target->add_intvalue((int)target);
10129
10130    // copy argument numAttachments
10131    GLMessage_DataType *arg_numAttachments = glmsg.add_args();
10132    arg_numAttachments->set_isarray(false);
10133    arg_numAttachments->set_type(GLMessage::DataType::INT);
10134    arg_numAttachments->add_intvalue(numAttachments);
10135
10136    // copy argument attachments
10137    GLMessage_DataType *arg_attachments = glmsg.add_args();
10138    arg_attachments->set_isarray(false);
10139    arg_attachments->set_type(GLMessage::DataType::INT64);
10140    arg_attachments->add_int64value((uintptr_t)attachments);
10141
10142    // copy argument x
10143    GLMessage_DataType *arg_x = glmsg.add_args();
10144    arg_x->set_isarray(false);
10145    arg_x->set_type(GLMessage::DataType::INT);
10146    arg_x->add_intvalue(x);
10147
10148    // copy argument y
10149    GLMessage_DataType *arg_y = glmsg.add_args();
10150    arg_y->set_isarray(false);
10151    arg_y->set_type(GLMessage::DataType::INT);
10152    arg_y->add_intvalue(y);
10153
10154    // copy argument width
10155    GLMessage_DataType *arg_width = glmsg.add_args();
10156    arg_width->set_isarray(false);
10157    arg_width->set_type(GLMessage::DataType::INT);
10158    arg_width->add_intvalue(width);
10159
10160    // copy argument height
10161    GLMessage_DataType *arg_height = glmsg.add_args();
10162    arg_height->set_isarray(false);
10163    arg_height->set_type(GLMessage::DataType::INT);
10164    arg_height->add_intvalue(height);
10165
10166    // call function
10167    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10168    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10169    glContext->hooks->gl.glInvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height);
10170    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10171    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10172
10173    void *pointerArgs[] = {
10174        (void *) attachments,
10175    };
10176
10177    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10178                              threadStartTime, threadEndTime,
10179                              &glmsg, pointerArgs);
10180    glContext->traceGLMessage(&glmsg);
10181}
10182
10183void GLTrace_glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) {
10184    GLMessage glmsg;
10185    GLTraceContext *glContext = getGLTraceContext();
10186
10187    glmsg.set_function(GLMessage::glTexStorage2D);
10188
10189    // copy argument target
10190    GLMessage_DataType *arg_target = glmsg.add_args();
10191    arg_target->set_isarray(false);
10192    arg_target->set_type(GLMessage::DataType::ENUM);
10193    arg_target->add_intvalue((int)target);
10194
10195    // copy argument levels
10196    GLMessage_DataType *arg_levels = glmsg.add_args();
10197    arg_levels->set_isarray(false);
10198    arg_levels->set_type(GLMessage::DataType::INT);
10199    arg_levels->add_intvalue(levels);
10200
10201    // copy argument internalformat
10202    GLMessage_DataType *arg_internalformat = glmsg.add_args();
10203    arg_internalformat->set_isarray(false);
10204    arg_internalformat->set_type(GLMessage::DataType::ENUM);
10205    arg_internalformat->add_intvalue((int)internalformat);
10206
10207    // copy argument width
10208    GLMessage_DataType *arg_width = glmsg.add_args();
10209    arg_width->set_isarray(false);
10210    arg_width->set_type(GLMessage::DataType::INT);
10211    arg_width->add_intvalue(width);
10212
10213    // copy argument height
10214    GLMessage_DataType *arg_height = glmsg.add_args();
10215    arg_height->set_isarray(false);
10216    arg_height->set_type(GLMessage::DataType::INT);
10217    arg_height->add_intvalue(height);
10218
10219    // call function
10220    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10221    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10222    glContext->hooks->gl.glTexStorage2D(target, levels, internalformat, width, height);
10223    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10224    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10225
10226    void *pointerArgs[] = {
10227    };
10228
10229    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10230                              threadStartTime, threadEndTime,
10231                              &glmsg, pointerArgs);
10232    glContext->traceGLMessage(&glmsg);
10233}
10234
10235void GLTrace_glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) {
10236    GLMessage glmsg;
10237    GLTraceContext *glContext = getGLTraceContext();
10238
10239    glmsg.set_function(GLMessage::glTexStorage3D);
10240
10241    // copy argument target
10242    GLMessage_DataType *arg_target = glmsg.add_args();
10243    arg_target->set_isarray(false);
10244    arg_target->set_type(GLMessage::DataType::ENUM);
10245    arg_target->add_intvalue((int)target);
10246
10247    // copy argument levels
10248    GLMessage_DataType *arg_levels = glmsg.add_args();
10249    arg_levels->set_isarray(false);
10250    arg_levels->set_type(GLMessage::DataType::INT);
10251    arg_levels->add_intvalue(levels);
10252
10253    // copy argument internalformat
10254    GLMessage_DataType *arg_internalformat = glmsg.add_args();
10255    arg_internalformat->set_isarray(false);
10256    arg_internalformat->set_type(GLMessage::DataType::ENUM);
10257    arg_internalformat->add_intvalue((int)internalformat);
10258
10259    // copy argument width
10260    GLMessage_DataType *arg_width = glmsg.add_args();
10261    arg_width->set_isarray(false);
10262    arg_width->set_type(GLMessage::DataType::INT);
10263    arg_width->add_intvalue(width);
10264
10265    // copy argument height
10266    GLMessage_DataType *arg_height = glmsg.add_args();
10267    arg_height->set_isarray(false);
10268    arg_height->set_type(GLMessage::DataType::INT);
10269    arg_height->add_intvalue(height);
10270
10271    // copy argument depth
10272    GLMessage_DataType *arg_depth = glmsg.add_args();
10273    arg_depth->set_isarray(false);
10274    arg_depth->set_type(GLMessage::DataType::INT);
10275    arg_depth->add_intvalue(depth);
10276
10277    // call function
10278    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10279    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10280    glContext->hooks->gl.glTexStorage3D(target, levels, internalformat, width, height, depth);
10281    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10282    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10283
10284    void *pointerArgs[] = {
10285    };
10286
10287    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10288                              threadStartTime, threadEndTime,
10289                              &glmsg, pointerArgs);
10290    glContext->traceGLMessage(&glmsg);
10291}
10292
10293void GLTrace_glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint * params) {
10294    GLMessage glmsg;
10295    GLTraceContext *glContext = getGLTraceContext();
10296
10297    glmsg.set_function(GLMessage::glGetInternalformativ);
10298
10299    // copy argument target
10300    GLMessage_DataType *arg_target = glmsg.add_args();
10301    arg_target->set_isarray(false);
10302    arg_target->set_type(GLMessage::DataType::ENUM);
10303    arg_target->add_intvalue((int)target);
10304
10305    // copy argument internalformat
10306    GLMessage_DataType *arg_internalformat = glmsg.add_args();
10307    arg_internalformat->set_isarray(false);
10308    arg_internalformat->set_type(GLMessage::DataType::ENUM);
10309    arg_internalformat->add_intvalue((int)internalformat);
10310
10311    // copy argument pname
10312    GLMessage_DataType *arg_pname = glmsg.add_args();
10313    arg_pname->set_isarray(false);
10314    arg_pname->set_type(GLMessage::DataType::ENUM);
10315    arg_pname->add_intvalue((int)pname);
10316
10317    // copy argument bufSize
10318    GLMessage_DataType *arg_bufSize = glmsg.add_args();
10319    arg_bufSize->set_isarray(false);
10320    arg_bufSize->set_type(GLMessage::DataType::INT);
10321    arg_bufSize->add_intvalue(bufSize);
10322
10323    // copy argument params
10324    GLMessage_DataType *arg_params = glmsg.add_args();
10325    arg_params->set_isarray(false);
10326    arg_params->set_type(GLMessage::DataType::INT64);
10327    arg_params->add_int64value((uintptr_t)params);
10328
10329    // call function
10330    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10331    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10332    glContext->hooks->gl.glGetInternalformativ(target, internalformat, pname, bufSize, params);
10333    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10334    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10335
10336    void *pointerArgs[] = {
10337        (void *) params,
10338    };
10339
10340    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10341                              threadStartTime, threadEndTime,
10342                              &glmsg, pointerArgs);
10343    glContext->traceGLMessage(&glmsg);
10344}
10345
10346
10347// Definitions for GL2Ext APIs
10348
10349void GLTrace_glBlendBarrierKHR(void) {
10350    GLMessage glmsg;
10351    GLTraceContext *glContext = getGLTraceContext();
10352
10353    glmsg.set_function(GLMessage::glBlendBarrierKHR);
10354
10355    // call function
10356    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10357    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10358    glContext->hooks->gl.glBlendBarrierKHR();
10359    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10360    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10361
10362    void *pointerArgs[] = {
10363    };
10364
10365    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10366                              threadStartTime, threadEndTime,
10367                              &glmsg, pointerArgs);
10368    glContext->traceGLMessage(&glmsg);
10369}
10370
10371void GLTrace_glDebugMessageControlKHR(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled) {
10372    GLMessage glmsg;
10373    GLTraceContext *glContext = getGLTraceContext();
10374
10375    glmsg.set_function(GLMessage::glDebugMessageControlKHR);
10376
10377    // copy argument source
10378    GLMessage_DataType *arg_source = glmsg.add_args();
10379    arg_source->set_isarray(false);
10380    arg_source->set_type(GLMessage::DataType::ENUM);
10381    arg_source->add_intvalue((int)source);
10382
10383    // copy argument type
10384    GLMessage_DataType *arg_type = glmsg.add_args();
10385    arg_type->set_isarray(false);
10386    arg_type->set_type(GLMessage::DataType::ENUM);
10387    arg_type->add_intvalue((int)type);
10388
10389    // copy argument severity
10390    GLMessage_DataType *arg_severity = glmsg.add_args();
10391    arg_severity->set_isarray(false);
10392    arg_severity->set_type(GLMessage::DataType::ENUM);
10393    arg_severity->add_intvalue((int)severity);
10394
10395    // copy argument count
10396    GLMessage_DataType *arg_count = glmsg.add_args();
10397    arg_count->set_isarray(false);
10398    arg_count->set_type(GLMessage::DataType::INT);
10399    arg_count->add_intvalue(count);
10400
10401    // copy argument ids
10402    GLMessage_DataType *arg_ids = glmsg.add_args();
10403    arg_ids->set_isarray(false);
10404    arg_ids->set_type(GLMessage::DataType::INT64);
10405    arg_ids->add_int64value((uintptr_t)ids);
10406
10407    // copy argument enabled
10408    GLMessage_DataType *arg_enabled = glmsg.add_args();
10409    arg_enabled->set_isarray(false);
10410    arg_enabled->set_type(GLMessage::DataType::BOOL);
10411    arg_enabled->add_boolvalue(enabled);
10412
10413    // call function
10414    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10415    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10416    glContext->hooks->gl.glDebugMessageControlKHR(source, type, severity, count, ids, enabled);
10417    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10418    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10419
10420    void *pointerArgs[] = {
10421        (void *) ids,
10422    };
10423
10424    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10425                              threadStartTime, threadEndTime,
10426                              &glmsg, pointerArgs);
10427    glContext->traceGLMessage(&glmsg);
10428}
10429
10430void GLTrace_glDebugMessageInsertKHR(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf) {
10431    GLMessage glmsg;
10432    GLTraceContext *glContext = getGLTraceContext();
10433
10434    glmsg.set_function(GLMessage::glDebugMessageInsertKHR);
10435
10436    // copy argument source
10437    GLMessage_DataType *arg_source = glmsg.add_args();
10438    arg_source->set_isarray(false);
10439    arg_source->set_type(GLMessage::DataType::ENUM);
10440    arg_source->add_intvalue((int)source);
10441
10442    // copy argument type
10443    GLMessage_DataType *arg_type = glmsg.add_args();
10444    arg_type->set_isarray(false);
10445    arg_type->set_type(GLMessage::DataType::ENUM);
10446    arg_type->add_intvalue((int)type);
10447
10448    // copy argument id
10449    GLMessage_DataType *arg_id = glmsg.add_args();
10450    arg_id->set_isarray(false);
10451    arg_id->set_type(GLMessage::DataType::INT);
10452    arg_id->add_intvalue(id);
10453
10454    // copy argument severity
10455    GLMessage_DataType *arg_severity = glmsg.add_args();
10456    arg_severity->set_isarray(false);
10457    arg_severity->set_type(GLMessage::DataType::ENUM);
10458    arg_severity->add_intvalue((int)severity);
10459
10460    // copy argument length
10461    GLMessage_DataType *arg_length = glmsg.add_args();
10462    arg_length->set_isarray(false);
10463    arg_length->set_type(GLMessage::DataType::INT);
10464    arg_length->add_intvalue(length);
10465
10466    // copy argument buf
10467    GLMessage_DataType *arg_buf = glmsg.add_args();
10468    arg_buf->set_isarray(false);
10469    arg_buf->set_type(GLMessage::DataType::INT64);
10470    arg_buf->add_int64value((uintptr_t)buf);
10471
10472    // call function
10473    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10474    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10475    glContext->hooks->gl.glDebugMessageInsertKHR(source, type, id, severity, length, buf);
10476    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10477    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10478
10479    void *pointerArgs[] = {
10480        (void *) buf,
10481    };
10482
10483    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10484                              threadStartTime, threadEndTime,
10485                              &glmsg, pointerArgs);
10486    glContext->traceGLMessage(&glmsg);
10487}
10488
10489void GLTrace_glDebugMessageCallbackKHR(GLDEBUGPROCKHR callback, const void * userParam) {
10490    GLMessage glmsg;
10491    GLTraceContext *glContext = getGLTraceContext();
10492
10493    glmsg.set_function(GLMessage::glDebugMessageCallbackKHR);
10494
10495    // copy argument callback
10496    GLMessage_DataType *arg_callback = glmsg.add_args();
10497    arg_callback->set_isarray(false);
10498    arg_callback->set_type(GLMessage::DataType::INT64);
10499    arg_callback->add_int64value((uintptr_t)callback);
10500
10501    // copy argument userParam
10502    GLMessage_DataType *arg_userParam = glmsg.add_args();
10503    arg_userParam->set_isarray(false);
10504    arg_userParam->set_type(GLMessage::DataType::INT64);
10505    arg_userParam->add_int64value((uintptr_t)userParam);
10506
10507    // call function
10508    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10509    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10510    glContext->hooks->gl.glDebugMessageCallbackKHR(callback, userParam);
10511    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10512    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10513
10514    void *pointerArgs[] = {
10515        (void *) callback,
10516        (void *) userParam,
10517    };
10518
10519    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10520                              threadStartTime, threadEndTime,
10521                              &glmsg, pointerArgs);
10522    glContext->traceGLMessage(&glmsg);
10523}
10524
10525GLuint GLTrace_glGetDebugMessageLogKHR(GLuint count, GLsizei bufSize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog) {
10526    GLMessage glmsg;
10527    GLTraceContext *glContext = getGLTraceContext();
10528
10529    glmsg.set_function(GLMessage::glGetDebugMessageLogKHR);
10530
10531    // copy argument count
10532    GLMessage_DataType *arg_count = glmsg.add_args();
10533    arg_count->set_isarray(false);
10534    arg_count->set_type(GLMessage::DataType::INT);
10535    arg_count->add_intvalue(count);
10536
10537    // copy argument bufSize
10538    GLMessage_DataType *arg_bufSize = glmsg.add_args();
10539    arg_bufSize->set_isarray(false);
10540    arg_bufSize->set_type(GLMessage::DataType::INT);
10541    arg_bufSize->add_intvalue(bufSize);
10542
10543    // copy argument sources
10544    GLMessage_DataType *arg_sources = glmsg.add_args();
10545    arg_sources->set_isarray(false);
10546    arg_sources->set_type(GLMessage::DataType::INT64);
10547    arg_sources->add_int64value((uintptr_t)sources);
10548
10549    // copy argument types
10550    GLMessage_DataType *arg_types = glmsg.add_args();
10551    arg_types->set_isarray(false);
10552    arg_types->set_type(GLMessage::DataType::INT64);
10553    arg_types->add_int64value((uintptr_t)types);
10554
10555    // copy argument ids
10556    GLMessage_DataType *arg_ids = glmsg.add_args();
10557    arg_ids->set_isarray(false);
10558    arg_ids->set_type(GLMessage::DataType::INT64);
10559    arg_ids->add_int64value((uintptr_t)ids);
10560
10561    // copy argument severities
10562    GLMessage_DataType *arg_severities = glmsg.add_args();
10563    arg_severities->set_isarray(false);
10564    arg_severities->set_type(GLMessage::DataType::INT64);
10565    arg_severities->add_int64value((uintptr_t)severities);
10566
10567    // copy argument lengths
10568    GLMessage_DataType *arg_lengths = glmsg.add_args();
10569    arg_lengths->set_isarray(false);
10570    arg_lengths->set_type(GLMessage::DataType::INT64);
10571    arg_lengths->add_int64value((uintptr_t)lengths);
10572
10573    // copy argument messageLog
10574    GLMessage_DataType *arg_messageLog = glmsg.add_args();
10575    arg_messageLog->set_isarray(false);
10576    arg_messageLog->set_type(GLMessage::DataType::INT64);
10577    arg_messageLog->add_int64value((uintptr_t)messageLog);
10578
10579    // call function
10580    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10581    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10582    GLuint retValue = glContext->hooks->gl.glGetDebugMessageLogKHR(count, bufSize, sources, types, ids, severities, lengths, messageLog);
10583    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10584    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10585
10586    // set return value
10587    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
10588    rt->set_isarray(false);
10589    rt->set_type(GLMessage::DataType::INT);
10590    rt->add_intvalue(retValue);
10591
10592    void *pointerArgs[] = {
10593        (void *) sources,
10594        (void *) types,
10595        (void *) ids,
10596        (void *) severities,
10597        (void *) lengths,
10598        (void *) messageLog,
10599    };
10600
10601    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10602                              threadStartTime, threadEndTime,
10603                              &glmsg, pointerArgs);
10604    glContext->traceGLMessage(&glmsg);
10605
10606    return retValue;
10607}
10608
10609void GLTrace_glPushDebugGroupKHR(GLenum source, GLuint id, GLsizei length, const GLchar * message) {
10610    GLMessage glmsg;
10611    GLTraceContext *glContext = getGLTraceContext();
10612
10613    glmsg.set_function(GLMessage::glPushDebugGroupKHR);
10614
10615    // copy argument source
10616    GLMessage_DataType *arg_source = glmsg.add_args();
10617    arg_source->set_isarray(false);
10618    arg_source->set_type(GLMessage::DataType::ENUM);
10619    arg_source->add_intvalue((int)source);
10620
10621    // copy argument id
10622    GLMessage_DataType *arg_id = glmsg.add_args();
10623    arg_id->set_isarray(false);
10624    arg_id->set_type(GLMessage::DataType::INT);
10625    arg_id->add_intvalue(id);
10626
10627    // copy argument length
10628    GLMessage_DataType *arg_length = glmsg.add_args();
10629    arg_length->set_isarray(false);
10630    arg_length->set_type(GLMessage::DataType::INT);
10631    arg_length->add_intvalue(length);
10632
10633    // copy argument message
10634    GLMessage_DataType *arg_message = glmsg.add_args();
10635    arg_message->set_isarray(false);
10636    arg_message->set_type(GLMessage::DataType::INT64);
10637    arg_message->add_int64value((uintptr_t)message);
10638
10639    // call function
10640    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10641    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10642    glContext->hooks->gl.glPushDebugGroupKHR(source, id, length, message);
10643    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10644    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10645
10646    void *pointerArgs[] = {
10647        (void *) message,
10648    };
10649
10650    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10651                              threadStartTime, threadEndTime,
10652                              &glmsg, pointerArgs);
10653    glContext->traceGLMessage(&glmsg);
10654}
10655
10656void GLTrace_glPopDebugGroupKHR(void) {
10657    GLMessage glmsg;
10658    GLTraceContext *glContext = getGLTraceContext();
10659
10660    glmsg.set_function(GLMessage::glPopDebugGroupKHR);
10661
10662    // call function
10663    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10664    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10665    glContext->hooks->gl.glPopDebugGroupKHR();
10666    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10667    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10668
10669    void *pointerArgs[] = {
10670    };
10671
10672    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10673                              threadStartTime, threadEndTime,
10674                              &glmsg, pointerArgs);
10675    glContext->traceGLMessage(&glmsg);
10676}
10677
10678void GLTrace_glObjectLabelKHR(GLenum identifier, GLuint name, GLsizei length, const GLchar * label) {
10679    GLMessage glmsg;
10680    GLTraceContext *glContext = getGLTraceContext();
10681
10682    glmsg.set_function(GLMessage::glObjectLabelKHR);
10683
10684    // copy argument identifier
10685    GLMessage_DataType *arg_identifier = glmsg.add_args();
10686    arg_identifier->set_isarray(false);
10687    arg_identifier->set_type(GLMessage::DataType::ENUM);
10688    arg_identifier->add_intvalue((int)identifier);
10689
10690    // copy argument name
10691    GLMessage_DataType *arg_name = glmsg.add_args();
10692    arg_name->set_isarray(false);
10693    arg_name->set_type(GLMessage::DataType::INT);
10694    arg_name->add_intvalue(name);
10695
10696    // copy argument length
10697    GLMessage_DataType *arg_length = glmsg.add_args();
10698    arg_length->set_isarray(false);
10699    arg_length->set_type(GLMessage::DataType::INT);
10700    arg_length->add_intvalue(length);
10701
10702    // copy argument label
10703    GLMessage_DataType *arg_label = glmsg.add_args();
10704    arg_label->set_isarray(false);
10705    arg_label->set_type(GLMessage::DataType::INT64);
10706    arg_label->add_int64value((uintptr_t)label);
10707
10708    // call function
10709    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10710    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10711    glContext->hooks->gl.glObjectLabelKHR(identifier, name, length, label);
10712    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10713    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10714
10715    void *pointerArgs[] = {
10716        (void *) label,
10717    };
10718
10719    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10720                              threadStartTime, threadEndTime,
10721                              &glmsg, pointerArgs);
10722    glContext->traceGLMessage(&glmsg);
10723}
10724
10725void GLTrace_glGetObjectLabelKHR(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei * length, GLchar * label) {
10726    GLMessage glmsg;
10727    GLTraceContext *glContext = getGLTraceContext();
10728
10729    glmsg.set_function(GLMessage::glGetObjectLabelKHR);
10730
10731    // copy argument identifier
10732    GLMessage_DataType *arg_identifier = glmsg.add_args();
10733    arg_identifier->set_isarray(false);
10734    arg_identifier->set_type(GLMessage::DataType::ENUM);
10735    arg_identifier->add_intvalue((int)identifier);
10736
10737    // copy argument name
10738    GLMessage_DataType *arg_name = glmsg.add_args();
10739    arg_name->set_isarray(false);
10740    arg_name->set_type(GLMessage::DataType::INT);
10741    arg_name->add_intvalue(name);
10742
10743    // copy argument bufSize
10744    GLMessage_DataType *arg_bufSize = glmsg.add_args();
10745    arg_bufSize->set_isarray(false);
10746    arg_bufSize->set_type(GLMessage::DataType::INT);
10747    arg_bufSize->add_intvalue(bufSize);
10748
10749    // copy argument length
10750    GLMessage_DataType *arg_length = glmsg.add_args();
10751    arg_length->set_isarray(false);
10752    arg_length->set_type(GLMessage::DataType::INT64);
10753    arg_length->add_int64value((uintptr_t)length);
10754
10755    // copy argument label
10756    GLMessage_DataType *arg_label = glmsg.add_args();
10757    arg_label->set_isarray(false);
10758    arg_label->set_type(GLMessage::DataType::INT64);
10759    arg_label->add_int64value((uintptr_t)label);
10760
10761    // call function
10762    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10763    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10764    glContext->hooks->gl.glGetObjectLabelKHR(identifier, name, bufSize, length, label);
10765    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10766    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10767
10768    void *pointerArgs[] = {
10769        (void *) length,
10770        (void *) label,
10771    };
10772
10773    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10774                              threadStartTime, threadEndTime,
10775                              &glmsg, pointerArgs);
10776    glContext->traceGLMessage(&glmsg);
10777}
10778
10779void GLTrace_glObjectPtrLabelKHR(const void * ptr, GLsizei length, const GLchar * label) {
10780    GLMessage glmsg;
10781    GLTraceContext *glContext = getGLTraceContext();
10782
10783    glmsg.set_function(GLMessage::glObjectPtrLabelKHR);
10784
10785    // copy argument ptr
10786    GLMessage_DataType *arg_ptr = glmsg.add_args();
10787    arg_ptr->set_isarray(false);
10788    arg_ptr->set_type(GLMessage::DataType::INT64);
10789    arg_ptr->add_int64value((uintptr_t)ptr);
10790
10791    // copy argument length
10792    GLMessage_DataType *arg_length = glmsg.add_args();
10793    arg_length->set_isarray(false);
10794    arg_length->set_type(GLMessage::DataType::INT);
10795    arg_length->add_intvalue(length);
10796
10797    // copy argument label
10798    GLMessage_DataType *arg_label = glmsg.add_args();
10799    arg_label->set_isarray(false);
10800    arg_label->set_type(GLMessage::DataType::INT64);
10801    arg_label->add_int64value((uintptr_t)label);
10802
10803    // call function
10804    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10805    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10806    glContext->hooks->gl.glObjectPtrLabelKHR(ptr, length, label);
10807    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10808    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10809
10810    void *pointerArgs[] = {
10811        (void *) ptr,
10812        (void *) label,
10813    };
10814
10815    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10816                              threadStartTime, threadEndTime,
10817                              &glmsg, pointerArgs);
10818    glContext->traceGLMessage(&glmsg);
10819}
10820
10821void GLTrace_glGetObjectPtrLabelKHR(const void * ptr, GLsizei bufSize, GLsizei * length, GLchar * label) {
10822    GLMessage glmsg;
10823    GLTraceContext *glContext = getGLTraceContext();
10824
10825    glmsg.set_function(GLMessage::glGetObjectPtrLabelKHR);
10826
10827    // copy argument ptr
10828    GLMessage_DataType *arg_ptr = glmsg.add_args();
10829    arg_ptr->set_isarray(false);
10830    arg_ptr->set_type(GLMessage::DataType::INT64);
10831    arg_ptr->add_int64value((uintptr_t)ptr);
10832
10833    // copy argument bufSize
10834    GLMessage_DataType *arg_bufSize = glmsg.add_args();
10835    arg_bufSize->set_isarray(false);
10836    arg_bufSize->set_type(GLMessage::DataType::INT);
10837    arg_bufSize->add_intvalue(bufSize);
10838
10839    // copy argument length
10840    GLMessage_DataType *arg_length = glmsg.add_args();
10841    arg_length->set_isarray(false);
10842    arg_length->set_type(GLMessage::DataType::INT64);
10843    arg_length->add_int64value((uintptr_t)length);
10844
10845    // copy argument label
10846    GLMessage_DataType *arg_label = glmsg.add_args();
10847    arg_label->set_isarray(false);
10848    arg_label->set_type(GLMessage::DataType::INT64);
10849    arg_label->add_int64value((uintptr_t)label);
10850
10851    // call function
10852    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10853    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10854    glContext->hooks->gl.glGetObjectPtrLabelKHR(ptr, bufSize, length, label);
10855    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10856    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10857
10858    void *pointerArgs[] = {
10859        (void *) ptr,
10860        (void *) length,
10861        (void *) label,
10862    };
10863
10864    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10865                              threadStartTime, threadEndTime,
10866                              &glmsg, pointerArgs);
10867    glContext->traceGLMessage(&glmsg);
10868}
10869
10870void GLTrace_glGetPointervKHR(GLenum pname, void ** params) {
10871    GLMessage glmsg;
10872    GLTraceContext *glContext = getGLTraceContext();
10873
10874    glmsg.set_function(GLMessage::glGetPointervKHR);
10875
10876    // copy argument pname
10877    GLMessage_DataType *arg_pname = glmsg.add_args();
10878    arg_pname->set_isarray(false);
10879    arg_pname->set_type(GLMessage::DataType::ENUM);
10880    arg_pname->add_intvalue((int)pname);
10881
10882    // copy argument params
10883    GLMessage_DataType *arg_params = glmsg.add_args();
10884    arg_params->set_isarray(false);
10885    arg_params->set_type(GLMessage::DataType::INT64);
10886    arg_params->add_int64value((uintptr_t)params);
10887
10888    // call function
10889    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10890    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10891    glContext->hooks->gl.glGetPointervKHR(pname, params);
10892    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10893    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10894
10895    void *pointerArgs[] = {
10896        (void *) params,
10897    };
10898
10899    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10900                              threadStartTime, threadEndTime,
10901                              &glmsg, pointerArgs);
10902    glContext->traceGLMessage(&glmsg);
10903}
10904
10905void GLTrace_glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image) {
10906    GLMessage glmsg;
10907    GLTraceContext *glContext = getGLTraceContext();
10908
10909    glmsg.set_function(GLMessage::glEGLImageTargetTexture2DOES);
10910
10911    // copy argument target
10912    GLMessage_DataType *arg_target = glmsg.add_args();
10913    arg_target->set_isarray(false);
10914    arg_target->set_type(GLMessage::DataType::ENUM);
10915    arg_target->add_intvalue((int)target);
10916
10917    // copy argument image
10918    GLMessage_DataType *arg_image = glmsg.add_args();
10919    arg_image->set_isarray(false);
10920    arg_image->set_type(GLMessage::DataType::INT64);
10921    arg_image->add_int64value((uintptr_t)image);
10922
10923    // call function
10924    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10925    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10926    glContext->hooks->gl.glEGLImageTargetTexture2DOES(target, image);
10927    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10928    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10929
10930    void *pointerArgs[] = {
10931        (void *) image,
10932    };
10933
10934    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10935                              threadStartTime, threadEndTime,
10936                              &glmsg, pointerArgs);
10937    glContext->traceGLMessage(&glmsg);
10938}
10939
10940void GLTrace_glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image) {
10941    GLMessage glmsg;
10942    GLTraceContext *glContext = getGLTraceContext();
10943
10944    glmsg.set_function(GLMessage::glEGLImageTargetRenderbufferStorageOES);
10945
10946    // copy argument target
10947    GLMessage_DataType *arg_target = glmsg.add_args();
10948    arg_target->set_isarray(false);
10949    arg_target->set_type(GLMessage::DataType::ENUM);
10950    arg_target->add_intvalue((int)target);
10951
10952    // copy argument image
10953    GLMessage_DataType *arg_image = glmsg.add_args();
10954    arg_image->set_isarray(false);
10955    arg_image->set_type(GLMessage::DataType::INT64);
10956    arg_image->add_int64value((uintptr_t)image);
10957
10958    // call function
10959    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10960    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10961    glContext->hooks->gl.glEGLImageTargetRenderbufferStorageOES(target, image);
10962    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10963    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10964
10965    void *pointerArgs[] = {
10966        (void *) image,
10967    };
10968
10969    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10970                              threadStartTime, threadEndTime,
10971                              &glmsg, pointerArgs);
10972    glContext->traceGLMessage(&glmsg);
10973}
10974
10975void GLTrace_glGetProgramBinaryOES(GLuint program, GLsizei bufSize, GLsizei * length, GLenum * binaryFormat, void * binary) {
10976    GLMessage glmsg;
10977    GLTraceContext *glContext = getGLTraceContext();
10978
10979    glmsg.set_function(GLMessage::glGetProgramBinaryOES);
10980
10981    // copy argument program
10982    GLMessage_DataType *arg_program = glmsg.add_args();
10983    arg_program->set_isarray(false);
10984    arg_program->set_type(GLMessage::DataType::INT);
10985    arg_program->add_intvalue(program);
10986
10987    // copy argument bufSize
10988    GLMessage_DataType *arg_bufSize = glmsg.add_args();
10989    arg_bufSize->set_isarray(false);
10990    arg_bufSize->set_type(GLMessage::DataType::INT);
10991    arg_bufSize->add_intvalue(bufSize);
10992
10993    // copy argument length
10994    GLMessage_DataType *arg_length = glmsg.add_args();
10995    arg_length->set_isarray(false);
10996    arg_length->set_type(GLMessage::DataType::INT64);
10997    arg_length->add_int64value((uintptr_t)length);
10998
10999    // copy argument binaryFormat
11000    GLMessage_DataType *arg_binaryFormat = glmsg.add_args();
11001    arg_binaryFormat->set_isarray(false);
11002    arg_binaryFormat->set_type(GLMessage::DataType::INT64);
11003    arg_binaryFormat->add_int64value((uintptr_t)binaryFormat);
11004
11005    // copy argument binary
11006    GLMessage_DataType *arg_binary = glmsg.add_args();
11007    arg_binary->set_isarray(false);
11008    arg_binary->set_type(GLMessage::DataType::INT64);
11009    arg_binary->add_int64value((uintptr_t)binary);
11010
11011    // call function
11012    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11013    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11014    glContext->hooks->gl.glGetProgramBinaryOES(program, bufSize, length, binaryFormat, binary);
11015    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11016    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11017
11018    void *pointerArgs[] = {
11019        (void *) length,
11020        (void *) binaryFormat,
11021        (void *) binary,
11022    };
11023
11024    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11025                              threadStartTime, threadEndTime,
11026                              &glmsg, pointerArgs);
11027    glContext->traceGLMessage(&glmsg);
11028}
11029
11030void GLTrace_glProgramBinaryOES(GLuint program, GLenum binaryFormat, const void * binary, GLint length) {
11031    GLMessage glmsg;
11032    GLTraceContext *glContext = getGLTraceContext();
11033
11034    glmsg.set_function(GLMessage::glProgramBinaryOES);
11035
11036    // copy argument program
11037    GLMessage_DataType *arg_program = glmsg.add_args();
11038    arg_program->set_isarray(false);
11039    arg_program->set_type(GLMessage::DataType::INT);
11040    arg_program->add_intvalue(program);
11041
11042    // copy argument binaryFormat
11043    GLMessage_DataType *arg_binaryFormat = glmsg.add_args();
11044    arg_binaryFormat->set_isarray(false);
11045    arg_binaryFormat->set_type(GLMessage::DataType::ENUM);
11046    arg_binaryFormat->add_intvalue((int)binaryFormat);
11047
11048    // copy argument binary
11049    GLMessage_DataType *arg_binary = glmsg.add_args();
11050    arg_binary->set_isarray(false);
11051    arg_binary->set_type(GLMessage::DataType::INT64);
11052    arg_binary->add_int64value((uintptr_t)binary);
11053
11054    // copy argument length
11055    GLMessage_DataType *arg_length = glmsg.add_args();
11056    arg_length->set_isarray(false);
11057    arg_length->set_type(GLMessage::DataType::INT);
11058    arg_length->add_intvalue(length);
11059
11060    // call function
11061    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11062    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11063    glContext->hooks->gl.glProgramBinaryOES(program, binaryFormat, binary, length);
11064    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11065    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11066
11067    void *pointerArgs[] = {
11068        (void *) binary,
11069    };
11070
11071    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11072                              threadStartTime, threadEndTime,
11073                              &glmsg, pointerArgs);
11074    glContext->traceGLMessage(&glmsg);
11075}
11076
11077void * GLTrace_glMapBufferOES(GLenum target, GLenum access) {
11078    GLMessage glmsg;
11079    GLTraceContext *glContext = getGLTraceContext();
11080
11081    glmsg.set_function(GLMessage::glMapBufferOES);
11082
11083    // copy argument target
11084    GLMessage_DataType *arg_target = glmsg.add_args();
11085    arg_target->set_isarray(false);
11086    arg_target->set_type(GLMessage::DataType::ENUM);
11087    arg_target->add_intvalue((int)target);
11088
11089    // copy argument access
11090    GLMessage_DataType *arg_access = glmsg.add_args();
11091    arg_access->set_isarray(false);
11092    arg_access->set_type(GLMessage::DataType::ENUM);
11093    arg_access->add_intvalue((int)access);
11094
11095    // call function
11096    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11097    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11098    void * retValue = glContext->hooks->gl.glMapBufferOES(target, access);
11099    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11100    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11101
11102    // set return value
11103    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
11104    rt->set_isarray(false);
11105    rt->set_type(GLMessage::DataType::INT64);
11106    rt->add_int64value((uintptr_t)retValue);
11107
11108    void *pointerArgs[] = {
11109        (void *) retValue,
11110    };
11111
11112    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11113                              threadStartTime, threadEndTime,
11114                              &glmsg, pointerArgs);
11115    glContext->traceGLMessage(&glmsg);
11116
11117    return retValue;
11118}
11119
11120GLboolean GLTrace_glUnmapBufferOES(GLenum target) {
11121    GLMessage glmsg;
11122    GLTraceContext *glContext = getGLTraceContext();
11123
11124    glmsg.set_function(GLMessage::glUnmapBufferOES);
11125
11126    // copy argument target
11127    GLMessage_DataType *arg_target = glmsg.add_args();
11128    arg_target->set_isarray(false);
11129    arg_target->set_type(GLMessage::DataType::ENUM);
11130    arg_target->add_intvalue((int)target);
11131
11132    // call function
11133    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11134    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11135    GLboolean retValue = glContext->hooks->gl.glUnmapBufferOES(target);
11136    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11137    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11138
11139    // set return value
11140    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
11141    rt->set_isarray(false);
11142    rt->set_type(GLMessage::DataType::BOOL);
11143    rt->add_boolvalue(retValue);
11144
11145    void *pointerArgs[] = {
11146    };
11147
11148    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11149                              threadStartTime, threadEndTime,
11150                              &glmsg, pointerArgs);
11151    glContext->traceGLMessage(&glmsg);
11152
11153    return retValue;
11154}
11155
11156void GLTrace_glGetBufferPointervOES(GLenum target, GLenum pname, void ** params) {
11157    GLMessage glmsg;
11158    GLTraceContext *glContext = getGLTraceContext();
11159
11160    glmsg.set_function(GLMessage::glGetBufferPointervOES);
11161
11162    // copy argument target
11163    GLMessage_DataType *arg_target = glmsg.add_args();
11164    arg_target->set_isarray(false);
11165    arg_target->set_type(GLMessage::DataType::ENUM);
11166    arg_target->add_intvalue((int)target);
11167
11168    // copy argument pname
11169    GLMessage_DataType *arg_pname = glmsg.add_args();
11170    arg_pname->set_isarray(false);
11171    arg_pname->set_type(GLMessage::DataType::ENUM);
11172    arg_pname->add_intvalue((int)pname);
11173
11174    // copy argument params
11175    GLMessage_DataType *arg_params = glmsg.add_args();
11176    arg_params->set_isarray(false);
11177    arg_params->set_type(GLMessage::DataType::INT64);
11178    arg_params->add_int64value((uintptr_t)params);
11179
11180    // call function
11181    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11182    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11183    glContext->hooks->gl.glGetBufferPointervOES(target, pname, params);
11184    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11185    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11186
11187    void *pointerArgs[] = {
11188        (void *) params,
11189    };
11190
11191    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11192                              threadStartTime, threadEndTime,
11193                              &glmsg, pointerArgs);
11194    glContext->traceGLMessage(&glmsg);
11195}
11196
11197void GLTrace_glMinSampleShadingOES(GLfloat value) {
11198    GLMessage glmsg;
11199    GLTraceContext *glContext = getGLTraceContext();
11200
11201    glmsg.set_function(GLMessage::glMinSampleShadingOES);
11202
11203    // copy argument value
11204    GLMessage_DataType *arg_value = glmsg.add_args();
11205    arg_value->set_isarray(false);
11206    arg_value->set_type(GLMessage::DataType::FLOAT);
11207    arg_value->add_floatvalue(value);
11208
11209    // call function
11210    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11211    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11212    glContext->hooks->gl.glMinSampleShadingOES(value);
11213    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11214    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11215
11216    void *pointerArgs[] = {
11217    };
11218
11219    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11220                              threadStartTime, threadEndTime,
11221                              &glmsg, pointerArgs);
11222    glContext->traceGLMessage(&glmsg);
11223}
11224
11225void GLTrace_glTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels) {
11226    GLMessage glmsg;
11227    GLTraceContext *glContext = getGLTraceContext();
11228
11229    glmsg.set_function(GLMessage::glTexImage3DOES);
11230
11231    // copy argument target
11232    GLMessage_DataType *arg_target = glmsg.add_args();
11233    arg_target->set_isarray(false);
11234    arg_target->set_type(GLMessage::DataType::ENUM);
11235    arg_target->add_intvalue((int)target);
11236
11237    // copy argument level
11238    GLMessage_DataType *arg_level = glmsg.add_args();
11239    arg_level->set_isarray(false);
11240    arg_level->set_type(GLMessage::DataType::INT);
11241    arg_level->add_intvalue(level);
11242
11243    // copy argument internalformat
11244    GLMessage_DataType *arg_internalformat = glmsg.add_args();
11245    arg_internalformat->set_isarray(false);
11246    arg_internalformat->set_type(GLMessage::DataType::ENUM);
11247    arg_internalformat->add_intvalue((int)internalformat);
11248
11249    // copy argument width
11250    GLMessage_DataType *arg_width = glmsg.add_args();
11251    arg_width->set_isarray(false);
11252    arg_width->set_type(GLMessage::DataType::INT);
11253    arg_width->add_intvalue(width);
11254
11255    // copy argument height
11256    GLMessage_DataType *arg_height = glmsg.add_args();
11257    arg_height->set_isarray(false);
11258    arg_height->set_type(GLMessage::DataType::INT);
11259    arg_height->add_intvalue(height);
11260
11261    // copy argument depth
11262    GLMessage_DataType *arg_depth = glmsg.add_args();
11263    arg_depth->set_isarray(false);
11264    arg_depth->set_type(GLMessage::DataType::INT);
11265    arg_depth->add_intvalue(depth);
11266
11267    // copy argument border
11268    GLMessage_DataType *arg_border = glmsg.add_args();
11269    arg_border->set_isarray(false);
11270    arg_border->set_type(GLMessage::DataType::INT);
11271    arg_border->add_intvalue(border);
11272
11273    // copy argument format
11274    GLMessage_DataType *arg_format = glmsg.add_args();
11275    arg_format->set_isarray(false);
11276    arg_format->set_type(GLMessage::DataType::ENUM);
11277    arg_format->add_intvalue((int)format);
11278
11279    // copy argument type
11280    GLMessage_DataType *arg_type = glmsg.add_args();
11281    arg_type->set_isarray(false);
11282    arg_type->set_type(GLMessage::DataType::ENUM);
11283    arg_type->add_intvalue((int)type);
11284
11285    // copy argument pixels
11286    GLMessage_DataType *arg_pixels = glmsg.add_args();
11287    arg_pixels->set_isarray(false);
11288    arg_pixels->set_type(GLMessage::DataType::INT64);
11289    arg_pixels->add_int64value((uintptr_t)pixels);
11290
11291    // call function
11292    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11293    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11294    glContext->hooks->gl.glTexImage3DOES(target, level, internalformat, width, height, depth, border, format, type, pixels);
11295    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11296    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11297
11298    void *pointerArgs[] = {
11299        (void *) pixels,
11300    };
11301
11302    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11303                              threadStartTime, threadEndTime,
11304                              &glmsg, pointerArgs);
11305    glContext->traceGLMessage(&glmsg);
11306}
11307
11308void GLTrace_glTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * pixels) {
11309    GLMessage glmsg;
11310    GLTraceContext *glContext = getGLTraceContext();
11311
11312    glmsg.set_function(GLMessage::glTexSubImage3DOES);
11313
11314    // copy argument target
11315    GLMessage_DataType *arg_target = glmsg.add_args();
11316    arg_target->set_isarray(false);
11317    arg_target->set_type(GLMessage::DataType::ENUM);
11318    arg_target->add_intvalue((int)target);
11319
11320    // copy argument level
11321    GLMessage_DataType *arg_level = glmsg.add_args();
11322    arg_level->set_isarray(false);
11323    arg_level->set_type(GLMessage::DataType::INT);
11324    arg_level->add_intvalue(level);
11325
11326    // copy argument xoffset
11327    GLMessage_DataType *arg_xoffset = glmsg.add_args();
11328    arg_xoffset->set_isarray(false);
11329    arg_xoffset->set_type(GLMessage::DataType::INT);
11330    arg_xoffset->add_intvalue(xoffset);
11331
11332    // copy argument yoffset
11333    GLMessage_DataType *arg_yoffset = glmsg.add_args();
11334    arg_yoffset->set_isarray(false);
11335    arg_yoffset->set_type(GLMessage::DataType::INT);
11336    arg_yoffset->add_intvalue(yoffset);
11337
11338    // copy argument zoffset
11339    GLMessage_DataType *arg_zoffset = glmsg.add_args();
11340    arg_zoffset->set_isarray(false);
11341    arg_zoffset->set_type(GLMessage::DataType::INT);
11342    arg_zoffset->add_intvalue(zoffset);
11343
11344    // copy argument width
11345    GLMessage_DataType *arg_width = glmsg.add_args();
11346    arg_width->set_isarray(false);
11347    arg_width->set_type(GLMessage::DataType::INT);
11348    arg_width->add_intvalue(width);
11349
11350    // copy argument height
11351    GLMessage_DataType *arg_height = glmsg.add_args();
11352    arg_height->set_isarray(false);
11353    arg_height->set_type(GLMessage::DataType::INT);
11354    arg_height->add_intvalue(height);
11355
11356    // copy argument depth
11357    GLMessage_DataType *arg_depth = glmsg.add_args();
11358    arg_depth->set_isarray(false);
11359    arg_depth->set_type(GLMessage::DataType::INT);
11360    arg_depth->add_intvalue(depth);
11361
11362    // copy argument format
11363    GLMessage_DataType *arg_format = glmsg.add_args();
11364    arg_format->set_isarray(false);
11365    arg_format->set_type(GLMessage::DataType::ENUM);
11366    arg_format->add_intvalue((int)format);
11367
11368    // copy argument type
11369    GLMessage_DataType *arg_type = glmsg.add_args();
11370    arg_type->set_isarray(false);
11371    arg_type->set_type(GLMessage::DataType::ENUM);
11372    arg_type->add_intvalue((int)type);
11373
11374    // copy argument pixels
11375    GLMessage_DataType *arg_pixels = glmsg.add_args();
11376    arg_pixels->set_isarray(false);
11377    arg_pixels->set_type(GLMessage::DataType::INT64);
11378    arg_pixels->add_int64value((uintptr_t)pixels);
11379
11380    // call function
11381    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11382    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11383    glContext->hooks->gl.glTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
11384    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11385    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11386
11387    void *pointerArgs[] = {
11388        (void *) pixels,
11389    };
11390
11391    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11392                              threadStartTime, threadEndTime,
11393                              &glmsg, pointerArgs);
11394    glContext->traceGLMessage(&glmsg);
11395}
11396
11397void GLTrace_glCopyTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) {
11398    GLMessage glmsg;
11399    GLTraceContext *glContext = getGLTraceContext();
11400
11401    glmsg.set_function(GLMessage::glCopyTexSubImage3DOES);
11402
11403    // copy argument target
11404    GLMessage_DataType *arg_target = glmsg.add_args();
11405    arg_target->set_isarray(false);
11406    arg_target->set_type(GLMessage::DataType::ENUM);
11407    arg_target->add_intvalue((int)target);
11408
11409    // copy argument level
11410    GLMessage_DataType *arg_level = glmsg.add_args();
11411    arg_level->set_isarray(false);
11412    arg_level->set_type(GLMessage::DataType::INT);
11413    arg_level->add_intvalue(level);
11414
11415    // copy argument xoffset
11416    GLMessage_DataType *arg_xoffset = glmsg.add_args();
11417    arg_xoffset->set_isarray(false);
11418    arg_xoffset->set_type(GLMessage::DataType::INT);
11419    arg_xoffset->add_intvalue(xoffset);
11420
11421    // copy argument yoffset
11422    GLMessage_DataType *arg_yoffset = glmsg.add_args();
11423    arg_yoffset->set_isarray(false);
11424    arg_yoffset->set_type(GLMessage::DataType::INT);
11425    arg_yoffset->add_intvalue(yoffset);
11426
11427    // copy argument zoffset
11428    GLMessage_DataType *arg_zoffset = glmsg.add_args();
11429    arg_zoffset->set_isarray(false);
11430    arg_zoffset->set_type(GLMessage::DataType::INT);
11431    arg_zoffset->add_intvalue(zoffset);
11432
11433    // copy argument x
11434    GLMessage_DataType *arg_x = glmsg.add_args();
11435    arg_x->set_isarray(false);
11436    arg_x->set_type(GLMessage::DataType::INT);
11437    arg_x->add_intvalue(x);
11438
11439    // copy argument y
11440    GLMessage_DataType *arg_y = glmsg.add_args();
11441    arg_y->set_isarray(false);
11442    arg_y->set_type(GLMessage::DataType::INT);
11443    arg_y->add_intvalue(y);
11444
11445    // copy argument width
11446    GLMessage_DataType *arg_width = glmsg.add_args();
11447    arg_width->set_isarray(false);
11448    arg_width->set_type(GLMessage::DataType::INT);
11449    arg_width->add_intvalue(width);
11450
11451    // copy argument height
11452    GLMessage_DataType *arg_height = glmsg.add_args();
11453    arg_height->set_isarray(false);
11454    arg_height->set_type(GLMessage::DataType::INT);
11455    arg_height->add_intvalue(height);
11456
11457    // call function
11458    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11459    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11460    glContext->hooks->gl.glCopyTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, x, y, width, height);
11461    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11462    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11463
11464    void *pointerArgs[] = {
11465    };
11466
11467    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11468                              threadStartTime, threadEndTime,
11469                              &glmsg, pointerArgs);
11470    glContext->traceGLMessage(&glmsg);
11471}
11472
11473void GLTrace_glCompressedTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data) {
11474    GLMessage glmsg;
11475    GLTraceContext *glContext = getGLTraceContext();
11476
11477    glmsg.set_function(GLMessage::glCompressedTexImage3DOES);
11478
11479    // copy argument target
11480    GLMessage_DataType *arg_target = glmsg.add_args();
11481    arg_target->set_isarray(false);
11482    arg_target->set_type(GLMessage::DataType::ENUM);
11483    arg_target->add_intvalue((int)target);
11484
11485    // copy argument level
11486    GLMessage_DataType *arg_level = glmsg.add_args();
11487    arg_level->set_isarray(false);
11488    arg_level->set_type(GLMessage::DataType::INT);
11489    arg_level->add_intvalue(level);
11490
11491    // copy argument internalformat
11492    GLMessage_DataType *arg_internalformat = glmsg.add_args();
11493    arg_internalformat->set_isarray(false);
11494    arg_internalformat->set_type(GLMessage::DataType::ENUM);
11495    arg_internalformat->add_intvalue((int)internalformat);
11496
11497    // copy argument width
11498    GLMessage_DataType *arg_width = glmsg.add_args();
11499    arg_width->set_isarray(false);
11500    arg_width->set_type(GLMessage::DataType::INT);
11501    arg_width->add_intvalue(width);
11502
11503    // copy argument height
11504    GLMessage_DataType *arg_height = glmsg.add_args();
11505    arg_height->set_isarray(false);
11506    arg_height->set_type(GLMessage::DataType::INT);
11507    arg_height->add_intvalue(height);
11508
11509    // copy argument depth
11510    GLMessage_DataType *arg_depth = glmsg.add_args();
11511    arg_depth->set_isarray(false);
11512    arg_depth->set_type(GLMessage::DataType::INT);
11513    arg_depth->add_intvalue(depth);
11514
11515    // copy argument border
11516    GLMessage_DataType *arg_border = glmsg.add_args();
11517    arg_border->set_isarray(false);
11518    arg_border->set_type(GLMessage::DataType::INT);
11519    arg_border->add_intvalue(border);
11520
11521    // copy argument imageSize
11522    GLMessage_DataType *arg_imageSize = glmsg.add_args();
11523    arg_imageSize->set_isarray(false);
11524    arg_imageSize->set_type(GLMessage::DataType::INT);
11525    arg_imageSize->add_intvalue(imageSize);
11526
11527    // copy argument data
11528    GLMessage_DataType *arg_data = glmsg.add_args();
11529    arg_data->set_isarray(false);
11530    arg_data->set_type(GLMessage::DataType::INT64);
11531    arg_data->add_int64value((uintptr_t)data);
11532
11533    // call function
11534    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11535    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11536    glContext->hooks->gl.glCompressedTexImage3DOES(target, level, internalformat, width, height, depth, border, imageSize, data);
11537    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11538    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11539
11540    void *pointerArgs[] = {
11541        (void *) data,
11542    };
11543
11544    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11545                              threadStartTime, threadEndTime,
11546                              &glmsg, pointerArgs);
11547    glContext->traceGLMessage(&glmsg);
11548}
11549
11550void GLTrace_glCompressedTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void * data) {
11551    GLMessage glmsg;
11552    GLTraceContext *glContext = getGLTraceContext();
11553
11554    glmsg.set_function(GLMessage::glCompressedTexSubImage3DOES);
11555
11556    // copy argument target
11557    GLMessage_DataType *arg_target = glmsg.add_args();
11558    arg_target->set_isarray(false);
11559    arg_target->set_type(GLMessage::DataType::ENUM);
11560    arg_target->add_intvalue((int)target);
11561
11562    // copy argument level
11563    GLMessage_DataType *arg_level = glmsg.add_args();
11564    arg_level->set_isarray(false);
11565    arg_level->set_type(GLMessage::DataType::INT);
11566    arg_level->add_intvalue(level);
11567
11568    // copy argument xoffset
11569    GLMessage_DataType *arg_xoffset = glmsg.add_args();
11570    arg_xoffset->set_isarray(false);
11571    arg_xoffset->set_type(GLMessage::DataType::INT);
11572    arg_xoffset->add_intvalue(xoffset);
11573
11574    // copy argument yoffset
11575    GLMessage_DataType *arg_yoffset = glmsg.add_args();
11576    arg_yoffset->set_isarray(false);
11577    arg_yoffset->set_type(GLMessage::DataType::INT);
11578    arg_yoffset->add_intvalue(yoffset);
11579
11580    // copy argument zoffset
11581    GLMessage_DataType *arg_zoffset = glmsg.add_args();
11582    arg_zoffset->set_isarray(false);
11583    arg_zoffset->set_type(GLMessage::DataType::INT);
11584    arg_zoffset->add_intvalue(zoffset);
11585
11586    // copy argument width
11587    GLMessage_DataType *arg_width = glmsg.add_args();
11588    arg_width->set_isarray(false);
11589    arg_width->set_type(GLMessage::DataType::INT);
11590    arg_width->add_intvalue(width);
11591
11592    // copy argument height
11593    GLMessage_DataType *arg_height = glmsg.add_args();
11594    arg_height->set_isarray(false);
11595    arg_height->set_type(GLMessage::DataType::INT);
11596    arg_height->add_intvalue(height);
11597
11598    // copy argument depth
11599    GLMessage_DataType *arg_depth = glmsg.add_args();
11600    arg_depth->set_isarray(false);
11601    arg_depth->set_type(GLMessage::DataType::INT);
11602    arg_depth->add_intvalue(depth);
11603
11604    // copy argument format
11605    GLMessage_DataType *arg_format = glmsg.add_args();
11606    arg_format->set_isarray(false);
11607    arg_format->set_type(GLMessage::DataType::ENUM);
11608    arg_format->add_intvalue((int)format);
11609
11610    // copy argument imageSize
11611    GLMessage_DataType *arg_imageSize = glmsg.add_args();
11612    arg_imageSize->set_isarray(false);
11613    arg_imageSize->set_type(GLMessage::DataType::INT);
11614    arg_imageSize->add_intvalue(imageSize);
11615
11616    // copy argument data
11617    GLMessage_DataType *arg_data = glmsg.add_args();
11618    arg_data->set_isarray(false);
11619    arg_data->set_type(GLMessage::DataType::INT64);
11620    arg_data->add_int64value((uintptr_t)data);
11621
11622    // call function
11623    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11624    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11625    glContext->hooks->gl.glCompressedTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
11626    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11627    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11628
11629    void *pointerArgs[] = {
11630        (void *) data,
11631    };
11632
11633    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11634                              threadStartTime, threadEndTime,
11635                              &glmsg, pointerArgs);
11636    glContext->traceGLMessage(&glmsg);
11637}
11638
11639void GLTrace_glFramebufferTexture3DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) {
11640    GLMessage glmsg;
11641    GLTraceContext *glContext = getGLTraceContext();
11642
11643    glmsg.set_function(GLMessage::glFramebufferTexture3DOES);
11644
11645    // copy argument target
11646    GLMessage_DataType *arg_target = glmsg.add_args();
11647    arg_target->set_isarray(false);
11648    arg_target->set_type(GLMessage::DataType::ENUM);
11649    arg_target->add_intvalue((int)target);
11650
11651    // copy argument attachment
11652    GLMessage_DataType *arg_attachment = glmsg.add_args();
11653    arg_attachment->set_isarray(false);
11654    arg_attachment->set_type(GLMessage::DataType::ENUM);
11655    arg_attachment->add_intvalue((int)attachment);
11656
11657    // copy argument textarget
11658    GLMessage_DataType *arg_textarget = glmsg.add_args();
11659    arg_textarget->set_isarray(false);
11660    arg_textarget->set_type(GLMessage::DataType::ENUM);
11661    arg_textarget->add_intvalue((int)textarget);
11662
11663    // copy argument texture
11664    GLMessage_DataType *arg_texture = glmsg.add_args();
11665    arg_texture->set_isarray(false);
11666    arg_texture->set_type(GLMessage::DataType::INT);
11667    arg_texture->add_intvalue(texture);
11668
11669    // copy argument level
11670    GLMessage_DataType *arg_level = glmsg.add_args();
11671    arg_level->set_isarray(false);
11672    arg_level->set_type(GLMessage::DataType::INT);
11673    arg_level->add_intvalue(level);
11674
11675    // copy argument zoffset
11676    GLMessage_DataType *arg_zoffset = glmsg.add_args();
11677    arg_zoffset->set_isarray(false);
11678    arg_zoffset->set_type(GLMessage::DataType::INT);
11679    arg_zoffset->add_intvalue(zoffset);
11680
11681    // call function
11682    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11683    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11684    glContext->hooks->gl.glFramebufferTexture3DOES(target, attachment, textarget, texture, level, zoffset);
11685    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11686    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11687
11688    void *pointerArgs[] = {
11689    };
11690
11691    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11692                              threadStartTime, threadEndTime,
11693                              &glmsg, pointerArgs);
11694    glContext->traceGLMessage(&glmsg);
11695}
11696
11697void GLTrace_glTexStorage3DMultisampleOES(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) {
11698    GLMessage glmsg;
11699    GLTraceContext *glContext = getGLTraceContext();
11700
11701    glmsg.set_function(GLMessage::glTexStorage3DMultisampleOES);
11702
11703    // copy argument target
11704    GLMessage_DataType *arg_target = glmsg.add_args();
11705    arg_target->set_isarray(false);
11706    arg_target->set_type(GLMessage::DataType::ENUM);
11707    arg_target->add_intvalue((int)target);
11708
11709    // copy argument samples
11710    GLMessage_DataType *arg_samples = glmsg.add_args();
11711    arg_samples->set_isarray(false);
11712    arg_samples->set_type(GLMessage::DataType::INT);
11713    arg_samples->add_intvalue(samples);
11714
11715    // copy argument internalformat
11716    GLMessage_DataType *arg_internalformat = glmsg.add_args();
11717    arg_internalformat->set_isarray(false);
11718    arg_internalformat->set_type(GLMessage::DataType::ENUM);
11719    arg_internalformat->add_intvalue((int)internalformat);
11720
11721    // copy argument width
11722    GLMessage_DataType *arg_width = glmsg.add_args();
11723    arg_width->set_isarray(false);
11724    arg_width->set_type(GLMessage::DataType::INT);
11725    arg_width->add_intvalue(width);
11726
11727    // copy argument height
11728    GLMessage_DataType *arg_height = glmsg.add_args();
11729    arg_height->set_isarray(false);
11730    arg_height->set_type(GLMessage::DataType::INT);
11731    arg_height->add_intvalue(height);
11732
11733    // copy argument depth
11734    GLMessage_DataType *arg_depth = glmsg.add_args();
11735    arg_depth->set_isarray(false);
11736    arg_depth->set_type(GLMessage::DataType::INT);
11737    arg_depth->add_intvalue(depth);
11738
11739    // copy argument fixedsamplelocations
11740    GLMessage_DataType *arg_fixedsamplelocations = glmsg.add_args();
11741    arg_fixedsamplelocations->set_isarray(false);
11742    arg_fixedsamplelocations->set_type(GLMessage::DataType::BOOL);
11743    arg_fixedsamplelocations->add_boolvalue(fixedsamplelocations);
11744
11745    // call function
11746    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11747    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11748    glContext->hooks->gl.glTexStorage3DMultisampleOES(target, samples, internalformat, width, height, depth, fixedsamplelocations);
11749    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11750    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11751
11752    void *pointerArgs[] = {
11753    };
11754
11755    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11756                              threadStartTime, threadEndTime,
11757                              &glmsg, pointerArgs);
11758    glContext->traceGLMessage(&glmsg);
11759}
11760
11761void GLTrace_glBindVertexArrayOES(GLuint array) {
11762    GLMessage glmsg;
11763    GLTraceContext *glContext = getGLTraceContext();
11764
11765    glmsg.set_function(GLMessage::glBindVertexArrayOES);
11766
11767    // copy argument array
11768    GLMessage_DataType *arg_array = glmsg.add_args();
11769    arg_array->set_isarray(false);
11770    arg_array->set_type(GLMessage::DataType::INT);
11771    arg_array->add_intvalue(array);
11772
11773    // call function
11774    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11775    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11776    glContext->hooks->gl.glBindVertexArrayOES(array);
11777    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11778    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11779
11780    void *pointerArgs[] = {
11781    };
11782
11783    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11784                              threadStartTime, threadEndTime,
11785                              &glmsg, pointerArgs);
11786    glContext->traceGLMessage(&glmsg);
11787}
11788
11789void GLTrace_glDeleteVertexArraysOES(GLsizei n, const GLuint * arrays) {
11790    GLMessage glmsg;
11791    GLTraceContext *glContext = getGLTraceContext();
11792
11793    glmsg.set_function(GLMessage::glDeleteVertexArraysOES);
11794
11795    // copy argument n
11796    GLMessage_DataType *arg_n = glmsg.add_args();
11797    arg_n->set_isarray(false);
11798    arg_n->set_type(GLMessage::DataType::INT);
11799    arg_n->add_intvalue(n);
11800
11801    // copy argument arrays
11802    GLMessage_DataType *arg_arrays = glmsg.add_args();
11803    arg_arrays->set_isarray(false);
11804    arg_arrays->set_type(GLMessage::DataType::INT64);
11805    arg_arrays->add_int64value((uintptr_t)arrays);
11806
11807    // call function
11808    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11809    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11810    glContext->hooks->gl.glDeleteVertexArraysOES(n, arrays);
11811    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11812    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11813
11814    void *pointerArgs[] = {
11815        (void *) arrays,
11816    };
11817
11818    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11819                              threadStartTime, threadEndTime,
11820                              &glmsg, pointerArgs);
11821    glContext->traceGLMessage(&glmsg);
11822}
11823
11824void GLTrace_glGenVertexArraysOES(GLsizei n, GLuint * arrays) {
11825    GLMessage glmsg;
11826    GLTraceContext *glContext = getGLTraceContext();
11827
11828    glmsg.set_function(GLMessage::glGenVertexArraysOES);
11829
11830    // copy argument n
11831    GLMessage_DataType *arg_n = glmsg.add_args();
11832    arg_n->set_isarray(false);
11833    arg_n->set_type(GLMessage::DataType::INT);
11834    arg_n->add_intvalue(n);
11835
11836    // copy argument arrays
11837    GLMessage_DataType *arg_arrays = glmsg.add_args();
11838    arg_arrays->set_isarray(false);
11839    arg_arrays->set_type(GLMessage::DataType::INT64);
11840    arg_arrays->add_int64value((uintptr_t)arrays);
11841
11842    // call function
11843    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11844    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11845    glContext->hooks->gl.glGenVertexArraysOES(n, arrays);
11846    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11847    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11848
11849    void *pointerArgs[] = {
11850        (void *) arrays,
11851    };
11852
11853    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11854                              threadStartTime, threadEndTime,
11855                              &glmsg, pointerArgs);
11856    glContext->traceGLMessage(&glmsg);
11857}
11858
11859GLboolean GLTrace_glIsVertexArrayOES(GLuint array) {
11860    GLMessage glmsg;
11861    GLTraceContext *glContext = getGLTraceContext();
11862
11863    glmsg.set_function(GLMessage::glIsVertexArrayOES);
11864
11865    // copy argument array
11866    GLMessage_DataType *arg_array = glmsg.add_args();
11867    arg_array->set_isarray(false);
11868    arg_array->set_type(GLMessage::DataType::INT);
11869    arg_array->add_intvalue(array);
11870
11871    // call function
11872    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11873    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11874    GLboolean retValue = glContext->hooks->gl.glIsVertexArrayOES(array);
11875    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11876    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11877
11878    // set return value
11879    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
11880    rt->set_isarray(false);
11881    rt->set_type(GLMessage::DataType::BOOL);
11882    rt->add_boolvalue(retValue);
11883
11884    void *pointerArgs[] = {
11885    };
11886
11887    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11888                              threadStartTime, threadEndTime,
11889                              &glmsg, pointerArgs);
11890    glContext->traceGLMessage(&glmsg);
11891
11892    return retValue;
11893}
11894
11895void GLTrace_glGetPerfMonitorGroupsAMD(GLint * numGroups, GLsizei groupsSize, GLuint * groups) {
11896    GLMessage glmsg;
11897    GLTraceContext *glContext = getGLTraceContext();
11898
11899    glmsg.set_function(GLMessage::glGetPerfMonitorGroupsAMD);
11900
11901    // copy argument numGroups
11902    GLMessage_DataType *arg_numGroups = glmsg.add_args();
11903    arg_numGroups->set_isarray(false);
11904    arg_numGroups->set_type(GLMessage::DataType::INT64);
11905    arg_numGroups->add_int64value((uintptr_t)numGroups);
11906
11907    // copy argument groupsSize
11908    GLMessage_DataType *arg_groupsSize = glmsg.add_args();
11909    arg_groupsSize->set_isarray(false);
11910    arg_groupsSize->set_type(GLMessage::DataType::INT);
11911    arg_groupsSize->add_intvalue(groupsSize);
11912
11913    // copy argument groups
11914    GLMessage_DataType *arg_groups = glmsg.add_args();
11915    arg_groups->set_isarray(false);
11916    arg_groups->set_type(GLMessage::DataType::INT64);
11917    arg_groups->add_int64value((uintptr_t)groups);
11918
11919    // call function
11920    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11921    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11922    glContext->hooks->gl.glGetPerfMonitorGroupsAMD(numGroups, groupsSize, groups);
11923    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11924    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11925
11926    void *pointerArgs[] = {
11927        (void *) numGroups,
11928        (void *) groups,
11929    };
11930
11931    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11932                              threadStartTime, threadEndTime,
11933                              &glmsg, pointerArgs);
11934    glContext->traceGLMessage(&glmsg);
11935}
11936
11937void GLTrace_glGetPerfMonitorCountersAMD(GLuint group, GLint * numCounters, GLint * maxActiveCounters, GLsizei counterSize, GLuint * counters) {
11938    GLMessage glmsg;
11939    GLTraceContext *glContext = getGLTraceContext();
11940
11941    glmsg.set_function(GLMessage::glGetPerfMonitorCountersAMD);
11942
11943    // copy argument group
11944    GLMessage_DataType *arg_group = glmsg.add_args();
11945    arg_group->set_isarray(false);
11946    arg_group->set_type(GLMessage::DataType::INT);
11947    arg_group->add_intvalue(group);
11948
11949    // copy argument numCounters
11950    GLMessage_DataType *arg_numCounters = glmsg.add_args();
11951    arg_numCounters->set_isarray(false);
11952    arg_numCounters->set_type(GLMessage::DataType::INT64);
11953    arg_numCounters->add_int64value((uintptr_t)numCounters);
11954
11955    // copy argument maxActiveCounters
11956    GLMessage_DataType *arg_maxActiveCounters = glmsg.add_args();
11957    arg_maxActiveCounters->set_isarray(false);
11958    arg_maxActiveCounters->set_type(GLMessage::DataType::INT64);
11959    arg_maxActiveCounters->add_int64value((uintptr_t)maxActiveCounters);
11960
11961    // copy argument counterSize
11962    GLMessage_DataType *arg_counterSize = glmsg.add_args();
11963    arg_counterSize->set_isarray(false);
11964    arg_counterSize->set_type(GLMessage::DataType::INT);
11965    arg_counterSize->add_intvalue(counterSize);
11966
11967    // copy argument counters
11968    GLMessage_DataType *arg_counters = glmsg.add_args();
11969    arg_counters->set_isarray(false);
11970    arg_counters->set_type(GLMessage::DataType::INT64);
11971    arg_counters->add_int64value((uintptr_t)counters);
11972
11973    // call function
11974    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11975    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11976    glContext->hooks->gl.glGetPerfMonitorCountersAMD(group, numCounters, maxActiveCounters, counterSize, counters);
11977    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11978    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11979
11980    void *pointerArgs[] = {
11981        (void *) numCounters,
11982        (void *) maxActiveCounters,
11983        (void *) counters,
11984    };
11985
11986    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11987                              threadStartTime, threadEndTime,
11988                              &glmsg, pointerArgs);
11989    glContext->traceGLMessage(&glmsg);
11990}
11991
11992void GLTrace_glGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, GLsizei * length, GLchar * groupString) {
11993    GLMessage glmsg;
11994    GLTraceContext *glContext = getGLTraceContext();
11995
11996    glmsg.set_function(GLMessage::glGetPerfMonitorGroupStringAMD);
11997
11998    // copy argument group
11999    GLMessage_DataType *arg_group = glmsg.add_args();
12000    arg_group->set_isarray(false);
12001    arg_group->set_type(GLMessage::DataType::INT);
12002    arg_group->add_intvalue(group);
12003
12004    // copy argument bufSize
12005    GLMessage_DataType *arg_bufSize = glmsg.add_args();
12006    arg_bufSize->set_isarray(false);
12007    arg_bufSize->set_type(GLMessage::DataType::INT);
12008    arg_bufSize->add_intvalue(bufSize);
12009
12010    // copy argument length
12011    GLMessage_DataType *arg_length = glmsg.add_args();
12012    arg_length->set_isarray(false);
12013    arg_length->set_type(GLMessage::DataType::INT64);
12014    arg_length->add_int64value((uintptr_t)length);
12015
12016    // copy argument groupString
12017    GLMessage_DataType *arg_groupString = glmsg.add_args();
12018    arg_groupString->set_isarray(false);
12019    arg_groupString->set_type(GLMessage::DataType::INT64);
12020    arg_groupString->add_int64value((uintptr_t)groupString);
12021
12022    // call function
12023    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12024    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12025    glContext->hooks->gl.glGetPerfMonitorGroupStringAMD(group, bufSize, length, groupString);
12026    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12027    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12028
12029    void *pointerArgs[] = {
12030        (void *) length,
12031        (void *) groupString,
12032    };
12033
12034    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12035                              threadStartTime, threadEndTime,
12036                              &glmsg, pointerArgs);
12037    glContext->traceGLMessage(&glmsg);
12038}
12039
12040void GLTrace_glGetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, GLsizei bufSize, GLsizei * length, GLchar * counterString) {
12041    GLMessage glmsg;
12042    GLTraceContext *glContext = getGLTraceContext();
12043
12044    glmsg.set_function(GLMessage::glGetPerfMonitorCounterStringAMD);
12045
12046    // copy argument group
12047    GLMessage_DataType *arg_group = glmsg.add_args();
12048    arg_group->set_isarray(false);
12049    arg_group->set_type(GLMessage::DataType::INT);
12050    arg_group->add_intvalue(group);
12051
12052    // copy argument counter
12053    GLMessage_DataType *arg_counter = glmsg.add_args();
12054    arg_counter->set_isarray(false);
12055    arg_counter->set_type(GLMessage::DataType::INT);
12056    arg_counter->add_intvalue(counter);
12057
12058    // copy argument bufSize
12059    GLMessage_DataType *arg_bufSize = glmsg.add_args();
12060    arg_bufSize->set_isarray(false);
12061    arg_bufSize->set_type(GLMessage::DataType::INT);
12062    arg_bufSize->add_intvalue(bufSize);
12063
12064    // copy argument length
12065    GLMessage_DataType *arg_length = glmsg.add_args();
12066    arg_length->set_isarray(false);
12067    arg_length->set_type(GLMessage::DataType::INT64);
12068    arg_length->add_int64value((uintptr_t)length);
12069
12070    // copy argument counterString
12071    GLMessage_DataType *arg_counterString = glmsg.add_args();
12072    arg_counterString->set_isarray(false);
12073    arg_counterString->set_type(GLMessage::DataType::INT64);
12074    arg_counterString->add_int64value((uintptr_t)counterString);
12075
12076    // call function
12077    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12078    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12079    glContext->hooks->gl.glGetPerfMonitorCounterStringAMD(group, counter, bufSize, length, counterString);
12080    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12081    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12082
12083    void *pointerArgs[] = {
12084        (void *) length,
12085        (void *) counterString,
12086    };
12087
12088    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12089                              threadStartTime, threadEndTime,
12090                              &glmsg, pointerArgs);
12091    glContext->traceGLMessage(&glmsg);
12092}
12093
12094void GLTrace_glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, void * data) {
12095    GLMessage glmsg;
12096    GLTraceContext *glContext = getGLTraceContext();
12097
12098    glmsg.set_function(GLMessage::glGetPerfMonitorCounterInfoAMD);
12099
12100    // copy argument group
12101    GLMessage_DataType *arg_group = glmsg.add_args();
12102    arg_group->set_isarray(false);
12103    arg_group->set_type(GLMessage::DataType::INT);
12104    arg_group->add_intvalue(group);
12105
12106    // copy argument counter
12107    GLMessage_DataType *arg_counter = glmsg.add_args();
12108    arg_counter->set_isarray(false);
12109    arg_counter->set_type(GLMessage::DataType::INT);
12110    arg_counter->add_intvalue(counter);
12111
12112    // copy argument pname
12113    GLMessage_DataType *arg_pname = glmsg.add_args();
12114    arg_pname->set_isarray(false);
12115    arg_pname->set_type(GLMessage::DataType::ENUM);
12116    arg_pname->add_intvalue((int)pname);
12117
12118    // copy argument data
12119    GLMessage_DataType *arg_data = glmsg.add_args();
12120    arg_data->set_isarray(false);
12121    arg_data->set_type(GLMessage::DataType::INT64);
12122    arg_data->add_int64value((uintptr_t)data);
12123
12124    // call function
12125    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12126    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12127    glContext->hooks->gl.glGetPerfMonitorCounterInfoAMD(group, counter, pname, data);
12128    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12129    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12130
12131    void *pointerArgs[] = {
12132        (void *) data,
12133    };
12134
12135    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12136                              threadStartTime, threadEndTime,
12137                              &glmsg, pointerArgs);
12138    glContext->traceGLMessage(&glmsg);
12139}
12140
12141void GLTrace_glGenPerfMonitorsAMD(GLsizei n, GLuint * monitors) {
12142    GLMessage glmsg;
12143    GLTraceContext *glContext = getGLTraceContext();
12144
12145    glmsg.set_function(GLMessage::glGenPerfMonitorsAMD);
12146
12147    // copy argument n
12148    GLMessage_DataType *arg_n = glmsg.add_args();
12149    arg_n->set_isarray(false);
12150    arg_n->set_type(GLMessage::DataType::INT);
12151    arg_n->add_intvalue(n);
12152
12153    // copy argument monitors
12154    GLMessage_DataType *arg_monitors = glmsg.add_args();
12155    arg_monitors->set_isarray(false);
12156    arg_monitors->set_type(GLMessage::DataType::INT64);
12157    arg_monitors->add_int64value((uintptr_t)monitors);
12158
12159    // call function
12160    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12161    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12162    glContext->hooks->gl.glGenPerfMonitorsAMD(n, monitors);
12163    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12164    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12165
12166    void *pointerArgs[] = {
12167        (void *) monitors,
12168    };
12169
12170    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12171                              threadStartTime, threadEndTime,
12172                              &glmsg, pointerArgs);
12173    glContext->traceGLMessage(&glmsg);
12174}
12175
12176void GLTrace_glDeletePerfMonitorsAMD(GLsizei n, GLuint * monitors) {
12177    GLMessage glmsg;
12178    GLTraceContext *glContext = getGLTraceContext();
12179
12180    glmsg.set_function(GLMessage::glDeletePerfMonitorsAMD);
12181
12182    // copy argument n
12183    GLMessage_DataType *arg_n = glmsg.add_args();
12184    arg_n->set_isarray(false);
12185    arg_n->set_type(GLMessage::DataType::INT);
12186    arg_n->add_intvalue(n);
12187
12188    // copy argument monitors
12189    GLMessage_DataType *arg_monitors = glmsg.add_args();
12190    arg_monitors->set_isarray(false);
12191    arg_monitors->set_type(GLMessage::DataType::INT64);
12192    arg_monitors->add_int64value((uintptr_t)monitors);
12193
12194    // call function
12195    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12196    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12197    glContext->hooks->gl.glDeletePerfMonitorsAMD(n, monitors);
12198    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12199    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12200
12201    void *pointerArgs[] = {
12202        (void *) monitors,
12203    };
12204
12205    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12206                              threadStartTime, threadEndTime,
12207                              &glmsg, pointerArgs);
12208    glContext->traceGLMessage(&glmsg);
12209}
12210
12211void GLTrace_glSelectPerfMonitorCountersAMD(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint * counterList) {
12212    GLMessage glmsg;
12213    GLTraceContext *glContext = getGLTraceContext();
12214
12215    glmsg.set_function(GLMessage::glSelectPerfMonitorCountersAMD);
12216
12217    // copy argument monitor
12218    GLMessage_DataType *arg_monitor = glmsg.add_args();
12219    arg_monitor->set_isarray(false);
12220    arg_monitor->set_type(GLMessage::DataType::INT);
12221    arg_monitor->add_intvalue(monitor);
12222
12223    // copy argument enable
12224    GLMessage_DataType *arg_enable = glmsg.add_args();
12225    arg_enable->set_isarray(false);
12226    arg_enable->set_type(GLMessage::DataType::BOOL);
12227    arg_enable->add_boolvalue(enable);
12228
12229    // copy argument group
12230    GLMessage_DataType *arg_group = glmsg.add_args();
12231    arg_group->set_isarray(false);
12232    arg_group->set_type(GLMessage::DataType::INT);
12233    arg_group->add_intvalue(group);
12234
12235    // copy argument numCounters
12236    GLMessage_DataType *arg_numCounters = glmsg.add_args();
12237    arg_numCounters->set_isarray(false);
12238    arg_numCounters->set_type(GLMessage::DataType::INT);
12239    arg_numCounters->add_intvalue(numCounters);
12240
12241    // copy argument counterList
12242    GLMessage_DataType *arg_counterList = glmsg.add_args();
12243    arg_counterList->set_isarray(false);
12244    arg_counterList->set_type(GLMessage::DataType::INT64);
12245    arg_counterList->add_int64value((uintptr_t)counterList);
12246
12247    // call function
12248    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12249    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12250    glContext->hooks->gl.glSelectPerfMonitorCountersAMD(monitor, enable, group, numCounters, counterList);
12251    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12252    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12253
12254    void *pointerArgs[] = {
12255        (void *) counterList,
12256    };
12257
12258    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12259                              threadStartTime, threadEndTime,
12260                              &glmsg, pointerArgs);
12261    glContext->traceGLMessage(&glmsg);
12262}
12263
12264void GLTrace_glBeginPerfMonitorAMD(GLuint monitor) {
12265    GLMessage glmsg;
12266    GLTraceContext *glContext = getGLTraceContext();
12267
12268    glmsg.set_function(GLMessage::glBeginPerfMonitorAMD);
12269
12270    // copy argument monitor
12271    GLMessage_DataType *arg_monitor = glmsg.add_args();
12272    arg_monitor->set_isarray(false);
12273    arg_monitor->set_type(GLMessage::DataType::INT);
12274    arg_monitor->add_intvalue(monitor);
12275
12276    // call function
12277    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12278    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12279    glContext->hooks->gl.glBeginPerfMonitorAMD(monitor);
12280    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12281    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12282
12283    void *pointerArgs[] = {
12284    };
12285
12286    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12287                              threadStartTime, threadEndTime,
12288                              &glmsg, pointerArgs);
12289    glContext->traceGLMessage(&glmsg);
12290}
12291
12292void GLTrace_glEndPerfMonitorAMD(GLuint monitor) {
12293    GLMessage glmsg;
12294    GLTraceContext *glContext = getGLTraceContext();
12295
12296    glmsg.set_function(GLMessage::glEndPerfMonitorAMD);
12297
12298    // copy argument monitor
12299    GLMessage_DataType *arg_monitor = glmsg.add_args();
12300    arg_monitor->set_isarray(false);
12301    arg_monitor->set_type(GLMessage::DataType::INT);
12302    arg_monitor->add_intvalue(monitor);
12303
12304    // call function
12305    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12306    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12307    glContext->hooks->gl.glEndPerfMonitorAMD(monitor);
12308    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12309    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12310
12311    void *pointerArgs[] = {
12312    };
12313
12314    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12315                              threadStartTime, threadEndTime,
12316                              &glmsg, pointerArgs);
12317    glContext->traceGLMessage(&glmsg);
12318}
12319
12320void GLTrace_glGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint * data, GLint * bytesWritten) {
12321    GLMessage glmsg;
12322    GLTraceContext *glContext = getGLTraceContext();
12323
12324    glmsg.set_function(GLMessage::glGetPerfMonitorCounterDataAMD);
12325
12326    // copy argument monitor
12327    GLMessage_DataType *arg_monitor = glmsg.add_args();
12328    arg_monitor->set_isarray(false);
12329    arg_monitor->set_type(GLMessage::DataType::INT);
12330    arg_monitor->add_intvalue(monitor);
12331
12332    // copy argument pname
12333    GLMessage_DataType *arg_pname = glmsg.add_args();
12334    arg_pname->set_isarray(false);
12335    arg_pname->set_type(GLMessage::DataType::ENUM);
12336    arg_pname->add_intvalue((int)pname);
12337
12338    // copy argument dataSize
12339    GLMessage_DataType *arg_dataSize = glmsg.add_args();
12340    arg_dataSize->set_isarray(false);
12341    arg_dataSize->set_type(GLMessage::DataType::INT);
12342    arg_dataSize->add_intvalue(dataSize);
12343
12344    // copy argument data
12345    GLMessage_DataType *arg_data = glmsg.add_args();
12346    arg_data->set_isarray(false);
12347    arg_data->set_type(GLMessage::DataType::INT64);
12348    arg_data->add_int64value((uintptr_t)data);
12349
12350    // copy argument bytesWritten
12351    GLMessage_DataType *arg_bytesWritten = glmsg.add_args();
12352    arg_bytesWritten->set_isarray(false);
12353    arg_bytesWritten->set_type(GLMessage::DataType::INT64);
12354    arg_bytesWritten->add_int64value((uintptr_t)bytesWritten);
12355
12356    // call function
12357    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12358    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12359    glContext->hooks->gl.glGetPerfMonitorCounterDataAMD(monitor, pname, dataSize, data, bytesWritten);
12360    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12361    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12362
12363    void *pointerArgs[] = {
12364        (void *) data,
12365        (void *) bytesWritten,
12366    };
12367
12368    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12369                              threadStartTime, threadEndTime,
12370                              &glmsg, pointerArgs);
12371    glContext->traceGLMessage(&glmsg);
12372}
12373
12374void GLTrace_glBlitFramebufferANGLE(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) {
12375    GLMessage glmsg;
12376    GLTraceContext *glContext = getGLTraceContext();
12377
12378    glmsg.set_function(GLMessage::glBlitFramebufferANGLE);
12379
12380    // copy argument srcX0
12381    GLMessage_DataType *arg_srcX0 = glmsg.add_args();
12382    arg_srcX0->set_isarray(false);
12383    arg_srcX0->set_type(GLMessage::DataType::INT);
12384    arg_srcX0->add_intvalue(srcX0);
12385
12386    // copy argument srcY0
12387    GLMessage_DataType *arg_srcY0 = glmsg.add_args();
12388    arg_srcY0->set_isarray(false);
12389    arg_srcY0->set_type(GLMessage::DataType::INT);
12390    arg_srcY0->add_intvalue(srcY0);
12391
12392    // copy argument srcX1
12393    GLMessage_DataType *arg_srcX1 = glmsg.add_args();
12394    arg_srcX1->set_isarray(false);
12395    arg_srcX1->set_type(GLMessage::DataType::INT);
12396    arg_srcX1->add_intvalue(srcX1);
12397
12398    // copy argument srcY1
12399    GLMessage_DataType *arg_srcY1 = glmsg.add_args();
12400    arg_srcY1->set_isarray(false);
12401    arg_srcY1->set_type(GLMessage::DataType::INT);
12402    arg_srcY1->add_intvalue(srcY1);
12403
12404    // copy argument dstX0
12405    GLMessage_DataType *arg_dstX0 = glmsg.add_args();
12406    arg_dstX0->set_isarray(false);
12407    arg_dstX0->set_type(GLMessage::DataType::INT);
12408    arg_dstX0->add_intvalue(dstX0);
12409
12410    // copy argument dstY0
12411    GLMessage_DataType *arg_dstY0 = glmsg.add_args();
12412    arg_dstY0->set_isarray(false);
12413    arg_dstY0->set_type(GLMessage::DataType::INT);
12414    arg_dstY0->add_intvalue(dstY0);
12415
12416    // copy argument dstX1
12417    GLMessage_DataType *arg_dstX1 = glmsg.add_args();
12418    arg_dstX1->set_isarray(false);
12419    arg_dstX1->set_type(GLMessage::DataType::INT);
12420    arg_dstX1->add_intvalue(dstX1);
12421
12422    // copy argument dstY1
12423    GLMessage_DataType *arg_dstY1 = glmsg.add_args();
12424    arg_dstY1->set_isarray(false);
12425    arg_dstY1->set_type(GLMessage::DataType::INT);
12426    arg_dstY1->add_intvalue(dstY1);
12427
12428    // copy argument mask
12429    GLMessage_DataType *arg_mask = glmsg.add_args();
12430    arg_mask->set_isarray(false);
12431    arg_mask->set_type(GLMessage::DataType::INT);
12432    arg_mask->add_intvalue(mask);
12433
12434    // copy argument filter
12435    GLMessage_DataType *arg_filter = glmsg.add_args();
12436    arg_filter->set_isarray(false);
12437    arg_filter->set_type(GLMessage::DataType::ENUM);
12438    arg_filter->add_intvalue((int)filter);
12439
12440    // call function
12441    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12442    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12443    glContext->hooks->gl.glBlitFramebufferANGLE(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
12444    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12445    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12446
12447    void *pointerArgs[] = {
12448    };
12449
12450    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12451                              threadStartTime, threadEndTime,
12452                              &glmsg, pointerArgs);
12453    glContext->traceGLMessage(&glmsg);
12454}
12455
12456void GLTrace_glRenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
12457    GLMessage glmsg;
12458    GLTraceContext *glContext = getGLTraceContext();
12459
12460    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleANGLE);
12461
12462    // copy argument target
12463    GLMessage_DataType *arg_target = glmsg.add_args();
12464    arg_target->set_isarray(false);
12465    arg_target->set_type(GLMessage::DataType::ENUM);
12466    arg_target->add_intvalue((int)target);
12467
12468    // copy argument samples
12469    GLMessage_DataType *arg_samples = glmsg.add_args();
12470    arg_samples->set_isarray(false);
12471    arg_samples->set_type(GLMessage::DataType::INT);
12472    arg_samples->add_intvalue(samples);
12473
12474    // copy argument internalformat
12475    GLMessage_DataType *arg_internalformat = glmsg.add_args();
12476    arg_internalformat->set_isarray(false);
12477    arg_internalformat->set_type(GLMessage::DataType::ENUM);
12478    arg_internalformat->add_intvalue((int)internalformat);
12479
12480    // copy argument width
12481    GLMessage_DataType *arg_width = glmsg.add_args();
12482    arg_width->set_isarray(false);
12483    arg_width->set_type(GLMessage::DataType::INT);
12484    arg_width->add_intvalue(width);
12485
12486    // copy argument height
12487    GLMessage_DataType *arg_height = glmsg.add_args();
12488    arg_height->set_isarray(false);
12489    arg_height->set_type(GLMessage::DataType::INT);
12490    arg_height->add_intvalue(height);
12491
12492    // call function
12493    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12494    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12495    glContext->hooks->gl.glRenderbufferStorageMultisampleANGLE(target, samples, internalformat, width, height);
12496    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12497    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12498
12499    void *pointerArgs[] = {
12500    };
12501
12502    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12503                              threadStartTime, threadEndTime,
12504                              &glmsg, pointerArgs);
12505    glContext->traceGLMessage(&glmsg);
12506}
12507
12508void GLTrace_glDrawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei count, GLsizei primcount) {
12509    GLMessage glmsg;
12510    GLTraceContext *glContext = getGLTraceContext();
12511
12512    glmsg.set_function(GLMessage::glDrawArraysInstancedANGLE);
12513
12514    // copy argument mode
12515    GLMessage_DataType *arg_mode = glmsg.add_args();
12516    arg_mode->set_isarray(false);
12517    arg_mode->set_type(GLMessage::DataType::ENUM);
12518    arg_mode->add_intvalue((int)mode);
12519
12520    // copy argument first
12521    GLMessage_DataType *arg_first = glmsg.add_args();
12522    arg_first->set_isarray(false);
12523    arg_first->set_type(GLMessage::DataType::INT);
12524    arg_first->add_intvalue(first);
12525
12526    // copy argument count
12527    GLMessage_DataType *arg_count = glmsg.add_args();
12528    arg_count->set_isarray(false);
12529    arg_count->set_type(GLMessage::DataType::INT);
12530    arg_count->add_intvalue(count);
12531
12532    // copy argument primcount
12533    GLMessage_DataType *arg_primcount = glmsg.add_args();
12534    arg_primcount->set_isarray(false);
12535    arg_primcount->set_type(GLMessage::DataType::INT);
12536    arg_primcount->add_intvalue(primcount);
12537
12538    // call function
12539    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12540    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12541    glContext->hooks->gl.glDrawArraysInstancedANGLE(mode, first, count, primcount);
12542    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12543    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12544
12545    void *pointerArgs[] = {
12546    };
12547
12548    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12549                              threadStartTime, threadEndTime,
12550                              &glmsg, pointerArgs);
12551    glContext->traceGLMessage(&glmsg);
12552}
12553
12554void GLTrace_glDrawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei primcount) {
12555    GLMessage glmsg;
12556    GLTraceContext *glContext = getGLTraceContext();
12557
12558    glmsg.set_function(GLMessage::glDrawElementsInstancedANGLE);
12559
12560    // copy argument mode
12561    GLMessage_DataType *arg_mode = glmsg.add_args();
12562    arg_mode->set_isarray(false);
12563    arg_mode->set_type(GLMessage::DataType::ENUM);
12564    arg_mode->add_intvalue((int)mode);
12565
12566    // copy argument count
12567    GLMessage_DataType *arg_count = glmsg.add_args();
12568    arg_count->set_isarray(false);
12569    arg_count->set_type(GLMessage::DataType::INT);
12570    arg_count->add_intvalue(count);
12571
12572    // copy argument type
12573    GLMessage_DataType *arg_type = glmsg.add_args();
12574    arg_type->set_isarray(false);
12575    arg_type->set_type(GLMessage::DataType::ENUM);
12576    arg_type->add_intvalue((int)type);
12577
12578    // copy argument indices
12579    GLMessage_DataType *arg_indices = glmsg.add_args();
12580    arg_indices->set_isarray(false);
12581    arg_indices->set_type(GLMessage::DataType::INT64);
12582    arg_indices->add_int64value((uintptr_t)indices);
12583
12584    // copy argument primcount
12585    GLMessage_DataType *arg_primcount = glmsg.add_args();
12586    arg_primcount->set_isarray(false);
12587    arg_primcount->set_type(GLMessage::DataType::INT);
12588    arg_primcount->add_intvalue(primcount);
12589
12590    // call function
12591    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12592    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12593    glContext->hooks->gl.glDrawElementsInstancedANGLE(mode, count, type, indices, primcount);
12594    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12595    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12596
12597    void *pointerArgs[] = {
12598        (void *) indices,
12599    };
12600
12601    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12602                              threadStartTime, threadEndTime,
12603                              &glmsg, pointerArgs);
12604    glContext->traceGLMessage(&glmsg);
12605}
12606
12607void GLTrace_glVertexAttribDivisorANGLE(GLuint index, GLuint divisor) {
12608    GLMessage glmsg;
12609    GLTraceContext *glContext = getGLTraceContext();
12610
12611    glmsg.set_function(GLMessage::glVertexAttribDivisorANGLE);
12612
12613    // copy argument index
12614    GLMessage_DataType *arg_index = glmsg.add_args();
12615    arg_index->set_isarray(false);
12616    arg_index->set_type(GLMessage::DataType::INT);
12617    arg_index->add_intvalue(index);
12618
12619    // copy argument divisor
12620    GLMessage_DataType *arg_divisor = glmsg.add_args();
12621    arg_divisor->set_isarray(false);
12622    arg_divisor->set_type(GLMessage::DataType::INT);
12623    arg_divisor->add_intvalue(divisor);
12624
12625    // call function
12626    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12627    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12628    glContext->hooks->gl.glVertexAttribDivisorANGLE(index, divisor);
12629    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12630    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12631
12632    void *pointerArgs[] = {
12633    };
12634
12635    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12636                              threadStartTime, threadEndTime,
12637                              &glmsg, pointerArgs);
12638    glContext->traceGLMessage(&glmsg);
12639}
12640
12641void GLTrace_glGetTranslatedShaderSourceANGLE(GLuint shader, GLsizei bufsize, GLsizei * length, GLchar * source) {
12642    GLMessage glmsg;
12643    GLTraceContext *glContext = getGLTraceContext();
12644
12645    glmsg.set_function(GLMessage::glGetTranslatedShaderSourceANGLE);
12646
12647    // copy argument shader
12648    GLMessage_DataType *arg_shader = glmsg.add_args();
12649    arg_shader->set_isarray(false);
12650    arg_shader->set_type(GLMessage::DataType::INT);
12651    arg_shader->add_intvalue(shader);
12652
12653    // copy argument bufsize
12654    GLMessage_DataType *arg_bufsize = glmsg.add_args();
12655    arg_bufsize->set_isarray(false);
12656    arg_bufsize->set_type(GLMessage::DataType::INT);
12657    arg_bufsize->add_intvalue(bufsize);
12658
12659    // copy argument length
12660    GLMessage_DataType *arg_length = glmsg.add_args();
12661    arg_length->set_isarray(false);
12662    arg_length->set_type(GLMessage::DataType::INT64);
12663    arg_length->add_int64value((uintptr_t)length);
12664
12665    // copy argument source
12666    GLMessage_DataType *arg_source = glmsg.add_args();
12667    arg_source->set_isarray(false);
12668    arg_source->set_type(GLMessage::DataType::INT64);
12669    arg_source->add_int64value((uintptr_t)source);
12670
12671    // call function
12672    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12673    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12674    glContext->hooks->gl.glGetTranslatedShaderSourceANGLE(shader, bufsize, length, source);
12675    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12676    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12677
12678    void *pointerArgs[] = {
12679        (void *) length,
12680        (void *) source,
12681    };
12682
12683    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12684                              threadStartTime, threadEndTime,
12685                              &glmsg, pointerArgs);
12686    glContext->traceGLMessage(&glmsg);
12687}
12688
12689void GLTrace_glCopyTextureLevelsAPPLE(GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount) {
12690    GLMessage glmsg;
12691    GLTraceContext *glContext = getGLTraceContext();
12692
12693    glmsg.set_function(GLMessage::glCopyTextureLevelsAPPLE);
12694
12695    // copy argument destinationTexture
12696    GLMessage_DataType *arg_destinationTexture = glmsg.add_args();
12697    arg_destinationTexture->set_isarray(false);
12698    arg_destinationTexture->set_type(GLMessage::DataType::INT);
12699    arg_destinationTexture->add_intvalue(destinationTexture);
12700
12701    // copy argument sourceTexture
12702    GLMessage_DataType *arg_sourceTexture = glmsg.add_args();
12703    arg_sourceTexture->set_isarray(false);
12704    arg_sourceTexture->set_type(GLMessage::DataType::INT);
12705    arg_sourceTexture->add_intvalue(sourceTexture);
12706
12707    // copy argument sourceBaseLevel
12708    GLMessage_DataType *arg_sourceBaseLevel = glmsg.add_args();
12709    arg_sourceBaseLevel->set_isarray(false);
12710    arg_sourceBaseLevel->set_type(GLMessage::DataType::INT);
12711    arg_sourceBaseLevel->add_intvalue(sourceBaseLevel);
12712
12713    // copy argument sourceLevelCount
12714    GLMessage_DataType *arg_sourceLevelCount = glmsg.add_args();
12715    arg_sourceLevelCount->set_isarray(false);
12716    arg_sourceLevelCount->set_type(GLMessage::DataType::INT);
12717    arg_sourceLevelCount->add_intvalue(sourceLevelCount);
12718
12719    // call function
12720    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12721    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12722    glContext->hooks->gl.glCopyTextureLevelsAPPLE(destinationTexture, sourceTexture, sourceBaseLevel, sourceLevelCount);
12723    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12724    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12725
12726    void *pointerArgs[] = {
12727    };
12728
12729    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12730                              threadStartTime, threadEndTime,
12731                              &glmsg, pointerArgs);
12732    glContext->traceGLMessage(&glmsg);
12733}
12734
12735void GLTrace_glRenderbufferStorageMultisampleAPPLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
12736    GLMessage glmsg;
12737    GLTraceContext *glContext = getGLTraceContext();
12738
12739    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleAPPLE);
12740
12741    // copy argument target
12742    GLMessage_DataType *arg_target = glmsg.add_args();
12743    arg_target->set_isarray(false);
12744    arg_target->set_type(GLMessage::DataType::ENUM);
12745    arg_target->add_intvalue((int)target);
12746
12747    // copy argument samples
12748    GLMessage_DataType *arg_samples = glmsg.add_args();
12749    arg_samples->set_isarray(false);
12750    arg_samples->set_type(GLMessage::DataType::INT);
12751    arg_samples->add_intvalue(samples);
12752
12753    // copy argument internalformat
12754    GLMessage_DataType *arg_internalformat = glmsg.add_args();
12755    arg_internalformat->set_isarray(false);
12756    arg_internalformat->set_type(GLMessage::DataType::ENUM);
12757    arg_internalformat->add_intvalue((int)internalformat);
12758
12759    // copy argument width
12760    GLMessage_DataType *arg_width = glmsg.add_args();
12761    arg_width->set_isarray(false);
12762    arg_width->set_type(GLMessage::DataType::INT);
12763    arg_width->add_intvalue(width);
12764
12765    // copy argument height
12766    GLMessage_DataType *arg_height = glmsg.add_args();
12767    arg_height->set_isarray(false);
12768    arg_height->set_type(GLMessage::DataType::INT);
12769    arg_height->add_intvalue(height);
12770
12771    // call function
12772    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12773    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12774    glContext->hooks->gl.glRenderbufferStorageMultisampleAPPLE(target, samples, internalformat, width, height);
12775    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12776    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12777
12778    void *pointerArgs[] = {
12779    };
12780
12781    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12782                              threadStartTime, threadEndTime,
12783                              &glmsg, pointerArgs);
12784    glContext->traceGLMessage(&glmsg);
12785}
12786
12787void GLTrace_glResolveMultisampleFramebufferAPPLE(void) {
12788    GLMessage glmsg;
12789    GLTraceContext *glContext = getGLTraceContext();
12790
12791    glmsg.set_function(GLMessage::glResolveMultisampleFramebufferAPPLE);
12792
12793    // call function
12794    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12795    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12796    glContext->hooks->gl.glResolveMultisampleFramebufferAPPLE();
12797    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12798    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12799
12800    void *pointerArgs[] = {
12801    };
12802
12803    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12804                              threadStartTime, threadEndTime,
12805                              &glmsg, pointerArgs);
12806    glContext->traceGLMessage(&glmsg);
12807}
12808
12809GLsync GLTrace_glFenceSyncAPPLE(GLenum condition, GLbitfield flags) {
12810    GLMessage glmsg;
12811    GLTraceContext *glContext = getGLTraceContext();
12812
12813    glmsg.set_function(GLMessage::glFenceSyncAPPLE);
12814
12815    // copy argument condition
12816    GLMessage_DataType *arg_condition = glmsg.add_args();
12817    arg_condition->set_isarray(false);
12818    arg_condition->set_type(GLMessage::DataType::ENUM);
12819    arg_condition->add_intvalue((int)condition);
12820
12821    // copy argument flags
12822    GLMessage_DataType *arg_flags = glmsg.add_args();
12823    arg_flags->set_isarray(false);
12824    arg_flags->set_type(GLMessage::DataType::INT);
12825    arg_flags->add_intvalue(flags);
12826
12827    // call function
12828    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12829    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12830    GLsync retValue = glContext->hooks->gl.glFenceSyncAPPLE(condition, flags);
12831    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12832    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12833
12834    // set return value
12835    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
12836    rt->set_isarray(false);
12837    rt->set_type(GLMessage::DataType::INT64);
12838    rt->add_int64value((uintptr_t)retValue);
12839
12840    void *pointerArgs[] = {
12841        (void *) retValue,
12842    };
12843
12844    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12845                              threadStartTime, threadEndTime,
12846                              &glmsg, pointerArgs);
12847    glContext->traceGLMessage(&glmsg);
12848
12849    return retValue;
12850}
12851
12852GLboolean GLTrace_glIsSyncAPPLE(GLsync sync) {
12853    GLMessage glmsg;
12854    GLTraceContext *glContext = getGLTraceContext();
12855
12856    glmsg.set_function(GLMessage::glIsSyncAPPLE);
12857
12858    // copy argument sync
12859    GLMessage_DataType *arg_sync = glmsg.add_args();
12860    arg_sync->set_isarray(false);
12861    arg_sync->set_type(GLMessage::DataType::INT64);
12862    arg_sync->add_int64value((uintptr_t)sync);
12863
12864    // call function
12865    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12866    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12867    GLboolean retValue = glContext->hooks->gl.glIsSyncAPPLE(sync);
12868    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12869    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12870
12871    // set return value
12872    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
12873    rt->set_isarray(false);
12874    rt->set_type(GLMessage::DataType::BOOL);
12875    rt->add_boolvalue(retValue);
12876
12877    void *pointerArgs[] = {
12878        (void *) sync,
12879    };
12880
12881    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12882                              threadStartTime, threadEndTime,
12883                              &glmsg, pointerArgs);
12884    glContext->traceGLMessage(&glmsg);
12885
12886    return retValue;
12887}
12888
12889void GLTrace_glDeleteSyncAPPLE(GLsync sync) {
12890    GLMessage glmsg;
12891    GLTraceContext *glContext = getGLTraceContext();
12892
12893    glmsg.set_function(GLMessage::glDeleteSyncAPPLE);
12894
12895    // copy argument sync
12896    GLMessage_DataType *arg_sync = glmsg.add_args();
12897    arg_sync->set_isarray(false);
12898    arg_sync->set_type(GLMessage::DataType::INT64);
12899    arg_sync->add_int64value((uintptr_t)sync);
12900
12901    // call function
12902    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12903    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12904    glContext->hooks->gl.glDeleteSyncAPPLE(sync);
12905    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12906    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12907
12908    void *pointerArgs[] = {
12909        (void *) sync,
12910    };
12911
12912    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12913                              threadStartTime, threadEndTime,
12914                              &glmsg, pointerArgs);
12915    glContext->traceGLMessage(&glmsg);
12916}
12917
12918GLenum GLTrace_glClientWaitSyncAPPLE(GLsync sync, GLbitfield flags, GLuint64 timeout) {
12919    GLMessage glmsg;
12920    GLTraceContext *glContext = getGLTraceContext();
12921
12922    glmsg.set_function(GLMessage::glClientWaitSyncAPPLE);
12923
12924    // copy argument sync
12925    GLMessage_DataType *arg_sync = glmsg.add_args();
12926    arg_sync->set_isarray(false);
12927    arg_sync->set_type(GLMessage::DataType::INT64);
12928    arg_sync->add_int64value((uintptr_t)sync);
12929
12930    // copy argument flags
12931    GLMessage_DataType *arg_flags = glmsg.add_args();
12932    arg_flags->set_isarray(false);
12933    arg_flags->set_type(GLMessage::DataType::INT);
12934    arg_flags->add_intvalue(flags);
12935
12936    // copy argument timeout
12937    GLMessage_DataType *arg_timeout = glmsg.add_args();
12938    arg_timeout->set_isarray(false);
12939    arg_timeout->set_type(GLMessage::DataType::INT64);
12940    arg_timeout->add_int64value(timeout);
12941
12942    // call function
12943    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12944    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12945    GLenum retValue = glContext->hooks->gl.glClientWaitSyncAPPLE(sync, flags, timeout);
12946    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12947    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12948
12949    // set return value
12950    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
12951    rt->set_isarray(false);
12952    rt->set_type(GLMessage::DataType::ENUM);
12953    rt->add_intvalue((int)retValue);
12954
12955    void *pointerArgs[] = {
12956        (void *) sync,
12957    };
12958
12959    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12960                              threadStartTime, threadEndTime,
12961                              &glmsg, pointerArgs);
12962    glContext->traceGLMessage(&glmsg);
12963
12964    return retValue;
12965}
12966
12967void GLTrace_glWaitSyncAPPLE(GLsync sync, GLbitfield flags, GLuint64 timeout) {
12968    GLMessage glmsg;
12969    GLTraceContext *glContext = getGLTraceContext();
12970
12971    glmsg.set_function(GLMessage::glWaitSyncAPPLE);
12972
12973    // copy argument sync
12974    GLMessage_DataType *arg_sync = glmsg.add_args();
12975    arg_sync->set_isarray(false);
12976    arg_sync->set_type(GLMessage::DataType::INT64);
12977    arg_sync->add_int64value((uintptr_t)sync);
12978
12979    // copy argument flags
12980    GLMessage_DataType *arg_flags = glmsg.add_args();
12981    arg_flags->set_isarray(false);
12982    arg_flags->set_type(GLMessage::DataType::INT);
12983    arg_flags->add_intvalue(flags);
12984
12985    // copy argument timeout
12986    GLMessage_DataType *arg_timeout = glmsg.add_args();
12987    arg_timeout->set_isarray(false);
12988    arg_timeout->set_type(GLMessage::DataType::INT64);
12989    arg_timeout->add_int64value(timeout);
12990
12991    // call function
12992    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12993    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12994    glContext->hooks->gl.glWaitSyncAPPLE(sync, flags, timeout);
12995    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12996    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12997
12998    void *pointerArgs[] = {
12999        (void *) sync,
13000    };
13001
13002    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13003                              threadStartTime, threadEndTime,
13004                              &glmsg, pointerArgs);
13005    glContext->traceGLMessage(&glmsg);
13006}
13007
13008void GLTrace_glGetInteger64vAPPLE(GLenum pname, GLint64 * params) {
13009    GLMessage glmsg;
13010    GLTraceContext *glContext = getGLTraceContext();
13011
13012    glmsg.set_function(GLMessage::glGetInteger64vAPPLE);
13013
13014    // copy argument pname
13015    GLMessage_DataType *arg_pname = glmsg.add_args();
13016    arg_pname->set_isarray(false);
13017    arg_pname->set_type(GLMessage::DataType::ENUM);
13018    arg_pname->add_intvalue((int)pname);
13019
13020    // copy argument params
13021    GLMessage_DataType *arg_params = glmsg.add_args();
13022    arg_params->set_isarray(false);
13023    arg_params->set_type(GLMessage::DataType::INT64);
13024    arg_params->add_int64value((uintptr_t)params);
13025
13026    // call function
13027    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13028    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13029    glContext->hooks->gl.glGetInteger64vAPPLE(pname, params);
13030    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13031    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13032
13033    void *pointerArgs[] = {
13034        (void *) params,
13035    };
13036
13037    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13038                              threadStartTime, threadEndTime,
13039                              &glmsg, pointerArgs);
13040    glContext->traceGLMessage(&glmsg);
13041}
13042
13043void GLTrace_glGetSyncivAPPLE(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values) {
13044    GLMessage glmsg;
13045    GLTraceContext *glContext = getGLTraceContext();
13046
13047    glmsg.set_function(GLMessage::glGetSyncivAPPLE);
13048
13049    // copy argument sync
13050    GLMessage_DataType *arg_sync = glmsg.add_args();
13051    arg_sync->set_isarray(false);
13052    arg_sync->set_type(GLMessage::DataType::INT64);
13053    arg_sync->add_int64value((uintptr_t)sync);
13054
13055    // copy argument pname
13056    GLMessage_DataType *arg_pname = glmsg.add_args();
13057    arg_pname->set_isarray(false);
13058    arg_pname->set_type(GLMessage::DataType::ENUM);
13059    arg_pname->add_intvalue((int)pname);
13060
13061    // copy argument bufSize
13062    GLMessage_DataType *arg_bufSize = glmsg.add_args();
13063    arg_bufSize->set_isarray(false);
13064    arg_bufSize->set_type(GLMessage::DataType::INT);
13065    arg_bufSize->add_intvalue(bufSize);
13066
13067    // copy argument length
13068    GLMessage_DataType *arg_length = glmsg.add_args();
13069    arg_length->set_isarray(false);
13070    arg_length->set_type(GLMessage::DataType::INT64);
13071    arg_length->add_int64value((uintptr_t)length);
13072
13073    // copy argument values
13074    GLMessage_DataType *arg_values = glmsg.add_args();
13075    arg_values->set_isarray(false);
13076    arg_values->set_type(GLMessage::DataType::INT64);
13077    arg_values->add_int64value((uintptr_t)values);
13078
13079    // call function
13080    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13081    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13082    glContext->hooks->gl.glGetSyncivAPPLE(sync, pname, bufSize, length, values);
13083    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13084    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13085
13086    void *pointerArgs[] = {
13087        (void *) sync,
13088        (void *) length,
13089        (void *) values,
13090    };
13091
13092    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13093                              threadStartTime, threadEndTime,
13094                              &glmsg, pointerArgs);
13095    glContext->traceGLMessage(&glmsg);
13096}
13097
13098void GLTrace_glLabelObjectEXT(GLenum type, GLuint object, GLsizei length, const GLchar * label) {
13099    GLMessage glmsg;
13100    GLTraceContext *glContext = getGLTraceContext();
13101
13102    glmsg.set_function(GLMessage::glLabelObjectEXT);
13103
13104    // copy argument type
13105    GLMessage_DataType *arg_type = glmsg.add_args();
13106    arg_type->set_isarray(false);
13107    arg_type->set_type(GLMessage::DataType::ENUM);
13108    arg_type->add_intvalue((int)type);
13109
13110    // copy argument object
13111    GLMessage_DataType *arg_object = glmsg.add_args();
13112    arg_object->set_isarray(false);
13113    arg_object->set_type(GLMessage::DataType::INT);
13114    arg_object->add_intvalue(object);
13115
13116    // copy argument length
13117    GLMessage_DataType *arg_length = glmsg.add_args();
13118    arg_length->set_isarray(false);
13119    arg_length->set_type(GLMessage::DataType::INT);
13120    arg_length->add_intvalue(length);
13121
13122    // copy argument label
13123    GLMessage_DataType *arg_label = glmsg.add_args();
13124    arg_label->set_isarray(false);
13125    arg_label->set_type(GLMessage::DataType::INT64);
13126    arg_label->add_int64value((uintptr_t)label);
13127
13128    // call function
13129    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13130    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13131    glContext->hooks->gl.glLabelObjectEXT(type, object, length, label);
13132    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13133    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13134
13135    void *pointerArgs[] = {
13136        (void *) label,
13137    };
13138
13139    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13140                              threadStartTime, threadEndTime,
13141                              &glmsg, pointerArgs);
13142    glContext->traceGLMessage(&glmsg);
13143}
13144
13145void GLTrace_glGetObjectLabelEXT(GLenum type, GLuint object, GLsizei bufSize, GLsizei * length, GLchar * label) {
13146    GLMessage glmsg;
13147    GLTraceContext *glContext = getGLTraceContext();
13148
13149    glmsg.set_function(GLMessage::glGetObjectLabelEXT);
13150
13151    // copy argument type
13152    GLMessage_DataType *arg_type = glmsg.add_args();
13153    arg_type->set_isarray(false);
13154    arg_type->set_type(GLMessage::DataType::ENUM);
13155    arg_type->add_intvalue((int)type);
13156
13157    // copy argument object
13158    GLMessage_DataType *arg_object = glmsg.add_args();
13159    arg_object->set_isarray(false);
13160    arg_object->set_type(GLMessage::DataType::INT);
13161    arg_object->add_intvalue(object);
13162
13163    // copy argument bufSize
13164    GLMessage_DataType *arg_bufSize = glmsg.add_args();
13165    arg_bufSize->set_isarray(false);
13166    arg_bufSize->set_type(GLMessage::DataType::INT);
13167    arg_bufSize->add_intvalue(bufSize);
13168
13169    // copy argument length
13170    GLMessage_DataType *arg_length = glmsg.add_args();
13171    arg_length->set_isarray(false);
13172    arg_length->set_type(GLMessage::DataType::INT64);
13173    arg_length->add_int64value((uintptr_t)length);
13174
13175    // copy argument label
13176    GLMessage_DataType *arg_label = glmsg.add_args();
13177    arg_label->set_isarray(false);
13178    arg_label->set_type(GLMessage::DataType::INT64);
13179    arg_label->add_int64value((uintptr_t)label);
13180
13181    // call function
13182    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13183    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13184    glContext->hooks->gl.glGetObjectLabelEXT(type, object, bufSize, length, label);
13185    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13186    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13187
13188    void *pointerArgs[] = {
13189        (void *) length,
13190        (void *) label,
13191    };
13192
13193    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13194                              threadStartTime, threadEndTime,
13195                              &glmsg, pointerArgs);
13196    glContext->traceGLMessage(&glmsg);
13197}
13198
13199void GLTrace_glInsertEventMarkerEXT(GLsizei length, const GLchar * marker) {
13200    GLMessage glmsg;
13201    GLTraceContext *glContext = getGLTraceContext();
13202
13203    glmsg.set_function(GLMessage::glInsertEventMarkerEXT);
13204
13205    // copy argument length
13206    GLMessage_DataType *arg_length = glmsg.add_args();
13207    arg_length->set_isarray(false);
13208    arg_length->set_type(GLMessage::DataType::INT);
13209    arg_length->add_intvalue(length);
13210
13211    // copy argument marker
13212    GLMessage_DataType *arg_marker = glmsg.add_args();
13213    arg_marker->set_isarray(false);
13214    arg_marker->set_type(GLMessage::DataType::INT64);
13215    arg_marker->add_int64value((uintptr_t)marker);
13216
13217    // call function
13218    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13219    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13220    glContext->hooks->gl.glInsertEventMarkerEXT(length, marker);
13221    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13222    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13223
13224    void *pointerArgs[] = {
13225        (void *) marker,
13226    };
13227
13228    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13229                              threadStartTime, threadEndTime,
13230                              &glmsg, pointerArgs);
13231    glContext->traceGLMessage(&glmsg);
13232}
13233
13234void GLTrace_glPushGroupMarkerEXT(GLsizei length, const GLchar * marker) {
13235    GLMessage glmsg;
13236    GLTraceContext *glContext = getGLTraceContext();
13237
13238    glmsg.set_function(GLMessage::glPushGroupMarkerEXT);
13239
13240    // copy argument length
13241    GLMessage_DataType *arg_length = glmsg.add_args();
13242    arg_length->set_isarray(false);
13243    arg_length->set_type(GLMessage::DataType::INT);
13244    arg_length->add_intvalue(length);
13245
13246    // copy argument marker
13247    GLMessage_DataType *arg_marker = glmsg.add_args();
13248    arg_marker->set_isarray(false);
13249    arg_marker->set_type(GLMessage::DataType::INT64);
13250    arg_marker->add_int64value((uintptr_t)marker);
13251
13252    // call function
13253    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13254    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13255    glContext->hooks->gl.glPushGroupMarkerEXT(length, marker);
13256    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13257    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13258
13259    void *pointerArgs[] = {
13260        (void *) marker,
13261    };
13262
13263    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13264                              threadStartTime, threadEndTime,
13265                              &glmsg, pointerArgs);
13266    glContext->traceGLMessage(&glmsg);
13267}
13268
13269void GLTrace_glPopGroupMarkerEXT(void) {
13270    GLMessage glmsg;
13271    GLTraceContext *glContext = getGLTraceContext();
13272
13273    glmsg.set_function(GLMessage::glPopGroupMarkerEXT);
13274
13275    // call function
13276    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13277    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13278    glContext->hooks->gl.glPopGroupMarkerEXT();
13279    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13280    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13281
13282    void *pointerArgs[] = {
13283    };
13284
13285    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13286                              threadStartTime, threadEndTime,
13287                              &glmsg, pointerArgs);
13288    glContext->traceGLMessage(&glmsg);
13289}
13290
13291void GLTrace_glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum * attachments) {
13292    GLMessage glmsg;
13293    GLTraceContext *glContext = getGLTraceContext();
13294
13295    glmsg.set_function(GLMessage::glDiscardFramebufferEXT);
13296
13297    // copy argument target
13298    GLMessage_DataType *arg_target = glmsg.add_args();
13299    arg_target->set_isarray(false);
13300    arg_target->set_type(GLMessage::DataType::ENUM);
13301    arg_target->add_intvalue((int)target);
13302
13303    // copy argument numAttachments
13304    GLMessage_DataType *arg_numAttachments = glmsg.add_args();
13305    arg_numAttachments->set_isarray(false);
13306    arg_numAttachments->set_type(GLMessage::DataType::INT);
13307    arg_numAttachments->add_intvalue(numAttachments);
13308
13309    // copy argument attachments
13310    GLMessage_DataType *arg_attachments = glmsg.add_args();
13311    arg_attachments->set_isarray(false);
13312    arg_attachments->set_type(GLMessage::DataType::INT64);
13313    arg_attachments->add_int64value((uintptr_t)attachments);
13314
13315    // call function
13316    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13317    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13318    glContext->hooks->gl.glDiscardFramebufferEXT(target, numAttachments, attachments);
13319    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13320    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13321
13322    void *pointerArgs[] = {
13323        (void *) attachments,
13324    };
13325
13326    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13327                              threadStartTime, threadEndTime,
13328                              &glmsg, pointerArgs);
13329    glContext->traceGLMessage(&glmsg);
13330}
13331
13332void GLTrace_glGenQueriesEXT(GLsizei n, GLuint * ids) {
13333    GLMessage glmsg;
13334    GLTraceContext *glContext = getGLTraceContext();
13335
13336    glmsg.set_function(GLMessage::glGenQueriesEXT);
13337
13338    // copy argument n
13339    GLMessage_DataType *arg_n = glmsg.add_args();
13340    arg_n->set_isarray(false);
13341    arg_n->set_type(GLMessage::DataType::INT);
13342    arg_n->add_intvalue(n);
13343
13344    // copy argument ids
13345    GLMessage_DataType *arg_ids = glmsg.add_args();
13346    arg_ids->set_isarray(false);
13347    arg_ids->set_type(GLMessage::DataType::INT64);
13348    arg_ids->add_int64value((uintptr_t)ids);
13349
13350    // call function
13351    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13352    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13353    glContext->hooks->gl.glGenQueriesEXT(n, ids);
13354    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13355    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13356
13357    void *pointerArgs[] = {
13358        (void *) ids,
13359    };
13360
13361    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13362                              threadStartTime, threadEndTime,
13363                              &glmsg, pointerArgs);
13364    glContext->traceGLMessage(&glmsg);
13365}
13366
13367void GLTrace_glDeleteQueriesEXT(GLsizei n, const GLuint * ids) {
13368    GLMessage glmsg;
13369    GLTraceContext *glContext = getGLTraceContext();
13370
13371    glmsg.set_function(GLMessage::glDeleteQueriesEXT);
13372
13373    // copy argument n
13374    GLMessage_DataType *arg_n = glmsg.add_args();
13375    arg_n->set_isarray(false);
13376    arg_n->set_type(GLMessage::DataType::INT);
13377    arg_n->add_intvalue(n);
13378
13379    // copy argument ids
13380    GLMessage_DataType *arg_ids = glmsg.add_args();
13381    arg_ids->set_isarray(false);
13382    arg_ids->set_type(GLMessage::DataType::INT64);
13383    arg_ids->add_int64value((uintptr_t)ids);
13384
13385    // call function
13386    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13387    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13388    glContext->hooks->gl.glDeleteQueriesEXT(n, ids);
13389    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13390    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13391
13392    void *pointerArgs[] = {
13393        (void *) ids,
13394    };
13395
13396    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13397                              threadStartTime, threadEndTime,
13398                              &glmsg, pointerArgs);
13399    glContext->traceGLMessage(&glmsg);
13400}
13401
13402GLboolean GLTrace_glIsQueryEXT(GLuint id) {
13403    GLMessage glmsg;
13404    GLTraceContext *glContext = getGLTraceContext();
13405
13406    glmsg.set_function(GLMessage::glIsQueryEXT);
13407
13408    // copy argument id
13409    GLMessage_DataType *arg_id = glmsg.add_args();
13410    arg_id->set_isarray(false);
13411    arg_id->set_type(GLMessage::DataType::INT);
13412    arg_id->add_intvalue(id);
13413
13414    // call function
13415    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13416    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13417    GLboolean retValue = glContext->hooks->gl.glIsQueryEXT(id);
13418    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13419    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13420
13421    // set return value
13422    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
13423    rt->set_isarray(false);
13424    rt->set_type(GLMessage::DataType::BOOL);
13425    rt->add_boolvalue(retValue);
13426
13427    void *pointerArgs[] = {
13428    };
13429
13430    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13431                              threadStartTime, threadEndTime,
13432                              &glmsg, pointerArgs);
13433    glContext->traceGLMessage(&glmsg);
13434
13435    return retValue;
13436}
13437
13438void GLTrace_glBeginQueryEXT(GLenum target, GLuint id) {
13439    GLMessage glmsg;
13440    GLTraceContext *glContext = getGLTraceContext();
13441
13442    glmsg.set_function(GLMessage::glBeginQueryEXT);
13443
13444    // copy argument target
13445    GLMessage_DataType *arg_target = glmsg.add_args();
13446    arg_target->set_isarray(false);
13447    arg_target->set_type(GLMessage::DataType::ENUM);
13448    arg_target->add_intvalue((int)target);
13449
13450    // copy argument id
13451    GLMessage_DataType *arg_id = glmsg.add_args();
13452    arg_id->set_isarray(false);
13453    arg_id->set_type(GLMessage::DataType::INT);
13454    arg_id->add_intvalue(id);
13455
13456    // call function
13457    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13458    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13459    glContext->hooks->gl.glBeginQueryEXT(target, id);
13460    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13461    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13462
13463    void *pointerArgs[] = {
13464    };
13465
13466    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13467                              threadStartTime, threadEndTime,
13468                              &glmsg, pointerArgs);
13469    glContext->traceGLMessage(&glmsg);
13470}
13471
13472void GLTrace_glEndQueryEXT(GLenum target) {
13473    GLMessage glmsg;
13474    GLTraceContext *glContext = getGLTraceContext();
13475
13476    glmsg.set_function(GLMessage::glEndQueryEXT);
13477
13478    // copy argument target
13479    GLMessage_DataType *arg_target = glmsg.add_args();
13480    arg_target->set_isarray(false);
13481    arg_target->set_type(GLMessage::DataType::ENUM);
13482    arg_target->add_intvalue((int)target);
13483
13484    // call function
13485    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13486    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13487    glContext->hooks->gl.glEndQueryEXT(target);
13488    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13489    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13490
13491    void *pointerArgs[] = {
13492    };
13493
13494    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13495                              threadStartTime, threadEndTime,
13496                              &glmsg, pointerArgs);
13497    glContext->traceGLMessage(&glmsg);
13498}
13499
13500void GLTrace_glQueryCounterEXT(GLuint id, GLenum target) {
13501    GLMessage glmsg;
13502    GLTraceContext *glContext = getGLTraceContext();
13503
13504    glmsg.set_function(GLMessage::glQueryCounterEXT);
13505
13506    // copy argument id
13507    GLMessage_DataType *arg_id = glmsg.add_args();
13508    arg_id->set_isarray(false);
13509    arg_id->set_type(GLMessage::DataType::INT);
13510    arg_id->add_intvalue(id);
13511
13512    // copy argument target
13513    GLMessage_DataType *arg_target = glmsg.add_args();
13514    arg_target->set_isarray(false);
13515    arg_target->set_type(GLMessage::DataType::ENUM);
13516    arg_target->add_intvalue((int)target);
13517
13518    // call function
13519    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13520    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13521    glContext->hooks->gl.glQueryCounterEXT(id, target);
13522    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13523    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13524
13525    void *pointerArgs[] = {
13526    };
13527
13528    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13529                              threadStartTime, threadEndTime,
13530                              &glmsg, pointerArgs);
13531    glContext->traceGLMessage(&glmsg);
13532}
13533
13534void GLTrace_glGetQueryivEXT(GLenum target, GLenum pname, GLint * params) {
13535    GLMessage glmsg;
13536    GLTraceContext *glContext = getGLTraceContext();
13537
13538    glmsg.set_function(GLMessage::glGetQueryivEXT);
13539
13540    // copy argument target
13541    GLMessage_DataType *arg_target = glmsg.add_args();
13542    arg_target->set_isarray(false);
13543    arg_target->set_type(GLMessage::DataType::ENUM);
13544    arg_target->add_intvalue((int)target);
13545
13546    // copy argument pname
13547    GLMessage_DataType *arg_pname = glmsg.add_args();
13548    arg_pname->set_isarray(false);
13549    arg_pname->set_type(GLMessage::DataType::ENUM);
13550    arg_pname->add_intvalue((int)pname);
13551
13552    // copy argument params
13553    GLMessage_DataType *arg_params = glmsg.add_args();
13554    arg_params->set_isarray(false);
13555    arg_params->set_type(GLMessage::DataType::INT64);
13556    arg_params->add_int64value((uintptr_t)params);
13557
13558    // call function
13559    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13560    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13561    glContext->hooks->gl.glGetQueryivEXT(target, pname, params);
13562    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13563    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13564
13565    void *pointerArgs[] = {
13566        (void *) params,
13567    };
13568
13569    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13570                              threadStartTime, threadEndTime,
13571                              &glmsg, pointerArgs);
13572    glContext->traceGLMessage(&glmsg);
13573}
13574
13575void GLTrace_glGetQueryObjectivEXT(GLuint id, GLenum pname, GLint * params) {
13576    GLMessage glmsg;
13577    GLTraceContext *glContext = getGLTraceContext();
13578
13579    glmsg.set_function(GLMessage::glGetQueryObjectivEXT);
13580
13581    // copy argument id
13582    GLMessage_DataType *arg_id = glmsg.add_args();
13583    arg_id->set_isarray(false);
13584    arg_id->set_type(GLMessage::DataType::INT);
13585    arg_id->add_intvalue(id);
13586
13587    // copy argument pname
13588    GLMessage_DataType *arg_pname = glmsg.add_args();
13589    arg_pname->set_isarray(false);
13590    arg_pname->set_type(GLMessage::DataType::ENUM);
13591    arg_pname->add_intvalue((int)pname);
13592
13593    // copy argument params
13594    GLMessage_DataType *arg_params = glmsg.add_args();
13595    arg_params->set_isarray(false);
13596    arg_params->set_type(GLMessage::DataType::INT64);
13597    arg_params->add_int64value((uintptr_t)params);
13598
13599    // call function
13600    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13601    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13602    glContext->hooks->gl.glGetQueryObjectivEXT(id, pname, params);
13603    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13604    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13605
13606    void *pointerArgs[] = {
13607        (void *) params,
13608    };
13609
13610    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13611                              threadStartTime, threadEndTime,
13612                              &glmsg, pointerArgs);
13613    glContext->traceGLMessage(&glmsg);
13614}
13615
13616void GLTrace_glGetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint * params) {
13617    GLMessage glmsg;
13618    GLTraceContext *glContext = getGLTraceContext();
13619
13620    glmsg.set_function(GLMessage::glGetQueryObjectuivEXT);
13621
13622    // copy argument id
13623    GLMessage_DataType *arg_id = glmsg.add_args();
13624    arg_id->set_isarray(false);
13625    arg_id->set_type(GLMessage::DataType::INT);
13626    arg_id->add_intvalue(id);
13627
13628    // copy argument pname
13629    GLMessage_DataType *arg_pname = glmsg.add_args();
13630    arg_pname->set_isarray(false);
13631    arg_pname->set_type(GLMessage::DataType::ENUM);
13632    arg_pname->add_intvalue((int)pname);
13633
13634    // copy argument params
13635    GLMessage_DataType *arg_params = glmsg.add_args();
13636    arg_params->set_isarray(false);
13637    arg_params->set_type(GLMessage::DataType::INT64);
13638    arg_params->add_int64value((uintptr_t)params);
13639
13640    // call function
13641    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13642    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13643    glContext->hooks->gl.glGetQueryObjectuivEXT(id, pname, params);
13644    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13645    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13646
13647    void *pointerArgs[] = {
13648        (void *) params,
13649    };
13650
13651    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13652                              threadStartTime, threadEndTime,
13653                              &glmsg, pointerArgs);
13654    glContext->traceGLMessage(&glmsg);
13655}
13656
13657void GLTrace_glGetQueryObjecti64vEXT(GLuint id, GLenum pname, GLint64 * params) {
13658    GLMessage glmsg;
13659    GLTraceContext *glContext = getGLTraceContext();
13660
13661    glmsg.set_function(GLMessage::glGetQueryObjecti64vEXT);
13662
13663    // copy argument id
13664    GLMessage_DataType *arg_id = glmsg.add_args();
13665    arg_id->set_isarray(false);
13666    arg_id->set_type(GLMessage::DataType::INT);
13667    arg_id->add_intvalue(id);
13668
13669    // copy argument pname
13670    GLMessage_DataType *arg_pname = glmsg.add_args();
13671    arg_pname->set_isarray(false);
13672    arg_pname->set_type(GLMessage::DataType::ENUM);
13673    arg_pname->add_intvalue((int)pname);
13674
13675    // copy argument params
13676    GLMessage_DataType *arg_params = glmsg.add_args();
13677    arg_params->set_isarray(false);
13678    arg_params->set_type(GLMessage::DataType::INT64);
13679    arg_params->add_int64value((uintptr_t)params);
13680
13681    // call function
13682    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13683    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13684    glContext->hooks->gl.glGetQueryObjecti64vEXT(id, pname, params);
13685    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13686    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13687
13688    void *pointerArgs[] = {
13689        (void *) params,
13690    };
13691
13692    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13693                              threadStartTime, threadEndTime,
13694                              &glmsg, pointerArgs);
13695    glContext->traceGLMessage(&glmsg);
13696}
13697
13698void GLTrace_glGetQueryObjectui64vEXT(GLuint id, GLenum pname, GLuint64 * params) {
13699    GLMessage glmsg;
13700    GLTraceContext *glContext = getGLTraceContext();
13701
13702    glmsg.set_function(GLMessage::glGetQueryObjectui64vEXT);
13703
13704    // copy argument id
13705    GLMessage_DataType *arg_id = glmsg.add_args();
13706    arg_id->set_isarray(false);
13707    arg_id->set_type(GLMessage::DataType::INT);
13708    arg_id->add_intvalue(id);
13709
13710    // copy argument pname
13711    GLMessage_DataType *arg_pname = glmsg.add_args();
13712    arg_pname->set_isarray(false);
13713    arg_pname->set_type(GLMessage::DataType::ENUM);
13714    arg_pname->add_intvalue((int)pname);
13715
13716    // copy argument params
13717    GLMessage_DataType *arg_params = glmsg.add_args();
13718    arg_params->set_isarray(false);
13719    arg_params->set_type(GLMessage::DataType::INT64);
13720    arg_params->add_int64value((uintptr_t)params);
13721
13722    // call function
13723    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13724    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13725    glContext->hooks->gl.glGetQueryObjectui64vEXT(id, pname, params);
13726    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13727    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13728
13729    void *pointerArgs[] = {
13730        (void *) params,
13731    };
13732
13733    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13734                              threadStartTime, threadEndTime,
13735                              &glmsg, pointerArgs);
13736    glContext->traceGLMessage(&glmsg);
13737}
13738
13739void GLTrace_glDrawBuffersEXT(GLsizei n, const GLenum * bufs) {
13740    GLMessage glmsg;
13741    GLTraceContext *glContext = getGLTraceContext();
13742
13743    glmsg.set_function(GLMessage::glDrawBuffersEXT);
13744
13745    // copy argument n
13746    GLMessage_DataType *arg_n = glmsg.add_args();
13747    arg_n->set_isarray(false);
13748    arg_n->set_type(GLMessage::DataType::INT);
13749    arg_n->add_intvalue(n);
13750
13751    // copy argument bufs
13752    GLMessage_DataType *arg_bufs = glmsg.add_args();
13753    arg_bufs->set_isarray(false);
13754    arg_bufs->set_type(GLMessage::DataType::INT64);
13755    arg_bufs->add_int64value((uintptr_t)bufs);
13756
13757    // call function
13758    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13759    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13760    glContext->hooks->gl.glDrawBuffersEXT(n, bufs);
13761    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13762    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13763
13764    void *pointerArgs[] = {
13765        (void *) bufs,
13766    };
13767
13768    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13769                              threadStartTime, threadEndTime,
13770                              &glmsg, pointerArgs);
13771    glContext->traceGLMessage(&glmsg);
13772}
13773
13774void GLTrace_glDrawArraysInstancedEXT(GLenum mode, GLint start, GLsizei count, GLsizei primcount) {
13775    GLMessage glmsg;
13776    GLTraceContext *glContext = getGLTraceContext();
13777
13778    glmsg.set_function(GLMessage::glDrawArraysInstancedEXT);
13779
13780    // copy argument mode
13781    GLMessage_DataType *arg_mode = glmsg.add_args();
13782    arg_mode->set_isarray(false);
13783    arg_mode->set_type(GLMessage::DataType::ENUM);
13784    arg_mode->add_intvalue((int)mode);
13785
13786    // copy argument start
13787    GLMessage_DataType *arg_start = glmsg.add_args();
13788    arg_start->set_isarray(false);
13789    arg_start->set_type(GLMessage::DataType::INT);
13790    arg_start->add_intvalue(start);
13791
13792    // copy argument count
13793    GLMessage_DataType *arg_count = glmsg.add_args();
13794    arg_count->set_isarray(false);
13795    arg_count->set_type(GLMessage::DataType::INT);
13796    arg_count->add_intvalue(count);
13797
13798    // copy argument primcount
13799    GLMessage_DataType *arg_primcount = glmsg.add_args();
13800    arg_primcount->set_isarray(false);
13801    arg_primcount->set_type(GLMessage::DataType::INT);
13802    arg_primcount->add_intvalue(primcount);
13803
13804    // call function
13805    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13806    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13807    glContext->hooks->gl.glDrawArraysInstancedEXT(mode, start, count, primcount);
13808    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13809    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13810
13811    void *pointerArgs[] = {
13812    };
13813
13814    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13815                              threadStartTime, threadEndTime,
13816                              &glmsg, pointerArgs);
13817    glContext->traceGLMessage(&glmsg);
13818}
13819
13820void GLTrace_glDrawElementsInstancedEXT(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei primcount) {
13821    GLMessage glmsg;
13822    GLTraceContext *glContext = getGLTraceContext();
13823
13824    glmsg.set_function(GLMessage::glDrawElementsInstancedEXT);
13825
13826    // copy argument mode
13827    GLMessage_DataType *arg_mode = glmsg.add_args();
13828    arg_mode->set_isarray(false);
13829    arg_mode->set_type(GLMessage::DataType::ENUM);
13830    arg_mode->add_intvalue((int)mode);
13831
13832    // copy argument count
13833    GLMessage_DataType *arg_count = glmsg.add_args();
13834    arg_count->set_isarray(false);
13835    arg_count->set_type(GLMessage::DataType::INT);
13836    arg_count->add_intvalue(count);
13837
13838    // copy argument type
13839    GLMessage_DataType *arg_type = glmsg.add_args();
13840    arg_type->set_isarray(false);
13841    arg_type->set_type(GLMessage::DataType::ENUM);
13842    arg_type->add_intvalue((int)type);
13843
13844    // copy argument indices
13845    GLMessage_DataType *arg_indices = glmsg.add_args();
13846    arg_indices->set_isarray(false);
13847    arg_indices->set_type(GLMessage::DataType::INT64);
13848    arg_indices->add_int64value((uintptr_t)indices);
13849
13850    // copy argument primcount
13851    GLMessage_DataType *arg_primcount = glmsg.add_args();
13852    arg_primcount->set_isarray(false);
13853    arg_primcount->set_type(GLMessage::DataType::INT);
13854    arg_primcount->add_intvalue(primcount);
13855
13856    // call function
13857    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13858    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13859    glContext->hooks->gl.glDrawElementsInstancedEXT(mode, count, type, indices, primcount);
13860    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13861    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13862
13863    void *pointerArgs[] = {
13864        (void *) indices,
13865    };
13866
13867    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13868                              threadStartTime, threadEndTime,
13869                              &glmsg, pointerArgs);
13870    glContext->traceGLMessage(&glmsg);
13871}
13872
13873void GLTrace_glVertexAttribDivisorEXT(GLuint index, GLuint divisor) {
13874    GLMessage glmsg;
13875    GLTraceContext *glContext = getGLTraceContext();
13876
13877    glmsg.set_function(GLMessage::glVertexAttribDivisorEXT);
13878
13879    // copy argument index
13880    GLMessage_DataType *arg_index = glmsg.add_args();
13881    arg_index->set_isarray(false);
13882    arg_index->set_type(GLMessage::DataType::INT);
13883    arg_index->add_intvalue(index);
13884
13885    // copy argument divisor
13886    GLMessage_DataType *arg_divisor = glmsg.add_args();
13887    arg_divisor->set_isarray(false);
13888    arg_divisor->set_type(GLMessage::DataType::INT);
13889    arg_divisor->add_intvalue(divisor);
13890
13891    // call function
13892    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13893    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13894    glContext->hooks->gl.glVertexAttribDivisorEXT(index, divisor);
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_glMapBufferRangeEXT(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) {
13908    GLMessage glmsg;
13909    GLTraceContext *glContext = getGLTraceContext();
13910
13911    glmsg.set_function(GLMessage::glMapBufferRangeEXT);
13912
13913    // copy argument target
13914    GLMessage_DataType *arg_target = glmsg.add_args();
13915    arg_target->set_isarray(false);
13916    arg_target->set_type(GLMessage::DataType::ENUM);
13917    arg_target->add_intvalue((int)target);
13918
13919    // copy argument offset
13920    GLMessage_DataType *arg_offset = glmsg.add_args();
13921    arg_offset->set_isarray(false);
13922    arg_offset->set_type(GLMessage::DataType::INT);
13923    arg_offset->add_intvalue(offset);
13924
13925    // copy argument length
13926    GLMessage_DataType *arg_length = glmsg.add_args();
13927    arg_length->set_isarray(false);
13928    arg_length->set_type(GLMessage::DataType::INT);
13929    arg_length->add_intvalue(length);
13930
13931    // copy argument access
13932    GLMessage_DataType *arg_access = glmsg.add_args();
13933    arg_access->set_isarray(false);
13934    arg_access->set_type(GLMessage::DataType::INT);
13935    arg_access->add_intvalue(access);
13936
13937    // call function
13938    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13939    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13940    void * retValue = glContext->hooks->gl.glMapBufferRangeEXT(target, offset, length, access);
13941    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13942    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13943
13944    // set return value
13945    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
13946    rt->set_isarray(false);
13947    rt->set_type(GLMessage::DataType::INT64);
13948    rt->add_int64value((uintptr_t)retValue);
13949
13950    void *pointerArgs[] = {
13951        (void *) retValue,
13952    };
13953
13954    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13955                              threadStartTime, threadEndTime,
13956                              &glmsg, pointerArgs);
13957    glContext->traceGLMessage(&glmsg);
13958
13959    return retValue;
13960}
13961
13962void GLTrace_glFlushMappedBufferRangeEXT(GLenum target, GLintptr offset, GLsizeiptr length) {
13963    GLMessage glmsg;
13964    GLTraceContext *glContext = getGLTraceContext();
13965
13966    glmsg.set_function(GLMessage::glFlushMappedBufferRangeEXT);
13967
13968    // copy argument target
13969    GLMessage_DataType *arg_target = glmsg.add_args();
13970    arg_target->set_isarray(false);
13971    arg_target->set_type(GLMessage::DataType::ENUM);
13972    arg_target->add_intvalue((int)target);
13973
13974    // copy argument offset
13975    GLMessage_DataType *arg_offset = glmsg.add_args();
13976    arg_offset->set_isarray(false);
13977    arg_offset->set_type(GLMessage::DataType::INT);
13978    arg_offset->add_intvalue(offset);
13979
13980    // copy argument length
13981    GLMessage_DataType *arg_length = glmsg.add_args();
13982    arg_length->set_isarray(false);
13983    arg_length->set_type(GLMessage::DataType::INT);
13984    arg_length->add_intvalue(length);
13985
13986    // call function
13987    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13988    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13989    glContext->hooks->gl.glFlushMappedBufferRangeEXT(target, offset, length);
13990    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13991    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13992
13993    void *pointerArgs[] = {
13994    };
13995
13996    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13997                              threadStartTime, threadEndTime,
13998                              &glmsg, pointerArgs);
13999    glContext->traceGLMessage(&glmsg);
14000}
14001
14002void GLTrace_glMultiDrawArraysEXT(GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount) {
14003    GLMessage glmsg;
14004    GLTraceContext *glContext = getGLTraceContext();
14005
14006    glmsg.set_function(GLMessage::glMultiDrawArraysEXT);
14007
14008    // copy argument mode
14009    GLMessage_DataType *arg_mode = glmsg.add_args();
14010    arg_mode->set_isarray(false);
14011    arg_mode->set_type(GLMessage::DataType::ENUM);
14012    arg_mode->add_intvalue((int)mode);
14013
14014    // copy argument first
14015    GLMessage_DataType *arg_first = glmsg.add_args();
14016    arg_first->set_isarray(false);
14017    arg_first->set_type(GLMessage::DataType::INT64);
14018    arg_first->add_int64value((uintptr_t)first);
14019
14020    // copy argument count
14021    GLMessage_DataType *arg_count = glmsg.add_args();
14022    arg_count->set_isarray(false);
14023    arg_count->set_type(GLMessage::DataType::INT64);
14024    arg_count->add_int64value((uintptr_t)count);
14025
14026    // copy argument primcount
14027    GLMessage_DataType *arg_primcount = glmsg.add_args();
14028    arg_primcount->set_isarray(false);
14029    arg_primcount->set_type(GLMessage::DataType::INT);
14030    arg_primcount->add_intvalue(primcount);
14031
14032    // call function
14033    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14034    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14035    glContext->hooks->gl.glMultiDrawArraysEXT(mode, first, count, primcount);
14036    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14037    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14038
14039    void *pointerArgs[] = {
14040        (void *) first,
14041        (void *) count,
14042    };
14043
14044    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14045                              threadStartTime, threadEndTime,
14046                              &glmsg, pointerArgs);
14047    glContext->traceGLMessage(&glmsg);
14048}
14049
14050void GLTrace_glMultiDrawElementsEXT(GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei primcount) {
14051    GLMessage glmsg;
14052    GLTraceContext *glContext = getGLTraceContext();
14053
14054    glmsg.set_function(GLMessage::glMultiDrawElementsEXT);
14055
14056    // copy argument mode
14057    GLMessage_DataType *arg_mode = glmsg.add_args();
14058    arg_mode->set_isarray(false);
14059    arg_mode->set_type(GLMessage::DataType::ENUM);
14060    arg_mode->add_intvalue((int)mode);
14061
14062    // copy argument count
14063    GLMessage_DataType *arg_count = glmsg.add_args();
14064    arg_count->set_isarray(false);
14065    arg_count->set_type(GLMessage::DataType::INT64);
14066    arg_count->add_int64value((uintptr_t)count);
14067
14068    // copy argument type
14069    GLMessage_DataType *arg_type = glmsg.add_args();
14070    arg_type->set_isarray(false);
14071    arg_type->set_type(GLMessage::DataType::ENUM);
14072    arg_type->add_intvalue((int)type);
14073
14074    // copy argument indices
14075    GLMessage_DataType *arg_indices = glmsg.add_args();
14076    arg_indices->set_isarray(false);
14077    arg_indices->set_type(GLMessage::DataType::INT64);
14078    arg_indices->add_int64value((uintptr_t)indices);
14079
14080    // copy argument primcount
14081    GLMessage_DataType *arg_primcount = glmsg.add_args();
14082    arg_primcount->set_isarray(false);
14083    arg_primcount->set_type(GLMessage::DataType::INT);
14084    arg_primcount->add_intvalue(primcount);
14085
14086    // call function
14087    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14088    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14089    glContext->hooks->gl.glMultiDrawElementsEXT(mode, count, type, indices, primcount);
14090    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14091    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14092
14093    void *pointerArgs[] = {
14094        (void *) count,
14095        (void *) indices,
14096    };
14097
14098    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14099                              threadStartTime, threadEndTime,
14100                              &glmsg, pointerArgs);
14101    glContext->traceGLMessage(&glmsg);
14102}
14103
14104void GLTrace_glRenderbufferStorageMultisampleEXT(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
14105    GLMessage glmsg;
14106    GLTraceContext *glContext = getGLTraceContext();
14107
14108    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleEXT);
14109
14110    // copy argument target
14111    GLMessage_DataType *arg_target = glmsg.add_args();
14112    arg_target->set_isarray(false);
14113    arg_target->set_type(GLMessage::DataType::ENUM);
14114    arg_target->add_intvalue((int)target);
14115
14116    // copy argument samples
14117    GLMessage_DataType *arg_samples = glmsg.add_args();
14118    arg_samples->set_isarray(false);
14119    arg_samples->set_type(GLMessage::DataType::INT);
14120    arg_samples->add_intvalue(samples);
14121
14122    // copy argument internalformat
14123    GLMessage_DataType *arg_internalformat = glmsg.add_args();
14124    arg_internalformat->set_isarray(false);
14125    arg_internalformat->set_type(GLMessage::DataType::ENUM);
14126    arg_internalformat->add_intvalue((int)internalformat);
14127
14128    // copy argument width
14129    GLMessage_DataType *arg_width = glmsg.add_args();
14130    arg_width->set_isarray(false);
14131    arg_width->set_type(GLMessage::DataType::INT);
14132    arg_width->add_intvalue(width);
14133
14134    // copy argument height
14135    GLMessage_DataType *arg_height = glmsg.add_args();
14136    arg_height->set_isarray(false);
14137    arg_height->set_type(GLMessage::DataType::INT);
14138    arg_height->add_intvalue(height);
14139
14140    // call function
14141    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14142    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14143    glContext->hooks->gl.glRenderbufferStorageMultisampleEXT(target, samples, internalformat, width, height);
14144    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14145    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14146
14147    void *pointerArgs[] = {
14148    };
14149
14150    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14151                              threadStartTime, threadEndTime,
14152                              &glmsg, pointerArgs);
14153    glContext->traceGLMessage(&glmsg);
14154}
14155
14156void GLTrace_glFramebufferTexture2DMultisampleEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples) {
14157    GLMessage glmsg;
14158    GLTraceContext *glContext = getGLTraceContext();
14159
14160    glmsg.set_function(GLMessage::glFramebufferTexture2DMultisampleEXT);
14161
14162    // copy argument target
14163    GLMessage_DataType *arg_target = glmsg.add_args();
14164    arg_target->set_isarray(false);
14165    arg_target->set_type(GLMessage::DataType::ENUM);
14166    arg_target->add_intvalue((int)target);
14167
14168    // copy argument attachment
14169    GLMessage_DataType *arg_attachment = glmsg.add_args();
14170    arg_attachment->set_isarray(false);
14171    arg_attachment->set_type(GLMessage::DataType::ENUM);
14172    arg_attachment->add_intvalue((int)attachment);
14173
14174    // copy argument textarget
14175    GLMessage_DataType *arg_textarget = glmsg.add_args();
14176    arg_textarget->set_isarray(false);
14177    arg_textarget->set_type(GLMessage::DataType::ENUM);
14178    arg_textarget->add_intvalue((int)textarget);
14179
14180    // copy argument texture
14181    GLMessage_DataType *arg_texture = glmsg.add_args();
14182    arg_texture->set_isarray(false);
14183    arg_texture->set_type(GLMessage::DataType::INT);
14184    arg_texture->add_intvalue(texture);
14185
14186    // copy argument level
14187    GLMessage_DataType *arg_level = glmsg.add_args();
14188    arg_level->set_isarray(false);
14189    arg_level->set_type(GLMessage::DataType::INT);
14190    arg_level->add_intvalue(level);
14191
14192    // copy argument samples
14193    GLMessage_DataType *arg_samples = glmsg.add_args();
14194    arg_samples->set_isarray(false);
14195    arg_samples->set_type(GLMessage::DataType::INT);
14196    arg_samples->add_intvalue(samples);
14197
14198    // call function
14199    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14200    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14201    glContext->hooks->gl.glFramebufferTexture2DMultisampleEXT(target, attachment, textarget, texture, level, samples);
14202    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14203    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14204
14205    void *pointerArgs[] = {
14206    };
14207
14208    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14209                              threadStartTime, threadEndTime,
14210                              &glmsg, pointerArgs);
14211    glContext->traceGLMessage(&glmsg);
14212}
14213
14214void GLTrace_glReadBufferIndexedEXT(GLenum src, GLint index) {
14215    GLMessage glmsg;
14216    GLTraceContext *glContext = getGLTraceContext();
14217
14218    glmsg.set_function(GLMessage::glReadBufferIndexedEXT);
14219
14220    // copy argument src
14221    GLMessage_DataType *arg_src = glmsg.add_args();
14222    arg_src->set_isarray(false);
14223    arg_src->set_type(GLMessage::DataType::ENUM);
14224    arg_src->add_intvalue((int)src);
14225
14226    // copy argument index
14227    GLMessage_DataType *arg_index = glmsg.add_args();
14228    arg_index->set_isarray(false);
14229    arg_index->set_type(GLMessage::DataType::INT);
14230    arg_index->add_intvalue(index);
14231
14232    // call function
14233    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14234    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14235    glContext->hooks->gl.glReadBufferIndexedEXT(src, index);
14236    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14237    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14238
14239    void *pointerArgs[] = {
14240    };
14241
14242    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14243                              threadStartTime, threadEndTime,
14244                              &glmsg, pointerArgs);
14245    glContext->traceGLMessage(&glmsg);
14246}
14247
14248void GLTrace_glDrawBuffersIndexedEXT(GLint n, const GLenum * location, const GLint * indices) {
14249    GLMessage glmsg;
14250    GLTraceContext *glContext = getGLTraceContext();
14251
14252    glmsg.set_function(GLMessage::glDrawBuffersIndexedEXT);
14253
14254    // copy argument n
14255    GLMessage_DataType *arg_n = glmsg.add_args();
14256    arg_n->set_isarray(false);
14257    arg_n->set_type(GLMessage::DataType::INT);
14258    arg_n->add_intvalue(n);
14259
14260    // copy argument location
14261    GLMessage_DataType *arg_location = glmsg.add_args();
14262    arg_location->set_isarray(false);
14263    arg_location->set_type(GLMessage::DataType::INT64);
14264    arg_location->add_int64value((uintptr_t)location);
14265
14266    // copy argument indices
14267    GLMessage_DataType *arg_indices = glmsg.add_args();
14268    arg_indices->set_isarray(false);
14269    arg_indices->set_type(GLMessage::DataType::INT64);
14270    arg_indices->add_int64value((uintptr_t)indices);
14271
14272    // call function
14273    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14274    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14275    glContext->hooks->gl.glDrawBuffersIndexedEXT(n, location, indices);
14276    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14277    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14278
14279    void *pointerArgs[] = {
14280        (void *) location,
14281        (void *) indices,
14282    };
14283
14284    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14285                              threadStartTime, threadEndTime,
14286                              &glmsg, pointerArgs);
14287    glContext->traceGLMessage(&glmsg);
14288}
14289
14290void GLTrace_glGetIntegeri_vEXT(GLenum target, GLuint index, GLint * data) {
14291    GLMessage glmsg;
14292    GLTraceContext *glContext = getGLTraceContext();
14293
14294    glmsg.set_function(GLMessage::glGetIntegeri_vEXT);
14295
14296    // copy argument target
14297    GLMessage_DataType *arg_target = glmsg.add_args();
14298    arg_target->set_isarray(false);
14299    arg_target->set_type(GLMessage::DataType::ENUM);
14300    arg_target->add_intvalue((int)target);
14301
14302    // copy argument index
14303    GLMessage_DataType *arg_index = glmsg.add_args();
14304    arg_index->set_isarray(false);
14305    arg_index->set_type(GLMessage::DataType::INT);
14306    arg_index->add_intvalue(index);
14307
14308    // copy argument data
14309    GLMessage_DataType *arg_data = glmsg.add_args();
14310    arg_data->set_isarray(false);
14311    arg_data->set_type(GLMessage::DataType::INT64);
14312    arg_data->add_int64value((uintptr_t)data);
14313
14314    // call function
14315    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14316    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14317    glContext->hooks->gl.glGetIntegeri_vEXT(target, index, data);
14318    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14319    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14320
14321    void *pointerArgs[] = {
14322        (void *) data,
14323    };
14324
14325    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14326                              threadStartTime, threadEndTime,
14327                              &glmsg, pointerArgs);
14328    glContext->traceGLMessage(&glmsg);
14329}
14330
14331GLenum GLTrace_glGetGraphicsResetStatusEXT(void) {
14332    GLMessage glmsg;
14333    GLTraceContext *glContext = getGLTraceContext();
14334
14335    glmsg.set_function(GLMessage::glGetGraphicsResetStatusEXT);
14336
14337    // call function
14338    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14339    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14340    GLenum retValue = glContext->hooks->gl.glGetGraphicsResetStatusEXT();
14341    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14342    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14343
14344    // set return value
14345    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
14346    rt->set_isarray(false);
14347    rt->set_type(GLMessage::DataType::ENUM);
14348    rt->add_intvalue((int)retValue);
14349
14350    void *pointerArgs[] = {
14351    };
14352
14353    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14354                              threadStartTime, threadEndTime,
14355                              &glmsg, pointerArgs);
14356    glContext->traceGLMessage(&glmsg);
14357
14358    return retValue;
14359}
14360
14361void GLTrace_glReadnPixelsEXT(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data) {
14362    GLMessage glmsg;
14363    GLTraceContext *glContext = getGLTraceContext();
14364
14365    glmsg.set_function(GLMessage::glReadnPixelsEXT);
14366
14367    // copy argument x
14368    GLMessage_DataType *arg_x = glmsg.add_args();
14369    arg_x->set_isarray(false);
14370    arg_x->set_type(GLMessage::DataType::INT);
14371    arg_x->add_intvalue(x);
14372
14373    // copy argument y
14374    GLMessage_DataType *arg_y = glmsg.add_args();
14375    arg_y->set_isarray(false);
14376    arg_y->set_type(GLMessage::DataType::INT);
14377    arg_y->add_intvalue(y);
14378
14379    // copy argument width
14380    GLMessage_DataType *arg_width = glmsg.add_args();
14381    arg_width->set_isarray(false);
14382    arg_width->set_type(GLMessage::DataType::INT);
14383    arg_width->add_intvalue(width);
14384
14385    // copy argument height
14386    GLMessage_DataType *arg_height = glmsg.add_args();
14387    arg_height->set_isarray(false);
14388    arg_height->set_type(GLMessage::DataType::INT);
14389    arg_height->add_intvalue(height);
14390
14391    // copy argument format
14392    GLMessage_DataType *arg_format = glmsg.add_args();
14393    arg_format->set_isarray(false);
14394    arg_format->set_type(GLMessage::DataType::ENUM);
14395    arg_format->add_intvalue((int)format);
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 bufSize
14404    GLMessage_DataType *arg_bufSize = glmsg.add_args();
14405    arg_bufSize->set_isarray(false);
14406    arg_bufSize->set_type(GLMessage::DataType::INT);
14407    arg_bufSize->add_intvalue(bufSize);
14408
14409    // copy argument data
14410    GLMessage_DataType *arg_data = glmsg.add_args();
14411    arg_data->set_isarray(false);
14412    arg_data->set_type(GLMessage::DataType::INT64);
14413    arg_data->add_int64value((uintptr_t)data);
14414
14415    // call function
14416    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14417    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14418    glContext->hooks->gl.glReadnPixelsEXT(x, y, width, height, format, type, bufSize, data);
14419    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14420    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14421
14422    void *pointerArgs[] = {
14423        (void *) data,
14424    };
14425
14426    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14427                              threadStartTime, threadEndTime,
14428                              &glmsg, pointerArgs);
14429    glContext->traceGLMessage(&glmsg);
14430}
14431
14432void GLTrace_glGetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSize, GLfloat * params) {
14433    GLMessage glmsg;
14434    GLTraceContext *glContext = getGLTraceContext();
14435
14436    glmsg.set_function(GLMessage::glGetnUniformfvEXT);
14437
14438    // copy argument program
14439    GLMessage_DataType *arg_program = glmsg.add_args();
14440    arg_program->set_isarray(false);
14441    arg_program->set_type(GLMessage::DataType::INT);
14442    arg_program->add_intvalue(program);
14443
14444    // copy argument location
14445    GLMessage_DataType *arg_location = glmsg.add_args();
14446    arg_location->set_isarray(false);
14447    arg_location->set_type(GLMessage::DataType::INT);
14448    arg_location->add_intvalue(location);
14449
14450    // copy argument bufSize
14451    GLMessage_DataType *arg_bufSize = glmsg.add_args();
14452    arg_bufSize->set_isarray(false);
14453    arg_bufSize->set_type(GLMessage::DataType::INT);
14454    arg_bufSize->add_intvalue(bufSize);
14455
14456    // copy argument params
14457    GLMessage_DataType *arg_params = glmsg.add_args();
14458    arg_params->set_isarray(false);
14459    arg_params->set_type(GLMessage::DataType::INT64);
14460    arg_params->add_int64value((uintptr_t)params);
14461
14462    // call function
14463    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14464    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14465    glContext->hooks->gl.glGetnUniformfvEXT(program, location, bufSize, params);
14466    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14467    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14468
14469    void *pointerArgs[] = {
14470        (void *) params,
14471    };
14472
14473    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14474                              threadStartTime, threadEndTime,
14475                              &glmsg, pointerArgs);
14476    glContext->traceGLMessage(&glmsg);
14477}
14478
14479void GLTrace_glGetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint * params) {
14480    GLMessage glmsg;
14481    GLTraceContext *glContext = getGLTraceContext();
14482
14483    glmsg.set_function(GLMessage::glGetnUniformivEXT);
14484
14485    // copy argument program
14486    GLMessage_DataType *arg_program = glmsg.add_args();
14487    arg_program->set_isarray(false);
14488    arg_program->set_type(GLMessage::DataType::INT);
14489    arg_program->add_intvalue(program);
14490
14491    // copy argument location
14492    GLMessage_DataType *arg_location = glmsg.add_args();
14493    arg_location->set_isarray(false);
14494    arg_location->set_type(GLMessage::DataType::INT);
14495    arg_location->add_intvalue(location);
14496
14497    // copy argument bufSize
14498    GLMessage_DataType *arg_bufSize = glmsg.add_args();
14499    arg_bufSize->set_isarray(false);
14500    arg_bufSize->set_type(GLMessage::DataType::INT);
14501    arg_bufSize->add_intvalue(bufSize);
14502
14503    // copy argument params
14504    GLMessage_DataType *arg_params = glmsg.add_args();
14505    arg_params->set_isarray(false);
14506    arg_params->set_type(GLMessage::DataType::INT64);
14507    arg_params->add_int64value((uintptr_t)params);
14508
14509    // call function
14510    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14511    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14512    glContext->hooks->gl.glGetnUniformivEXT(program, location, bufSize, params);
14513    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14514    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14515
14516    void *pointerArgs[] = {
14517        (void *) params,
14518    };
14519
14520    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14521                              threadStartTime, threadEndTime,
14522                              &glmsg, pointerArgs);
14523    glContext->traceGLMessage(&glmsg);
14524}
14525
14526void GLTrace_glActiveShaderProgramEXT(GLuint pipeline, GLuint program) {
14527    GLMessage glmsg;
14528    GLTraceContext *glContext = getGLTraceContext();
14529
14530    glmsg.set_function(GLMessage::glActiveShaderProgramEXT);
14531
14532    // copy argument pipeline
14533    GLMessage_DataType *arg_pipeline = glmsg.add_args();
14534    arg_pipeline->set_isarray(false);
14535    arg_pipeline->set_type(GLMessage::DataType::INT);
14536    arg_pipeline->add_intvalue(pipeline);
14537
14538    // copy argument program
14539    GLMessage_DataType *arg_program = glmsg.add_args();
14540    arg_program->set_isarray(false);
14541    arg_program->set_type(GLMessage::DataType::INT);
14542    arg_program->add_intvalue(program);
14543
14544    // call function
14545    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14546    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14547    glContext->hooks->gl.glActiveShaderProgramEXT(pipeline, program);
14548    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14549    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14550
14551    void *pointerArgs[] = {
14552    };
14553
14554    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14555                              threadStartTime, threadEndTime,
14556                              &glmsg, pointerArgs);
14557    glContext->traceGLMessage(&glmsg);
14558}
14559
14560void GLTrace_glBindProgramPipelineEXT(GLuint pipeline) {
14561    GLMessage glmsg;
14562    GLTraceContext *glContext = getGLTraceContext();
14563
14564    glmsg.set_function(GLMessage::glBindProgramPipelineEXT);
14565
14566    // copy argument pipeline
14567    GLMessage_DataType *arg_pipeline = glmsg.add_args();
14568    arg_pipeline->set_isarray(false);
14569    arg_pipeline->set_type(GLMessage::DataType::INT);
14570    arg_pipeline->add_intvalue(pipeline);
14571
14572    // call function
14573    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14574    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14575    glContext->hooks->gl.glBindProgramPipelineEXT(pipeline);
14576    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14577    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14578
14579    void *pointerArgs[] = {
14580    };
14581
14582    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14583                              threadStartTime, threadEndTime,
14584                              &glmsg, pointerArgs);
14585    glContext->traceGLMessage(&glmsg);
14586}
14587
14588GLuint GLTrace_glCreateShaderProgramvEXT(GLenum type, GLsizei count, const GLchar ** strings) {
14589    GLMessage glmsg;
14590    GLTraceContext *glContext = getGLTraceContext();
14591
14592    glmsg.set_function(GLMessage::glCreateShaderProgramvEXT);
14593
14594    // copy argument type
14595    GLMessage_DataType *arg_type = glmsg.add_args();
14596    arg_type->set_isarray(false);
14597    arg_type->set_type(GLMessage::DataType::ENUM);
14598    arg_type->add_intvalue((int)type);
14599
14600    // copy argument count
14601    GLMessage_DataType *arg_count = glmsg.add_args();
14602    arg_count->set_isarray(false);
14603    arg_count->set_type(GLMessage::DataType::INT);
14604    arg_count->add_intvalue(count);
14605
14606    // copy argument strings
14607    GLMessage_DataType *arg_strings = glmsg.add_args();
14608    arg_strings->set_isarray(false);
14609    arg_strings->set_type(GLMessage::DataType::INT64);
14610    arg_strings->add_int64value((uintptr_t)strings);
14611
14612    // call function
14613    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14614    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14615    GLuint retValue = glContext->hooks->gl.glCreateShaderProgramvEXT(type, count, strings);
14616    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14617    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14618
14619    // set return value
14620    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
14621    rt->set_isarray(false);
14622    rt->set_type(GLMessage::DataType::INT);
14623    rt->add_intvalue(retValue);
14624
14625    void *pointerArgs[] = {
14626        (void *) strings,
14627    };
14628
14629    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14630                              threadStartTime, threadEndTime,
14631                              &glmsg, pointerArgs);
14632    glContext->traceGLMessage(&glmsg);
14633
14634    return retValue;
14635}
14636
14637void GLTrace_glDeleteProgramPipelinesEXT(GLsizei n, const GLuint * pipelines) {
14638    GLMessage glmsg;
14639    GLTraceContext *glContext = getGLTraceContext();
14640
14641    glmsg.set_function(GLMessage::glDeleteProgramPipelinesEXT);
14642
14643    // copy argument n
14644    GLMessage_DataType *arg_n = glmsg.add_args();
14645    arg_n->set_isarray(false);
14646    arg_n->set_type(GLMessage::DataType::INT);
14647    arg_n->add_intvalue(n);
14648
14649    // copy argument pipelines
14650    GLMessage_DataType *arg_pipelines = glmsg.add_args();
14651    arg_pipelines->set_isarray(false);
14652    arg_pipelines->set_type(GLMessage::DataType::INT64);
14653    arg_pipelines->add_int64value((uintptr_t)pipelines);
14654
14655    // call function
14656    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14657    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14658    glContext->hooks->gl.glDeleteProgramPipelinesEXT(n, pipelines);
14659    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14660    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14661
14662    void *pointerArgs[] = {
14663        (void *) pipelines,
14664    };
14665
14666    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14667                              threadStartTime, threadEndTime,
14668                              &glmsg, pointerArgs);
14669    glContext->traceGLMessage(&glmsg);
14670}
14671
14672void GLTrace_glGenProgramPipelinesEXT(GLsizei n, GLuint * pipelines) {
14673    GLMessage glmsg;
14674    GLTraceContext *glContext = getGLTraceContext();
14675
14676    glmsg.set_function(GLMessage::glGenProgramPipelinesEXT);
14677
14678    // copy argument n
14679    GLMessage_DataType *arg_n = glmsg.add_args();
14680    arg_n->set_isarray(false);
14681    arg_n->set_type(GLMessage::DataType::INT);
14682    arg_n->add_intvalue(n);
14683
14684    // copy argument pipelines
14685    GLMessage_DataType *arg_pipelines = glmsg.add_args();
14686    arg_pipelines->set_isarray(false);
14687    arg_pipelines->set_type(GLMessage::DataType::INT64);
14688    arg_pipelines->add_int64value((uintptr_t)pipelines);
14689
14690    // call function
14691    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14692    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14693    glContext->hooks->gl.glGenProgramPipelinesEXT(n, pipelines);
14694    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14695    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14696
14697    void *pointerArgs[] = {
14698        (void *) pipelines,
14699    };
14700
14701    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14702                              threadStartTime, threadEndTime,
14703                              &glmsg, pointerArgs);
14704    glContext->traceGLMessage(&glmsg);
14705}
14706
14707void GLTrace_glGetProgramPipelineInfoLogEXT(GLuint pipeline, GLsizei bufSize, GLsizei * length, GLchar * infoLog) {
14708    GLMessage glmsg;
14709    GLTraceContext *glContext = getGLTraceContext();
14710
14711    glmsg.set_function(GLMessage::glGetProgramPipelineInfoLogEXT);
14712
14713    // copy argument pipeline
14714    GLMessage_DataType *arg_pipeline = glmsg.add_args();
14715    arg_pipeline->set_isarray(false);
14716    arg_pipeline->set_type(GLMessage::DataType::INT);
14717    arg_pipeline->add_intvalue(pipeline);
14718
14719    // copy argument bufSize
14720    GLMessage_DataType *arg_bufSize = glmsg.add_args();
14721    arg_bufSize->set_isarray(false);
14722    arg_bufSize->set_type(GLMessage::DataType::INT);
14723    arg_bufSize->add_intvalue(bufSize);
14724
14725    // copy argument length
14726    GLMessage_DataType *arg_length = glmsg.add_args();
14727    arg_length->set_isarray(false);
14728    arg_length->set_type(GLMessage::DataType::INT64);
14729    arg_length->add_int64value((uintptr_t)length);
14730
14731    // copy argument infoLog
14732    GLMessage_DataType *arg_infoLog = glmsg.add_args();
14733    arg_infoLog->set_isarray(false);
14734    arg_infoLog->set_type(GLMessage::DataType::INT64);
14735    arg_infoLog->add_int64value((uintptr_t)infoLog);
14736
14737    // call function
14738    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14739    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14740    glContext->hooks->gl.glGetProgramPipelineInfoLogEXT(pipeline, bufSize, length, infoLog);
14741    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14742    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14743
14744    void *pointerArgs[] = {
14745        (void *) length,
14746        (void *) infoLog,
14747    };
14748
14749    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14750                              threadStartTime, threadEndTime,
14751                              &glmsg, pointerArgs);
14752    glContext->traceGLMessage(&glmsg);
14753}
14754
14755void GLTrace_glGetProgramPipelineivEXT(GLuint pipeline, GLenum pname, GLint * params) {
14756    GLMessage glmsg;
14757    GLTraceContext *glContext = getGLTraceContext();
14758
14759    glmsg.set_function(GLMessage::glGetProgramPipelineivEXT);
14760
14761    // copy argument pipeline
14762    GLMessage_DataType *arg_pipeline = glmsg.add_args();
14763    arg_pipeline->set_isarray(false);
14764    arg_pipeline->set_type(GLMessage::DataType::INT);
14765    arg_pipeline->add_intvalue(pipeline);
14766
14767    // copy argument pname
14768    GLMessage_DataType *arg_pname = glmsg.add_args();
14769    arg_pname->set_isarray(false);
14770    arg_pname->set_type(GLMessage::DataType::ENUM);
14771    arg_pname->add_intvalue((int)pname);
14772
14773    // copy argument params
14774    GLMessage_DataType *arg_params = glmsg.add_args();
14775    arg_params->set_isarray(false);
14776    arg_params->set_type(GLMessage::DataType::INT64);
14777    arg_params->add_int64value((uintptr_t)params);
14778
14779    // call function
14780    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14781    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14782    glContext->hooks->gl.glGetProgramPipelineivEXT(pipeline, pname, params);
14783    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14784    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14785
14786    void *pointerArgs[] = {
14787        (void *) params,
14788    };
14789
14790    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14791                              threadStartTime, threadEndTime,
14792                              &glmsg, pointerArgs);
14793    glContext->traceGLMessage(&glmsg);
14794}
14795
14796GLboolean GLTrace_glIsProgramPipelineEXT(GLuint pipeline) {
14797    GLMessage glmsg;
14798    GLTraceContext *glContext = getGLTraceContext();
14799
14800    glmsg.set_function(GLMessage::glIsProgramPipelineEXT);
14801
14802    // copy argument pipeline
14803    GLMessage_DataType *arg_pipeline = glmsg.add_args();
14804    arg_pipeline->set_isarray(false);
14805    arg_pipeline->set_type(GLMessage::DataType::INT);
14806    arg_pipeline->add_intvalue(pipeline);
14807
14808    // call function
14809    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14810    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14811    GLboolean retValue = glContext->hooks->gl.glIsProgramPipelineEXT(pipeline);
14812    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14813    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14814
14815    // set return value
14816    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
14817    rt->set_isarray(false);
14818    rt->set_type(GLMessage::DataType::BOOL);
14819    rt->add_boolvalue(retValue);
14820
14821    void *pointerArgs[] = {
14822    };
14823
14824    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14825                              threadStartTime, threadEndTime,
14826                              &glmsg, pointerArgs);
14827    glContext->traceGLMessage(&glmsg);
14828
14829    return retValue;
14830}
14831
14832void GLTrace_glProgramParameteriEXT(GLuint program, GLenum pname, GLint value) {
14833    GLMessage glmsg;
14834    GLTraceContext *glContext = getGLTraceContext();
14835
14836    glmsg.set_function(GLMessage::glProgramParameteriEXT);
14837
14838    // copy argument program
14839    GLMessage_DataType *arg_program = glmsg.add_args();
14840    arg_program->set_isarray(false);
14841    arg_program->set_type(GLMessage::DataType::INT);
14842    arg_program->add_intvalue(program);
14843
14844    // copy argument pname
14845    GLMessage_DataType *arg_pname = glmsg.add_args();
14846    arg_pname->set_isarray(false);
14847    arg_pname->set_type(GLMessage::DataType::ENUM);
14848    arg_pname->add_intvalue((int)pname);
14849
14850    // copy argument value
14851    GLMessage_DataType *arg_value = glmsg.add_args();
14852    arg_value->set_isarray(false);
14853    arg_value->set_type(GLMessage::DataType::INT);
14854    arg_value->add_intvalue(value);
14855
14856    // call function
14857    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14858    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14859    glContext->hooks->gl.glProgramParameteriEXT(program, pname, value);
14860    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14861    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14862
14863    void *pointerArgs[] = {
14864    };
14865
14866    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14867                              threadStartTime, threadEndTime,
14868                              &glmsg, pointerArgs);
14869    glContext->traceGLMessage(&glmsg);
14870}
14871
14872void GLTrace_glProgramUniform1fEXT(GLuint program, GLint location, GLfloat v0) {
14873    GLMessage glmsg;
14874    GLTraceContext *glContext = getGLTraceContext();
14875
14876    glmsg.set_function(GLMessage::glProgramUniform1fEXT);
14877
14878    // copy argument program
14879    GLMessage_DataType *arg_program = glmsg.add_args();
14880    arg_program->set_isarray(false);
14881    arg_program->set_type(GLMessage::DataType::INT);
14882    arg_program->add_intvalue(program);
14883
14884    // copy argument location
14885    GLMessage_DataType *arg_location = glmsg.add_args();
14886    arg_location->set_isarray(false);
14887    arg_location->set_type(GLMessage::DataType::INT);
14888    arg_location->add_intvalue(location);
14889
14890    // copy argument v0
14891    GLMessage_DataType *arg_v0 = glmsg.add_args();
14892    arg_v0->set_isarray(false);
14893    arg_v0->set_type(GLMessage::DataType::FLOAT);
14894    arg_v0->add_floatvalue(v0);
14895
14896    // call function
14897    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14898    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14899    glContext->hooks->gl.glProgramUniform1fEXT(program, location, v0);
14900    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14901    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14902
14903    void *pointerArgs[] = {
14904    };
14905
14906    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14907                              threadStartTime, threadEndTime,
14908                              &glmsg, pointerArgs);
14909    glContext->traceGLMessage(&glmsg);
14910}
14911
14912void GLTrace_glProgramUniform1fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat * value) {
14913    GLMessage glmsg;
14914    GLTraceContext *glContext = getGLTraceContext();
14915
14916    glmsg.set_function(GLMessage::glProgramUniform1fvEXT);
14917
14918    // copy argument program
14919    GLMessage_DataType *arg_program = glmsg.add_args();
14920    arg_program->set_isarray(false);
14921    arg_program->set_type(GLMessage::DataType::INT);
14922    arg_program->add_intvalue(program);
14923
14924    // copy argument location
14925    GLMessage_DataType *arg_location = glmsg.add_args();
14926    arg_location->set_isarray(false);
14927    arg_location->set_type(GLMessage::DataType::INT);
14928    arg_location->add_intvalue(location);
14929
14930    // copy argument count
14931    GLMessage_DataType *arg_count = glmsg.add_args();
14932    arg_count->set_isarray(false);
14933    arg_count->set_type(GLMessage::DataType::INT);
14934    arg_count->add_intvalue(count);
14935
14936    // copy argument value
14937    GLMessage_DataType *arg_value = glmsg.add_args();
14938    arg_value->set_isarray(false);
14939    arg_value->set_type(GLMessage::DataType::INT64);
14940    arg_value->add_int64value((uintptr_t)value);
14941
14942    // call function
14943    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14944    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14945    glContext->hooks->gl.glProgramUniform1fvEXT(program, location, count, value);
14946    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14947    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14948
14949    void *pointerArgs[] = {
14950        (void *) value,
14951    };
14952
14953    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14954                              threadStartTime, threadEndTime,
14955                              &glmsg, pointerArgs);
14956    glContext->traceGLMessage(&glmsg);
14957}
14958
14959void GLTrace_glProgramUniform1iEXT(GLuint program, GLint location, GLint v0) {
14960    GLMessage glmsg;
14961    GLTraceContext *glContext = getGLTraceContext();
14962
14963    glmsg.set_function(GLMessage::glProgramUniform1iEXT);
14964
14965    // copy argument program
14966    GLMessage_DataType *arg_program = glmsg.add_args();
14967    arg_program->set_isarray(false);
14968    arg_program->set_type(GLMessage::DataType::INT);
14969    arg_program->add_intvalue(program);
14970
14971    // copy argument location
14972    GLMessage_DataType *arg_location = glmsg.add_args();
14973    arg_location->set_isarray(false);
14974    arg_location->set_type(GLMessage::DataType::INT);
14975    arg_location->add_intvalue(location);
14976
14977    // copy argument v0
14978    GLMessage_DataType *arg_v0 = glmsg.add_args();
14979    arg_v0->set_isarray(false);
14980    arg_v0->set_type(GLMessage::DataType::INT);
14981    arg_v0->add_intvalue(v0);
14982
14983    // call function
14984    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14985    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14986    glContext->hooks->gl.glProgramUniform1iEXT(program, location, v0);
14987    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14988    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14989
14990    void *pointerArgs[] = {
14991    };
14992
14993    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14994                              threadStartTime, threadEndTime,
14995                              &glmsg, pointerArgs);
14996    glContext->traceGLMessage(&glmsg);
14997}
14998
14999void GLTrace_glProgramUniform1ivEXT(GLuint program, GLint location, GLsizei count, const GLint * value) {
15000    GLMessage glmsg;
15001    GLTraceContext *glContext = getGLTraceContext();
15002
15003    glmsg.set_function(GLMessage::glProgramUniform1ivEXT);
15004
15005    // copy argument program
15006    GLMessage_DataType *arg_program = glmsg.add_args();
15007    arg_program->set_isarray(false);
15008    arg_program->set_type(GLMessage::DataType::INT);
15009    arg_program->add_intvalue(program);
15010
15011    // copy argument location
15012    GLMessage_DataType *arg_location = glmsg.add_args();
15013    arg_location->set_isarray(false);
15014    arg_location->set_type(GLMessage::DataType::INT);
15015    arg_location->add_intvalue(location);
15016
15017    // copy argument count
15018    GLMessage_DataType *arg_count = glmsg.add_args();
15019    arg_count->set_isarray(false);
15020    arg_count->set_type(GLMessage::DataType::INT);
15021    arg_count->add_intvalue(count);
15022
15023    // copy argument value
15024    GLMessage_DataType *arg_value = glmsg.add_args();
15025    arg_value->set_isarray(false);
15026    arg_value->set_type(GLMessage::DataType::INT64);
15027    arg_value->add_int64value((uintptr_t)value);
15028
15029    // call function
15030    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15031    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15032    glContext->hooks->gl.glProgramUniform1ivEXT(program, location, count, value);
15033    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15034    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15035
15036    void *pointerArgs[] = {
15037        (void *) value,
15038    };
15039
15040    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15041                              threadStartTime, threadEndTime,
15042                              &glmsg, pointerArgs);
15043    glContext->traceGLMessage(&glmsg);
15044}
15045
15046void GLTrace_glProgramUniform2fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1) {
15047    GLMessage glmsg;
15048    GLTraceContext *glContext = getGLTraceContext();
15049
15050    glmsg.set_function(GLMessage::glProgramUniform2fEXT);
15051
15052    // copy argument program
15053    GLMessage_DataType *arg_program = glmsg.add_args();
15054    arg_program->set_isarray(false);
15055    arg_program->set_type(GLMessage::DataType::INT);
15056    arg_program->add_intvalue(program);
15057
15058    // copy argument location
15059    GLMessage_DataType *arg_location = glmsg.add_args();
15060    arg_location->set_isarray(false);
15061    arg_location->set_type(GLMessage::DataType::INT);
15062    arg_location->add_intvalue(location);
15063
15064    // copy argument v0
15065    GLMessage_DataType *arg_v0 = glmsg.add_args();
15066    arg_v0->set_isarray(false);
15067    arg_v0->set_type(GLMessage::DataType::FLOAT);
15068    arg_v0->add_floatvalue(v0);
15069
15070    // copy argument v1
15071    GLMessage_DataType *arg_v1 = glmsg.add_args();
15072    arg_v1->set_isarray(false);
15073    arg_v1->set_type(GLMessage::DataType::FLOAT);
15074    arg_v1->add_floatvalue(v1);
15075
15076    // call function
15077    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15078    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15079    glContext->hooks->gl.glProgramUniform2fEXT(program, location, v0, v1);
15080    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15081    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15082
15083    void *pointerArgs[] = {
15084    };
15085
15086    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15087                              threadStartTime, threadEndTime,
15088                              &glmsg, pointerArgs);
15089    glContext->traceGLMessage(&glmsg);
15090}
15091
15092void GLTrace_glProgramUniform2fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat * value) {
15093    GLMessage glmsg;
15094    GLTraceContext *glContext = getGLTraceContext();
15095
15096    glmsg.set_function(GLMessage::glProgramUniform2fvEXT);
15097
15098    // copy argument program
15099    GLMessage_DataType *arg_program = glmsg.add_args();
15100    arg_program->set_isarray(false);
15101    arg_program->set_type(GLMessage::DataType::INT);
15102    arg_program->add_intvalue(program);
15103
15104    // copy argument location
15105    GLMessage_DataType *arg_location = glmsg.add_args();
15106    arg_location->set_isarray(false);
15107    arg_location->set_type(GLMessage::DataType::INT);
15108    arg_location->add_intvalue(location);
15109
15110    // copy argument count
15111    GLMessage_DataType *arg_count = glmsg.add_args();
15112    arg_count->set_isarray(false);
15113    arg_count->set_type(GLMessage::DataType::INT);
15114    arg_count->add_intvalue(count);
15115
15116    // copy argument value
15117    GLMessage_DataType *arg_value = glmsg.add_args();
15118    arg_value->set_isarray(false);
15119    arg_value->set_type(GLMessage::DataType::INT64);
15120    arg_value->add_int64value((uintptr_t)value);
15121
15122    // call function
15123    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15124    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15125    glContext->hooks->gl.glProgramUniform2fvEXT(program, location, count, value);
15126    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15127    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15128
15129    void *pointerArgs[] = {
15130        (void *) value,
15131    };
15132
15133    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15134                              threadStartTime, threadEndTime,
15135                              &glmsg, pointerArgs);
15136    glContext->traceGLMessage(&glmsg);
15137}
15138
15139void GLTrace_glProgramUniform2iEXT(GLuint program, GLint location, GLint v0, GLint v1) {
15140    GLMessage glmsg;
15141    GLTraceContext *glContext = getGLTraceContext();
15142
15143    glmsg.set_function(GLMessage::glProgramUniform2iEXT);
15144
15145    // copy argument program
15146    GLMessage_DataType *arg_program = glmsg.add_args();
15147    arg_program->set_isarray(false);
15148    arg_program->set_type(GLMessage::DataType::INT);
15149    arg_program->add_intvalue(program);
15150
15151    // copy argument location
15152    GLMessage_DataType *arg_location = glmsg.add_args();
15153    arg_location->set_isarray(false);
15154    arg_location->set_type(GLMessage::DataType::INT);
15155    arg_location->add_intvalue(location);
15156
15157    // copy argument v0
15158    GLMessage_DataType *arg_v0 = glmsg.add_args();
15159    arg_v0->set_isarray(false);
15160    arg_v0->set_type(GLMessage::DataType::INT);
15161    arg_v0->add_intvalue(v0);
15162
15163    // copy argument v1
15164    GLMessage_DataType *arg_v1 = glmsg.add_args();
15165    arg_v1->set_isarray(false);
15166    arg_v1->set_type(GLMessage::DataType::INT);
15167    arg_v1->add_intvalue(v1);
15168
15169    // call function
15170    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15171    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15172    glContext->hooks->gl.glProgramUniform2iEXT(program, location, v0, v1);
15173    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15174    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15175
15176    void *pointerArgs[] = {
15177    };
15178
15179    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15180                              threadStartTime, threadEndTime,
15181                              &glmsg, pointerArgs);
15182    glContext->traceGLMessage(&glmsg);
15183}
15184
15185void GLTrace_glProgramUniform2ivEXT(GLuint program, GLint location, GLsizei count, const GLint * value) {
15186    GLMessage glmsg;
15187    GLTraceContext *glContext = getGLTraceContext();
15188
15189    glmsg.set_function(GLMessage::glProgramUniform2ivEXT);
15190
15191    // copy argument program
15192    GLMessage_DataType *arg_program = glmsg.add_args();
15193    arg_program->set_isarray(false);
15194    arg_program->set_type(GLMessage::DataType::INT);
15195    arg_program->add_intvalue(program);
15196
15197    // copy argument location
15198    GLMessage_DataType *arg_location = glmsg.add_args();
15199    arg_location->set_isarray(false);
15200    arg_location->set_type(GLMessage::DataType::INT);
15201    arg_location->add_intvalue(location);
15202
15203    // copy argument count
15204    GLMessage_DataType *arg_count = glmsg.add_args();
15205    arg_count->set_isarray(false);
15206    arg_count->set_type(GLMessage::DataType::INT);
15207    arg_count->add_intvalue(count);
15208
15209    // copy argument value
15210    GLMessage_DataType *arg_value = glmsg.add_args();
15211    arg_value->set_isarray(false);
15212    arg_value->set_type(GLMessage::DataType::INT64);
15213    arg_value->add_int64value((uintptr_t)value);
15214
15215    // call function
15216    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15217    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15218    glContext->hooks->gl.glProgramUniform2ivEXT(program, location, count, value);
15219    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15220    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15221
15222    void *pointerArgs[] = {
15223        (void *) value,
15224    };
15225
15226    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15227                              threadStartTime, threadEndTime,
15228                              &glmsg, pointerArgs);
15229    glContext->traceGLMessage(&glmsg);
15230}
15231
15232void GLTrace_glProgramUniform3fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) {
15233    GLMessage glmsg;
15234    GLTraceContext *glContext = getGLTraceContext();
15235
15236    glmsg.set_function(GLMessage::glProgramUniform3fEXT);
15237
15238    // copy argument program
15239    GLMessage_DataType *arg_program = glmsg.add_args();
15240    arg_program->set_isarray(false);
15241    arg_program->set_type(GLMessage::DataType::INT);
15242    arg_program->add_intvalue(program);
15243
15244    // copy argument location
15245    GLMessage_DataType *arg_location = glmsg.add_args();
15246    arg_location->set_isarray(false);
15247    arg_location->set_type(GLMessage::DataType::INT);
15248    arg_location->add_intvalue(location);
15249
15250    // copy argument v0
15251    GLMessage_DataType *arg_v0 = glmsg.add_args();
15252    arg_v0->set_isarray(false);
15253    arg_v0->set_type(GLMessage::DataType::FLOAT);
15254    arg_v0->add_floatvalue(v0);
15255
15256    // copy argument v1
15257    GLMessage_DataType *arg_v1 = glmsg.add_args();
15258    arg_v1->set_isarray(false);
15259    arg_v1->set_type(GLMessage::DataType::FLOAT);
15260    arg_v1->add_floatvalue(v1);
15261
15262    // copy argument v2
15263    GLMessage_DataType *arg_v2 = glmsg.add_args();
15264    arg_v2->set_isarray(false);
15265    arg_v2->set_type(GLMessage::DataType::FLOAT);
15266    arg_v2->add_floatvalue(v2);
15267
15268    // call function
15269    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15270    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15271    glContext->hooks->gl.glProgramUniform3fEXT(program, location, v0, v1, v2);
15272    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15273    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15274
15275    void *pointerArgs[] = {
15276    };
15277
15278    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15279                              threadStartTime, threadEndTime,
15280                              &glmsg, pointerArgs);
15281    glContext->traceGLMessage(&glmsg);
15282}
15283
15284void GLTrace_glProgramUniform3fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat * value) {
15285    GLMessage glmsg;
15286    GLTraceContext *glContext = getGLTraceContext();
15287
15288    glmsg.set_function(GLMessage::glProgramUniform3fvEXT);
15289
15290    // copy argument program
15291    GLMessage_DataType *arg_program = glmsg.add_args();
15292    arg_program->set_isarray(false);
15293    arg_program->set_type(GLMessage::DataType::INT);
15294    arg_program->add_intvalue(program);
15295
15296    // copy argument location
15297    GLMessage_DataType *arg_location = glmsg.add_args();
15298    arg_location->set_isarray(false);
15299    arg_location->set_type(GLMessage::DataType::INT);
15300    arg_location->add_intvalue(location);
15301
15302    // copy argument count
15303    GLMessage_DataType *arg_count = glmsg.add_args();
15304    arg_count->set_isarray(false);
15305    arg_count->set_type(GLMessage::DataType::INT);
15306    arg_count->add_intvalue(count);
15307
15308    // copy argument value
15309    GLMessage_DataType *arg_value = glmsg.add_args();
15310    arg_value->set_isarray(false);
15311    arg_value->set_type(GLMessage::DataType::INT64);
15312    arg_value->add_int64value((uintptr_t)value);
15313
15314    // call function
15315    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15316    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15317    glContext->hooks->gl.glProgramUniform3fvEXT(program, location, count, value);
15318    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15319    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15320
15321    void *pointerArgs[] = {
15322        (void *) value,
15323    };
15324
15325    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15326                              threadStartTime, threadEndTime,
15327                              &glmsg, pointerArgs);
15328    glContext->traceGLMessage(&glmsg);
15329}
15330
15331void GLTrace_glProgramUniform3iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) {
15332    GLMessage glmsg;
15333    GLTraceContext *glContext = getGLTraceContext();
15334
15335    glmsg.set_function(GLMessage::glProgramUniform3iEXT);
15336
15337    // copy argument program
15338    GLMessage_DataType *arg_program = glmsg.add_args();
15339    arg_program->set_isarray(false);
15340    arg_program->set_type(GLMessage::DataType::INT);
15341    arg_program->add_intvalue(program);
15342
15343    // copy argument location
15344    GLMessage_DataType *arg_location = glmsg.add_args();
15345    arg_location->set_isarray(false);
15346    arg_location->set_type(GLMessage::DataType::INT);
15347    arg_location->add_intvalue(location);
15348
15349    // copy argument v0
15350    GLMessage_DataType *arg_v0 = glmsg.add_args();
15351    arg_v0->set_isarray(false);
15352    arg_v0->set_type(GLMessage::DataType::INT);
15353    arg_v0->add_intvalue(v0);
15354
15355    // copy argument v1
15356    GLMessage_DataType *arg_v1 = glmsg.add_args();
15357    arg_v1->set_isarray(false);
15358    arg_v1->set_type(GLMessage::DataType::INT);
15359    arg_v1->add_intvalue(v1);
15360
15361    // copy argument v2
15362    GLMessage_DataType *arg_v2 = glmsg.add_args();
15363    arg_v2->set_isarray(false);
15364    arg_v2->set_type(GLMessage::DataType::INT);
15365    arg_v2->add_intvalue(v2);
15366
15367    // call function
15368    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15369    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15370    glContext->hooks->gl.glProgramUniform3iEXT(program, location, v0, v1, v2);
15371    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15372    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15373
15374    void *pointerArgs[] = {
15375    };
15376
15377    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15378                              threadStartTime, threadEndTime,
15379                              &glmsg, pointerArgs);
15380    glContext->traceGLMessage(&glmsg);
15381}
15382
15383void GLTrace_glProgramUniform3ivEXT(GLuint program, GLint location, GLsizei count, const GLint * value) {
15384    GLMessage glmsg;
15385    GLTraceContext *glContext = getGLTraceContext();
15386
15387    glmsg.set_function(GLMessage::glProgramUniform3ivEXT);
15388
15389    // copy argument program
15390    GLMessage_DataType *arg_program = glmsg.add_args();
15391    arg_program->set_isarray(false);
15392    arg_program->set_type(GLMessage::DataType::INT);
15393    arg_program->add_intvalue(program);
15394
15395    // copy argument location
15396    GLMessage_DataType *arg_location = glmsg.add_args();
15397    arg_location->set_isarray(false);
15398    arg_location->set_type(GLMessage::DataType::INT);
15399    arg_location->add_intvalue(location);
15400
15401    // copy argument count
15402    GLMessage_DataType *arg_count = glmsg.add_args();
15403    arg_count->set_isarray(false);
15404    arg_count->set_type(GLMessage::DataType::INT);
15405    arg_count->add_intvalue(count);
15406
15407    // copy argument value
15408    GLMessage_DataType *arg_value = glmsg.add_args();
15409    arg_value->set_isarray(false);
15410    arg_value->set_type(GLMessage::DataType::INT64);
15411    arg_value->add_int64value((uintptr_t)value);
15412
15413    // call function
15414    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15415    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15416    glContext->hooks->gl.glProgramUniform3ivEXT(program, location, count, value);
15417    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15418    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15419
15420    void *pointerArgs[] = {
15421        (void *) value,
15422    };
15423
15424    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15425                              threadStartTime, threadEndTime,
15426                              &glmsg, pointerArgs);
15427    glContext->traceGLMessage(&glmsg);
15428}
15429
15430void GLTrace_glProgramUniform4fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) {
15431    GLMessage glmsg;
15432    GLTraceContext *glContext = getGLTraceContext();
15433
15434    glmsg.set_function(GLMessage::glProgramUniform4fEXT);
15435
15436    // copy argument program
15437    GLMessage_DataType *arg_program = glmsg.add_args();
15438    arg_program->set_isarray(false);
15439    arg_program->set_type(GLMessage::DataType::INT);
15440    arg_program->add_intvalue(program);
15441
15442    // copy argument location
15443    GLMessage_DataType *arg_location = glmsg.add_args();
15444    arg_location->set_isarray(false);
15445    arg_location->set_type(GLMessage::DataType::INT);
15446    arg_location->add_intvalue(location);
15447
15448    // copy argument v0
15449    GLMessage_DataType *arg_v0 = glmsg.add_args();
15450    arg_v0->set_isarray(false);
15451    arg_v0->set_type(GLMessage::DataType::FLOAT);
15452    arg_v0->add_floatvalue(v0);
15453
15454    // copy argument v1
15455    GLMessage_DataType *arg_v1 = glmsg.add_args();
15456    arg_v1->set_isarray(false);
15457    arg_v1->set_type(GLMessage::DataType::FLOAT);
15458    arg_v1->add_floatvalue(v1);
15459
15460    // copy argument v2
15461    GLMessage_DataType *arg_v2 = glmsg.add_args();
15462    arg_v2->set_isarray(false);
15463    arg_v2->set_type(GLMessage::DataType::FLOAT);
15464    arg_v2->add_floatvalue(v2);
15465
15466    // copy argument v3
15467    GLMessage_DataType *arg_v3 = glmsg.add_args();
15468    arg_v3->set_isarray(false);
15469    arg_v3->set_type(GLMessage::DataType::FLOAT);
15470    arg_v3->add_floatvalue(v3);
15471
15472    // call function
15473    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15474    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15475    glContext->hooks->gl.glProgramUniform4fEXT(program, location, v0, v1, v2, v3);
15476    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15477    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15478
15479    void *pointerArgs[] = {
15480    };
15481
15482    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15483                              threadStartTime, threadEndTime,
15484                              &glmsg, pointerArgs);
15485    glContext->traceGLMessage(&glmsg);
15486}
15487
15488void GLTrace_glProgramUniform4fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat * value) {
15489    GLMessage glmsg;
15490    GLTraceContext *glContext = getGLTraceContext();
15491
15492    glmsg.set_function(GLMessage::glProgramUniform4fvEXT);
15493
15494    // copy argument program
15495    GLMessage_DataType *arg_program = glmsg.add_args();
15496    arg_program->set_isarray(false);
15497    arg_program->set_type(GLMessage::DataType::INT);
15498    arg_program->add_intvalue(program);
15499
15500    // copy argument location
15501    GLMessage_DataType *arg_location = glmsg.add_args();
15502    arg_location->set_isarray(false);
15503    arg_location->set_type(GLMessage::DataType::INT);
15504    arg_location->add_intvalue(location);
15505
15506    // copy argument count
15507    GLMessage_DataType *arg_count = glmsg.add_args();
15508    arg_count->set_isarray(false);
15509    arg_count->set_type(GLMessage::DataType::INT);
15510    arg_count->add_intvalue(count);
15511
15512    // copy argument value
15513    GLMessage_DataType *arg_value = glmsg.add_args();
15514    arg_value->set_isarray(false);
15515    arg_value->set_type(GLMessage::DataType::INT64);
15516    arg_value->add_int64value((uintptr_t)value);
15517
15518    // call function
15519    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15520    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15521    glContext->hooks->gl.glProgramUniform4fvEXT(program, location, count, value);
15522    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15523    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15524
15525    void *pointerArgs[] = {
15526        (void *) value,
15527    };
15528
15529    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15530                              threadStartTime, threadEndTime,
15531                              &glmsg, pointerArgs);
15532    glContext->traceGLMessage(&glmsg);
15533}
15534
15535void GLTrace_glProgramUniform4iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) {
15536    GLMessage glmsg;
15537    GLTraceContext *glContext = getGLTraceContext();
15538
15539    glmsg.set_function(GLMessage::glProgramUniform4iEXT);
15540
15541    // copy argument program
15542    GLMessage_DataType *arg_program = glmsg.add_args();
15543    arg_program->set_isarray(false);
15544    arg_program->set_type(GLMessage::DataType::INT);
15545    arg_program->add_intvalue(program);
15546
15547    // copy argument location
15548    GLMessage_DataType *arg_location = glmsg.add_args();
15549    arg_location->set_isarray(false);
15550    arg_location->set_type(GLMessage::DataType::INT);
15551    arg_location->add_intvalue(location);
15552
15553    // copy argument v0
15554    GLMessage_DataType *arg_v0 = glmsg.add_args();
15555    arg_v0->set_isarray(false);
15556    arg_v0->set_type(GLMessage::DataType::INT);
15557    arg_v0->add_intvalue(v0);
15558
15559    // copy argument v1
15560    GLMessage_DataType *arg_v1 = glmsg.add_args();
15561    arg_v1->set_isarray(false);
15562    arg_v1->set_type(GLMessage::DataType::INT);
15563    arg_v1->add_intvalue(v1);
15564
15565    // copy argument v2
15566    GLMessage_DataType *arg_v2 = glmsg.add_args();
15567    arg_v2->set_isarray(false);
15568    arg_v2->set_type(GLMessage::DataType::INT);
15569    arg_v2->add_intvalue(v2);
15570
15571    // copy argument v3
15572    GLMessage_DataType *arg_v3 = glmsg.add_args();
15573    arg_v3->set_isarray(false);
15574    arg_v3->set_type(GLMessage::DataType::INT);
15575    arg_v3->add_intvalue(v3);
15576
15577    // call function
15578    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15579    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15580    glContext->hooks->gl.glProgramUniform4iEXT(program, location, v0, v1, v2, v3);
15581    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15582    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15583
15584    void *pointerArgs[] = {
15585    };
15586
15587    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15588                              threadStartTime, threadEndTime,
15589                              &glmsg, pointerArgs);
15590    glContext->traceGLMessage(&glmsg);
15591}
15592
15593void GLTrace_glProgramUniform4ivEXT(GLuint program, GLint location, GLsizei count, const GLint * value) {
15594    GLMessage glmsg;
15595    GLTraceContext *glContext = getGLTraceContext();
15596
15597    glmsg.set_function(GLMessage::glProgramUniform4ivEXT);
15598
15599    // copy argument program
15600    GLMessage_DataType *arg_program = glmsg.add_args();
15601    arg_program->set_isarray(false);
15602    arg_program->set_type(GLMessage::DataType::INT);
15603    arg_program->add_intvalue(program);
15604
15605    // copy argument location
15606    GLMessage_DataType *arg_location = glmsg.add_args();
15607    arg_location->set_isarray(false);
15608    arg_location->set_type(GLMessage::DataType::INT);
15609    arg_location->add_intvalue(location);
15610
15611    // copy argument count
15612    GLMessage_DataType *arg_count = glmsg.add_args();
15613    arg_count->set_isarray(false);
15614    arg_count->set_type(GLMessage::DataType::INT);
15615    arg_count->add_intvalue(count);
15616
15617    // copy argument value
15618    GLMessage_DataType *arg_value = glmsg.add_args();
15619    arg_value->set_isarray(false);
15620    arg_value->set_type(GLMessage::DataType::INT64);
15621    arg_value->add_int64value((uintptr_t)value);
15622
15623    // call function
15624    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15625    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15626    glContext->hooks->gl.glProgramUniform4ivEXT(program, location, count, value);
15627    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15628    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15629
15630    void *pointerArgs[] = {
15631        (void *) value,
15632    };
15633
15634    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15635                              threadStartTime, threadEndTime,
15636                              &glmsg, pointerArgs);
15637    glContext->traceGLMessage(&glmsg);
15638}
15639
15640void GLTrace_glProgramUniformMatrix2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
15641    GLMessage glmsg;
15642    GLTraceContext *glContext = getGLTraceContext();
15643
15644    glmsg.set_function(GLMessage::glProgramUniformMatrix2fvEXT);
15645
15646    // copy argument program
15647    GLMessage_DataType *arg_program = glmsg.add_args();
15648    arg_program->set_isarray(false);
15649    arg_program->set_type(GLMessage::DataType::INT);
15650    arg_program->add_intvalue(program);
15651
15652    // copy argument location
15653    GLMessage_DataType *arg_location = glmsg.add_args();
15654    arg_location->set_isarray(false);
15655    arg_location->set_type(GLMessage::DataType::INT);
15656    arg_location->add_intvalue(location);
15657
15658    // copy argument count
15659    GLMessage_DataType *arg_count = glmsg.add_args();
15660    arg_count->set_isarray(false);
15661    arg_count->set_type(GLMessage::DataType::INT);
15662    arg_count->add_intvalue(count);
15663
15664    // copy argument transpose
15665    GLMessage_DataType *arg_transpose = glmsg.add_args();
15666    arg_transpose->set_isarray(false);
15667    arg_transpose->set_type(GLMessage::DataType::BOOL);
15668    arg_transpose->add_boolvalue(transpose);
15669
15670    // copy argument value
15671    GLMessage_DataType *arg_value = glmsg.add_args();
15672    arg_value->set_isarray(false);
15673    arg_value->set_type(GLMessage::DataType::INT64);
15674    arg_value->add_int64value((uintptr_t)value);
15675
15676    // call function
15677    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15678    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15679    glContext->hooks->gl.glProgramUniformMatrix2fvEXT(program, location, count, transpose, value);
15680    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15681    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15682
15683    void *pointerArgs[] = {
15684        (void *) value,
15685    };
15686
15687    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15688                              threadStartTime, threadEndTime,
15689                              &glmsg, pointerArgs);
15690    glContext->traceGLMessage(&glmsg);
15691}
15692
15693void GLTrace_glProgramUniformMatrix3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
15694    GLMessage glmsg;
15695    GLTraceContext *glContext = getGLTraceContext();
15696
15697    glmsg.set_function(GLMessage::glProgramUniformMatrix3fvEXT);
15698
15699    // copy argument program
15700    GLMessage_DataType *arg_program = glmsg.add_args();
15701    arg_program->set_isarray(false);
15702    arg_program->set_type(GLMessage::DataType::INT);
15703    arg_program->add_intvalue(program);
15704
15705    // copy argument location
15706    GLMessage_DataType *arg_location = glmsg.add_args();
15707    arg_location->set_isarray(false);
15708    arg_location->set_type(GLMessage::DataType::INT);
15709    arg_location->add_intvalue(location);
15710
15711    // copy argument count
15712    GLMessage_DataType *arg_count = glmsg.add_args();
15713    arg_count->set_isarray(false);
15714    arg_count->set_type(GLMessage::DataType::INT);
15715    arg_count->add_intvalue(count);
15716
15717    // copy argument transpose
15718    GLMessage_DataType *arg_transpose = glmsg.add_args();
15719    arg_transpose->set_isarray(false);
15720    arg_transpose->set_type(GLMessage::DataType::BOOL);
15721    arg_transpose->add_boolvalue(transpose);
15722
15723    // copy argument value
15724    GLMessage_DataType *arg_value = glmsg.add_args();
15725    arg_value->set_isarray(false);
15726    arg_value->set_type(GLMessage::DataType::INT64);
15727    arg_value->add_int64value((uintptr_t)value);
15728
15729    // call function
15730    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15731    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15732    glContext->hooks->gl.glProgramUniformMatrix3fvEXT(program, location, count, transpose, value);
15733    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15734    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15735
15736    void *pointerArgs[] = {
15737        (void *) value,
15738    };
15739
15740    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15741                              threadStartTime, threadEndTime,
15742                              &glmsg, pointerArgs);
15743    glContext->traceGLMessage(&glmsg);
15744}
15745
15746void GLTrace_glProgramUniformMatrix4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
15747    GLMessage glmsg;
15748    GLTraceContext *glContext = getGLTraceContext();
15749
15750    glmsg.set_function(GLMessage::glProgramUniformMatrix4fvEXT);
15751
15752    // copy argument program
15753    GLMessage_DataType *arg_program = glmsg.add_args();
15754    arg_program->set_isarray(false);
15755    arg_program->set_type(GLMessage::DataType::INT);
15756    arg_program->add_intvalue(program);
15757
15758    // copy argument location
15759    GLMessage_DataType *arg_location = glmsg.add_args();
15760    arg_location->set_isarray(false);
15761    arg_location->set_type(GLMessage::DataType::INT);
15762    arg_location->add_intvalue(location);
15763
15764    // copy argument count
15765    GLMessage_DataType *arg_count = glmsg.add_args();
15766    arg_count->set_isarray(false);
15767    arg_count->set_type(GLMessage::DataType::INT);
15768    arg_count->add_intvalue(count);
15769
15770    // copy argument transpose
15771    GLMessage_DataType *arg_transpose = glmsg.add_args();
15772    arg_transpose->set_isarray(false);
15773    arg_transpose->set_type(GLMessage::DataType::BOOL);
15774    arg_transpose->add_boolvalue(transpose);
15775
15776    // copy argument value
15777    GLMessage_DataType *arg_value = glmsg.add_args();
15778    arg_value->set_isarray(false);
15779    arg_value->set_type(GLMessage::DataType::INT64);
15780    arg_value->add_int64value((uintptr_t)value);
15781
15782    // call function
15783    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15784    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15785    glContext->hooks->gl.glProgramUniformMatrix4fvEXT(program, location, count, transpose, value);
15786    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15787    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15788
15789    void *pointerArgs[] = {
15790        (void *) value,
15791    };
15792
15793    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15794                              threadStartTime, threadEndTime,
15795                              &glmsg, pointerArgs);
15796    glContext->traceGLMessage(&glmsg);
15797}
15798
15799void GLTrace_glUseProgramStagesEXT(GLuint pipeline, GLbitfield stages, GLuint program) {
15800    GLMessage glmsg;
15801    GLTraceContext *glContext = getGLTraceContext();
15802
15803    glmsg.set_function(GLMessage::glUseProgramStagesEXT);
15804
15805    // copy argument pipeline
15806    GLMessage_DataType *arg_pipeline = glmsg.add_args();
15807    arg_pipeline->set_isarray(false);
15808    arg_pipeline->set_type(GLMessage::DataType::INT);
15809    arg_pipeline->add_intvalue(pipeline);
15810
15811    // copy argument stages
15812    GLMessage_DataType *arg_stages = glmsg.add_args();
15813    arg_stages->set_isarray(false);
15814    arg_stages->set_type(GLMessage::DataType::INT);
15815    arg_stages->add_intvalue(stages);
15816
15817    // copy argument program
15818    GLMessage_DataType *arg_program = glmsg.add_args();
15819    arg_program->set_isarray(false);
15820    arg_program->set_type(GLMessage::DataType::INT);
15821    arg_program->add_intvalue(program);
15822
15823    // call function
15824    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15825    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15826    glContext->hooks->gl.glUseProgramStagesEXT(pipeline, stages, program);
15827    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15828    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15829
15830    void *pointerArgs[] = {
15831    };
15832
15833    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15834                              threadStartTime, threadEndTime,
15835                              &glmsg, pointerArgs);
15836    glContext->traceGLMessage(&glmsg);
15837}
15838
15839void GLTrace_glValidateProgramPipelineEXT(GLuint pipeline) {
15840    GLMessage glmsg;
15841    GLTraceContext *glContext = getGLTraceContext();
15842
15843    glmsg.set_function(GLMessage::glValidateProgramPipelineEXT);
15844
15845    // copy argument pipeline
15846    GLMessage_DataType *arg_pipeline = glmsg.add_args();
15847    arg_pipeline->set_isarray(false);
15848    arg_pipeline->set_type(GLMessage::DataType::INT);
15849    arg_pipeline->add_intvalue(pipeline);
15850
15851    // call function
15852    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15853    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15854    glContext->hooks->gl.glValidateProgramPipelineEXT(pipeline);
15855    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15856    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15857
15858    void *pointerArgs[] = {
15859    };
15860
15861    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15862                              threadStartTime, threadEndTime,
15863                              &glmsg, pointerArgs);
15864    glContext->traceGLMessage(&glmsg);
15865}
15866
15867void GLTrace_glProgramUniform1uiEXT(GLuint program, GLint location, GLuint v0) {
15868    GLMessage glmsg;
15869    GLTraceContext *glContext = getGLTraceContext();
15870
15871    glmsg.set_function(GLMessage::glProgramUniform1uiEXT);
15872
15873    // copy argument program
15874    GLMessage_DataType *arg_program = glmsg.add_args();
15875    arg_program->set_isarray(false);
15876    arg_program->set_type(GLMessage::DataType::INT);
15877    arg_program->add_intvalue(program);
15878
15879    // copy argument location
15880    GLMessage_DataType *arg_location = glmsg.add_args();
15881    arg_location->set_isarray(false);
15882    arg_location->set_type(GLMessage::DataType::INT);
15883    arg_location->add_intvalue(location);
15884
15885    // copy argument v0
15886    GLMessage_DataType *arg_v0 = glmsg.add_args();
15887    arg_v0->set_isarray(false);
15888    arg_v0->set_type(GLMessage::DataType::INT);
15889    arg_v0->add_intvalue(v0);
15890
15891    // call function
15892    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15893    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15894    glContext->hooks->gl.glProgramUniform1uiEXT(program, location, v0);
15895    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15896    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15897
15898    void *pointerArgs[] = {
15899    };
15900
15901    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15902                              threadStartTime, threadEndTime,
15903                              &glmsg, pointerArgs);
15904    glContext->traceGLMessage(&glmsg);
15905}
15906
15907void GLTrace_glProgramUniform2uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1) {
15908    GLMessage glmsg;
15909    GLTraceContext *glContext = getGLTraceContext();
15910
15911    glmsg.set_function(GLMessage::glProgramUniform2uiEXT);
15912
15913    // copy argument program
15914    GLMessage_DataType *arg_program = glmsg.add_args();
15915    arg_program->set_isarray(false);
15916    arg_program->set_type(GLMessage::DataType::INT);
15917    arg_program->add_intvalue(program);
15918
15919    // copy argument location
15920    GLMessage_DataType *arg_location = glmsg.add_args();
15921    arg_location->set_isarray(false);
15922    arg_location->set_type(GLMessage::DataType::INT);
15923    arg_location->add_intvalue(location);
15924
15925    // copy argument v0
15926    GLMessage_DataType *arg_v0 = glmsg.add_args();
15927    arg_v0->set_isarray(false);
15928    arg_v0->set_type(GLMessage::DataType::INT);
15929    arg_v0->add_intvalue(v0);
15930
15931    // copy argument v1
15932    GLMessage_DataType *arg_v1 = glmsg.add_args();
15933    arg_v1->set_isarray(false);
15934    arg_v1->set_type(GLMessage::DataType::INT);
15935    arg_v1->add_intvalue(v1);
15936
15937    // call function
15938    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15939    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15940    glContext->hooks->gl.glProgramUniform2uiEXT(program, location, v0, v1);
15941    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15942    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15943
15944    void *pointerArgs[] = {
15945    };
15946
15947    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15948                              threadStartTime, threadEndTime,
15949                              &glmsg, pointerArgs);
15950    glContext->traceGLMessage(&glmsg);
15951}
15952
15953void GLTrace_glProgramUniform3uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) {
15954    GLMessage glmsg;
15955    GLTraceContext *glContext = getGLTraceContext();
15956
15957    glmsg.set_function(GLMessage::glProgramUniform3uiEXT);
15958
15959    // copy argument program
15960    GLMessage_DataType *arg_program = glmsg.add_args();
15961    arg_program->set_isarray(false);
15962    arg_program->set_type(GLMessage::DataType::INT);
15963    arg_program->add_intvalue(program);
15964
15965    // copy argument location
15966    GLMessage_DataType *arg_location = glmsg.add_args();
15967    arg_location->set_isarray(false);
15968    arg_location->set_type(GLMessage::DataType::INT);
15969    arg_location->add_intvalue(location);
15970
15971    // copy argument v0
15972    GLMessage_DataType *arg_v0 = glmsg.add_args();
15973    arg_v0->set_isarray(false);
15974    arg_v0->set_type(GLMessage::DataType::INT);
15975    arg_v0->add_intvalue(v0);
15976
15977    // copy argument v1
15978    GLMessage_DataType *arg_v1 = glmsg.add_args();
15979    arg_v1->set_isarray(false);
15980    arg_v1->set_type(GLMessage::DataType::INT);
15981    arg_v1->add_intvalue(v1);
15982
15983    // copy argument v2
15984    GLMessage_DataType *arg_v2 = glmsg.add_args();
15985    arg_v2->set_isarray(false);
15986    arg_v2->set_type(GLMessage::DataType::INT);
15987    arg_v2->add_intvalue(v2);
15988
15989    // call function
15990    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15991    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15992    glContext->hooks->gl.glProgramUniform3uiEXT(program, location, v0, v1, v2);
15993    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15994    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15995
15996    void *pointerArgs[] = {
15997    };
15998
15999    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16000                              threadStartTime, threadEndTime,
16001                              &glmsg, pointerArgs);
16002    glContext->traceGLMessage(&glmsg);
16003}
16004
16005void GLTrace_glProgramUniform4uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) {
16006    GLMessage glmsg;
16007    GLTraceContext *glContext = getGLTraceContext();
16008
16009    glmsg.set_function(GLMessage::glProgramUniform4uiEXT);
16010
16011    // copy argument program
16012    GLMessage_DataType *arg_program = glmsg.add_args();
16013    arg_program->set_isarray(false);
16014    arg_program->set_type(GLMessage::DataType::INT);
16015    arg_program->add_intvalue(program);
16016
16017    // copy argument location
16018    GLMessage_DataType *arg_location = glmsg.add_args();
16019    arg_location->set_isarray(false);
16020    arg_location->set_type(GLMessage::DataType::INT);
16021    arg_location->add_intvalue(location);
16022
16023    // copy argument v0
16024    GLMessage_DataType *arg_v0 = glmsg.add_args();
16025    arg_v0->set_isarray(false);
16026    arg_v0->set_type(GLMessage::DataType::INT);
16027    arg_v0->add_intvalue(v0);
16028
16029    // copy argument v1
16030    GLMessage_DataType *arg_v1 = glmsg.add_args();
16031    arg_v1->set_isarray(false);
16032    arg_v1->set_type(GLMessage::DataType::INT);
16033    arg_v1->add_intvalue(v1);
16034
16035    // copy argument v2
16036    GLMessage_DataType *arg_v2 = glmsg.add_args();
16037    arg_v2->set_isarray(false);
16038    arg_v2->set_type(GLMessage::DataType::INT);
16039    arg_v2->add_intvalue(v2);
16040
16041    // copy argument v3
16042    GLMessage_DataType *arg_v3 = glmsg.add_args();
16043    arg_v3->set_isarray(false);
16044    arg_v3->set_type(GLMessage::DataType::INT);
16045    arg_v3->add_intvalue(v3);
16046
16047    // call function
16048    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16049    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16050    glContext->hooks->gl.glProgramUniform4uiEXT(program, location, v0, v1, v2, v3);
16051    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16052    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16053
16054    void *pointerArgs[] = {
16055    };
16056
16057    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16058                              threadStartTime, threadEndTime,
16059                              &glmsg, pointerArgs);
16060    glContext->traceGLMessage(&glmsg);
16061}
16062
16063void GLTrace_glProgramUniform1uivEXT(GLuint program, GLint location, GLsizei count, const GLuint * value) {
16064    GLMessage glmsg;
16065    GLTraceContext *glContext = getGLTraceContext();
16066
16067    glmsg.set_function(GLMessage::glProgramUniform1uivEXT);
16068
16069    // copy argument program
16070    GLMessage_DataType *arg_program = glmsg.add_args();
16071    arg_program->set_isarray(false);
16072    arg_program->set_type(GLMessage::DataType::INT);
16073    arg_program->add_intvalue(program);
16074
16075    // copy argument location
16076    GLMessage_DataType *arg_location = glmsg.add_args();
16077    arg_location->set_isarray(false);
16078    arg_location->set_type(GLMessage::DataType::INT);
16079    arg_location->add_intvalue(location);
16080
16081    // copy argument count
16082    GLMessage_DataType *arg_count = glmsg.add_args();
16083    arg_count->set_isarray(false);
16084    arg_count->set_type(GLMessage::DataType::INT);
16085    arg_count->add_intvalue(count);
16086
16087    // copy argument value
16088    GLMessage_DataType *arg_value = glmsg.add_args();
16089    arg_value->set_isarray(false);
16090    arg_value->set_type(GLMessage::DataType::INT64);
16091    arg_value->add_int64value((uintptr_t)value);
16092
16093    // call function
16094    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16095    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16096    glContext->hooks->gl.glProgramUniform1uivEXT(program, location, count, value);
16097    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16098    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16099
16100    void *pointerArgs[] = {
16101        (void *) value,
16102    };
16103
16104    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16105                              threadStartTime, threadEndTime,
16106                              &glmsg, pointerArgs);
16107    glContext->traceGLMessage(&glmsg);
16108}
16109
16110void GLTrace_glProgramUniform2uivEXT(GLuint program, GLint location, GLsizei count, const GLuint * value) {
16111    GLMessage glmsg;
16112    GLTraceContext *glContext = getGLTraceContext();
16113
16114    glmsg.set_function(GLMessage::glProgramUniform2uivEXT);
16115
16116    // copy argument program
16117    GLMessage_DataType *arg_program = glmsg.add_args();
16118    arg_program->set_isarray(false);
16119    arg_program->set_type(GLMessage::DataType::INT);
16120    arg_program->add_intvalue(program);
16121
16122    // copy argument location
16123    GLMessage_DataType *arg_location = glmsg.add_args();
16124    arg_location->set_isarray(false);
16125    arg_location->set_type(GLMessage::DataType::INT);
16126    arg_location->add_intvalue(location);
16127
16128    // copy argument count
16129    GLMessage_DataType *arg_count = glmsg.add_args();
16130    arg_count->set_isarray(false);
16131    arg_count->set_type(GLMessage::DataType::INT);
16132    arg_count->add_intvalue(count);
16133
16134    // copy argument value
16135    GLMessage_DataType *arg_value = glmsg.add_args();
16136    arg_value->set_isarray(false);
16137    arg_value->set_type(GLMessage::DataType::INT64);
16138    arg_value->add_int64value((uintptr_t)value);
16139
16140    // call function
16141    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16142    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16143    glContext->hooks->gl.glProgramUniform2uivEXT(program, location, count, value);
16144    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16145    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16146
16147    void *pointerArgs[] = {
16148        (void *) value,
16149    };
16150
16151    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16152                              threadStartTime, threadEndTime,
16153                              &glmsg, pointerArgs);
16154    glContext->traceGLMessage(&glmsg);
16155}
16156
16157void GLTrace_glProgramUniform3uivEXT(GLuint program, GLint location, GLsizei count, const GLuint * value) {
16158    GLMessage glmsg;
16159    GLTraceContext *glContext = getGLTraceContext();
16160
16161    glmsg.set_function(GLMessage::glProgramUniform3uivEXT);
16162
16163    // copy argument program
16164    GLMessage_DataType *arg_program = glmsg.add_args();
16165    arg_program->set_isarray(false);
16166    arg_program->set_type(GLMessage::DataType::INT);
16167    arg_program->add_intvalue(program);
16168
16169    // copy argument location
16170    GLMessage_DataType *arg_location = glmsg.add_args();
16171    arg_location->set_isarray(false);
16172    arg_location->set_type(GLMessage::DataType::INT);
16173    arg_location->add_intvalue(location);
16174
16175    // copy argument count
16176    GLMessage_DataType *arg_count = glmsg.add_args();
16177    arg_count->set_isarray(false);
16178    arg_count->set_type(GLMessage::DataType::INT);
16179    arg_count->add_intvalue(count);
16180
16181    // copy argument value
16182    GLMessage_DataType *arg_value = glmsg.add_args();
16183    arg_value->set_isarray(false);
16184    arg_value->set_type(GLMessage::DataType::INT64);
16185    arg_value->add_int64value((uintptr_t)value);
16186
16187    // call function
16188    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16189    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16190    glContext->hooks->gl.glProgramUniform3uivEXT(program, location, count, value);
16191    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16192    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16193
16194    void *pointerArgs[] = {
16195        (void *) value,
16196    };
16197
16198    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16199                              threadStartTime, threadEndTime,
16200                              &glmsg, pointerArgs);
16201    glContext->traceGLMessage(&glmsg);
16202}
16203
16204void GLTrace_glProgramUniform4uivEXT(GLuint program, GLint location, GLsizei count, const GLuint * value) {
16205    GLMessage glmsg;
16206    GLTraceContext *glContext = getGLTraceContext();
16207
16208    glmsg.set_function(GLMessage::glProgramUniform4uivEXT);
16209
16210    // copy argument program
16211    GLMessage_DataType *arg_program = glmsg.add_args();
16212    arg_program->set_isarray(false);
16213    arg_program->set_type(GLMessage::DataType::INT);
16214    arg_program->add_intvalue(program);
16215
16216    // copy argument location
16217    GLMessage_DataType *arg_location = glmsg.add_args();
16218    arg_location->set_isarray(false);
16219    arg_location->set_type(GLMessage::DataType::INT);
16220    arg_location->add_intvalue(location);
16221
16222    // copy argument count
16223    GLMessage_DataType *arg_count = glmsg.add_args();
16224    arg_count->set_isarray(false);
16225    arg_count->set_type(GLMessage::DataType::INT);
16226    arg_count->add_intvalue(count);
16227
16228    // copy argument value
16229    GLMessage_DataType *arg_value = glmsg.add_args();
16230    arg_value->set_isarray(false);
16231    arg_value->set_type(GLMessage::DataType::INT64);
16232    arg_value->add_int64value((uintptr_t)value);
16233
16234    // call function
16235    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16236    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16237    glContext->hooks->gl.glProgramUniform4uivEXT(program, location, count, value);
16238    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16239    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16240
16241    void *pointerArgs[] = {
16242        (void *) value,
16243    };
16244
16245    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16246                              threadStartTime, threadEndTime,
16247                              &glmsg, pointerArgs);
16248    glContext->traceGLMessage(&glmsg);
16249}
16250
16251void GLTrace_glProgramUniformMatrix2x3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
16252    GLMessage glmsg;
16253    GLTraceContext *glContext = getGLTraceContext();
16254
16255    glmsg.set_function(GLMessage::glProgramUniformMatrix2x3fvEXT);
16256
16257    // copy argument program
16258    GLMessage_DataType *arg_program = glmsg.add_args();
16259    arg_program->set_isarray(false);
16260    arg_program->set_type(GLMessage::DataType::INT);
16261    arg_program->add_intvalue(program);
16262
16263    // copy argument location
16264    GLMessage_DataType *arg_location = glmsg.add_args();
16265    arg_location->set_isarray(false);
16266    arg_location->set_type(GLMessage::DataType::INT);
16267    arg_location->add_intvalue(location);
16268
16269    // copy argument count
16270    GLMessage_DataType *arg_count = glmsg.add_args();
16271    arg_count->set_isarray(false);
16272    arg_count->set_type(GLMessage::DataType::INT);
16273    arg_count->add_intvalue(count);
16274
16275    // copy argument transpose
16276    GLMessage_DataType *arg_transpose = glmsg.add_args();
16277    arg_transpose->set_isarray(false);
16278    arg_transpose->set_type(GLMessage::DataType::BOOL);
16279    arg_transpose->add_boolvalue(transpose);
16280
16281    // copy argument value
16282    GLMessage_DataType *arg_value = glmsg.add_args();
16283    arg_value->set_isarray(false);
16284    arg_value->set_type(GLMessage::DataType::INT64);
16285    arg_value->add_int64value((uintptr_t)value);
16286
16287    // call function
16288    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16289    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16290    glContext->hooks->gl.glProgramUniformMatrix2x3fvEXT(program, location, count, transpose, value);
16291    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16292    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16293
16294    void *pointerArgs[] = {
16295        (void *) value,
16296    };
16297
16298    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16299                              threadStartTime, threadEndTime,
16300                              &glmsg, pointerArgs);
16301    glContext->traceGLMessage(&glmsg);
16302}
16303
16304void GLTrace_glProgramUniformMatrix3x2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
16305    GLMessage glmsg;
16306    GLTraceContext *glContext = getGLTraceContext();
16307
16308    glmsg.set_function(GLMessage::glProgramUniformMatrix3x2fvEXT);
16309
16310    // copy argument program
16311    GLMessage_DataType *arg_program = glmsg.add_args();
16312    arg_program->set_isarray(false);
16313    arg_program->set_type(GLMessage::DataType::INT);
16314    arg_program->add_intvalue(program);
16315
16316    // copy argument location
16317    GLMessage_DataType *arg_location = glmsg.add_args();
16318    arg_location->set_isarray(false);
16319    arg_location->set_type(GLMessage::DataType::INT);
16320    arg_location->add_intvalue(location);
16321
16322    // copy argument count
16323    GLMessage_DataType *arg_count = glmsg.add_args();
16324    arg_count->set_isarray(false);
16325    arg_count->set_type(GLMessage::DataType::INT);
16326    arg_count->add_intvalue(count);
16327
16328    // copy argument transpose
16329    GLMessage_DataType *arg_transpose = glmsg.add_args();
16330    arg_transpose->set_isarray(false);
16331    arg_transpose->set_type(GLMessage::DataType::BOOL);
16332    arg_transpose->add_boolvalue(transpose);
16333
16334    // copy argument value
16335    GLMessage_DataType *arg_value = glmsg.add_args();
16336    arg_value->set_isarray(false);
16337    arg_value->set_type(GLMessage::DataType::INT64);
16338    arg_value->add_int64value((uintptr_t)value);
16339
16340    // call function
16341    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16342    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16343    glContext->hooks->gl.glProgramUniformMatrix3x2fvEXT(program, location, count, transpose, value);
16344    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16345    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16346
16347    void *pointerArgs[] = {
16348        (void *) value,
16349    };
16350
16351    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16352                              threadStartTime, threadEndTime,
16353                              &glmsg, pointerArgs);
16354    glContext->traceGLMessage(&glmsg);
16355}
16356
16357void GLTrace_glProgramUniformMatrix2x4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
16358    GLMessage glmsg;
16359    GLTraceContext *glContext = getGLTraceContext();
16360
16361    glmsg.set_function(GLMessage::glProgramUniformMatrix2x4fvEXT);
16362
16363    // copy argument program
16364    GLMessage_DataType *arg_program = glmsg.add_args();
16365    arg_program->set_isarray(false);
16366    arg_program->set_type(GLMessage::DataType::INT);
16367    arg_program->add_intvalue(program);
16368
16369    // copy argument location
16370    GLMessage_DataType *arg_location = glmsg.add_args();
16371    arg_location->set_isarray(false);
16372    arg_location->set_type(GLMessage::DataType::INT);
16373    arg_location->add_intvalue(location);
16374
16375    // copy argument count
16376    GLMessage_DataType *arg_count = glmsg.add_args();
16377    arg_count->set_isarray(false);
16378    arg_count->set_type(GLMessage::DataType::INT);
16379    arg_count->add_intvalue(count);
16380
16381    // copy argument transpose
16382    GLMessage_DataType *arg_transpose = glmsg.add_args();
16383    arg_transpose->set_isarray(false);
16384    arg_transpose->set_type(GLMessage::DataType::BOOL);
16385    arg_transpose->add_boolvalue(transpose);
16386
16387    // copy argument value
16388    GLMessage_DataType *arg_value = glmsg.add_args();
16389    arg_value->set_isarray(false);
16390    arg_value->set_type(GLMessage::DataType::INT64);
16391    arg_value->add_int64value((uintptr_t)value);
16392
16393    // call function
16394    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16395    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16396    glContext->hooks->gl.glProgramUniformMatrix2x4fvEXT(program, location, count, transpose, value);
16397    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16398    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16399
16400    void *pointerArgs[] = {
16401        (void *) value,
16402    };
16403
16404    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16405                              threadStartTime, threadEndTime,
16406                              &glmsg, pointerArgs);
16407    glContext->traceGLMessage(&glmsg);
16408}
16409
16410void GLTrace_glProgramUniformMatrix4x2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
16411    GLMessage glmsg;
16412    GLTraceContext *glContext = getGLTraceContext();
16413
16414    glmsg.set_function(GLMessage::glProgramUniformMatrix4x2fvEXT);
16415
16416    // copy argument program
16417    GLMessage_DataType *arg_program = glmsg.add_args();
16418    arg_program->set_isarray(false);
16419    arg_program->set_type(GLMessage::DataType::INT);
16420    arg_program->add_intvalue(program);
16421
16422    // copy argument location
16423    GLMessage_DataType *arg_location = glmsg.add_args();
16424    arg_location->set_isarray(false);
16425    arg_location->set_type(GLMessage::DataType::INT);
16426    arg_location->add_intvalue(location);
16427
16428    // copy argument count
16429    GLMessage_DataType *arg_count = glmsg.add_args();
16430    arg_count->set_isarray(false);
16431    arg_count->set_type(GLMessage::DataType::INT);
16432    arg_count->add_intvalue(count);
16433
16434    // copy argument transpose
16435    GLMessage_DataType *arg_transpose = glmsg.add_args();
16436    arg_transpose->set_isarray(false);
16437    arg_transpose->set_type(GLMessage::DataType::BOOL);
16438    arg_transpose->add_boolvalue(transpose);
16439
16440    // copy argument value
16441    GLMessage_DataType *arg_value = glmsg.add_args();
16442    arg_value->set_isarray(false);
16443    arg_value->set_type(GLMessage::DataType::INT64);
16444    arg_value->add_int64value((uintptr_t)value);
16445
16446    // call function
16447    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16448    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16449    glContext->hooks->gl.glProgramUniformMatrix4x2fvEXT(program, location, count, transpose, value);
16450    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16451    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16452
16453    void *pointerArgs[] = {
16454        (void *) value,
16455    };
16456
16457    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16458                              threadStartTime, threadEndTime,
16459                              &glmsg, pointerArgs);
16460    glContext->traceGLMessage(&glmsg);
16461}
16462
16463void GLTrace_glProgramUniformMatrix3x4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
16464    GLMessage glmsg;
16465    GLTraceContext *glContext = getGLTraceContext();
16466
16467    glmsg.set_function(GLMessage::glProgramUniformMatrix3x4fvEXT);
16468
16469    // copy argument program
16470    GLMessage_DataType *arg_program = glmsg.add_args();
16471    arg_program->set_isarray(false);
16472    arg_program->set_type(GLMessage::DataType::INT);
16473    arg_program->add_intvalue(program);
16474
16475    // copy argument location
16476    GLMessage_DataType *arg_location = glmsg.add_args();
16477    arg_location->set_isarray(false);
16478    arg_location->set_type(GLMessage::DataType::INT);
16479    arg_location->add_intvalue(location);
16480
16481    // copy argument count
16482    GLMessage_DataType *arg_count = glmsg.add_args();
16483    arg_count->set_isarray(false);
16484    arg_count->set_type(GLMessage::DataType::INT);
16485    arg_count->add_intvalue(count);
16486
16487    // copy argument transpose
16488    GLMessage_DataType *arg_transpose = glmsg.add_args();
16489    arg_transpose->set_isarray(false);
16490    arg_transpose->set_type(GLMessage::DataType::BOOL);
16491    arg_transpose->add_boolvalue(transpose);
16492
16493    // copy argument value
16494    GLMessage_DataType *arg_value = glmsg.add_args();
16495    arg_value->set_isarray(false);
16496    arg_value->set_type(GLMessage::DataType::INT64);
16497    arg_value->add_int64value((uintptr_t)value);
16498
16499    // call function
16500    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16501    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16502    glContext->hooks->gl.glProgramUniformMatrix3x4fvEXT(program, location, count, transpose, value);
16503    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16504    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16505
16506    void *pointerArgs[] = {
16507        (void *) value,
16508    };
16509
16510    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16511                              threadStartTime, threadEndTime,
16512                              &glmsg, pointerArgs);
16513    glContext->traceGLMessage(&glmsg);
16514}
16515
16516void GLTrace_glProgramUniformMatrix4x3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
16517    GLMessage glmsg;
16518    GLTraceContext *glContext = getGLTraceContext();
16519
16520    glmsg.set_function(GLMessage::glProgramUniformMatrix4x3fvEXT);
16521
16522    // copy argument program
16523    GLMessage_DataType *arg_program = glmsg.add_args();
16524    arg_program->set_isarray(false);
16525    arg_program->set_type(GLMessage::DataType::INT);
16526    arg_program->add_intvalue(program);
16527
16528    // copy argument location
16529    GLMessage_DataType *arg_location = glmsg.add_args();
16530    arg_location->set_isarray(false);
16531    arg_location->set_type(GLMessage::DataType::INT);
16532    arg_location->add_intvalue(location);
16533
16534    // copy argument count
16535    GLMessage_DataType *arg_count = glmsg.add_args();
16536    arg_count->set_isarray(false);
16537    arg_count->set_type(GLMessage::DataType::INT);
16538    arg_count->add_intvalue(count);
16539
16540    // copy argument transpose
16541    GLMessage_DataType *arg_transpose = glmsg.add_args();
16542    arg_transpose->set_isarray(false);
16543    arg_transpose->set_type(GLMessage::DataType::BOOL);
16544    arg_transpose->add_boolvalue(transpose);
16545
16546    // copy argument value
16547    GLMessage_DataType *arg_value = glmsg.add_args();
16548    arg_value->set_isarray(false);
16549    arg_value->set_type(GLMessage::DataType::INT64);
16550    arg_value->add_int64value((uintptr_t)value);
16551
16552    // call function
16553    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16554    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16555    glContext->hooks->gl.glProgramUniformMatrix4x3fvEXT(program, location, count, transpose, value);
16556    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16557    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16558
16559    void *pointerArgs[] = {
16560        (void *) value,
16561    };
16562
16563    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16564                              threadStartTime, threadEndTime,
16565                              &glmsg, pointerArgs);
16566    glContext->traceGLMessage(&glmsg);
16567}
16568
16569void GLTrace_glTexStorage1DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) {
16570    GLMessage glmsg;
16571    GLTraceContext *glContext = getGLTraceContext();
16572
16573    glmsg.set_function(GLMessage::glTexStorage1DEXT);
16574
16575    // copy argument target
16576    GLMessage_DataType *arg_target = glmsg.add_args();
16577    arg_target->set_isarray(false);
16578    arg_target->set_type(GLMessage::DataType::ENUM);
16579    arg_target->add_intvalue((int)target);
16580
16581    // copy argument levels
16582    GLMessage_DataType *arg_levels = glmsg.add_args();
16583    arg_levels->set_isarray(false);
16584    arg_levels->set_type(GLMessage::DataType::INT);
16585    arg_levels->add_intvalue(levels);
16586
16587    // copy argument internalformat
16588    GLMessage_DataType *arg_internalformat = glmsg.add_args();
16589    arg_internalformat->set_isarray(false);
16590    arg_internalformat->set_type(GLMessage::DataType::ENUM);
16591    arg_internalformat->add_intvalue((int)internalformat);
16592
16593    // copy argument width
16594    GLMessage_DataType *arg_width = glmsg.add_args();
16595    arg_width->set_isarray(false);
16596    arg_width->set_type(GLMessage::DataType::INT);
16597    arg_width->add_intvalue(width);
16598
16599    // call function
16600    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16601    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16602    glContext->hooks->gl.glTexStorage1DEXT(target, levels, internalformat, width);
16603    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16604    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16605
16606    void *pointerArgs[] = {
16607    };
16608
16609    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16610                              threadStartTime, threadEndTime,
16611                              &glmsg, pointerArgs);
16612    glContext->traceGLMessage(&glmsg);
16613}
16614
16615void GLTrace_glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) {
16616    GLMessage glmsg;
16617    GLTraceContext *glContext = getGLTraceContext();
16618
16619    glmsg.set_function(GLMessage::glTexStorage2DEXT);
16620
16621    // copy argument target
16622    GLMessage_DataType *arg_target = glmsg.add_args();
16623    arg_target->set_isarray(false);
16624    arg_target->set_type(GLMessage::DataType::ENUM);
16625    arg_target->add_intvalue((int)target);
16626
16627    // copy argument levels
16628    GLMessage_DataType *arg_levels = glmsg.add_args();
16629    arg_levels->set_isarray(false);
16630    arg_levels->set_type(GLMessage::DataType::INT);
16631    arg_levels->add_intvalue(levels);
16632
16633    // copy argument internalformat
16634    GLMessage_DataType *arg_internalformat = glmsg.add_args();
16635    arg_internalformat->set_isarray(false);
16636    arg_internalformat->set_type(GLMessage::DataType::ENUM);
16637    arg_internalformat->add_intvalue((int)internalformat);
16638
16639    // copy argument width
16640    GLMessage_DataType *arg_width = glmsg.add_args();
16641    arg_width->set_isarray(false);
16642    arg_width->set_type(GLMessage::DataType::INT);
16643    arg_width->add_intvalue(width);
16644
16645    // copy argument height
16646    GLMessage_DataType *arg_height = glmsg.add_args();
16647    arg_height->set_isarray(false);
16648    arg_height->set_type(GLMessage::DataType::INT);
16649    arg_height->add_intvalue(height);
16650
16651    // call function
16652    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16653    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16654    glContext->hooks->gl.glTexStorage2DEXT(target, levels, internalformat, width, height);
16655    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16656    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16657
16658    void *pointerArgs[] = {
16659    };
16660
16661    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16662                              threadStartTime, threadEndTime,
16663                              &glmsg, pointerArgs);
16664    glContext->traceGLMessage(&glmsg);
16665}
16666
16667void GLTrace_glTexStorage3DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) {
16668    GLMessage glmsg;
16669    GLTraceContext *glContext = getGLTraceContext();
16670
16671    glmsg.set_function(GLMessage::glTexStorage3DEXT);
16672
16673    // copy argument target
16674    GLMessage_DataType *arg_target = glmsg.add_args();
16675    arg_target->set_isarray(false);
16676    arg_target->set_type(GLMessage::DataType::ENUM);
16677    arg_target->add_intvalue((int)target);
16678
16679    // copy argument levels
16680    GLMessage_DataType *arg_levels = glmsg.add_args();
16681    arg_levels->set_isarray(false);
16682    arg_levels->set_type(GLMessage::DataType::INT);
16683    arg_levels->add_intvalue(levels);
16684
16685    // copy argument internalformat
16686    GLMessage_DataType *arg_internalformat = glmsg.add_args();
16687    arg_internalformat->set_isarray(false);
16688    arg_internalformat->set_type(GLMessage::DataType::ENUM);
16689    arg_internalformat->add_intvalue((int)internalformat);
16690
16691    // copy argument width
16692    GLMessage_DataType *arg_width = glmsg.add_args();
16693    arg_width->set_isarray(false);
16694    arg_width->set_type(GLMessage::DataType::INT);
16695    arg_width->add_intvalue(width);
16696
16697    // copy argument height
16698    GLMessage_DataType *arg_height = glmsg.add_args();
16699    arg_height->set_isarray(false);
16700    arg_height->set_type(GLMessage::DataType::INT);
16701    arg_height->add_intvalue(height);
16702
16703    // copy argument depth
16704    GLMessage_DataType *arg_depth = glmsg.add_args();
16705    arg_depth->set_isarray(false);
16706    arg_depth->set_type(GLMessage::DataType::INT);
16707    arg_depth->add_intvalue(depth);
16708
16709    // call function
16710    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16711    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16712    glContext->hooks->gl.glTexStorage3DEXT(target, levels, internalformat, width, height, depth);
16713    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16714    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16715
16716    void *pointerArgs[] = {
16717    };
16718
16719    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16720                              threadStartTime, threadEndTime,
16721                              &glmsg, pointerArgs);
16722    glContext->traceGLMessage(&glmsg);
16723}
16724
16725void GLTrace_glTextureStorage1DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) {
16726    GLMessage glmsg;
16727    GLTraceContext *glContext = getGLTraceContext();
16728
16729    glmsg.set_function(GLMessage::glTextureStorage1DEXT);
16730
16731    // copy argument texture
16732    GLMessage_DataType *arg_texture = glmsg.add_args();
16733    arg_texture->set_isarray(false);
16734    arg_texture->set_type(GLMessage::DataType::INT);
16735    arg_texture->add_intvalue(texture);
16736
16737    // copy argument target
16738    GLMessage_DataType *arg_target = glmsg.add_args();
16739    arg_target->set_isarray(false);
16740    arg_target->set_type(GLMessage::DataType::ENUM);
16741    arg_target->add_intvalue((int)target);
16742
16743    // copy argument levels
16744    GLMessage_DataType *arg_levels = glmsg.add_args();
16745    arg_levels->set_isarray(false);
16746    arg_levels->set_type(GLMessage::DataType::INT);
16747    arg_levels->add_intvalue(levels);
16748
16749    // copy argument internalformat
16750    GLMessage_DataType *arg_internalformat = glmsg.add_args();
16751    arg_internalformat->set_isarray(false);
16752    arg_internalformat->set_type(GLMessage::DataType::ENUM);
16753    arg_internalformat->add_intvalue((int)internalformat);
16754
16755    // copy argument width
16756    GLMessage_DataType *arg_width = glmsg.add_args();
16757    arg_width->set_isarray(false);
16758    arg_width->set_type(GLMessage::DataType::INT);
16759    arg_width->add_intvalue(width);
16760
16761    // call function
16762    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16763    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16764    glContext->hooks->gl.glTextureStorage1DEXT(texture, target, levels, internalformat, width);
16765    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16766    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16767
16768    void *pointerArgs[] = {
16769    };
16770
16771    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16772                              threadStartTime, threadEndTime,
16773                              &glmsg, pointerArgs);
16774    glContext->traceGLMessage(&glmsg);
16775}
16776
16777void GLTrace_glTextureStorage2DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) {
16778    GLMessage glmsg;
16779    GLTraceContext *glContext = getGLTraceContext();
16780
16781    glmsg.set_function(GLMessage::glTextureStorage2DEXT);
16782
16783    // copy argument texture
16784    GLMessage_DataType *arg_texture = glmsg.add_args();
16785    arg_texture->set_isarray(false);
16786    arg_texture->set_type(GLMessage::DataType::INT);
16787    arg_texture->add_intvalue(texture);
16788
16789    // copy argument target
16790    GLMessage_DataType *arg_target = glmsg.add_args();
16791    arg_target->set_isarray(false);
16792    arg_target->set_type(GLMessage::DataType::ENUM);
16793    arg_target->add_intvalue((int)target);
16794
16795    // copy argument levels
16796    GLMessage_DataType *arg_levels = glmsg.add_args();
16797    arg_levels->set_isarray(false);
16798    arg_levels->set_type(GLMessage::DataType::INT);
16799    arg_levels->add_intvalue(levels);
16800
16801    // copy argument internalformat
16802    GLMessage_DataType *arg_internalformat = glmsg.add_args();
16803    arg_internalformat->set_isarray(false);
16804    arg_internalformat->set_type(GLMessage::DataType::ENUM);
16805    arg_internalformat->add_intvalue((int)internalformat);
16806
16807    // copy argument width
16808    GLMessage_DataType *arg_width = glmsg.add_args();
16809    arg_width->set_isarray(false);
16810    arg_width->set_type(GLMessage::DataType::INT);
16811    arg_width->add_intvalue(width);
16812
16813    // copy argument height
16814    GLMessage_DataType *arg_height = glmsg.add_args();
16815    arg_height->set_isarray(false);
16816    arg_height->set_type(GLMessage::DataType::INT);
16817    arg_height->add_intvalue(height);
16818
16819    // call function
16820    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16821    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16822    glContext->hooks->gl.glTextureStorage2DEXT(texture, target, levels, internalformat, width, height);
16823    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16824    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16825
16826    void *pointerArgs[] = {
16827    };
16828
16829    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16830                              threadStartTime, threadEndTime,
16831                              &glmsg, pointerArgs);
16832    glContext->traceGLMessage(&glmsg);
16833}
16834
16835void GLTrace_glTextureStorage3DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) {
16836    GLMessage glmsg;
16837    GLTraceContext *glContext = getGLTraceContext();
16838
16839    glmsg.set_function(GLMessage::glTextureStorage3DEXT);
16840
16841    // copy argument texture
16842    GLMessage_DataType *arg_texture = glmsg.add_args();
16843    arg_texture->set_isarray(false);
16844    arg_texture->set_type(GLMessage::DataType::INT);
16845    arg_texture->add_intvalue(texture);
16846
16847    // copy argument target
16848    GLMessage_DataType *arg_target = glmsg.add_args();
16849    arg_target->set_isarray(false);
16850    arg_target->set_type(GLMessage::DataType::ENUM);
16851    arg_target->add_intvalue((int)target);
16852
16853    // copy argument levels
16854    GLMessage_DataType *arg_levels = glmsg.add_args();
16855    arg_levels->set_isarray(false);
16856    arg_levels->set_type(GLMessage::DataType::INT);
16857    arg_levels->add_intvalue(levels);
16858
16859    // copy argument internalformat
16860    GLMessage_DataType *arg_internalformat = glmsg.add_args();
16861    arg_internalformat->set_isarray(false);
16862    arg_internalformat->set_type(GLMessage::DataType::ENUM);
16863    arg_internalformat->add_intvalue((int)internalformat);
16864
16865    // copy argument width
16866    GLMessage_DataType *arg_width = glmsg.add_args();
16867    arg_width->set_isarray(false);
16868    arg_width->set_type(GLMessage::DataType::INT);
16869    arg_width->add_intvalue(width);
16870
16871    // copy argument height
16872    GLMessage_DataType *arg_height = glmsg.add_args();
16873    arg_height->set_isarray(false);
16874    arg_height->set_type(GLMessage::DataType::INT);
16875    arg_height->add_intvalue(height);
16876
16877    // copy argument depth
16878    GLMessage_DataType *arg_depth = glmsg.add_args();
16879    arg_depth->set_isarray(false);
16880    arg_depth->set_type(GLMessage::DataType::INT);
16881    arg_depth->add_intvalue(depth);
16882
16883    // call function
16884    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16885    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16886    glContext->hooks->gl.glTextureStorage3DEXT(texture, target, levels, internalformat, width, height, depth);
16887    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16888    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16889
16890    void *pointerArgs[] = {
16891    };
16892
16893    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16894                              threadStartTime, threadEndTime,
16895                              &glmsg, pointerArgs);
16896    glContext->traceGLMessage(&glmsg);
16897}
16898
16899void GLTrace_glRenderbufferStorageMultisampleIMG(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
16900    GLMessage glmsg;
16901    GLTraceContext *glContext = getGLTraceContext();
16902
16903    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleIMG);
16904
16905    // copy argument target
16906    GLMessage_DataType *arg_target = glmsg.add_args();
16907    arg_target->set_isarray(false);
16908    arg_target->set_type(GLMessage::DataType::ENUM);
16909    arg_target->add_intvalue((int)target);
16910
16911    // copy argument samples
16912    GLMessage_DataType *arg_samples = glmsg.add_args();
16913    arg_samples->set_isarray(false);
16914    arg_samples->set_type(GLMessage::DataType::INT);
16915    arg_samples->add_intvalue(samples);
16916
16917    // copy argument internalformat
16918    GLMessage_DataType *arg_internalformat = glmsg.add_args();
16919    arg_internalformat->set_isarray(false);
16920    arg_internalformat->set_type(GLMessage::DataType::ENUM);
16921    arg_internalformat->add_intvalue((int)internalformat);
16922
16923    // copy argument width
16924    GLMessage_DataType *arg_width = glmsg.add_args();
16925    arg_width->set_isarray(false);
16926    arg_width->set_type(GLMessage::DataType::INT);
16927    arg_width->add_intvalue(width);
16928
16929    // copy argument height
16930    GLMessage_DataType *arg_height = glmsg.add_args();
16931    arg_height->set_isarray(false);
16932    arg_height->set_type(GLMessage::DataType::INT);
16933    arg_height->add_intvalue(height);
16934
16935    // call function
16936    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16937    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16938    glContext->hooks->gl.glRenderbufferStorageMultisampleIMG(target, samples, internalformat, width, height);
16939    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16940    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16941
16942    void *pointerArgs[] = {
16943    };
16944
16945    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16946                              threadStartTime, threadEndTime,
16947                              &glmsg, pointerArgs);
16948    glContext->traceGLMessage(&glmsg);
16949}
16950
16951void GLTrace_glFramebufferTexture2DMultisampleIMG(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples) {
16952    GLMessage glmsg;
16953    GLTraceContext *glContext = getGLTraceContext();
16954
16955    glmsg.set_function(GLMessage::glFramebufferTexture2DMultisampleIMG);
16956
16957    // copy argument target
16958    GLMessage_DataType *arg_target = glmsg.add_args();
16959    arg_target->set_isarray(false);
16960    arg_target->set_type(GLMessage::DataType::ENUM);
16961    arg_target->add_intvalue((int)target);
16962
16963    // copy argument attachment
16964    GLMessage_DataType *arg_attachment = glmsg.add_args();
16965    arg_attachment->set_isarray(false);
16966    arg_attachment->set_type(GLMessage::DataType::ENUM);
16967    arg_attachment->add_intvalue((int)attachment);
16968
16969    // copy argument textarget
16970    GLMessage_DataType *arg_textarget = glmsg.add_args();
16971    arg_textarget->set_isarray(false);
16972    arg_textarget->set_type(GLMessage::DataType::ENUM);
16973    arg_textarget->add_intvalue((int)textarget);
16974
16975    // copy argument texture
16976    GLMessage_DataType *arg_texture = glmsg.add_args();
16977    arg_texture->set_isarray(false);
16978    arg_texture->set_type(GLMessage::DataType::INT);
16979    arg_texture->add_intvalue(texture);
16980
16981    // copy argument level
16982    GLMessage_DataType *arg_level = glmsg.add_args();
16983    arg_level->set_isarray(false);
16984    arg_level->set_type(GLMessage::DataType::INT);
16985    arg_level->add_intvalue(level);
16986
16987    // copy argument samples
16988    GLMessage_DataType *arg_samples = glmsg.add_args();
16989    arg_samples->set_isarray(false);
16990    arg_samples->set_type(GLMessage::DataType::INT);
16991    arg_samples->add_intvalue(samples);
16992
16993    // call function
16994    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16995    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16996    glContext->hooks->gl.glFramebufferTexture2DMultisampleIMG(target, attachment, textarget, texture, level, samples);
16997    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16998    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16999
17000    void *pointerArgs[] = {
17001    };
17002
17003    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17004                              threadStartTime, threadEndTime,
17005                              &glmsg, pointerArgs);
17006    glContext->traceGLMessage(&glmsg);
17007}
17008
17009void GLTrace_glBeginPerfQueryINTEL(GLuint queryHandle) {
17010    GLMessage glmsg;
17011    GLTraceContext *glContext = getGLTraceContext();
17012
17013    glmsg.set_function(GLMessage::glBeginPerfQueryINTEL);
17014
17015    // copy argument queryHandle
17016    GLMessage_DataType *arg_queryHandle = glmsg.add_args();
17017    arg_queryHandle->set_isarray(false);
17018    arg_queryHandle->set_type(GLMessage::DataType::INT);
17019    arg_queryHandle->add_intvalue(queryHandle);
17020
17021    // call function
17022    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17023    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17024    glContext->hooks->gl.glBeginPerfQueryINTEL(queryHandle);
17025    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17026    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17027
17028    void *pointerArgs[] = {
17029    };
17030
17031    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17032                              threadStartTime, threadEndTime,
17033                              &glmsg, pointerArgs);
17034    glContext->traceGLMessage(&glmsg);
17035}
17036
17037void GLTrace_glCreatePerfQueryINTEL(GLuint queryId, GLuint * queryHandle) {
17038    GLMessage glmsg;
17039    GLTraceContext *glContext = getGLTraceContext();
17040
17041    glmsg.set_function(GLMessage::glCreatePerfQueryINTEL);
17042
17043    // copy argument queryId
17044    GLMessage_DataType *arg_queryId = glmsg.add_args();
17045    arg_queryId->set_isarray(false);
17046    arg_queryId->set_type(GLMessage::DataType::INT);
17047    arg_queryId->add_intvalue(queryId);
17048
17049    // copy argument queryHandle
17050    GLMessage_DataType *arg_queryHandle = glmsg.add_args();
17051    arg_queryHandle->set_isarray(false);
17052    arg_queryHandle->set_type(GLMessage::DataType::INT64);
17053    arg_queryHandle->add_int64value((uintptr_t)queryHandle);
17054
17055    // call function
17056    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17057    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17058    glContext->hooks->gl.glCreatePerfQueryINTEL(queryId, queryHandle);
17059    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17060    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17061
17062    void *pointerArgs[] = {
17063        (void *) queryHandle,
17064    };
17065
17066    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17067                              threadStartTime, threadEndTime,
17068                              &glmsg, pointerArgs);
17069    glContext->traceGLMessage(&glmsg);
17070}
17071
17072void GLTrace_glDeletePerfQueryINTEL(GLuint queryHandle) {
17073    GLMessage glmsg;
17074    GLTraceContext *glContext = getGLTraceContext();
17075
17076    glmsg.set_function(GLMessage::glDeletePerfQueryINTEL);
17077
17078    // copy argument queryHandle
17079    GLMessage_DataType *arg_queryHandle = glmsg.add_args();
17080    arg_queryHandle->set_isarray(false);
17081    arg_queryHandle->set_type(GLMessage::DataType::INT);
17082    arg_queryHandle->add_intvalue(queryHandle);
17083
17084    // call function
17085    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17086    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17087    glContext->hooks->gl.glDeletePerfQueryINTEL(queryHandle);
17088    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17089    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17090
17091    void *pointerArgs[] = {
17092    };
17093
17094    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17095                              threadStartTime, threadEndTime,
17096                              &glmsg, pointerArgs);
17097    glContext->traceGLMessage(&glmsg);
17098}
17099
17100void GLTrace_glEndPerfQueryINTEL(GLuint queryHandle) {
17101    GLMessage glmsg;
17102    GLTraceContext *glContext = getGLTraceContext();
17103
17104    glmsg.set_function(GLMessage::glEndPerfQueryINTEL);
17105
17106    // copy argument queryHandle
17107    GLMessage_DataType *arg_queryHandle = glmsg.add_args();
17108    arg_queryHandle->set_isarray(false);
17109    arg_queryHandle->set_type(GLMessage::DataType::INT);
17110    arg_queryHandle->add_intvalue(queryHandle);
17111
17112    // call function
17113    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17114    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17115    glContext->hooks->gl.glEndPerfQueryINTEL(queryHandle);
17116    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17117    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17118
17119    void *pointerArgs[] = {
17120    };
17121
17122    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17123                              threadStartTime, threadEndTime,
17124                              &glmsg, pointerArgs);
17125    glContext->traceGLMessage(&glmsg);
17126}
17127
17128void GLTrace_glGetFirstPerfQueryIdINTEL(GLuint * queryId) {
17129    GLMessage glmsg;
17130    GLTraceContext *glContext = getGLTraceContext();
17131
17132    glmsg.set_function(GLMessage::glGetFirstPerfQueryIdINTEL);
17133
17134    // copy argument queryId
17135    GLMessage_DataType *arg_queryId = glmsg.add_args();
17136    arg_queryId->set_isarray(false);
17137    arg_queryId->set_type(GLMessage::DataType::INT64);
17138    arg_queryId->add_int64value((uintptr_t)queryId);
17139
17140    // call function
17141    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17142    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17143    glContext->hooks->gl.glGetFirstPerfQueryIdINTEL(queryId);
17144    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17145    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17146
17147    void *pointerArgs[] = {
17148        (void *) queryId,
17149    };
17150
17151    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17152                              threadStartTime, threadEndTime,
17153                              &glmsg, pointerArgs);
17154    glContext->traceGLMessage(&glmsg);
17155}
17156
17157void GLTrace_glGetNextPerfQueryIdINTEL(GLuint queryId, GLuint * nextQueryId) {
17158    GLMessage glmsg;
17159    GLTraceContext *glContext = getGLTraceContext();
17160
17161    glmsg.set_function(GLMessage::glGetNextPerfQueryIdINTEL);
17162
17163    // copy argument queryId
17164    GLMessage_DataType *arg_queryId = glmsg.add_args();
17165    arg_queryId->set_isarray(false);
17166    arg_queryId->set_type(GLMessage::DataType::INT);
17167    arg_queryId->add_intvalue(queryId);
17168
17169    // copy argument nextQueryId
17170    GLMessage_DataType *arg_nextQueryId = glmsg.add_args();
17171    arg_nextQueryId->set_isarray(false);
17172    arg_nextQueryId->set_type(GLMessage::DataType::INT64);
17173    arg_nextQueryId->add_int64value((uintptr_t)nextQueryId);
17174
17175    // call function
17176    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17177    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17178    glContext->hooks->gl.glGetNextPerfQueryIdINTEL(queryId, nextQueryId);
17179    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17180    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17181
17182    void *pointerArgs[] = {
17183        (void *) nextQueryId,
17184    };
17185
17186    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17187                              threadStartTime, threadEndTime,
17188                              &glmsg, pointerArgs);
17189    glContext->traceGLMessage(&glmsg);
17190}
17191
17192void GLTrace_glGetPerfCounterInfoINTEL(GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar * counterName, GLuint counterDescLength, GLchar * counterDesc, GLuint * counterOffset, GLuint * counterDataSize, GLuint * counterTypeEnum, GLuint * counterDataTypeEnum, GLuint64 * rawCounterMaxValue) {
17193    GLMessage glmsg;
17194    GLTraceContext *glContext = getGLTraceContext();
17195
17196    glmsg.set_function(GLMessage::glGetPerfCounterInfoINTEL);
17197
17198    // copy argument queryId
17199    GLMessage_DataType *arg_queryId = glmsg.add_args();
17200    arg_queryId->set_isarray(false);
17201    arg_queryId->set_type(GLMessage::DataType::INT);
17202    arg_queryId->add_intvalue(queryId);
17203
17204    // copy argument counterId
17205    GLMessage_DataType *arg_counterId = glmsg.add_args();
17206    arg_counterId->set_isarray(false);
17207    arg_counterId->set_type(GLMessage::DataType::INT);
17208    arg_counterId->add_intvalue(counterId);
17209
17210    // copy argument counterNameLength
17211    GLMessage_DataType *arg_counterNameLength = glmsg.add_args();
17212    arg_counterNameLength->set_isarray(false);
17213    arg_counterNameLength->set_type(GLMessage::DataType::INT);
17214    arg_counterNameLength->add_intvalue(counterNameLength);
17215
17216    // copy argument counterName
17217    GLMessage_DataType *arg_counterName = glmsg.add_args();
17218    arg_counterName->set_isarray(false);
17219    arg_counterName->set_type(GLMessage::DataType::INT64);
17220    arg_counterName->add_int64value((uintptr_t)counterName);
17221
17222    // copy argument counterDescLength
17223    GLMessage_DataType *arg_counterDescLength = glmsg.add_args();
17224    arg_counterDescLength->set_isarray(false);
17225    arg_counterDescLength->set_type(GLMessage::DataType::INT);
17226    arg_counterDescLength->add_intvalue(counterDescLength);
17227
17228    // copy argument counterDesc
17229    GLMessage_DataType *arg_counterDesc = glmsg.add_args();
17230    arg_counterDesc->set_isarray(false);
17231    arg_counterDesc->set_type(GLMessage::DataType::INT64);
17232    arg_counterDesc->add_int64value((uintptr_t)counterDesc);
17233
17234    // copy argument counterOffset
17235    GLMessage_DataType *arg_counterOffset = glmsg.add_args();
17236    arg_counterOffset->set_isarray(false);
17237    arg_counterOffset->set_type(GLMessage::DataType::INT64);
17238    arg_counterOffset->add_int64value((uintptr_t)counterOffset);
17239
17240    // copy argument counterDataSize
17241    GLMessage_DataType *arg_counterDataSize = glmsg.add_args();
17242    arg_counterDataSize->set_isarray(false);
17243    arg_counterDataSize->set_type(GLMessage::DataType::INT64);
17244    arg_counterDataSize->add_int64value((uintptr_t)counterDataSize);
17245
17246    // copy argument counterTypeEnum
17247    GLMessage_DataType *arg_counterTypeEnum = glmsg.add_args();
17248    arg_counterTypeEnum->set_isarray(false);
17249    arg_counterTypeEnum->set_type(GLMessage::DataType::INT64);
17250    arg_counterTypeEnum->add_int64value((uintptr_t)counterTypeEnum);
17251
17252    // copy argument counterDataTypeEnum
17253    GLMessage_DataType *arg_counterDataTypeEnum = glmsg.add_args();
17254    arg_counterDataTypeEnum->set_isarray(false);
17255    arg_counterDataTypeEnum->set_type(GLMessage::DataType::INT64);
17256    arg_counterDataTypeEnum->add_int64value((uintptr_t)counterDataTypeEnum);
17257
17258    // copy argument rawCounterMaxValue
17259    GLMessage_DataType *arg_rawCounterMaxValue = glmsg.add_args();
17260    arg_rawCounterMaxValue->set_isarray(false);
17261    arg_rawCounterMaxValue->set_type(GLMessage::DataType::INT64);
17262    arg_rawCounterMaxValue->add_int64value((uintptr_t)rawCounterMaxValue);
17263
17264    // call function
17265    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17266    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17267    glContext->hooks->gl.glGetPerfCounterInfoINTEL(queryId, counterId, counterNameLength, counterName, counterDescLength, counterDesc, counterOffset, counterDataSize, counterTypeEnum, counterDataTypeEnum, rawCounterMaxValue);
17268    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17269    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17270
17271    void *pointerArgs[] = {
17272        (void *) counterName,
17273        (void *) counterDesc,
17274        (void *) counterOffset,
17275        (void *) counterDataSize,
17276        (void *) counterTypeEnum,
17277        (void *) counterDataTypeEnum,
17278        (void *) rawCounterMaxValue,
17279    };
17280
17281    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17282                              threadStartTime, threadEndTime,
17283                              &glmsg, pointerArgs);
17284    glContext->traceGLMessage(&glmsg);
17285}
17286
17287void GLTrace_glGetPerfQueryDataINTEL(GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid * data, GLuint * bytesWritten) {
17288    GLMessage glmsg;
17289    GLTraceContext *glContext = getGLTraceContext();
17290
17291    glmsg.set_function(GLMessage::glGetPerfQueryDataINTEL);
17292
17293    // copy argument queryHandle
17294    GLMessage_DataType *arg_queryHandle = glmsg.add_args();
17295    arg_queryHandle->set_isarray(false);
17296    arg_queryHandle->set_type(GLMessage::DataType::INT);
17297    arg_queryHandle->add_intvalue(queryHandle);
17298
17299    // copy argument flags
17300    GLMessage_DataType *arg_flags = glmsg.add_args();
17301    arg_flags->set_isarray(false);
17302    arg_flags->set_type(GLMessage::DataType::INT);
17303    arg_flags->add_intvalue(flags);
17304
17305    // copy argument dataSize
17306    GLMessage_DataType *arg_dataSize = glmsg.add_args();
17307    arg_dataSize->set_isarray(false);
17308    arg_dataSize->set_type(GLMessage::DataType::INT);
17309    arg_dataSize->add_intvalue(dataSize);
17310
17311    // copy argument data
17312    GLMessage_DataType *arg_data = glmsg.add_args();
17313    arg_data->set_isarray(false);
17314    arg_data->set_type(GLMessage::DataType::INT64);
17315    arg_data->add_int64value((uintptr_t)data);
17316
17317    // copy argument bytesWritten
17318    GLMessage_DataType *arg_bytesWritten = glmsg.add_args();
17319    arg_bytesWritten->set_isarray(false);
17320    arg_bytesWritten->set_type(GLMessage::DataType::INT64);
17321    arg_bytesWritten->add_int64value((uintptr_t)bytesWritten);
17322
17323    // call function
17324    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17325    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17326    glContext->hooks->gl.glGetPerfQueryDataINTEL(queryHandle, flags, dataSize, data, bytesWritten);
17327    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17328    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17329
17330    void *pointerArgs[] = {
17331        (void *) data,
17332        (void *) bytesWritten,
17333    };
17334
17335    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17336                              threadStartTime, threadEndTime,
17337                              &glmsg, pointerArgs);
17338    glContext->traceGLMessage(&glmsg);
17339}
17340
17341void GLTrace_glGetPerfQueryIdByNameINTEL(GLchar * queryName, GLuint * queryId) {
17342    GLMessage glmsg;
17343    GLTraceContext *glContext = getGLTraceContext();
17344
17345    glmsg.set_function(GLMessage::glGetPerfQueryIdByNameINTEL);
17346
17347    // copy argument queryName
17348    GLMessage_DataType *arg_queryName = glmsg.add_args();
17349    arg_queryName->set_isarray(false);
17350    arg_queryName->set_type(GLMessage::DataType::INT64);
17351    arg_queryName->add_int64value((uintptr_t)queryName);
17352
17353    // copy argument queryId
17354    GLMessage_DataType *arg_queryId = glmsg.add_args();
17355    arg_queryId->set_isarray(false);
17356    arg_queryId->set_type(GLMessage::DataType::INT64);
17357    arg_queryId->add_int64value((uintptr_t)queryId);
17358
17359    // call function
17360    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17361    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17362    glContext->hooks->gl.glGetPerfQueryIdByNameINTEL(queryName, queryId);
17363    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17364    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17365
17366    void *pointerArgs[] = {
17367        (void *) queryName,
17368        (void *) queryId,
17369    };
17370
17371    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17372                              threadStartTime, threadEndTime,
17373                              &glmsg, pointerArgs);
17374    glContext->traceGLMessage(&glmsg);
17375}
17376
17377void GLTrace_glGetPerfQueryInfoINTEL(GLuint queryId, GLuint queryNameLength, GLchar * queryName, GLuint * dataSize, GLuint * noCounters, GLuint * noInstances, GLuint * capsMask) {
17378    GLMessage glmsg;
17379    GLTraceContext *glContext = getGLTraceContext();
17380
17381    glmsg.set_function(GLMessage::glGetPerfQueryInfoINTEL);
17382
17383    // copy argument queryId
17384    GLMessage_DataType *arg_queryId = glmsg.add_args();
17385    arg_queryId->set_isarray(false);
17386    arg_queryId->set_type(GLMessage::DataType::INT);
17387    arg_queryId->add_intvalue(queryId);
17388
17389    // copy argument queryNameLength
17390    GLMessage_DataType *arg_queryNameLength = glmsg.add_args();
17391    arg_queryNameLength->set_isarray(false);
17392    arg_queryNameLength->set_type(GLMessage::DataType::INT);
17393    arg_queryNameLength->add_intvalue(queryNameLength);
17394
17395    // copy argument queryName
17396    GLMessage_DataType *arg_queryName = glmsg.add_args();
17397    arg_queryName->set_isarray(false);
17398    arg_queryName->set_type(GLMessage::DataType::INT64);
17399    arg_queryName->add_int64value((uintptr_t)queryName);
17400
17401    // copy argument dataSize
17402    GLMessage_DataType *arg_dataSize = glmsg.add_args();
17403    arg_dataSize->set_isarray(false);
17404    arg_dataSize->set_type(GLMessage::DataType::INT64);
17405    arg_dataSize->add_int64value((uintptr_t)dataSize);
17406
17407    // copy argument noCounters
17408    GLMessage_DataType *arg_noCounters = glmsg.add_args();
17409    arg_noCounters->set_isarray(false);
17410    arg_noCounters->set_type(GLMessage::DataType::INT64);
17411    arg_noCounters->add_int64value((uintptr_t)noCounters);
17412
17413    // copy argument noInstances
17414    GLMessage_DataType *arg_noInstances = glmsg.add_args();
17415    arg_noInstances->set_isarray(false);
17416    arg_noInstances->set_type(GLMessage::DataType::INT64);
17417    arg_noInstances->add_int64value((uintptr_t)noInstances);
17418
17419    // copy argument capsMask
17420    GLMessage_DataType *arg_capsMask = glmsg.add_args();
17421    arg_capsMask->set_isarray(false);
17422    arg_capsMask->set_type(GLMessage::DataType::INT64);
17423    arg_capsMask->add_int64value((uintptr_t)capsMask);
17424
17425    // call function
17426    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17427    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17428    glContext->hooks->gl.glGetPerfQueryInfoINTEL(queryId, queryNameLength, queryName, dataSize, noCounters, noInstances, capsMask);
17429    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17430    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17431
17432    void *pointerArgs[] = {
17433        (void *) queryName,
17434        (void *) dataSize,
17435        (void *) noCounters,
17436        (void *) noInstances,
17437        (void *) capsMask,
17438    };
17439
17440    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17441                              threadStartTime, threadEndTime,
17442                              &glmsg, pointerArgs);
17443    glContext->traceGLMessage(&glmsg);
17444}
17445
17446void GLTrace_glBlendParameteriNV(GLenum pname, GLint value) {
17447    GLMessage glmsg;
17448    GLTraceContext *glContext = getGLTraceContext();
17449
17450    glmsg.set_function(GLMessage::glBlendParameteriNV);
17451
17452    // copy argument pname
17453    GLMessage_DataType *arg_pname = glmsg.add_args();
17454    arg_pname->set_isarray(false);
17455    arg_pname->set_type(GLMessage::DataType::ENUM);
17456    arg_pname->add_intvalue((int)pname);
17457
17458    // copy argument value
17459    GLMessage_DataType *arg_value = glmsg.add_args();
17460    arg_value->set_isarray(false);
17461    arg_value->set_type(GLMessage::DataType::INT);
17462    arg_value->add_intvalue(value);
17463
17464    // call function
17465    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17466    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17467    glContext->hooks->gl.glBlendParameteriNV(pname, value);
17468    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17469    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17470
17471    void *pointerArgs[] = {
17472    };
17473
17474    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17475                              threadStartTime, threadEndTime,
17476                              &glmsg, pointerArgs);
17477    glContext->traceGLMessage(&glmsg);
17478}
17479
17480void GLTrace_glBlendBarrierNV(void) {
17481    GLMessage glmsg;
17482    GLTraceContext *glContext = getGLTraceContext();
17483
17484    glmsg.set_function(GLMessage::glBlendBarrierNV);
17485
17486    // call function
17487    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17488    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17489    glContext->hooks->gl.glBlendBarrierNV();
17490    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17491    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17492
17493    void *pointerArgs[] = {
17494    };
17495
17496    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17497                              threadStartTime, threadEndTime,
17498                              &glmsg, pointerArgs);
17499    glContext->traceGLMessage(&glmsg);
17500}
17501
17502void GLTrace_glCopyBufferSubDataNV(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) {
17503    GLMessage glmsg;
17504    GLTraceContext *glContext = getGLTraceContext();
17505
17506    glmsg.set_function(GLMessage::glCopyBufferSubDataNV);
17507
17508    // copy argument readTarget
17509    GLMessage_DataType *arg_readTarget = glmsg.add_args();
17510    arg_readTarget->set_isarray(false);
17511    arg_readTarget->set_type(GLMessage::DataType::ENUM);
17512    arg_readTarget->add_intvalue((int)readTarget);
17513
17514    // copy argument writeTarget
17515    GLMessage_DataType *arg_writeTarget = glmsg.add_args();
17516    arg_writeTarget->set_isarray(false);
17517    arg_writeTarget->set_type(GLMessage::DataType::ENUM);
17518    arg_writeTarget->add_intvalue((int)writeTarget);
17519
17520    // copy argument readOffset
17521    GLMessage_DataType *arg_readOffset = glmsg.add_args();
17522    arg_readOffset->set_isarray(false);
17523    arg_readOffset->set_type(GLMessage::DataType::INT);
17524    arg_readOffset->add_intvalue(readOffset);
17525
17526    // copy argument writeOffset
17527    GLMessage_DataType *arg_writeOffset = glmsg.add_args();
17528    arg_writeOffset->set_isarray(false);
17529    arg_writeOffset->set_type(GLMessage::DataType::INT);
17530    arg_writeOffset->add_intvalue(writeOffset);
17531
17532    // copy argument size
17533    GLMessage_DataType *arg_size = glmsg.add_args();
17534    arg_size->set_isarray(false);
17535    arg_size->set_type(GLMessage::DataType::INT);
17536    arg_size->add_intvalue(size);
17537
17538    // call function
17539    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17540    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17541    glContext->hooks->gl.glCopyBufferSubDataNV(readTarget, writeTarget, readOffset, writeOffset, size);
17542    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17543    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17544
17545    void *pointerArgs[] = {
17546    };
17547
17548    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17549                              threadStartTime, threadEndTime,
17550                              &glmsg, pointerArgs);
17551    glContext->traceGLMessage(&glmsg);
17552}
17553
17554void GLTrace_glCoverageMaskNV(GLboolean mask) {
17555    GLMessage glmsg;
17556    GLTraceContext *glContext = getGLTraceContext();
17557
17558    glmsg.set_function(GLMessage::glCoverageMaskNV);
17559
17560    // copy argument mask
17561    GLMessage_DataType *arg_mask = glmsg.add_args();
17562    arg_mask->set_isarray(false);
17563    arg_mask->set_type(GLMessage::DataType::BOOL);
17564    arg_mask->add_boolvalue(mask);
17565
17566    // call function
17567    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17568    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17569    glContext->hooks->gl.glCoverageMaskNV(mask);
17570    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17571    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17572
17573    void *pointerArgs[] = {
17574    };
17575
17576    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17577                              threadStartTime, threadEndTime,
17578                              &glmsg, pointerArgs);
17579    glContext->traceGLMessage(&glmsg);
17580}
17581
17582void GLTrace_glCoverageOperationNV(GLenum operation) {
17583    GLMessage glmsg;
17584    GLTraceContext *glContext = getGLTraceContext();
17585
17586    glmsg.set_function(GLMessage::glCoverageOperationNV);
17587
17588    // copy argument operation
17589    GLMessage_DataType *arg_operation = glmsg.add_args();
17590    arg_operation->set_isarray(false);
17591    arg_operation->set_type(GLMessage::DataType::ENUM);
17592    arg_operation->add_intvalue((int)operation);
17593
17594    // call function
17595    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17596    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17597    glContext->hooks->gl.glCoverageOperationNV(operation);
17598    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17599    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17600
17601    void *pointerArgs[] = {
17602    };
17603
17604    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17605                              threadStartTime, threadEndTime,
17606                              &glmsg, pointerArgs);
17607    glContext->traceGLMessage(&glmsg);
17608}
17609
17610void GLTrace_glDrawBuffersNV(GLsizei n, const GLenum * bufs) {
17611    GLMessage glmsg;
17612    GLTraceContext *glContext = getGLTraceContext();
17613
17614    glmsg.set_function(GLMessage::glDrawBuffersNV);
17615
17616    // copy argument n
17617    GLMessage_DataType *arg_n = glmsg.add_args();
17618    arg_n->set_isarray(false);
17619    arg_n->set_type(GLMessage::DataType::INT);
17620    arg_n->add_intvalue(n);
17621
17622    // copy argument bufs
17623    GLMessage_DataType *arg_bufs = glmsg.add_args();
17624    arg_bufs->set_isarray(false);
17625    arg_bufs->set_type(GLMessage::DataType::INT64);
17626    arg_bufs->add_int64value((uintptr_t)bufs);
17627
17628    // call function
17629    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17630    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17631    glContext->hooks->gl.glDrawBuffersNV(n, bufs);
17632    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17633    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17634
17635    void *pointerArgs[] = {
17636        (void *) bufs,
17637    };
17638
17639    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17640                              threadStartTime, threadEndTime,
17641                              &glmsg, pointerArgs);
17642    glContext->traceGLMessage(&glmsg);
17643}
17644
17645void GLTrace_glDrawArraysInstancedNV(GLenum mode, GLint first, GLsizei count, GLsizei primcount) {
17646    GLMessage glmsg;
17647    GLTraceContext *glContext = getGLTraceContext();
17648
17649    glmsg.set_function(GLMessage::glDrawArraysInstancedNV);
17650
17651    // copy argument mode
17652    GLMessage_DataType *arg_mode = glmsg.add_args();
17653    arg_mode->set_isarray(false);
17654    arg_mode->set_type(GLMessage::DataType::ENUM);
17655    arg_mode->add_intvalue((int)mode);
17656
17657    // copy argument first
17658    GLMessage_DataType *arg_first = glmsg.add_args();
17659    arg_first->set_isarray(false);
17660    arg_first->set_type(GLMessage::DataType::INT);
17661    arg_first->add_intvalue(first);
17662
17663    // copy argument count
17664    GLMessage_DataType *arg_count = glmsg.add_args();
17665    arg_count->set_isarray(false);
17666    arg_count->set_type(GLMessage::DataType::INT);
17667    arg_count->add_intvalue(count);
17668
17669    // copy argument primcount
17670    GLMessage_DataType *arg_primcount = glmsg.add_args();
17671    arg_primcount->set_isarray(false);
17672    arg_primcount->set_type(GLMessage::DataType::INT);
17673    arg_primcount->add_intvalue(primcount);
17674
17675    // call function
17676    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17677    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17678    glContext->hooks->gl.glDrawArraysInstancedNV(mode, first, count, primcount);
17679    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17680    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17681
17682    void *pointerArgs[] = {
17683    };
17684
17685    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17686                              threadStartTime, threadEndTime,
17687                              &glmsg, pointerArgs);
17688    glContext->traceGLMessage(&glmsg);
17689}
17690
17691void GLTrace_glDrawElementsInstancedNV(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei primcount) {
17692    GLMessage glmsg;
17693    GLTraceContext *glContext = getGLTraceContext();
17694
17695    glmsg.set_function(GLMessage::glDrawElementsInstancedNV);
17696
17697    // copy argument mode
17698    GLMessage_DataType *arg_mode = glmsg.add_args();
17699    arg_mode->set_isarray(false);
17700    arg_mode->set_type(GLMessage::DataType::ENUM);
17701    arg_mode->add_intvalue((int)mode);
17702
17703    // copy argument count
17704    GLMessage_DataType *arg_count = glmsg.add_args();
17705    arg_count->set_isarray(false);
17706    arg_count->set_type(GLMessage::DataType::INT);
17707    arg_count->add_intvalue(count);
17708
17709    // copy argument type
17710    GLMessage_DataType *arg_type = glmsg.add_args();
17711    arg_type->set_isarray(false);
17712    arg_type->set_type(GLMessage::DataType::ENUM);
17713    arg_type->add_intvalue((int)type);
17714
17715    // copy argument indices
17716    GLMessage_DataType *arg_indices = glmsg.add_args();
17717    arg_indices->set_isarray(false);
17718    arg_indices->set_type(GLMessage::DataType::INT64);
17719    arg_indices->add_int64value((uintptr_t)indices);
17720
17721    // copy argument primcount
17722    GLMessage_DataType *arg_primcount = glmsg.add_args();
17723    arg_primcount->set_isarray(false);
17724    arg_primcount->set_type(GLMessage::DataType::INT);
17725    arg_primcount->add_intvalue(primcount);
17726
17727    // call function
17728    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17729    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17730    glContext->hooks->gl.glDrawElementsInstancedNV(mode, count, type, indices, primcount);
17731    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17732    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17733
17734    void *pointerArgs[] = {
17735        (void *) indices,
17736    };
17737
17738    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17739                              threadStartTime, threadEndTime,
17740                              &glmsg, pointerArgs);
17741    glContext->traceGLMessage(&glmsg);
17742}
17743
17744void GLTrace_glDeleteFencesNV(GLsizei n, const GLuint * fences) {
17745    GLMessage glmsg;
17746    GLTraceContext *glContext = getGLTraceContext();
17747
17748    glmsg.set_function(GLMessage::glDeleteFencesNV);
17749
17750    // copy argument n
17751    GLMessage_DataType *arg_n = glmsg.add_args();
17752    arg_n->set_isarray(false);
17753    arg_n->set_type(GLMessage::DataType::INT);
17754    arg_n->add_intvalue(n);
17755
17756    // copy argument fences
17757    GLMessage_DataType *arg_fences = glmsg.add_args();
17758    arg_fences->set_isarray(false);
17759    arg_fences->set_type(GLMessage::DataType::INT64);
17760    arg_fences->add_int64value((uintptr_t)fences);
17761
17762    // call function
17763    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17764    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17765    glContext->hooks->gl.glDeleteFencesNV(n, fences);
17766    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17767    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17768
17769    void *pointerArgs[] = {
17770        (void *) fences,
17771    };
17772
17773    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17774                              threadStartTime, threadEndTime,
17775                              &glmsg, pointerArgs);
17776    glContext->traceGLMessage(&glmsg);
17777}
17778
17779void GLTrace_glGenFencesNV(GLsizei n, GLuint * fences) {
17780    GLMessage glmsg;
17781    GLTraceContext *glContext = getGLTraceContext();
17782
17783    glmsg.set_function(GLMessage::glGenFencesNV);
17784
17785    // copy argument n
17786    GLMessage_DataType *arg_n = glmsg.add_args();
17787    arg_n->set_isarray(false);
17788    arg_n->set_type(GLMessage::DataType::INT);
17789    arg_n->add_intvalue(n);
17790
17791    // copy argument fences
17792    GLMessage_DataType *arg_fences = glmsg.add_args();
17793    arg_fences->set_isarray(false);
17794    arg_fences->set_type(GLMessage::DataType::INT64);
17795    arg_fences->add_int64value((uintptr_t)fences);
17796
17797    // call function
17798    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17799    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17800    glContext->hooks->gl.glGenFencesNV(n, fences);
17801    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17802    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17803
17804    void *pointerArgs[] = {
17805        (void *) fences,
17806    };
17807
17808    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17809                              threadStartTime, threadEndTime,
17810                              &glmsg, pointerArgs);
17811    glContext->traceGLMessage(&glmsg);
17812}
17813
17814GLboolean GLTrace_glIsFenceNV(GLuint fence) {
17815    GLMessage glmsg;
17816    GLTraceContext *glContext = getGLTraceContext();
17817
17818    glmsg.set_function(GLMessage::glIsFenceNV);
17819
17820    // copy argument fence
17821    GLMessage_DataType *arg_fence = glmsg.add_args();
17822    arg_fence->set_isarray(false);
17823    arg_fence->set_type(GLMessage::DataType::INT);
17824    arg_fence->add_intvalue(fence);
17825
17826    // call function
17827    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17828    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17829    GLboolean retValue = glContext->hooks->gl.glIsFenceNV(fence);
17830    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17831    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17832
17833    // set return value
17834    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
17835    rt->set_isarray(false);
17836    rt->set_type(GLMessage::DataType::BOOL);
17837    rt->add_boolvalue(retValue);
17838
17839    void *pointerArgs[] = {
17840    };
17841
17842    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17843                              threadStartTime, threadEndTime,
17844                              &glmsg, pointerArgs);
17845    glContext->traceGLMessage(&glmsg);
17846
17847    return retValue;
17848}
17849
17850GLboolean GLTrace_glTestFenceNV(GLuint fence) {
17851    GLMessage glmsg;
17852    GLTraceContext *glContext = getGLTraceContext();
17853
17854    glmsg.set_function(GLMessage::glTestFenceNV);
17855
17856    // copy argument fence
17857    GLMessage_DataType *arg_fence = glmsg.add_args();
17858    arg_fence->set_isarray(false);
17859    arg_fence->set_type(GLMessage::DataType::INT);
17860    arg_fence->add_intvalue(fence);
17861
17862    // call function
17863    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17864    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17865    GLboolean retValue = glContext->hooks->gl.glTestFenceNV(fence);
17866    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17867    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17868
17869    // set return value
17870    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
17871    rt->set_isarray(false);
17872    rt->set_type(GLMessage::DataType::BOOL);
17873    rt->add_boolvalue(retValue);
17874
17875    void *pointerArgs[] = {
17876    };
17877
17878    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17879                              threadStartTime, threadEndTime,
17880                              &glmsg, pointerArgs);
17881    glContext->traceGLMessage(&glmsg);
17882
17883    return retValue;
17884}
17885
17886void GLTrace_glGetFenceivNV(GLuint fence, GLenum pname, GLint * params) {
17887    GLMessage glmsg;
17888    GLTraceContext *glContext = getGLTraceContext();
17889
17890    glmsg.set_function(GLMessage::glGetFenceivNV);
17891
17892    // copy argument fence
17893    GLMessage_DataType *arg_fence = glmsg.add_args();
17894    arg_fence->set_isarray(false);
17895    arg_fence->set_type(GLMessage::DataType::INT);
17896    arg_fence->add_intvalue(fence);
17897
17898    // copy argument pname
17899    GLMessage_DataType *arg_pname = glmsg.add_args();
17900    arg_pname->set_isarray(false);
17901    arg_pname->set_type(GLMessage::DataType::ENUM);
17902    arg_pname->add_intvalue((int)pname);
17903
17904    // copy argument params
17905    GLMessage_DataType *arg_params = glmsg.add_args();
17906    arg_params->set_isarray(false);
17907    arg_params->set_type(GLMessage::DataType::INT64);
17908    arg_params->add_int64value((uintptr_t)params);
17909
17910    // call function
17911    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17912    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17913    glContext->hooks->gl.glGetFenceivNV(fence, pname, params);
17914    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17915    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17916
17917    void *pointerArgs[] = {
17918        (void *) params,
17919    };
17920
17921    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17922                              threadStartTime, threadEndTime,
17923                              &glmsg, pointerArgs);
17924    glContext->traceGLMessage(&glmsg);
17925}
17926
17927void GLTrace_glFinishFenceNV(GLuint fence) {
17928    GLMessage glmsg;
17929    GLTraceContext *glContext = getGLTraceContext();
17930
17931    glmsg.set_function(GLMessage::glFinishFenceNV);
17932
17933    // copy argument fence
17934    GLMessage_DataType *arg_fence = glmsg.add_args();
17935    arg_fence->set_isarray(false);
17936    arg_fence->set_type(GLMessage::DataType::INT);
17937    arg_fence->add_intvalue(fence);
17938
17939    // call function
17940    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17941    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17942    glContext->hooks->gl.glFinishFenceNV(fence);
17943    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17944    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17945
17946    void *pointerArgs[] = {
17947    };
17948
17949    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17950                              threadStartTime, threadEndTime,
17951                              &glmsg, pointerArgs);
17952    glContext->traceGLMessage(&glmsg);
17953}
17954
17955void GLTrace_glSetFenceNV(GLuint fence, GLenum condition) {
17956    GLMessage glmsg;
17957    GLTraceContext *glContext = getGLTraceContext();
17958
17959    glmsg.set_function(GLMessage::glSetFenceNV);
17960
17961    // copy argument fence
17962    GLMessage_DataType *arg_fence = glmsg.add_args();
17963    arg_fence->set_isarray(false);
17964    arg_fence->set_type(GLMessage::DataType::INT);
17965    arg_fence->add_intvalue(fence);
17966
17967    // copy argument condition
17968    GLMessage_DataType *arg_condition = glmsg.add_args();
17969    arg_condition->set_isarray(false);
17970    arg_condition->set_type(GLMessage::DataType::ENUM);
17971    arg_condition->add_intvalue((int)condition);
17972
17973    // call function
17974    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17975    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17976    glContext->hooks->gl.glSetFenceNV(fence, condition);
17977    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17978    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17979
17980    void *pointerArgs[] = {
17981    };
17982
17983    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17984                              threadStartTime, threadEndTime,
17985                              &glmsg, pointerArgs);
17986    glContext->traceGLMessage(&glmsg);
17987}
17988
17989void GLTrace_glBlitFramebufferNV(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) {
17990    GLMessage glmsg;
17991    GLTraceContext *glContext = getGLTraceContext();
17992
17993    glmsg.set_function(GLMessage::glBlitFramebufferNV);
17994
17995    // copy argument srcX0
17996    GLMessage_DataType *arg_srcX0 = glmsg.add_args();
17997    arg_srcX0->set_isarray(false);
17998    arg_srcX0->set_type(GLMessage::DataType::INT);
17999    arg_srcX0->add_intvalue(srcX0);
18000
18001    // copy argument srcY0
18002    GLMessage_DataType *arg_srcY0 = glmsg.add_args();
18003    arg_srcY0->set_isarray(false);
18004    arg_srcY0->set_type(GLMessage::DataType::INT);
18005    arg_srcY0->add_intvalue(srcY0);
18006
18007    // copy argument srcX1
18008    GLMessage_DataType *arg_srcX1 = glmsg.add_args();
18009    arg_srcX1->set_isarray(false);
18010    arg_srcX1->set_type(GLMessage::DataType::INT);
18011    arg_srcX1->add_intvalue(srcX1);
18012
18013    // copy argument srcY1
18014    GLMessage_DataType *arg_srcY1 = glmsg.add_args();
18015    arg_srcY1->set_isarray(false);
18016    arg_srcY1->set_type(GLMessage::DataType::INT);
18017    arg_srcY1->add_intvalue(srcY1);
18018
18019    // copy argument dstX0
18020    GLMessage_DataType *arg_dstX0 = glmsg.add_args();
18021    arg_dstX0->set_isarray(false);
18022    arg_dstX0->set_type(GLMessage::DataType::INT);
18023    arg_dstX0->add_intvalue(dstX0);
18024
18025    // copy argument dstY0
18026    GLMessage_DataType *arg_dstY0 = glmsg.add_args();
18027    arg_dstY0->set_isarray(false);
18028    arg_dstY0->set_type(GLMessage::DataType::INT);
18029    arg_dstY0->add_intvalue(dstY0);
18030
18031    // copy argument dstX1
18032    GLMessage_DataType *arg_dstX1 = glmsg.add_args();
18033    arg_dstX1->set_isarray(false);
18034    arg_dstX1->set_type(GLMessage::DataType::INT);
18035    arg_dstX1->add_intvalue(dstX1);
18036
18037    // copy argument dstY1
18038    GLMessage_DataType *arg_dstY1 = glmsg.add_args();
18039    arg_dstY1->set_isarray(false);
18040    arg_dstY1->set_type(GLMessage::DataType::INT);
18041    arg_dstY1->add_intvalue(dstY1);
18042
18043    // copy argument mask
18044    GLMessage_DataType *arg_mask = glmsg.add_args();
18045    arg_mask->set_isarray(false);
18046    arg_mask->set_type(GLMessage::DataType::INT);
18047    arg_mask->add_intvalue(mask);
18048
18049    // copy argument filter
18050    GLMessage_DataType *arg_filter = glmsg.add_args();
18051    arg_filter->set_isarray(false);
18052    arg_filter->set_type(GLMessage::DataType::ENUM);
18053    arg_filter->add_intvalue((int)filter);
18054
18055    // call function
18056    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18057    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18058    glContext->hooks->gl.glBlitFramebufferNV(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
18059    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18060    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18061
18062    void *pointerArgs[] = {
18063    };
18064
18065    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18066                              threadStartTime, threadEndTime,
18067                              &glmsg, pointerArgs);
18068    glContext->traceGLMessage(&glmsg);
18069}
18070
18071void GLTrace_glRenderbufferStorageMultisampleNV(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
18072    GLMessage glmsg;
18073    GLTraceContext *glContext = getGLTraceContext();
18074
18075    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleNV);
18076
18077    // copy argument target
18078    GLMessage_DataType *arg_target = glmsg.add_args();
18079    arg_target->set_isarray(false);
18080    arg_target->set_type(GLMessage::DataType::ENUM);
18081    arg_target->add_intvalue((int)target);
18082
18083    // copy argument samples
18084    GLMessage_DataType *arg_samples = glmsg.add_args();
18085    arg_samples->set_isarray(false);
18086    arg_samples->set_type(GLMessage::DataType::INT);
18087    arg_samples->add_intvalue(samples);
18088
18089    // copy argument internalformat
18090    GLMessage_DataType *arg_internalformat = glmsg.add_args();
18091    arg_internalformat->set_isarray(false);
18092    arg_internalformat->set_type(GLMessage::DataType::ENUM);
18093    arg_internalformat->add_intvalue((int)internalformat);
18094
18095    // copy argument width
18096    GLMessage_DataType *arg_width = glmsg.add_args();
18097    arg_width->set_isarray(false);
18098    arg_width->set_type(GLMessage::DataType::INT);
18099    arg_width->add_intvalue(width);
18100
18101    // copy argument height
18102    GLMessage_DataType *arg_height = glmsg.add_args();
18103    arg_height->set_isarray(false);
18104    arg_height->set_type(GLMessage::DataType::INT);
18105    arg_height->add_intvalue(height);
18106
18107    // call function
18108    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18109    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18110    glContext->hooks->gl.glRenderbufferStorageMultisampleNV(target, samples, internalformat, width, height);
18111    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18112    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18113
18114    void *pointerArgs[] = {
18115    };
18116
18117    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18118                              threadStartTime, threadEndTime,
18119                              &glmsg, pointerArgs);
18120    glContext->traceGLMessage(&glmsg);
18121}
18122
18123void GLTrace_glVertexAttribDivisorNV(GLuint index, GLuint divisor) {
18124    GLMessage glmsg;
18125    GLTraceContext *glContext = getGLTraceContext();
18126
18127    glmsg.set_function(GLMessage::glVertexAttribDivisorNV);
18128
18129    // copy argument index
18130    GLMessage_DataType *arg_index = glmsg.add_args();
18131    arg_index->set_isarray(false);
18132    arg_index->set_type(GLMessage::DataType::INT);
18133    arg_index->add_intvalue(index);
18134
18135    // copy argument divisor
18136    GLMessage_DataType *arg_divisor = glmsg.add_args();
18137    arg_divisor->set_isarray(false);
18138    arg_divisor->set_type(GLMessage::DataType::INT);
18139    arg_divisor->add_intvalue(divisor);
18140
18141    // call function
18142    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18143    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18144    glContext->hooks->gl.glVertexAttribDivisorNV(index, divisor);
18145    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18146    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18147
18148    void *pointerArgs[] = {
18149    };
18150
18151    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18152                              threadStartTime, threadEndTime,
18153                              &glmsg, pointerArgs);
18154    glContext->traceGLMessage(&glmsg);
18155}
18156
18157void GLTrace_glUniformMatrix2x3fvNV(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
18158    GLMessage glmsg;
18159    GLTraceContext *glContext = getGLTraceContext();
18160
18161    glmsg.set_function(GLMessage::glUniformMatrix2x3fvNV);
18162
18163    // copy argument location
18164    GLMessage_DataType *arg_location = glmsg.add_args();
18165    arg_location->set_isarray(false);
18166    arg_location->set_type(GLMessage::DataType::INT);
18167    arg_location->add_intvalue(location);
18168
18169    // copy argument count
18170    GLMessage_DataType *arg_count = glmsg.add_args();
18171    arg_count->set_isarray(false);
18172    arg_count->set_type(GLMessage::DataType::INT);
18173    arg_count->add_intvalue(count);
18174
18175    // copy argument transpose
18176    GLMessage_DataType *arg_transpose = glmsg.add_args();
18177    arg_transpose->set_isarray(false);
18178    arg_transpose->set_type(GLMessage::DataType::BOOL);
18179    arg_transpose->add_boolvalue(transpose);
18180
18181    // copy argument value
18182    GLMessage_DataType *arg_value = glmsg.add_args();
18183    arg_value->set_isarray(false);
18184    arg_value->set_type(GLMessage::DataType::INT64);
18185    arg_value->add_int64value((uintptr_t)value);
18186
18187    // call function
18188    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18189    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18190    glContext->hooks->gl.glUniformMatrix2x3fvNV(location, count, transpose, value);
18191    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18192    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18193
18194    void *pointerArgs[] = {
18195        (void *) value,
18196    };
18197
18198    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18199                              threadStartTime, threadEndTime,
18200                              &glmsg, pointerArgs);
18201    glContext->traceGLMessage(&glmsg);
18202}
18203
18204void GLTrace_glUniformMatrix3x2fvNV(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
18205    GLMessage glmsg;
18206    GLTraceContext *glContext = getGLTraceContext();
18207
18208    glmsg.set_function(GLMessage::glUniformMatrix3x2fvNV);
18209
18210    // copy argument location
18211    GLMessage_DataType *arg_location = glmsg.add_args();
18212    arg_location->set_isarray(false);
18213    arg_location->set_type(GLMessage::DataType::INT);
18214    arg_location->add_intvalue(location);
18215
18216    // copy argument count
18217    GLMessage_DataType *arg_count = glmsg.add_args();
18218    arg_count->set_isarray(false);
18219    arg_count->set_type(GLMessage::DataType::INT);
18220    arg_count->add_intvalue(count);
18221
18222    // copy argument transpose
18223    GLMessage_DataType *arg_transpose = glmsg.add_args();
18224    arg_transpose->set_isarray(false);
18225    arg_transpose->set_type(GLMessage::DataType::BOOL);
18226    arg_transpose->add_boolvalue(transpose);
18227
18228    // copy argument value
18229    GLMessage_DataType *arg_value = glmsg.add_args();
18230    arg_value->set_isarray(false);
18231    arg_value->set_type(GLMessage::DataType::INT64);
18232    arg_value->add_int64value((uintptr_t)value);
18233
18234    // call function
18235    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18236    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18237    glContext->hooks->gl.glUniformMatrix3x2fvNV(location, count, transpose, value);
18238    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18239    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18240
18241    void *pointerArgs[] = {
18242        (void *) value,
18243    };
18244
18245    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18246                              threadStartTime, threadEndTime,
18247                              &glmsg, pointerArgs);
18248    glContext->traceGLMessage(&glmsg);
18249}
18250
18251void GLTrace_glUniformMatrix2x4fvNV(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
18252    GLMessage glmsg;
18253    GLTraceContext *glContext = getGLTraceContext();
18254
18255    glmsg.set_function(GLMessage::glUniformMatrix2x4fvNV);
18256
18257    // copy argument location
18258    GLMessage_DataType *arg_location = glmsg.add_args();
18259    arg_location->set_isarray(false);
18260    arg_location->set_type(GLMessage::DataType::INT);
18261    arg_location->add_intvalue(location);
18262
18263    // copy argument count
18264    GLMessage_DataType *arg_count = glmsg.add_args();
18265    arg_count->set_isarray(false);
18266    arg_count->set_type(GLMessage::DataType::INT);
18267    arg_count->add_intvalue(count);
18268
18269    // copy argument transpose
18270    GLMessage_DataType *arg_transpose = glmsg.add_args();
18271    arg_transpose->set_isarray(false);
18272    arg_transpose->set_type(GLMessage::DataType::BOOL);
18273    arg_transpose->add_boolvalue(transpose);
18274
18275    // copy argument value
18276    GLMessage_DataType *arg_value = glmsg.add_args();
18277    arg_value->set_isarray(false);
18278    arg_value->set_type(GLMessage::DataType::INT64);
18279    arg_value->add_int64value((uintptr_t)value);
18280
18281    // call function
18282    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18283    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18284    glContext->hooks->gl.glUniformMatrix2x4fvNV(location, count, transpose, value);
18285    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18286    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18287
18288    void *pointerArgs[] = {
18289        (void *) value,
18290    };
18291
18292    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18293                              threadStartTime, threadEndTime,
18294                              &glmsg, pointerArgs);
18295    glContext->traceGLMessage(&glmsg);
18296}
18297
18298void GLTrace_glUniformMatrix4x2fvNV(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
18299    GLMessage glmsg;
18300    GLTraceContext *glContext = getGLTraceContext();
18301
18302    glmsg.set_function(GLMessage::glUniformMatrix4x2fvNV);
18303
18304    // copy argument location
18305    GLMessage_DataType *arg_location = glmsg.add_args();
18306    arg_location->set_isarray(false);
18307    arg_location->set_type(GLMessage::DataType::INT);
18308    arg_location->add_intvalue(location);
18309
18310    // copy argument count
18311    GLMessage_DataType *arg_count = glmsg.add_args();
18312    arg_count->set_isarray(false);
18313    arg_count->set_type(GLMessage::DataType::INT);
18314    arg_count->add_intvalue(count);
18315
18316    // copy argument transpose
18317    GLMessage_DataType *arg_transpose = glmsg.add_args();
18318    arg_transpose->set_isarray(false);
18319    arg_transpose->set_type(GLMessage::DataType::BOOL);
18320    arg_transpose->add_boolvalue(transpose);
18321
18322    // copy argument value
18323    GLMessage_DataType *arg_value = glmsg.add_args();
18324    arg_value->set_isarray(false);
18325    arg_value->set_type(GLMessage::DataType::INT64);
18326    arg_value->add_int64value((uintptr_t)value);
18327
18328    // call function
18329    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18330    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18331    glContext->hooks->gl.glUniformMatrix4x2fvNV(location, count, transpose, value);
18332    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18333    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18334
18335    void *pointerArgs[] = {
18336        (void *) value,
18337    };
18338
18339    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18340                              threadStartTime, threadEndTime,
18341                              &glmsg, pointerArgs);
18342    glContext->traceGLMessage(&glmsg);
18343}
18344
18345void GLTrace_glUniformMatrix3x4fvNV(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
18346    GLMessage glmsg;
18347    GLTraceContext *glContext = getGLTraceContext();
18348
18349    glmsg.set_function(GLMessage::glUniformMatrix3x4fvNV);
18350
18351    // copy argument location
18352    GLMessage_DataType *arg_location = glmsg.add_args();
18353    arg_location->set_isarray(false);
18354    arg_location->set_type(GLMessage::DataType::INT);
18355    arg_location->add_intvalue(location);
18356
18357    // copy argument count
18358    GLMessage_DataType *arg_count = glmsg.add_args();
18359    arg_count->set_isarray(false);
18360    arg_count->set_type(GLMessage::DataType::INT);
18361    arg_count->add_intvalue(count);
18362
18363    // copy argument transpose
18364    GLMessage_DataType *arg_transpose = glmsg.add_args();
18365    arg_transpose->set_isarray(false);
18366    arg_transpose->set_type(GLMessage::DataType::BOOL);
18367    arg_transpose->add_boolvalue(transpose);
18368
18369    // copy argument value
18370    GLMessage_DataType *arg_value = glmsg.add_args();
18371    arg_value->set_isarray(false);
18372    arg_value->set_type(GLMessage::DataType::INT64);
18373    arg_value->add_int64value((uintptr_t)value);
18374
18375    // call function
18376    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18377    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18378    glContext->hooks->gl.glUniformMatrix3x4fvNV(location, count, transpose, value);
18379    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18380    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18381
18382    void *pointerArgs[] = {
18383        (void *) value,
18384    };
18385
18386    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18387                              threadStartTime, threadEndTime,
18388                              &glmsg, pointerArgs);
18389    glContext->traceGLMessage(&glmsg);
18390}
18391
18392void GLTrace_glUniformMatrix4x3fvNV(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
18393    GLMessage glmsg;
18394    GLTraceContext *glContext = getGLTraceContext();
18395
18396    glmsg.set_function(GLMessage::glUniformMatrix4x3fvNV);
18397
18398    // copy argument location
18399    GLMessage_DataType *arg_location = glmsg.add_args();
18400    arg_location->set_isarray(false);
18401    arg_location->set_type(GLMessage::DataType::INT);
18402    arg_location->add_intvalue(location);
18403
18404    // copy argument count
18405    GLMessage_DataType *arg_count = glmsg.add_args();
18406    arg_count->set_isarray(false);
18407    arg_count->set_type(GLMessage::DataType::INT);
18408    arg_count->add_intvalue(count);
18409
18410    // copy argument transpose
18411    GLMessage_DataType *arg_transpose = glmsg.add_args();
18412    arg_transpose->set_isarray(false);
18413    arg_transpose->set_type(GLMessage::DataType::BOOL);
18414    arg_transpose->add_boolvalue(transpose);
18415
18416    // copy argument value
18417    GLMessage_DataType *arg_value = glmsg.add_args();
18418    arg_value->set_isarray(false);
18419    arg_value->set_type(GLMessage::DataType::INT64);
18420    arg_value->add_int64value((uintptr_t)value);
18421
18422    // call function
18423    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18424    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18425    glContext->hooks->gl.glUniformMatrix4x3fvNV(location, count, transpose, value);
18426    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18427    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18428
18429    void *pointerArgs[] = {
18430        (void *) value,
18431    };
18432
18433    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18434                              threadStartTime, threadEndTime,
18435                              &glmsg, pointerArgs);
18436    glContext->traceGLMessage(&glmsg);
18437}
18438
18439void GLTrace_glReadBufferNV(GLenum mode) {
18440    GLMessage glmsg;
18441    GLTraceContext *glContext = getGLTraceContext();
18442
18443    glmsg.set_function(GLMessage::glReadBufferNV);
18444
18445    // copy argument mode
18446    GLMessage_DataType *arg_mode = glmsg.add_args();
18447    arg_mode->set_isarray(false);
18448    arg_mode->set_type(GLMessage::DataType::ENUM);
18449    arg_mode->add_intvalue((int)mode);
18450
18451    // call function
18452    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18453    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18454    glContext->hooks->gl.glReadBufferNV(mode);
18455    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18456    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18457
18458    void *pointerArgs[] = {
18459    };
18460
18461    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18462                              threadStartTime, threadEndTime,
18463                              &glmsg, pointerArgs);
18464    glContext->traceGLMessage(&glmsg);
18465}
18466
18467void GLTrace_glAlphaFuncQCOM(GLenum func, GLclampf ref) {
18468    GLMessage glmsg;
18469    GLTraceContext *glContext = getGLTraceContext();
18470
18471    glmsg.set_function(GLMessage::glAlphaFuncQCOM);
18472
18473    // copy argument func
18474    GLMessage_DataType *arg_func = glmsg.add_args();
18475    arg_func->set_isarray(false);
18476    arg_func->set_type(GLMessage::DataType::ENUM);
18477    arg_func->add_intvalue((int)func);
18478
18479    // copy argument ref
18480    GLMessage_DataType *arg_ref = glmsg.add_args();
18481    arg_ref->set_isarray(false);
18482    arg_ref->set_type(GLMessage::DataType::FLOAT);
18483    arg_ref->add_floatvalue(ref);
18484
18485    // call function
18486    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18487    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18488    glContext->hooks->gl.glAlphaFuncQCOM(func, ref);
18489    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18490    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18491
18492    void *pointerArgs[] = {
18493    };
18494
18495    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18496                              threadStartTime, threadEndTime,
18497                              &glmsg, pointerArgs);
18498    glContext->traceGLMessage(&glmsg);
18499}
18500
18501void GLTrace_glGetDriverControlsQCOM(GLint * num, GLsizei size, GLuint * driverControls) {
18502    GLMessage glmsg;
18503    GLTraceContext *glContext = getGLTraceContext();
18504
18505    glmsg.set_function(GLMessage::glGetDriverControlsQCOM);
18506
18507    // copy argument num
18508    GLMessage_DataType *arg_num = glmsg.add_args();
18509    arg_num->set_isarray(false);
18510    arg_num->set_type(GLMessage::DataType::INT64);
18511    arg_num->add_int64value((uintptr_t)num);
18512
18513    // copy argument size
18514    GLMessage_DataType *arg_size = glmsg.add_args();
18515    arg_size->set_isarray(false);
18516    arg_size->set_type(GLMessage::DataType::INT);
18517    arg_size->add_intvalue(size);
18518
18519    // copy argument driverControls
18520    GLMessage_DataType *arg_driverControls = glmsg.add_args();
18521    arg_driverControls->set_isarray(false);
18522    arg_driverControls->set_type(GLMessage::DataType::INT64);
18523    arg_driverControls->add_int64value((uintptr_t)driverControls);
18524
18525    // call function
18526    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18527    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18528    glContext->hooks->gl.glGetDriverControlsQCOM(num, size, driverControls);
18529    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18530    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18531
18532    void *pointerArgs[] = {
18533        (void *) num,
18534        (void *) driverControls,
18535    };
18536
18537    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18538                              threadStartTime, threadEndTime,
18539                              &glmsg, pointerArgs);
18540    glContext->traceGLMessage(&glmsg);
18541}
18542
18543void GLTrace_glGetDriverControlStringQCOM(GLuint driverControl, GLsizei bufSize, GLsizei * length, GLchar * driverControlString) {
18544    GLMessage glmsg;
18545    GLTraceContext *glContext = getGLTraceContext();
18546
18547    glmsg.set_function(GLMessage::glGetDriverControlStringQCOM);
18548
18549    // copy argument driverControl
18550    GLMessage_DataType *arg_driverControl = glmsg.add_args();
18551    arg_driverControl->set_isarray(false);
18552    arg_driverControl->set_type(GLMessage::DataType::INT);
18553    arg_driverControl->add_intvalue(driverControl);
18554
18555    // copy argument bufSize
18556    GLMessage_DataType *arg_bufSize = glmsg.add_args();
18557    arg_bufSize->set_isarray(false);
18558    arg_bufSize->set_type(GLMessage::DataType::INT);
18559    arg_bufSize->add_intvalue(bufSize);
18560
18561    // copy argument length
18562    GLMessage_DataType *arg_length = glmsg.add_args();
18563    arg_length->set_isarray(false);
18564    arg_length->set_type(GLMessage::DataType::INT64);
18565    arg_length->add_int64value((uintptr_t)length);
18566
18567    // copy argument driverControlString
18568    GLMessage_DataType *arg_driverControlString = glmsg.add_args();
18569    arg_driverControlString->set_isarray(false);
18570    arg_driverControlString->set_type(GLMessage::DataType::INT64);
18571    arg_driverControlString->add_int64value((uintptr_t)driverControlString);
18572
18573    // call function
18574    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18575    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18576    glContext->hooks->gl.glGetDriverControlStringQCOM(driverControl, bufSize, length, driverControlString);
18577    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18578    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18579
18580    void *pointerArgs[] = {
18581        (void *) length,
18582        (void *) driverControlString,
18583    };
18584
18585    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18586                              threadStartTime, threadEndTime,
18587                              &glmsg, pointerArgs);
18588    glContext->traceGLMessage(&glmsg);
18589}
18590
18591void GLTrace_glEnableDriverControlQCOM(GLuint driverControl) {
18592    GLMessage glmsg;
18593    GLTraceContext *glContext = getGLTraceContext();
18594
18595    glmsg.set_function(GLMessage::glEnableDriverControlQCOM);
18596
18597    // copy argument driverControl
18598    GLMessage_DataType *arg_driverControl = glmsg.add_args();
18599    arg_driverControl->set_isarray(false);
18600    arg_driverControl->set_type(GLMessage::DataType::INT);
18601    arg_driverControl->add_intvalue(driverControl);
18602
18603    // call function
18604    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18605    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18606    glContext->hooks->gl.glEnableDriverControlQCOM(driverControl);
18607    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18608    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18609
18610    void *pointerArgs[] = {
18611    };
18612
18613    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18614                              threadStartTime, threadEndTime,
18615                              &glmsg, pointerArgs);
18616    glContext->traceGLMessage(&glmsg);
18617}
18618
18619void GLTrace_glDisableDriverControlQCOM(GLuint driverControl) {
18620    GLMessage glmsg;
18621    GLTraceContext *glContext = getGLTraceContext();
18622
18623    glmsg.set_function(GLMessage::glDisableDriverControlQCOM);
18624
18625    // copy argument driverControl
18626    GLMessage_DataType *arg_driverControl = glmsg.add_args();
18627    arg_driverControl->set_isarray(false);
18628    arg_driverControl->set_type(GLMessage::DataType::INT);
18629    arg_driverControl->add_intvalue(driverControl);
18630
18631    // call function
18632    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18633    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18634    glContext->hooks->gl.glDisableDriverControlQCOM(driverControl);
18635    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18636    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18637
18638    void *pointerArgs[] = {
18639    };
18640
18641    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18642                              threadStartTime, threadEndTime,
18643                              &glmsg, pointerArgs);
18644    glContext->traceGLMessage(&glmsg);
18645}
18646
18647void GLTrace_glExtGetTexturesQCOM(GLuint * textures, GLint maxTextures, GLint * numTextures) {
18648    GLMessage glmsg;
18649    GLTraceContext *glContext = getGLTraceContext();
18650
18651    glmsg.set_function(GLMessage::glExtGetTexturesQCOM);
18652
18653    // copy argument textures
18654    GLMessage_DataType *arg_textures = glmsg.add_args();
18655    arg_textures->set_isarray(false);
18656    arg_textures->set_type(GLMessage::DataType::INT64);
18657    arg_textures->add_int64value((uintptr_t)textures);
18658
18659    // copy argument maxTextures
18660    GLMessage_DataType *arg_maxTextures = glmsg.add_args();
18661    arg_maxTextures->set_isarray(false);
18662    arg_maxTextures->set_type(GLMessage::DataType::INT);
18663    arg_maxTextures->add_intvalue(maxTextures);
18664
18665    // copy argument numTextures
18666    GLMessage_DataType *arg_numTextures = glmsg.add_args();
18667    arg_numTextures->set_isarray(false);
18668    arg_numTextures->set_type(GLMessage::DataType::INT64);
18669    arg_numTextures->add_int64value((uintptr_t)numTextures);
18670
18671    // call function
18672    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18673    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18674    glContext->hooks->gl.glExtGetTexturesQCOM(textures, maxTextures, numTextures);
18675    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18676    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18677
18678    void *pointerArgs[] = {
18679        (void *) textures,
18680        (void *) numTextures,
18681    };
18682
18683    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18684                              threadStartTime, threadEndTime,
18685                              &glmsg, pointerArgs);
18686    glContext->traceGLMessage(&glmsg);
18687}
18688
18689void GLTrace_glExtGetBuffersQCOM(GLuint * buffers, GLint maxBuffers, GLint * numBuffers) {
18690    GLMessage glmsg;
18691    GLTraceContext *glContext = getGLTraceContext();
18692
18693    glmsg.set_function(GLMessage::glExtGetBuffersQCOM);
18694
18695    // copy argument buffers
18696    GLMessage_DataType *arg_buffers = glmsg.add_args();
18697    arg_buffers->set_isarray(false);
18698    arg_buffers->set_type(GLMessage::DataType::INT64);
18699    arg_buffers->add_int64value((uintptr_t)buffers);
18700
18701    // copy argument maxBuffers
18702    GLMessage_DataType *arg_maxBuffers = glmsg.add_args();
18703    arg_maxBuffers->set_isarray(false);
18704    arg_maxBuffers->set_type(GLMessage::DataType::INT);
18705    arg_maxBuffers->add_intvalue(maxBuffers);
18706
18707    // copy argument numBuffers
18708    GLMessage_DataType *arg_numBuffers = glmsg.add_args();
18709    arg_numBuffers->set_isarray(false);
18710    arg_numBuffers->set_type(GLMessage::DataType::INT64);
18711    arg_numBuffers->add_int64value((uintptr_t)numBuffers);
18712
18713    // call function
18714    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18715    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18716    glContext->hooks->gl.glExtGetBuffersQCOM(buffers, maxBuffers, numBuffers);
18717    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18718    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18719
18720    void *pointerArgs[] = {
18721        (void *) buffers,
18722        (void *) numBuffers,
18723    };
18724
18725    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18726                              threadStartTime, threadEndTime,
18727                              &glmsg, pointerArgs);
18728    glContext->traceGLMessage(&glmsg);
18729}
18730
18731void GLTrace_glExtGetRenderbuffersQCOM(GLuint * renderbuffers, GLint maxRenderbuffers, GLint * numRenderbuffers) {
18732    GLMessage glmsg;
18733    GLTraceContext *glContext = getGLTraceContext();
18734
18735    glmsg.set_function(GLMessage::glExtGetRenderbuffersQCOM);
18736
18737    // copy argument renderbuffers
18738    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
18739    arg_renderbuffers->set_isarray(false);
18740    arg_renderbuffers->set_type(GLMessage::DataType::INT64);
18741    arg_renderbuffers->add_int64value((uintptr_t)renderbuffers);
18742
18743    // copy argument maxRenderbuffers
18744    GLMessage_DataType *arg_maxRenderbuffers = glmsg.add_args();
18745    arg_maxRenderbuffers->set_isarray(false);
18746    arg_maxRenderbuffers->set_type(GLMessage::DataType::INT);
18747    arg_maxRenderbuffers->add_intvalue(maxRenderbuffers);
18748
18749    // copy argument numRenderbuffers
18750    GLMessage_DataType *arg_numRenderbuffers = glmsg.add_args();
18751    arg_numRenderbuffers->set_isarray(false);
18752    arg_numRenderbuffers->set_type(GLMessage::DataType::INT64);
18753    arg_numRenderbuffers->add_int64value((uintptr_t)numRenderbuffers);
18754
18755    // call function
18756    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18757    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18758    glContext->hooks->gl.glExtGetRenderbuffersQCOM(renderbuffers, maxRenderbuffers, numRenderbuffers);
18759    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18760    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18761
18762    void *pointerArgs[] = {
18763        (void *) renderbuffers,
18764        (void *) numRenderbuffers,
18765    };
18766
18767    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18768                              threadStartTime, threadEndTime,
18769                              &glmsg, pointerArgs);
18770    glContext->traceGLMessage(&glmsg);
18771}
18772
18773void GLTrace_glExtGetFramebuffersQCOM(GLuint * framebuffers, GLint maxFramebuffers, GLint * numFramebuffers) {
18774    GLMessage glmsg;
18775    GLTraceContext *glContext = getGLTraceContext();
18776
18777    glmsg.set_function(GLMessage::glExtGetFramebuffersQCOM);
18778
18779    // copy argument framebuffers
18780    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
18781    arg_framebuffers->set_isarray(false);
18782    arg_framebuffers->set_type(GLMessage::DataType::INT64);
18783    arg_framebuffers->add_int64value((uintptr_t)framebuffers);
18784
18785    // copy argument maxFramebuffers
18786    GLMessage_DataType *arg_maxFramebuffers = glmsg.add_args();
18787    arg_maxFramebuffers->set_isarray(false);
18788    arg_maxFramebuffers->set_type(GLMessage::DataType::INT);
18789    arg_maxFramebuffers->add_intvalue(maxFramebuffers);
18790
18791    // copy argument numFramebuffers
18792    GLMessage_DataType *arg_numFramebuffers = glmsg.add_args();
18793    arg_numFramebuffers->set_isarray(false);
18794    arg_numFramebuffers->set_type(GLMessage::DataType::INT64);
18795    arg_numFramebuffers->add_int64value((uintptr_t)numFramebuffers);
18796
18797    // call function
18798    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18799    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18800    glContext->hooks->gl.glExtGetFramebuffersQCOM(framebuffers, maxFramebuffers, numFramebuffers);
18801    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18802    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18803
18804    void *pointerArgs[] = {
18805        (void *) framebuffers,
18806        (void *) numFramebuffers,
18807    };
18808
18809    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18810                              threadStartTime, threadEndTime,
18811                              &glmsg, pointerArgs);
18812    glContext->traceGLMessage(&glmsg);
18813}
18814
18815void GLTrace_glExtGetTexLevelParameterivQCOM(GLuint texture, GLenum face, GLint level, GLenum pname, GLint * params) {
18816    GLMessage glmsg;
18817    GLTraceContext *glContext = getGLTraceContext();
18818
18819    glmsg.set_function(GLMessage::glExtGetTexLevelParameterivQCOM);
18820
18821    // copy argument texture
18822    GLMessage_DataType *arg_texture = glmsg.add_args();
18823    arg_texture->set_isarray(false);
18824    arg_texture->set_type(GLMessage::DataType::INT);
18825    arg_texture->add_intvalue(texture);
18826
18827    // copy argument face
18828    GLMessage_DataType *arg_face = glmsg.add_args();
18829    arg_face->set_isarray(false);
18830    arg_face->set_type(GLMessage::DataType::ENUM);
18831    arg_face->add_intvalue((int)face);
18832
18833    // copy argument level
18834    GLMessage_DataType *arg_level = glmsg.add_args();
18835    arg_level->set_isarray(false);
18836    arg_level->set_type(GLMessage::DataType::INT);
18837    arg_level->add_intvalue(level);
18838
18839    // copy argument pname
18840    GLMessage_DataType *arg_pname = glmsg.add_args();
18841    arg_pname->set_isarray(false);
18842    arg_pname->set_type(GLMessage::DataType::ENUM);
18843    arg_pname->add_intvalue((int)pname);
18844
18845    // copy argument params
18846    GLMessage_DataType *arg_params = glmsg.add_args();
18847    arg_params->set_isarray(false);
18848    arg_params->set_type(GLMessage::DataType::INT64);
18849    arg_params->add_int64value((uintptr_t)params);
18850
18851    // call function
18852    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18853    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18854    glContext->hooks->gl.glExtGetTexLevelParameterivQCOM(texture, face, level, pname, params);
18855    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18856    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18857
18858    void *pointerArgs[] = {
18859        (void *) params,
18860    };
18861
18862    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18863                              threadStartTime, threadEndTime,
18864                              &glmsg, pointerArgs);
18865    glContext->traceGLMessage(&glmsg);
18866}
18867
18868void GLTrace_glExtTexObjectStateOverrideiQCOM(GLenum target, GLenum pname, GLint param) {
18869    GLMessage glmsg;
18870    GLTraceContext *glContext = getGLTraceContext();
18871
18872    glmsg.set_function(GLMessage::glExtTexObjectStateOverrideiQCOM);
18873
18874    // copy argument target
18875    GLMessage_DataType *arg_target = glmsg.add_args();
18876    arg_target->set_isarray(false);
18877    arg_target->set_type(GLMessage::DataType::ENUM);
18878    arg_target->add_intvalue((int)target);
18879
18880    // copy argument pname
18881    GLMessage_DataType *arg_pname = glmsg.add_args();
18882    arg_pname->set_isarray(false);
18883    arg_pname->set_type(GLMessage::DataType::ENUM);
18884    arg_pname->add_intvalue((int)pname);
18885
18886    // copy argument param
18887    GLMessage_DataType *arg_param = glmsg.add_args();
18888    arg_param->set_isarray(false);
18889    arg_param->set_type(GLMessage::DataType::INT);
18890    arg_param->add_intvalue(param);
18891
18892    // call function
18893    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18894    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18895    glContext->hooks->gl.glExtTexObjectStateOverrideiQCOM(target, pname, param);
18896    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18897    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18898
18899    void *pointerArgs[] = {
18900    };
18901
18902    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18903                              threadStartTime, threadEndTime,
18904                              &glmsg, pointerArgs);
18905    glContext->traceGLMessage(&glmsg);
18906}
18907
18908void GLTrace_glExtGetTexSubImageQCOM(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void * texels) {
18909    GLMessage glmsg;
18910    GLTraceContext *glContext = getGLTraceContext();
18911
18912    glmsg.set_function(GLMessage::glExtGetTexSubImageQCOM);
18913
18914    // copy argument target
18915    GLMessage_DataType *arg_target = glmsg.add_args();
18916    arg_target->set_isarray(false);
18917    arg_target->set_type(GLMessage::DataType::ENUM);
18918    arg_target->add_intvalue((int)target);
18919
18920    // copy argument level
18921    GLMessage_DataType *arg_level = glmsg.add_args();
18922    arg_level->set_isarray(false);
18923    arg_level->set_type(GLMessage::DataType::INT);
18924    arg_level->add_intvalue(level);
18925
18926    // copy argument xoffset
18927    GLMessage_DataType *arg_xoffset = glmsg.add_args();
18928    arg_xoffset->set_isarray(false);
18929    arg_xoffset->set_type(GLMessage::DataType::INT);
18930    arg_xoffset->add_intvalue(xoffset);
18931
18932    // copy argument yoffset
18933    GLMessage_DataType *arg_yoffset = glmsg.add_args();
18934    arg_yoffset->set_isarray(false);
18935    arg_yoffset->set_type(GLMessage::DataType::INT);
18936    arg_yoffset->add_intvalue(yoffset);
18937
18938    // copy argument zoffset
18939    GLMessage_DataType *arg_zoffset = glmsg.add_args();
18940    arg_zoffset->set_isarray(false);
18941    arg_zoffset->set_type(GLMessage::DataType::INT);
18942    arg_zoffset->add_intvalue(zoffset);
18943
18944    // copy argument width
18945    GLMessage_DataType *arg_width = glmsg.add_args();
18946    arg_width->set_isarray(false);
18947    arg_width->set_type(GLMessage::DataType::INT);
18948    arg_width->add_intvalue(width);
18949
18950    // copy argument height
18951    GLMessage_DataType *arg_height = glmsg.add_args();
18952    arg_height->set_isarray(false);
18953    arg_height->set_type(GLMessage::DataType::INT);
18954    arg_height->add_intvalue(height);
18955
18956    // copy argument depth
18957    GLMessage_DataType *arg_depth = glmsg.add_args();
18958    arg_depth->set_isarray(false);
18959    arg_depth->set_type(GLMessage::DataType::INT);
18960    arg_depth->add_intvalue(depth);
18961
18962    // copy argument format
18963    GLMessage_DataType *arg_format = glmsg.add_args();
18964    arg_format->set_isarray(false);
18965    arg_format->set_type(GLMessage::DataType::ENUM);
18966    arg_format->add_intvalue((int)format);
18967
18968    // copy argument type
18969    GLMessage_DataType *arg_type = glmsg.add_args();
18970    arg_type->set_isarray(false);
18971    arg_type->set_type(GLMessage::DataType::ENUM);
18972    arg_type->add_intvalue((int)type);
18973
18974    // copy argument texels
18975    GLMessage_DataType *arg_texels = glmsg.add_args();
18976    arg_texels->set_isarray(false);
18977    arg_texels->set_type(GLMessage::DataType::INT64);
18978    arg_texels->add_int64value((uintptr_t)texels);
18979
18980    // call function
18981    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18982    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18983    glContext->hooks->gl.glExtGetTexSubImageQCOM(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, texels);
18984    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18985    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18986
18987    void *pointerArgs[] = {
18988        (void *) texels,
18989    };
18990
18991    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18992                              threadStartTime, threadEndTime,
18993                              &glmsg, pointerArgs);
18994    glContext->traceGLMessage(&glmsg);
18995}
18996
18997void GLTrace_glExtGetBufferPointervQCOM(GLenum target, void ** params) {
18998    GLMessage glmsg;
18999    GLTraceContext *glContext = getGLTraceContext();
19000
19001    glmsg.set_function(GLMessage::glExtGetBufferPointervQCOM);
19002
19003    // copy argument target
19004    GLMessage_DataType *arg_target = glmsg.add_args();
19005    arg_target->set_isarray(false);
19006    arg_target->set_type(GLMessage::DataType::ENUM);
19007    arg_target->add_intvalue((int)target);
19008
19009    // copy argument params
19010    GLMessage_DataType *arg_params = glmsg.add_args();
19011    arg_params->set_isarray(false);
19012    arg_params->set_type(GLMessage::DataType::INT64);
19013    arg_params->add_int64value((uintptr_t)params);
19014
19015    // call function
19016    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19017    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19018    glContext->hooks->gl.glExtGetBufferPointervQCOM(target, params);
19019    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19020    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19021
19022    void *pointerArgs[] = {
19023        (void *) params,
19024    };
19025
19026    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19027                              threadStartTime, threadEndTime,
19028                              &glmsg, pointerArgs);
19029    glContext->traceGLMessage(&glmsg);
19030}
19031
19032void GLTrace_glExtGetShadersQCOM(GLuint * shaders, GLint maxShaders, GLint * numShaders) {
19033    GLMessage glmsg;
19034    GLTraceContext *glContext = getGLTraceContext();
19035
19036    glmsg.set_function(GLMessage::glExtGetShadersQCOM);
19037
19038    // copy argument shaders
19039    GLMessage_DataType *arg_shaders = glmsg.add_args();
19040    arg_shaders->set_isarray(false);
19041    arg_shaders->set_type(GLMessage::DataType::INT64);
19042    arg_shaders->add_int64value((uintptr_t)shaders);
19043
19044    // copy argument maxShaders
19045    GLMessage_DataType *arg_maxShaders = glmsg.add_args();
19046    arg_maxShaders->set_isarray(false);
19047    arg_maxShaders->set_type(GLMessage::DataType::INT);
19048    arg_maxShaders->add_intvalue(maxShaders);
19049
19050    // copy argument numShaders
19051    GLMessage_DataType *arg_numShaders = glmsg.add_args();
19052    arg_numShaders->set_isarray(false);
19053    arg_numShaders->set_type(GLMessage::DataType::INT64);
19054    arg_numShaders->add_int64value((uintptr_t)numShaders);
19055
19056    // call function
19057    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19058    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19059    glContext->hooks->gl.glExtGetShadersQCOM(shaders, maxShaders, numShaders);
19060    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19061    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19062
19063    void *pointerArgs[] = {
19064        (void *) shaders,
19065        (void *) numShaders,
19066    };
19067
19068    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19069                              threadStartTime, threadEndTime,
19070                              &glmsg, pointerArgs);
19071    glContext->traceGLMessage(&glmsg);
19072}
19073
19074void GLTrace_glExtGetProgramsQCOM(GLuint * programs, GLint maxPrograms, GLint * numPrograms) {
19075    GLMessage glmsg;
19076    GLTraceContext *glContext = getGLTraceContext();
19077
19078    glmsg.set_function(GLMessage::glExtGetProgramsQCOM);
19079
19080    // copy argument programs
19081    GLMessage_DataType *arg_programs = glmsg.add_args();
19082    arg_programs->set_isarray(false);
19083    arg_programs->set_type(GLMessage::DataType::INT64);
19084    arg_programs->add_int64value((uintptr_t)programs);
19085
19086    // copy argument maxPrograms
19087    GLMessage_DataType *arg_maxPrograms = glmsg.add_args();
19088    arg_maxPrograms->set_isarray(false);
19089    arg_maxPrograms->set_type(GLMessage::DataType::INT);
19090    arg_maxPrograms->add_intvalue(maxPrograms);
19091
19092    // copy argument numPrograms
19093    GLMessage_DataType *arg_numPrograms = glmsg.add_args();
19094    arg_numPrograms->set_isarray(false);
19095    arg_numPrograms->set_type(GLMessage::DataType::INT64);
19096    arg_numPrograms->add_int64value((uintptr_t)numPrograms);
19097
19098    // call function
19099    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19100    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19101    glContext->hooks->gl.glExtGetProgramsQCOM(programs, maxPrograms, numPrograms);
19102    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19103    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19104
19105    void *pointerArgs[] = {
19106        (void *) programs,
19107        (void *) numPrograms,
19108    };
19109
19110    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19111                              threadStartTime, threadEndTime,
19112                              &glmsg, pointerArgs);
19113    glContext->traceGLMessage(&glmsg);
19114}
19115
19116GLboolean GLTrace_glExtIsProgramBinaryQCOM(GLuint program) {
19117    GLMessage glmsg;
19118    GLTraceContext *glContext = getGLTraceContext();
19119
19120    glmsg.set_function(GLMessage::glExtIsProgramBinaryQCOM);
19121
19122    // copy argument program
19123    GLMessage_DataType *arg_program = glmsg.add_args();
19124    arg_program->set_isarray(false);
19125    arg_program->set_type(GLMessage::DataType::INT);
19126    arg_program->add_intvalue(program);
19127
19128    // call function
19129    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19130    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19131    GLboolean retValue = glContext->hooks->gl.glExtIsProgramBinaryQCOM(program);
19132    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19133    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19134
19135    // set return value
19136    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
19137    rt->set_isarray(false);
19138    rt->set_type(GLMessage::DataType::BOOL);
19139    rt->add_boolvalue(retValue);
19140
19141    void *pointerArgs[] = {
19142    };
19143
19144    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19145                              threadStartTime, threadEndTime,
19146                              &glmsg, pointerArgs);
19147    glContext->traceGLMessage(&glmsg);
19148
19149    return retValue;
19150}
19151
19152void GLTrace_glExtGetProgramBinarySourceQCOM(GLuint program, GLenum shadertype, GLchar * source, GLint * length) {
19153    GLMessage glmsg;
19154    GLTraceContext *glContext = getGLTraceContext();
19155
19156    glmsg.set_function(GLMessage::glExtGetProgramBinarySourceQCOM);
19157
19158    // copy argument program
19159    GLMessage_DataType *arg_program = glmsg.add_args();
19160    arg_program->set_isarray(false);
19161    arg_program->set_type(GLMessage::DataType::INT);
19162    arg_program->add_intvalue(program);
19163
19164    // copy argument shadertype
19165    GLMessage_DataType *arg_shadertype = glmsg.add_args();
19166    arg_shadertype->set_isarray(false);
19167    arg_shadertype->set_type(GLMessage::DataType::ENUM);
19168    arg_shadertype->add_intvalue((int)shadertype);
19169
19170    // copy argument source
19171    GLMessage_DataType *arg_source = glmsg.add_args();
19172    arg_source->set_isarray(false);
19173    arg_source->set_type(GLMessage::DataType::INT64);
19174    arg_source->add_int64value((uintptr_t)source);
19175
19176    // copy argument length
19177    GLMessage_DataType *arg_length = glmsg.add_args();
19178    arg_length->set_isarray(false);
19179    arg_length->set_type(GLMessage::DataType::INT64);
19180    arg_length->add_int64value((uintptr_t)length);
19181
19182    // call function
19183    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19184    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19185    glContext->hooks->gl.glExtGetProgramBinarySourceQCOM(program, shadertype, source, length);
19186    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19187    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19188
19189    void *pointerArgs[] = {
19190        (void *) source,
19191        (void *) length,
19192    };
19193
19194    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19195                              threadStartTime, threadEndTime,
19196                              &glmsg, pointerArgs);
19197    glContext->traceGLMessage(&glmsg);
19198}
19199
19200void GLTrace_glStartTilingQCOM(GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask) {
19201    GLMessage glmsg;
19202    GLTraceContext *glContext = getGLTraceContext();
19203
19204    glmsg.set_function(GLMessage::glStartTilingQCOM);
19205
19206    // copy argument x
19207    GLMessage_DataType *arg_x = glmsg.add_args();
19208    arg_x->set_isarray(false);
19209    arg_x->set_type(GLMessage::DataType::INT);
19210    arg_x->add_intvalue(x);
19211
19212    // copy argument y
19213    GLMessage_DataType *arg_y = glmsg.add_args();
19214    arg_y->set_isarray(false);
19215    arg_y->set_type(GLMessage::DataType::INT);
19216    arg_y->add_intvalue(y);
19217
19218    // copy argument width
19219    GLMessage_DataType *arg_width = glmsg.add_args();
19220    arg_width->set_isarray(false);
19221    arg_width->set_type(GLMessage::DataType::INT);
19222    arg_width->add_intvalue(width);
19223
19224    // copy argument height
19225    GLMessage_DataType *arg_height = glmsg.add_args();
19226    arg_height->set_isarray(false);
19227    arg_height->set_type(GLMessage::DataType::INT);
19228    arg_height->add_intvalue(height);
19229
19230    // copy argument preserveMask
19231    GLMessage_DataType *arg_preserveMask = glmsg.add_args();
19232    arg_preserveMask->set_isarray(false);
19233    arg_preserveMask->set_type(GLMessage::DataType::INT);
19234    arg_preserveMask->add_intvalue(preserveMask);
19235
19236    // call function
19237    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19238    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19239    glContext->hooks->gl.glStartTilingQCOM(x, y, width, height, preserveMask);
19240    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19241    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19242
19243    void *pointerArgs[] = {
19244    };
19245
19246    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19247                              threadStartTime, threadEndTime,
19248                              &glmsg, pointerArgs);
19249    glContext->traceGLMessage(&glmsg);
19250}
19251
19252void GLTrace_glEndTilingQCOM(GLbitfield preserveMask) {
19253    GLMessage glmsg;
19254    GLTraceContext *glContext = getGLTraceContext();
19255
19256    glmsg.set_function(GLMessage::glEndTilingQCOM);
19257
19258    // copy argument preserveMask
19259    GLMessage_DataType *arg_preserveMask = glmsg.add_args();
19260    arg_preserveMask->set_isarray(false);
19261    arg_preserveMask->set_type(GLMessage::DataType::INT);
19262    arg_preserveMask->add_intvalue(preserveMask);
19263
19264    // call function
19265    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19266    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19267    glContext->hooks->gl.glEndTilingQCOM(preserveMask);
19268    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19269    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19270
19271    void *pointerArgs[] = {
19272    };
19273
19274    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19275                              threadStartTime, threadEndTime,
19276                              &glmsg, pointerArgs);
19277    glContext->traceGLMessage(&glmsg);
19278}
19279
19280
19281// Definitions for GL1 APIs
19282
19283void GLTrace_glAlphaFunc(GLenum func, GLfloat ref) {
19284    GLMessage glmsg;
19285    GLTraceContext *glContext = getGLTraceContext();
19286
19287    glmsg.set_function(GLMessage::glAlphaFunc);
19288
19289    // copy argument func
19290    GLMessage_DataType *arg_func = glmsg.add_args();
19291    arg_func->set_isarray(false);
19292    arg_func->set_type(GLMessage::DataType::ENUM);
19293    arg_func->add_intvalue((int)func);
19294
19295    // copy argument ref
19296    GLMessage_DataType *arg_ref = glmsg.add_args();
19297    arg_ref->set_isarray(false);
19298    arg_ref->set_type(GLMessage::DataType::FLOAT);
19299    arg_ref->add_floatvalue(ref);
19300
19301    // call function
19302    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19303    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19304    glContext->hooks->gl.glAlphaFunc(func, ref);
19305    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19306    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19307
19308    void *pointerArgs[] = {
19309    };
19310
19311    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19312                              threadStartTime, threadEndTime,
19313                              &glmsg, pointerArgs);
19314    glContext->traceGLMessage(&glmsg);
19315}
19316
19317void GLTrace_glClipPlanef(GLenum p, const GLfloat * eqn) {
19318    GLMessage glmsg;
19319    GLTraceContext *glContext = getGLTraceContext();
19320
19321    glmsg.set_function(GLMessage::glClipPlanef);
19322
19323    // copy argument p
19324    GLMessage_DataType *arg_p = glmsg.add_args();
19325    arg_p->set_isarray(false);
19326    arg_p->set_type(GLMessage::DataType::ENUM);
19327    arg_p->add_intvalue((int)p);
19328
19329    // copy argument eqn
19330    GLMessage_DataType *arg_eqn = glmsg.add_args();
19331    arg_eqn->set_isarray(false);
19332    arg_eqn->set_type(GLMessage::DataType::INT64);
19333    arg_eqn->add_int64value((uintptr_t)eqn);
19334
19335    // call function
19336    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19337    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19338    glContext->hooks->gl.glClipPlanef(p, eqn);
19339    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19340    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19341
19342    void *pointerArgs[] = {
19343        (void *) eqn,
19344    };
19345
19346    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19347                              threadStartTime, threadEndTime,
19348                              &glmsg, pointerArgs);
19349    glContext->traceGLMessage(&glmsg);
19350}
19351
19352void GLTrace_glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) {
19353    GLMessage glmsg;
19354    GLTraceContext *glContext = getGLTraceContext();
19355
19356    glmsg.set_function(GLMessage::glColor4f);
19357
19358    // copy argument red
19359    GLMessage_DataType *arg_red = glmsg.add_args();
19360    arg_red->set_isarray(false);
19361    arg_red->set_type(GLMessage::DataType::FLOAT);
19362    arg_red->add_floatvalue(red);
19363
19364    // copy argument green
19365    GLMessage_DataType *arg_green = glmsg.add_args();
19366    arg_green->set_isarray(false);
19367    arg_green->set_type(GLMessage::DataType::FLOAT);
19368    arg_green->add_floatvalue(green);
19369
19370    // copy argument blue
19371    GLMessage_DataType *arg_blue = glmsg.add_args();
19372    arg_blue->set_isarray(false);
19373    arg_blue->set_type(GLMessage::DataType::FLOAT);
19374    arg_blue->add_floatvalue(blue);
19375
19376    // copy argument alpha
19377    GLMessage_DataType *arg_alpha = glmsg.add_args();
19378    arg_alpha->set_isarray(false);
19379    arg_alpha->set_type(GLMessage::DataType::FLOAT);
19380    arg_alpha->add_floatvalue(alpha);
19381
19382    // call function
19383    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19384    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19385    glContext->hooks->gl.glColor4f(red, green, blue, alpha);
19386    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19387    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19388
19389    void *pointerArgs[] = {
19390    };
19391
19392    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19393                              threadStartTime, threadEndTime,
19394                              &glmsg, pointerArgs);
19395    glContext->traceGLMessage(&glmsg);
19396}
19397
19398void GLTrace_glFogf(GLenum pname, GLfloat param) {
19399    GLMessage glmsg;
19400    GLTraceContext *glContext = getGLTraceContext();
19401
19402    glmsg.set_function(GLMessage::glFogf);
19403
19404    // copy argument pname
19405    GLMessage_DataType *arg_pname = glmsg.add_args();
19406    arg_pname->set_isarray(false);
19407    arg_pname->set_type(GLMessage::DataType::ENUM);
19408    arg_pname->add_intvalue((int)pname);
19409
19410    // copy argument param
19411    GLMessage_DataType *arg_param = glmsg.add_args();
19412    arg_param->set_isarray(false);
19413    arg_param->set_type(GLMessage::DataType::FLOAT);
19414    arg_param->add_floatvalue(param);
19415
19416    // call function
19417    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19418    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19419    glContext->hooks->gl.glFogf(pname, param);
19420    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19421    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19422
19423    void *pointerArgs[] = {
19424    };
19425
19426    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19427                              threadStartTime, threadEndTime,
19428                              &glmsg, pointerArgs);
19429    glContext->traceGLMessage(&glmsg);
19430}
19431
19432void GLTrace_glFogfv(GLenum pname, const GLfloat * params) {
19433    GLMessage glmsg;
19434    GLTraceContext *glContext = getGLTraceContext();
19435
19436    glmsg.set_function(GLMessage::glFogfv);
19437
19438    // copy argument pname
19439    GLMessage_DataType *arg_pname = glmsg.add_args();
19440    arg_pname->set_isarray(false);
19441    arg_pname->set_type(GLMessage::DataType::ENUM);
19442    arg_pname->add_intvalue((int)pname);
19443
19444    // copy argument params
19445    GLMessage_DataType *arg_params = glmsg.add_args();
19446    arg_params->set_isarray(false);
19447    arg_params->set_type(GLMessage::DataType::INT64);
19448    arg_params->add_int64value((uintptr_t)params);
19449
19450    // call function
19451    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19452    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19453    glContext->hooks->gl.glFogfv(pname, params);
19454    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19455    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19456
19457    void *pointerArgs[] = {
19458        (void *) params,
19459    };
19460
19461    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19462                              threadStartTime, threadEndTime,
19463                              &glmsg, pointerArgs);
19464    glContext->traceGLMessage(&glmsg);
19465}
19466
19467void GLTrace_glFrustumf(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f) {
19468    GLMessage glmsg;
19469    GLTraceContext *glContext = getGLTraceContext();
19470
19471    glmsg.set_function(GLMessage::glFrustumf);
19472
19473    // copy argument l
19474    GLMessage_DataType *arg_l = glmsg.add_args();
19475    arg_l->set_isarray(false);
19476    arg_l->set_type(GLMessage::DataType::FLOAT);
19477    arg_l->add_floatvalue(l);
19478
19479    // copy argument r
19480    GLMessage_DataType *arg_r = glmsg.add_args();
19481    arg_r->set_isarray(false);
19482    arg_r->set_type(GLMessage::DataType::FLOAT);
19483    arg_r->add_floatvalue(r);
19484
19485    // copy argument b
19486    GLMessage_DataType *arg_b = glmsg.add_args();
19487    arg_b->set_isarray(false);
19488    arg_b->set_type(GLMessage::DataType::FLOAT);
19489    arg_b->add_floatvalue(b);
19490
19491    // copy argument t
19492    GLMessage_DataType *arg_t = glmsg.add_args();
19493    arg_t->set_isarray(false);
19494    arg_t->set_type(GLMessage::DataType::FLOAT);
19495    arg_t->add_floatvalue(t);
19496
19497    // copy argument n
19498    GLMessage_DataType *arg_n = glmsg.add_args();
19499    arg_n->set_isarray(false);
19500    arg_n->set_type(GLMessage::DataType::FLOAT);
19501    arg_n->add_floatvalue(n);
19502
19503    // copy argument f
19504    GLMessage_DataType *arg_f = glmsg.add_args();
19505    arg_f->set_isarray(false);
19506    arg_f->set_type(GLMessage::DataType::FLOAT);
19507    arg_f->add_floatvalue(f);
19508
19509    // call function
19510    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19511    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19512    glContext->hooks->gl.glFrustumf(l, r, b, t, n, f);
19513    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19514    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19515
19516    void *pointerArgs[] = {
19517    };
19518
19519    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19520                              threadStartTime, threadEndTime,
19521                              &glmsg, pointerArgs);
19522    glContext->traceGLMessage(&glmsg);
19523}
19524
19525void GLTrace_glGetClipPlanef(GLenum plane, GLfloat * equation) {
19526    GLMessage glmsg;
19527    GLTraceContext *glContext = getGLTraceContext();
19528
19529    glmsg.set_function(GLMessage::glGetClipPlanef);
19530
19531    // copy argument plane
19532    GLMessage_DataType *arg_plane = glmsg.add_args();
19533    arg_plane->set_isarray(false);
19534    arg_plane->set_type(GLMessage::DataType::ENUM);
19535    arg_plane->add_intvalue((int)plane);
19536
19537    // copy argument equation
19538    GLMessage_DataType *arg_equation = glmsg.add_args();
19539    arg_equation->set_isarray(false);
19540    arg_equation->set_type(GLMessage::DataType::INT64);
19541    arg_equation->add_int64value((uintptr_t)equation);
19542
19543    // call function
19544    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19545    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19546    glContext->hooks->gl.glGetClipPlanef(plane, equation);
19547    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19548    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19549
19550    void *pointerArgs[] = {
19551        (void *) equation,
19552    };
19553
19554    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19555                              threadStartTime, threadEndTime,
19556                              &glmsg, pointerArgs);
19557    glContext->traceGLMessage(&glmsg);
19558}
19559
19560void GLTrace_glGetLightfv(GLenum light, GLenum pname, GLfloat * params) {
19561    GLMessage glmsg;
19562    GLTraceContext *glContext = getGLTraceContext();
19563
19564    glmsg.set_function(GLMessage::glGetLightfv);
19565
19566    // copy argument light
19567    GLMessage_DataType *arg_light = glmsg.add_args();
19568    arg_light->set_isarray(false);
19569    arg_light->set_type(GLMessage::DataType::ENUM);
19570    arg_light->add_intvalue((int)light);
19571
19572    // copy argument pname
19573    GLMessage_DataType *arg_pname = glmsg.add_args();
19574    arg_pname->set_isarray(false);
19575    arg_pname->set_type(GLMessage::DataType::ENUM);
19576    arg_pname->add_intvalue((int)pname);
19577
19578    // copy argument params
19579    GLMessage_DataType *arg_params = glmsg.add_args();
19580    arg_params->set_isarray(false);
19581    arg_params->set_type(GLMessage::DataType::INT64);
19582    arg_params->add_int64value((uintptr_t)params);
19583
19584    // call function
19585    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19586    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19587    glContext->hooks->gl.glGetLightfv(light, pname, params);
19588    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19589    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19590
19591    void *pointerArgs[] = {
19592        (void *) params,
19593    };
19594
19595    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19596                              threadStartTime, threadEndTime,
19597                              &glmsg, pointerArgs);
19598    glContext->traceGLMessage(&glmsg);
19599}
19600
19601void GLTrace_glGetMaterialfv(GLenum face, GLenum pname, GLfloat * params) {
19602    GLMessage glmsg;
19603    GLTraceContext *glContext = getGLTraceContext();
19604
19605    glmsg.set_function(GLMessage::glGetMaterialfv);
19606
19607    // copy argument face
19608    GLMessage_DataType *arg_face = glmsg.add_args();
19609    arg_face->set_isarray(false);
19610    arg_face->set_type(GLMessage::DataType::ENUM);
19611    arg_face->add_intvalue((int)face);
19612
19613    // copy argument pname
19614    GLMessage_DataType *arg_pname = glmsg.add_args();
19615    arg_pname->set_isarray(false);
19616    arg_pname->set_type(GLMessage::DataType::ENUM);
19617    arg_pname->add_intvalue((int)pname);
19618
19619    // copy argument params
19620    GLMessage_DataType *arg_params = glmsg.add_args();
19621    arg_params->set_isarray(false);
19622    arg_params->set_type(GLMessage::DataType::INT64);
19623    arg_params->add_int64value((uintptr_t)params);
19624
19625    // call function
19626    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19627    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19628    glContext->hooks->gl.glGetMaterialfv(face, pname, params);
19629    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19630    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19631
19632    void *pointerArgs[] = {
19633        (void *) params,
19634    };
19635
19636    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19637                              threadStartTime, threadEndTime,
19638                              &glmsg, pointerArgs);
19639    glContext->traceGLMessage(&glmsg);
19640}
19641
19642void GLTrace_glGetTexEnvfv(GLenum target, GLenum pname, GLfloat * params) {
19643    GLMessage glmsg;
19644    GLTraceContext *glContext = getGLTraceContext();
19645
19646    glmsg.set_function(GLMessage::glGetTexEnvfv);
19647
19648    // copy argument target
19649    GLMessage_DataType *arg_target = glmsg.add_args();
19650    arg_target->set_isarray(false);
19651    arg_target->set_type(GLMessage::DataType::ENUM);
19652    arg_target->add_intvalue((int)target);
19653
19654    // copy argument pname
19655    GLMessage_DataType *arg_pname = glmsg.add_args();
19656    arg_pname->set_isarray(false);
19657    arg_pname->set_type(GLMessage::DataType::ENUM);
19658    arg_pname->add_intvalue((int)pname);
19659
19660    // copy argument params
19661    GLMessage_DataType *arg_params = glmsg.add_args();
19662    arg_params->set_isarray(false);
19663    arg_params->set_type(GLMessage::DataType::INT64);
19664    arg_params->add_int64value((uintptr_t)params);
19665
19666    // call function
19667    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19668    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19669    glContext->hooks->gl.glGetTexEnvfv(target, pname, params);
19670    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19671    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19672
19673    void *pointerArgs[] = {
19674        (void *) params,
19675    };
19676
19677    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19678                              threadStartTime, threadEndTime,
19679                              &glmsg, pointerArgs);
19680    glContext->traceGLMessage(&glmsg);
19681}
19682
19683void GLTrace_glLightModelf(GLenum pname, GLfloat param) {
19684    GLMessage glmsg;
19685    GLTraceContext *glContext = getGLTraceContext();
19686
19687    glmsg.set_function(GLMessage::glLightModelf);
19688
19689    // copy argument pname
19690    GLMessage_DataType *arg_pname = glmsg.add_args();
19691    arg_pname->set_isarray(false);
19692    arg_pname->set_type(GLMessage::DataType::ENUM);
19693    arg_pname->add_intvalue((int)pname);
19694
19695    // copy argument param
19696    GLMessage_DataType *arg_param = glmsg.add_args();
19697    arg_param->set_isarray(false);
19698    arg_param->set_type(GLMessage::DataType::FLOAT);
19699    arg_param->add_floatvalue(param);
19700
19701    // call function
19702    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19703    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19704    glContext->hooks->gl.glLightModelf(pname, param);
19705    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19706    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19707
19708    void *pointerArgs[] = {
19709    };
19710
19711    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19712                              threadStartTime, threadEndTime,
19713                              &glmsg, pointerArgs);
19714    glContext->traceGLMessage(&glmsg);
19715}
19716
19717void GLTrace_glLightModelfv(GLenum pname, const GLfloat * params) {
19718    GLMessage glmsg;
19719    GLTraceContext *glContext = getGLTraceContext();
19720
19721    glmsg.set_function(GLMessage::glLightModelfv);
19722
19723    // copy argument pname
19724    GLMessage_DataType *arg_pname = glmsg.add_args();
19725    arg_pname->set_isarray(false);
19726    arg_pname->set_type(GLMessage::DataType::ENUM);
19727    arg_pname->add_intvalue((int)pname);
19728
19729    // copy argument params
19730    GLMessage_DataType *arg_params = glmsg.add_args();
19731    arg_params->set_isarray(false);
19732    arg_params->set_type(GLMessage::DataType::INT64);
19733    arg_params->add_int64value((uintptr_t)params);
19734
19735    // call function
19736    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19737    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19738    glContext->hooks->gl.glLightModelfv(pname, params);
19739    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19740    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19741
19742    void *pointerArgs[] = {
19743        (void *) params,
19744    };
19745
19746    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19747                              threadStartTime, threadEndTime,
19748                              &glmsg, pointerArgs);
19749    glContext->traceGLMessage(&glmsg);
19750}
19751
19752void GLTrace_glLightf(GLenum light, GLenum pname, GLfloat param) {
19753    GLMessage glmsg;
19754    GLTraceContext *glContext = getGLTraceContext();
19755
19756    glmsg.set_function(GLMessage::glLightf);
19757
19758    // copy argument light
19759    GLMessage_DataType *arg_light = glmsg.add_args();
19760    arg_light->set_isarray(false);
19761    arg_light->set_type(GLMessage::DataType::ENUM);
19762    arg_light->add_intvalue((int)light);
19763
19764    // copy argument pname
19765    GLMessage_DataType *arg_pname = glmsg.add_args();
19766    arg_pname->set_isarray(false);
19767    arg_pname->set_type(GLMessage::DataType::ENUM);
19768    arg_pname->add_intvalue((int)pname);
19769
19770    // copy argument param
19771    GLMessage_DataType *arg_param = glmsg.add_args();
19772    arg_param->set_isarray(false);
19773    arg_param->set_type(GLMessage::DataType::FLOAT);
19774    arg_param->add_floatvalue(param);
19775
19776    // call function
19777    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19778    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19779    glContext->hooks->gl.glLightf(light, pname, param);
19780    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19781    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19782
19783    void *pointerArgs[] = {
19784    };
19785
19786    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19787                              threadStartTime, threadEndTime,
19788                              &glmsg, pointerArgs);
19789    glContext->traceGLMessage(&glmsg);
19790}
19791
19792void GLTrace_glLightfv(GLenum light, GLenum pname, const GLfloat * params) {
19793    GLMessage glmsg;
19794    GLTraceContext *glContext = getGLTraceContext();
19795
19796    glmsg.set_function(GLMessage::glLightfv);
19797
19798    // copy argument light
19799    GLMessage_DataType *arg_light = glmsg.add_args();
19800    arg_light->set_isarray(false);
19801    arg_light->set_type(GLMessage::DataType::ENUM);
19802    arg_light->add_intvalue((int)light);
19803
19804    // copy argument pname
19805    GLMessage_DataType *arg_pname = glmsg.add_args();
19806    arg_pname->set_isarray(false);
19807    arg_pname->set_type(GLMessage::DataType::ENUM);
19808    arg_pname->add_intvalue((int)pname);
19809
19810    // copy argument params
19811    GLMessage_DataType *arg_params = glmsg.add_args();
19812    arg_params->set_isarray(false);
19813    arg_params->set_type(GLMessage::DataType::INT64);
19814    arg_params->add_int64value((uintptr_t)params);
19815
19816    // call function
19817    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19818    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19819    glContext->hooks->gl.glLightfv(light, pname, params);
19820    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19821    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19822
19823    void *pointerArgs[] = {
19824        (void *) params,
19825    };
19826
19827    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19828                              threadStartTime, threadEndTime,
19829                              &glmsg, pointerArgs);
19830    glContext->traceGLMessage(&glmsg);
19831}
19832
19833void GLTrace_glLoadMatrixf(const GLfloat * m) {
19834    GLMessage glmsg;
19835    GLTraceContext *glContext = getGLTraceContext();
19836
19837    glmsg.set_function(GLMessage::glLoadMatrixf);
19838
19839    // copy argument m
19840    GLMessage_DataType *arg_m = glmsg.add_args();
19841    arg_m->set_isarray(false);
19842    arg_m->set_type(GLMessage::DataType::INT64);
19843    arg_m->add_int64value((uintptr_t)m);
19844
19845    // call function
19846    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19847    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19848    glContext->hooks->gl.glLoadMatrixf(m);
19849    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19850    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19851
19852    void *pointerArgs[] = {
19853        (void *) m,
19854    };
19855
19856    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19857                              threadStartTime, threadEndTime,
19858                              &glmsg, pointerArgs);
19859    glContext->traceGLMessage(&glmsg);
19860}
19861
19862void GLTrace_glMaterialf(GLenum face, GLenum pname, GLfloat param) {
19863    GLMessage glmsg;
19864    GLTraceContext *glContext = getGLTraceContext();
19865
19866    glmsg.set_function(GLMessage::glMaterialf);
19867
19868    // copy argument face
19869    GLMessage_DataType *arg_face = glmsg.add_args();
19870    arg_face->set_isarray(false);
19871    arg_face->set_type(GLMessage::DataType::ENUM);
19872    arg_face->add_intvalue((int)face);
19873
19874    // copy argument pname
19875    GLMessage_DataType *arg_pname = glmsg.add_args();
19876    arg_pname->set_isarray(false);
19877    arg_pname->set_type(GLMessage::DataType::ENUM);
19878    arg_pname->add_intvalue((int)pname);
19879
19880    // copy argument param
19881    GLMessage_DataType *arg_param = glmsg.add_args();
19882    arg_param->set_isarray(false);
19883    arg_param->set_type(GLMessage::DataType::FLOAT);
19884    arg_param->add_floatvalue(param);
19885
19886    // call function
19887    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19888    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19889    glContext->hooks->gl.glMaterialf(face, pname, param);
19890    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19891    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19892
19893    void *pointerArgs[] = {
19894    };
19895
19896    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19897                              threadStartTime, threadEndTime,
19898                              &glmsg, pointerArgs);
19899    glContext->traceGLMessage(&glmsg);
19900}
19901
19902void GLTrace_glMaterialfv(GLenum face, GLenum pname, const GLfloat * params) {
19903    GLMessage glmsg;
19904    GLTraceContext *glContext = getGLTraceContext();
19905
19906    glmsg.set_function(GLMessage::glMaterialfv);
19907
19908    // copy argument face
19909    GLMessage_DataType *arg_face = glmsg.add_args();
19910    arg_face->set_isarray(false);
19911    arg_face->set_type(GLMessage::DataType::ENUM);
19912    arg_face->add_intvalue((int)face);
19913
19914    // copy argument pname
19915    GLMessage_DataType *arg_pname = glmsg.add_args();
19916    arg_pname->set_isarray(false);
19917    arg_pname->set_type(GLMessage::DataType::ENUM);
19918    arg_pname->add_intvalue((int)pname);
19919
19920    // copy argument params
19921    GLMessage_DataType *arg_params = glmsg.add_args();
19922    arg_params->set_isarray(false);
19923    arg_params->set_type(GLMessage::DataType::INT64);
19924    arg_params->add_int64value((uintptr_t)params);
19925
19926    // call function
19927    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19928    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19929    glContext->hooks->gl.glMaterialfv(face, pname, params);
19930    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19931    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19932
19933    void *pointerArgs[] = {
19934        (void *) params,
19935    };
19936
19937    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19938                              threadStartTime, threadEndTime,
19939                              &glmsg, pointerArgs);
19940    glContext->traceGLMessage(&glmsg);
19941}
19942
19943void GLTrace_glMultMatrixf(const GLfloat * m) {
19944    GLMessage glmsg;
19945    GLTraceContext *glContext = getGLTraceContext();
19946
19947    glmsg.set_function(GLMessage::glMultMatrixf);
19948
19949    // copy argument m
19950    GLMessage_DataType *arg_m = glmsg.add_args();
19951    arg_m->set_isarray(false);
19952    arg_m->set_type(GLMessage::DataType::INT64);
19953    arg_m->add_int64value((uintptr_t)m);
19954
19955    // call function
19956    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19957    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19958    glContext->hooks->gl.glMultMatrixf(m);
19959    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19960    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19961
19962    void *pointerArgs[] = {
19963        (void *) m,
19964    };
19965
19966    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19967                              threadStartTime, threadEndTime,
19968                              &glmsg, pointerArgs);
19969    glContext->traceGLMessage(&glmsg);
19970}
19971
19972void GLTrace_glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) {
19973    GLMessage glmsg;
19974    GLTraceContext *glContext = getGLTraceContext();
19975
19976    glmsg.set_function(GLMessage::glMultiTexCoord4f);
19977
19978    // copy argument target
19979    GLMessage_DataType *arg_target = glmsg.add_args();
19980    arg_target->set_isarray(false);
19981    arg_target->set_type(GLMessage::DataType::ENUM);
19982    arg_target->add_intvalue((int)target);
19983
19984    // copy argument s
19985    GLMessage_DataType *arg_s = glmsg.add_args();
19986    arg_s->set_isarray(false);
19987    arg_s->set_type(GLMessage::DataType::FLOAT);
19988    arg_s->add_floatvalue(s);
19989
19990    // copy argument t
19991    GLMessage_DataType *arg_t = glmsg.add_args();
19992    arg_t->set_isarray(false);
19993    arg_t->set_type(GLMessage::DataType::FLOAT);
19994    arg_t->add_floatvalue(t);
19995
19996    // copy argument r
19997    GLMessage_DataType *arg_r = glmsg.add_args();
19998    arg_r->set_isarray(false);
19999    arg_r->set_type(GLMessage::DataType::FLOAT);
20000    arg_r->add_floatvalue(r);
20001
20002    // copy argument q
20003    GLMessage_DataType *arg_q = glmsg.add_args();
20004    arg_q->set_isarray(false);
20005    arg_q->set_type(GLMessage::DataType::FLOAT);
20006    arg_q->add_floatvalue(q);
20007
20008    // call function
20009    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20010    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20011    glContext->hooks->gl.glMultiTexCoord4f(target, s, t, r, q);
20012    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20013    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20014
20015    void *pointerArgs[] = {
20016    };
20017
20018    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20019                              threadStartTime, threadEndTime,
20020                              &glmsg, pointerArgs);
20021    glContext->traceGLMessage(&glmsg);
20022}
20023
20024void GLTrace_glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) {
20025    GLMessage glmsg;
20026    GLTraceContext *glContext = getGLTraceContext();
20027
20028    glmsg.set_function(GLMessage::glNormal3f);
20029
20030    // copy argument nx
20031    GLMessage_DataType *arg_nx = glmsg.add_args();
20032    arg_nx->set_isarray(false);
20033    arg_nx->set_type(GLMessage::DataType::FLOAT);
20034    arg_nx->add_floatvalue(nx);
20035
20036    // copy argument ny
20037    GLMessage_DataType *arg_ny = glmsg.add_args();
20038    arg_ny->set_isarray(false);
20039    arg_ny->set_type(GLMessage::DataType::FLOAT);
20040    arg_ny->add_floatvalue(ny);
20041
20042    // copy argument nz
20043    GLMessage_DataType *arg_nz = glmsg.add_args();
20044    arg_nz->set_isarray(false);
20045    arg_nz->set_type(GLMessage::DataType::FLOAT);
20046    arg_nz->add_floatvalue(nz);
20047
20048    // call function
20049    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20050    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20051    glContext->hooks->gl.glNormal3f(nx, ny, nz);
20052    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20053    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20054
20055    void *pointerArgs[] = {
20056    };
20057
20058    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20059                              threadStartTime, threadEndTime,
20060                              &glmsg, pointerArgs);
20061    glContext->traceGLMessage(&glmsg);
20062}
20063
20064void GLTrace_glOrthof(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f) {
20065    GLMessage glmsg;
20066    GLTraceContext *glContext = getGLTraceContext();
20067
20068    glmsg.set_function(GLMessage::glOrthof);
20069
20070    // copy argument l
20071    GLMessage_DataType *arg_l = glmsg.add_args();
20072    arg_l->set_isarray(false);
20073    arg_l->set_type(GLMessage::DataType::FLOAT);
20074    arg_l->add_floatvalue(l);
20075
20076    // copy argument r
20077    GLMessage_DataType *arg_r = glmsg.add_args();
20078    arg_r->set_isarray(false);
20079    arg_r->set_type(GLMessage::DataType::FLOAT);
20080    arg_r->add_floatvalue(r);
20081
20082    // copy argument b
20083    GLMessage_DataType *arg_b = glmsg.add_args();
20084    arg_b->set_isarray(false);
20085    arg_b->set_type(GLMessage::DataType::FLOAT);
20086    arg_b->add_floatvalue(b);
20087
20088    // copy argument t
20089    GLMessage_DataType *arg_t = glmsg.add_args();
20090    arg_t->set_isarray(false);
20091    arg_t->set_type(GLMessage::DataType::FLOAT);
20092    arg_t->add_floatvalue(t);
20093
20094    // copy argument n
20095    GLMessage_DataType *arg_n = glmsg.add_args();
20096    arg_n->set_isarray(false);
20097    arg_n->set_type(GLMessage::DataType::FLOAT);
20098    arg_n->add_floatvalue(n);
20099
20100    // copy argument f
20101    GLMessage_DataType *arg_f = glmsg.add_args();
20102    arg_f->set_isarray(false);
20103    arg_f->set_type(GLMessage::DataType::FLOAT);
20104    arg_f->add_floatvalue(f);
20105
20106    // call function
20107    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20108    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20109    glContext->hooks->gl.glOrthof(l, r, b, t, n, f);
20110    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20111    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20112
20113    void *pointerArgs[] = {
20114    };
20115
20116    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20117                              threadStartTime, threadEndTime,
20118                              &glmsg, pointerArgs);
20119    glContext->traceGLMessage(&glmsg);
20120}
20121
20122void GLTrace_glPointParameterf(GLenum pname, GLfloat param) {
20123    GLMessage glmsg;
20124    GLTraceContext *glContext = getGLTraceContext();
20125
20126    glmsg.set_function(GLMessage::glPointParameterf);
20127
20128    // copy argument pname
20129    GLMessage_DataType *arg_pname = glmsg.add_args();
20130    arg_pname->set_isarray(false);
20131    arg_pname->set_type(GLMessage::DataType::ENUM);
20132    arg_pname->add_intvalue((int)pname);
20133
20134    // copy argument param
20135    GLMessage_DataType *arg_param = glmsg.add_args();
20136    arg_param->set_isarray(false);
20137    arg_param->set_type(GLMessage::DataType::FLOAT);
20138    arg_param->add_floatvalue(param);
20139
20140    // call function
20141    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20142    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20143    glContext->hooks->gl.glPointParameterf(pname, param);
20144    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20145    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20146
20147    void *pointerArgs[] = {
20148    };
20149
20150    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20151                              threadStartTime, threadEndTime,
20152                              &glmsg, pointerArgs);
20153    glContext->traceGLMessage(&glmsg);
20154}
20155
20156void GLTrace_glPointParameterfv(GLenum pname, const GLfloat * params) {
20157    GLMessage glmsg;
20158    GLTraceContext *glContext = getGLTraceContext();
20159
20160    glmsg.set_function(GLMessage::glPointParameterfv);
20161
20162    // copy argument pname
20163    GLMessage_DataType *arg_pname = glmsg.add_args();
20164    arg_pname->set_isarray(false);
20165    arg_pname->set_type(GLMessage::DataType::ENUM);
20166    arg_pname->add_intvalue((int)pname);
20167
20168    // copy argument params
20169    GLMessage_DataType *arg_params = glmsg.add_args();
20170    arg_params->set_isarray(false);
20171    arg_params->set_type(GLMessage::DataType::INT64);
20172    arg_params->add_int64value((uintptr_t)params);
20173
20174    // call function
20175    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20176    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20177    glContext->hooks->gl.glPointParameterfv(pname, params);
20178    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20179    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20180
20181    void *pointerArgs[] = {
20182        (void *) params,
20183    };
20184
20185    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20186                              threadStartTime, threadEndTime,
20187                              &glmsg, pointerArgs);
20188    glContext->traceGLMessage(&glmsg);
20189}
20190
20191void GLTrace_glPointSize(GLfloat size) {
20192    GLMessage glmsg;
20193    GLTraceContext *glContext = getGLTraceContext();
20194
20195    glmsg.set_function(GLMessage::glPointSize);
20196
20197    // copy argument size
20198    GLMessage_DataType *arg_size = glmsg.add_args();
20199    arg_size->set_isarray(false);
20200    arg_size->set_type(GLMessage::DataType::FLOAT);
20201    arg_size->add_floatvalue(size);
20202
20203    // call function
20204    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20205    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20206    glContext->hooks->gl.glPointSize(size);
20207    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20208    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20209
20210    void *pointerArgs[] = {
20211    };
20212
20213    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20214                              threadStartTime, threadEndTime,
20215                              &glmsg, pointerArgs);
20216    glContext->traceGLMessage(&glmsg);
20217}
20218
20219void GLTrace_glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) {
20220    GLMessage glmsg;
20221    GLTraceContext *glContext = getGLTraceContext();
20222
20223    glmsg.set_function(GLMessage::glRotatef);
20224
20225    // copy argument angle
20226    GLMessage_DataType *arg_angle = glmsg.add_args();
20227    arg_angle->set_isarray(false);
20228    arg_angle->set_type(GLMessage::DataType::FLOAT);
20229    arg_angle->add_floatvalue(angle);
20230
20231    // copy argument x
20232    GLMessage_DataType *arg_x = glmsg.add_args();
20233    arg_x->set_isarray(false);
20234    arg_x->set_type(GLMessage::DataType::FLOAT);
20235    arg_x->add_floatvalue(x);
20236
20237    // copy argument y
20238    GLMessage_DataType *arg_y = glmsg.add_args();
20239    arg_y->set_isarray(false);
20240    arg_y->set_type(GLMessage::DataType::FLOAT);
20241    arg_y->add_floatvalue(y);
20242
20243    // copy argument z
20244    GLMessage_DataType *arg_z = glmsg.add_args();
20245    arg_z->set_isarray(false);
20246    arg_z->set_type(GLMessage::DataType::FLOAT);
20247    arg_z->add_floatvalue(z);
20248
20249    // call function
20250    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20251    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20252    glContext->hooks->gl.glRotatef(angle, x, y, z);
20253    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20254    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20255
20256    void *pointerArgs[] = {
20257    };
20258
20259    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20260                              threadStartTime, threadEndTime,
20261                              &glmsg, pointerArgs);
20262    glContext->traceGLMessage(&glmsg);
20263}
20264
20265void GLTrace_glScalef(GLfloat x, GLfloat y, GLfloat z) {
20266    GLMessage glmsg;
20267    GLTraceContext *glContext = getGLTraceContext();
20268
20269    glmsg.set_function(GLMessage::glScalef);
20270
20271    // copy argument x
20272    GLMessage_DataType *arg_x = glmsg.add_args();
20273    arg_x->set_isarray(false);
20274    arg_x->set_type(GLMessage::DataType::FLOAT);
20275    arg_x->add_floatvalue(x);
20276
20277    // copy argument y
20278    GLMessage_DataType *arg_y = glmsg.add_args();
20279    arg_y->set_isarray(false);
20280    arg_y->set_type(GLMessage::DataType::FLOAT);
20281    arg_y->add_floatvalue(y);
20282
20283    // copy argument z
20284    GLMessage_DataType *arg_z = glmsg.add_args();
20285    arg_z->set_isarray(false);
20286    arg_z->set_type(GLMessage::DataType::FLOAT);
20287    arg_z->add_floatvalue(z);
20288
20289    // call function
20290    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20291    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20292    glContext->hooks->gl.glScalef(x, y, z);
20293    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20294    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20295
20296    void *pointerArgs[] = {
20297    };
20298
20299    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20300                              threadStartTime, threadEndTime,
20301                              &glmsg, pointerArgs);
20302    glContext->traceGLMessage(&glmsg);
20303}
20304
20305void GLTrace_glTexEnvf(GLenum target, GLenum pname, GLfloat param) {
20306    GLMessage glmsg;
20307    GLTraceContext *glContext = getGLTraceContext();
20308
20309    glmsg.set_function(GLMessage::glTexEnvf);
20310
20311    // copy argument target
20312    GLMessage_DataType *arg_target = glmsg.add_args();
20313    arg_target->set_isarray(false);
20314    arg_target->set_type(GLMessage::DataType::ENUM);
20315    arg_target->add_intvalue((int)target);
20316
20317    // copy argument pname
20318    GLMessage_DataType *arg_pname = glmsg.add_args();
20319    arg_pname->set_isarray(false);
20320    arg_pname->set_type(GLMessage::DataType::ENUM);
20321    arg_pname->add_intvalue((int)pname);
20322
20323    // copy argument param
20324    GLMessage_DataType *arg_param = glmsg.add_args();
20325    arg_param->set_isarray(false);
20326    arg_param->set_type(GLMessage::DataType::FLOAT);
20327    arg_param->add_floatvalue(param);
20328
20329    // call function
20330    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20331    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20332    glContext->hooks->gl.glTexEnvf(target, pname, param);
20333    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20334    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20335
20336    void *pointerArgs[] = {
20337    };
20338
20339    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20340                              threadStartTime, threadEndTime,
20341                              &glmsg, pointerArgs);
20342    glContext->traceGLMessage(&glmsg);
20343}
20344
20345void GLTrace_glTexEnvfv(GLenum target, GLenum pname, const GLfloat * params) {
20346    GLMessage glmsg;
20347    GLTraceContext *glContext = getGLTraceContext();
20348
20349    glmsg.set_function(GLMessage::glTexEnvfv);
20350
20351    // copy argument target
20352    GLMessage_DataType *arg_target = glmsg.add_args();
20353    arg_target->set_isarray(false);
20354    arg_target->set_type(GLMessage::DataType::ENUM);
20355    arg_target->add_intvalue((int)target);
20356
20357    // copy argument pname
20358    GLMessage_DataType *arg_pname = glmsg.add_args();
20359    arg_pname->set_isarray(false);
20360    arg_pname->set_type(GLMessage::DataType::ENUM);
20361    arg_pname->add_intvalue((int)pname);
20362
20363    // copy argument params
20364    GLMessage_DataType *arg_params = glmsg.add_args();
20365    arg_params->set_isarray(false);
20366    arg_params->set_type(GLMessage::DataType::INT64);
20367    arg_params->add_int64value((uintptr_t)params);
20368
20369    // call function
20370    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20371    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20372    glContext->hooks->gl.glTexEnvfv(target, pname, params);
20373    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20374    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20375
20376    void *pointerArgs[] = {
20377        (void *) params,
20378    };
20379
20380    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20381                              threadStartTime, threadEndTime,
20382                              &glmsg, pointerArgs);
20383    glContext->traceGLMessage(&glmsg);
20384}
20385
20386void GLTrace_glTranslatef(GLfloat x, GLfloat y, GLfloat z) {
20387    GLMessage glmsg;
20388    GLTraceContext *glContext = getGLTraceContext();
20389
20390    glmsg.set_function(GLMessage::glTranslatef);
20391
20392    // copy argument x
20393    GLMessage_DataType *arg_x = glmsg.add_args();
20394    arg_x->set_isarray(false);
20395    arg_x->set_type(GLMessage::DataType::FLOAT);
20396    arg_x->add_floatvalue(x);
20397
20398    // copy argument y
20399    GLMessage_DataType *arg_y = glmsg.add_args();
20400    arg_y->set_isarray(false);
20401    arg_y->set_type(GLMessage::DataType::FLOAT);
20402    arg_y->add_floatvalue(y);
20403
20404    // copy argument z
20405    GLMessage_DataType *arg_z = glmsg.add_args();
20406    arg_z->set_isarray(false);
20407    arg_z->set_type(GLMessage::DataType::FLOAT);
20408    arg_z->add_floatvalue(z);
20409
20410    // call function
20411    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20412    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20413    glContext->hooks->gl.glTranslatef(x, y, z);
20414    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20415    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20416
20417    void *pointerArgs[] = {
20418    };
20419
20420    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20421                              threadStartTime, threadEndTime,
20422                              &glmsg, pointerArgs);
20423    glContext->traceGLMessage(&glmsg);
20424}
20425
20426void GLTrace_glAlphaFuncx(GLenum func, GLfixed ref) {
20427    GLMessage glmsg;
20428    GLTraceContext *glContext = getGLTraceContext();
20429
20430    glmsg.set_function(GLMessage::glAlphaFuncx);
20431
20432    // copy argument func
20433    GLMessage_DataType *arg_func = glmsg.add_args();
20434    arg_func->set_isarray(false);
20435    arg_func->set_type(GLMessage::DataType::ENUM);
20436    arg_func->add_intvalue((int)func);
20437
20438    // copy argument ref
20439    GLMessage_DataType *arg_ref = glmsg.add_args();
20440    arg_ref->set_isarray(false);
20441    arg_ref->set_type(GLMessage::DataType::INT);
20442    arg_ref->add_intvalue(ref);
20443
20444    // call function
20445    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20446    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20447    glContext->hooks->gl.glAlphaFuncx(func, ref);
20448    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20449    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20450
20451    void *pointerArgs[] = {
20452    };
20453
20454    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20455                              threadStartTime, threadEndTime,
20456                              &glmsg, pointerArgs);
20457    glContext->traceGLMessage(&glmsg);
20458}
20459
20460void GLTrace_glClearColorx(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {
20461    GLMessage glmsg;
20462    GLTraceContext *glContext = getGLTraceContext();
20463
20464    glmsg.set_function(GLMessage::glClearColorx);
20465
20466    // copy argument red
20467    GLMessage_DataType *arg_red = glmsg.add_args();
20468    arg_red->set_isarray(false);
20469    arg_red->set_type(GLMessage::DataType::INT);
20470    arg_red->add_intvalue(red);
20471
20472    // copy argument green
20473    GLMessage_DataType *arg_green = glmsg.add_args();
20474    arg_green->set_isarray(false);
20475    arg_green->set_type(GLMessage::DataType::INT);
20476    arg_green->add_intvalue(green);
20477
20478    // copy argument blue
20479    GLMessage_DataType *arg_blue = glmsg.add_args();
20480    arg_blue->set_isarray(false);
20481    arg_blue->set_type(GLMessage::DataType::INT);
20482    arg_blue->add_intvalue(blue);
20483
20484    // copy argument alpha
20485    GLMessage_DataType *arg_alpha = glmsg.add_args();
20486    arg_alpha->set_isarray(false);
20487    arg_alpha->set_type(GLMessage::DataType::INT);
20488    arg_alpha->add_intvalue(alpha);
20489
20490    // call function
20491    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20492    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20493    glContext->hooks->gl.glClearColorx(red, green, blue, alpha);
20494    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20495    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20496
20497    void *pointerArgs[] = {
20498    };
20499
20500    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20501                              threadStartTime, threadEndTime,
20502                              &glmsg, pointerArgs);
20503    glContext->traceGLMessage(&glmsg);
20504}
20505
20506void GLTrace_glClearDepthx(GLfixed depth) {
20507    GLMessage glmsg;
20508    GLTraceContext *glContext = getGLTraceContext();
20509
20510    glmsg.set_function(GLMessage::glClearDepthx);
20511
20512    // copy argument depth
20513    GLMessage_DataType *arg_depth = glmsg.add_args();
20514    arg_depth->set_isarray(false);
20515    arg_depth->set_type(GLMessage::DataType::INT);
20516    arg_depth->add_intvalue(depth);
20517
20518    // call function
20519    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20520    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20521    glContext->hooks->gl.glClearDepthx(depth);
20522    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20523    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20524
20525    void *pointerArgs[] = {
20526    };
20527
20528    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20529                              threadStartTime, threadEndTime,
20530                              &glmsg, pointerArgs);
20531    glContext->traceGLMessage(&glmsg);
20532}
20533
20534void GLTrace_glClientActiveTexture(GLenum texture) {
20535    GLMessage glmsg;
20536    GLTraceContext *glContext = getGLTraceContext();
20537
20538    glmsg.set_function(GLMessage::glClientActiveTexture);
20539
20540    // copy argument texture
20541    GLMessage_DataType *arg_texture = glmsg.add_args();
20542    arg_texture->set_isarray(false);
20543    arg_texture->set_type(GLMessage::DataType::ENUM);
20544    arg_texture->add_intvalue((int)texture);
20545
20546    // call function
20547    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20548    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20549    glContext->hooks->gl.glClientActiveTexture(texture);
20550    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20551    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20552
20553    void *pointerArgs[] = {
20554    };
20555
20556    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20557                              threadStartTime, threadEndTime,
20558                              &glmsg, pointerArgs);
20559    glContext->traceGLMessage(&glmsg);
20560}
20561
20562void GLTrace_glClipPlanex(GLenum plane, const GLfixed * equation) {
20563    GLMessage glmsg;
20564    GLTraceContext *glContext = getGLTraceContext();
20565
20566    glmsg.set_function(GLMessage::glClipPlanex);
20567
20568    // copy argument plane
20569    GLMessage_DataType *arg_plane = glmsg.add_args();
20570    arg_plane->set_isarray(false);
20571    arg_plane->set_type(GLMessage::DataType::ENUM);
20572    arg_plane->add_intvalue((int)plane);
20573
20574    // copy argument equation
20575    GLMessage_DataType *arg_equation = glmsg.add_args();
20576    arg_equation->set_isarray(false);
20577    arg_equation->set_type(GLMessage::DataType::INT64);
20578    arg_equation->add_int64value((uintptr_t)equation);
20579
20580    // call function
20581    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20582    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20583    glContext->hooks->gl.glClipPlanex(plane, equation);
20584    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20585    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20586
20587    void *pointerArgs[] = {
20588        (void *) equation,
20589    };
20590
20591    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20592                              threadStartTime, threadEndTime,
20593                              &glmsg, pointerArgs);
20594    glContext->traceGLMessage(&glmsg);
20595}
20596
20597void GLTrace_glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) {
20598    GLMessage glmsg;
20599    GLTraceContext *glContext = getGLTraceContext();
20600
20601    glmsg.set_function(GLMessage::glColor4ub);
20602
20603    // copy argument red
20604    GLMessage_DataType *arg_red = glmsg.add_args();
20605    arg_red->set_isarray(false);
20606    arg_red->set_type(GLMessage::DataType::BYTE);
20607    arg_red->add_intvalue((int)red);
20608
20609    // copy argument green
20610    GLMessage_DataType *arg_green = glmsg.add_args();
20611    arg_green->set_isarray(false);
20612    arg_green->set_type(GLMessage::DataType::BYTE);
20613    arg_green->add_intvalue((int)green);
20614
20615    // copy argument blue
20616    GLMessage_DataType *arg_blue = glmsg.add_args();
20617    arg_blue->set_isarray(false);
20618    arg_blue->set_type(GLMessage::DataType::BYTE);
20619    arg_blue->add_intvalue((int)blue);
20620
20621    // copy argument alpha
20622    GLMessage_DataType *arg_alpha = glmsg.add_args();
20623    arg_alpha->set_isarray(false);
20624    arg_alpha->set_type(GLMessage::DataType::BYTE);
20625    arg_alpha->add_intvalue((int)alpha);
20626
20627    // call function
20628    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20629    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20630    glContext->hooks->gl.glColor4ub(red, green, blue, alpha);
20631    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20632    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20633
20634    void *pointerArgs[] = {
20635    };
20636
20637    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20638                              threadStartTime, threadEndTime,
20639                              &glmsg, pointerArgs);
20640    glContext->traceGLMessage(&glmsg);
20641}
20642
20643void GLTrace_glColor4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {
20644    GLMessage glmsg;
20645    GLTraceContext *glContext = getGLTraceContext();
20646
20647    glmsg.set_function(GLMessage::glColor4x);
20648
20649    // copy argument red
20650    GLMessage_DataType *arg_red = glmsg.add_args();
20651    arg_red->set_isarray(false);
20652    arg_red->set_type(GLMessage::DataType::INT);
20653    arg_red->add_intvalue(red);
20654
20655    // copy argument green
20656    GLMessage_DataType *arg_green = glmsg.add_args();
20657    arg_green->set_isarray(false);
20658    arg_green->set_type(GLMessage::DataType::INT);
20659    arg_green->add_intvalue(green);
20660
20661    // copy argument blue
20662    GLMessage_DataType *arg_blue = glmsg.add_args();
20663    arg_blue->set_isarray(false);
20664    arg_blue->set_type(GLMessage::DataType::INT);
20665    arg_blue->add_intvalue(blue);
20666
20667    // copy argument alpha
20668    GLMessage_DataType *arg_alpha = glmsg.add_args();
20669    arg_alpha->set_isarray(false);
20670    arg_alpha->set_type(GLMessage::DataType::INT);
20671    arg_alpha->add_intvalue(alpha);
20672
20673    // call function
20674    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20675    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20676    glContext->hooks->gl.glColor4x(red, green, blue, alpha);
20677    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20678    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20679
20680    void *pointerArgs[] = {
20681    };
20682
20683    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20684                              threadStartTime, threadEndTime,
20685                              &glmsg, pointerArgs);
20686    glContext->traceGLMessage(&glmsg);
20687}
20688
20689void GLTrace_glColorPointer(GLint size, GLenum type, GLsizei stride, const void * pointer) {
20690    GLMessage glmsg;
20691    GLTraceContext *glContext = getGLTraceContext();
20692
20693    glmsg.set_function(GLMessage::glColorPointer);
20694
20695    // copy argument size
20696    GLMessage_DataType *arg_size = glmsg.add_args();
20697    arg_size->set_isarray(false);
20698    arg_size->set_type(GLMessage::DataType::INT);
20699    arg_size->add_intvalue(size);
20700
20701    // copy argument type
20702    GLMessage_DataType *arg_type = glmsg.add_args();
20703    arg_type->set_isarray(false);
20704    arg_type->set_type(GLMessage::DataType::ENUM);
20705    arg_type->add_intvalue((int)type);
20706
20707    // copy argument stride
20708    GLMessage_DataType *arg_stride = glmsg.add_args();
20709    arg_stride->set_isarray(false);
20710    arg_stride->set_type(GLMessage::DataType::INT);
20711    arg_stride->add_intvalue(stride);
20712
20713    // copy argument pointer
20714    GLMessage_DataType *arg_pointer = glmsg.add_args();
20715    arg_pointer->set_isarray(false);
20716    arg_pointer->set_type(GLMessage::DataType::INT64);
20717    arg_pointer->add_int64value((uintptr_t)pointer);
20718
20719    // call function
20720    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20721    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20722    glContext->hooks->gl.glColorPointer(size, type, stride, pointer);
20723    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20724    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20725
20726    void *pointerArgs[] = {
20727        (void *) pointer,
20728    };
20729
20730    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20731                              threadStartTime, threadEndTime,
20732                              &glmsg, pointerArgs);
20733    glContext->traceGLMessage(&glmsg);
20734}
20735
20736void GLTrace_glDepthRangex(GLfixed n, GLfixed f) {
20737    GLMessage glmsg;
20738    GLTraceContext *glContext = getGLTraceContext();
20739
20740    glmsg.set_function(GLMessage::glDepthRangex);
20741
20742    // copy argument n
20743    GLMessage_DataType *arg_n = glmsg.add_args();
20744    arg_n->set_isarray(false);
20745    arg_n->set_type(GLMessage::DataType::INT);
20746    arg_n->add_intvalue(n);
20747
20748    // copy argument f
20749    GLMessage_DataType *arg_f = glmsg.add_args();
20750    arg_f->set_isarray(false);
20751    arg_f->set_type(GLMessage::DataType::INT);
20752    arg_f->add_intvalue(f);
20753
20754    // call function
20755    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20756    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20757    glContext->hooks->gl.glDepthRangex(n, f);
20758    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20759    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20760
20761    void *pointerArgs[] = {
20762    };
20763
20764    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20765                              threadStartTime, threadEndTime,
20766                              &glmsg, pointerArgs);
20767    glContext->traceGLMessage(&glmsg);
20768}
20769
20770void GLTrace_glDisableClientState(GLenum array) {
20771    GLMessage glmsg;
20772    GLTraceContext *glContext = getGLTraceContext();
20773
20774    glmsg.set_function(GLMessage::glDisableClientState);
20775
20776    // copy argument array
20777    GLMessage_DataType *arg_array = glmsg.add_args();
20778    arg_array->set_isarray(false);
20779    arg_array->set_type(GLMessage::DataType::ENUM);
20780    arg_array->add_intvalue((int)array);
20781
20782    // call function
20783    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20784    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20785    glContext->hooks->gl.glDisableClientState(array);
20786    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20787    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20788
20789    void *pointerArgs[] = {
20790    };
20791
20792    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20793                              threadStartTime, threadEndTime,
20794                              &glmsg, pointerArgs);
20795    glContext->traceGLMessage(&glmsg);
20796}
20797
20798void GLTrace_glEnableClientState(GLenum array) {
20799    GLMessage glmsg;
20800    GLTraceContext *glContext = getGLTraceContext();
20801
20802    glmsg.set_function(GLMessage::glEnableClientState);
20803
20804    // copy argument array
20805    GLMessage_DataType *arg_array = glmsg.add_args();
20806    arg_array->set_isarray(false);
20807    arg_array->set_type(GLMessage::DataType::ENUM);
20808    arg_array->add_intvalue((int)array);
20809
20810    // call function
20811    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20812    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20813    glContext->hooks->gl.glEnableClientState(array);
20814    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20815    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20816
20817    void *pointerArgs[] = {
20818    };
20819
20820    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20821                              threadStartTime, threadEndTime,
20822                              &glmsg, pointerArgs);
20823    glContext->traceGLMessage(&glmsg);
20824}
20825
20826void GLTrace_glFogx(GLenum pname, GLfixed param) {
20827    GLMessage glmsg;
20828    GLTraceContext *glContext = getGLTraceContext();
20829
20830    glmsg.set_function(GLMessage::glFogx);
20831
20832    // copy argument pname
20833    GLMessage_DataType *arg_pname = glmsg.add_args();
20834    arg_pname->set_isarray(false);
20835    arg_pname->set_type(GLMessage::DataType::ENUM);
20836    arg_pname->add_intvalue((int)pname);
20837
20838    // copy argument param
20839    GLMessage_DataType *arg_param = glmsg.add_args();
20840    arg_param->set_isarray(false);
20841    arg_param->set_type(GLMessage::DataType::INT);
20842    arg_param->add_intvalue(param);
20843
20844    // call function
20845    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20846    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20847    glContext->hooks->gl.glFogx(pname, param);
20848    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20849    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20850
20851    void *pointerArgs[] = {
20852    };
20853
20854    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20855                              threadStartTime, threadEndTime,
20856                              &glmsg, pointerArgs);
20857    glContext->traceGLMessage(&glmsg);
20858}
20859
20860void GLTrace_glFogxv(GLenum pname, const GLfixed * param) {
20861    GLMessage glmsg;
20862    GLTraceContext *glContext = getGLTraceContext();
20863
20864    glmsg.set_function(GLMessage::glFogxv);
20865
20866    // copy argument pname
20867    GLMessage_DataType *arg_pname = glmsg.add_args();
20868    arg_pname->set_isarray(false);
20869    arg_pname->set_type(GLMessage::DataType::ENUM);
20870    arg_pname->add_intvalue((int)pname);
20871
20872    // copy argument param
20873    GLMessage_DataType *arg_param = glmsg.add_args();
20874    arg_param->set_isarray(false);
20875    arg_param->set_type(GLMessage::DataType::INT64);
20876    arg_param->add_int64value((uintptr_t)param);
20877
20878    // call function
20879    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20880    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20881    glContext->hooks->gl.glFogxv(pname, param);
20882    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20883    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20884
20885    void *pointerArgs[] = {
20886        (void *) param,
20887    };
20888
20889    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20890                              threadStartTime, threadEndTime,
20891                              &glmsg, pointerArgs);
20892    glContext->traceGLMessage(&glmsg);
20893}
20894
20895void GLTrace_glFrustumx(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f) {
20896    GLMessage glmsg;
20897    GLTraceContext *glContext = getGLTraceContext();
20898
20899    glmsg.set_function(GLMessage::glFrustumx);
20900
20901    // copy argument l
20902    GLMessage_DataType *arg_l = glmsg.add_args();
20903    arg_l->set_isarray(false);
20904    arg_l->set_type(GLMessage::DataType::INT);
20905    arg_l->add_intvalue(l);
20906
20907    // copy argument r
20908    GLMessage_DataType *arg_r = glmsg.add_args();
20909    arg_r->set_isarray(false);
20910    arg_r->set_type(GLMessage::DataType::INT);
20911    arg_r->add_intvalue(r);
20912
20913    // copy argument b
20914    GLMessage_DataType *arg_b = glmsg.add_args();
20915    arg_b->set_isarray(false);
20916    arg_b->set_type(GLMessage::DataType::INT);
20917    arg_b->add_intvalue(b);
20918
20919    // copy argument t
20920    GLMessage_DataType *arg_t = glmsg.add_args();
20921    arg_t->set_isarray(false);
20922    arg_t->set_type(GLMessage::DataType::INT);
20923    arg_t->add_intvalue(t);
20924
20925    // copy argument n
20926    GLMessage_DataType *arg_n = glmsg.add_args();
20927    arg_n->set_isarray(false);
20928    arg_n->set_type(GLMessage::DataType::INT);
20929    arg_n->add_intvalue(n);
20930
20931    // copy argument f
20932    GLMessage_DataType *arg_f = glmsg.add_args();
20933    arg_f->set_isarray(false);
20934    arg_f->set_type(GLMessage::DataType::INT);
20935    arg_f->add_intvalue(f);
20936
20937    // call function
20938    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20939    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20940    glContext->hooks->gl.glFrustumx(l, r, b, t, n, f);
20941    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20942    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20943
20944    void *pointerArgs[] = {
20945    };
20946
20947    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20948                              threadStartTime, threadEndTime,
20949                              &glmsg, pointerArgs);
20950    glContext->traceGLMessage(&glmsg);
20951}
20952
20953void GLTrace_glGetClipPlanex(GLenum plane, GLfixed * equation) {
20954    GLMessage glmsg;
20955    GLTraceContext *glContext = getGLTraceContext();
20956
20957    glmsg.set_function(GLMessage::glGetClipPlanex);
20958
20959    // copy argument plane
20960    GLMessage_DataType *arg_plane = glmsg.add_args();
20961    arg_plane->set_isarray(false);
20962    arg_plane->set_type(GLMessage::DataType::ENUM);
20963    arg_plane->add_intvalue((int)plane);
20964
20965    // copy argument equation
20966    GLMessage_DataType *arg_equation = glmsg.add_args();
20967    arg_equation->set_isarray(false);
20968    arg_equation->set_type(GLMessage::DataType::INT64);
20969    arg_equation->add_int64value((uintptr_t)equation);
20970
20971    // call function
20972    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20973    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20974    glContext->hooks->gl.glGetClipPlanex(plane, equation);
20975    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20976    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20977
20978    void *pointerArgs[] = {
20979        (void *) equation,
20980    };
20981
20982    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20983                              threadStartTime, threadEndTime,
20984                              &glmsg, pointerArgs);
20985    glContext->traceGLMessage(&glmsg);
20986}
20987
20988void GLTrace_glGetFixedv(GLenum pname, GLfixed * params) {
20989    GLMessage glmsg;
20990    GLTraceContext *glContext = getGLTraceContext();
20991
20992    glmsg.set_function(GLMessage::glGetFixedv);
20993
20994    // copy argument pname
20995    GLMessage_DataType *arg_pname = glmsg.add_args();
20996    arg_pname->set_isarray(false);
20997    arg_pname->set_type(GLMessage::DataType::ENUM);
20998    arg_pname->add_intvalue((int)pname);
20999
21000    // copy argument params
21001    GLMessage_DataType *arg_params = glmsg.add_args();
21002    arg_params->set_isarray(false);
21003    arg_params->set_type(GLMessage::DataType::INT64);
21004    arg_params->add_int64value((uintptr_t)params);
21005
21006    // call function
21007    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21008    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21009    glContext->hooks->gl.glGetFixedv(pname, params);
21010    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21011    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21012
21013    void *pointerArgs[] = {
21014        (void *) params,
21015    };
21016
21017    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21018                              threadStartTime, threadEndTime,
21019                              &glmsg, pointerArgs);
21020    glContext->traceGLMessage(&glmsg);
21021}
21022
21023void GLTrace_glGetLightxv(GLenum light, GLenum pname, GLfixed * params) {
21024    GLMessage glmsg;
21025    GLTraceContext *glContext = getGLTraceContext();
21026
21027    glmsg.set_function(GLMessage::glGetLightxv);
21028
21029    // copy argument light
21030    GLMessage_DataType *arg_light = glmsg.add_args();
21031    arg_light->set_isarray(false);
21032    arg_light->set_type(GLMessage::DataType::ENUM);
21033    arg_light->add_intvalue((int)light);
21034
21035    // copy argument pname
21036    GLMessage_DataType *arg_pname = glmsg.add_args();
21037    arg_pname->set_isarray(false);
21038    arg_pname->set_type(GLMessage::DataType::ENUM);
21039    arg_pname->add_intvalue((int)pname);
21040
21041    // copy argument params
21042    GLMessage_DataType *arg_params = glmsg.add_args();
21043    arg_params->set_isarray(false);
21044    arg_params->set_type(GLMessage::DataType::INT64);
21045    arg_params->add_int64value((uintptr_t)params);
21046
21047    // call function
21048    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21049    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21050    glContext->hooks->gl.glGetLightxv(light, pname, params);
21051    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21052    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21053
21054    void *pointerArgs[] = {
21055        (void *) params,
21056    };
21057
21058    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21059                              threadStartTime, threadEndTime,
21060                              &glmsg, pointerArgs);
21061    glContext->traceGLMessage(&glmsg);
21062}
21063
21064void GLTrace_glGetMaterialxv(GLenum face, GLenum pname, GLfixed * params) {
21065    GLMessage glmsg;
21066    GLTraceContext *glContext = getGLTraceContext();
21067
21068    glmsg.set_function(GLMessage::glGetMaterialxv);
21069
21070    // copy argument face
21071    GLMessage_DataType *arg_face = glmsg.add_args();
21072    arg_face->set_isarray(false);
21073    arg_face->set_type(GLMessage::DataType::ENUM);
21074    arg_face->add_intvalue((int)face);
21075
21076    // copy argument pname
21077    GLMessage_DataType *arg_pname = glmsg.add_args();
21078    arg_pname->set_isarray(false);
21079    arg_pname->set_type(GLMessage::DataType::ENUM);
21080    arg_pname->add_intvalue((int)pname);
21081
21082    // copy argument params
21083    GLMessage_DataType *arg_params = glmsg.add_args();
21084    arg_params->set_isarray(false);
21085    arg_params->set_type(GLMessage::DataType::INT64);
21086    arg_params->add_int64value((uintptr_t)params);
21087
21088    // call function
21089    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21090    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21091    glContext->hooks->gl.glGetMaterialxv(face, pname, params);
21092    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21093    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21094
21095    void *pointerArgs[] = {
21096        (void *) params,
21097    };
21098
21099    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21100                              threadStartTime, threadEndTime,
21101                              &glmsg, pointerArgs);
21102    glContext->traceGLMessage(&glmsg);
21103}
21104
21105void GLTrace_glGetPointerv(GLenum pname, void ** params) {
21106    GLMessage glmsg;
21107    GLTraceContext *glContext = getGLTraceContext();
21108
21109    glmsg.set_function(GLMessage::glGetPointerv);
21110
21111    // copy argument pname
21112    GLMessage_DataType *arg_pname = glmsg.add_args();
21113    arg_pname->set_isarray(false);
21114    arg_pname->set_type(GLMessage::DataType::ENUM);
21115    arg_pname->add_intvalue((int)pname);
21116
21117    // copy argument params
21118    GLMessage_DataType *arg_params = glmsg.add_args();
21119    arg_params->set_isarray(false);
21120    arg_params->set_type(GLMessage::DataType::INT64);
21121    arg_params->add_int64value((uintptr_t)params);
21122
21123    // call function
21124    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21125    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21126    glContext->hooks->gl.glGetPointerv(pname, params);
21127    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21128    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21129
21130    void *pointerArgs[] = {
21131        (void *) params,
21132    };
21133
21134    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21135                              threadStartTime, threadEndTime,
21136                              &glmsg, pointerArgs);
21137    glContext->traceGLMessage(&glmsg);
21138}
21139
21140void GLTrace_glGetTexEnviv(GLenum target, GLenum pname, GLint * params) {
21141    GLMessage glmsg;
21142    GLTraceContext *glContext = getGLTraceContext();
21143
21144    glmsg.set_function(GLMessage::glGetTexEnviv);
21145
21146    // copy argument target
21147    GLMessage_DataType *arg_target = glmsg.add_args();
21148    arg_target->set_isarray(false);
21149    arg_target->set_type(GLMessage::DataType::ENUM);
21150    arg_target->add_intvalue((int)target);
21151
21152    // copy argument pname
21153    GLMessage_DataType *arg_pname = glmsg.add_args();
21154    arg_pname->set_isarray(false);
21155    arg_pname->set_type(GLMessage::DataType::ENUM);
21156    arg_pname->add_intvalue((int)pname);
21157
21158    // copy argument params
21159    GLMessage_DataType *arg_params = glmsg.add_args();
21160    arg_params->set_isarray(false);
21161    arg_params->set_type(GLMessage::DataType::INT64);
21162    arg_params->add_int64value((uintptr_t)params);
21163
21164    // call function
21165    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21166    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21167    glContext->hooks->gl.glGetTexEnviv(target, pname, params);
21168    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21169    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21170
21171    void *pointerArgs[] = {
21172        (void *) params,
21173    };
21174
21175    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21176                              threadStartTime, threadEndTime,
21177                              &glmsg, pointerArgs);
21178    glContext->traceGLMessage(&glmsg);
21179}
21180
21181void GLTrace_glGetTexEnvxv(GLenum target, GLenum pname, GLfixed * params) {
21182    GLMessage glmsg;
21183    GLTraceContext *glContext = getGLTraceContext();
21184
21185    glmsg.set_function(GLMessage::glGetTexEnvxv);
21186
21187    // copy argument target
21188    GLMessage_DataType *arg_target = glmsg.add_args();
21189    arg_target->set_isarray(false);
21190    arg_target->set_type(GLMessage::DataType::ENUM);
21191    arg_target->add_intvalue((int)target);
21192
21193    // copy argument pname
21194    GLMessage_DataType *arg_pname = glmsg.add_args();
21195    arg_pname->set_isarray(false);
21196    arg_pname->set_type(GLMessage::DataType::ENUM);
21197    arg_pname->add_intvalue((int)pname);
21198
21199    // copy argument params
21200    GLMessage_DataType *arg_params = glmsg.add_args();
21201    arg_params->set_isarray(false);
21202    arg_params->set_type(GLMessage::DataType::INT64);
21203    arg_params->add_int64value((uintptr_t)params);
21204
21205    // call function
21206    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21207    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21208    glContext->hooks->gl.glGetTexEnvxv(target, pname, params);
21209    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21210    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21211
21212    void *pointerArgs[] = {
21213        (void *) params,
21214    };
21215
21216    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21217                              threadStartTime, threadEndTime,
21218                              &glmsg, pointerArgs);
21219    glContext->traceGLMessage(&glmsg);
21220}
21221
21222void GLTrace_glGetTexParameterxv(GLenum target, GLenum pname, GLfixed * params) {
21223    GLMessage glmsg;
21224    GLTraceContext *glContext = getGLTraceContext();
21225
21226    glmsg.set_function(GLMessage::glGetTexParameterxv);
21227
21228    // copy argument target
21229    GLMessage_DataType *arg_target = glmsg.add_args();
21230    arg_target->set_isarray(false);
21231    arg_target->set_type(GLMessage::DataType::ENUM);
21232    arg_target->add_intvalue((int)target);
21233
21234    // copy argument pname
21235    GLMessage_DataType *arg_pname = glmsg.add_args();
21236    arg_pname->set_isarray(false);
21237    arg_pname->set_type(GLMessage::DataType::ENUM);
21238    arg_pname->add_intvalue((int)pname);
21239
21240    // copy argument params
21241    GLMessage_DataType *arg_params = glmsg.add_args();
21242    arg_params->set_isarray(false);
21243    arg_params->set_type(GLMessage::DataType::INT64);
21244    arg_params->add_int64value((uintptr_t)params);
21245
21246    // call function
21247    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21248    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21249    glContext->hooks->gl.glGetTexParameterxv(target, pname, params);
21250    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21251    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21252
21253    void *pointerArgs[] = {
21254        (void *) params,
21255    };
21256
21257    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21258                              threadStartTime, threadEndTime,
21259                              &glmsg, pointerArgs);
21260    glContext->traceGLMessage(&glmsg);
21261}
21262
21263void GLTrace_glLightModelx(GLenum pname, GLfixed param) {
21264    GLMessage glmsg;
21265    GLTraceContext *glContext = getGLTraceContext();
21266
21267    glmsg.set_function(GLMessage::glLightModelx);
21268
21269    // copy argument pname
21270    GLMessage_DataType *arg_pname = glmsg.add_args();
21271    arg_pname->set_isarray(false);
21272    arg_pname->set_type(GLMessage::DataType::ENUM);
21273    arg_pname->add_intvalue((int)pname);
21274
21275    // copy argument param
21276    GLMessage_DataType *arg_param = glmsg.add_args();
21277    arg_param->set_isarray(false);
21278    arg_param->set_type(GLMessage::DataType::INT);
21279    arg_param->add_intvalue(param);
21280
21281    // call function
21282    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21283    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21284    glContext->hooks->gl.glLightModelx(pname, param);
21285    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21286    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21287
21288    void *pointerArgs[] = {
21289    };
21290
21291    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21292                              threadStartTime, threadEndTime,
21293                              &glmsg, pointerArgs);
21294    glContext->traceGLMessage(&glmsg);
21295}
21296
21297void GLTrace_glLightModelxv(GLenum pname, const GLfixed * param) {
21298    GLMessage glmsg;
21299    GLTraceContext *glContext = getGLTraceContext();
21300
21301    glmsg.set_function(GLMessage::glLightModelxv);
21302
21303    // copy argument pname
21304    GLMessage_DataType *arg_pname = glmsg.add_args();
21305    arg_pname->set_isarray(false);
21306    arg_pname->set_type(GLMessage::DataType::ENUM);
21307    arg_pname->add_intvalue((int)pname);
21308
21309    // copy argument param
21310    GLMessage_DataType *arg_param = glmsg.add_args();
21311    arg_param->set_isarray(false);
21312    arg_param->set_type(GLMessage::DataType::INT64);
21313    arg_param->add_int64value((uintptr_t)param);
21314
21315    // call function
21316    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21317    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21318    glContext->hooks->gl.glLightModelxv(pname, param);
21319    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21320    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21321
21322    void *pointerArgs[] = {
21323        (void *) param,
21324    };
21325
21326    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21327                              threadStartTime, threadEndTime,
21328                              &glmsg, pointerArgs);
21329    glContext->traceGLMessage(&glmsg);
21330}
21331
21332void GLTrace_glLightx(GLenum light, GLenum pname, GLfixed param) {
21333    GLMessage glmsg;
21334    GLTraceContext *glContext = getGLTraceContext();
21335
21336    glmsg.set_function(GLMessage::glLightx);
21337
21338    // copy argument light
21339    GLMessage_DataType *arg_light = glmsg.add_args();
21340    arg_light->set_isarray(false);
21341    arg_light->set_type(GLMessage::DataType::ENUM);
21342    arg_light->add_intvalue((int)light);
21343
21344    // copy argument pname
21345    GLMessage_DataType *arg_pname = glmsg.add_args();
21346    arg_pname->set_isarray(false);
21347    arg_pname->set_type(GLMessage::DataType::ENUM);
21348    arg_pname->add_intvalue((int)pname);
21349
21350    // copy argument param
21351    GLMessage_DataType *arg_param = glmsg.add_args();
21352    arg_param->set_isarray(false);
21353    arg_param->set_type(GLMessage::DataType::INT);
21354    arg_param->add_intvalue(param);
21355
21356    // call function
21357    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21358    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21359    glContext->hooks->gl.glLightx(light, pname, param);
21360    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21361    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21362
21363    void *pointerArgs[] = {
21364    };
21365
21366    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21367                              threadStartTime, threadEndTime,
21368                              &glmsg, pointerArgs);
21369    glContext->traceGLMessage(&glmsg);
21370}
21371
21372void GLTrace_glLightxv(GLenum light, GLenum pname, const GLfixed * params) {
21373    GLMessage glmsg;
21374    GLTraceContext *glContext = getGLTraceContext();
21375
21376    glmsg.set_function(GLMessage::glLightxv);
21377
21378    // copy argument light
21379    GLMessage_DataType *arg_light = glmsg.add_args();
21380    arg_light->set_isarray(false);
21381    arg_light->set_type(GLMessage::DataType::ENUM);
21382    arg_light->add_intvalue((int)light);
21383
21384    // copy argument pname
21385    GLMessage_DataType *arg_pname = glmsg.add_args();
21386    arg_pname->set_isarray(false);
21387    arg_pname->set_type(GLMessage::DataType::ENUM);
21388    arg_pname->add_intvalue((int)pname);
21389
21390    // copy argument params
21391    GLMessage_DataType *arg_params = glmsg.add_args();
21392    arg_params->set_isarray(false);
21393    arg_params->set_type(GLMessage::DataType::INT64);
21394    arg_params->add_int64value((uintptr_t)params);
21395
21396    // call function
21397    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21398    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21399    glContext->hooks->gl.glLightxv(light, pname, params);
21400    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21401    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21402
21403    void *pointerArgs[] = {
21404        (void *) params,
21405    };
21406
21407    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21408                              threadStartTime, threadEndTime,
21409                              &glmsg, pointerArgs);
21410    glContext->traceGLMessage(&glmsg);
21411}
21412
21413void GLTrace_glLineWidthx(GLfixed width) {
21414    GLMessage glmsg;
21415    GLTraceContext *glContext = getGLTraceContext();
21416
21417    glmsg.set_function(GLMessage::glLineWidthx);
21418
21419    // copy argument width
21420    GLMessage_DataType *arg_width = glmsg.add_args();
21421    arg_width->set_isarray(false);
21422    arg_width->set_type(GLMessage::DataType::INT);
21423    arg_width->add_intvalue(width);
21424
21425    // call function
21426    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21427    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21428    glContext->hooks->gl.glLineWidthx(width);
21429    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21430    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21431
21432    void *pointerArgs[] = {
21433    };
21434
21435    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21436                              threadStartTime, threadEndTime,
21437                              &glmsg, pointerArgs);
21438    glContext->traceGLMessage(&glmsg);
21439}
21440
21441void GLTrace_glLoadIdentity(void) {
21442    GLMessage glmsg;
21443    GLTraceContext *glContext = getGLTraceContext();
21444
21445    glmsg.set_function(GLMessage::glLoadIdentity);
21446
21447    // call function
21448    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21449    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21450    glContext->hooks->gl.glLoadIdentity();
21451    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21452    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21453
21454    void *pointerArgs[] = {
21455    };
21456
21457    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21458                              threadStartTime, threadEndTime,
21459                              &glmsg, pointerArgs);
21460    glContext->traceGLMessage(&glmsg);
21461}
21462
21463void GLTrace_glLoadMatrixx(const GLfixed * m) {
21464    GLMessage glmsg;
21465    GLTraceContext *glContext = getGLTraceContext();
21466
21467    glmsg.set_function(GLMessage::glLoadMatrixx);
21468
21469    // copy argument m
21470    GLMessage_DataType *arg_m = glmsg.add_args();
21471    arg_m->set_isarray(false);
21472    arg_m->set_type(GLMessage::DataType::INT64);
21473    arg_m->add_int64value((uintptr_t)m);
21474
21475    // call function
21476    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21477    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21478    glContext->hooks->gl.glLoadMatrixx(m);
21479    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21480    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21481
21482    void *pointerArgs[] = {
21483        (void *) m,
21484    };
21485
21486    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21487                              threadStartTime, threadEndTime,
21488                              &glmsg, pointerArgs);
21489    glContext->traceGLMessage(&glmsg);
21490}
21491
21492void GLTrace_glLogicOp(GLenum opcode) {
21493    GLMessage glmsg;
21494    GLTraceContext *glContext = getGLTraceContext();
21495
21496    glmsg.set_function(GLMessage::glLogicOp);
21497
21498    // copy argument opcode
21499    GLMessage_DataType *arg_opcode = glmsg.add_args();
21500    arg_opcode->set_isarray(false);
21501    arg_opcode->set_type(GLMessage::DataType::ENUM);
21502    arg_opcode->add_intvalue((int)opcode);
21503
21504    // call function
21505    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21506    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21507    glContext->hooks->gl.glLogicOp(opcode);
21508    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21509    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21510
21511    void *pointerArgs[] = {
21512    };
21513
21514    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21515                              threadStartTime, threadEndTime,
21516                              &glmsg, pointerArgs);
21517    glContext->traceGLMessage(&glmsg);
21518}
21519
21520void GLTrace_glMaterialx(GLenum face, GLenum pname, GLfixed param) {
21521    GLMessage glmsg;
21522    GLTraceContext *glContext = getGLTraceContext();
21523
21524    glmsg.set_function(GLMessage::glMaterialx);
21525
21526    // copy argument face
21527    GLMessage_DataType *arg_face = glmsg.add_args();
21528    arg_face->set_isarray(false);
21529    arg_face->set_type(GLMessage::DataType::ENUM);
21530    arg_face->add_intvalue((int)face);
21531
21532    // copy argument pname
21533    GLMessage_DataType *arg_pname = glmsg.add_args();
21534    arg_pname->set_isarray(false);
21535    arg_pname->set_type(GLMessage::DataType::ENUM);
21536    arg_pname->add_intvalue((int)pname);
21537
21538    // copy argument param
21539    GLMessage_DataType *arg_param = glmsg.add_args();
21540    arg_param->set_isarray(false);
21541    arg_param->set_type(GLMessage::DataType::INT);
21542    arg_param->add_intvalue(param);
21543
21544    // call function
21545    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21546    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21547    glContext->hooks->gl.glMaterialx(face, pname, param);
21548    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21549    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21550
21551    void *pointerArgs[] = {
21552    };
21553
21554    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21555                              threadStartTime, threadEndTime,
21556                              &glmsg, pointerArgs);
21557    glContext->traceGLMessage(&glmsg);
21558}
21559
21560void GLTrace_glMaterialxv(GLenum face, GLenum pname, const GLfixed * param) {
21561    GLMessage glmsg;
21562    GLTraceContext *glContext = getGLTraceContext();
21563
21564    glmsg.set_function(GLMessage::glMaterialxv);
21565
21566    // copy argument face
21567    GLMessage_DataType *arg_face = glmsg.add_args();
21568    arg_face->set_isarray(false);
21569    arg_face->set_type(GLMessage::DataType::ENUM);
21570    arg_face->add_intvalue((int)face);
21571
21572    // copy argument pname
21573    GLMessage_DataType *arg_pname = glmsg.add_args();
21574    arg_pname->set_isarray(false);
21575    arg_pname->set_type(GLMessage::DataType::ENUM);
21576    arg_pname->add_intvalue((int)pname);
21577
21578    // copy argument param
21579    GLMessage_DataType *arg_param = glmsg.add_args();
21580    arg_param->set_isarray(false);
21581    arg_param->set_type(GLMessage::DataType::INT64);
21582    arg_param->add_int64value((uintptr_t)param);
21583
21584    // call function
21585    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21586    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21587    glContext->hooks->gl.glMaterialxv(face, pname, param);
21588    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21589    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21590
21591    void *pointerArgs[] = {
21592        (void *) param,
21593    };
21594
21595    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21596                              threadStartTime, threadEndTime,
21597                              &glmsg, pointerArgs);
21598    glContext->traceGLMessage(&glmsg);
21599}
21600
21601void GLTrace_glMatrixMode(GLenum mode) {
21602    GLMessage glmsg;
21603    GLTraceContext *glContext = getGLTraceContext();
21604
21605    glmsg.set_function(GLMessage::glMatrixMode);
21606
21607    // copy argument mode
21608    GLMessage_DataType *arg_mode = glmsg.add_args();
21609    arg_mode->set_isarray(false);
21610    arg_mode->set_type(GLMessage::DataType::ENUM);
21611    arg_mode->add_intvalue((int)mode);
21612
21613    // call function
21614    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21615    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21616    glContext->hooks->gl.glMatrixMode(mode);
21617    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21618    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21619
21620    void *pointerArgs[] = {
21621    };
21622
21623    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21624                              threadStartTime, threadEndTime,
21625                              &glmsg, pointerArgs);
21626    glContext->traceGLMessage(&glmsg);
21627}
21628
21629void GLTrace_glMultMatrixx(const GLfixed * m) {
21630    GLMessage glmsg;
21631    GLTraceContext *glContext = getGLTraceContext();
21632
21633    glmsg.set_function(GLMessage::glMultMatrixx);
21634
21635    // copy argument m
21636    GLMessage_DataType *arg_m = glmsg.add_args();
21637    arg_m->set_isarray(false);
21638    arg_m->set_type(GLMessage::DataType::INT64);
21639    arg_m->add_int64value((uintptr_t)m);
21640
21641    // call function
21642    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21643    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21644    glContext->hooks->gl.glMultMatrixx(m);
21645    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21646    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21647
21648    void *pointerArgs[] = {
21649        (void *) m,
21650    };
21651
21652    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21653                              threadStartTime, threadEndTime,
21654                              &glmsg, pointerArgs);
21655    glContext->traceGLMessage(&glmsg);
21656}
21657
21658void GLTrace_glMultiTexCoord4x(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q) {
21659    GLMessage glmsg;
21660    GLTraceContext *glContext = getGLTraceContext();
21661
21662    glmsg.set_function(GLMessage::glMultiTexCoord4x);
21663
21664    // copy argument texture
21665    GLMessage_DataType *arg_texture = glmsg.add_args();
21666    arg_texture->set_isarray(false);
21667    arg_texture->set_type(GLMessage::DataType::ENUM);
21668    arg_texture->add_intvalue((int)texture);
21669
21670    // copy argument s
21671    GLMessage_DataType *arg_s = glmsg.add_args();
21672    arg_s->set_isarray(false);
21673    arg_s->set_type(GLMessage::DataType::INT);
21674    arg_s->add_intvalue(s);
21675
21676    // copy argument t
21677    GLMessage_DataType *arg_t = glmsg.add_args();
21678    arg_t->set_isarray(false);
21679    arg_t->set_type(GLMessage::DataType::INT);
21680    arg_t->add_intvalue(t);
21681
21682    // copy argument r
21683    GLMessage_DataType *arg_r = glmsg.add_args();
21684    arg_r->set_isarray(false);
21685    arg_r->set_type(GLMessage::DataType::INT);
21686    arg_r->add_intvalue(r);
21687
21688    // copy argument q
21689    GLMessage_DataType *arg_q = glmsg.add_args();
21690    arg_q->set_isarray(false);
21691    arg_q->set_type(GLMessage::DataType::INT);
21692    arg_q->add_intvalue(q);
21693
21694    // call function
21695    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21696    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21697    glContext->hooks->gl.glMultiTexCoord4x(texture, s, t, r, q);
21698    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21699    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21700
21701    void *pointerArgs[] = {
21702    };
21703
21704    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21705                              threadStartTime, threadEndTime,
21706                              &glmsg, pointerArgs);
21707    glContext->traceGLMessage(&glmsg);
21708}
21709
21710void GLTrace_glNormal3x(GLfixed nx, GLfixed ny, GLfixed nz) {
21711    GLMessage glmsg;
21712    GLTraceContext *glContext = getGLTraceContext();
21713
21714    glmsg.set_function(GLMessage::glNormal3x);
21715
21716    // copy argument nx
21717    GLMessage_DataType *arg_nx = glmsg.add_args();
21718    arg_nx->set_isarray(false);
21719    arg_nx->set_type(GLMessage::DataType::INT);
21720    arg_nx->add_intvalue(nx);
21721
21722    // copy argument ny
21723    GLMessage_DataType *arg_ny = glmsg.add_args();
21724    arg_ny->set_isarray(false);
21725    arg_ny->set_type(GLMessage::DataType::INT);
21726    arg_ny->add_intvalue(ny);
21727
21728    // copy argument nz
21729    GLMessage_DataType *arg_nz = glmsg.add_args();
21730    arg_nz->set_isarray(false);
21731    arg_nz->set_type(GLMessage::DataType::INT);
21732    arg_nz->add_intvalue(nz);
21733
21734    // call function
21735    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21736    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21737    glContext->hooks->gl.glNormal3x(nx, ny, nz);
21738    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21739    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21740
21741    void *pointerArgs[] = {
21742    };
21743
21744    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21745                              threadStartTime, threadEndTime,
21746                              &glmsg, pointerArgs);
21747    glContext->traceGLMessage(&glmsg);
21748}
21749
21750void GLTrace_glNormalPointer(GLenum type, GLsizei stride, const void * pointer) {
21751    GLMessage glmsg;
21752    GLTraceContext *glContext = getGLTraceContext();
21753
21754    glmsg.set_function(GLMessage::glNormalPointer);
21755
21756    // copy argument type
21757    GLMessage_DataType *arg_type = glmsg.add_args();
21758    arg_type->set_isarray(false);
21759    arg_type->set_type(GLMessage::DataType::ENUM);
21760    arg_type->add_intvalue((int)type);
21761
21762    // copy argument stride
21763    GLMessage_DataType *arg_stride = glmsg.add_args();
21764    arg_stride->set_isarray(false);
21765    arg_stride->set_type(GLMessage::DataType::INT);
21766    arg_stride->add_intvalue(stride);
21767
21768    // copy argument pointer
21769    GLMessage_DataType *arg_pointer = glmsg.add_args();
21770    arg_pointer->set_isarray(false);
21771    arg_pointer->set_type(GLMessage::DataType::INT64);
21772    arg_pointer->add_int64value((uintptr_t)pointer);
21773
21774    // call function
21775    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21776    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21777    glContext->hooks->gl.glNormalPointer(type, stride, pointer);
21778    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21779    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21780
21781    void *pointerArgs[] = {
21782        (void *) pointer,
21783    };
21784
21785    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21786                              threadStartTime, threadEndTime,
21787                              &glmsg, pointerArgs);
21788    glContext->traceGLMessage(&glmsg);
21789}
21790
21791void GLTrace_glOrthox(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f) {
21792    GLMessage glmsg;
21793    GLTraceContext *glContext = getGLTraceContext();
21794
21795    glmsg.set_function(GLMessage::glOrthox);
21796
21797    // copy argument l
21798    GLMessage_DataType *arg_l = glmsg.add_args();
21799    arg_l->set_isarray(false);
21800    arg_l->set_type(GLMessage::DataType::INT);
21801    arg_l->add_intvalue(l);
21802
21803    // copy argument r
21804    GLMessage_DataType *arg_r = glmsg.add_args();
21805    arg_r->set_isarray(false);
21806    arg_r->set_type(GLMessage::DataType::INT);
21807    arg_r->add_intvalue(r);
21808
21809    // copy argument b
21810    GLMessage_DataType *arg_b = glmsg.add_args();
21811    arg_b->set_isarray(false);
21812    arg_b->set_type(GLMessage::DataType::INT);
21813    arg_b->add_intvalue(b);
21814
21815    // copy argument t
21816    GLMessage_DataType *arg_t = glmsg.add_args();
21817    arg_t->set_isarray(false);
21818    arg_t->set_type(GLMessage::DataType::INT);
21819    arg_t->add_intvalue(t);
21820
21821    // copy argument n
21822    GLMessage_DataType *arg_n = glmsg.add_args();
21823    arg_n->set_isarray(false);
21824    arg_n->set_type(GLMessage::DataType::INT);
21825    arg_n->add_intvalue(n);
21826
21827    // copy argument f
21828    GLMessage_DataType *arg_f = glmsg.add_args();
21829    arg_f->set_isarray(false);
21830    arg_f->set_type(GLMessage::DataType::INT);
21831    arg_f->add_intvalue(f);
21832
21833    // call function
21834    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21835    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21836    glContext->hooks->gl.glOrthox(l, r, b, t, n, f);
21837    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21838    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21839
21840    void *pointerArgs[] = {
21841    };
21842
21843    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21844                              threadStartTime, threadEndTime,
21845                              &glmsg, pointerArgs);
21846    glContext->traceGLMessage(&glmsg);
21847}
21848
21849void GLTrace_glPointParameterx(GLenum pname, GLfixed param) {
21850    GLMessage glmsg;
21851    GLTraceContext *glContext = getGLTraceContext();
21852
21853    glmsg.set_function(GLMessage::glPointParameterx);
21854
21855    // copy argument pname
21856    GLMessage_DataType *arg_pname = glmsg.add_args();
21857    arg_pname->set_isarray(false);
21858    arg_pname->set_type(GLMessage::DataType::ENUM);
21859    arg_pname->add_intvalue((int)pname);
21860
21861    // copy argument param
21862    GLMessage_DataType *arg_param = glmsg.add_args();
21863    arg_param->set_isarray(false);
21864    arg_param->set_type(GLMessage::DataType::INT);
21865    arg_param->add_intvalue(param);
21866
21867    // call function
21868    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21869    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21870    glContext->hooks->gl.glPointParameterx(pname, param);
21871    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21872    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21873
21874    void *pointerArgs[] = {
21875    };
21876
21877    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21878                              threadStartTime, threadEndTime,
21879                              &glmsg, pointerArgs);
21880    glContext->traceGLMessage(&glmsg);
21881}
21882
21883void GLTrace_glPointParameterxv(GLenum pname, const GLfixed * params) {
21884    GLMessage glmsg;
21885    GLTraceContext *glContext = getGLTraceContext();
21886
21887    glmsg.set_function(GLMessage::glPointParameterxv);
21888
21889    // copy argument pname
21890    GLMessage_DataType *arg_pname = glmsg.add_args();
21891    arg_pname->set_isarray(false);
21892    arg_pname->set_type(GLMessage::DataType::ENUM);
21893    arg_pname->add_intvalue((int)pname);
21894
21895    // copy argument params
21896    GLMessage_DataType *arg_params = glmsg.add_args();
21897    arg_params->set_isarray(false);
21898    arg_params->set_type(GLMessage::DataType::INT64);
21899    arg_params->add_int64value((uintptr_t)params);
21900
21901    // call function
21902    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21903    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21904    glContext->hooks->gl.glPointParameterxv(pname, params);
21905    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21906    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21907
21908    void *pointerArgs[] = {
21909        (void *) params,
21910    };
21911
21912    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21913                              threadStartTime, threadEndTime,
21914                              &glmsg, pointerArgs);
21915    glContext->traceGLMessage(&glmsg);
21916}
21917
21918void GLTrace_glPointSizex(GLfixed size) {
21919    GLMessage glmsg;
21920    GLTraceContext *glContext = getGLTraceContext();
21921
21922    glmsg.set_function(GLMessage::glPointSizex);
21923
21924    // copy argument size
21925    GLMessage_DataType *arg_size = glmsg.add_args();
21926    arg_size->set_isarray(false);
21927    arg_size->set_type(GLMessage::DataType::INT);
21928    arg_size->add_intvalue(size);
21929
21930    // call function
21931    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21932    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21933    glContext->hooks->gl.glPointSizex(size);
21934    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21935    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21936
21937    void *pointerArgs[] = {
21938    };
21939
21940    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21941                              threadStartTime, threadEndTime,
21942                              &glmsg, pointerArgs);
21943    glContext->traceGLMessage(&glmsg);
21944}
21945
21946void GLTrace_glPolygonOffsetx(GLfixed factor, GLfixed units) {
21947    GLMessage glmsg;
21948    GLTraceContext *glContext = getGLTraceContext();
21949
21950    glmsg.set_function(GLMessage::glPolygonOffsetx);
21951
21952    // copy argument factor
21953    GLMessage_DataType *arg_factor = glmsg.add_args();
21954    arg_factor->set_isarray(false);
21955    arg_factor->set_type(GLMessage::DataType::INT);
21956    arg_factor->add_intvalue(factor);
21957
21958    // copy argument units
21959    GLMessage_DataType *arg_units = glmsg.add_args();
21960    arg_units->set_isarray(false);
21961    arg_units->set_type(GLMessage::DataType::INT);
21962    arg_units->add_intvalue(units);
21963
21964    // call function
21965    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21966    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21967    glContext->hooks->gl.glPolygonOffsetx(factor, units);
21968    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21969    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21970
21971    void *pointerArgs[] = {
21972    };
21973
21974    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21975                              threadStartTime, threadEndTime,
21976                              &glmsg, pointerArgs);
21977    glContext->traceGLMessage(&glmsg);
21978}
21979
21980void GLTrace_glPopMatrix(void) {
21981    GLMessage glmsg;
21982    GLTraceContext *glContext = getGLTraceContext();
21983
21984    glmsg.set_function(GLMessage::glPopMatrix);
21985
21986    // call function
21987    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21988    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21989    glContext->hooks->gl.glPopMatrix();
21990    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21991    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21992
21993    void *pointerArgs[] = {
21994    };
21995
21996    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21997                              threadStartTime, threadEndTime,
21998                              &glmsg, pointerArgs);
21999    glContext->traceGLMessage(&glmsg);
22000}
22001
22002void GLTrace_glPushMatrix(void) {
22003    GLMessage glmsg;
22004    GLTraceContext *glContext = getGLTraceContext();
22005
22006    glmsg.set_function(GLMessage::glPushMatrix);
22007
22008    // call function
22009    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22010    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22011    glContext->hooks->gl.glPushMatrix();
22012    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22013    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22014
22015    void *pointerArgs[] = {
22016    };
22017
22018    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22019                              threadStartTime, threadEndTime,
22020                              &glmsg, pointerArgs);
22021    glContext->traceGLMessage(&glmsg);
22022}
22023
22024void GLTrace_glRotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z) {
22025    GLMessage glmsg;
22026    GLTraceContext *glContext = getGLTraceContext();
22027
22028    glmsg.set_function(GLMessage::glRotatex);
22029
22030    // copy argument angle
22031    GLMessage_DataType *arg_angle = glmsg.add_args();
22032    arg_angle->set_isarray(false);
22033    arg_angle->set_type(GLMessage::DataType::INT);
22034    arg_angle->add_intvalue(angle);
22035
22036    // copy argument x
22037    GLMessage_DataType *arg_x = glmsg.add_args();
22038    arg_x->set_isarray(false);
22039    arg_x->set_type(GLMessage::DataType::INT);
22040    arg_x->add_intvalue(x);
22041
22042    // copy argument y
22043    GLMessage_DataType *arg_y = glmsg.add_args();
22044    arg_y->set_isarray(false);
22045    arg_y->set_type(GLMessage::DataType::INT);
22046    arg_y->add_intvalue(y);
22047
22048    // copy argument z
22049    GLMessage_DataType *arg_z = glmsg.add_args();
22050    arg_z->set_isarray(false);
22051    arg_z->set_type(GLMessage::DataType::INT);
22052    arg_z->add_intvalue(z);
22053
22054    // call function
22055    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22056    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22057    glContext->hooks->gl.glRotatex(angle, x, y, z);
22058    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22059    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22060
22061    void *pointerArgs[] = {
22062    };
22063
22064    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22065                              threadStartTime, threadEndTime,
22066                              &glmsg, pointerArgs);
22067    glContext->traceGLMessage(&glmsg);
22068}
22069
22070void GLTrace_glSampleCoveragex(GLclampx value, GLboolean invert) {
22071    GLMessage glmsg;
22072    GLTraceContext *glContext = getGLTraceContext();
22073
22074    glmsg.set_function(GLMessage::glSampleCoveragex);
22075
22076    // copy argument value
22077    GLMessage_DataType *arg_value = glmsg.add_args();
22078    arg_value->set_isarray(false);
22079    arg_value->set_type(GLMessage::DataType::INT);
22080    arg_value->add_intvalue(value);
22081
22082    // copy argument invert
22083    GLMessage_DataType *arg_invert = glmsg.add_args();
22084    arg_invert->set_isarray(false);
22085    arg_invert->set_type(GLMessage::DataType::BOOL);
22086    arg_invert->add_boolvalue(invert);
22087
22088    // call function
22089    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22090    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22091    glContext->hooks->gl.glSampleCoveragex(value, invert);
22092    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22093    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22094
22095    void *pointerArgs[] = {
22096    };
22097
22098    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22099                              threadStartTime, threadEndTime,
22100                              &glmsg, pointerArgs);
22101    glContext->traceGLMessage(&glmsg);
22102}
22103
22104void GLTrace_glScalex(GLfixed x, GLfixed y, GLfixed z) {
22105    GLMessage glmsg;
22106    GLTraceContext *glContext = getGLTraceContext();
22107
22108    glmsg.set_function(GLMessage::glScalex);
22109
22110    // copy argument x
22111    GLMessage_DataType *arg_x = glmsg.add_args();
22112    arg_x->set_isarray(false);
22113    arg_x->set_type(GLMessage::DataType::INT);
22114    arg_x->add_intvalue(x);
22115
22116    // copy argument y
22117    GLMessage_DataType *arg_y = glmsg.add_args();
22118    arg_y->set_isarray(false);
22119    arg_y->set_type(GLMessage::DataType::INT);
22120    arg_y->add_intvalue(y);
22121
22122    // copy argument z
22123    GLMessage_DataType *arg_z = glmsg.add_args();
22124    arg_z->set_isarray(false);
22125    arg_z->set_type(GLMessage::DataType::INT);
22126    arg_z->add_intvalue(z);
22127
22128    // call function
22129    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22130    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22131    glContext->hooks->gl.glScalex(x, y, z);
22132    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22133    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22134
22135    void *pointerArgs[] = {
22136    };
22137
22138    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22139                              threadStartTime, threadEndTime,
22140                              &glmsg, pointerArgs);
22141    glContext->traceGLMessage(&glmsg);
22142}
22143
22144void GLTrace_glShadeModel(GLenum mode) {
22145    GLMessage glmsg;
22146    GLTraceContext *glContext = getGLTraceContext();
22147
22148    glmsg.set_function(GLMessage::glShadeModel);
22149
22150    // copy argument mode
22151    GLMessage_DataType *arg_mode = glmsg.add_args();
22152    arg_mode->set_isarray(false);
22153    arg_mode->set_type(GLMessage::DataType::ENUM);
22154    arg_mode->add_intvalue((int)mode);
22155
22156    // call function
22157    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22158    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22159    glContext->hooks->gl.glShadeModel(mode);
22160    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22161    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22162
22163    void *pointerArgs[] = {
22164    };
22165
22166    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22167                              threadStartTime, threadEndTime,
22168                              &glmsg, pointerArgs);
22169    glContext->traceGLMessage(&glmsg);
22170}
22171
22172void GLTrace_glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const void * pointer) {
22173    GLMessage glmsg;
22174    GLTraceContext *glContext = getGLTraceContext();
22175
22176    glmsg.set_function(GLMessage::glTexCoordPointer);
22177
22178    // copy argument size
22179    GLMessage_DataType *arg_size = glmsg.add_args();
22180    arg_size->set_isarray(false);
22181    arg_size->set_type(GLMessage::DataType::INT);
22182    arg_size->add_intvalue(size);
22183
22184    // copy argument type
22185    GLMessage_DataType *arg_type = glmsg.add_args();
22186    arg_type->set_isarray(false);
22187    arg_type->set_type(GLMessage::DataType::ENUM);
22188    arg_type->add_intvalue((int)type);
22189
22190    // copy argument stride
22191    GLMessage_DataType *arg_stride = glmsg.add_args();
22192    arg_stride->set_isarray(false);
22193    arg_stride->set_type(GLMessage::DataType::INT);
22194    arg_stride->add_intvalue(stride);
22195
22196    // copy argument pointer
22197    GLMessage_DataType *arg_pointer = glmsg.add_args();
22198    arg_pointer->set_isarray(false);
22199    arg_pointer->set_type(GLMessage::DataType::INT64);
22200    arg_pointer->add_int64value((uintptr_t)pointer);
22201
22202    // call function
22203    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22204    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22205    glContext->hooks->gl.glTexCoordPointer(size, type, stride, pointer);
22206    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22207    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22208
22209    void *pointerArgs[] = {
22210        (void *) pointer,
22211    };
22212
22213    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22214                              threadStartTime, threadEndTime,
22215                              &glmsg, pointerArgs);
22216    glContext->traceGLMessage(&glmsg);
22217}
22218
22219void GLTrace_glTexEnvi(GLenum target, GLenum pname, GLint param) {
22220    GLMessage glmsg;
22221    GLTraceContext *glContext = getGLTraceContext();
22222
22223    glmsg.set_function(GLMessage::glTexEnvi);
22224
22225    // copy argument target
22226    GLMessage_DataType *arg_target = glmsg.add_args();
22227    arg_target->set_isarray(false);
22228    arg_target->set_type(GLMessage::DataType::ENUM);
22229    arg_target->add_intvalue((int)target);
22230
22231    // copy argument pname
22232    GLMessage_DataType *arg_pname = glmsg.add_args();
22233    arg_pname->set_isarray(false);
22234    arg_pname->set_type(GLMessage::DataType::ENUM);
22235    arg_pname->add_intvalue((int)pname);
22236
22237    // copy argument param
22238    GLMessage_DataType *arg_param = glmsg.add_args();
22239    arg_param->set_isarray(false);
22240    arg_param->set_type(GLMessage::DataType::INT);
22241    arg_param->add_intvalue(param);
22242
22243    // call function
22244    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22245    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22246    glContext->hooks->gl.glTexEnvi(target, pname, param);
22247    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22248    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22249
22250    void *pointerArgs[] = {
22251    };
22252
22253    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22254                              threadStartTime, threadEndTime,
22255                              &glmsg, pointerArgs);
22256    glContext->traceGLMessage(&glmsg);
22257}
22258
22259void GLTrace_glTexEnvx(GLenum target, GLenum pname, GLfixed param) {
22260    GLMessage glmsg;
22261    GLTraceContext *glContext = getGLTraceContext();
22262
22263    glmsg.set_function(GLMessage::glTexEnvx);
22264
22265    // copy argument target
22266    GLMessage_DataType *arg_target = glmsg.add_args();
22267    arg_target->set_isarray(false);
22268    arg_target->set_type(GLMessage::DataType::ENUM);
22269    arg_target->add_intvalue((int)target);
22270
22271    // copy argument pname
22272    GLMessage_DataType *arg_pname = glmsg.add_args();
22273    arg_pname->set_isarray(false);
22274    arg_pname->set_type(GLMessage::DataType::ENUM);
22275    arg_pname->add_intvalue((int)pname);
22276
22277    // copy argument param
22278    GLMessage_DataType *arg_param = glmsg.add_args();
22279    arg_param->set_isarray(false);
22280    arg_param->set_type(GLMessage::DataType::INT);
22281    arg_param->add_intvalue(param);
22282
22283    // call function
22284    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22285    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22286    glContext->hooks->gl.glTexEnvx(target, pname, param);
22287    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22288    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22289
22290    void *pointerArgs[] = {
22291    };
22292
22293    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22294                              threadStartTime, threadEndTime,
22295                              &glmsg, pointerArgs);
22296    glContext->traceGLMessage(&glmsg);
22297}
22298
22299void GLTrace_glTexEnviv(GLenum target, GLenum pname, const GLint * params) {
22300    GLMessage glmsg;
22301    GLTraceContext *glContext = getGLTraceContext();
22302
22303    glmsg.set_function(GLMessage::glTexEnviv);
22304
22305    // copy argument target
22306    GLMessage_DataType *arg_target = glmsg.add_args();
22307    arg_target->set_isarray(false);
22308    arg_target->set_type(GLMessage::DataType::ENUM);
22309    arg_target->add_intvalue((int)target);
22310
22311    // copy argument pname
22312    GLMessage_DataType *arg_pname = glmsg.add_args();
22313    arg_pname->set_isarray(false);
22314    arg_pname->set_type(GLMessage::DataType::ENUM);
22315    arg_pname->add_intvalue((int)pname);
22316
22317    // copy argument params
22318    GLMessage_DataType *arg_params = glmsg.add_args();
22319    arg_params->set_isarray(false);
22320    arg_params->set_type(GLMessage::DataType::INT64);
22321    arg_params->add_int64value((uintptr_t)params);
22322
22323    // call function
22324    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22325    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22326    glContext->hooks->gl.glTexEnviv(target, pname, params);
22327    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22328    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22329
22330    void *pointerArgs[] = {
22331        (void *) params,
22332    };
22333
22334    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22335                              threadStartTime, threadEndTime,
22336                              &glmsg, pointerArgs);
22337    glContext->traceGLMessage(&glmsg);
22338}
22339
22340void GLTrace_glTexEnvxv(GLenum target, GLenum pname, const GLfixed * params) {
22341    GLMessage glmsg;
22342    GLTraceContext *glContext = getGLTraceContext();
22343
22344    glmsg.set_function(GLMessage::glTexEnvxv);
22345
22346    // copy argument target
22347    GLMessage_DataType *arg_target = glmsg.add_args();
22348    arg_target->set_isarray(false);
22349    arg_target->set_type(GLMessage::DataType::ENUM);
22350    arg_target->add_intvalue((int)target);
22351
22352    // copy argument pname
22353    GLMessage_DataType *arg_pname = glmsg.add_args();
22354    arg_pname->set_isarray(false);
22355    arg_pname->set_type(GLMessage::DataType::ENUM);
22356    arg_pname->add_intvalue((int)pname);
22357
22358    // copy argument params
22359    GLMessage_DataType *arg_params = glmsg.add_args();
22360    arg_params->set_isarray(false);
22361    arg_params->set_type(GLMessage::DataType::INT64);
22362    arg_params->add_int64value((uintptr_t)params);
22363
22364    // call function
22365    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22366    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22367    glContext->hooks->gl.glTexEnvxv(target, pname, params);
22368    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22369    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22370
22371    void *pointerArgs[] = {
22372        (void *) params,
22373    };
22374
22375    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22376                              threadStartTime, threadEndTime,
22377                              &glmsg, pointerArgs);
22378    glContext->traceGLMessage(&glmsg);
22379}
22380
22381void GLTrace_glTexParameterx(GLenum target, GLenum pname, GLfixed param) {
22382    GLMessage glmsg;
22383    GLTraceContext *glContext = getGLTraceContext();
22384
22385    glmsg.set_function(GLMessage::glTexParameterx);
22386
22387    // copy argument target
22388    GLMessage_DataType *arg_target = glmsg.add_args();
22389    arg_target->set_isarray(false);
22390    arg_target->set_type(GLMessage::DataType::ENUM);
22391    arg_target->add_intvalue((int)target);
22392
22393    // copy argument pname
22394    GLMessage_DataType *arg_pname = glmsg.add_args();
22395    arg_pname->set_isarray(false);
22396    arg_pname->set_type(GLMessage::DataType::ENUM);
22397    arg_pname->add_intvalue((int)pname);
22398
22399    // copy argument param
22400    GLMessage_DataType *arg_param = glmsg.add_args();
22401    arg_param->set_isarray(false);
22402    arg_param->set_type(GLMessage::DataType::INT);
22403    arg_param->add_intvalue(param);
22404
22405    // call function
22406    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22407    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22408    glContext->hooks->gl.glTexParameterx(target, pname, param);
22409    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22410    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22411
22412    void *pointerArgs[] = {
22413    };
22414
22415    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22416                              threadStartTime, threadEndTime,
22417                              &glmsg, pointerArgs);
22418    glContext->traceGLMessage(&glmsg);
22419}
22420
22421void GLTrace_glTexParameterxv(GLenum target, GLenum pname, const GLfixed * params) {
22422    GLMessage glmsg;
22423    GLTraceContext *glContext = getGLTraceContext();
22424
22425    glmsg.set_function(GLMessage::glTexParameterxv);
22426
22427    // copy argument target
22428    GLMessage_DataType *arg_target = glmsg.add_args();
22429    arg_target->set_isarray(false);
22430    arg_target->set_type(GLMessage::DataType::ENUM);
22431    arg_target->add_intvalue((int)target);
22432
22433    // copy argument pname
22434    GLMessage_DataType *arg_pname = glmsg.add_args();
22435    arg_pname->set_isarray(false);
22436    arg_pname->set_type(GLMessage::DataType::ENUM);
22437    arg_pname->add_intvalue((int)pname);
22438
22439    // copy argument params
22440    GLMessage_DataType *arg_params = glmsg.add_args();
22441    arg_params->set_isarray(false);
22442    arg_params->set_type(GLMessage::DataType::INT64);
22443    arg_params->add_int64value((uintptr_t)params);
22444
22445    // call function
22446    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22447    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22448    glContext->hooks->gl.glTexParameterxv(target, pname, params);
22449    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22450    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22451
22452    void *pointerArgs[] = {
22453        (void *) params,
22454    };
22455
22456    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22457                              threadStartTime, threadEndTime,
22458                              &glmsg, pointerArgs);
22459    glContext->traceGLMessage(&glmsg);
22460}
22461
22462void GLTrace_glTranslatex(GLfixed x, GLfixed y, GLfixed z) {
22463    GLMessage glmsg;
22464    GLTraceContext *glContext = getGLTraceContext();
22465
22466    glmsg.set_function(GLMessage::glTranslatex);
22467
22468    // copy argument x
22469    GLMessage_DataType *arg_x = glmsg.add_args();
22470    arg_x->set_isarray(false);
22471    arg_x->set_type(GLMessage::DataType::INT);
22472    arg_x->add_intvalue(x);
22473
22474    // copy argument y
22475    GLMessage_DataType *arg_y = glmsg.add_args();
22476    arg_y->set_isarray(false);
22477    arg_y->set_type(GLMessage::DataType::INT);
22478    arg_y->add_intvalue(y);
22479
22480    // copy argument z
22481    GLMessage_DataType *arg_z = glmsg.add_args();
22482    arg_z->set_isarray(false);
22483    arg_z->set_type(GLMessage::DataType::INT);
22484    arg_z->add_intvalue(z);
22485
22486    // call function
22487    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22488    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22489    glContext->hooks->gl.glTranslatex(x, y, z);
22490    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22491    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22492
22493    void *pointerArgs[] = {
22494    };
22495
22496    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22497                              threadStartTime, threadEndTime,
22498                              &glmsg, pointerArgs);
22499    glContext->traceGLMessage(&glmsg);
22500}
22501
22502void GLTrace_glVertexPointer(GLint size, GLenum type, GLsizei stride, const void * pointer) {
22503    GLMessage glmsg;
22504    GLTraceContext *glContext = getGLTraceContext();
22505
22506    glmsg.set_function(GLMessage::glVertexPointer);
22507
22508    // copy argument size
22509    GLMessage_DataType *arg_size = glmsg.add_args();
22510    arg_size->set_isarray(false);
22511    arg_size->set_type(GLMessage::DataType::INT);
22512    arg_size->add_intvalue(size);
22513
22514    // copy argument type
22515    GLMessage_DataType *arg_type = glmsg.add_args();
22516    arg_type->set_isarray(false);
22517    arg_type->set_type(GLMessage::DataType::ENUM);
22518    arg_type->add_intvalue((int)type);
22519
22520    // copy argument stride
22521    GLMessage_DataType *arg_stride = glmsg.add_args();
22522    arg_stride->set_isarray(false);
22523    arg_stride->set_type(GLMessage::DataType::INT);
22524    arg_stride->add_intvalue(stride);
22525
22526    // copy argument pointer
22527    GLMessage_DataType *arg_pointer = glmsg.add_args();
22528    arg_pointer->set_isarray(false);
22529    arg_pointer->set_type(GLMessage::DataType::INT64);
22530    arg_pointer->add_int64value((uintptr_t)pointer);
22531
22532    // call function
22533    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22534    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22535    glContext->hooks->gl.glVertexPointer(size, type, stride, pointer);
22536    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22537    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22538
22539    void *pointerArgs[] = {
22540        (void *) pointer,
22541    };
22542
22543    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22544                              threadStartTime, threadEndTime,
22545                              &glmsg, pointerArgs);
22546    glContext->traceGLMessage(&glmsg);
22547}
22548
22549
22550// Definitions for GL1Ext APIs
22551
22552void GLTrace_glBlendEquationSeparateOES(GLenum modeRGB, GLenum modeAlpha) {
22553    GLMessage glmsg;
22554    GLTraceContext *glContext = getGLTraceContext();
22555
22556    glmsg.set_function(GLMessage::glBlendEquationSeparateOES);
22557
22558    // copy argument modeRGB
22559    GLMessage_DataType *arg_modeRGB = glmsg.add_args();
22560    arg_modeRGB->set_isarray(false);
22561    arg_modeRGB->set_type(GLMessage::DataType::ENUM);
22562    arg_modeRGB->add_intvalue((int)modeRGB);
22563
22564    // copy argument modeAlpha
22565    GLMessage_DataType *arg_modeAlpha = glmsg.add_args();
22566    arg_modeAlpha->set_isarray(false);
22567    arg_modeAlpha->set_type(GLMessage::DataType::ENUM);
22568    arg_modeAlpha->add_intvalue((int)modeAlpha);
22569
22570    // call function
22571    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22572    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22573    glContext->hooks->gl.glBlendEquationSeparateOES(modeRGB, modeAlpha);
22574    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22575    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22576
22577    void *pointerArgs[] = {
22578    };
22579
22580    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22581                              threadStartTime, threadEndTime,
22582                              &glmsg, pointerArgs);
22583    glContext->traceGLMessage(&glmsg);
22584}
22585
22586void GLTrace_glBlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) {
22587    GLMessage glmsg;
22588    GLTraceContext *glContext = getGLTraceContext();
22589
22590    glmsg.set_function(GLMessage::glBlendFuncSeparateOES);
22591
22592    // copy argument srcRGB
22593    GLMessage_DataType *arg_srcRGB = glmsg.add_args();
22594    arg_srcRGB->set_isarray(false);
22595    arg_srcRGB->set_type(GLMessage::DataType::ENUM);
22596    arg_srcRGB->add_intvalue((int)srcRGB);
22597
22598    // copy argument dstRGB
22599    GLMessage_DataType *arg_dstRGB = glmsg.add_args();
22600    arg_dstRGB->set_isarray(false);
22601    arg_dstRGB->set_type(GLMessage::DataType::ENUM);
22602    arg_dstRGB->add_intvalue((int)dstRGB);
22603
22604    // copy argument srcAlpha
22605    GLMessage_DataType *arg_srcAlpha = glmsg.add_args();
22606    arg_srcAlpha->set_isarray(false);
22607    arg_srcAlpha->set_type(GLMessage::DataType::ENUM);
22608    arg_srcAlpha->add_intvalue((int)srcAlpha);
22609
22610    // copy argument dstAlpha
22611    GLMessage_DataType *arg_dstAlpha = glmsg.add_args();
22612    arg_dstAlpha->set_isarray(false);
22613    arg_dstAlpha->set_type(GLMessage::DataType::ENUM);
22614    arg_dstAlpha->add_intvalue((int)dstAlpha);
22615
22616    // call function
22617    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22618    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22619    glContext->hooks->gl.glBlendFuncSeparateOES(srcRGB, dstRGB, srcAlpha, dstAlpha);
22620    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22621    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22622
22623    void *pointerArgs[] = {
22624    };
22625
22626    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22627                              threadStartTime, threadEndTime,
22628                              &glmsg, pointerArgs);
22629    glContext->traceGLMessage(&glmsg);
22630}
22631
22632void GLTrace_glBlendEquationOES(GLenum mode) {
22633    GLMessage glmsg;
22634    GLTraceContext *glContext = getGLTraceContext();
22635
22636    glmsg.set_function(GLMessage::glBlendEquationOES);
22637
22638    // copy argument mode
22639    GLMessage_DataType *arg_mode = glmsg.add_args();
22640    arg_mode->set_isarray(false);
22641    arg_mode->set_type(GLMessage::DataType::ENUM);
22642    arg_mode->add_intvalue((int)mode);
22643
22644    // call function
22645    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22646    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22647    glContext->hooks->gl.glBlendEquationOES(mode);
22648    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22649    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22650
22651    void *pointerArgs[] = {
22652    };
22653
22654    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22655                              threadStartTime, threadEndTime,
22656                              &glmsg, pointerArgs);
22657    glContext->traceGLMessage(&glmsg);
22658}
22659
22660void GLTrace_glMultiTexCoord1bOES(GLenum texture, GLbyte s) {
22661    GLMessage glmsg;
22662    GLTraceContext *glContext = getGLTraceContext();
22663
22664    glmsg.set_function(GLMessage::glMultiTexCoord1bOES);
22665
22666    // copy argument texture
22667    GLMessage_DataType *arg_texture = glmsg.add_args();
22668    arg_texture->set_isarray(false);
22669    arg_texture->set_type(GLMessage::DataType::ENUM);
22670    arg_texture->add_intvalue((int)texture);
22671
22672    // copy argument s
22673    GLMessage_DataType *arg_s = glmsg.add_args();
22674    arg_s->set_isarray(false);
22675    arg_s->set_type(GLMessage::DataType::BYTE);
22676    arg_s->add_intvalue((int)s);
22677
22678    // call function
22679    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22680    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22681    glContext->hooks->gl.glMultiTexCoord1bOES(texture, s);
22682    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22683    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22684
22685    void *pointerArgs[] = {
22686    };
22687
22688    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22689                              threadStartTime, threadEndTime,
22690                              &glmsg, pointerArgs);
22691    glContext->traceGLMessage(&glmsg);
22692}
22693
22694void GLTrace_glMultiTexCoord1bvOES(GLenum texture, const GLbyte * coords) {
22695    GLMessage glmsg;
22696    GLTraceContext *glContext = getGLTraceContext();
22697
22698    glmsg.set_function(GLMessage::glMultiTexCoord1bvOES);
22699
22700    // copy argument texture
22701    GLMessage_DataType *arg_texture = glmsg.add_args();
22702    arg_texture->set_isarray(false);
22703    arg_texture->set_type(GLMessage::DataType::ENUM);
22704    arg_texture->add_intvalue((int)texture);
22705
22706    // copy argument coords
22707    GLMessage_DataType *arg_coords = glmsg.add_args();
22708    arg_coords->set_isarray(false);
22709    arg_coords->set_type(GLMessage::DataType::INT64);
22710    arg_coords->add_int64value((uintptr_t)coords);
22711
22712    // call function
22713    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22714    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22715    glContext->hooks->gl.glMultiTexCoord1bvOES(texture, coords);
22716    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22717    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22718
22719    void *pointerArgs[] = {
22720        (void *) coords,
22721    };
22722
22723    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22724                              threadStartTime, threadEndTime,
22725                              &glmsg, pointerArgs);
22726    glContext->traceGLMessage(&glmsg);
22727}
22728
22729void GLTrace_glMultiTexCoord2bOES(GLenum texture, GLbyte s, GLbyte t) {
22730    GLMessage glmsg;
22731    GLTraceContext *glContext = getGLTraceContext();
22732
22733    glmsg.set_function(GLMessage::glMultiTexCoord2bOES);
22734
22735    // copy argument texture
22736    GLMessage_DataType *arg_texture = glmsg.add_args();
22737    arg_texture->set_isarray(false);
22738    arg_texture->set_type(GLMessage::DataType::ENUM);
22739    arg_texture->add_intvalue((int)texture);
22740
22741    // copy argument s
22742    GLMessage_DataType *arg_s = glmsg.add_args();
22743    arg_s->set_isarray(false);
22744    arg_s->set_type(GLMessage::DataType::BYTE);
22745    arg_s->add_intvalue((int)s);
22746
22747    // copy argument t
22748    GLMessage_DataType *arg_t = glmsg.add_args();
22749    arg_t->set_isarray(false);
22750    arg_t->set_type(GLMessage::DataType::BYTE);
22751    arg_t->add_intvalue((int)t);
22752
22753    // call function
22754    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22755    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22756    glContext->hooks->gl.glMultiTexCoord2bOES(texture, s, t);
22757    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22758    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22759
22760    void *pointerArgs[] = {
22761    };
22762
22763    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22764                              threadStartTime, threadEndTime,
22765                              &glmsg, pointerArgs);
22766    glContext->traceGLMessage(&glmsg);
22767}
22768
22769void GLTrace_glMultiTexCoord2bvOES(GLenum texture, const GLbyte * coords) {
22770    GLMessage glmsg;
22771    GLTraceContext *glContext = getGLTraceContext();
22772
22773    glmsg.set_function(GLMessage::glMultiTexCoord2bvOES);
22774
22775    // copy argument texture
22776    GLMessage_DataType *arg_texture = glmsg.add_args();
22777    arg_texture->set_isarray(false);
22778    arg_texture->set_type(GLMessage::DataType::ENUM);
22779    arg_texture->add_intvalue((int)texture);
22780
22781    // copy argument coords
22782    GLMessage_DataType *arg_coords = glmsg.add_args();
22783    arg_coords->set_isarray(false);
22784    arg_coords->set_type(GLMessage::DataType::INT64);
22785    arg_coords->add_int64value((uintptr_t)coords);
22786
22787    // call function
22788    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22789    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22790    glContext->hooks->gl.glMultiTexCoord2bvOES(texture, coords);
22791    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22792    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22793
22794    void *pointerArgs[] = {
22795        (void *) coords,
22796    };
22797
22798    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22799                              threadStartTime, threadEndTime,
22800                              &glmsg, pointerArgs);
22801    glContext->traceGLMessage(&glmsg);
22802}
22803
22804void GLTrace_glMultiTexCoord3bOES(GLenum texture, GLbyte s, GLbyte t, GLbyte r) {
22805    GLMessage glmsg;
22806    GLTraceContext *glContext = getGLTraceContext();
22807
22808    glmsg.set_function(GLMessage::glMultiTexCoord3bOES);
22809
22810    // copy argument texture
22811    GLMessage_DataType *arg_texture = glmsg.add_args();
22812    arg_texture->set_isarray(false);
22813    arg_texture->set_type(GLMessage::DataType::ENUM);
22814    arg_texture->add_intvalue((int)texture);
22815
22816    // copy argument s
22817    GLMessage_DataType *arg_s = glmsg.add_args();
22818    arg_s->set_isarray(false);
22819    arg_s->set_type(GLMessage::DataType::BYTE);
22820    arg_s->add_intvalue((int)s);
22821
22822    // copy argument t
22823    GLMessage_DataType *arg_t = glmsg.add_args();
22824    arg_t->set_isarray(false);
22825    arg_t->set_type(GLMessage::DataType::BYTE);
22826    arg_t->add_intvalue((int)t);
22827
22828    // copy argument r
22829    GLMessage_DataType *arg_r = glmsg.add_args();
22830    arg_r->set_isarray(false);
22831    arg_r->set_type(GLMessage::DataType::BYTE);
22832    arg_r->add_intvalue((int)r);
22833
22834    // call function
22835    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22836    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22837    glContext->hooks->gl.glMultiTexCoord3bOES(texture, s, t, r);
22838    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22839    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22840
22841    void *pointerArgs[] = {
22842    };
22843
22844    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22845                              threadStartTime, threadEndTime,
22846                              &glmsg, pointerArgs);
22847    glContext->traceGLMessage(&glmsg);
22848}
22849
22850void GLTrace_glMultiTexCoord3bvOES(GLenum texture, const GLbyte * coords) {
22851    GLMessage glmsg;
22852    GLTraceContext *glContext = getGLTraceContext();
22853
22854    glmsg.set_function(GLMessage::glMultiTexCoord3bvOES);
22855
22856    // copy argument texture
22857    GLMessage_DataType *arg_texture = glmsg.add_args();
22858    arg_texture->set_isarray(false);
22859    arg_texture->set_type(GLMessage::DataType::ENUM);
22860    arg_texture->add_intvalue((int)texture);
22861
22862    // copy argument coords
22863    GLMessage_DataType *arg_coords = glmsg.add_args();
22864    arg_coords->set_isarray(false);
22865    arg_coords->set_type(GLMessage::DataType::INT64);
22866    arg_coords->add_int64value((uintptr_t)coords);
22867
22868    // call function
22869    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22870    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22871    glContext->hooks->gl.glMultiTexCoord3bvOES(texture, coords);
22872    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22873    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22874
22875    void *pointerArgs[] = {
22876        (void *) coords,
22877    };
22878
22879    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22880                              threadStartTime, threadEndTime,
22881                              &glmsg, pointerArgs);
22882    glContext->traceGLMessage(&glmsg);
22883}
22884
22885void GLTrace_glMultiTexCoord4bOES(GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q) {
22886    GLMessage glmsg;
22887    GLTraceContext *glContext = getGLTraceContext();
22888
22889    glmsg.set_function(GLMessage::glMultiTexCoord4bOES);
22890
22891    // copy argument texture
22892    GLMessage_DataType *arg_texture = glmsg.add_args();
22893    arg_texture->set_isarray(false);
22894    arg_texture->set_type(GLMessage::DataType::ENUM);
22895    arg_texture->add_intvalue((int)texture);
22896
22897    // copy argument s
22898    GLMessage_DataType *arg_s = glmsg.add_args();
22899    arg_s->set_isarray(false);
22900    arg_s->set_type(GLMessage::DataType::BYTE);
22901    arg_s->add_intvalue((int)s);
22902
22903    // copy argument t
22904    GLMessage_DataType *arg_t = glmsg.add_args();
22905    arg_t->set_isarray(false);
22906    arg_t->set_type(GLMessage::DataType::BYTE);
22907    arg_t->add_intvalue((int)t);
22908
22909    // copy argument r
22910    GLMessage_DataType *arg_r = glmsg.add_args();
22911    arg_r->set_isarray(false);
22912    arg_r->set_type(GLMessage::DataType::BYTE);
22913    arg_r->add_intvalue((int)r);
22914
22915    // copy argument q
22916    GLMessage_DataType *arg_q = glmsg.add_args();
22917    arg_q->set_isarray(false);
22918    arg_q->set_type(GLMessage::DataType::BYTE);
22919    arg_q->add_intvalue((int)q);
22920
22921    // call function
22922    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22923    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22924    glContext->hooks->gl.glMultiTexCoord4bOES(texture, s, t, r, q);
22925    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22926    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22927
22928    void *pointerArgs[] = {
22929    };
22930
22931    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22932                              threadStartTime, threadEndTime,
22933                              &glmsg, pointerArgs);
22934    glContext->traceGLMessage(&glmsg);
22935}
22936
22937void GLTrace_glMultiTexCoord4bvOES(GLenum texture, const GLbyte * coords) {
22938    GLMessage glmsg;
22939    GLTraceContext *glContext = getGLTraceContext();
22940
22941    glmsg.set_function(GLMessage::glMultiTexCoord4bvOES);
22942
22943    // copy argument texture
22944    GLMessage_DataType *arg_texture = glmsg.add_args();
22945    arg_texture->set_isarray(false);
22946    arg_texture->set_type(GLMessage::DataType::ENUM);
22947    arg_texture->add_intvalue((int)texture);
22948
22949    // copy argument coords
22950    GLMessage_DataType *arg_coords = glmsg.add_args();
22951    arg_coords->set_isarray(false);
22952    arg_coords->set_type(GLMessage::DataType::INT64);
22953    arg_coords->add_int64value((uintptr_t)coords);
22954
22955    // call function
22956    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22957    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22958    glContext->hooks->gl.glMultiTexCoord4bvOES(texture, coords);
22959    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22960    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22961
22962    void *pointerArgs[] = {
22963        (void *) coords,
22964    };
22965
22966    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22967                              threadStartTime, threadEndTime,
22968                              &glmsg, pointerArgs);
22969    glContext->traceGLMessage(&glmsg);
22970}
22971
22972void GLTrace_glTexCoord1bOES(GLbyte s) {
22973    GLMessage glmsg;
22974    GLTraceContext *glContext = getGLTraceContext();
22975
22976    glmsg.set_function(GLMessage::glTexCoord1bOES);
22977
22978    // copy argument s
22979    GLMessage_DataType *arg_s = glmsg.add_args();
22980    arg_s->set_isarray(false);
22981    arg_s->set_type(GLMessage::DataType::BYTE);
22982    arg_s->add_intvalue((int)s);
22983
22984    // call function
22985    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22986    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22987    glContext->hooks->gl.glTexCoord1bOES(s);
22988    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22989    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22990
22991    void *pointerArgs[] = {
22992    };
22993
22994    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22995                              threadStartTime, threadEndTime,
22996                              &glmsg, pointerArgs);
22997    glContext->traceGLMessage(&glmsg);
22998}
22999
23000void GLTrace_glTexCoord1bvOES(const GLbyte * coords) {
23001    GLMessage glmsg;
23002    GLTraceContext *glContext = getGLTraceContext();
23003
23004    glmsg.set_function(GLMessage::glTexCoord1bvOES);
23005
23006    // copy argument coords
23007    GLMessage_DataType *arg_coords = glmsg.add_args();
23008    arg_coords->set_isarray(false);
23009    arg_coords->set_type(GLMessage::DataType::INT64);
23010    arg_coords->add_int64value((uintptr_t)coords);
23011
23012    // call function
23013    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23014    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23015    glContext->hooks->gl.glTexCoord1bvOES(coords);
23016    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23017    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23018
23019    void *pointerArgs[] = {
23020        (void *) coords,
23021    };
23022
23023    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23024                              threadStartTime, threadEndTime,
23025                              &glmsg, pointerArgs);
23026    glContext->traceGLMessage(&glmsg);
23027}
23028
23029void GLTrace_glTexCoord2bOES(GLbyte s, GLbyte t) {
23030    GLMessage glmsg;
23031    GLTraceContext *glContext = getGLTraceContext();
23032
23033    glmsg.set_function(GLMessage::glTexCoord2bOES);
23034
23035    // copy argument s
23036    GLMessage_DataType *arg_s = glmsg.add_args();
23037    arg_s->set_isarray(false);
23038    arg_s->set_type(GLMessage::DataType::BYTE);
23039    arg_s->add_intvalue((int)s);
23040
23041    // copy argument t
23042    GLMessage_DataType *arg_t = glmsg.add_args();
23043    arg_t->set_isarray(false);
23044    arg_t->set_type(GLMessage::DataType::BYTE);
23045    arg_t->add_intvalue((int)t);
23046
23047    // call function
23048    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23049    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23050    glContext->hooks->gl.glTexCoord2bOES(s, t);
23051    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23052    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23053
23054    void *pointerArgs[] = {
23055    };
23056
23057    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23058                              threadStartTime, threadEndTime,
23059                              &glmsg, pointerArgs);
23060    glContext->traceGLMessage(&glmsg);
23061}
23062
23063void GLTrace_glTexCoord2bvOES(const GLbyte * coords) {
23064    GLMessage glmsg;
23065    GLTraceContext *glContext = getGLTraceContext();
23066
23067    glmsg.set_function(GLMessage::glTexCoord2bvOES);
23068
23069    // copy argument coords
23070    GLMessage_DataType *arg_coords = glmsg.add_args();
23071    arg_coords->set_isarray(false);
23072    arg_coords->set_type(GLMessage::DataType::INT64);
23073    arg_coords->add_int64value((uintptr_t)coords);
23074
23075    // call function
23076    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23077    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23078    glContext->hooks->gl.glTexCoord2bvOES(coords);
23079    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23080    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23081
23082    void *pointerArgs[] = {
23083        (void *) coords,
23084    };
23085
23086    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23087                              threadStartTime, threadEndTime,
23088                              &glmsg, pointerArgs);
23089    glContext->traceGLMessage(&glmsg);
23090}
23091
23092void GLTrace_glTexCoord3bOES(GLbyte s, GLbyte t, GLbyte r) {
23093    GLMessage glmsg;
23094    GLTraceContext *glContext = getGLTraceContext();
23095
23096    glmsg.set_function(GLMessage::glTexCoord3bOES);
23097
23098    // copy argument s
23099    GLMessage_DataType *arg_s = glmsg.add_args();
23100    arg_s->set_isarray(false);
23101    arg_s->set_type(GLMessage::DataType::BYTE);
23102    arg_s->add_intvalue((int)s);
23103
23104    // copy argument t
23105    GLMessage_DataType *arg_t = glmsg.add_args();
23106    arg_t->set_isarray(false);
23107    arg_t->set_type(GLMessage::DataType::BYTE);
23108    arg_t->add_intvalue((int)t);
23109
23110    // copy argument r
23111    GLMessage_DataType *arg_r = glmsg.add_args();
23112    arg_r->set_isarray(false);
23113    arg_r->set_type(GLMessage::DataType::BYTE);
23114    arg_r->add_intvalue((int)r);
23115
23116    // call function
23117    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23118    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23119    glContext->hooks->gl.glTexCoord3bOES(s, t, r);
23120    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23121    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23122
23123    void *pointerArgs[] = {
23124    };
23125
23126    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23127                              threadStartTime, threadEndTime,
23128                              &glmsg, pointerArgs);
23129    glContext->traceGLMessage(&glmsg);
23130}
23131
23132void GLTrace_glTexCoord3bvOES(const GLbyte * coords) {
23133    GLMessage glmsg;
23134    GLTraceContext *glContext = getGLTraceContext();
23135
23136    glmsg.set_function(GLMessage::glTexCoord3bvOES);
23137
23138    // copy argument coords
23139    GLMessage_DataType *arg_coords = glmsg.add_args();
23140    arg_coords->set_isarray(false);
23141    arg_coords->set_type(GLMessage::DataType::INT64);
23142    arg_coords->add_int64value((uintptr_t)coords);
23143
23144    // call function
23145    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23146    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23147    glContext->hooks->gl.glTexCoord3bvOES(coords);
23148    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23149    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23150
23151    void *pointerArgs[] = {
23152        (void *) coords,
23153    };
23154
23155    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23156                              threadStartTime, threadEndTime,
23157                              &glmsg, pointerArgs);
23158    glContext->traceGLMessage(&glmsg);
23159}
23160
23161void GLTrace_glTexCoord4bOES(GLbyte s, GLbyte t, GLbyte r, GLbyte q) {
23162    GLMessage glmsg;
23163    GLTraceContext *glContext = getGLTraceContext();
23164
23165    glmsg.set_function(GLMessage::glTexCoord4bOES);
23166
23167    // copy argument s
23168    GLMessage_DataType *arg_s = glmsg.add_args();
23169    arg_s->set_isarray(false);
23170    arg_s->set_type(GLMessage::DataType::BYTE);
23171    arg_s->add_intvalue((int)s);
23172
23173    // copy argument t
23174    GLMessage_DataType *arg_t = glmsg.add_args();
23175    arg_t->set_isarray(false);
23176    arg_t->set_type(GLMessage::DataType::BYTE);
23177    arg_t->add_intvalue((int)t);
23178
23179    // copy argument r
23180    GLMessage_DataType *arg_r = glmsg.add_args();
23181    arg_r->set_isarray(false);
23182    arg_r->set_type(GLMessage::DataType::BYTE);
23183    arg_r->add_intvalue((int)r);
23184
23185    // copy argument q
23186    GLMessage_DataType *arg_q = glmsg.add_args();
23187    arg_q->set_isarray(false);
23188    arg_q->set_type(GLMessage::DataType::BYTE);
23189    arg_q->add_intvalue((int)q);
23190
23191    // call function
23192    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23193    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23194    glContext->hooks->gl.glTexCoord4bOES(s, t, r, q);
23195    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23196    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23197
23198    void *pointerArgs[] = {
23199    };
23200
23201    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23202                              threadStartTime, threadEndTime,
23203                              &glmsg, pointerArgs);
23204    glContext->traceGLMessage(&glmsg);
23205}
23206
23207void GLTrace_glTexCoord4bvOES(const GLbyte * coords) {
23208    GLMessage glmsg;
23209    GLTraceContext *glContext = getGLTraceContext();
23210
23211    glmsg.set_function(GLMessage::glTexCoord4bvOES);
23212
23213    // copy argument coords
23214    GLMessage_DataType *arg_coords = glmsg.add_args();
23215    arg_coords->set_isarray(false);
23216    arg_coords->set_type(GLMessage::DataType::INT64);
23217    arg_coords->add_int64value((uintptr_t)coords);
23218
23219    // call function
23220    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23221    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23222    glContext->hooks->gl.glTexCoord4bvOES(coords);
23223    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23224    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23225
23226    void *pointerArgs[] = {
23227        (void *) coords,
23228    };
23229
23230    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23231                              threadStartTime, threadEndTime,
23232                              &glmsg, pointerArgs);
23233    glContext->traceGLMessage(&glmsg);
23234}
23235
23236void GLTrace_glVertex2bOES(GLbyte x) {
23237    GLMessage glmsg;
23238    GLTraceContext *glContext = getGLTraceContext();
23239
23240    glmsg.set_function(GLMessage::glVertex2bOES);
23241
23242    // copy argument x
23243    GLMessage_DataType *arg_x = glmsg.add_args();
23244    arg_x->set_isarray(false);
23245    arg_x->set_type(GLMessage::DataType::BYTE);
23246    arg_x->add_intvalue((int)x);
23247
23248    // call function
23249    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23250    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23251    glContext->hooks->gl.glVertex2bOES(x);
23252    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23253    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23254
23255    void *pointerArgs[] = {
23256    };
23257
23258    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23259                              threadStartTime, threadEndTime,
23260                              &glmsg, pointerArgs);
23261    glContext->traceGLMessage(&glmsg);
23262}
23263
23264void GLTrace_glVertex2bvOES(const GLbyte * coords) {
23265    GLMessage glmsg;
23266    GLTraceContext *glContext = getGLTraceContext();
23267
23268    glmsg.set_function(GLMessage::glVertex2bvOES);
23269
23270    // copy argument coords
23271    GLMessage_DataType *arg_coords = glmsg.add_args();
23272    arg_coords->set_isarray(false);
23273    arg_coords->set_type(GLMessage::DataType::INT64);
23274    arg_coords->add_int64value((uintptr_t)coords);
23275
23276    // call function
23277    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23278    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23279    glContext->hooks->gl.glVertex2bvOES(coords);
23280    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23281    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23282
23283    void *pointerArgs[] = {
23284        (void *) coords,
23285    };
23286
23287    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23288                              threadStartTime, threadEndTime,
23289                              &glmsg, pointerArgs);
23290    glContext->traceGLMessage(&glmsg);
23291}
23292
23293void GLTrace_glVertex3bOES(GLbyte x, GLbyte y) {
23294    GLMessage glmsg;
23295    GLTraceContext *glContext = getGLTraceContext();
23296
23297    glmsg.set_function(GLMessage::glVertex3bOES);
23298
23299    // copy argument x
23300    GLMessage_DataType *arg_x = glmsg.add_args();
23301    arg_x->set_isarray(false);
23302    arg_x->set_type(GLMessage::DataType::BYTE);
23303    arg_x->add_intvalue((int)x);
23304
23305    // copy argument y
23306    GLMessage_DataType *arg_y = glmsg.add_args();
23307    arg_y->set_isarray(false);
23308    arg_y->set_type(GLMessage::DataType::BYTE);
23309    arg_y->add_intvalue((int)y);
23310
23311    // call function
23312    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23313    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23314    glContext->hooks->gl.glVertex3bOES(x, y);
23315    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23316    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23317
23318    void *pointerArgs[] = {
23319    };
23320
23321    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23322                              threadStartTime, threadEndTime,
23323                              &glmsg, pointerArgs);
23324    glContext->traceGLMessage(&glmsg);
23325}
23326
23327void GLTrace_glVertex3bvOES(const GLbyte * coords) {
23328    GLMessage glmsg;
23329    GLTraceContext *glContext = getGLTraceContext();
23330
23331    glmsg.set_function(GLMessage::glVertex3bvOES);
23332
23333    // copy argument coords
23334    GLMessage_DataType *arg_coords = glmsg.add_args();
23335    arg_coords->set_isarray(false);
23336    arg_coords->set_type(GLMessage::DataType::INT64);
23337    arg_coords->add_int64value((uintptr_t)coords);
23338
23339    // call function
23340    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23341    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23342    glContext->hooks->gl.glVertex3bvOES(coords);
23343    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23344    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23345
23346    void *pointerArgs[] = {
23347        (void *) coords,
23348    };
23349
23350    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23351                              threadStartTime, threadEndTime,
23352                              &glmsg, pointerArgs);
23353    glContext->traceGLMessage(&glmsg);
23354}
23355
23356void GLTrace_glVertex4bOES(GLbyte x, GLbyte y, GLbyte z) {
23357    GLMessage glmsg;
23358    GLTraceContext *glContext = getGLTraceContext();
23359
23360    glmsg.set_function(GLMessage::glVertex4bOES);
23361
23362    // copy argument x
23363    GLMessage_DataType *arg_x = glmsg.add_args();
23364    arg_x->set_isarray(false);
23365    arg_x->set_type(GLMessage::DataType::BYTE);
23366    arg_x->add_intvalue((int)x);
23367
23368    // copy argument y
23369    GLMessage_DataType *arg_y = glmsg.add_args();
23370    arg_y->set_isarray(false);
23371    arg_y->set_type(GLMessage::DataType::BYTE);
23372    arg_y->add_intvalue((int)y);
23373
23374    // copy argument z
23375    GLMessage_DataType *arg_z = glmsg.add_args();
23376    arg_z->set_isarray(false);
23377    arg_z->set_type(GLMessage::DataType::BYTE);
23378    arg_z->add_intvalue((int)z);
23379
23380    // call function
23381    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23382    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23383    glContext->hooks->gl.glVertex4bOES(x, y, z);
23384    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23385    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23386
23387    void *pointerArgs[] = {
23388    };
23389
23390    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23391                              threadStartTime, threadEndTime,
23392                              &glmsg, pointerArgs);
23393    glContext->traceGLMessage(&glmsg);
23394}
23395
23396void GLTrace_glVertex4bvOES(const GLbyte * coords) {
23397    GLMessage glmsg;
23398    GLTraceContext *glContext = getGLTraceContext();
23399
23400    glmsg.set_function(GLMessage::glVertex4bvOES);
23401
23402    // copy argument coords
23403    GLMessage_DataType *arg_coords = glmsg.add_args();
23404    arg_coords->set_isarray(false);
23405    arg_coords->set_type(GLMessage::DataType::INT64);
23406    arg_coords->add_int64value((uintptr_t)coords);
23407
23408    // call function
23409    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23410    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23411    glContext->hooks->gl.glVertex4bvOES(coords);
23412    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23413    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23414
23415    void *pointerArgs[] = {
23416        (void *) coords,
23417    };
23418
23419    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23420                              threadStartTime, threadEndTime,
23421                              &glmsg, pointerArgs);
23422    glContext->traceGLMessage(&glmsg);
23423}
23424
23425void GLTrace_glDrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height) {
23426    GLMessage glmsg;
23427    GLTraceContext *glContext = getGLTraceContext();
23428
23429    glmsg.set_function(GLMessage::glDrawTexsOES);
23430
23431    // copy argument x
23432    GLMessage_DataType *arg_x = glmsg.add_args();
23433    arg_x->set_isarray(false);
23434    arg_x->set_type(GLMessage::DataType::INT);
23435    arg_x->add_intvalue(x);
23436
23437    // copy argument y
23438    GLMessage_DataType *arg_y = glmsg.add_args();
23439    arg_y->set_isarray(false);
23440    arg_y->set_type(GLMessage::DataType::INT);
23441    arg_y->add_intvalue(y);
23442
23443    // copy argument z
23444    GLMessage_DataType *arg_z = glmsg.add_args();
23445    arg_z->set_isarray(false);
23446    arg_z->set_type(GLMessage::DataType::INT);
23447    arg_z->add_intvalue(z);
23448
23449    // copy argument width
23450    GLMessage_DataType *arg_width = glmsg.add_args();
23451    arg_width->set_isarray(false);
23452    arg_width->set_type(GLMessage::DataType::INT);
23453    arg_width->add_intvalue(width);
23454
23455    // copy argument height
23456    GLMessage_DataType *arg_height = glmsg.add_args();
23457    arg_height->set_isarray(false);
23458    arg_height->set_type(GLMessage::DataType::INT);
23459    arg_height->add_intvalue(height);
23460
23461    // call function
23462    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23463    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23464    glContext->hooks->gl.glDrawTexsOES(x, y, z, width, height);
23465    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23466    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23467
23468    void *pointerArgs[] = {
23469    };
23470
23471    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23472                              threadStartTime, threadEndTime,
23473                              &glmsg, pointerArgs);
23474    glContext->traceGLMessage(&glmsg);
23475}
23476
23477void GLTrace_glDrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height) {
23478    GLMessage glmsg;
23479    GLTraceContext *glContext = getGLTraceContext();
23480
23481    glmsg.set_function(GLMessage::glDrawTexiOES);
23482
23483    // copy argument x
23484    GLMessage_DataType *arg_x = glmsg.add_args();
23485    arg_x->set_isarray(false);
23486    arg_x->set_type(GLMessage::DataType::INT);
23487    arg_x->add_intvalue(x);
23488
23489    // copy argument y
23490    GLMessage_DataType *arg_y = glmsg.add_args();
23491    arg_y->set_isarray(false);
23492    arg_y->set_type(GLMessage::DataType::INT);
23493    arg_y->add_intvalue(y);
23494
23495    // copy argument z
23496    GLMessage_DataType *arg_z = glmsg.add_args();
23497    arg_z->set_isarray(false);
23498    arg_z->set_type(GLMessage::DataType::INT);
23499    arg_z->add_intvalue(z);
23500
23501    // copy argument width
23502    GLMessage_DataType *arg_width = glmsg.add_args();
23503    arg_width->set_isarray(false);
23504    arg_width->set_type(GLMessage::DataType::INT);
23505    arg_width->add_intvalue(width);
23506
23507    // copy argument height
23508    GLMessage_DataType *arg_height = glmsg.add_args();
23509    arg_height->set_isarray(false);
23510    arg_height->set_type(GLMessage::DataType::INT);
23511    arg_height->add_intvalue(height);
23512
23513    // call function
23514    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23515    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23516    glContext->hooks->gl.glDrawTexiOES(x, y, z, width, height);
23517    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23518    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23519
23520    void *pointerArgs[] = {
23521    };
23522
23523    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23524                              threadStartTime, threadEndTime,
23525                              &glmsg, pointerArgs);
23526    glContext->traceGLMessage(&glmsg);
23527}
23528
23529void GLTrace_glDrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height) {
23530    GLMessage glmsg;
23531    GLTraceContext *glContext = getGLTraceContext();
23532
23533    glmsg.set_function(GLMessage::glDrawTexxOES);
23534
23535    // copy argument x
23536    GLMessage_DataType *arg_x = glmsg.add_args();
23537    arg_x->set_isarray(false);
23538    arg_x->set_type(GLMessage::DataType::INT);
23539    arg_x->add_intvalue(x);
23540
23541    // copy argument y
23542    GLMessage_DataType *arg_y = glmsg.add_args();
23543    arg_y->set_isarray(false);
23544    arg_y->set_type(GLMessage::DataType::INT);
23545    arg_y->add_intvalue(y);
23546
23547    // copy argument z
23548    GLMessage_DataType *arg_z = glmsg.add_args();
23549    arg_z->set_isarray(false);
23550    arg_z->set_type(GLMessage::DataType::INT);
23551    arg_z->add_intvalue(z);
23552
23553    // copy argument width
23554    GLMessage_DataType *arg_width = glmsg.add_args();
23555    arg_width->set_isarray(false);
23556    arg_width->set_type(GLMessage::DataType::INT);
23557    arg_width->add_intvalue(width);
23558
23559    // copy argument height
23560    GLMessage_DataType *arg_height = glmsg.add_args();
23561    arg_height->set_isarray(false);
23562    arg_height->set_type(GLMessage::DataType::INT);
23563    arg_height->add_intvalue(height);
23564
23565    // call function
23566    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23567    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23568    glContext->hooks->gl.glDrawTexxOES(x, y, z, width, height);
23569    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23570    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23571
23572    void *pointerArgs[] = {
23573    };
23574
23575    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23576                              threadStartTime, threadEndTime,
23577                              &glmsg, pointerArgs);
23578    glContext->traceGLMessage(&glmsg);
23579}
23580
23581void GLTrace_glDrawTexsvOES(const GLshort * coords) {
23582    GLMessage glmsg;
23583    GLTraceContext *glContext = getGLTraceContext();
23584
23585    glmsg.set_function(GLMessage::glDrawTexsvOES);
23586
23587    // copy argument coords
23588    GLMessage_DataType *arg_coords = glmsg.add_args();
23589    arg_coords->set_isarray(false);
23590    arg_coords->set_type(GLMessage::DataType::INT64);
23591    arg_coords->add_int64value((uintptr_t)coords);
23592
23593    // call function
23594    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23595    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23596    glContext->hooks->gl.glDrawTexsvOES(coords);
23597    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23598    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23599
23600    void *pointerArgs[] = {
23601        (void *) coords,
23602    };
23603
23604    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23605                              threadStartTime, threadEndTime,
23606                              &glmsg, pointerArgs);
23607    glContext->traceGLMessage(&glmsg);
23608}
23609
23610void GLTrace_glDrawTexivOES(const GLint * coords) {
23611    GLMessage glmsg;
23612    GLTraceContext *glContext = getGLTraceContext();
23613
23614    glmsg.set_function(GLMessage::glDrawTexivOES);
23615
23616    // copy argument coords
23617    GLMessage_DataType *arg_coords = glmsg.add_args();
23618    arg_coords->set_isarray(false);
23619    arg_coords->set_type(GLMessage::DataType::INT64);
23620    arg_coords->add_int64value((uintptr_t)coords);
23621
23622    // call function
23623    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23624    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23625    glContext->hooks->gl.glDrawTexivOES(coords);
23626    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23627    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23628
23629    void *pointerArgs[] = {
23630        (void *) coords,
23631    };
23632
23633    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23634                              threadStartTime, threadEndTime,
23635                              &glmsg, pointerArgs);
23636    glContext->traceGLMessage(&glmsg);
23637}
23638
23639void GLTrace_glDrawTexxvOES(const GLfixed * coords) {
23640    GLMessage glmsg;
23641    GLTraceContext *glContext = getGLTraceContext();
23642
23643    glmsg.set_function(GLMessage::glDrawTexxvOES);
23644
23645    // copy argument coords
23646    GLMessage_DataType *arg_coords = glmsg.add_args();
23647    arg_coords->set_isarray(false);
23648    arg_coords->set_type(GLMessage::DataType::INT64);
23649    arg_coords->add_int64value((uintptr_t)coords);
23650
23651    // call function
23652    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23653    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23654    glContext->hooks->gl.glDrawTexxvOES(coords);
23655    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23656    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23657
23658    void *pointerArgs[] = {
23659        (void *) coords,
23660    };
23661
23662    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23663                              threadStartTime, threadEndTime,
23664                              &glmsg, pointerArgs);
23665    glContext->traceGLMessage(&glmsg);
23666}
23667
23668void GLTrace_glDrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height) {
23669    GLMessage glmsg;
23670    GLTraceContext *glContext = getGLTraceContext();
23671
23672    glmsg.set_function(GLMessage::glDrawTexfOES);
23673
23674    // copy argument x
23675    GLMessage_DataType *arg_x = glmsg.add_args();
23676    arg_x->set_isarray(false);
23677    arg_x->set_type(GLMessage::DataType::FLOAT);
23678    arg_x->add_floatvalue(x);
23679
23680    // copy argument y
23681    GLMessage_DataType *arg_y = glmsg.add_args();
23682    arg_y->set_isarray(false);
23683    arg_y->set_type(GLMessage::DataType::FLOAT);
23684    arg_y->add_floatvalue(y);
23685
23686    // copy argument z
23687    GLMessage_DataType *arg_z = glmsg.add_args();
23688    arg_z->set_isarray(false);
23689    arg_z->set_type(GLMessage::DataType::FLOAT);
23690    arg_z->add_floatvalue(z);
23691
23692    // copy argument width
23693    GLMessage_DataType *arg_width = glmsg.add_args();
23694    arg_width->set_isarray(false);
23695    arg_width->set_type(GLMessage::DataType::FLOAT);
23696    arg_width->add_floatvalue(width);
23697
23698    // copy argument height
23699    GLMessage_DataType *arg_height = glmsg.add_args();
23700    arg_height->set_isarray(false);
23701    arg_height->set_type(GLMessage::DataType::FLOAT);
23702    arg_height->add_floatvalue(height);
23703
23704    // call function
23705    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23706    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23707    glContext->hooks->gl.glDrawTexfOES(x, y, z, width, height);
23708    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23709    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23710
23711    void *pointerArgs[] = {
23712    };
23713
23714    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23715                              threadStartTime, threadEndTime,
23716                              &glmsg, pointerArgs);
23717    glContext->traceGLMessage(&glmsg);
23718}
23719
23720void GLTrace_glDrawTexfvOES(const GLfloat * coords) {
23721    GLMessage glmsg;
23722    GLTraceContext *glContext = getGLTraceContext();
23723
23724    glmsg.set_function(GLMessage::glDrawTexfvOES);
23725
23726    // copy argument coords
23727    GLMessage_DataType *arg_coords = glmsg.add_args();
23728    arg_coords->set_isarray(false);
23729    arg_coords->set_type(GLMessage::DataType::INT64);
23730    arg_coords->add_int64value((uintptr_t)coords);
23731
23732    // call function
23733    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23734    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23735    glContext->hooks->gl.glDrawTexfvOES(coords);
23736    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23737    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23738
23739    void *pointerArgs[] = {
23740        (void *) coords,
23741    };
23742
23743    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23744                              threadStartTime, threadEndTime,
23745                              &glmsg, pointerArgs);
23746    glContext->traceGLMessage(&glmsg);
23747}
23748
23749void GLTrace_glAlphaFuncxOES(GLenum func, GLfixed ref) {
23750    GLMessage glmsg;
23751    GLTraceContext *glContext = getGLTraceContext();
23752
23753    glmsg.set_function(GLMessage::glAlphaFuncxOES);
23754
23755    // copy argument func
23756    GLMessage_DataType *arg_func = glmsg.add_args();
23757    arg_func->set_isarray(false);
23758    arg_func->set_type(GLMessage::DataType::ENUM);
23759    arg_func->add_intvalue((int)func);
23760
23761    // copy argument ref
23762    GLMessage_DataType *arg_ref = glmsg.add_args();
23763    arg_ref->set_isarray(false);
23764    arg_ref->set_type(GLMessage::DataType::INT);
23765    arg_ref->add_intvalue(ref);
23766
23767    // call function
23768    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23769    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23770    glContext->hooks->gl.glAlphaFuncxOES(func, ref);
23771    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23772    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23773
23774    void *pointerArgs[] = {
23775    };
23776
23777    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23778                              threadStartTime, threadEndTime,
23779                              &glmsg, pointerArgs);
23780    glContext->traceGLMessage(&glmsg);
23781}
23782
23783void GLTrace_glClearColorxOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {
23784    GLMessage glmsg;
23785    GLTraceContext *glContext = getGLTraceContext();
23786
23787    glmsg.set_function(GLMessage::glClearColorxOES);
23788
23789    // copy argument red
23790    GLMessage_DataType *arg_red = glmsg.add_args();
23791    arg_red->set_isarray(false);
23792    arg_red->set_type(GLMessage::DataType::INT);
23793    arg_red->add_intvalue(red);
23794
23795    // copy argument green
23796    GLMessage_DataType *arg_green = glmsg.add_args();
23797    arg_green->set_isarray(false);
23798    arg_green->set_type(GLMessage::DataType::INT);
23799    arg_green->add_intvalue(green);
23800
23801    // copy argument blue
23802    GLMessage_DataType *arg_blue = glmsg.add_args();
23803    arg_blue->set_isarray(false);
23804    arg_blue->set_type(GLMessage::DataType::INT);
23805    arg_blue->add_intvalue(blue);
23806
23807    // copy argument alpha
23808    GLMessage_DataType *arg_alpha = glmsg.add_args();
23809    arg_alpha->set_isarray(false);
23810    arg_alpha->set_type(GLMessage::DataType::INT);
23811    arg_alpha->add_intvalue(alpha);
23812
23813    // call function
23814    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23815    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23816    glContext->hooks->gl.glClearColorxOES(red, green, blue, alpha);
23817    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23818    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23819
23820    void *pointerArgs[] = {
23821    };
23822
23823    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23824                              threadStartTime, threadEndTime,
23825                              &glmsg, pointerArgs);
23826    glContext->traceGLMessage(&glmsg);
23827}
23828
23829void GLTrace_glClearDepthxOES(GLfixed depth) {
23830    GLMessage glmsg;
23831    GLTraceContext *glContext = getGLTraceContext();
23832
23833    glmsg.set_function(GLMessage::glClearDepthxOES);
23834
23835    // copy argument depth
23836    GLMessage_DataType *arg_depth = glmsg.add_args();
23837    arg_depth->set_isarray(false);
23838    arg_depth->set_type(GLMessage::DataType::INT);
23839    arg_depth->add_intvalue(depth);
23840
23841    // call function
23842    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23843    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23844    glContext->hooks->gl.glClearDepthxOES(depth);
23845    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23846    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23847
23848    void *pointerArgs[] = {
23849    };
23850
23851    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23852                              threadStartTime, threadEndTime,
23853                              &glmsg, pointerArgs);
23854    glContext->traceGLMessage(&glmsg);
23855}
23856
23857void GLTrace_glClipPlanexOES(GLenum plane, const GLfixed * equation) {
23858    GLMessage glmsg;
23859    GLTraceContext *glContext = getGLTraceContext();
23860
23861    glmsg.set_function(GLMessage::glClipPlanexOES);
23862
23863    // copy argument plane
23864    GLMessage_DataType *arg_plane = glmsg.add_args();
23865    arg_plane->set_isarray(false);
23866    arg_plane->set_type(GLMessage::DataType::ENUM);
23867    arg_plane->add_intvalue((int)plane);
23868
23869    // copy argument equation
23870    GLMessage_DataType *arg_equation = glmsg.add_args();
23871    arg_equation->set_isarray(false);
23872    arg_equation->set_type(GLMessage::DataType::INT64);
23873    arg_equation->add_int64value((uintptr_t)equation);
23874
23875    // call function
23876    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23877    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23878    glContext->hooks->gl.glClipPlanexOES(plane, equation);
23879    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23880    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23881
23882    void *pointerArgs[] = {
23883        (void *) equation,
23884    };
23885
23886    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23887                              threadStartTime, threadEndTime,
23888                              &glmsg, pointerArgs);
23889    glContext->traceGLMessage(&glmsg);
23890}
23891
23892void GLTrace_glColor4xOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {
23893    GLMessage glmsg;
23894    GLTraceContext *glContext = getGLTraceContext();
23895
23896    glmsg.set_function(GLMessage::glColor4xOES);
23897
23898    // copy argument red
23899    GLMessage_DataType *arg_red = glmsg.add_args();
23900    arg_red->set_isarray(false);
23901    arg_red->set_type(GLMessage::DataType::INT);
23902    arg_red->add_intvalue(red);
23903
23904    // copy argument green
23905    GLMessage_DataType *arg_green = glmsg.add_args();
23906    arg_green->set_isarray(false);
23907    arg_green->set_type(GLMessage::DataType::INT);
23908    arg_green->add_intvalue(green);
23909
23910    // copy argument blue
23911    GLMessage_DataType *arg_blue = glmsg.add_args();
23912    arg_blue->set_isarray(false);
23913    arg_blue->set_type(GLMessage::DataType::INT);
23914    arg_blue->add_intvalue(blue);
23915
23916    // copy argument alpha
23917    GLMessage_DataType *arg_alpha = glmsg.add_args();
23918    arg_alpha->set_isarray(false);
23919    arg_alpha->set_type(GLMessage::DataType::INT);
23920    arg_alpha->add_intvalue(alpha);
23921
23922    // call function
23923    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23924    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23925    glContext->hooks->gl.glColor4xOES(red, green, blue, alpha);
23926    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23927    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23928
23929    void *pointerArgs[] = {
23930    };
23931
23932    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23933                              threadStartTime, threadEndTime,
23934                              &glmsg, pointerArgs);
23935    glContext->traceGLMessage(&glmsg);
23936}
23937
23938void GLTrace_glDepthRangexOES(GLfixed n, GLfixed f) {
23939    GLMessage glmsg;
23940    GLTraceContext *glContext = getGLTraceContext();
23941
23942    glmsg.set_function(GLMessage::glDepthRangexOES);
23943
23944    // copy argument n
23945    GLMessage_DataType *arg_n = glmsg.add_args();
23946    arg_n->set_isarray(false);
23947    arg_n->set_type(GLMessage::DataType::INT);
23948    arg_n->add_intvalue(n);
23949
23950    // copy argument f
23951    GLMessage_DataType *arg_f = glmsg.add_args();
23952    arg_f->set_isarray(false);
23953    arg_f->set_type(GLMessage::DataType::INT);
23954    arg_f->add_intvalue(f);
23955
23956    // call function
23957    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23958    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23959    glContext->hooks->gl.glDepthRangexOES(n, f);
23960    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23961    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23962
23963    void *pointerArgs[] = {
23964    };
23965
23966    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23967                              threadStartTime, threadEndTime,
23968                              &glmsg, pointerArgs);
23969    glContext->traceGLMessage(&glmsg);
23970}
23971
23972void GLTrace_glFogxOES(GLenum pname, GLfixed param) {
23973    GLMessage glmsg;
23974    GLTraceContext *glContext = getGLTraceContext();
23975
23976    glmsg.set_function(GLMessage::glFogxOES);
23977
23978    // copy argument pname
23979    GLMessage_DataType *arg_pname = glmsg.add_args();
23980    arg_pname->set_isarray(false);
23981    arg_pname->set_type(GLMessage::DataType::ENUM);
23982    arg_pname->add_intvalue((int)pname);
23983
23984    // copy argument param
23985    GLMessage_DataType *arg_param = glmsg.add_args();
23986    arg_param->set_isarray(false);
23987    arg_param->set_type(GLMessage::DataType::INT);
23988    arg_param->add_intvalue(param);
23989
23990    // call function
23991    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23992    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23993    glContext->hooks->gl.glFogxOES(pname, param);
23994    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23995    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23996
23997    void *pointerArgs[] = {
23998    };
23999
24000    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24001                              threadStartTime, threadEndTime,
24002                              &glmsg, pointerArgs);
24003    glContext->traceGLMessage(&glmsg);
24004}
24005
24006void GLTrace_glFogxvOES(GLenum pname, const GLfixed * param) {
24007    GLMessage glmsg;
24008    GLTraceContext *glContext = getGLTraceContext();
24009
24010    glmsg.set_function(GLMessage::glFogxvOES);
24011
24012    // copy argument pname
24013    GLMessage_DataType *arg_pname = glmsg.add_args();
24014    arg_pname->set_isarray(false);
24015    arg_pname->set_type(GLMessage::DataType::ENUM);
24016    arg_pname->add_intvalue((int)pname);
24017
24018    // copy argument param
24019    GLMessage_DataType *arg_param = glmsg.add_args();
24020    arg_param->set_isarray(false);
24021    arg_param->set_type(GLMessage::DataType::INT64);
24022    arg_param->add_int64value((uintptr_t)param);
24023
24024    // call function
24025    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24026    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24027    glContext->hooks->gl.glFogxvOES(pname, param);
24028    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24029    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24030
24031    void *pointerArgs[] = {
24032        (void *) param,
24033    };
24034
24035    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24036                              threadStartTime, threadEndTime,
24037                              &glmsg, pointerArgs);
24038    glContext->traceGLMessage(&glmsg);
24039}
24040
24041void GLTrace_glFrustumxOES(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f) {
24042    GLMessage glmsg;
24043    GLTraceContext *glContext = getGLTraceContext();
24044
24045    glmsg.set_function(GLMessage::glFrustumxOES);
24046
24047    // copy argument l
24048    GLMessage_DataType *arg_l = glmsg.add_args();
24049    arg_l->set_isarray(false);
24050    arg_l->set_type(GLMessage::DataType::INT);
24051    arg_l->add_intvalue(l);
24052
24053    // copy argument r
24054    GLMessage_DataType *arg_r = glmsg.add_args();
24055    arg_r->set_isarray(false);
24056    arg_r->set_type(GLMessage::DataType::INT);
24057    arg_r->add_intvalue(r);
24058
24059    // copy argument b
24060    GLMessage_DataType *arg_b = glmsg.add_args();
24061    arg_b->set_isarray(false);
24062    arg_b->set_type(GLMessage::DataType::INT);
24063    arg_b->add_intvalue(b);
24064
24065    // copy argument t
24066    GLMessage_DataType *arg_t = glmsg.add_args();
24067    arg_t->set_isarray(false);
24068    arg_t->set_type(GLMessage::DataType::INT);
24069    arg_t->add_intvalue(t);
24070
24071    // copy argument n
24072    GLMessage_DataType *arg_n = glmsg.add_args();
24073    arg_n->set_isarray(false);
24074    arg_n->set_type(GLMessage::DataType::INT);
24075    arg_n->add_intvalue(n);
24076
24077    // copy argument f
24078    GLMessage_DataType *arg_f = glmsg.add_args();
24079    arg_f->set_isarray(false);
24080    arg_f->set_type(GLMessage::DataType::INT);
24081    arg_f->add_intvalue(f);
24082
24083    // call function
24084    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24085    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24086    glContext->hooks->gl.glFrustumxOES(l, r, b, t, n, f);
24087    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24088    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24089
24090    void *pointerArgs[] = {
24091    };
24092
24093    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24094                              threadStartTime, threadEndTime,
24095                              &glmsg, pointerArgs);
24096    glContext->traceGLMessage(&glmsg);
24097}
24098
24099void GLTrace_glGetClipPlanexOES(GLenum plane, GLfixed * equation) {
24100    GLMessage glmsg;
24101    GLTraceContext *glContext = getGLTraceContext();
24102
24103    glmsg.set_function(GLMessage::glGetClipPlanexOES);
24104
24105    // copy argument plane
24106    GLMessage_DataType *arg_plane = glmsg.add_args();
24107    arg_plane->set_isarray(false);
24108    arg_plane->set_type(GLMessage::DataType::ENUM);
24109    arg_plane->add_intvalue((int)plane);
24110
24111    // copy argument equation
24112    GLMessage_DataType *arg_equation = glmsg.add_args();
24113    arg_equation->set_isarray(false);
24114    arg_equation->set_type(GLMessage::DataType::INT64);
24115    arg_equation->add_int64value((uintptr_t)equation);
24116
24117    // call function
24118    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24119    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24120    glContext->hooks->gl.glGetClipPlanexOES(plane, equation);
24121    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24122    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24123
24124    void *pointerArgs[] = {
24125        (void *) equation,
24126    };
24127
24128    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24129                              threadStartTime, threadEndTime,
24130                              &glmsg, pointerArgs);
24131    glContext->traceGLMessage(&glmsg);
24132}
24133
24134void GLTrace_glGetFixedvOES(GLenum pname, GLfixed * params) {
24135    GLMessage glmsg;
24136    GLTraceContext *glContext = getGLTraceContext();
24137
24138    glmsg.set_function(GLMessage::glGetFixedvOES);
24139
24140    // copy argument pname
24141    GLMessage_DataType *arg_pname = glmsg.add_args();
24142    arg_pname->set_isarray(false);
24143    arg_pname->set_type(GLMessage::DataType::ENUM);
24144    arg_pname->add_intvalue((int)pname);
24145
24146    // copy argument params
24147    GLMessage_DataType *arg_params = glmsg.add_args();
24148    arg_params->set_isarray(false);
24149    arg_params->set_type(GLMessage::DataType::INT64);
24150    arg_params->add_int64value((uintptr_t)params);
24151
24152    // call function
24153    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24154    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24155    glContext->hooks->gl.glGetFixedvOES(pname, params);
24156    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24157    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24158
24159    void *pointerArgs[] = {
24160        (void *) params,
24161    };
24162
24163    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24164                              threadStartTime, threadEndTime,
24165                              &glmsg, pointerArgs);
24166    glContext->traceGLMessage(&glmsg);
24167}
24168
24169void GLTrace_glGetTexEnvxvOES(GLenum target, GLenum pname, GLfixed * params) {
24170    GLMessage glmsg;
24171    GLTraceContext *glContext = getGLTraceContext();
24172
24173    glmsg.set_function(GLMessage::glGetTexEnvxvOES);
24174
24175    // copy argument target
24176    GLMessage_DataType *arg_target = glmsg.add_args();
24177    arg_target->set_isarray(false);
24178    arg_target->set_type(GLMessage::DataType::ENUM);
24179    arg_target->add_intvalue((int)target);
24180
24181    // copy argument pname
24182    GLMessage_DataType *arg_pname = glmsg.add_args();
24183    arg_pname->set_isarray(false);
24184    arg_pname->set_type(GLMessage::DataType::ENUM);
24185    arg_pname->add_intvalue((int)pname);
24186
24187    // copy argument params
24188    GLMessage_DataType *arg_params = glmsg.add_args();
24189    arg_params->set_isarray(false);
24190    arg_params->set_type(GLMessage::DataType::INT64);
24191    arg_params->add_int64value((uintptr_t)params);
24192
24193    // call function
24194    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24195    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24196    glContext->hooks->gl.glGetTexEnvxvOES(target, pname, params);
24197    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24198    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24199
24200    void *pointerArgs[] = {
24201        (void *) params,
24202    };
24203
24204    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24205                              threadStartTime, threadEndTime,
24206                              &glmsg, pointerArgs);
24207    glContext->traceGLMessage(&glmsg);
24208}
24209
24210void GLTrace_glGetTexParameterxvOES(GLenum target, GLenum pname, GLfixed * params) {
24211    GLMessage glmsg;
24212    GLTraceContext *glContext = getGLTraceContext();
24213
24214    glmsg.set_function(GLMessage::glGetTexParameterxvOES);
24215
24216    // copy argument target
24217    GLMessage_DataType *arg_target = glmsg.add_args();
24218    arg_target->set_isarray(false);
24219    arg_target->set_type(GLMessage::DataType::ENUM);
24220    arg_target->add_intvalue((int)target);
24221
24222    // copy argument pname
24223    GLMessage_DataType *arg_pname = glmsg.add_args();
24224    arg_pname->set_isarray(false);
24225    arg_pname->set_type(GLMessage::DataType::ENUM);
24226    arg_pname->add_intvalue((int)pname);
24227
24228    // copy argument params
24229    GLMessage_DataType *arg_params = glmsg.add_args();
24230    arg_params->set_isarray(false);
24231    arg_params->set_type(GLMessage::DataType::INT64);
24232    arg_params->add_int64value((uintptr_t)params);
24233
24234    // call function
24235    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24236    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24237    glContext->hooks->gl.glGetTexParameterxvOES(target, pname, params);
24238    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24239    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24240
24241    void *pointerArgs[] = {
24242        (void *) params,
24243    };
24244
24245    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24246                              threadStartTime, threadEndTime,
24247                              &glmsg, pointerArgs);
24248    glContext->traceGLMessage(&glmsg);
24249}
24250
24251void GLTrace_glLightModelxOES(GLenum pname, GLfixed param) {
24252    GLMessage glmsg;
24253    GLTraceContext *glContext = getGLTraceContext();
24254
24255    glmsg.set_function(GLMessage::glLightModelxOES);
24256
24257    // copy argument pname
24258    GLMessage_DataType *arg_pname = glmsg.add_args();
24259    arg_pname->set_isarray(false);
24260    arg_pname->set_type(GLMessage::DataType::ENUM);
24261    arg_pname->add_intvalue((int)pname);
24262
24263    // copy argument param
24264    GLMessage_DataType *arg_param = glmsg.add_args();
24265    arg_param->set_isarray(false);
24266    arg_param->set_type(GLMessage::DataType::INT);
24267    arg_param->add_intvalue(param);
24268
24269    // call function
24270    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24271    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24272    glContext->hooks->gl.glLightModelxOES(pname, param);
24273    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24274    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24275
24276    void *pointerArgs[] = {
24277    };
24278
24279    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24280                              threadStartTime, threadEndTime,
24281                              &glmsg, pointerArgs);
24282    glContext->traceGLMessage(&glmsg);
24283}
24284
24285void GLTrace_glLightModelxvOES(GLenum pname, const GLfixed * param) {
24286    GLMessage glmsg;
24287    GLTraceContext *glContext = getGLTraceContext();
24288
24289    glmsg.set_function(GLMessage::glLightModelxvOES);
24290
24291    // copy argument pname
24292    GLMessage_DataType *arg_pname = glmsg.add_args();
24293    arg_pname->set_isarray(false);
24294    arg_pname->set_type(GLMessage::DataType::ENUM);
24295    arg_pname->add_intvalue((int)pname);
24296
24297    // copy argument param
24298    GLMessage_DataType *arg_param = glmsg.add_args();
24299    arg_param->set_isarray(false);
24300    arg_param->set_type(GLMessage::DataType::INT64);
24301    arg_param->add_int64value((uintptr_t)param);
24302
24303    // call function
24304    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24305    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24306    glContext->hooks->gl.glLightModelxvOES(pname, param);
24307    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24308    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24309
24310    void *pointerArgs[] = {
24311        (void *) param,
24312    };
24313
24314    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24315                              threadStartTime, threadEndTime,
24316                              &glmsg, pointerArgs);
24317    glContext->traceGLMessage(&glmsg);
24318}
24319
24320void GLTrace_glLightxOES(GLenum light, GLenum pname, GLfixed param) {
24321    GLMessage glmsg;
24322    GLTraceContext *glContext = getGLTraceContext();
24323
24324    glmsg.set_function(GLMessage::glLightxOES);
24325
24326    // copy argument light
24327    GLMessage_DataType *arg_light = glmsg.add_args();
24328    arg_light->set_isarray(false);
24329    arg_light->set_type(GLMessage::DataType::ENUM);
24330    arg_light->add_intvalue((int)light);
24331
24332    // copy argument pname
24333    GLMessage_DataType *arg_pname = glmsg.add_args();
24334    arg_pname->set_isarray(false);
24335    arg_pname->set_type(GLMessage::DataType::ENUM);
24336    arg_pname->add_intvalue((int)pname);
24337
24338    // copy argument param
24339    GLMessage_DataType *arg_param = glmsg.add_args();
24340    arg_param->set_isarray(false);
24341    arg_param->set_type(GLMessage::DataType::INT);
24342    arg_param->add_intvalue(param);
24343
24344    // call function
24345    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24346    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24347    glContext->hooks->gl.glLightxOES(light, pname, param);
24348    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24349    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24350
24351    void *pointerArgs[] = {
24352    };
24353
24354    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24355                              threadStartTime, threadEndTime,
24356                              &glmsg, pointerArgs);
24357    glContext->traceGLMessage(&glmsg);
24358}
24359
24360void GLTrace_glLightxvOES(GLenum light, GLenum pname, const GLfixed * params) {
24361    GLMessage glmsg;
24362    GLTraceContext *glContext = getGLTraceContext();
24363
24364    glmsg.set_function(GLMessage::glLightxvOES);
24365
24366    // copy argument light
24367    GLMessage_DataType *arg_light = glmsg.add_args();
24368    arg_light->set_isarray(false);
24369    arg_light->set_type(GLMessage::DataType::ENUM);
24370    arg_light->add_intvalue((int)light);
24371
24372    // copy argument pname
24373    GLMessage_DataType *arg_pname = glmsg.add_args();
24374    arg_pname->set_isarray(false);
24375    arg_pname->set_type(GLMessage::DataType::ENUM);
24376    arg_pname->add_intvalue((int)pname);
24377
24378    // copy argument params
24379    GLMessage_DataType *arg_params = glmsg.add_args();
24380    arg_params->set_isarray(false);
24381    arg_params->set_type(GLMessage::DataType::INT64);
24382    arg_params->add_int64value((uintptr_t)params);
24383
24384    // call function
24385    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24386    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24387    glContext->hooks->gl.glLightxvOES(light, pname, params);
24388    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24389    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24390
24391    void *pointerArgs[] = {
24392        (void *) params,
24393    };
24394
24395    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24396                              threadStartTime, threadEndTime,
24397                              &glmsg, pointerArgs);
24398    glContext->traceGLMessage(&glmsg);
24399}
24400
24401void GLTrace_glLineWidthxOES(GLfixed width) {
24402    GLMessage glmsg;
24403    GLTraceContext *glContext = getGLTraceContext();
24404
24405    glmsg.set_function(GLMessage::glLineWidthxOES);
24406
24407    // copy argument width
24408    GLMessage_DataType *arg_width = glmsg.add_args();
24409    arg_width->set_isarray(false);
24410    arg_width->set_type(GLMessage::DataType::INT);
24411    arg_width->add_intvalue(width);
24412
24413    // call function
24414    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24415    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24416    glContext->hooks->gl.glLineWidthxOES(width);
24417    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24418    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24419
24420    void *pointerArgs[] = {
24421    };
24422
24423    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24424                              threadStartTime, threadEndTime,
24425                              &glmsg, pointerArgs);
24426    glContext->traceGLMessage(&glmsg);
24427}
24428
24429void GLTrace_glLoadMatrixxOES(const GLfixed * m) {
24430    GLMessage glmsg;
24431    GLTraceContext *glContext = getGLTraceContext();
24432
24433    glmsg.set_function(GLMessage::glLoadMatrixxOES);
24434
24435    // copy argument m
24436    GLMessage_DataType *arg_m = glmsg.add_args();
24437    arg_m->set_isarray(false);
24438    arg_m->set_type(GLMessage::DataType::INT64);
24439    arg_m->add_int64value((uintptr_t)m);
24440
24441    // call function
24442    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24443    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24444    glContext->hooks->gl.glLoadMatrixxOES(m);
24445    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24446    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24447
24448    void *pointerArgs[] = {
24449        (void *) m,
24450    };
24451
24452    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24453                              threadStartTime, threadEndTime,
24454                              &glmsg, pointerArgs);
24455    glContext->traceGLMessage(&glmsg);
24456}
24457
24458void GLTrace_glMaterialxOES(GLenum face, GLenum pname, GLfixed param) {
24459    GLMessage glmsg;
24460    GLTraceContext *glContext = getGLTraceContext();
24461
24462    glmsg.set_function(GLMessage::glMaterialxOES);
24463
24464    // copy argument face
24465    GLMessage_DataType *arg_face = glmsg.add_args();
24466    arg_face->set_isarray(false);
24467    arg_face->set_type(GLMessage::DataType::ENUM);
24468    arg_face->add_intvalue((int)face);
24469
24470    // copy argument pname
24471    GLMessage_DataType *arg_pname = glmsg.add_args();
24472    arg_pname->set_isarray(false);
24473    arg_pname->set_type(GLMessage::DataType::ENUM);
24474    arg_pname->add_intvalue((int)pname);
24475
24476    // copy argument param
24477    GLMessage_DataType *arg_param = glmsg.add_args();
24478    arg_param->set_isarray(false);
24479    arg_param->set_type(GLMessage::DataType::INT);
24480    arg_param->add_intvalue(param);
24481
24482    // call function
24483    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24484    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24485    glContext->hooks->gl.glMaterialxOES(face, pname, param);
24486    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24487    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24488
24489    void *pointerArgs[] = {
24490    };
24491
24492    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24493                              threadStartTime, threadEndTime,
24494                              &glmsg, pointerArgs);
24495    glContext->traceGLMessage(&glmsg);
24496}
24497
24498void GLTrace_glMaterialxvOES(GLenum face, GLenum pname, const GLfixed * param) {
24499    GLMessage glmsg;
24500    GLTraceContext *glContext = getGLTraceContext();
24501
24502    glmsg.set_function(GLMessage::glMaterialxvOES);
24503
24504    // copy argument face
24505    GLMessage_DataType *arg_face = glmsg.add_args();
24506    arg_face->set_isarray(false);
24507    arg_face->set_type(GLMessage::DataType::ENUM);
24508    arg_face->add_intvalue((int)face);
24509
24510    // copy argument pname
24511    GLMessage_DataType *arg_pname = glmsg.add_args();
24512    arg_pname->set_isarray(false);
24513    arg_pname->set_type(GLMessage::DataType::ENUM);
24514    arg_pname->add_intvalue((int)pname);
24515
24516    // copy argument param
24517    GLMessage_DataType *arg_param = glmsg.add_args();
24518    arg_param->set_isarray(false);
24519    arg_param->set_type(GLMessage::DataType::INT64);
24520    arg_param->add_int64value((uintptr_t)param);
24521
24522    // call function
24523    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24524    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24525    glContext->hooks->gl.glMaterialxvOES(face, pname, param);
24526    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24527    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24528
24529    void *pointerArgs[] = {
24530        (void *) param,
24531    };
24532
24533    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24534                              threadStartTime, threadEndTime,
24535                              &glmsg, pointerArgs);
24536    glContext->traceGLMessage(&glmsg);
24537}
24538
24539void GLTrace_glMultMatrixxOES(const GLfixed * m) {
24540    GLMessage glmsg;
24541    GLTraceContext *glContext = getGLTraceContext();
24542
24543    glmsg.set_function(GLMessage::glMultMatrixxOES);
24544
24545    // copy argument m
24546    GLMessage_DataType *arg_m = glmsg.add_args();
24547    arg_m->set_isarray(false);
24548    arg_m->set_type(GLMessage::DataType::INT64);
24549    arg_m->add_int64value((uintptr_t)m);
24550
24551    // call function
24552    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24553    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24554    glContext->hooks->gl.glMultMatrixxOES(m);
24555    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24556    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24557
24558    void *pointerArgs[] = {
24559        (void *) m,
24560    };
24561
24562    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24563                              threadStartTime, threadEndTime,
24564                              &glmsg, pointerArgs);
24565    glContext->traceGLMessage(&glmsg);
24566}
24567
24568void GLTrace_glMultiTexCoord4xOES(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q) {
24569    GLMessage glmsg;
24570    GLTraceContext *glContext = getGLTraceContext();
24571
24572    glmsg.set_function(GLMessage::glMultiTexCoord4xOES);
24573
24574    // copy argument texture
24575    GLMessage_DataType *arg_texture = glmsg.add_args();
24576    arg_texture->set_isarray(false);
24577    arg_texture->set_type(GLMessage::DataType::ENUM);
24578    arg_texture->add_intvalue((int)texture);
24579
24580    // copy argument s
24581    GLMessage_DataType *arg_s = glmsg.add_args();
24582    arg_s->set_isarray(false);
24583    arg_s->set_type(GLMessage::DataType::INT);
24584    arg_s->add_intvalue(s);
24585
24586    // copy argument t
24587    GLMessage_DataType *arg_t = glmsg.add_args();
24588    arg_t->set_isarray(false);
24589    arg_t->set_type(GLMessage::DataType::INT);
24590    arg_t->add_intvalue(t);
24591
24592    // copy argument r
24593    GLMessage_DataType *arg_r = glmsg.add_args();
24594    arg_r->set_isarray(false);
24595    arg_r->set_type(GLMessage::DataType::INT);
24596    arg_r->add_intvalue(r);
24597
24598    // copy argument q
24599    GLMessage_DataType *arg_q = glmsg.add_args();
24600    arg_q->set_isarray(false);
24601    arg_q->set_type(GLMessage::DataType::INT);
24602    arg_q->add_intvalue(q);
24603
24604    // call function
24605    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24606    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24607    glContext->hooks->gl.glMultiTexCoord4xOES(texture, s, t, r, q);
24608    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24609    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24610
24611    void *pointerArgs[] = {
24612    };
24613
24614    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24615                              threadStartTime, threadEndTime,
24616                              &glmsg, pointerArgs);
24617    glContext->traceGLMessage(&glmsg);
24618}
24619
24620void GLTrace_glNormal3xOES(GLfixed nx, GLfixed ny, GLfixed nz) {
24621    GLMessage glmsg;
24622    GLTraceContext *glContext = getGLTraceContext();
24623
24624    glmsg.set_function(GLMessage::glNormal3xOES);
24625
24626    // copy argument nx
24627    GLMessage_DataType *arg_nx = glmsg.add_args();
24628    arg_nx->set_isarray(false);
24629    arg_nx->set_type(GLMessage::DataType::INT);
24630    arg_nx->add_intvalue(nx);
24631
24632    // copy argument ny
24633    GLMessage_DataType *arg_ny = glmsg.add_args();
24634    arg_ny->set_isarray(false);
24635    arg_ny->set_type(GLMessage::DataType::INT);
24636    arg_ny->add_intvalue(ny);
24637
24638    // copy argument nz
24639    GLMessage_DataType *arg_nz = glmsg.add_args();
24640    arg_nz->set_isarray(false);
24641    arg_nz->set_type(GLMessage::DataType::INT);
24642    arg_nz->add_intvalue(nz);
24643
24644    // call function
24645    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24646    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24647    glContext->hooks->gl.glNormal3xOES(nx, ny, nz);
24648    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24649    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24650
24651    void *pointerArgs[] = {
24652    };
24653
24654    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24655                              threadStartTime, threadEndTime,
24656                              &glmsg, pointerArgs);
24657    glContext->traceGLMessage(&glmsg);
24658}
24659
24660void GLTrace_glOrthoxOES(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f) {
24661    GLMessage glmsg;
24662    GLTraceContext *glContext = getGLTraceContext();
24663
24664    glmsg.set_function(GLMessage::glOrthoxOES);
24665
24666    // copy argument l
24667    GLMessage_DataType *arg_l = glmsg.add_args();
24668    arg_l->set_isarray(false);
24669    arg_l->set_type(GLMessage::DataType::INT);
24670    arg_l->add_intvalue(l);
24671
24672    // copy argument r
24673    GLMessage_DataType *arg_r = glmsg.add_args();
24674    arg_r->set_isarray(false);
24675    arg_r->set_type(GLMessage::DataType::INT);
24676    arg_r->add_intvalue(r);
24677
24678    // copy argument b
24679    GLMessage_DataType *arg_b = glmsg.add_args();
24680    arg_b->set_isarray(false);
24681    arg_b->set_type(GLMessage::DataType::INT);
24682    arg_b->add_intvalue(b);
24683
24684    // copy argument t
24685    GLMessage_DataType *arg_t = glmsg.add_args();
24686    arg_t->set_isarray(false);
24687    arg_t->set_type(GLMessage::DataType::INT);
24688    arg_t->add_intvalue(t);
24689
24690    // copy argument n
24691    GLMessage_DataType *arg_n = glmsg.add_args();
24692    arg_n->set_isarray(false);
24693    arg_n->set_type(GLMessage::DataType::INT);
24694    arg_n->add_intvalue(n);
24695
24696    // copy argument f
24697    GLMessage_DataType *arg_f = glmsg.add_args();
24698    arg_f->set_isarray(false);
24699    arg_f->set_type(GLMessage::DataType::INT);
24700    arg_f->add_intvalue(f);
24701
24702    // call function
24703    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24704    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24705    glContext->hooks->gl.glOrthoxOES(l, r, b, t, n, f);
24706    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24707    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24708
24709    void *pointerArgs[] = {
24710    };
24711
24712    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24713                              threadStartTime, threadEndTime,
24714                              &glmsg, pointerArgs);
24715    glContext->traceGLMessage(&glmsg);
24716}
24717
24718void GLTrace_glPointParameterxvOES(GLenum pname, const GLfixed * params) {
24719    GLMessage glmsg;
24720    GLTraceContext *glContext = getGLTraceContext();
24721
24722    glmsg.set_function(GLMessage::glPointParameterxvOES);
24723
24724    // copy argument pname
24725    GLMessage_DataType *arg_pname = glmsg.add_args();
24726    arg_pname->set_isarray(false);
24727    arg_pname->set_type(GLMessage::DataType::ENUM);
24728    arg_pname->add_intvalue((int)pname);
24729
24730    // copy argument params
24731    GLMessage_DataType *arg_params = glmsg.add_args();
24732    arg_params->set_isarray(false);
24733    arg_params->set_type(GLMessage::DataType::INT64);
24734    arg_params->add_int64value((uintptr_t)params);
24735
24736    // call function
24737    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24738    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24739    glContext->hooks->gl.glPointParameterxvOES(pname, params);
24740    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24741    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24742
24743    void *pointerArgs[] = {
24744        (void *) params,
24745    };
24746
24747    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24748                              threadStartTime, threadEndTime,
24749                              &glmsg, pointerArgs);
24750    glContext->traceGLMessage(&glmsg);
24751}
24752
24753void GLTrace_glPointSizexOES(GLfixed size) {
24754    GLMessage glmsg;
24755    GLTraceContext *glContext = getGLTraceContext();
24756
24757    glmsg.set_function(GLMessage::glPointSizexOES);
24758
24759    // copy argument size
24760    GLMessage_DataType *arg_size = glmsg.add_args();
24761    arg_size->set_isarray(false);
24762    arg_size->set_type(GLMessage::DataType::INT);
24763    arg_size->add_intvalue(size);
24764
24765    // call function
24766    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24767    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24768    glContext->hooks->gl.glPointSizexOES(size);
24769    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24770    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24771
24772    void *pointerArgs[] = {
24773    };
24774
24775    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24776                              threadStartTime, threadEndTime,
24777                              &glmsg, pointerArgs);
24778    glContext->traceGLMessage(&glmsg);
24779}
24780
24781void GLTrace_glPolygonOffsetxOES(GLfixed factor, GLfixed units) {
24782    GLMessage glmsg;
24783    GLTraceContext *glContext = getGLTraceContext();
24784
24785    glmsg.set_function(GLMessage::glPolygonOffsetxOES);
24786
24787    // copy argument factor
24788    GLMessage_DataType *arg_factor = glmsg.add_args();
24789    arg_factor->set_isarray(false);
24790    arg_factor->set_type(GLMessage::DataType::INT);
24791    arg_factor->add_intvalue(factor);
24792
24793    // copy argument units
24794    GLMessage_DataType *arg_units = glmsg.add_args();
24795    arg_units->set_isarray(false);
24796    arg_units->set_type(GLMessage::DataType::INT);
24797    arg_units->add_intvalue(units);
24798
24799    // call function
24800    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24801    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24802    glContext->hooks->gl.glPolygonOffsetxOES(factor, units);
24803    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24804    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24805
24806    void *pointerArgs[] = {
24807    };
24808
24809    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24810                              threadStartTime, threadEndTime,
24811                              &glmsg, pointerArgs);
24812    glContext->traceGLMessage(&glmsg);
24813}
24814
24815void GLTrace_glRotatexOES(GLfixed angle, GLfixed x, GLfixed y, GLfixed z) {
24816    GLMessage glmsg;
24817    GLTraceContext *glContext = getGLTraceContext();
24818
24819    glmsg.set_function(GLMessage::glRotatexOES);
24820
24821    // copy argument angle
24822    GLMessage_DataType *arg_angle = glmsg.add_args();
24823    arg_angle->set_isarray(false);
24824    arg_angle->set_type(GLMessage::DataType::INT);
24825    arg_angle->add_intvalue(angle);
24826
24827    // copy argument x
24828    GLMessage_DataType *arg_x = glmsg.add_args();
24829    arg_x->set_isarray(false);
24830    arg_x->set_type(GLMessage::DataType::INT);
24831    arg_x->add_intvalue(x);
24832
24833    // copy argument y
24834    GLMessage_DataType *arg_y = glmsg.add_args();
24835    arg_y->set_isarray(false);
24836    arg_y->set_type(GLMessage::DataType::INT);
24837    arg_y->add_intvalue(y);
24838
24839    // copy argument z
24840    GLMessage_DataType *arg_z = glmsg.add_args();
24841    arg_z->set_isarray(false);
24842    arg_z->set_type(GLMessage::DataType::INT);
24843    arg_z->add_intvalue(z);
24844
24845    // call function
24846    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24847    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24848    glContext->hooks->gl.glRotatexOES(angle, x, y, z);
24849    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24850    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24851
24852    void *pointerArgs[] = {
24853    };
24854
24855    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24856                              threadStartTime, threadEndTime,
24857                              &glmsg, pointerArgs);
24858    glContext->traceGLMessage(&glmsg);
24859}
24860
24861void GLTrace_glSampleCoverageOES(GLfixed value, GLboolean invert) {
24862    GLMessage glmsg;
24863    GLTraceContext *glContext = getGLTraceContext();
24864
24865    glmsg.set_function(GLMessage::glSampleCoverageOES);
24866
24867    // copy argument value
24868    GLMessage_DataType *arg_value = glmsg.add_args();
24869    arg_value->set_isarray(false);
24870    arg_value->set_type(GLMessage::DataType::INT);
24871    arg_value->add_intvalue(value);
24872
24873    // copy argument invert
24874    GLMessage_DataType *arg_invert = glmsg.add_args();
24875    arg_invert->set_isarray(false);
24876    arg_invert->set_type(GLMessage::DataType::BOOL);
24877    arg_invert->add_boolvalue(invert);
24878
24879    // call function
24880    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24881    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24882    glContext->hooks->gl.glSampleCoverageOES(value, invert);
24883    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24884    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24885
24886    void *pointerArgs[] = {
24887    };
24888
24889    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24890                              threadStartTime, threadEndTime,
24891                              &glmsg, pointerArgs);
24892    glContext->traceGLMessage(&glmsg);
24893}
24894
24895void GLTrace_glScalexOES(GLfixed x, GLfixed y, GLfixed z) {
24896    GLMessage glmsg;
24897    GLTraceContext *glContext = getGLTraceContext();
24898
24899    glmsg.set_function(GLMessage::glScalexOES);
24900
24901    // copy argument x
24902    GLMessage_DataType *arg_x = glmsg.add_args();
24903    arg_x->set_isarray(false);
24904    arg_x->set_type(GLMessage::DataType::INT);
24905    arg_x->add_intvalue(x);
24906
24907    // copy argument y
24908    GLMessage_DataType *arg_y = glmsg.add_args();
24909    arg_y->set_isarray(false);
24910    arg_y->set_type(GLMessage::DataType::INT);
24911    arg_y->add_intvalue(y);
24912
24913    // copy argument z
24914    GLMessage_DataType *arg_z = glmsg.add_args();
24915    arg_z->set_isarray(false);
24916    arg_z->set_type(GLMessage::DataType::INT);
24917    arg_z->add_intvalue(z);
24918
24919    // call function
24920    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24921    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24922    glContext->hooks->gl.glScalexOES(x, y, z);
24923    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24924    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24925
24926    void *pointerArgs[] = {
24927    };
24928
24929    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24930                              threadStartTime, threadEndTime,
24931                              &glmsg, pointerArgs);
24932    glContext->traceGLMessage(&glmsg);
24933}
24934
24935void GLTrace_glTexEnvxOES(GLenum target, GLenum pname, GLfixed param) {
24936    GLMessage glmsg;
24937    GLTraceContext *glContext = getGLTraceContext();
24938
24939    glmsg.set_function(GLMessage::glTexEnvxOES);
24940
24941    // copy argument target
24942    GLMessage_DataType *arg_target = glmsg.add_args();
24943    arg_target->set_isarray(false);
24944    arg_target->set_type(GLMessage::DataType::ENUM);
24945    arg_target->add_intvalue((int)target);
24946
24947    // copy argument pname
24948    GLMessage_DataType *arg_pname = glmsg.add_args();
24949    arg_pname->set_isarray(false);
24950    arg_pname->set_type(GLMessage::DataType::ENUM);
24951    arg_pname->add_intvalue((int)pname);
24952
24953    // copy argument param
24954    GLMessage_DataType *arg_param = glmsg.add_args();
24955    arg_param->set_isarray(false);
24956    arg_param->set_type(GLMessage::DataType::INT);
24957    arg_param->add_intvalue(param);
24958
24959    // call function
24960    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24961    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24962    glContext->hooks->gl.glTexEnvxOES(target, pname, param);
24963    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24964    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24965
24966    void *pointerArgs[] = {
24967    };
24968
24969    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24970                              threadStartTime, threadEndTime,
24971                              &glmsg, pointerArgs);
24972    glContext->traceGLMessage(&glmsg);
24973}
24974
24975void GLTrace_glTexEnvxvOES(GLenum target, GLenum pname, const GLfixed * params) {
24976    GLMessage glmsg;
24977    GLTraceContext *glContext = getGLTraceContext();
24978
24979    glmsg.set_function(GLMessage::glTexEnvxvOES);
24980
24981    // copy argument target
24982    GLMessage_DataType *arg_target = glmsg.add_args();
24983    arg_target->set_isarray(false);
24984    arg_target->set_type(GLMessage::DataType::ENUM);
24985    arg_target->add_intvalue((int)target);
24986
24987    // copy argument pname
24988    GLMessage_DataType *arg_pname = glmsg.add_args();
24989    arg_pname->set_isarray(false);
24990    arg_pname->set_type(GLMessage::DataType::ENUM);
24991    arg_pname->add_intvalue((int)pname);
24992
24993    // copy argument params
24994    GLMessage_DataType *arg_params = glmsg.add_args();
24995    arg_params->set_isarray(false);
24996    arg_params->set_type(GLMessage::DataType::INT64);
24997    arg_params->add_int64value((uintptr_t)params);
24998
24999    // call function
25000    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25001    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25002    glContext->hooks->gl.glTexEnvxvOES(target, pname, params);
25003    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25004    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25005
25006    void *pointerArgs[] = {
25007        (void *) params,
25008    };
25009
25010    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25011                              threadStartTime, threadEndTime,
25012                              &glmsg, pointerArgs);
25013    glContext->traceGLMessage(&glmsg);
25014}
25015
25016void GLTrace_glTexParameterxOES(GLenum target, GLenum pname, GLfixed param) {
25017    GLMessage glmsg;
25018    GLTraceContext *glContext = getGLTraceContext();
25019
25020    glmsg.set_function(GLMessage::glTexParameterxOES);
25021
25022    // copy argument target
25023    GLMessage_DataType *arg_target = glmsg.add_args();
25024    arg_target->set_isarray(false);
25025    arg_target->set_type(GLMessage::DataType::ENUM);
25026    arg_target->add_intvalue((int)target);
25027
25028    // copy argument pname
25029    GLMessage_DataType *arg_pname = glmsg.add_args();
25030    arg_pname->set_isarray(false);
25031    arg_pname->set_type(GLMessage::DataType::ENUM);
25032    arg_pname->add_intvalue((int)pname);
25033
25034    // copy argument param
25035    GLMessage_DataType *arg_param = glmsg.add_args();
25036    arg_param->set_isarray(false);
25037    arg_param->set_type(GLMessage::DataType::INT);
25038    arg_param->add_intvalue(param);
25039
25040    // call function
25041    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25042    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25043    glContext->hooks->gl.glTexParameterxOES(target, pname, param);
25044    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25045    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25046
25047    void *pointerArgs[] = {
25048    };
25049
25050    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25051                              threadStartTime, threadEndTime,
25052                              &glmsg, pointerArgs);
25053    glContext->traceGLMessage(&glmsg);
25054}
25055
25056void GLTrace_glTexParameterxvOES(GLenum target, GLenum pname, const GLfixed * params) {
25057    GLMessage glmsg;
25058    GLTraceContext *glContext = getGLTraceContext();
25059
25060    glmsg.set_function(GLMessage::glTexParameterxvOES);
25061
25062    // copy argument target
25063    GLMessage_DataType *arg_target = glmsg.add_args();
25064    arg_target->set_isarray(false);
25065    arg_target->set_type(GLMessage::DataType::ENUM);
25066    arg_target->add_intvalue((int)target);
25067
25068    // copy argument pname
25069    GLMessage_DataType *arg_pname = glmsg.add_args();
25070    arg_pname->set_isarray(false);
25071    arg_pname->set_type(GLMessage::DataType::ENUM);
25072    arg_pname->add_intvalue((int)pname);
25073
25074    // copy argument params
25075    GLMessage_DataType *arg_params = glmsg.add_args();
25076    arg_params->set_isarray(false);
25077    arg_params->set_type(GLMessage::DataType::INT64);
25078    arg_params->add_int64value((uintptr_t)params);
25079
25080    // call function
25081    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25082    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25083    glContext->hooks->gl.glTexParameterxvOES(target, pname, params);
25084    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25085    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25086
25087    void *pointerArgs[] = {
25088        (void *) params,
25089    };
25090
25091    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25092                              threadStartTime, threadEndTime,
25093                              &glmsg, pointerArgs);
25094    glContext->traceGLMessage(&glmsg);
25095}
25096
25097void GLTrace_glTranslatexOES(GLfixed x, GLfixed y, GLfixed z) {
25098    GLMessage glmsg;
25099    GLTraceContext *glContext = getGLTraceContext();
25100
25101    glmsg.set_function(GLMessage::glTranslatexOES);
25102
25103    // copy argument x
25104    GLMessage_DataType *arg_x = glmsg.add_args();
25105    arg_x->set_isarray(false);
25106    arg_x->set_type(GLMessage::DataType::INT);
25107    arg_x->add_intvalue(x);
25108
25109    // copy argument y
25110    GLMessage_DataType *arg_y = glmsg.add_args();
25111    arg_y->set_isarray(false);
25112    arg_y->set_type(GLMessage::DataType::INT);
25113    arg_y->add_intvalue(y);
25114
25115    // copy argument z
25116    GLMessage_DataType *arg_z = glmsg.add_args();
25117    arg_z->set_isarray(false);
25118    arg_z->set_type(GLMessage::DataType::INT);
25119    arg_z->add_intvalue(z);
25120
25121    // call function
25122    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25123    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25124    glContext->hooks->gl.glTranslatexOES(x, y, z);
25125    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25126    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25127
25128    void *pointerArgs[] = {
25129    };
25130
25131    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25132                              threadStartTime, threadEndTime,
25133                              &glmsg, pointerArgs);
25134    glContext->traceGLMessage(&glmsg);
25135}
25136
25137void GLTrace_glGetLightxvOES(GLenum light, GLenum pname, GLfixed * params) {
25138    GLMessage glmsg;
25139    GLTraceContext *glContext = getGLTraceContext();
25140
25141    glmsg.set_function(GLMessage::glGetLightxvOES);
25142
25143    // copy argument light
25144    GLMessage_DataType *arg_light = glmsg.add_args();
25145    arg_light->set_isarray(false);
25146    arg_light->set_type(GLMessage::DataType::ENUM);
25147    arg_light->add_intvalue((int)light);
25148
25149    // copy argument pname
25150    GLMessage_DataType *arg_pname = glmsg.add_args();
25151    arg_pname->set_isarray(false);
25152    arg_pname->set_type(GLMessage::DataType::ENUM);
25153    arg_pname->add_intvalue((int)pname);
25154
25155    // copy argument params
25156    GLMessage_DataType *arg_params = glmsg.add_args();
25157    arg_params->set_isarray(false);
25158    arg_params->set_type(GLMessage::DataType::INT64);
25159    arg_params->add_int64value((uintptr_t)params);
25160
25161    // call function
25162    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25163    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25164    glContext->hooks->gl.glGetLightxvOES(light, pname, params);
25165    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25166    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25167
25168    void *pointerArgs[] = {
25169        (void *) params,
25170    };
25171
25172    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25173                              threadStartTime, threadEndTime,
25174                              &glmsg, pointerArgs);
25175    glContext->traceGLMessage(&glmsg);
25176}
25177
25178void GLTrace_glGetMaterialxvOES(GLenum face, GLenum pname, GLfixed * params) {
25179    GLMessage glmsg;
25180    GLTraceContext *glContext = getGLTraceContext();
25181
25182    glmsg.set_function(GLMessage::glGetMaterialxvOES);
25183
25184    // copy argument face
25185    GLMessage_DataType *arg_face = glmsg.add_args();
25186    arg_face->set_isarray(false);
25187    arg_face->set_type(GLMessage::DataType::ENUM);
25188    arg_face->add_intvalue((int)face);
25189
25190    // copy argument pname
25191    GLMessage_DataType *arg_pname = glmsg.add_args();
25192    arg_pname->set_isarray(false);
25193    arg_pname->set_type(GLMessage::DataType::ENUM);
25194    arg_pname->add_intvalue((int)pname);
25195
25196    // copy argument params
25197    GLMessage_DataType *arg_params = glmsg.add_args();
25198    arg_params->set_isarray(false);
25199    arg_params->set_type(GLMessage::DataType::INT64);
25200    arg_params->add_int64value((uintptr_t)params);
25201
25202    // call function
25203    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25204    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25205    glContext->hooks->gl.glGetMaterialxvOES(face, pname, params);
25206    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25207    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25208
25209    void *pointerArgs[] = {
25210        (void *) params,
25211    };
25212
25213    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25214                              threadStartTime, threadEndTime,
25215                              &glmsg, pointerArgs);
25216    glContext->traceGLMessage(&glmsg);
25217}
25218
25219void GLTrace_glPointParameterxOES(GLenum pname, GLfixed param) {
25220    GLMessage glmsg;
25221    GLTraceContext *glContext = getGLTraceContext();
25222
25223    glmsg.set_function(GLMessage::glPointParameterxOES);
25224
25225    // copy argument pname
25226    GLMessage_DataType *arg_pname = glmsg.add_args();
25227    arg_pname->set_isarray(false);
25228    arg_pname->set_type(GLMessage::DataType::ENUM);
25229    arg_pname->add_intvalue((int)pname);
25230
25231    // copy argument param
25232    GLMessage_DataType *arg_param = glmsg.add_args();
25233    arg_param->set_isarray(false);
25234    arg_param->set_type(GLMessage::DataType::INT);
25235    arg_param->add_intvalue(param);
25236
25237    // call function
25238    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25239    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25240    glContext->hooks->gl.glPointParameterxOES(pname, param);
25241    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25242    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25243
25244    void *pointerArgs[] = {
25245    };
25246
25247    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25248                              threadStartTime, threadEndTime,
25249                              &glmsg, pointerArgs);
25250    glContext->traceGLMessage(&glmsg);
25251}
25252
25253void GLTrace_glSampleCoveragexOES(GLclampx value, GLboolean invert) {
25254    GLMessage glmsg;
25255    GLTraceContext *glContext = getGLTraceContext();
25256
25257    glmsg.set_function(GLMessage::glSampleCoveragexOES);
25258
25259    // copy argument value
25260    GLMessage_DataType *arg_value = glmsg.add_args();
25261    arg_value->set_isarray(false);
25262    arg_value->set_type(GLMessage::DataType::INT);
25263    arg_value->add_intvalue(value);
25264
25265    // copy argument invert
25266    GLMessage_DataType *arg_invert = glmsg.add_args();
25267    arg_invert->set_isarray(false);
25268    arg_invert->set_type(GLMessage::DataType::BOOL);
25269    arg_invert->add_boolvalue(invert);
25270
25271    // call function
25272    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25273    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25274    glContext->hooks->gl.glSampleCoveragexOES(value, invert);
25275    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25276    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25277
25278    void *pointerArgs[] = {
25279    };
25280
25281    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25282                              threadStartTime, threadEndTime,
25283                              &glmsg, pointerArgs);
25284    glContext->traceGLMessage(&glmsg);
25285}
25286
25287void GLTrace_glGetTexGenxvOES(GLenum coord, GLenum pname, GLfixed * params) {
25288    GLMessage glmsg;
25289    GLTraceContext *glContext = getGLTraceContext();
25290
25291    glmsg.set_function(GLMessage::glGetTexGenxvOES);
25292
25293    // copy argument coord
25294    GLMessage_DataType *arg_coord = glmsg.add_args();
25295    arg_coord->set_isarray(false);
25296    arg_coord->set_type(GLMessage::DataType::ENUM);
25297    arg_coord->add_intvalue((int)coord);
25298
25299    // copy argument pname
25300    GLMessage_DataType *arg_pname = glmsg.add_args();
25301    arg_pname->set_isarray(false);
25302    arg_pname->set_type(GLMessage::DataType::ENUM);
25303    arg_pname->add_intvalue((int)pname);
25304
25305    // copy argument params
25306    GLMessage_DataType *arg_params = glmsg.add_args();
25307    arg_params->set_isarray(false);
25308    arg_params->set_type(GLMessage::DataType::INT64);
25309    arg_params->add_int64value((uintptr_t)params);
25310
25311    // call function
25312    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25313    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25314    glContext->hooks->gl.glGetTexGenxvOES(coord, pname, params);
25315    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25316    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25317
25318    void *pointerArgs[] = {
25319        (void *) params,
25320    };
25321
25322    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25323                              threadStartTime, threadEndTime,
25324                              &glmsg, pointerArgs);
25325    glContext->traceGLMessage(&glmsg);
25326}
25327
25328void GLTrace_glTexGenxOES(GLenum coord, GLenum pname, GLfixed param) {
25329    GLMessage glmsg;
25330    GLTraceContext *glContext = getGLTraceContext();
25331
25332    glmsg.set_function(GLMessage::glTexGenxOES);
25333
25334    // copy argument coord
25335    GLMessage_DataType *arg_coord = glmsg.add_args();
25336    arg_coord->set_isarray(false);
25337    arg_coord->set_type(GLMessage::DataType::ENUM);
25338    arg_coord->add_intvalue((int)coord);
25339
25340    // copy argument pname
25341    GLMessage_DataType *arg_pname = glmsg.add_args();
25342    arg_pname->set_isarray(false);
25343    arg_pname->set_type(GLMessage::DataType::ENUM);
25344    arg_pname->add_intvalue((int)pname);
25345
25346    // copy argument param
25347    GLMessage_DataType *arg_param = glmsg.add_args();
25348    arg_param->set_isarray(false);
25349    arg_param->set_type(GLMessage::DataType::INT);
25350    arg_param->add_intvalue(param);
25351
25352    // call function
25353    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25354    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25355    glContext->hooks->gl.glTexGenxOES(coord, pname, param);
25356    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25357    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25358
25359    void *pointerArgs[] = {
25360    };
25361
25362    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25363                              threadStartTime, threadEndTime,
25364                              &glmsg, pointerArgs);
25365    glContext->traceGLMessage(&glmsg);
25366}
25367
25368void GLTrace_glTexGenxvOES(GLenum coord, GLenum pname, const GLfixed * params) {
25369    GLMessage glmsg;
25370    GLTraceContext *glContext = getGLTraceContext();
25371
25372    glmsg.set_function(GLMessage::glTexGenxvOES);
25373
25374    // copy argument coord
25375    GLMessage_DataType *arg_coord = glmsg.add_args();
25376    arg_coord->set_isarray(false);
25377    arg_coord->set_type(GLMessage::DataType::ENUM);
25378    arg_coord->add_intvalue((int)coord);
25379
25380    // copy argument pname
25381    GLMessage_DataType *arg_pname = glmsg.add_args();
25382    arg_pname->set_isarray(false);
25383    arg_pname->set_type(GLMessage::DataType::ENUM);
25384    arg_pname->add_intvalue((int)pname);
25385
25386    // copy argument params
25387    GLMessage_DataType *arg_params = glmsg.add_args();
25388    arg_params->set_isarray(false);
25389    arg_params->set_type(GLMessage::DataType::INT64);
25390    arg_params->add_int64value((uintptr_t)params);
25391
25392    // call function
25393    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25394    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25395    glContext->hooks->gl.glTexGenxvOES(coord, pname, params);
25396    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25397    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25398
25399    void *pointerArgs[] = {
25400        (void *) params,
25401    };
25402
25403    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25404                              threadStartTime, threadEndTime,
25405                              &glmsg, pointerArgs);
25406    glContext->traceGLMessage(&glmsg);
25407}
25408
25409GLboolean GLTrace_glIsRenderbufferOES(GLuint renderbuffer) {
25410    GLMessage glmsg;
25411    GLTraceContext *glContext = getGLTraceContext();
25412
25413    glmsg.set_function(GLMessage::glIsRenderbufferOES);
25414
25415    // copy argument renderbuffer
25416    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
25417    arg_renderbuffer->set_isarray(false);
25418    arg_renderbuffer->set_type(GLMessage::DataType::INT);
25419    arg_renderbuffer->add_intvalue(renderbuffer);
25420
25421    // call function
25422    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25423    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25424    GLboolean retValue = glContext->hooks->gl.glIsRenderbufferOES(renderbuffer);
25425    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25426    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25427
25428    // set return value
25429    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
25430    rt->set_isarray(false);
25431    rt->set_type(GLMessage::DataType::BOOL);
25432    rt->add_boolvalue(retValue);
25433
25434    void *pointerArgs[] = {
25435    };
25436
25437    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25438                              threadStartTime, threadEndTime,
25439                              &glmsg, pointerArgs);
25440    glContext->traceGLMessage(&glmsg);
25441
25442    return retValue;
25443}
25444
25445void GLTrace_glBindRenderbufferOES(GLenum target, GLuint renderbuffer) {
25446    GLMessage glmsg;
25447    GLTraceContext *glContext = getGLTraceContext();
25448
25449    glmsg.set_function(GLMessage::glBindRenderbufferOES);
25450
25451    // copy argument target
25452    GLMessage_DataType *arg_target = glmsg.add_args();
25453    arg_target->set_isarray(false);
25454    arg_target->set_type(GLMessage::DataType::ENUM);
25455    arg_target->add_intvalue((int)target);
25456
25457    // copy argument renderbuffer
25458    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
25459    arg_renderbuffer->set_isarray(false);
25460    arg_renderbuffer->set_type(GLMessage::DataType::INT);
25461    arg_renderbuffer->add_intvalue(renderbuffer);
25462
25463    // call function
25464    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25465    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25466    glContext->hooks->gl.glBindRenderbufferOES(target, renderbuffer);
25467    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25468    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25469
25470    void *pointerArgs[] = {
25471    };
25472
25473    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25474                              threadStartTime, threadEndTime,
25475                              &glmsg, pointerArgs);
25476    glContext->traceGLMessage(&glmsg);
25477}
25478
25479void GLTrace_glDeleteRenderbuffersOES(GLsizei n, const GLuint * renderbuffers) {
25480    GLMessage glmsg;
25481    GLTraceContext *glContext = getGLTraceContext();
25482
25483    glmsg.set_function(GLMessage::glDeleteRenderbuffersOES);
25484
25485    // copy argument n
25486    GLMessage_DataType *arg_n = glmsg.add_args();
25487    arg_n->set_isarray(false);
25488    arg_n->set_type(GLMessage::DataType::INT);
25489    arg_n->add_intvalue(n);
25490
25491    // copy argument renderbuffers
25492    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
25493    arg_renderbuffers->set_isarray(false);
25494    arg_renderbuffers->set_type(GLMessage::DataType::INT64);
25495    arg_renderbuffers->add_int64value((uintptr_t)renderbuffers);
25496
25497    // call function
25498    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25499    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25500    glContext->hooks->gl.glDeleteRenderbuffersOES(n, renderbuffers);
25501    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25502    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25503
25504    void *pointerArgs[] = {
25505        (void *) renderbuffers,
25506    };
25507
25508    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25509                              threadStartTime, threadEndTime,
25510                              &glmsg, pointerArgs);
25511    glContext->traceGLMessage(&glmsg);
25512}
25513
25514void GLTrace_glGenRenderbuffersOES(GLsizei n, GLuint * renderbuffers) {
25515    GLMessage glmsg;
25516    GLTraceContext *glContext = getGLTraceContext();
25517
25518    glmsg.set_function(GLMessage::glGenRenderbuffersOES);
25519
25520    // copy argument n
25521    GLMessage_DataType *arg_n = glmsg.add_args();
25522    arg_n->set_isarray(false);
25523    arg_n->set_type(GLMessage::DataType::INT);
25524    arg_n->add_intvalue(n);
25525
25526    // copy argument renderbuffers
25527    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
25528    arg_renderbuffers->set_isarray(false);
25529    arg_renderbuffers->set_type(GLMessage::DataType::INT64);
25530    arg_renderbuffers->add_int64value((uintptr_t)renderbuffers);
25531
25532    // call function
25533    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25534    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25535    glContext->hooks->gl.glGenRenderbuffersOES(n, renderbuffers);
25536    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25537    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25538
25539    void *pointerArgs[] = {
25540        (void *) renderbuffers,
25541    };
25542
25543    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25544                              threadStartTime, threadEndTime,
25545                              &glmsg, pointerArgs);
25546    glContext->traceGLMessage(&glmsg);
25547}
25548
25549void GLTrace_glRenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) {
25550    GLMessage glmsg;
25551    GLTraceContext *glContext = getGLTraceContext();
25552
25553    glmsg.set_function(GLMessage::glRenderbufferStorageOES);
25554
25555    // copy argument target
25556    GLMessage_DataType *arg_target = glmsg.add_args();
25557    arg_target->set_isarray(false);
25558    arg_target->set_type(GLMessage::DataType::ENUM);
25559    arg_target->add_intvalue((int)target);
25560
25561    // copy argument internalformat
25562    GLMessage_DataType *arg_internalformat = glmsg.add_args();
25563    arg_internalformat->set_isarray(false);
25564    arg_internalformat->set_type(GLMessage::DataType::ENUM);
25565    arg_internalformat->add_intvalue((int)internalformat);
25566
25567    // copy argument width
25568    GLMessage_DataType *arg_width = glmsg.add_args();
25569    arg_width->set_isarray(false);
25570    arg_width->set_type(GLMessage::DataType::INT);
25571    arg_width->add_intvalue(width);
25572
25573    // copy argument height
25574    GLMessage_DataType *arg_height = glmsg.add_args();
25575    arg_height->set_isarray(false);
25576    arg_height->set_type(GLMessage::DataType::INT);
25577    arg_height->add_intvalue(height);
25578
25579    // call function
25580    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25581    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25582    glContext->hooks->gl.glRenderbufferStorageOES(target, internalformat, width, height);
25583    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25584    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25585
25586    void *pointerArgs[] = {
25587    };
25588
25589    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25590                              threadStartTime, threadEndTime,
25591                              &glmsg, pointerArgs);
25592    glContext->traceGLMessage(&glmsg);
25593}
25594
25595void GLTrace_glGetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint * params) {
25596    GLMessage glmsg;
25597    GLTraceContext *glContext = getGLTraceContext();
25598
25599    glmsg.set_function(GLMessage::glGetRenderbufferParameterivOES);
25600
25601    // copy argument target
25602    GLMessage_DataType *arg_target = glmsg.add_args();
25603    arg_target->set_isarray(false);
25604    arg_target->set_type(GLMessage::DataType::ENUM);
25605    arg_target->add_intvalue((int)target);
25606
25607    // copy argument pname
25608    GLMessage_DataType *arg_pname = glmsg.add_args();
25609    arg_pname->set_isarray(false);
25610    arg_pname->set_type(GLMessage::DataType::ENUM);
25611    arg_pname->add_intvalue((int)pname);
25612
25613    // copy argument params
25614    GLMessage_DataType *arg_params = glmsg.add_args();
25615    arg_params->set_isarray(false);
25616    arg_params->set_type(GLMessage::DataType::INT64);
25617    arg_params->add_int64value((uintptr_t)params);
25618
25619    // call function
25620    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25621    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25622    glContext->hooks->gl.glGetRenderbufferParameterivOES(target, pname, params);
25623    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25624    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25625
25626    void *pointerArgs[] = {
25627        (void *) params,
25628    };
25629
25630    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25631                              threadStartTime, threadEndTime,
25632                              &glmsg, pointerArgs);
25633    glContext->traceGLMessage(&glmsg);
25634}
25635
25636GLboolean GLTrace_glIsFramebufferOES(GLuint framebuffer) {
25637    GLMessage glmsg;
25638    GLTraceContext *glContext = getGLTraceContext();
25639
25640    glmsg.set_function(GLMessage::glIsFramebufferOES);
25641
25642    // copy argument framebuffer
25643    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
25644    arg_framebuffer->set_isarray(false);
25645    arg_framebuffer->set_type(GLMessage::DataType::INT);
25646    arg_framebuffer->add_intvalue(framebuffer);
25647
25648    // call function
25649    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25650    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25651    GLboolean retValue = glContext->hooks->gl.glIsFramebufferOES(framebuffer);
25652    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25653    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25654
25655    // set return value
25656    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
25657    rt->set_isarray(false);
25658    rt->set_type(GLMessage::DataType::BOOL);
25659    rt->add_boolvalue(retValue);
25660
25661    void *pointerArgs[] = {
25662    };
25663
25664    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25665                              threadStartTime, threadEndTime,
25666                              &glmsg, pointerArgs);
25667    glContext->traceGLMessage(&glmsg);
25668
25669    return retValue;
25670}
25671
25672void GLTrace_glBindFramebufferOES(GLenum target, GLuint framebuffer) {
25673    GLMessage glmsg;
25674    GLTraceContext *glContext = getGLTraceContext();
25675
25676    glmsg.set_function(GLMessage::glBindFramebufferOES);
25677
25678    // copy argument target
25679    GLMessage_DataType *arg_target = glmsg.add_args();
25680    arg_target->set_isarray(false);
25681    arg_target->set_type(GLMessage::DataType::ENUM);
25682    arg_target->add_intvalue((int)target);
25683
25684    // copy argument framebuffer
25685    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
25686    arg_framebuffer->set_isarray(false);
25687    arg_framebuffer->set_type(GLMessage::DataType::INT);
25688    arg_framebuffer->add_intvalue(framebuffer);
25689
25690    // call function
25691    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25692    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25693    glContext->hooks->gl.glBindFramebufferOES(target, framebuffer);
25694    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25695    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25696
25697    void *pointerArgs[] = {
25698    };
25699
25700    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25701                              threadStartTime, threadEndTime,
25702                              &glmsg, pointerArgs);
25703    glContext->traceGLMessage(&glmsg);
25704}
25705
25706void GLTrace_glDeleteFramebuffersOES(GLsizei n, const GLuint * framebuffers) {
25707    GLMessage glmsg;
25708    GLTraceContext *glContext = getGLTraceContext();
25709
25710    glmsg.set_function(GLMessage::glDeleteFramebuffersOES);
25711
25712    // copy argument n
25713    GLMessage_DataType *arg_n = glmsg.add_args();
25714    arg_n->set_isarray(false);
25715    arg_n->set_type(GLMessage::DataType::INT);
25716    arg_n->add_intvalue(n);
25717
25718    // copy argument framebuffers
25719    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
25720    arg_framebuffers->set_isarray(false);
25721    arg_framebuffers->set_type(GLMessage::DataType::INT64);
25722    arg_framebuffers->add_int64value((uintptr_t)framebuffers);
25723
25724    // call function
25725    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25726    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25727    glContext->hooks->gl.glDeleteFramebuffersOES(n, framebuffers);
25728    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25729    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25730
25731    void *pointerArgs[] = {
25732        (void *) framebuffers,
25733    };
25734
25735    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25736                              threadStartTime, threadEndTime,
25737                              &glmsg, pointerArgs);
25738    glContext->traceGLMessage(&glmsg);
25739}
25740
25741void GLTrace_glGenFramebuffersOES(GLsizei n, GLuint * framebuffers) {
25742    GLMessage glmsg;
25743    GLTraceContext *glContext = getGLTraceContext();
25744
25745    glmsg.set_function(GLMessage::glGenFramebuffersOES);
25746
25747    // copy argument n
25748    GLMessage_DataType *arg_n = glmsg.add_args();
25749    arg_n->set_isarray(false);
25750    arg_n->set_type(GLMessage::DataType::INT);
25751    arg_n->add_intvalue(n);
25752
25753    // copy argument framebuffers
25754    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
25755    arg_framebuffers->set_isarray(false);
25756    arg_framebuffers->set_type(GLMessage::DataType::INT64);
25757    arg_framebuffers->add_int64value((uintptr_t)framebuffers);
25758
25759    // call function
25760    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25761    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25762    glContext->hooks->gl.glGenFramebuffersOES(n, framebuffers);
25763    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25764    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25765
25766    void *pointerArgs[] = {
25767        (void *) framebuffers,
25768    };
25769
25770    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25771                              threadStartTime, threadEndTime,
25772                              &glmsg, pointerArgs);
25773    glContext->traceGLMessage(&glmsg);
25774}
25775
25776GLenum GLTrace_glCheckFramebufferStatusOES(GLenum target) {
25777    GLMessage glmsg;
25778    GLTraceContext *glContext = getGLTraceContext();
25779
25780    glmsg.set_function(GLMessage::glCheckFramebufferStatusOES);
25781
25782    // copy argument target
25783    GLMessage_DataType *arg_target = glmsg.add_args();
25784    arg_target->set_isarray(false);
25785    arg_target->set_type(GLMessage::DataType::ENUM);
25786    arg_target->add_intvalue((int)target);
25787
25788    // call function
25789    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25790    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25791    GLenum retValue = glContext->hooks->gl.glCheckFramebufferStatusOES(target);
25792    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25793    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25794
25795    // set return value
25796    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
25797    rt->set_isarray(false);
25798    rt->set_type(GLMessage::DataType::ENUM);
25799    rt->add_intvalue((int)retValue);
25800
25801    void *pointerArgs[] = {
25802    };
25803
25804    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25805                              threadStartTime, threadEndTime,
25806                              &glmsg, pointerArgs);
25807    glContext->traceGLMessage(&glmsg);
25808
25809    return retValue;
25810}
25811
25812void GLTrace_glFramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) {
25813    GLMessage glmsg;
25814    GLTraceContext *glContext = getGLTraceContext();
25815
25816    glmsg.set_function(GLMessage::glFramebufferRenderbufferOES);
25817
25818    // copy argument target
25819    GLMessage_DataType *arg_target = glmsg.add_args();
25820    arg_target->set_isarray(false);
25821    arg_target->set_type(GLMessage::DataType::ENUM);
25822    arg_target->add_intvalue((int)target);
25823
25824    // copy argument attachment
25825    GLMessage_DataType *arg_attachment = glmsg.add_args();
25826    arg_attachment->set_isarray(false);
25827    arg_attachment->set_type(GLMessage::DataType::ENUM);
25828    arg_attachment->add_intvalue((int)attachment);
25829
25830    // copy argument renderbuffertarget
25831    GLMessage_DataType *arg_renderbuffertarget = glmsg.add_args();
25832    arg_renderbuffertarget->set_isarray(false);
25833    arg_renderbuffertarget->set_type(GLMessage::DataType::ENUM);
25834    arg_renderbuffertarget->add_intvalue((int)renderbuffertarget);
25835
25836    // copy argument renderbuffer
25837    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
25838    arg_renderbuffer->set_isarray(false);
25839    arg_renderbuffer->set_type(GLMessage::DataType::INT);
25840    arg_renderbuffer->add_intvalue(renderbuffer);
25841
25842    // call function
25843    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25844    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25845    glContext->hooks->gl.glFramebufferRenderbufferOES(target, attachment, renderbuffertarget, renderbuffer);
25846    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25847    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25848
25849    void *pointerArgs[] = {
25850    };
25851
25852    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25853                              threadStartTime, threadEndTime,
25854                              &glmsg, pointerArgs);
25855    glContext->traceGLMessage(&glmsg);
25856}
25857
25858void GLTrace_glFramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) {
25859    GLMessage glmsg;
25860    GLTraceContext *glContext = getGLTraceContext();
25861
25862    glmsg.set_function(GLMessage::glFramebufferTexture2DOES);
25863
25864    // copy argument target
25865    GLMessage_DataType *arg_target = glmsg.add_args();
25866    arg_target->set_isarray(false);
25867    arg_target->set_type(GLMessage::DataType::ENUM);
25868    arg_target->add_intvalue((int)target);
25869
25870    // copy argument attachment
25871    GLMessage_DataType *arg_attachment = glmsg.add_args();
25872    arg_attachment->set_isarray(false);
25873    arg_attachment->set_type(GLMessage::DataType::ENUM);
25874    arg_attachment->add_intvalue((int)attachment);
25875
25876    // copy argument textarget
25877    GLMessage_DataType *arg_textarget = glmsg.add_args();
25878    arg_textarget->set_isarray(false);
25879    arg_textarget->set_type(GLMessage::DataType::ENUM);
25880    arg_textarget->add_intvalue((int)textarget);
25881
25882    // copy argument texture
25883    GLMessage_DataType *arg_texture = glmsg.add_args();
25884    arg_texture->set_isarray(false);
25885    arg_texture->set_type(GLMessage::DataType::INT);
25886    arg_texture->add_intvalue(texture);
25887
25888    // copy argument level
25889    GLMessage_DataType *arg_level = glmsg.add_args();
25890    arg_level->set_isarray(false);
25891    arg_level->set_type(GLMessage::DataType::INT);
25892    arg_level->add_intvalue(level);
25893
25894    // call function
25895    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25896    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25897    glContext->hooks->gl.glFramebufferTexture2DOES(target, attachment, textarget, texture, level);
25898    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25899    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25900
25901    void *pointerArgs[] = {
25902    };
25903
25904    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25905                              threadStartTime, threadEndTime,
25906                              &glmsg, pointerArgs);
25907    glContext->traceGLMessage(&glmsg);
25908}
25909
25910void GLTrace_glGetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint * params) {
25911    GLMessage glmsg;
25912    GLTraceContext *glContext = getGLTraceContext();
25913
25914    glmsg.set_function(GLMessage::glGetFramebufferAttachmentParameterivOES);
25915
25916    // copy argument target
25917    GLMessage_DataType *arg_target = glmsg.add_args();
25918    arg_target->set_isarray(false);
25919    arg_target->set_type(GLMessage::DataType::ENUM);
25920    arg_target->add_intvalue((int)target);
25921
25922    // copy argument attachment
25923    GLMessage_DataType *arg_attachment = glmsg.add_args();
25924    arg_attachment->set_isarray(false);
25925    arg_attachment->set_type(GLMessage::DataType::ENUM);
25926    arg_attachment->add_intvalue((int)attachment);
25927
25928    // copy argument pname
25929    GLMessage_DataType *arg_pname = glmsg.add_args();
25930    arg_pname->set_isarray(false);
25931    arg_pname->set_type(GLMessage::DataType::ENUM);
25932    arg_pname->add_intvalue((int)pname);
25933
25934    // copy argument params
25935    GLMessage_DataType *arg_params = glmsg.add_args();
25936    arg_params->set_isarray(false);
25937    arg_params->set_type(GLMessage::DataType::INT64);
25938    arg_params->add_int64value((uintptr_t)params);
25939
25940    // call function
25941    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25942    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25943    glContext->hooks->gl.glGetFramebufferAttachmentParameterivOES(target, attachment, pname, params);
25944    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25945    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25946
25947    void *pointerArgs[] = {
25948        (void *) params,
25949    };
25950
25951    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25952                              threadStartTime, threadEndTime,
25953                              &glmsg, pointerArgs);
25954    glContext->traceGLMessage(&glmsg);
25955}
25956
25957void GLTrace_glGenerateMipmapOES(GLenum target) {
25958    GLMessage glmsg;
25959    GLTraceContext *glContext = getGLTraceContext();
25960
25961    glmsg.set_function(GLMessage::glGenerateMipmapOES);
25962
25963    // copy argument target
25964    GLMessage_DataType *arg_target = glmsg.add_args();
25965    arg_target->set_isarray(false);
25966    arg_target->set_type(GLMessage::DataType::ENUM);
25967    arg_target->add_intvalue((int)target);
25968
25969    // call function
25970    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25971    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25972    glContext->hooks->gl.glGenerateMipmapOES(target);
25973    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25974    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25975
25976    void *pointerArgs[] = {
25977    };
25978
25979    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25980                              threadStartTime, threadEndTime,
25981                              &glmsg, pointerArgs);
25982    glContext->traceGLMessage(&glmsg);
25983}
25984
25985void GLTrace_glCurrentPaletteMatrixOES(GLuint matrixpaletteindex) {
25986    GLMessage glmsg;
25987    GLTraceContext *glContext = getGLTraceContext();
25988
25989    glmsg.set_function(GLMessage::glCurrentPaletteMatrixOES);
25990
25991    // copy argument matrixpaletteindex
25992    GLMessage_DataType *arg_matrixpaletteindex = glmsg.add_args();
25993    arg_matrixpaletteindex->set_isarray(false);
25994    arg_matrixpaletteindex->set_type(GLMessage::DataType::INT);
25995    arg_matrixpaletteindex->add_intvalue(matrixpaletteindex);
25996
25997    // call function
25998    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25999    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26000    glContext->hooks->gl.glCurrentPaletteMatrixOES(matrixpaletteindex);
26001    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26002    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26003
26004    void *pointerArgs[] = {
26005    };
26006
26007    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26008                              threadStartTime, threadEndTime,
26009                              &glmsg, pointerArgs);
26010    glContext->traceGLMessage(&glmsg);
26011}
26012
26013void GLTrace_glLoadPaletteFromModelViewMatrixOES(void) {
26014    GLMessage glmsg;
26015    GLTraceContext *glContext = getGLTraceContext();
26016
26017    glmsg.set_function(GLMessage::glLoadPaletteFromModelViewMatrixOES);
26018
26019    // call function
26020    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26021    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26022    glContext->hooks->gl.glLoadPaletteFromModelViewMatrixOES();
26023    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26024    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26025
26026    void *pointerArgs[] = {
26027    };
26028
26029    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26030                              threadStartTime, threadEndTime,
26031                              &glmsg, pointerArgs);
26032    glContext->traceGLMessage(&glmsg);
26033}
26034
26035void GLTrace_glMatrixIndexPointerOES(GLint size, GLenum type, GLsizei stride, const void * pointer) {
26036    GLMessage glmsg;
26037    GLTraceContext *glContext = getGLTraceContext();
26038
26039    glmsg.set_function(GLMessage::glMatrixIndexPointerOES);
26040
26041    // copy argument size
26042    GLMessage_DataType *arg_size = glmsg.add_args();
26043    arg_size->set_isarray(false);
26044    arg_size->set_type(GLMessage::DataType::INT);
26045    arg_size->add_intvalue(size);
26046
26047    // copy argument type
26048    GLMessage_DataType *arg_type = glmsg.add_args();
26049    arg_type->set_isarray(false);
26050    arg_type->set_type(GLMessage::DataType::ENUM);
26051    arg_type->add_intvalue((int)type);
26052
26053    // copy argument stride
26054    GLMessage_DataType *arg_stride = glmsg.add_args();
26055    arg_stride->set_isarray(false);
26056    arg_stride->set_type(GLMessage::DataType::INT);
26057    arg_stride->add_intvalue(stride);
26058
26059    // copy argument pointer
26060    GLMessage_DataType *arg_pointer = glmsg.add_args();
26061    arg_pointer->set_isarray(false);
26062    arg_pointer->set_type(GLMessage::DataType::INT64);
26063    arg_pointer->add_int64value((uintptr_t)pointer);
26064
26065    // call function
26066    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26067    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26068    glContext->hooks->gl.glMatrixIndexPointerOES(size, type, stride, pointer);
26069    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26070    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26071
26072    void *pointerArgs[] = {
26073        (void *) pointer,
26074    };
26075
26076    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26077                              threadStartTime, threadEndTime,
26078                              &glmsg, pointerArgs);
26079    glContext->traceGLMessage(&glmsg);
26080}
26081
26082void GLTrace_glWeightPointerOES(GLint size, GLenum type, GLsizei stride, const void * pointer) {
26083    GLMessage glmsg;
26084    GLTraceContext *glContext = getGLTraceContext();
26085
26086    glmsg.set_function(GLMessage::glWeightPointerOES);
26087
26088    // copy argument size
26089    GLMessage_DataType *arg_size = glmsg.add_args();
26090    arg_size->set_isarray(false);
26091    arg_size->set_type(GLMessage::DataType::INT);
26092    arg_size->add_intvalue(size);
26093
26094    // copy argument type
26095    GLMessage_DataType *arg_type = glmsg.add_args();
26096    arg_type->set_isarray(false);
26097    arg_type->set_type(GLMessage::DataType::ENUM);
26098    arg_type->add_intvalue((int)type);
26099
26100    // copy argument stride
26101    GLMessage_DataType *arg_stride = glmsg.add_args();
26102    arg_stride->set_isarray(false);
26103    arg_stride->set_type(GLMessage::DataType::INT);
26104    arg_stride->add_intvalue(stride);
26105
26106    // copy argument pointer
26107    GLMessage_DataType *arg_pointer = glmsg.add_args();
26108    arg_pointer->set_isarray(false);
26109    arg_pointer->set_type(GLMessage::DataType::INT64);
26110    arg_pointer->add_int64value((uintptr_t)pointer);
26111
26112    // call function
26113    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26114    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26115    glContext->hooks->gl.glWeightPointerOES(size, type, stride, pointer);
26116    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26117    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26118
26119    void *pointerArgs[] = {
26120        (void *) pointer,
26121    };
26122
26123    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26124                              threadStartTime, threadEndTime,
26125                              &glmsg, pointerArgs);
26126    glContext->traceGLMessage(&glmsg);
26127}
26128
26129void GLTrace_glPointSizePointerOES(GLenum type, GLsizei stride, const void * pointer) {
26130    GLMessage glmsg;
26131    GLTraceContext *glContext = getGLTraceContext();
26132
26133    glmsg.set_function(GLMessage::glPointSizePointerOES);
26134
26135    // copy argument type
26136    GLMessage_DataType *arg_type = glmsg.add_args();
26137    arg_type->set_isarray(false);
26138    arg_type->set_type(GLMessage::DataType::ENUM);
26139    arg_type->add_intvalue((int)type);
26140
26141    // copy argument stride
26142    GLMessage_DataType *arg_stride = glmsg.add_args();
26143    arg_stride->set_isarray(false);
26144    arg_stride->set_type(GLMessage::DataType::INT);
26145    arg_stride->add_intvalue(stride);
26146
26147    // copy argument pointer
26148    GLMessage_DataType *arg_pointer = glmsg.add_args();
26149    arg_pointer->set_isarray(false);
26150    arg_pointer->set_type(GLMessage::DataType::INT64);
26151    arg_pointer->add_int64value((uintptr_t)pointer);
26152
26153    // call function
26154    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26155    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26156    glContext->hooks->gl.glPointSizePointerOES(type, stride, pointer);
26157    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26158    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26159
26160    void *pointerArgs[] = {
26161        (void *) pointer,
26162    };
26163
26164    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26165                              threadStartTime, threadEndTime,
26166                              &glmsg, pointerArgs);
26167    glContext->traceGLMessage(&glmsg);
26168}
26169
26170GLbitfield GLTrace_glQueryMatrixxOES(GLfixed * mantissa, GLint * exponent) {
26171    GLMessage glmsg;
26172    GLTraceContext *glContext = getGLTraceContext();
26173
26174    glmsg.set_function(GLMessage::glQueryMatrixxOES);
26175
26176    // copy argument mantissa
26177    GLMessage_DataType *arg_mantissa = glmsg.add_args();
26178    arg_mantissa->set_isarray(false);
26179    arg_mantissa->set_type(GLMessage::DataType::INT64);
26180    arg_mantissa->add_int64value((uintptr_t)mantissa);
26181
26182    // copy argument exponent
26183    GLMessage_DataType *arg_exponent = glmsg.add_args();
26184    arg_exponent->set_isarray(false);
26185    arg_exponent->set_type(GLMessage::DataType::INT64);
26186    arg_exponent->add_int64value((uintptr_t)exponent);
26187
26188    // call function
26189    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26190    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26191    GLbitfield retValue = glContext->hooks->gl.glQueryMatrixxOES(mantissa, exponent);
26192    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26193    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26194
26195    // set return value
26196    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
26197    rt->set_isarray(false);
26198    rt->set_type(GLMessage::DataType::INT);
26199    rt->add_intvalue(retValue);
26200
26201    void *pointerArgs[] = {
26202        (void *) mantissa,
26203        (void *) exponent,
26204    };
26205
26206    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26207                              threadStartTime, threadEndTime,
26208                              &glmsg, pointerArgs);
26209    glContext->traceGLMessage(&glmsg);
26210
26211    return retValue;
26212}
26213
26214void GLTrace_glClearDepthfOES(GLclampf depth) {
26215    GLMessage glmsg;
26216    GLTraceContext *glContext = getGLTraceContext();
26217
26218    glmsg.set_function(GLMessage::glClearDepthfOES);
26219
26220    // copy argument depth
26221    GLMessage_DataType *arg_depth = glmsg.add_args();
26222    arg_depth->set_isarray(false);
26223    arg_depth->set_type(GLMessage::DataType::FLOAT);
26224    arg_depth->add_floatvalue(depth);
26225
26226    // call function
26227    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26228    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26229    glContext->hooks->gl.glClearDepthfOES(depth);
26230    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26231    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26232
26233    void *pointerArgs[] = {
26234    };
26235
26236    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26237                              threadStartTime, threadEndTime,
26238                              &glmsg, pointerArgs);
26239    glContext->traceGLMessage(&glmsg);
26240}
26241
26242void GLTrace_glClipPlanefOES(GLenum plane, const GLfloat * equation) {
26243    GLMessage glmsg;
26244    GLTraceContext *glContext = getGLTraceContext();
26245
26246    glmsg.set_function(GLMessage::glClipPlanefOES);
26247
26248    // copy argument plane
26249    GLMessage_DataType *arg_plane = glmsg.add_args();
26250    arg_plane->set_isarray(false);
26251    arg_plane->set_type(GLMessage::DataType::ENUM);
26252    arg_plane->add_intvalue((int)plane);
26253
26254    // copy argument equation
26255    GLMessage_DataType *arg_equation = glmsg.add_args();
26256    arg_equation->set_isarray(false);
26257    arg_equation->set_type(GLMessage::DataType::INT64);
26258    arg_equation->add_int64value((uintptr_t)equation);
26259
26260    // call function
26261    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26262    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26263    glContext->hooks->gl.glClipPlanefOES(plane, equation);
26264    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26265    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26266
26267    void *pointerArgs[] = {
26268        (void *) equation,
26269    };
26270
26271    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26272                              threadStartTime, threadEndTime,
26273                              &glmsg, pointerArgs);
26274    glContext->traceGLMessage(&glmsg);
26275}
26276
26277void GLTrace_glDepthRangefOES(GLclampf n, GLclampf f) {
26278    GLMessage glmsg;
26279    GLTraceContext *glContext = getGLTraceContext();
26280
26281    glmsg.set_function(GLMessage::glDepthRangefOES);
26282
26283    // copy argument n
26284    GLMessage_DataType *arg_n = glmsg.add_args();
26285    arg_n->set_isarray(false);
26286    arg_n->set_type(GLMessage::DataType::FLOAT);
26287    arg_n->add_floatvalue(n);
26288
26289    // copy argument f
26290    GLMessage_DataType *arg_f = glmsg.add_args();
26291    arg_f->set_isarray(false);
26292    arg_f->set_type(GLMessage::DataType::FLOAT);
26293    arg_f->add_floatvalue(f);
26294
26295    // call function
26296    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26297    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26298    glContext->hooks->gl.glDepthRangefOES(n, f);
26299    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26300    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26301
26302    void *pointerArgs[] = {
26303    };
26304
26305    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26306                              threadStartTime, threadEndTime,
26307                              &glmsg, pointerArgs);
26308    glContext->traceGLMessage(&glmsg);
26309}
26310
26311void GLTrace_glFrustumfOES(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f) {
26312    GLMessage glmsg;
26313    GLTraceContext *glContext = getGLTraceContext();
26314
26315    glmsg.set_function(GLMessage::glFrustumfOES);
26316
26317    // copy argument l
26318    GLMessage_DataType *arg_l = glmsg.add_args();
26319    arg_l->set_isarray(false);
26320    arg_l->set_type(GLMessage::DataType::FLOAT);
26321    arg_l->add_floatvalue(l);
26322
26323    // copy argument r
26324    GLMessage_DataType *arg_r = glmsg.add_args();
26325    arg_r->set_isarray(false);
26326    arg_r->set_type(GLMessage::DataType::FLOAT);
26327    arg_r->add_floatvalue(r);
26328
26329    // copy argument b
26330    GLMessage_DataType *arg_b = glmsg.add_args();
26331    arg_b->set_isarray(false);
26332    arg_b->set_type(GLMessage::DataType::FLOAT);
26333    arg_b->add_floatvalue(b);
26334
26335    // copy argument t
26336    GLMessage_DataType *arg_t = glmsg.add_args();
26337    arg_t->set_isarray(false);
26338    arg_t->set_type(GLMessage::DataType::FLOAT);
26339    arg_t->add_floatvalue(t);
26340
26341    // copy argument n
26342    GLMessage_DataType *arg_n = glmsg.add_args();
26343    arg_n->set_isarray(false);
26344    arg_n->set_type(GLMessage::DataType::FLOAT);
26345    arg_n->add_floatvalue(n);
26346
26347    // copy argument f
26348    GLMessage_DataType *arg_f = glmsg.add_args();
26349    arg_f->set_isarray(false);
26350    arg_f->set_type(GLMessage::DataType::FLOAT);
26351    arg_f->add_floatvalue(f);
26352
26353    // call function
26354    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26355    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26356    glContext->hooks->gl.glFrustumfOES(l, r, b, t, n, f);
26357    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26358    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26359
26360    void *pointerArgs[] = {
26361    };
26362
26363    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26364                              threadStartTime, threadEndTime,
26365                              &glmsg, pointerArgs);
26366    glContext->traceGLMessage(&glmsg);
26367}
26368
26369void GLTrace_glGetClipPlanefOES(GLenum plane, GLfloat * equation) {
26370    GLMessage glmsg;
26371    GLTraceContext *glContext = getGLTraceContext();
26372
26373    glmsg.set_function(GLMessage::glGetClipPlanefOES);
26374
26375    // copy argument plane
26376    GLMessage_DataType *arg_plane = glmsg.add_args();
26377    arg_plane->set_isarray(false);
26378    arg_plane->set_type(GLMessage::DataType::ENUM);
26379    arg_plane->add_intvalue((int)plane);
26380
26381    // copy argument equation
26382    GLMessage_DataType *arg_equation = glmsg.add_args();
26383    arg_equation->set_isarray(false);
26384    arg_equation->set_type(GLMessage::DataType::INT64);
26385    arg_equation->add_int64value((uintptr_t)equation);
26386
26387    // call function
26388    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26389    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26390    glContext->hooks->gl.glGetClipPlanefOES(plane, equation);
26391    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26392    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26393
26394    void *pointerArgs[] = {
26395        (void *) equation,
26396    };
26397
26398    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26399                              threadStartTime, threadEndTime,
26400                              &glmsg, pointerArgs);
26401    glContext->traceGLMessage(&glmsg);
26402}
26403
26404void GLTrace_glOrthofOES(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f) {
26405    GLMessage glmsg;
26406    GLTraceContext *glContext = getGLTraceContext();
26407
26408    glmsg.set_function(GLMessage::glOrthofOES);
26409
26410    // copy argument l
26411    GLMessage_DataType *arg_l = glmsg.add_args();
26412    arg_l->set_isarray(false);
26413    arg_l->set_type(GLMessage::DataType::FLOAT);
26414    arg_l->add_floatvalue(l);
26415
26416    // copy argument r
26417    GLMessage_DataType *arg_r = glmsg.add_args();
26418    arg_r->set_isarray(false);
26419    arg_r->set_type(GLMessage::DataType::FLOAT);
26420    arg_r->add_floatvalue(r);
26421
26422    // copy argument b
26423    GLMessage_DataType *arg_b = glmsg.add_args();
26424    arg_b->set_isarray(false);
26425    arg_b->set_type(GLMessage::DataType::FLOAT);
26426    arg_b->add_floatvalue(b);
26427
26428    // copy argument t
26429    GLMessage_DataType *arg_t = glmsg.add_args();
26430    arg_t->set_isarray(false);
26431    arg_t->set_type(GLMessage::DataType::FLOAT);
26432    arg_t->add_floatvalue(t);
26433
26434    // copy argument n
26435    GLMessage_DataType *arg_n = glmsg.add_args();
26436    arg_n->set_isarray(false);
26437    arg_n->set_type(GLMessage::DataType::FLOAT);
26438    arg_n->add_floatvalue(n);
26439
26440    // copy argument f
26441    GLMessage_DataType *arg_f = glmsg.add_args();
26442    arg_f->set_isarray(false);
26443    arg_f->set_type(GLMessage::DataType::FLOAT);
26444    arg_f->add_floatvalue(f);
26445
26446    // call function
26447    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26448    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26449    glContext->hooks->gl.glOrthofOES(l, r, b, t, n, f);
26450    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26451    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26452
26453    void *pointerArgs[] = {
26454    };
26455
26456    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26457                              threadStartTime, threadEndTime,
26458                              &glmsg, pointerArgs);
26459    glContext->traceGLMessage(&glmsg);
26460}
26461
26462void GLTrace_glTexGenfOES(GLenum coord, GLenum pname, GLfloat param) {
26463    GLMessage glmsg;
26464    GLTraceContext *glContext = getGLTraceContext();
26465
26466    glmsg.set_function(GLMessage::glTexGenfOES);
26467
26468    // copy argument coord
26469    GLMessage_DataType *arg_coord = glmsg.add_args();
26470    arg_coord->set_isarray(false);
26471    arg_coord->set_type(GLMessage::DataType::ENUM);
26472    arg_coord->add_intvalue((int)coord);
26473
26474    // copy argument pname
26475    GLMessage_DataType *arg_pname = glmsg.add_args();
26476    arg_pname->set_isarray(false);
26477    arg_pname->set_type(GLMessage::DataType::ENUM);
26478    arg_pname->add_intvalue((int)pname);
26479
26480    // copy argument param
26481    GLMessage_DataType *arg_param = glmsg.add_args();
26482    arg_param->set_isarray(false);
26483    arg_param->set_type(GLMessage::DataType::FLOAT);
26484    arg_param->add_floatvalue(param);
26485
26486    // call function
26487    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26488    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26489    glContext->hooks->gl.glTexGenfOES(coord, pname, param);
26490    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26491    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26492
26493    void *pointerArgs[] = {
26494    };
26495
26496    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26497                              threadStartTime, threadEndTime,
26498                              &glmsg, pointerArgs);
26499    glContext->traceGLMessage(&glmsg);
26500}
26501
26502void GLTrace_glTexGenfvOES(GLenum coord, GLenum pname, const GLfloat * params) {
26503    GLMessage glmsg;
26504    GLTraceContext *glContext = getGLTraceContext();
26505
26506    glmsg.set_function(GLMessage::glTexGenfvOES);
26507
26508    // copy argument coord
26509    GLMessage_DataType *arg_coord = glmsg.add_args();
26510    arg_coord->set_isarray(false);
26511    arg_coord->set_type(GLMessage::DataType::ENUM);
26512    arg_coord->add_intvalue((int)coord);
26513
26514    // copy argument pname
26515    GLMessage_DataType *arg_pname = glmsg.add_args();
26516    arg_pname->set_isarray(false);
26517    arg_pname->set_type(GLMessage::DataType::ENUM);
26518    arg_pname->add_intvalue((int)pname);
26519
26520    // copy argument params
26521    GLMessage_DataType *arg_params = glmsg.add_args();
26522    arg_params->set_isarray(false);
26523    arg_params->set_type(GLMessage::DataType::INT64);
26524    arg_params->add_int64value((uintptr_t)params);
26525
26526    // call function
26527    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26528    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26529    glContext->hooks->gl.glTexGenfvOES(coord, pname, params);
26530    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26531    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26532
26533    void *pointerArgs[] = {
26534        (void *) params,
26535    };
26536
26537    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26538                              threadStartTime, threadEndTime,
26539                              &glmsg, pointerArgs);
26540    glContext->traceGLMessage(&glmsg);
26541}
26542
26543void GLTrace_glTexGeniOES(GLenum coord, GLenum pname, GLint param) {
26544    GLMessage glmsg;
26545    GLTraceContext *glContext = getGLTraceContext();
26546
26547    glmsg.set_function(GLMessage::glTexGeniOES);
26548
26549    // copy argument coord
26550    GLMessage_DataType *arg_coord = glmsg.add_args();
26551    arg_coord->set_isarray(false);
26552    arg_coord->set_type(GLMessage::DataType::ENUM);
26553    arg_coord->add_intvalue((int)coord);
26554
26555    // copy argument pname
26556    GLMessage_DataType *arg_pname = glmsg.add_args();
26557    arg_pname->set_isarray(false);
26558    arg_pname->set_type(GLMessage::DataType::ENUM);
26559    arg_pname->add_intvalue((int)pname);
26560
26561    // copy argument param
26562    GLMessage_DataType *arg_param = glmsg.add_args();
26563    arg_param->set_isarray(false);
26564    arg_param->set_type(GLMessage::DataType::INT);
26565    arg_param->add_intvalue(param);
26566
26567    // call function
26568    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26569    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26570    glContext->hooks->gl.glTexGeniOES(coord, pname, param);
26571    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26572    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26573
26574    void *pointerArgs[] = {
26575    };
26576
26577    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26578                              threadStartTime, threadEndTime,
26579                              &glmsg, pointerArgs);
26580    glContext->traceGLMessage(&glmsg);
26581}
26582
26583void GLTrace_glTexGenivOES(GLenum coord, GLenum pname, const GLint * params) {
26584    GLMessage glmsg;
26585    GLTraceContext *glContext = getGLTraceContext();
26586
26587    glmsg.set_function(GLMessage::glTexGenivOES);
26588
26589    // copy argument coord
26590    GLMessage_DataType *arg_coord = glmsg.add_args();
26591    arg_coord->set_isarray(false);
26592    arg_coord->set_type(GLMessage::DataType::ENUM);
26593    arg_coord->add_intvalue((int)coord);
26594
26595    // copy argument pname
26596    GLMessage_DataType *arg_pname = glmsg.add_args();
26597    arg_pname->set_isarray(false);
26598    arg_pname->set_type(GLMessage::DataType::ENUM);
26599    arg_pname->add_intvalue((int)pname);
26600
26601    // copy argument params
26602    GLMessage_DataType *arg_params = glmsg.add_args();
26603    arg_params->set_isarray(false);
26604    arg_params->set_type(GLMessage::DataType::INT64);
26605    arg_params->add_int64value((uintptr_t)params);
26606
26607    // call function
26608    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26609    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26610    glContext->hooks->gl.glTexGenivOES(coord, pname, params);
26611    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26612    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26613
26614    void *pointerArgs[] = {
26615        (void *) params,
26616    };
26617
26618    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26619                              threadStartTime, threadEndTime,
26620                              &glmsg, pointerArgs);
26621    glContext->traceGLMessage(&glmsg);
26622}
26623
26624void GLTrace_glGetTexGenfvOES(GLenum coord, GLenum pname, GLfloat * params) {
26625    GLMessage glmsg;
26626    GLTraceContext *glContext = getGLTraceContext();
26627
26628    glmsg.set_function(GLMessage::glGetTexGenfvOES);
26629
26630    // copy argument coord
26631    GLMessage_DataType *arg_coord = glmsg.add_args();
26632    arg_coord->set_isarray(false);
26633    arg_coord->set_type(GLMessage::DataType::ENUM);
26634    arg_coord->add_intvalue((int)coord);
26635
26636    // copy argument pname
26637    GLMessage_DataType *arg_pname = glmsg.add_args();
26638    arg_pname->set_isarray(false);
26639    arg_pname->set_type(GLMessage::DataType::ENUM);
26640    arg_pname->add_intvalue((int)pname);
26641
26642    // copy argument params
26643    GLMessage_DataType *arg_params = glmsg.add_args();
26644    arg_params->set_isarray(false);
26645    arg_params->set_type(GLMessage::DataType::INT64);
26646    arg_params->add_int64value((uintptr_t)params);
26647
26648    // call function
26649    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26650    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26651    glContext->hooks->gl.glGetTexGenfvOES(coord, pname, params);
26652    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26653    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26654
26655    void *pointerArgs[] = {
26656        (void *) params,
26657    };
26658
26659    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26660                              threadStartTime, threadEndTime,
26661                              &glmsg, pointerArgs);
26662    glContext->traceGLMessage(&glmsg);
26663}
26664
26665void GLTrace_glGetTexGenivOES(GLenum coord, GLenum pname, GLint * params) {
26666    GLMessage glmsg;
26667    GLTraceContext *glContext = getGLTraceContext();
26668
26669    glmsg.set_function(GLMessage::glGetTexGenivOES);
26670
26671    // copy argument coord
26672    GLMessage_DataType *arg_coord = glmsg.add_args();
26673    arg_coord->set_isarray(false);
26674    arg_coord->set_type(GLMessage::DataType::ENUM);
26675    arg_coord->add_intvalue((int)coord);
26676
26677    // copy argument pname
26678    GLMessage_DataType *arg_pname = glmsg.add_args();
26679    arg_pname->set_isarray(false);
26680    arg_pname->set_type(GLMessage::DataType::ENUM);
26681    arg_pname->add_intvalue((int)pname);
26682
26683    // copy argument params
26684    GLMessage_DataType *arg_params = glmsg.add_args();
26685    arg_params->set_isarray(false);
26686    arg_params->set_type(GLMessage::DataType::INT64);
26687    arg_params->add_int64value((uintptr_t)params);
26688
26689    // call function
26690    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26691    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26692    glContext->hooks->gl.glGetTexGenivOES(coord, pname, params);
26693    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26694    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26695
26696    void *pointerArgs[] = {
26697        (void *) params,
26698    };
26699
26700    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26701                              threadStartTime, threadEndTime,
26702                              &glmsg, pointerArgs);
26703    glContext->traceGLMessage(&glmsg);
26704}
26705
26706void GLTrace_glClipPlanefIMG(GLenum p, const GLfloat * eqn) {
26707    GLMessage glmsg;
26708    GLTraceContext *glContext = getGLTraceContext();
26709
26710    glmsg.set_function(GLMessage::glClipPlanefIMG);
26711
26712    // copy argument p
26713    GLMessage_DataType *arg_p = glmsg.add_args();
26714    arg_p->set_isarray(false);
26715    arg_p->set_type(GLMessage::DataType::ENUM);
26716    arg_p->add_intvalue((int)p);
26717
26718    // copy argument eqn
26719    GLMessage_DataType *arg_eqn = glmsg.add_args();
26720    arg_eqn->set_isarray(false);
26721    arg_eqn->set_type(GLMessage::DataType::INT64);
26722    arg_eqn->add_int64value((uintptr_t)eqn);
26723
26724    // call function
26725    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26726    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26727    glContext->hooks->gl.glClipPlanefIMG(p, eqn);
26728    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26729    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26730
26731    void *pointerArgs[] = {
26732        (void *) eqn,
26733    };
26734
26735    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26736                              threadStartTime, threadEndTime,
26737                              &glmsg, pointerArgs);
26738    glContext->traceGLMessage(&glmsg);
26739}
26740
26741void GLTrace_glClipPlanexIMG(GLenum p, const GLfixed * eqn) {
26742    GLMessage glmsg;
26743    GLTraceContext *glContext = getGLTraceContext();
26744
26745    glmsg.set_function(GLMessage::glClipPlanexIMG);
26746
26747    // copy argument p
26748    GLMessage_DataType *arg_p = glmsg.add_args();
26749    arg_p->set_isarray(false);
26750    arg_p->set_type(GLMessage::DataType::ENUM);
26751    arg_p->add_intvalue((int)p);
26752
26753    // copy argument eqn
26754    GLMessage_DataType *arg_eqn = glmsg.add_args();
26755    arg_eqn->set_isarray(false);
26756    arg_eqn->set_type(GLMessage::DataType::INT64);
26757    arg_eqn->add_int64value((uintptr_t)eqn);
26758
26759    // call function
26760    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26761    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26762    glContext->hooks->gl.glClipPlanexIMG(p, eqn);
26763    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26764    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26765
26766    void *pointerArgs[] = {
26767        (void *) eqn,
26768    };
26769
26770    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26771                              threadStartTime, threadEndTime,
26772                              &glmsg, pointerArgs);
26773    glContext->traceGLMessage(&glmsg);
26774}
26775
26776
26777}; // namespace gltrace
26778}; // namespace android
26779