gltrace_api.cpp revision bca4262dac55cc59b28d6fde658d5f8a254fcc2d
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
22#include "gltrace.pb.h"
23#include "gltrace_context.h"
24#include "gltrace_fixup.h"
25#include "gltrace_transport.h"
26
27namespace android {
28namespace gltrace {
29
30// Definitions for GL2 APIs
31
32void GLTrace_glActiveTexture(GLenum texture) {
33    GLMessage glmsg;
34    GLTraceContext *glContext = getGLTraceContext();
35
36    glmsg.set_function(GLMessage::glActiveTexture);
37
38    // copy argument texture
39    GLMessage_DataType *arg_texture = glmsg.add_args();
40    arg_texture->set_isarray(false);
41    arg_texture->set_type(GLMessage::DataType::ENUM);
42    arg_texture->add_intvalue((int)texture);
43
44    // call function
45    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
46    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
47    glContext->hooks->gl.glActiveTexture(texture);
48    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
49    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
50
51    void *pointerArgs[] = {
52    };
53
54    fixupGLMessage(glContext, wallStartTime, wallEndTime,
55                              threadStartTime, threadEndTime,
56                              &glmsg, pointerArgs);
57    glContext->traceGLMessage(&glmsg);
58}
59
60void GLTrace_glAttachShader(GLuint program, GLuint shader) {
61    GLMessage glmsg;
62    GLTraceContext *glContext = getGLTraceContext();
63
64    glmsg.set_function(GLMessage::glAttachShader);
65
66    // copy argument program
67    GLMessage_DataType *arg_program = glmsg.add_args();
68    arg_program->set_isarray(false);
69    arg_program->set_type(GLMessage::DataType::INT);
70    arg_program->add_intvalue(program);
71
72    // copy argument shader
73    GLMessage_DataType *arg_shader = glmsg.add_args();
74    arg_shader->set_isarray(false);
75    arg_shader->set_type(GLMessage::DataType::INT);
76    arg_shader->add_intvalue(shader);
77
78    // call function
79    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
80    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
81    glContext->hooks->gl.glAttachShader(program, shader);
82    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
83    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
84
85    void *pointerArgs[] = {
86    };
87
88    fixupGLMessage(glContext, wallStartTime, wallEndTime,
89                              threadStartTime, threadEndTime,
90                              &glmsg, pointerArgs);
91    glContext->traceGLMessage(&glmsg);
92}
93
94void GLTrace_glBindAttribLocation(GLuint program, GLuint index, const GLchar * name) {
95    GLMessage glmsg;
96    GLTraceContext *glContext = getGLTraceContext();
97
98    glmsg.set_function(GLMessage::glBindAttribLocation);
99
100    // copy argument program
101    GLMessage_DataType *arg_program = glmsg.add_args();
102    arg_program->set_isarray(false);
103    arg_program->set_type(GLMessage::DataType::INT);
104    arg_program->add_intvalue(program);
105
106    // copy argument index
107    GLMessage_DataType *arg_index = glmsg.add_args();
108    arg_index->set_isarray(false);
109    arg_index->set_type(GLMessage::DataType::INT);
110    arg_index->add_intvalue(index);
111
112    // copy argument name
113    GLMessage_DataType *arg_name = glmsg.add_args();
114    arg_name->set_isarray(false);
115    arg_name->set_type(GLMessage::DataType::INT64);
116    arg_name->add_int64value((uintptr_t)name);
117
118    // call function
119    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
120    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
121    glContext->hooks->gl.glBindAttribLocation(program, index, name);
122    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
123    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
124
125    void *pointerArgs[] = {
126        (void *) name,
127    };
128
129    fixupGLMessage(glContext, wallStartTime, wallEndTime,
130                              threadStartTime, threadEndTime,
131                              &glmsg, pointerArgs);
132    glContext->traceGLMessage(&glmsg);
133}
134
135void GLTrace_glBindBuffer(GLenum target, GLuint buffer) {
136    GLMessage glmsg;
137    GLTraceContext *glContext = getGLTraceContext();
138
139    glmsg.set_function(GLMessage::glBindBuffer);
140
141    // copy argument target
142    GLMessage_DataType *arg_target = glmsg.add_args();
143    arg_target->set_isarray(false);
144    arg_target->set_type(GLMessage::DataType::ENUM);
145    arg_target->add_intvalue((int)target);
146
147    // copy argument buffer
148    GLMessage_DataType *arg_buffer = glmsg.add_args();
149    arg_buffer->set_isarray(false);
150    arg_buffer->set_type(GLMessage::DataType::INT);
151    arg_buffer->add_intvalue(buffer);
152
153    // call function
154    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
155    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
156    glContext->hooks->gl.glBindBuffer(target, buffer);
157    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
158    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
159
160    void *pointerArgs[] = {
161    };
162
163    fixupGLMessage(glContext, wallStartTime, wallEndTime,
164                              threadStartTime, threadEndTime,
165                              &glmsg, pointerArgs);
166    glContext->traceGLMessage(&glmsg);
167}
168
169void GLTrace_glBindFramebuffer(GLenum target, GLuint framebuffer) {
170    GLMessage glmsg;
171    GLTraceContext *glContext = getGLTraceContext();
172
173    glmsg.set_function(GLMessage::glBindFramebuffer);
174
175    // copy argument target
176    GLMessage_DataType *arg_target = glmsg.add_args();
177    arg_target->set_isarray(false);
178    arg_target->set_type(GLMessage::DataType::ENUM);
179    arg_target->add_intvalue((int)target);
180
181    // copy argument framebuffer
182    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
183    arg_framebuffer->set_isarray(false);
184    arg_framebuffer->set_type(GLMessage::DataType::INT);
185    arg_framebuffer->add_intvalue(framebuffer);
186
187    // call function
188    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
189    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
190    glContext->hooks->gl.glBindFramebuffer(target, framebuffer);
191    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
192    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
193
194    void *pointerArgs[] = {
195    };
196
197    fixupGLMessage(glContext, wallStartTime, wallEndTime,
198                              threadStartTime, threadEndTime,
199                              &glmsg, pointerArgs);
200    glContext->traceGLMessage(&glmsg);
201}
202
203void GLTrace_glBindRenderbuffer(GLenum target, GLuint renderbuffer) {
204    GLMessage glmsg;
205    GLTraceContext *glContext = getGLTraceContext();
206
207    glmsg.set_function(GLMessage::glBindRenderbuffer);
208
209    // copy argument target
210    GLMessage_DataType *arg_target = glmsg.add_args();
211    arg_target->set_isarray(false);
212    arg_target->set_type(GLMessage::DataType::ENUM);
213    arg_target->add_intvalue((int)target);
214
215    // copy argument renderbuffer
216    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
217    arg_renderbuffer->set_isarray(false);
218    arg_renderbuffer->set_type(GLMessage::DataType::INT);
219    arg_renderbuffer->add_intvalue(renderbuffer);
220
221    // call function
222    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
223    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
224    glContext->hooks->gl.glBindRenderbuffer(target, renderbuffer);
225    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
226    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
227
228    void *pointerArgs[] = {
229    };
230
231    fixupGLMessage(glContext, wallStartTime, wallEndTime,
232                              threadStartTime, threadEndTime,
233                              &glmsg, pointerArgs);
234    glContext->traceGLMessage(&glmsg);
235}
236
237void GLTrace_glBindTexture(GLenum target, GLuint texture) {
238    GLMessage glmsg;
239    GLTraceContext *glContext = getGLTraceContext();
240
241    glmsg.set_function(GLMessage::glBindTexture);
242
243    // copy argument target
244    GLMessage_DataType *arg_target = glmsg.add_args();
245    arg_target->set_isarray(false);
246    arg_target->set_type(GLMessage::DataType::ENUM);
247    arg_target->add_intvalue((int)target);
248
249    // copy argument texture
250    GLMessage_DataType *arg_texture = glmsg.add_args();
251    arg_texture->set_isarray(false);
252    arg_texture->set_type(GLMessage::DataType::INT);
253    arg_texture->add_intvalue(texture);
254
255    // call function
256    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
257    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
258    glContext->hooks->gl.glBindTexture(target, texture);
259    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
260    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
261
262    void *pointerArgs[] = {
263    };
264
265    fixupGLMessage(glContext, wallStartTime, wallEndTime,
266                              threadStartTime, threadEndTime,
267                              &glmsg, pointerArgs);
268    glContext->traceGLMessage(&glmsg);
269}
270
271void GLTrace_glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) {
272    GLMessage glmsg;
273    GLTraceContext *glContext = getGLTraceContext();
274
275    glmsg.set_function(GLMessage::glBlendColor);
276
277    // copy argument red
278    GLMessage_DataType *arg_red = glmsg.add_args();
279    arg_red->set_isarray(false);
280    arg_red->set_type(GLMessage::DataType::FLOAT);
281    arg_red->add_floatvalue(red);
282
283    // copy argument green
284    GLMessage_DataType *arg_green = glmsg.add_args();
285    arg_green->set_isarray(false);
286    arg_green->set_type(GLMessage::DataType::FLOAT);
287    arg_green->add_floatvalue(green);
288
289    // copy argument blue
290    GLMessage_DataType *arg_blue = glmsg.add_args();
291    arg_blue->set_isarray(false);
292    arg_blue->set_type(GLMessage::DataType::FLOAT);
293    arg_blue->add_floatvalue(blue);
294
295    // copy argument alpha
296    GLMessage_DataType *arg_alpha = glmsg.add_args();
297    arg_alpha->set_isarray(false);
298    arg_alpha->set_type(GLMessage::DataType::FLOAT);
299    arg_alpha->add_floatvalue(alpha);
300
301    // call function
302    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
303    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
304    glContext->hooks->gl.glBlendColor(red, green, blue, alpha);
305    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
306    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
307
308    void *pointerArgs[] = {
309    };
310
311    fixupGLMessage(glContext, wallStartTime, wallEndTime,
312                              threadStartTime, threadEndTime,
313                              &glmsg, pointerArgs);
314    glContext->traceGLMessage(&glmsg);
315}
316
317void GLTrace_glBlendEquation(GLenum mode) {
318    GLMessage glmsg;
319    GLTraceContext *glContext = getGLTraceContext();
320
321    glmsg.set_function(GLMessage::glBlendEquation);
322
323    // copy argument mode
324    GLMessage_DataType *arg_mode = glmsg.add_args();
325    arg_mode->set_isarray(false);
326    arg_mode->set_type(GLMessage::DataType::ENUM);
327    arg_mode->add_intvalue((int)mode);
328
329    // call function
330    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
331    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
332    glContext->hooks->gl.glBlendEquation(mode);
333    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
334    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
335
336    void *pointerArgs[] = {
337    };
338
339    fixupGLMessage(glContext, wallStartTime, wallEndTime,
340                              threadStartTime, threadEndTime,
341                              &glmsg, pointerArgs);
342    glContext->traceGLMessage(&glmsg);
343}
344
345void GLTrace_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) {
346    GLMessage glmsg;
347    GLTraceContext *glContext = getGLTraceContext();
348
349    glmsg.set_function(GLMessage::glBlendEquationSeparate);
350
351    // copy argument modeRGB
352    GLMessage_DataType *arg_modeRGB = glmsg.add_args();
353    arg_modeRGB->set_isarray(false);
354    arg_modeRGB->set_type(GLMessage::DataType::ENUM);
355    arg_modeRGB->add_intvalue((int)modeRGB);
356
357    // copy argument modeAlpha
358    GLMessage_DataType *arg_modeAlpha = glmsg.add_args();
359    arg_modeAlpha->set_isarray(false);
360    arg_modeAlpha->set_type(GLMessage::DataType::ENUM);
361    arg_modeAlpha->add_intvalue((int)modeAlpha);
362
363    // call function
364    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
365    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
366    glContext->hooks->gl.glBlendEquationSeparate(modeRGB, modeAlpha);
367    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
368    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
369
370    void *pointerArgs[] = {
371    };
372
373    fixupGLMessage(glContext, wallStartTime, wallEndTime,
374                              threadStartTime, threadEndTime,
375                              &glmsg, pointerArgs);
376    glContext->traceGLMessage(&glmsg);
377}
378
379void GLTrace_glBlendFunc(GLenum sfactor, GLenum dfactor) {
380    GLMessage glmsg;
381    GLTraceContext *glContext = getGLTraceContext();
382
383    glmsg.set_function(GLMessage::glBlendFunc);
384
385    // copy argument sfactor
386    GLMessage_DataType *arg_sfactor = glmsg.add_args();
387    arg_sfactor->set_isarray(false);
388    arg_sfactor->set_type(GLMessage::DataType::ENUM);
389    arg_sfactor->add_intvalue((int)sfactor);
390
391    // copy argument dfactor
392    GLMessage_DataType *arg_dfactor = glmsg.add_args();
393    arg_dfactor->set_isarray(false);
394    arg_dfactor->set_type(GLMessage::DataType::ENUM);
395    arg_dfactor->add_intvalue((int)dfactor);
396
397    // call function
398    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
399    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
400    glContext->hooks->gl.glBlendFunc(sfactor, dfactor);
401    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
402    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
403
404    void *pointerArgs[] = {
405    };
406
407    fixupGLMessage(glContext, wallStartTime, wallEndTime,
408                              threadStartTime, threadEndTime,
409                              &glmsg, pointerArgs);
410    glContext->traceGLMessage(&glmsg);
411}
412
413void GLTrace_glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) {
414    GLMessage glmsg;
415    GLTraceContext *glContext = getGLTraceContext();
416
417    glmsg.set_function(GLMessage::glBlendFuncSeparate);
418
419    // copy argument sfactorRGB
420    GLMessage_DataType *arg_sfactorRGB = glmsg.add_args();
421    arg_sfactorRGB->set_isarray(false);
422    arg_sfactorRGB->set_type(GLMessage::DataType::ENUM);
423    arg_sfactorRGB->add_intvalue((int)sfactorRGB);
424
425    // copy argument dfactorRGB
426    GLMessage_DataType *arg_dfactorRGB = glmsg.add_args();
427    arg_dfactorRGB->set_isarray(false);
428    arg_dfactorRGB->set_type(GLMessage::DataType::ENUM);
429    arg_dfactorRGB->add_intvalue((int)dfactorRGB);
430
431    // copy argument sfactorAlpha
432    GLMessage_DataType *arg_sfactorAlpha = glmsg.add_args();
433    arg_sfactorAlpha->set_isarray(false);
434    arg_sfactorAlpha->set_type(GLMessage::DataType::ENUM);
435    arg_sfactorAlpha->add_intvalue((int)sfactorAlpha);
436
437    // copy argument dfactorAlpha
438    GLMessage_DataType *arg_dfactorAlpha = glmsg.add_args();
439    arg_dfactorAlpha->set_isarray(false);
440    arg_dfactorAlpha->set_type(GLMessage::DataType::ENUM);
441    arg_dfactorAlpha->add_intvalue((int)dfactorAlpha);
442
443    // call function
444    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
445    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
446    glContext->hooks->gl.glBlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
447    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
448    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
449
450    void *pointerArgs[] = {
451    };
452
453    fixupGLMessage(glContext, wallStartTime, wallEndTime,
454                              threadStartTime, threadEndTime,
455                              &glmsg, pointerArgs);
456    glContext->traceGLMessage(&glmsg);
457}
458
459void GLTrace_glBufferData(GLenum target, GLsizeiptr size, const void * data, GLenum usage) {
460    GLMessage glmsg;
461    GLTraceContext *glContext = getGLTraceContext();
462
463    glmsg.set_function(GLMessage::glBufferData);
464
465    // copy argument target
466    GLMessage_DataType *arg_target = glmsg.add_args();
467    arg_target->set_isarray(false);
468    arg_target->set_type(GLMessage::DataType::ENUM);
469    arg_target->add_intvalue((int)target);
470
471    // copy argument size
472    GLMessage_DataType *arg_size = glmsg.add_args();
473    arg_size->set_isarray(false);
474    arg_size->set_type(GLMessage::DataType::INT);
475    arg_size->add_intvalue(size);
476
477    // copy argument data
478    GLMessage_DataType *arg_data = glmsg.add_args();
479    arg_data->set_isarray(false);
480    arg_data->set_type(GLMessage::DataType::INT64);
481    arg_data->add_int64value((uintptr_t)data);
482
483    // copy argument usage
484    GLMessage_DataType *arg_usage = glmsg.add_args();
485    arg_usage->set_isarray(false);
486    arg_usage->set_type(GLMessage::DataType::ENUM);
487    arg_usage->add_intvalue((int)usage);
488
489    // call function
490    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
491    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
492    glContext->hooks->gl.glBufferData(target, size, data, usage);
493    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
494    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
495
496    void *pointerArgs[] = {
497        (void *) data,
498    };
499
500    fixupGLMessage(glContext, wallStartTime, wallEndTime,
501                              threadStartTime, threadEndTime,
502                              &glmsg, pointerArgs);
503    glContext->traceGLMessage(&glmsg);
504}
505
506void GLTrace_glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void * data) {
507    GLMessage glmsg;
508    GLTraceContext *glContext = getGLTraceContext();
509
510    glmsg.set_function(GLMessage::glBufferSubData);
511
512    // copy argument target
513    GLMessage_DataType *arg_target = glmsg.add_args();
514    arg_target->set_isarray(false);
515    arg_target->set_type(GLMessage::DataType::ENUM);
516    arg_target->add_intvalue((int)target);
517
518    // copy argument offset
519    GLMessage_DataType *arg_offset = glmsg.add_args();
520    arg_offset->set_isarray(false);
521    arg_offset->set_type(GLMessage::DataType::INT);
522    arg_offset->add_intvalue(offset);
523
524    // copy argument size
525    GLMessage_DataType *arg_size = glmsg.add_args();
526    arg_size->set_isarray(false);
527    arg_size->set_type(GLMessage::DataType::INT);
528    arg_size->add_intvalue(size);
529
530    // copy argument data
531    GLMessage_DataType *arg_data = glmsg.add_args();
532    arg_data->set_isarray(false);
533    arg_data->set_type(GLMessage::DataType::INT64);
534    arg_data->add_int64value((uintptr_t)data);
535
536    // call function
537    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
538    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
539    glContext->hooks->gl.glBufferSubData(target, offset, size, data);
540    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
541    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
542
543    void *pointerArgs[] = {
544        (void *) data,
545    };
546
547    fixupGLMessage(glContext, wallStartTime, wallEndTime,
548                              threadStartTime, threadEndTime,
549                              &glmsg, pointerArgs);
550    glContext->traceGLMessage(&glmsg);
551}
552
553GLenum GLTrace_glCheckFramebufferStatus(GLenum target) {
554    GLMessage glmsg;
555    GLTraceContext *glContext = getGLTraceContext();
556
557    glmsg.set_function(GLMessage::glCheckFramebufferStatus);
558
559    // copy argument target
560    GLMessage_DataType *arg_target = glmsg.add_args();
561    arg_target->set_isarray(false);
562    arg_target->set_type(GLMessage::DataType::ENUM);
563    arg_target->add_intvalue((int)target);
564
565    // call function
566    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
567    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
568    GLenum retValue = glContext->hooks->gl.glCheckFramebufferStatus(target);
569    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
570    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
571
572    // set return value
573    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
574    rt->set_isarray(false);
575    rt->set_type(GLMessage::DataType::ENUM);
576    rt->add_intvalue((int)retValue);
577
578    void *pointerArgs[] = {
579    };
580
581    fixupGLMessage(glContext, wallStartTime, wallEndTime,
582                              threadStartTime, threadEndTime,
583                              &glmsg, pointerArgs);
584    glContext->traceGLMessage(&glmsg);
585
586    return retValue;
587}
588
589void GLTrace_glClear(GLbitfield mask) {
590    GLMessage glmsg;
591    GLTraceContext *glContext = getGLTraceContext();
592
593    glmsg.set_function(GLMessage::glClear);
594
595    // copy argument mask
596    GLMessage_DataType *arg_mask = glmsg.add_args();
597    arg_mask->set_isarray(false);
598    arg_mask->set_type(GLMessage::DataType::INT);
599    arg_mask->add_intvalue(mask);
600
601    // call function
602    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
603    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
604    glContext->hooks->gl.glClear(mask);
605    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
606    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
607
608    void *pointerArgs[] = {
609    };
610
611    fixupGLMessage(glContext, wallStartTime, wallEndTime,
612                              threadStartTime, threadEndTime,
613                              &glmsg, pointerArgs);
614    glContext->traceGLMessage(&glmsg);
615}
616
617void GLTrace_glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) {
618    GLMessage glmsg;
619    GLTraceContext *glContext = getGLTraceContext();
620
621    glmsg.set_function(GLMessage::glClearColor);
622
623    // copy argument red
624    GLMessage_DataType *arg_red = glmsg.add_args();
625    arg_red->set_isarray(false);
626    arg_red->set_type(GLMessage::DataType::FLOAT);
627    arg_red->add_floatvalue(red);
628
629    // copy argument green
630    GLMessage_DataType *arg_green = glmsg.add_args();
631    arg_green->set_isarray(false);
632    arg_green->set_type(GLMessage::DataType::FLOAT);
633    arg_green->add_floatvalue(green);
634
635    // copy argument blue
636    GLMessage_DataType *arg_blue = glmsg.add_args();
637    arg_blue->set_isarray(false);
638    arg_blue->set_type(GLMessage::DataType::FLOAT);
639    arg_blue->add_floatvalue(blue);
640
641    // copy argument alpha
642    GLMessage_DataType *arg_alpha = glmsg.add_args();
643    arg_alpha->set_isarray(false);
644    arg_alpha->set_type(GLMessage::DataType::FLOAT);
645    arg_alpha->add_floatvalue(alpha);
646
647    // call function
648    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
649    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
650    glContext->hooks->gl.glClearColor(red, green, blue, alpha);
651    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
652    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
653
654    void *pointerArgs[] = {
655    };
656
657    fixupGLMessage(glContext, wallStartTime, wallEndTime,
658                              threadStartTime, threadEndTime,
659                              &glmsg, pointerArgs);
660    glContext->traceGLMessage(&glmsg);
661}
662
663void GLTrace_glClearDepthf(GLfloat d) {
664    GLMessage glmsg;
665    GLTraceContext *glContext = getGLTraceContext();
666
667    glmsg.set_function(GLMessage::glClearDepthf);
668
669    // copy argument d
670    GLMessage_DataType *arg_d = glmsg.add_args();
671    arg_d->set_isarray(false);
672    arg_d->set_type(GLMessage::DataType::FLOAT);
673    arg_d->add_floatvalue(d);
674
675    // call function
676    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
677    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
678    glContext->hooks->gl.glClearDepthf(d);
679    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
680    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
681
682    void *pointerArgs[] = {
683    };
684
685    fixupGLMessage(glContext, wallStartTime, wallEndTime,
686                              threadStartTime, threadEndTime,
687                              &glmsg, pointerArgs);
688    glContext->traceGLMessage(&glmsg);
689}
690
691void GLTrace_glClearStencil(GLint s) {
692    GLMessage glmsg;
693    GLTraceContext *glContext = getGLTraceContext();
694
695    glmsg.set_function(GLMessage::glClearStencil);
696
697    // copy argument s
698    GLMessage_DataType *arg_s = glmsg.add_args();
699    arg_s->set_isarray(false);
700    arg_s->set_type(GLMessage::DataType::INT);
701    arg_s->add_intvalue(s);
702
703    // call function
704    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
705    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
706    glContext->hooks->gl.glClearStencil(s);
707    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
708    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
709
710    void *pointerArgs[] = {
711    };
712
713    fixupGLMessage(glContext, wallStartTime, wallEndTime,
714                              threadStartTime, threadEndTime,
715                              &glmsg, pointerArgs);
716    glContext->traceGLMessage(&glmsg);
717}
718
719void GLTrace_glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) {
720    GLMessage glmsg;
721    GLTraceContext *glContext = getGLTraceContext();
722
723    glmsg.set_function(GLMessage::glColorMask);
724
725    // copy argument red
726    GLMessage_DataType *arg_red = glmsg.add_args();
727    arg_red->set_isarray(false);
728    arg_red->set_type(GLMessage::DataType::BOOL);
729    arg_red->add_boolvalue(red);
730
731    // copy argument green
732    GLMessage_DataType *arg_green = glmsg.add_args();
733    arg_green->set_isarray(false);
734    arg_green->set_type(GLMessage::DataType::BOOL);
735    arg_green->add_boolvalue(green);
736
737    // copy argument blue
738    GLMessage_DataType *arg_blue = glmsg.add_args();
739    arg_blue->set_isarray(false);
740    arg_blue->set_type(GLMessage::DataType::BOOL);
741    arg_blue->add_boolvalue(blue);
742
743    // copy argument alpha
744    GLMessage_DataType *arg_alpha = glmsg.add_args();
745    arg_alpha->set_isarray(false);
746    arg_alpha->set_type(GLMessage::DataType::BOOL);
747    arg_alpha->add_boolvalue(alpha);
748
749    // call function
750    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
751    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
752    glContext->hooks->gl.glColorMask(red, green, blue, alpha);
753    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
754    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
755
756    void *pointerArgs[] = {
757    };
758
759    fixupGLMessage(glContext, wallStartTime, wallEndTime,
760                              threadStartTime, threadEndTime,
761                              &glmsg, pointerArgs);
762    glContext->traceGLMessage(&glmsg);
763}
764
765void GLTrace_glCompileShader(GLuint shader) {
766    GLMessage glmsg;
767    GLTraceContext *glContext = getGLTraceContext();
768
769    glmsg.set_function(GLMessage::glCompileShader);
770
771    // copy argument shader
772    GLMessage_DataType *arg_shader = glmsg.add_args();
773    arg_shader->set_isarray(false);
774    arg_shader->set_type(GLMessage::DataType::INT);
775    arg_shader->add_intvalue(shader);
776
777    // call function
778    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
779    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
780    glContext->hooks->gl.glCompileShader(shader);
781    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
782    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
783
784    void *pointerArgs[] = {
785    };
786
787    fixupGLMessage(glContext, wallStartTime, wallEndTime,
788                              threadStartTime, threadEndTime,
789                              &glmsg, pointerArgs);
790    glContext->traceGLMessage(&glmsg);
791}
792
793void GLTrace_glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void * data) {
794    GLMessage glmsg;
795    GLTraceContext *glContext = getGLTraceContext();
796
797    glmsg.set_function(GLMessage::glCompressedTexImage2D);
798
799    // copy argument target
800    GLMessage_DataType *arg_target = glmsg.add_args();
801    arg_target->set_isarray(false);
802    arg_target->set_type(GLMessage::DataType::ENUM);
803    arg_target->add_intvalue((int)target);
804
805    // copy argument level
806    GLMessage_DataType *arg_level = glmsg.add_args();
807    arg_level->set_isarray(false);
808    arg_level->set_type(GLMessage::DataType::INT);
809    arg_level->add_intvalue(level);
810
811    // copy argument internalformat
812    GLMessage_DataType *arg_internalformat = glmsg.add_args();
813    arg_internalformat->set_isarray(false);
814    arg_internalformat->set_type(GLMessage::DataType::ENUM);
815    arg_internalformat->add_intvalue((int)internalformat);
816
817    // copy argument width
818    GLMessage_DataType *arg_width = glmsg.add_args();
819    arg_width->set_isarray(false);
820    arg_width->set_type(GLMessage::DataType::INT);
821    arg_width->add_intvalue(width);
822
823    // copy argument height
824    GLMessage_DataType *arg_height = glmsg.add_args();
825    arg_height->set_isarray(false);
826    arg_height->set_type(GLMessage::DataType::INT);
827    arg_height->add_intvalue(height);
828
829    // copy argument border
830    GLMessage_DataType *arg_border = glmsg.add_args();
831    arg_border->set_isarray(false);
832    arg_border->set_type(GLMessage::DataType::INT);
833    arg_border->add_intvalue(border);
834
835    // copy argument imageSize
836    GLMessage_DataType *arg_imageSize = glmsg.add_args();
837    arg_imageSize->set_isarray(false);
838    arg_imageSize->set_type(GLMessage::DataType::INT);
839    arg_imageSize->add_intvalue(imageSize);
840
841    // copy argument data
842    GLMessage_DataType *arg_data = glmsg.add_args();
843    arg_data->set_isarray(false);
844    arg_data->set_type(GLMessage::DataType::INT64);
845    arg_data->add_int64value((uintptr_t)data);
846
847    // call function
848    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
849    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
850    glContext->hooks->gl.glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);
851    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
852    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
853
854    void *pointerArgs[] = {
855        (void *) data,
856    };
857
858    fixupGLMessage(glContext, wallStartTime, wallEndTime,
859                              threadStartTime, threadEndTime,
860                              &glmsg, pointerArgs);
861    glContext->traceGLMessage(&glmsg);
862}
863
864void GLTrace_glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void * data) {
865    GLMessage glmsg;
866    GLTraceContext *glContext = getGLTraceContext();
867
868    glmsg.set_function(GLMessage::glCompressedTexSubImage2D);
869
870    // copy argument target
871    GLMessage_DataType *arg_target = glmsg.add_args();
872    arg_target->set_isarray(false);
873    arg_target->set_type(GLMessage::DataType::ENUM);
874    arg_target->add_intvalue((int)target);
875
876    // copy argument level
877    GLMessage_DataType *arg_level = glmsg.add_args();
878    arg_level->set_isarray(false);
879    arg_level->set_type(GLMessage::DataType::INT);
880    arg_level->add_intvalue(level);
881
882    // copy argument xoffset
883    GLMessage_DataType *arg_xoffset = glmsg.add_args();
884    arg_xoffset->set_isarray(false);
885    arg_xoffset->set_type(GLMessage::DataType::INT);
886    arg_xoffset->add_intvalue(xoffset);
887
888    // copy argument yoffset
889    GLMessage_DataType *arg_yoffset = glmsg.add_args();
890    arg_yoffset->set_isarray(false);
891    arg_yoffset->set_type(GLMessage::DataType::INT);
892    arg_yoffset->add_intvalue(yoffset);
893
894    // copy argument width
895    GLMessage_DataType *arg_width = glmsg.add_args();
896    arg_width->set_isarray(false);
897    arg_width->set_type(GLMessage::DataType::INT);
898    arg_width->add_intvalue(width);
899
900    // copy argument height
901    GLMessage_DataType *arg_height = glmsg.add_args();
902    arg_height->set_isarray(false);
903    arg_height->set_type(GLMessage::DataType::INT);
904    arg_height->add_intvalue(height);
905
906    // copy argument format
907    GLMessage_DataType *arg_format = glmsg.add_args();
908    arg_format->set_isarray(false);
909    arg_format->set_type(GLMessage::DataType::ENUM);
910    arg_format->add_intvalue((int)format);
911
912    // copy argument imageSize
913    GLMessage_DataType *arg_imageSize = glmsg.add_args();
914    arg_imageSize->set_isarray(false);
915    arg_imageSize->set_type(GLMessage::DataType::INT);
916    arg_imageSize->add_intvalue(imageSize);
917
918    // copy argument data
919    GLMessage_DataType *arg_data = glmsg.add_args();
920    arg_data->set_isarray(false);
921    arg_data->set_type(GLMessage::DataType::INT64);
922    arg_data->add_int64value((uintptr_t)data);
923
924    // call function
925    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
926    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
927    glContext->hooks->gl.glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data);
928    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
929    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
930
931    void *pointerArgs[] = {
932        (void *) data,
933    };
934
935    fixupGLMessage(glContext, wallStartTime, wallEndTime,
936                              threadStartTime, threadEndTime,
937                              &glmsg, pointerArgs);
938    glContext->traceGLMessage(&glmsg);
939}
940
941void GLTrace_glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) {
942    GLMessage glmsg;
943    GLTraceContext *glContext = getGLTraceContext();
944
945    glmsg.set_function(GLMessage::glCopyTexImage2D);
946
947    // copy argument target
948    GLMessage_DataType *arg_target = glmsg.add_args();
949    arg_target->set_isarray(false);
950    arg_target->set_type(GLMessage::DataType::ENUM);
951    arg_target->add_intvalue((int)target);
952
953    // copy argument level
954    GLMessage_DataType *arg_level = glmsg.add_args();
955    arg_level->set_isarray(false);
956    arg_level->set_type(GLMessage::DataType::INT);
957    arg_level->add_intvalue(level);
958
959    // copy argument internalformat
960    GLMessage_DataType *arg_internalformat = glmsg.add_args();
961    arg_internalformat->set_isarray(false);
962    arg_internalformat->set_type(GLMessage::DataType::ENUM);
963    arg_internalformat->add_intvalue((int)internalformat);
964
965    // copy argument x
966    GLMessage_DataType *arg_x = glmsg.add_args();
967    arg_x->set_isarray(false);
968    arg_x->set_type(GLMessage::DataType::INT);
969    arg_x->add_intvalue(x);
970
971    // copy argument y
972    GLMessage_DataType *arg_y = glmsg.add_args();
973    arg_y->set_isarray(false);
974    arg_y->set_type(GLMessage::DataType::INT);
975    arg_y->add_intvalue(y);
976
977    // copy argument width
978    GLMessage_DataType *arg_width = glmsg.add_args();
979    arg_width->set_isarray(false);
980    arg_width->set_type(GLMessage::DataType::INT);
981    arg_width->add_intvalue(width);
982
983    // copy argument height
984    GLMessage_DataType *arg_height = glmsg.add_args();
985    arg_height->set_isarray(false);
986    arg_height->set_type(GLMessage::DataType::INT);
987    arg_height->add_intvalue(height);
988
989    // copy argument border
990    GLMessage_DataType *arg_border = glmsg.add_args();
991    arg_border->set_isarray(false);
992    arg_border->set_type(GLMessage::DataType::INT);
993    arg_border->add_intvalue(border);
994
995    // call function
996    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
997    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
998    glContext->hooks->gl.glCopyTexImage2D(target, level, internalformat, x, y, width, height, border);
999    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1000    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1001
1002    void *pointerArgs[] = {
1003    };
1004
1005    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1006                              threadStartTime, threadEndTime,
1007                              &glmsg, pointerArgs);
1008    glContext->traceGLMessage(&glmsg);
1009}
1010
1011void GLTrace_glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) {
1012    GLMessage glmsg;
1013    GLTraceContext *glContext = getGLTraceContext();
1014
1015    glmsg.set_function(GLMessage::glCopyTexSubImage2D);
1016
1017    // copy argument target
1018    GLMessage_DataType *arg_target = glmsg.add_args();
1019    arg_target->set_isarray(false);
1020    arg_target->set_type(GLMessage::DataType::ENUM);
1021    arg_target->add_intvalue((int)target);
1022
1023    // copy argument level
1024    GLMessage_DataType *arg_level = glmsg.add_args();
1025    arg_level->set_isarray(false);
1026    arg_level->set_type(GLMessage::DataType::INT);
1027    arg_level->add_intvalue(level);
1028
1029    // copy argument xoffset
1030    GLMessage_DataType *arg_xoffset = glmsg.add_args();
1031    arg_xoffset->set_isarray(false);
1032    arg_xoffset->set_type(GLMessage::DataType::INT);
1033    arg_xoffset->add_intvalue(xoffset);
1034
1035    // copy argument yoffset
1036    GLMessage_DataType *arg_yoffset = glmsg.add_args();
1037    arg_yoffset->set_isarray(false);
1038    arg_yoffset->set_type(GLMessage::DataType::INT);
1039    arg_yoffset->add_intvalue(yoffset);
1040
1041    // copy argument x
1042    GLMessage_DataType *arg_x = glmsg.add_args();
1043    arg_x->set_isarray(false);
1044    arg_x->set_type(GLMessage::DataType::INT);
1045    arg_x->add_intvalue(x);
1046
1047    // copy argument y
1048    GLMessage_DataType *arg_y = glmsg.add_args();
1049    arg_y->set_isarray(false);
1050    arg_y->set_type(GLMessage::DataType::INT);
1051    arg_y->add_intvalue(y);
1052
1053    // copy argument width
1054    GLMessage_DataType *arg_width = glmsg.add_args();
1055    arg_width->set_isarray(false);
1056    arg_width->set_type(GLMessage::DataType::INT);
1057    arg_width->add_intvalue(width);
1058
1059    // copy argument height
1060    GLMessage_DataType *arg_height = glmsg.add_args();
1061    arg_height->set_isarray(false);
1062    arg_height->set_type(GLMessage::DataType::INT);
1063    arg_height->add_intvalue(height);
1064
1065    // call function
1066    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1067    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1068    glContext->hooks->gl.glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
1069    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1070    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1071
1072    void *pointerArgs[] = {
1073    };
1074
1075    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1076                              threadStartTime, threadEndTime,
1077                              &glmsg, pointerArgs);
1078    glContext->traceGLMessage(&glmsg);
1079}
1080
1081GLuint GLTrace_glCreateProgram(void) {
1082    GLMessage glmsg;
1083    GLTraceContext *glContext = getGLTraceContext();
1084
1085    glmsg.set_function(GLMessage::glCreateProgram);
1086
1087    // call function
1088    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1089    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1090    GLuint retValue = glContext->hooks->gl.glCreateProgram();
1091    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1092    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1093
1094    // set return value
1095    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
1096    rt->set_isarray(false);
1097    rt->set_type(GLMessage::DataType::INT);
1098    rt->add_intvalue(retValue);
1099
1100    void *pointerArgs[] = {
1101    };
1102
1103    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1104                              threadStartTime, threadEndTime,
1105                              &glmsg, pointerArgs);
1106    glContext->traceGLMessage(&glmsg);
1107
1108    return retValue;
1109}
1110
1111GLuint GLTrace_glCreateShader(GLenum type) {
1112    GLMessage glmsg;
1113    GLTraceContext *glContext = getGLTraceContext();
1114
1115    glmsg.set_function(GLMessage::glCreateShader);
1116
1117    // copy argument type
1118    GLMessage_DataType *arg_type = glmsg.add_args();
1119    arg_type->set_isarray(false);
1120    arg_type->set_type(GLMessage::DataType::ENUM);
1121    arg_type->add_intvalue((int)type);
1122
1123    // call function
1124    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1125    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1126    GLuint retValue = glContext->hooks->gl.glCreateShader(type);
1127    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1128    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1129
1130    // set return value
1131    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
1132    rt->set_isarray(false);
1133    rt->set_type(GLMessage::DataType::INT);
1134    rt->add_intvalue(retValue);
1135
1136    void *pointerArgs[] = {
1137    };
1138
1139    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1140                              threadStartTime, threadEndTime,
1141                              &glmsg, pointerArgs);
1142    glContext->traceGLMessage(&glmsg);
1143
1144    return retValue;
1145}
1146
1147void GLTrace_glCullFace(GLenum mode) {
1148    GLMessage glmsg;
1149    GLTraceContext *glContext = getGLTraceContext();
1150
1151    glmsg.set_function(GLMessage::glCullFace);
1152
1153    // copy argument mode
1154    GLMessage_DataType *arg_mode = glmsg.add_args();
1155    arg_mode->set_isarray(false);
1156    arg_mode->set_type(GLMessage::DataType::ENUM);
1157    arg_mode->add_intvalue((int)mode);
1158
1159    // call function
1160    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1161    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1162    glContext->hooks->gl.glCullFace(mode);
1163    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1164    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1165
1166    void *pointerArgs[] = {
1167    };
1168
1169    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1170                              threadStartTime, threadEndTime,
1171                              &glmsg, pointerArgs);
1172    glContext->traceGLMessage(&glmsg);
1173}
1174
1175void GLTrace_glDeleteBuffers(GLsizei n, const GLuint * buffers) {
1176    GLMessage glmsg;
1177    GLTraceContext *glContext = getGLTraceContext();
1178
1179    glmsg.set_function(GLMessage::glDeleteBuffers);
1180
1181    // copy argument n
1182    GLMessage_DataType *arg_n = glmsg.add_args();
1183    arg_n->set_isarray(false);
1184    arg_n->set_type(GLMessage::DataType::INT);
1185    arg_n->add_intvalue(n);
1186
1187    // copy argument buffers
1188    GLMessage_DataType *arg_buffers = glmsg.add_args();
1189    arg_buffers->set_isarray(false);
1190    arg_buffers->set_type(GLMessage::DataType::INT64);
1191    arg_buffers->add_int64value((uintptr_t)buffers);
1192
1193    // call function
1194    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1195    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1196    glContext->hooks->gl.glDeleteBuffers(n, buffers);
1197    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1198    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1199
1200    void *pointerArgs[] = {
1201        (void *) buffers,
1202    };
1203
1204    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1205                              threadStartTime, threadEndTime,
1206                              &glmsg, pointerArgs);
1207    glContext->traceGLMessage(&glmsg);
1208}
1209
1210void GLTrace_glDeleteFramebuffers(GLsizei n, const GLuint * framebuffers) {
1211    GLMessage glmsg;
1212    GLTraceContext *glContext = getGLTraceContext();
1213
1214    glmsg.set_function(GLMessage::glDeleteFramebuffers);
1215
1216    // copy argument n
1217    GLMessage_DataType *arg_n = glmsg.add_args();
1218    arg_n->set_isarray(false);
1219    arg_n->set_type(GLMessage::DataType::INT);
1220    arg_n->add_intvalue(n);
1221
1222    // copy argument framebuffers
1223    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
1224    arg_framebuffers->set_isarray(false);
1225    arg_framebuffers->set_type(GLMessage::DataType::INT64);
1226    arg_framebuffers->add_int64value((uintptr_t)framebuffers);
1227
1228    // call function
1229    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1230    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1231    glContext->hooks->gl.glDeleteFramebuffers(n, framebuffers);
1232    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1233    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1234
1235    void *pointerArgs[] = {
1236        (void *) framebuffers,
1237    };
1238
1239    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1240                              threadStartTime, threadEndTime,
1241                              &glmsg, pointerArgs);
1242    glContext->traceGLMessage(&glmsg);
1243}
1244
1245void GLTrace_glDeleteProgram(GLuint program) {
1246    GLMessage glmsg;
1247    GLTraceContext *glContext = getGLTraceContext();
1248
1249    glmsg.set_function(GLMessage::glDeleteProgram);
1250
1251    // copy argument program
1252    GLMessage_DataType *arg_program = glmsg.add_args();
1253    arg_program->set_isarray(false);
1254    arg_program->set_type(GLMessage::DataType::INT);
1255    arg_program->add_intvalue(program);
1256
1257    // call function
1258    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1259    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1260    glContext->hooks->gl.glDeleteProgram(program);
1261    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1262    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1263
1264    void *pointerArgs[] = {
1265    };
1266
1267    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1268                              threadStartTime, threadEndTime,
1269                              &glmsg, pointerArgs);
1270    glContext->traceGLMessage(&glmsg);
1271}
1272
1273void GLTrace_glDeleteRenderbuffers(GLsizei n, const GLuint * renderbuffers) {
1274    GLMessage glmsg;
1275    GLTraceContext *glContext = getGLTraceContext();
1276
1277    glmsg.set_function(GLMessage::glDeleteRenderbuffers);
1278
1279    // copy argument n
1280    GLMessage_DataType *arg_n = glmsg.add_args();
1281    arg_n->set_isarray(false);
1282    arg_n->set_type(GLMessage::DataType::INT);
1283    arg_n->add_intvalue(n);
1284
1285    // copy argument renderbuffers
1286    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
1287    arg_renderbuffers->set_isarray(false);
1288    arg_renderbuffers->set_type(GLMessage::DataType::INT64);
1289    arg_renderbuffers->add_int64value((uintptr_t)renderbuffers);
1290
1291    // call function
1292    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1293    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1294    glContext->hooks->gl.glDeleteRenderbuffers(n, renderbuffers);
1295    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1296    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1297
1298    void *pointerArgs[] = {
1299        (void *) renderbuffers,
1300    };
1301
1302    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1303                              threadStartTime, threadEndTime,
1304                              &glmsg, pointerArgs);
1305    glContext->traceGLMessage(&glmsg);
1306}
1307
1308void GLTrace_glDeleteShader(GLuint shader) {
1309    GLMessage glmsg;
1310    GLTraceContext *glContext = getGLTraceContext();
1311
1312    glmsg.set_function(GLMessage::glDeleteShader);
1313
1314    // copy argument shader
1315    GLMessage_DataType *arg_shader = glmsg.add_args();
1316    arg_shader->set_isarray(false);
1317    arg_shader->set_type(GLMessage::DataType::INT);
1318    arg_shader->add_intvalue(shader);
1319
1320    // call function
1321    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1322    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1323    glContext->hooks->gl.glDeleteShader(shader);
1324    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1325    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1326
1327    void *pointerArgs[] = {
1328    };
1329
1330    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1331                              threadStartTime, threadEndTime,
1332                              &glmsg, pointerArgs);
1333    glContext->traceGLMessage(&glmsg);
1334}
1335
1336void GLTrace_glDeleteTextures(GLsizei n, const GLuint * textures) {
1337    GLMessage glmsg;
1338    GLTraceContext *glContext = getGLTraceContext();
1339
1340    glmsg.set_function(GLMessage::glDeleteTextures);
1341
1342    // copy argument n
1343    GLMessage_DataType *arg_n = glmsg.add_args();
1344    arg_n->set_isarray(false);
1345    arg_n->set_type(GLMessage::DataType::INT);
1346    arg_n->add_intvalue(n);
1347
1348    // copy argument textures
1349    GLMessage_DataType *arg_textures = glmsg.add_args();
1350    arg_textures->set_isarray(false);
1351    arg_textures->set_type(GLMessage::DataType::INT64);
1352    arg_textures->add_int64value((uintptr_t)textures);
1353
1354    // call function
1355    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1356    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1357    glContext->hooks->gl.glDeleteTextures(n, textures);
1358    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1359    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1360
1361    void *pointerArgs[] = {
1362        (void *) textures,
1363    };
1364
1365    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1366                              threadStartTime, threadEndTime,
1367                              &glmsg, pointerArgs);
1368    glContext->traceGLMessage(&glmsg);
1369}
1370
1371void GLTrace_glDepthFunc(GLenum func) {
1372    GLMessage glmsg;
1373    GLTraceContext *glContext = getGLTraceContext();
1374
1375    glmsg.set_function(GLMessage::glDepthFunc);
1376
1377    // copy argument func
1378    GLMessage_DataType *arg_func = glmsg.add_args();
1379    arg_func->set_isarray(false);
1380    arg_func->set_type(GLMessage::DataType::ENUM);
1381    arg_func->add_intvalue((int)func);
1382
1383    // call function
1384    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1385    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1386    glContext->hooks->gl.glDepthFunc(func);
1387    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1388    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1389
1390    void *pointerArgs[] = {
1391    };
1392
1393    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1394                              threadStartTime, threadEndTime,
1395                              &glmsg, pointerArgs);
1396    glContext->traceGLMessage(&glmsg);
1397}
1398
1399void GLTrace_glDepthMask(GLboolean flag) {
1400    GLMessage glmsg;
1401    GLTraceContext *glContext = getGLTraceContext();
1402
1403    glmsg.set_function(GLMessage::glDepthMask);
1404
1405    // copy argument flag
1406    GLMessage_DataType *arg_flag = glmsg.add_args();
1407    arg_flag->set_isarray(false);
1408    arg_flag->set_type(GLMessage::DataType::BOOL);
1409    arg_flag->add_boolvalue(flag);
1410
1411    // call function
1412    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1413    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1414    glContext->hooks->gl.glDepthMask(flag);
1415    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1416    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1417
1418    void *pointerArgs[] = {
1419    };
1420
1421    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1422                              threadStartTime, threadEndTime,
1423                              &glmsg, pointerArgs);
1424    glContext->traceGLMessage(&glmsg);
1425}
1426
1427void GLTrace_glDepthRangef(GLfloat n, GLfloat f) {
1428    GLMessage glmsg;
1429    GLTraceContext *glContext = getGLTraceContext();
1430
1431    glmsg.set_function(GLMessage::glDepthRangef);
1432
1433    // copy argument n
1434    GLMessage_DataType *arg_n = glmsg.add_args();
1435    arg_n->set_isarray(false);
1436    arg_n->set_type(GLMessage::DataType::FLOAT);
1437    arg_n->add_floatvalue(n);
1438
1439    // copy argument f
1440    GLMessage_DataType *arg_f = glmsg.add_args();
1441    arg_f->set_isarray(false);
1442    arg_f->set_type(GLMessage::DataType::FLOAT);
1443    arg_f->add_floatvalue(f);
1444
1445    // call function
1446    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1447    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1448    glContext->hooks->gl.glDepthRangef(n, f);
1449    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1450    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1451
1452    void *pointerArgs[] = {
1453    };
1454
1455    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1456                              threadStartTime, threadEndTime,
1457                              &glmsg, pointerArgs);
1458    glContext->traceGLMessage(&glmsg);
1459}
1460
1461void GLTrace_glDetachShader(GLuint program, GLuint shader) {
1462    GLMessage glmsg;
1463    GLTraceContext *glContext = getGLTraceContext();
1464
1465    glmsg.set_function(GLMessage::glDetachShader);
1466
1467    // copy argument program
1468    GLMessage_DataType *arg_program = glmsg.add_args();
1469    arg_program->set_isarray(false);
1470    arg_program->set_type(GLMessage::DataType::INT);
1471    arg_program->add_intvalue(program);
1472
1473    // copy argument shader
1474    GLMessage_DataType *arg_shader = glmsg.add_args();
1475    arg_shader->set_isarray(false);
1476    arg_shader->set_type(GLMessage::DataType::INT);
1477    arg_shader->add_intvalue(shader);
1478
1479    // call function
1480    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1481    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1482    glContext->hooks->gl.glDetachShader(program, shader);
1483    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1484    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1485
1486    void *pointerArgs[] = {
1487    };
1488
1489    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1490                              threadStartTime, threadEndTime,
1491                              &glmsg, pointerArgs);
1492    glContext->traceGLMessage(&glmsg);
1493}
1494
1495void GLTrace_glDisable(GLenum cap) {
1496    GLMessage glmsg;
1497    GLTraceContext *glContext = getGLTraceContext();
1498
1499    glmsg.set_function(GLMessage::glDisable);
1500
1501    // copy argument cap
1502    GLMessage_DataType *arg_cap = glmsg.add_args();
1503    arg_cap->set_isarray(false);
1504    arg_cap->set_type(GLMessage::DataType::ENUM);
1505    arg_cap->add_intvalue((int)cap);
1506
1507    // call function
1508    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1509    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1510    glContext->hooks->gl.glDisable(cap);
1511    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1512    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1513
1514    void *pointerArgs[] = {
1515    };
1516
1517    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1518                              threadStartTime, threadEndTime,
1519                              &glmsg, pointerArgs);
1520    glContext->traceGLMessage(&glmsg);
1521}
1522
1523void GLTrace_glDisableVertexAttribArray(GLuint index) {
1524    GLMessage glmsg;
1525    GLTraceContext *glContext = getGLTraceContext();
1526
1527    glmsg.set_function(GLMessage::glDisableVertexAttribArray);
1528
1529    // copy argument index
1530    GLMessage_DataType *arg_index = glmsg.add_args();
1531    arg_index->set_isarray(false);
1532    arg_index->set_type(GLMessage::DataType::INT);
1533    arg_index->add_intvalue(index);
1534
1535    // call function
1536    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1537    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1538    glContext->hooks->gl.glDisableVertexAttribArray(index);
1539    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1540    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1541
1542    void *pointerArgs[] = {
1543    };
1544
1545    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1546                              threadStartTime, threadEndTime,
1547                              &glmsg, pointerArgs);
1548    glContext->traceGLMessage(&glmsg);
1549}
1550
1551void GLTrace_glDrawArrays(GLenum mode, GLint first, GLsizei count) {
1552    GLMessage glmsg;
1553    GLTraceContext *glContext = getGLTraceContext();
1554
1555    glmsg.set_function(GLMessage::glDrawArrays);
1556
1557    // copy argument mode
1558    GLMessage_DataType *arg_mode = glmsg.add_args();
1559    arg_mode->set_isarray(false);
1560    arg_mode->set_type(GLMessage::DataType::ENUM);
1561    arg_mode->add_intvalue((int)mode);
1562
1563    // copy argument first
1564    GLMessage_DataType *arg_first = glmsg.add_args();
1565    arg_first->set_isarray(false);
1566    arg_first->set_type(GLMessage::DataType::INT);
1567    arg_first->add_intvalue(first);
1568
1569    // copy argument count
1570    GLMessage_DataType *arg_count = glmsg.add_args();
1571    arg_count->set_isarray(false);
1572    arg_count->set_type(GLMessage::DataType::INT);
1573    arg_count->add_intvalue(count);
1574
1575    // call function
1576    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1577    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1578    glContext->hooks->gl.glDrawArrays(mode, first, count);
1579    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1580    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1581
1582    void *pointerArgs[] = {
1583    };
1584
1585    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1586                              threadStartTime, threadEndTime,
1587                              &glmsg, pointerArgs);
1588    glContext->traceGLMessage(&glmsg);
1589}
1590
1591void GLTrace_glDrawElements(GLenum mode, GLsizei count, GLenum type, const void * indices) {
1592    GLMessage glmsg;
1593    GLTraceContext *glContext = getGLTraceContext();
1594
1595    glmsg.set_function(GLMessage::glDrawElements);
1596
1597    // copy argument mode
1598    GLMessage_DataType *arg_mode = glmsg.add_args();
1599    arg_mode->set_isarray(false);
1600    arg_mode->set_type(GLMessage::DataType::ENUM);
1601    arg_mode->add_intvalue((int)mode);
1602
1603    // copy argument count
1604    GLMessage_DataType *arg_count = glmsg.add_args();
1605    arg_count->set_isarray(false);
1606    arg_count->set_type(GLMessage::DataType::INT);
1607    arg_count->add_intvalue(count);
1608
1609    // copy argument type
1610    GLMessage_DataType *arg_type = glmsg.add_args();
1611    arg_type->set_isarray(false);
1612    arg_type->set_type(GLMessage::DataType::ENUM);
1613    arg_type->add_intvalue((int)type);
1614
1615    // copy argument indices
1616    GLMessage_DataType *arg_indices = glmsg.add_args();
1617    arg_indices->set_isarray(false);
1618    arg_indices->set_type(GLMessage::DataType::INT64);
1619    arg_indices->add_int64value((uintptr_t)indices);
1620
1621    // call function
1622    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1623    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1624    glContext->hooks->gl.glDrawElements(mode, count, type, indices);
1625    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1626    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1627
1628    void *pointerArgs[] = {
1629        (void *) indices,
1630    };
1631
1632    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1633                              threadStartTime, threadEndTime,
1634                              &glmsg, pointerArgs);
1635    glContext->traceGLMessage(&glmsg);
1636}
1637
1638void GLTrace_glEnable(GLenum cap) {
1639    GLMessage glmsg;
1640    GLTraceContext *glContext = getGLTraceContext();
1641
1642    glmsg.set_function(GLMessage::glEnable);
1643
1644    // copy argument cap
1645    GLMessage_DataType *arg_cap = glmsg.add_args();
1646    arg_cap->set_isarray(false);
1647    arg_cap->set_type(GLMessage::DataType::ENUM);
1648    arg_cap->add_intvalue((int)cap);
1649
1650    // call function
1651    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1652    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1653    glContext->hooks->gl.glEnable(cap);
1654    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1655    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1656
1657    void *pointerArgs[] = {
1658    };
1659
1660    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1661                              threadStartTime, threadEndTime,
1662                              &glmsg, pointerArgs);
1663    glContext->traceGLMessage(&glmsg);
1664}
1665
1666void GLTrace_glEnableVertexAttribArray(GLuint index) {
1667    GLMessage glmsg;
1668    GLTraceContext *glContext = getGLTraceContext();
1669
1670    glmsg.set_function(GLMessage::glEnableVertexAttribArray);
1671
1672    // copy argument index
1673    GLMessage_DataType *arg_index = glmsg.add_args();
1674    arg_index->set_isarray(false);
1675    arg_index->set_type(GLMessage::DataType::INT);
1676    arg_index->add_intvalue(index);
1677
1678    // call function
1679    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1680    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1681    glContext->hooks->gl.glEnableVertexAttribArray(index);
1682    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1683    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1684
1685    void *pointerArgs[] = {
1686    };
1687
1688    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1689                              threadStartTime, threadEndTime,
1690                              &glmsg, pointerArgs);
1691    glContext->traceGLMessage(&glmsg);
1692}
1693
1694void GLTrace_glFinish(void) {
1695    GLMessage glmsg;
1696    GLTraceContext *glContext = getGLTraceContext();
1697
1698    glmsg.set_function(GLMessage::glFinish);
1699
1700    // call function
1701    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1702    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1703    glContext->hooks->gl.glFinish();
1704    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1705    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1706
1707    void *pointerArgs[] = {
1708    };
1709
1710    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1711                              threadStartTime, threadEndTime,
1712                              &glmsg, pointerArgs);
1713    glContext->traceGLMessage(&glmsg);
1714}
1715
1716void GLTrace_glFlush(void) {
1717    GLMessage glmsg;
1718    GLTraceContext *glContext = getGLTraceContext();
1719
1720    glmsg.set_function(GLMessage::glFlush);
1721
1722    // call function
1723    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1724    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1725    glContext->hooks->gl.glFlush();
1726    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1727    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1728
1729    void *pointerArgs[] = {
1730    };
1731
1732    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1733                              threadStartTime, threadEndTime,
1734                              &glmsg, pointerArgs);
1735    glContext->traceGLMessage(&glmsg);
1736}
1737
1738void GLTrace_glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) {
1739    GLMessage glmsg;
1740    GLTraceContext *glContext = getGLTraceContext();
1741
1742    glmsg.set_function(GLMessage::glFramebufferRenderbuffer);
1743
1744    // copy argument target
1745    GLMessage_DataType *arg_target = glmsg.add_args();
1746    arg_target->set_isarray(false);
1747    arg_target->set_type(GLMessage::DataType::ENUM);
1748    arg_target->add_intvalue((int)target);
1749
1750    // copy argument attachment
1751    GLMessage_DataType *arg_attachment = glmsg.add_args();
1752    arg_attachment->set_isarray(false);
1753    arg_attachment->set_type(GLMessage::DataType::ENUM);
1754    arg_attachment->add_intvalue((int)attachment);
1755
1756    // copy argument renderbuffertarget
1757    GLMessage_DataType *arg_renderbuffertarget = glmsg.add_args();
1758    arg_renderbuffertarget->set_isarray(false);
1759    arg_renderbuffertarget->set_type(GLMessage::DataType::ENUM);
1760    arg_renderbuffertarget->add_intvalue((int)renderbuffertarget);
1761
1762    // copy argument renderbuffer
1763    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
1764    arg_renderbuffer->set_isarray(false);
1765    arg_renderbuffer->set_type(GLMessage::DataType::INT);
1766    arg_renderbuffer->add_intvalue(renderbuffer);
1767
1768    // call function
1769    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1770    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1771    glContext->hooks->gl.glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);
1772    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1773    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1774
1775    void *pointerArgs[] = {
1776    };
1777
1778    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1779                              threadStartTime, threadEndTime,
1780                              &glmsg, pointerArgs);
1781    glContext->traceGLMessage(&glmsg);
1782}
1783
1784void GLTrace_glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) {
1785    GLMessage glmsg;
1786    GLTraceContext *glContext = getGLTraceContext();
1787
1788    glmsg.set_function(GLMessage::glFramebufferTexture2D);
1789
1790    // copy argument target
1791    GLMessage_DataType *arg_target = glmsg.add_args();
1792    arg_target->set_isarray(false);
1793    arg_target->set_type(GLMessage::DataType::ENUM);
1794    arg_target->add_intvalue((int)target);
1795
1796    // copy argument attachment
1797    GLMessage_DataType *arg_attachment = glmsg.add_args();
1798    arg_attachment->set_isarray(false);
1799    arg_attachment->set_type(GLMessage::DataType::ENUM);
1800    arg_attachment->add_intvalue((int)attachment);
1801
1802    // copy argument textarget
1803    GLMessage_DataType *arg_textarget = glmsg.add_args();
1804    arg_textarget->set_isarray(false);
1805    arg_textarget->set_type(GLMessage::DataType::ENUM);
1806    arg_textarget->add_intvalue((int)textarget);
1807
1808    // copy argument texture
1809    GLMessage_DataType *arg_texture = glmsg.add_args();
1810    arg_texture->set_isarray(false);
1811    arg_texture->set_type(GLMessage::DataType::INT);
1812    arg_texture->add_intvalue(texture);
1813
1814    // copy argument level
1815    GLMessage_DataType *arg_level = glmsg.add_args();
1816    arg_level->set_isarray(false);
1817    arg_level->set_type(GLMessage::DataType::INT);
1818    arg_level->add_intvalue(level);
1819
1820    // call function
1821    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1822    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1823    glContext->hooks->gl.glFramebufferTexture2D(target, attachment, textarget, texture, level);
1824    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1825    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1826
1827    void *pointerArgs[] = {
1828    };
1829
1830    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1831                              threadStartTime, threadEndTime,
1832                              &glmsg, pointerArgs);
1833    glContext->traceGLMessage(&glmsg);
1834}
1835
1836void GLTrace_glFrontFace(GLenum mode) {
1837    GLMessage glmsg;
1838    GLTraceContext *glContext = getGLTraceContext();
1839
1840    glmsg.set_function(GLMessage::glFrontFace);
1841
1842    // copy argument mode
1843    GLMessage_DataType *arg_mode = glmsg.add_args();
1844    arg_mode->set_isarray(false);
1845    arg_mode->set_type(GLMessage::DataType::ENUM);
1846    arg_mode->add_intvalue((int)mode);
1847
1848    // call function
1849    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1850    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1851    glContext->hooks->gl.glFrontFace(mode);
1852    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1853    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1854
1855    void *pointerArgs[] = {
1856    };
1857
1858    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1859                              threadStartTime, threadEndTime,
1860                              &glmsg, pointerArgs);
1861    glContext->traceGLMessage(&glmsg);
1862}
1863
1864void GLTrace_glGenBuffers(GLsizei n, GLuint * buffers) {
1865    GLMessage glmsg;
1866    GLTraceContext *glContext = getGLTraceContext();
1867
1868    glmsg.set_function(GLMessage::glGenBuffers);
1869
1870    // copy argument n
1871    GLMessage_DataType *arg_n = glmsg.add_args();
1872    arg_n->set_isarray(false);
1873    arg_n->set_type(GLMessage::DataType::INT);
1874    arg_n->add_intvalue(n);
1875
1876    // copy argument buffers
1877    GLMessage_DataType *arg_buffers = glmsg.add_args();
1878    arg_buffers->set_isarray(false);
1879    arg_buffers->set_type(GLMessage::DataType::INT64);
1880    arg_buffers->add_int64value((uintptr_t)buffers);
1881
1882    // call function
1883    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1884    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1885    glContext->hooks->gl.glGenBuffers(n, buffers);
1886    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1887    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1888
1889    void *pointerArgs[] = {
1890        (void *) buffers,
1891    };
1892
1893    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1894                              threadStartTime, threadEndTime,
1895                              &glmsg, pointerArgs);
1896    glContext->traceGLMessage(&glmsg);
1897}
1898
1899void GLTrace_glGenerateMipmap(GLenum target) {
1900    GLMessage glmsg;
1901    GLTraceContext *glContext = getGLTraceContext();
1902
1903    glmsg.set_function(GLMessage::glGenerateMipmap);
1904
1905    // copy argument target
1906    GLMessage_DataType *arg_target = glmsg.add_args();
1907    arg_target->set_isarray(false);
1908    arg_target->set_type(GLMessage::DataType::ENUM);
1909    arg_target->add_intvalue((int)target);
1910
1911    // call function
1912    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1913    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1914    glContext->hooks->gl.glGenerateMipmap(target);
1915    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1916    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1917
1918    void *pointerArgs[] = {
1919    };
1920
1921    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1922                              threadStartTime, threadEndTime,
1923                              &glmsg, pointerArgs);
1924    glContext->traceGLMessage(&glmsg);
1925}
1926
1927void GLTrace_glGenFramebuffers(GLsizei n, GLuint * framebuffers) {
1928    GLMessage glmsg;
1929    GLTraceContext *glContext = getGLTraceContext();
1930
1931    glmsg.set_function(GLMessage::glGenFramebuffers);
1932
1933    // copy argument n
1934    GLMessage_DataType *arg_n = glmsg.add_args();
1935    arg_n->set_isarray(false);
1936    arg_n->set_type(GLMessage::DataType::INT);
1937    arg_n->add_intvalue(n);
1938
1939    // copy argument framebuffers
1940    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
1941    arg_framebuffers->set_isarray(false);
1942    arg_framebuffers->set_type(GLMessage::DataType::INT64);
1943    arg_framebuffers->add_int64value((uintptr_t)framebuffers);
1944
1945    // call function
1946    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1947    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1948    glContext->hooks->gl.glGenFramebuffers(n, framebuffers);
1949    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1950    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1951
1952    void *pointerArgs[] = {
1953        (void *) framebuffers,
1954    };
1955
1956    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1957                              threadStartTime, threadEndTime,
1958                              &glmsg, pointerArgs);
1959    glContext->traceGLMessage(&glmsg);
1960}
1961
1962void GLTrace_glGenRenderbuffers(GLsizei n, GLuint * renderbuffers) {
1963    GLMessage glmsg;
1964    GLTraceContext *glContext = getGLTraceContext();
1965
1966    glmsg.set_function(GLMessage::glGenRenderbuffers);
1967
1968    // copy argument n
1969    GLMessage_DataType *arg_n = glmsg.add_args();
1970    arg_n->set_isarray(false);
1971    arg_n->set_type(GLMessage::DataType::INT);
1972    arg_n->add_intvalue(n);
1973
1974    // copy argument renderbuffers
1975    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
1976    arg_renderbuffers->set_isarray(false);
1977    arg_renderbuffers->set_type(GLMessage::DataType::INT64);
1978    arg_renderbuffers->add_int64value((uintptr_t)renderbuffers);
1979
1980    // call function
1981    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1982    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1983    glContext->hooks->gl.glGenRenderbuffers(n, renderbuffers);
1984    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1985    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1986
1987    void *pointerArgs[] = {
1988        (void *) renderbuffers,
1989    };
1990
1991    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1992                              threadStartTime, threadEndTime,
1993                              &glmsg, pointerArgs);
1994    glContext->traceGLMessage(&glmsg);
1995}
1996
1997void GLTrace_glGenTextures(GLsizei n, GLuint * textures) {
1998    GLMessage glmsg;
1999    GLTraceContext *glContext = getGLTraceContext();
2000
2001    glmsg.set_function(GLMessage::glGenTextures);
2002
2003    // copy argument n
2004    GLMessage_DataType *arg_n = glmsg.add_args();
2005    arg_n->set_isarray(false);
2006    arg_n->set_type(GLMessage::DataType::INT);
2007    arg_n->add_intvalue(n);
2008
2009    // copy argument textures
2010    GLMessage_DataType *arg_textures = glmsg.add_args();
2011    arg_textures->set_isarray(false);
2012    arg_textures->set_type(GLMessage::DataType::INT64);
2013    arg_textures->add_int64value((uintptr_t)textures);
2014
2015    // call function
2016    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2017    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2018    glContext->hooks->gl.glGenTextures(n, textures);
2019    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2020    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2021
2022    void *pointerArgs[] = {
2023        (void *) textures,
2024    };
2025
2026    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2027                              threadStartTime, threadEndTime,
2028                              &glmsg, pointerArgs);
2029    glContext->traceGLMessage(&glmsg);
2030}
2031
2032void GLTrace_glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name) {
2033    GLMessage glmsg;
2034    GLTraceContext *glContext = getGLTraceContext();
2035
2036    glmsg.set_function(GLMessage::glGetActiveAttrib);
2037
2038    // copy argument program
2039    GLMessage_DataType *arg_program = glmsg.add_args();
2040    arg_program->set_isarray(false);
2041    arg_program->set_type(GLMessage::DataType::INT);
2042    arg_program->add_intvalue(program);
2043
2044    // copy argument index
2045    GLMessage_DataType *arg_index = glmsg.add_args();
2046    arg_index->set_isarray(false);
2047    arg_index->set_type(GLMessage::DataType::INT);
2048    arg_index->add_intvalue(index);
2049
2050    // copy argument bufSize
2051    GLMessage_DataType *arg_bufSize = glmsg.add_args();
2052    arg_bufSize->set_isarray(false);
2053    arg_bufSize->set_type(GLMessage::DataType::INT);
2054    arg_bufSize->add_intvalue(bufSize);
2055
2056    // copy argument length
2057    GLMessage_DataType *arg_length = glmsg.add_args();
2058    arg_length->set_isarray(false);
2059    arg_length->set_type(GLMessage::DataType::INT64);
2060    arg_length->add_int64value((uintptr_t)length);
2061
2062    // copy argument size
2063    GLMessage_DataType *arg_size = glmsg.add_args();
2064    arg_size->set_isarray(false);
2065    arg_size->set_type(GLMessage::DataType::INT64);
2066    arg_size->add_int64value((uintptr_t)size);
2067
2068    // copy argument type
2069    GLMessage_DataType *arg_type = glmsg.add_args();
2070    arg_type->set_isarray(false);
2071    arg_type->set_type(GLMessage::DataType::INT64);
2072    arg_type->add_int64value((uintptr_t)type);
2073
2074    // copy argument name
2075    GLMessage_DataType *arg_name = glmsg.add_args();
2076    arg_name->set_isarray(false);
2077    arg_name->set_type(GLMessage::DataType::INT64);
2078    arg_name->add_int64value((uintptr_t)name);
2079
2080    // call function
2081    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2082    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2083    glContext->hooks->gl.glGetActiveAttrib(program, index, bufSize, length, size, type, name);
2084    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2085    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2086
2087    void *pointerArgs[] = {
2088        (void *) length,
2089        (void *) size,
2090        (void *) type,
2091        (void *) name,
2092    };
2093
2094    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2095                              threadStartTime, threadEndTime,
2096                              &glmsg, pointerArgs);
2097    glContext->traceGLMessage(&glmsg);
2098}
2099
2100void GLTrace_glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name) {
2101    GLMessage glmsg;
2102    GLTraceContext *glContext = getGLTraceContext();
2103
2104    glmsg.set_function(GLMessage::glGetActiveUniform);
2105
2106    // copy argument program
2107    GLMessage_DataType *arg_program = glmsg.add_args();
2108    arg_program->set_isarray(false);
2109    arg_program->set_type(GLMessage::DataType::INT);
2110    arg_program->add_intvalue(program);
2111
2112    // copy argument index
2113    GLMessage_DataType *arg_index = glmsg.add_args();
2114    arg_index->set_isarray(false);
2115    arg_index->set_type(GLMessage::DataType::INT);
2116    arg_index->add_intvalue(index);
2117
2118    // copy argument bufSize
2119    GLMessage_DataType *arg_bufSize = glmsg.add_args();
2120    arg_bufSize->set_isarray(false);
2121    arg_bufSize->set_type(GLMessage::DataType::INT);
2122    arg_bufSize->add_intvalue(bufSize);
2123
2124    // copy argument length
2125    GLMessage_DataType *arg_length = glmsg.add_args();
2126    arg_length->set_isarray(false);
2127    arg_length->set_type(GLMessage::DataType::INT64);
2128    arg_length->add_int64value((uintptr_t)length);
2129
2130    // copy argument size
2131    GLMessage_DataType *arg_size = glmsg.add_args();
2132    arg_size->set_isarray(false);
2133    arg_size->set_type(GLMessage::DataType::INT64);
2134    arg_size->add_int64value((uintptr_t)size);
2135
2136    // copy argument type
2137    GLMessage_DataType *arg_type = glmsg.add_args();
2138    arg_type->set_isarray(false);
2139    arg_type->set_type(GLMessage::DataType::INT64);
2140    arg_type->add_int64value((uintptr_t)type);
2141
2142    // copy argument name
2143    GLMessage_DataType *arg_name = glmsg.add_args();
2144    arg_name->set_isarray(false);
2145    arg_name->set_type(GLMessage::DataType::INT64);
2146    arg_name->add_int64value((uintptr_t)name);
2147
2148    // call function
2149    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2150    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2151    glContext->hooks->gl.glGetActiveUniform(program, index, bufSize, length, size, type, name);
2152    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2153    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2154
2155    void *pointerArgs[] = {
2156        (void *) length,
2157        (void *) size,
2158        (void *) type,
2159        (void *) name,
2160    };
2161
2162    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2163                              threadStartTime, threadEndTime,
2164                              &glmsg, pointerArgs);
2165    glContext->traceGLMessage(&glmsg);
2166}
2167
2168void GLTrace_glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * shaders) {
2169    GLMessage glmsg;
2170    GLTraceContext *glContext = getGLTraceContext();
2171
2172    glmsg.set_function(GLMessage::glGetAttachedShaders);
2173
2174    // copy argument program
2175    GLMessage_DataType *arg_program = glmsg.add_args();
2176    arg_program->set_isarray(false);
2177    arg_program->set_type(GLMessage::DataType::INT);
2178    arg_program->add_intvalue(program);
2179
2180    // copy argument maxCount
2181    GLMessage_DataType *arg_maxCount = glmsg.add_args();
2182    arg_maxCount->set_isarray(false);
2183    arg_maxCount->set_type(GLMessage::DataType::INT);
2184    arg_maxCount->add_intvalue(maxCount);
2185
2186    // copy argument count
2187    GLMessage_DataType *arg_count = glmsg.add_args();
2188    arg_count->set_isarray(false);
2189    arg_count->set_type(GLMessage::DataType::INT64);
2190    arg_count->add_int64value((uintptr_t)count);
2191
2192    // copy argument shaders
2193    GLMessage_DataType *arg_shaders = glmsg.add_args();
2194    arg_shaders->set_isarray(false);
2195    arg_shaders->set_type(GLMessage::DataType::INT64);
2196    arg_shaders->add_int64value((uintptr_t)shaders);
2197
2198    // call function
2199    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2200    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2201    glContext->hooks->gl.glGetAttachedShaders(program, maxCount, count, shaders);
2202    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2203    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2204
2205    void *pointerArgs[] = {
2206        (void *) count,
2207        (void *) shaders,
2208    };
2209
2210    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2211                              threadStartTime, threadEndTime,
2212                              &glmsg, pointerArgs);
2213    glContext->traceGLMessage(&glmsg);
2214}
2215
2216GLint GLTrace_glGetAttribLocation(GLuint program, const GLchar * name) {
2217    GLMessage glmsg;
2218    GLTraceContext *glContext = getGLTraceContext();
2219
2220    glmsg.set_function(GLMessage::glGetAttribLocation);
2221
2222    // copy argument program
2223    GLMessage_DataType *arg_program = glmsg.add_args();
2224    arg_program->set_isarray(false);
2225    arg_program->set_type(GLMessage::DataType::INT);
2226    arg_program->add_intvalue(program);
2227
2228    // copy argument name
2229    GLMessage_DataType *arg_name = glmsg.add_args();
2230    arg_name->set_isarray(false);
2231    arg_name->set_type(GLMessage::DataType::INT64);
2232    arg_name->add_int64value((uintptr_t)name);
2233
2234    // call function
2235    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2236    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2237    GLint retValue = glContext->hooks->gl.glGetAttribLocation(program, name);
2238    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2239    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2240
2241    // set return value
2242    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
2243    rt->set_isarray(false);
2244    rt->set_type(GLMessage::DataType::INT);
2245    rt->add_intvalue(retValue);
2246
2247    void *pointerArgs[] = {
2248        (void *) name,
2249    };
2250
2251    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2252                              threadStartTime, threadEndTime,
2253                              &glmsg, pointerArgs);
2254    glContext->traceGLMessage(&glmsg);
2255
2256    return retValue;
2257}
2258
2259void GLTrace_glGetBooleanv(GLenum pname, GLboolean * data) {
2260    GLMessage glmsg;
2261    GLTraceContext *glContext = getGLTraceContext();
2262
2263    glmsg.set_function(GLMessage::glGetBooleanv);
2264
2265    // copy argument pname
2266    GLMessage_DataType *arg_pname = glmsg.add_args();
2267    arg_pname->set_isarray(false);
2268    arg_pname->set_type(GLMessage::DataType::ENUM);
2269    arg_pname->add_intvalue((int)pname);
2270
2271    // copy argument data
2272    GLMessage_DataType *arg_data = glmsg.add_args();
2273    arg_data->set_isarray(false);
2274    arg_data->set_type(GLMessage::DataType::INT64);
2275    arg_data->add_int64value((uintptr_t)data);
2276
2277    // call function
2278    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2279    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2280    glContext->hooks->gl.glGetBooleanv(pname, data);
2281    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2282    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2283
2284    void *pointerArgs[] = {
2285        (void *) data,
2286    };
2287
2288    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2289                              threadStartTime, threadEndTime,
2290                              &glmsg, pointerArgs);
2291    glContext->traceGLMessage(&glmsg);
2292}
2293
2294void GLTrace_glGetBufferParameteriv(GLenum target, GLenum pname, GLint * params) {
2295    GLMessage glmsg;
2296    GLTraceContext *glContext = getGLTraceContext();
2297
2298    glmsg.set_function(GLMessage::glGetBufferParameteriv);
2299
2300    // copy argument target
2301    GLMessage_DataType *arg_target = glmsg.add_args();
2302    arg_target->set_isarray(false);
2303    arg_target->set_type(GLMessage::DataType::ENUM);
2304    arg_target->add_intvalue((int)target);
2305
2306    // copy argument pname
2307    GLMessage_DataType *arg_pname = glmsg.add_args();
2308    arg_pname->set_isarray(false);
2309    arg_pname->set_type(GLMessage::DataType::ENUM);
2310    arg_pname->add_intvalue((int)pname);
2311
2312    // copy argument params
2313    GLMessage_DataType *arg_params = glmsg.add_args();
2314    arg_params->set_isarray(false);
2315    arg_params->set_type(GLMessage::DataType::INT64);
2316    arg_params->add_int64value((uintptr_t)params);
2317
2318    // call function
2319    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2320    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2321    glContext->hooks->gl.glGetBufferParameteriv(target, pname, params);
2322    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2323    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2324
2325    void *pointerArgs[] = {
2326        (void *) params,
2327    };
2328
2329    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2330                              threadStartTime, threadEndTime,
2331                              &glmsg, pointerArgs);
2332    glContext->traceGLMessage(&glmsg);
2333}
2334
2335GLenum GLTrace_glGetError(void) {
2336    GLMessage glmsg;
2337    GLTraceContext *glContext = getGLTraceContext();
2338
2339    glmsg.set_function(GLMessage::glGetError);
2340
2341    // call function
2342    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2343    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2344    GLenum retValue = glContext->hooks->gl.glGetError();
2345    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2346    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2347
2348    // set return value
2349    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
2350    rt->set_isarray(false);
2351    rt->set_type(GLMessage::DataType::ENUM);
2352    rt->add_intvalue((int)retValue);
2353
2354    void *pointerArgs[] = {
2355    };
2356
2357    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2358                              threadStartTime, threadEndTime,
2359                              &glmsg, pointerArgs);
2360    glContext->traceGLMessage(&glmsg);
2361
2362    return retValue;
2363}
2364
2365void GLTrace_glGetFloatv(GLenum pname, GLfloat * data) {
2366    GLMessage glmsg;
2367    GLTraceContext *glContext = getGLTraceContext();
2368
2369    glmsg.set_function(GLMessage::glGetFloatv);
2370
2371    // copy argument pname
2372    GLMessage_DataType *arg_pname = glmsg.add_args();
2373    arg_pname->set_isarray(false);
2374    arg_pname->set_type(GLMessage::DataType::ENUM);
2375    arg_pname->add_intvalue((int)pname);
2376
2377    // copy argument data
2378    GLMessage_DataType *arg_data = glmsg.add_args();
2379    arg_data->set_isarray(false);
2380    arg_data->set_type(GLMessage::DataType::INT64);
2381    arg_data->add_int64value((uintptr_t)data);
2382
2383    // call function
2384    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2385    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2386    glContext->hooks->gl.glGetFloatv(pname, data);
2387    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2388    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2389
2390    void *pointerArgs[] = {
2391        (void *) data,
2392    };
2393
2394    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2395                              threadStartTime, threadEndTime,
2396                              &glmsg, pointerArgs);
2397    glContext->traceGLMessage(&glmsg);
2398}
2399
2400void GLTrace_glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint * params) {
2401    GLMessage glmsg;
2402    GLTraceContext *glContext = getGLTraceContext();
2403
2404    glmsg.set_function(GLMessage::glGetFramebufferAttachmentParameteriv);
2405
2406    // copy argument target
2407    GLMessage_DataType *arg_target = glmsg.add_args();
2408    arg_target->set_isarray(false);
2409    arg_target->set_type(GLMessage::DataType::ENUM);
2410    arg_target->add_intvalue((int)target);
2411
2412    // copy argument attachment
2413    GLMessage_DataType *arg_attachment = glmsg.add_args();
2414    arg_attachment->set_isarray(false);
2415    arg_attachment->set_type(GLMessage::DataType::ENUM);
2416    arg_attachment->add_intvalue((int)attachment);
2417
2418    // copy argument pname
2419    GLMessage_DataType *arg_pname = glmsg.add_args();
2420    arg_pname->set_isarray(false);
2421    arg_pname->set_type(GLMessage::DataType::ENUM);
2422    arg_pname->add_intvalue((int)pname);
2423
2424    // copy argument params
2425    GLMessage_DataType *arg_params = glmsg.add_args();
2426    arg_params->set_isarray(false);
2427    arg_params->set_type(GLMessage::DataType::INT64);
2428    arg_params->add_int64value((uintptr_t)params);
2429
2430    // call function
2431    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2432    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2433    glContext->hooks->gl.glGetFramebufferAttachmentParameteriv(target, attachment, pname, params);
2434    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2435    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2436
2437    void *pointerArgs[] = {
2438        (void *) params,
2439    };
2440
2441    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2442                              threadStartTime, threadEndTime,
2443                              &glmsg, pointerArgs);
2444    glContext->traceGLMessage(&glmsg);
2445}
2446
2447void GLTrace_glGetIntegerv(GLenum pname, GLint * data) {
2448    GLMessage glmsg;
2449    GLTraceContext *glContext = getGLTraceContext();
2450
2451    glmsg.set_function(GLMessage::glGetIntegerv);
2452
2453    // copy argument pname
2454    GLMessage_DataType *arg_pname = glmsg.add_args();
2455    arg_pname->set_isarray(false);
2456    arg_pname->set_type(GLMessage::DataType::ENUM);
2457    arg_pname->add_intvalue((int)pname);
2458
2459    // copy argument data
2460    GLMessage_DataType *arg_data = glmsg.add_args();
2461    arg_data->set_isarray(false);
2462    arg_data->set_type(GLMessage::DataType::INT64);
2463    arg_data->add_int64value((uintptr_t)data);
2464
2465    // call function
2466    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2467    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2468    glContext->hooks->gl.glGetIntegerv(pname, data);
2469    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2470    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2471
2472    void *pointerArgs[] = {
2473        (void *) data,
2474    };
2475
2476    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2477                              threadStartTime, threadEndTime,
2478                              &glmsg, pointerArgs);
2479    glContext->traceGLMessage(&glmsg);
2480}
2481
2482void GLTrace_glGetProgramiv(GLuint program, GLenum pname, GLint * params) {
2483    GLMessage glmsg;
2484    GLTraceContext *glContext = getGLTraceContext();
2485
2486    glmsg.set_function(GLMessage::glGetProgramiv);
2487
2488    // copy argument program
2489    GLMessage_DataType *arg_program = glmsg.add_args();
2490    arg_program->set_isarray(false);
2491    arg_program->set_type(GLMessage::DataType::INT);
2492    arg_program->add_intvalue(program);
2493
2494    // copy argument pname
2495    GLMessage_DataType *arg_pname = glmsg.add_args();
2496    arg_pname->set_isarray(false);
2497    arg_pname->set_type(GLMessage::DataType::ENUM);
2498    arg_pname->add_intvalue((int)pname);
2499
2500    // copy argument params
2501    GLMessage_DataType *arg_params = glmsg.add_args();
2502    arg_params->set_isarray(false);
2503    arg_params->set_type(GLMessage::DataType::INT64);
2504    arg_params->add_int64value((uintptr_t)params);
2505
2506    // call function
2507    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2508    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2509    glContext->hooks->gl.glGetProgramiv(program, pname, params);
2510    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2511    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2512
2513    void *pointerArgs[] = {
2514        (void *) params,
2515    };
2516
2517    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2518                              threadStartTime, threadEndTime,
2519                              &glmsg, pointerArgs);
2520    glContext->traceGLMessage(&glmsg);
2521}
2522
2523void GLTrace_glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog) {
2524    GLMessage glmsg;
2525    GLTraceContext *glContext = getGLTraceContext();
2526
2527    glmsg.set_function(GLMessage::glGetProgramInfoLog);
2528
2529    // copy argument program
2530    GLMessage_DataType *arg_program = glmsg.add_args();
2531    arg_program->set_isarray(false);
2532    arg_program->set_type(GLMessage::DataType::INT);
2533    arg_program->add_intvalue(program);
2534
2535    // copy argument bufSize
2536    GLMessage_DataType *arg_bufSize = glmsg.add_args();
2537    arg_bufSize->set_isarray(false);
2538    arg_bufSize->set_type(GLMessage::DataType::INT);
2539    arg_bufSize->add_intvalue(bufSize);
2540
2541    // copy argument length
2542    GLMessage_DataType *arg_length = glmsg.add_args();
2543    arg_length->set_isarray(false);
2544    arg_length->set_type(GLMessage::DataType::INT64);
2545    arg_length->add_int64value((uintptr_t)length);
2546
2547    // copy argument infoLog
2548    GLMessage_DataType *arg_infoLog = glmsg.add_args();
2549    arg_infoLog->set_isarray(false);
2550    arg_infoLog->set_type(GLMessage::DataType::INT64);
2551    arg_infoLog->add_int64value((uintptr_t)infoLog);
2552
2553    // call function
2554    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2555    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2556    glContext->hooks->gl.glGetProgramInfoLog(program, bufSize, length, infoLog);
2557    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2558    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2559
2560    void *pointerArgs[] = {
2561        (void *) length,
2562        (void *) infoLog,
2563    };
2564
2565    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2566                              threadStartTime, threadEndTime,
2567                              &glmsg, pointerArgs);
2568    glContext->traceGLMessage(&glmsg);
2569}
2570
2571void GLTrace_glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint * params) {
2572    GLMessage glmsg;
2573    GLTraceContext *glContext = getGLTraceContext();
2574
2575    glmsg.set_function(GLMessage::glGetRenderbufferParameteriv);
2576
2577    // copy argument target
2578    GLMessage_DataType *arg_target = glmsg.add_args();
2579    arg_target->set_isarray(false);
2580    arg_target->set_type(GLMessage::DataType::ENUM);
2581    arg_target->add_intvalue((int)target);
2582
2583    // copy argument pname
2584    GLMessage_DataType *arg_pname = glmsg.add_args();
2585    arg_pname->set_isarray(false);
2586    arg_pname->set_type(GLMessage::DataType::ENUM);
2587    arg_pname->add_intvalue((int)pname);
2588
2589    // copy argument params
2590    GLMessage_DataType *arg_params = glmsg.add_args();
2591    arg_params->set_isarray(false);
2592    arg_params->set_type(GLMessage::DataType::INT64);
2593    arg_params->add_int64value((uintptr_t)params);
2594
2595    // call function
2596    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2597    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2598    glContext->hooks->gl.glGetRenderbufferParameteriv(target, pname, params);
2599    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2600    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2601
2602    void *pointerArgs[] = {
2603        (void *) params,
2604    };
2605
2606    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2607                              threadStartTime, threadEndTime,
2608                              &glmsg, pointerArgs);
2609    glContext->traceGLMessage(&glmsg);
2610}
2611
2612void GLTrace_glGetShaderiv(GLuint shader, GLenum pname, GLint * params) {
2613    GLMessage glmsg;
2614    GLTraceContext *glContext = getGLTraceContext();
2615
2616    glmsg.set_function(GLMessage::glGetShaderiv);
2617
2618    // copy argument shader
2619    GLMessage_DataType *arg_shader = glmsg.add_args();
2620    arg_shader->set_isarray(false);
2621    arg_shader->set_type(GLMessage::DataType::INT);
2622    arg_shader->add_intvalue(shader);
2623
2624    // copy argument pname
2625    GLMessage_DataType *arg_pname = glmsg.add_args();
2626    arg_pname->set_isarray(false);
2627    arg_pname->set_type(GLMessage::DataType::ENUM);
2628    arg_pname->add_intvalue((int)pname);
2629
2630    // copy argument params
2631    GLMessage_DataType *arg_params = glmsg.add_args();
2632    arg_params->set_isarray(false);
2633    arg_params->set_type(GLMessage::DataType::INT64);
2634    arg_params->add_int64value((uintptr_t)params);
2635
2636    // call function
2637    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2638    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2639    glContext->hooks->gl.glGetShaderiv(shader, pname, params);
2640    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2641    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2642
2643    void *pointerArgs[] = {
2644        (void *) params,
2645    };
2646
2647    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2648                              threadStartTime, threadEndTime,
2649                              &glmsg, pointerArgs);
2650    glContext->traceGLMessage(&glmsg);
2651}
2652
2653void GLTrace_glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog) {
2654    GLMessage glmsg;
2655    GLTraceContext *glContext = getGLTraceContext();
2656
2657    glmsg.set_function(GLMessage::glGetShaderInfoLog);
2658
2659    // copy argument shader
2660    GLMessage_DataType *arg_shader = glmsg.add_args();
2661    arg_shader->set_isarray(false);
2662    arg_shader->set_type(GLMessage::DataType::INT);
2663    arg_shader->add_intvalue(shader);
2664
2665    // copy argument bufSize
2666    GLMessage_DataType *arg_bufSize = glmsg.add_args();
2667    arg_bufSize->set_isarray(false);
2668    arg_bufSize->set_type(GLMessage::DataType::INT);
2669    arg_bufSize->add_intvalue(bufSize);
2670
2671    // copy argument length
2672    GLMessage_DataType *arg_length = glmsg.add_args();
2673    arg_length->set_isarray(false);
2674    arg_length->set_type(GLMessage::DataType::INT64);
2675    arg_length->add_int64value((uintptr_t)length);
2676
2677    // copy argument infoLog
2678    GLMessage_DataType *arg_infoLog = glmsg.add_args();
2679    arg_infoLog->set_isarray(false);
2680    arg_infoLog->set_type(GLMessage::DataType::INT64);
2681    arg_infoLog->add_int64value((uintptr_t)infoLog);
2682
2683    // call function
2684    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2685    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2686    glContext->hooks->gl.glGetShaderInfoLog(shader, bufSize, length, infoLog);
2687    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2688    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2689
2690    void *pointerArgs[] = {
2691        (void *) length,
2692        (void *) infoLog,
2693    };
2694
2695    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2696                              threadStartTime, threadEndTime,
2697                              &glmsg, pointerArgs);
2698    glContext->traceGLMessage(&glmsg);
2699}
2700
2701void GLTrace_glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint * range, GLint * precision) {
2702    GLMessage glmsg;
2703    GLTraceContext *glContext = getGLTraceContext();
2704
2705    glmsg.set_function(GLMessage::glGetShaderPrecisionFormat);
2706
2707    // copy argument shadertype
2708    GLMessage_DataType *arg_shadertype = glmsg.add_args();
2709    arg_shadertype->set_isarray(false);
2710    arg_shadertype->set_type(GLMessage::DataType::ENUM);
2711    arg_shadertype->add_intvalue((int)shadertype);
2712
2713    // copy argument precisiontype
2714    GLMessage_DataType *arg_precisiontype = glmsg.add_args();
2715    arg_precisiontype->set_isarray(false);
2716    arg_precisiontype->set_type(GLMessage::DataType::ENUM);
2717    arg_precisiontype->add_intvalue((int)precisiontype);
2718
2719    // copy argument range
2720    GLMessage_DataType *arg_range = glmsg.add_args();
2721    arg_range->set_isarray(false);
2722    arg_range->set_type(GLMessage::DataType::INT64);
2723    arg_range->add_int64value((uintptr_t)range);
2724
2725    // copy argument precision
2726    GLMessage_DataType *arg_precision = glmsg.add_args();
2727    arg_precision->set_isarray(false);
2728    arg_precision->set_type(GLMessage::DataType::INT64);
2729    arg_precision->add_int64value((uintptr_t)precision);
2730
2731    // call function
2732    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2733    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2734    glContext->hooks->gl.glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision);
2735    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2736    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2737
2738    void *pointerArgs[] = {
2739        (void *) range,
2740        (void *) precision,
2741    };
2742
2743    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2744                              threadStartTime, threadEndTime,
2745                              &glmsg, pointerArgs);
2746    glContext->traceGLMessage(&glmsg);
2747}
2748
2749void GLTrace_glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * source) {
2750    GLMessage glmsg;
2751    GLTraceContext *glContext = getGLTraceContext();
2752
2753    glmsg.set_function(GLMessage::glGetShaderSource);
2754
2755    // copy argument shader
2756    GLMessage_DataType *arg_shader = glmsg.add_args();
2757    arg_shader->set_isarray(false);
2758    arg_shader->set_type(GLMessage::DataType::INT);
2759    arg_shader->add_intvalue(shader);
2760
2761    // copy argument bufSize
2762    GLMessage_DataType *arg_bufSize = glmsg.add_args();
2763    arg_bufSize->set_isarray(false);
2764    arg_bufSize->set_type(GLMessage::DataType::INT);
2765    arg_bufSize->add_intvalue(bufSize);
2766
2767    // copy argument length
2768    GLMessage_DataType *arg_length = glmsg.add_args();
2769    arg_length->set_isarray(false);
2770    arg_length->set_type(GLMessage::DataType::INT64);
2771    arg_length->add_int64value((uintptr_t)length);
2772
2773    // copy argument source
2774    GLMessage_DataType *arg_source = glmsg.add_args();
2775    arg_source->set_isarray(false);
2776    arg_source->set_type(GLMessage::DataType::INT64);
2777    arg_source->add_int64value((uintptr_t)source);
2778
2779    // call function
2780    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2781    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2782    glContext->hooks->gl.glGetShaderSource(shader, bufSize, length, source);
2783    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2784    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2785
2786    void *pointerArgs[] = {
2787        (void *) length,
2788        (void *) source,
2789    };
2790
2791    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2792                              threadStartTime, threadEndTime,
2793                              &glmsg, pointerArgs);
2794    glContext->traceGLMessage(&glmsg);
2795}
2796
2797const GLubyte * GLTrace_glGetString(GLenum name) {
2798    GLMessage glmsg;
2799    GLTraceContext *glContext = getGLTraceContext();
2800
2801    glmsg.set_function(GLMessage::glGetString);
2802
2803    // copy argument name
2804    GLMessage_DataType *arg_name = glmsg.add_args();
2805    arg_name->set_isarray(false);
2806    arg_name->set_type(GLMessage::DataType::ENUM);
2807    arg_name->add_intvalue((int)name);
2808
2809    // call function
2810    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2811    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2812    const GLubyte * retValue = glContext->hooks->gl.glGetString(name);
2813    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2814    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2815
2816    // set return value
2817    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
2818    rt->set_isarray(false);
2819    rt->set_type(GLMessage::DataType::INT64);
2820    rt->add_int64value((uintptr_t)retValue);
2821
2822    void *pointerArgs[] = {
2823        (void *) retValue,
2824    };
2825
2826    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2827                              threadStartTime, threadEndTime,
2828                              &glmsg, pointerArgs);
2829    glContext->traceGLMessage(&glmsg);
2830
2831    return retValue;
2832}
2833
2834void GLTrace_glGetTexParameterfv(GLenum target, GLenum pname, GLfloat * params) {
2835    GLMessage glmsg;
2836    GLTraceContext *glContext = getGLTraceContext();
2837
2838    glmsg.set_function(GLMessage::glGetTexParameterfv);
2839
2840    // copy argument target
2841    GLMessage_DataType *arg_target = glmsg.add_args();
2842    arg_target->set_isarray(false);
2843    arg_target->set_type(GLMessage::DataType::ENUM);
2844    arg_target->add_intvalue((int)target);
2845
2846    // copy argument pname
2847    GLMessage_DataType *arg_pname = glmsg.add_args();
2848    arg_pname->set_isarray(false);
2849    arg_pname->set_type(GLMessage::DataType::ENUM);
2850    arg_pname->add_intvalue((int)pname);
2851
2852    // copy argument params
2853    GLMessage_DataType *arg_params = glmsg.add_args();
2854    arg_params->set_isarray(false);
2855    arg_params->set_type(GLMessage::DataType::INT64);
2856    arg_params->add_int64value((uintptr_t)params);
2857
2858    // call function
2859    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2860    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2861    glContext->hooks->gl.glGetTexParameterfv(target, pname, params);
2862    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2863    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2864
2865    void *pointerArgs[] = {
2866        (void *) params,
2867    };
2868
2869    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2870                              threadStartTime, threadEndTime,
2871                              &glmsg, pointerArgs);
2872    glContext->traceGLMessage(&glmsg);
2873}
2874
2875void GLTrace_glGetTexParameteriv(GLenum target, GLenum pname, GLint * params) {
2876    GLMessage glmsg;
2877    GLTraceContext *glContext = getGLTraceContext();
2878
2879    glmsg.set_function(GLMessage::glGetTexParameteriv);
2880
2881    // copy argument target
2882    GLMessage_DataType *arg_target = glmsg.add_args();
2883    arg_target->set_isarray(false);
2884    arg_target->set_type(GLMessage::DataType::ENUM);
2885    arg_target->add_intvalue((int)target);
2886
2887    // copy argument pname
2888    GLMessage_DataType *arg_pname = glmsg.add_args();
2889    arg_pname->set_isarray(false);
2890    arg_pname->set_type(GLMessage::DataType::ENUM);
2891    arg_pname->add_intvalue((int)pname);
2892
2893    // copy argument params
2894    GLMessage_DataType *arg_params = glmsg.add_args();
2895    arg_params->set_isarray(false);
2896    arg_params->set_type(GLMessage::DataType::INT64);
2897    arg_params->add_int64value((uintptr_t)params);
2898
2899    // call function
2900    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2901    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2902    glContext->hooks->gl.glGetTexParameteriv(target, pname, params);
2903    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2904    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2905
2906    void *pointerArgs[] = {
2907        (void *) params,
2908    };
2909
2910    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2911                              threadStartTime, threadEndTime,
2912                              &glmsg, pointerArgs);
2913    glContext->traceGLMessage(&glmsg);
2914}
2915
2916void GLTrace_glGetUniformfv(GLuint program, GLint location, GLfloat * params) {
2917    GLMessage glmsg;
2918    GLTraceContext *glContext = getGLTraceContext();
2919
2920    glmsg.set_function(GLMessage::glGetUniformfv);
2921
2922    // copy argument program
2923    GLMessage_DataType *arg_program = glmsg.add_args();
2924    arg_program->set_isarray(false);
2925    arg_program->set_type(GLMessage::DataType::INT);
2926    arg_program->add_intvalue(program);
2927
2928    // copy argument location
2929    GLMessage_DataType *arg_location = glmsg.add_args();
2930    arg_location->set_isarray(false);
2931    arg_location->set_type(GLMessage::DataType::INT);
2932    arg_location->add_intvalue(location);
2933
2934    // copy argument params
2935    GLMessage_DataType *arg_params = glmsg.add_args();
2936    arg_params->set_isarray(false);
2937    arg_params->set_type(GLMessage::DataType::INT64);
2938    arg_params->add_int64value((uintptr_t)params);
2939
2940    // call function
2941    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2942    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2943    glContext->hooks->gl.glGetUniformfv(program, location, params);
2944    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2945    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2946
2947    void *pointerArgs[] = {
2948        (void *) params,
2949    };
2950
2951    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2952                              threadStartTime, threadEndTime,
2953                              &glmsg, pointerArgs);
2954    glContext->traceGLMessage(&glmsg);
2955}
2956
2957void GLTrace_glGetUniformiv(GLuint program, GLint location, GLint * params) {
2958    GLMessage glmsg;
2959    GLTraceContext *glContext = getGLTraceContext();
2960
2961    glmsg.set_function(GLMessage::glGetUniformiv);
2962
2963    // copy argument program
2964    GLMessage_DataType *arg_program = glmsg.add_args();
2965    arg_program->set_isarray(false);
2966    arg_program->set_type(GLMessage::DataType::INT);
2967    arg_program->add_intvalue(program);
2968
2969    // copy argument location
2970    GLMessage_DataType *arg_location = glmsg.add_args();
2971    arg_location->set_isarray(false);
2972    arg_location->set_type(GLMessage::DataType::INT);
2973    arg_location->add_intvalue(location);
2974
2975    // copy argument params
2976    GLMessage_DataType *arg_params = glmsg.add_args();
2977    arg_params->set_isarray(false);
2978    arg_params->set_type(GLMessage::DataType::INT64);
2979    arg_params->add_int64value((uintptr_t)params);
2980
2981    // call function
2982    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2983    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2984    glContext->hooks->gl.glGetUniformiv(program, location, params);
2985    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2986    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2987
2988    void *pointerArgs[] = {
2989        (void *) params,
2990    };
2991
2992    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2993                              threadStartTime, threadEndTime,
2994                              &glmsg, pointerArgs);
2995    glContext->traceGLMessage(&glmsg);
2996}
2997
2998GLint GLTrace_glGetUniformLocation(GLuint program, const GLchar * name) {
2999    GLMessage glmsg;
3000    GLTraceContext *glContext = getGLTraceContext();
3001
3002    glmsg.set_function(GLMessage::glGetUniformLocation);
3003
3004    // copy argument program
3005    GLMessage_DataType *arg_program = glmsg.add_args();
3006    arg_program->set_isarray(false);
3007    arg_program->set_type(GLMessage::DataType::INT);
3008    arg_program->add_intvalue(program);
3009
3010    // copy argument name
3011    GLMessage_DataType *arg_name = glmsg.add_args();
3012    arg_name->set_isarray(false);
3013    arg_name->set_type(GLMessage::DataType::INT64);
3014    arg_name->add_int64value((uintptr_t)name);
3015
3016    // call function
3017    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3018    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3019    GLint retValue = glContext->hooks->gl.glGetUniformLocation(program, name);
3020    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3021    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3022
3023    // set return value
3024    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
3025    rt->set_isarray(false);
3026    rt->set_type(GLMessage::DataType::INT);
3027    rt->add_intvalue(retValue);
3028
3029    void *pointerArgs[] = {
3030        (void *) name,
3031    };
3032
3033    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3034                              threadStartTime, threadEndTime,
3035                              &glmsg, pointerArgs);
3036    glContext->traceGLMessage(&glmsg);
3037
3038    return retValue;
3039}
3040
3041void GLTrace_glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat * params) {
3042    GLMessage glmsg;
3043    GLTraceContext *glContext = getGLTraceContext();
3044
3045    glmsg.set_function(GLMessage::glGetVertexAttribfv);
3046
3047    // copy argument index
3048    GLMessage_DataType *arg_index = glmsg.add_args();
3049    arg_index->set_isarray(false);
3050    arg_index->set_type(GLMessage::DataType::INT);
3051    arg_index->add_intvalue(index);
3052
3053    // copy argument pname
3054    GLMessage_DataType *arg_pname = glmsg.add_args();
3055    arg_pname->set_isarray(false);
3056    arg_pname->set_type(GLMessage::DataType::ENUM);
3057    arg_pname->add_intvalue((int)pname);
3058
3059    // copy argument params
3060    GLMessage_DataType *arg_params = glmsg.add_args();
3061    arg_params->set_isarray(false);
3062    arg_params->set_type(GLMessage::DataType::INT64);
3063    arg_params->add_int64value((uintptr_t)params);
3064
3065    // call function
3066    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3067    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3068    glContext->hooks->gl.glGetVertexAttribfv(index, pname, params);
3069    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3070    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3071
3072    void *pointerArgs[] = {
3073        (void *) params,
3074    };
3075
3076    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3077                              threadStartTime, threadEndTime,
3078                              &glmsg, pointerArgs);
3079    glContext->traceGLMessage(&glmsg);
3080}
3081
3082void GLTrace_glGetVertexAttribiv(GLuint index, GLenum pname, GLint * params) {
3083    GLMessage glmsg;
3084    GLTraceContext *glContext = getGLTraceContext();
3085
3086    glmsg.set_function(GLMessage::glGetVertexAttribiv);
3087
3088    // copy argument index
3089    GLMessage_DataType *arg_index = glmsg.add_args();
3090    arg_index->set_isarray(false);
3091    arg_index->set_type(GLMessage::DataType::INT);
3092    arg_index->add_intvalue(index);
3093
3094    // copy argument pname
3095    GLMessage_DataType *arg_pname = glmsg.add_args();
3096    arg_pname->set_isarray(false);
3097    arg_pname->set_type(GLMessage::DataType::ENUM);
3098    arg_pname->add_intvalue((int)pname);
3099
3100    // copy argument params
3101    GLMessage_DataType *arg_params = glmsg.add_args();
3102    arg_params->set_isarray(false);
3103    arg_params->set_type(GLMessage::DataType::INT64);
3104    arg_params->add_int64value((uintptr_t)params);
3105
3106    // call function
3107    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3108    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3109    glContext->hooks->gl.glGetVertexAttribiv(index, pname, params);
3110    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3111    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3112
3113    void *pointerArgs[] = {
3114        (void *) params,
3115    };
3116
3117    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3118                              threadStartTime, threadEndTime,
3119                              &glmsg, pointerArgs);
3120    glContext->traceGLMessage(&glmsg);
3121}
3122
3123void GLTrace_glGetVertexAttribPointerv(GLuint index, GLenum pname, void ** pointer) {
3124    GLMessage glmsg;
3125    GLTraceContext *glContext = getGLTraceContext();
3126
3127    glmsg.set_function(GLMessage::glGetVertexAttribPointerv);
3128
3129    // copy argument index
3130    GLMessage_DataType *arg_index = glmsg.add_args();
3131    arg_index->set_isarray(false);
3132    arg_index->set_type(GLMessage::DataType::INT);
3133    arg_index->add_intvalue(index);
3134
3135    // copy argument pname
3136    GLMessage_DataType *arg_pname = glmsg.add_args();
3137    arg_pname->set_isarray(false);
3138    arg_pname->set_type(GLMessage::DataType::ENUM);
3139    arg_pname->add_intvalue((int)pname);
3140
3141    // copy argument pointer
3142    GLMessage_DataType *arg_pointer = glmsg.add_args();
3143    arg_pointer->set_isarray(false);
3144    arg_pointer->set_type(GLMessage::DataType::INT64);
3145    arg_pointer->add_int64value((uintptr_t)pointer);
3146
3147    // call function
3148    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3149    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3150    glContext->hooks->gl.glGetVertexAttribPointerv(index, pname, pointer);
3151    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3152    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3153
3154    void *pointerArgs[] = {
3155        (void *) pointer,
3156    };
3157
3158    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3159                              threadStartTime, threadEndTime,
3160                              &glmsg, pointerArgs);
3161    glContext->traceGLMessage(&glmsg);
3162}
3163
3164void GLTrace_glHint(GLenum target, GLenum mode) {
3165    GLMessage glmsg;
3166    GLTraceContext *glContext = getGLTraceContext();
3167
3168    glmsg.set_function(GLMessage::glHint);
3169
3170    // copy argument target
3171    GLMessage_DataType *arg_target = glmsg.add_args();
3172    arg_target->set_isarray(false);
3173    arg_target->set_type(GLMessage::DataType::ENUM);
3174    arg_target->add_intvalue((int)target);
3175
3176    // copy argument mode
3177    GLMessage_DataType *arg_mode = glmsg.add_args();
3178    arg_mode->set_isarray(false);
3179    arg_mode->set_type(GLMessage::DataType::ENUM);
3180    arg_mode->add_intvalue((int)mode);
3181
3182    // call function
3183    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3184    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3185    glContext->hooks->gl.glHint(target, mode);
3186    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3187    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3188
3189    void *pointerArgs[] = {
3190    };
3191
3192    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3193                              threadStartTime, threadEndTime,
3194                              &glmsg, pointerArgs);
3195    glContext->traceGLMessage(&glmsg);
3196}
3197
3198GLboolean GLTrace_glIsBuffer(GLuint buffer) {
3199    GLMessage glmsg;
3200    GLTraceContext *glContext = getGLTraceContext();
3201
3202    glmsg.set_function(GLMessage::glIsBuffer);
3203
3204    // copy argument buffer
3205    GLMessage_DataType *arg_buffer = glmsg.add_args();
3206    arg_buffer->set_isarray(false);
3207    arg_buffer->set_type(GLMessage::DataType::INT);
3208    arg_buffer->add_intvalue(buffer);
3209
3210    // call function
3211    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3212    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3213    GLboolean retValue = glContext->hooks->gl.glIsBuffer(buffer);
3214    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3215    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3216
3217    // set return value
3218    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
3219    rt->set_isarray(false);
3220    rt->set_type(GLMessage::DataType::BOOL);
3221    rt->add_boolvalue(retValue);
3222
3223    void *pointerArgs[] = {
3224    };
3225
3226    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3227                              threadStartTime, threadEndTime,
3228                              &glmsg, pointerArgs);
3229    glContext->traceGLMessage(&glmsg);
3230
3231    return retValue;
3232}
3233
3234GLboolean GLTrace_glIsEnabled(GLenum cap) {
3235    GLMessage glmsg;
3236    GLTraceContext *glContext = getGLTraceContext();
3237
3238    glmsg.set_function(GLMessage::glIsEnabled);
3239
3240    // copy argument cap
3241    GLMessage_DataType *arg_cap = glmsg.add_args();
3242    arg_cap->set_isarray(false);
3243    arg_cap->set_type(GLMessage::DataType::ENUM);
3244    arg_cap->add_intvalue((int)cap);
3245
3246    // call function
3247    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3248    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3249    GLboolean retValue = glContext->hooks->gl.glIsEnabled(cap);
3250    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3251    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3252
3253    // set return value
3254    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
3255    rt->set_isarray(false);
3256    rt->set_type(GLMessage::DataType::BOOL);
3257    rt->add_boolvalue(retValue);
3258
3259    void *pointerArgs[] = {
3260    };
3261
3262    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3263                              threadStartTime, threadEndTime,
3264                              &glmsg, pointerArgs);
3265    glContext->traceGLMessage(&glmsg);
3266
3267    return retValue;
3268}
3269
3270GLboolean GLTrace_glIsFramebuffer(GLuint framebuffer) {
3271    GLMessage glmsg;
3272    GLTraceContext *glContext = getGLTraceContext();
3273
3274    glmsg.set_function(GLMessage::glIsFramebuffer);
3275
3276    // copy argument framebuffer
3277    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
3278    arg_framebuffer->set_isarray(false);
3279    arg_framebuffer->set_type(GLMessage::DataType::INT);
3280    arg_framebuffer->add_intvalue(framebuffer);
3281
3282    // call function
3283    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3284    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3285    GLboolean retValue = glContext->hooks->gl.glIsFramebuffer(framebuffer);
3286    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3287    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3288
3289    // set return value
3290    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
3291    rt->set_isarray(false);
3292    rt->set_type(GLMessage::DataType::BOOL);
3293    rt->add_boolvalue(retValue);
3294
3295    void *pointerArgs[] = {
3296    };
3297
3298    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3299                              threadStartTime, threadEndTime,
3300                              &glmsg, pointerArgs);
3301    glContext->traceGLMessage(&glmsg);
3302
3303    return retValue;
3304}
3305
3306GLboolean GLTrace_glIsProgram(GLuint program) {
3307    GLMessage glmsg;
3308    GLTraceContext *glContext = getGLTraceContext();
3309
3310    glmsg.set_function(GLMessage::glIsProgram);
3311
3312    // copy argument program
3313    GLMessage_DataType *arg_program = glmsg.add_args();
3314    arg_program->set_isarray(false);
3315    arg_program->set_type(GLMessage::DataType::INT);
3316    arg_program->add_intvalue(program);
3317
3318    // call function
3319    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3320    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3321    GLboolean retValue = glContext->hooks->gl.glIsProgram(program);
3322    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3323    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3324
3325    // set return value
3326    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
3327    rt->set_isarray(false);
3328    rt->set_type(GLMessage::DataType::BOOL);
3329    rt->add_boolvalue(retValue);
3330
3331    void *pointerArgs[] = {
3332    };
3333
3334    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3335                              threadStartTime, threadEndTime,
3336                              &glmsg, pointerArgs);
3337    glContext->traceGLMessage(&glmsg);
3338
3339    return retValue;
3340}
3341
3342GLboolean GLTrace_glIsRenderbuffer(GLuint renderbuffer) {
3343    GLMessage glmsg;
3344    GLTraceContext *glContext = getGLTraceContext();
3345
3346    glmsg.set_function(GLMessage::glIsRenderbuffer);
3347
3348    // copy argument renderbuffer
3349    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
3350    arg_renderbuffer->set_isarray(false);
3351    arg_renderbuffer->set_type(GLMessage::DataType::INT);
3352    arg_renderbuffer->add_intvalue(renderbuffer);
3353
3354    // call function
3355    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3356    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3357    GLboolean retValue = glContext->hooks->gl.glIsRenderbuffer(renderbuffer);
3358    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3359    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3360
3361    // set return value
3362    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
3363    rt->set_isarray(false);
3364    rt->set_type(GLMessage::DataType::BOOL);
3365    rt->add_boolvalue(retValue);
3366
3367    void *pointerArgs[] = {
3368    };
3369
3370    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3371                              threadStartTime, threadEndTime,
3372                              &glmsg, pointerArgs);
3373    glContext->traceGLMessage(&glmsg);
3374
3375    return retValue;
3376}
3377
3378GLboolean GLTrace_glIsShader(GLuint shader) {
3379    GLMessage glmsg;
3380    GLTraceContext *glContext = getGLTraceContext();
3381
3382    glmsg.set_function(GLMessage::glIsShader);
3383
3384    // copy argument shader
3385    GLMessage_DataType *arg_shader = glmsg.add_args();
3386    arg_shader->set_isarray(false);
3387    arg_shader->set_type(GLMessage::DataType::INT);
3388    arg_shader->add_intvalue(shader);
3389
3390    // call function
3391    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3392    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3393    GLboolean retValue = glContext->hooks->gl.glIsShader(shader);
3394    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3395    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3396
3397    // set return value
3398    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
3399    rt->set_isarray(false);
3400    rt->set_type(GLMessage::DataType::BOOL);
3401    rt->add_boolvalue(retValue);
3402
3403    void *pointerArgs[] = {
3404    };
3405
3406    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3407                              threadStartTime, threadEndTime,
3408                              &glmsg, pointerArgs);
3409    glContext->traceGLMessage(&glmsg);
3410
3411    return retValue;
3412}
3413
3414GLboolean GLTrace_glIsTexture(GLuint texture) {
3415    GLMessage glmsg;
3416    GLTraceContext *glContext = getGLTraceContext();
3417
3418    glmsg.set_function(GLMessage::glIsTexture);
3419
3420    // copy argument texture
3421    GLMessage_DataType *arg_texture = glmsg.add_args();
3422    arg_texture->set_isarray(false);
3423    arg_texture->set_type(GLMessage::DataType::INT);
3424    arg_texture->add_intvalue(texture);
3425
3426    // call function
3427    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3428    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3429    GLboolean retValue = glContext->hooks->gl.glIsTexture(texture);
3430    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3431    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3432
3433    // set return value
3434    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
3435    rt->set_isarray(false);
3436    rt->set_type(GLMessage::DataType::BOOL);
3437    rt->add_boolvalue(retValue);
3438
3439    void *pointerArgs[] = {
3440    };
3441
3442    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3443                              threadStartTime, threadEndTime,
3444                              &glmsg, pointerArgs);
3445    glContext->traceGLMessage(&glmsg);
3446
3447    return retValue;
3448}
3449
3450void GLTrace_glLineWidth(GLfloat width) {
3451    GLMessage glmsg;
3452    GLTraceContext *glContext = getGLTraceContext();
3453
3454    glmsg.set_function(GLMessage::glLineWidth);
3455
3456    // copy argument width
3457    GLMessage_DataType *arg_width = glmsg.add_args();
3458    arg_width->set_isarray(false);
3459    arg_width->set_type(GLMessage::DataType::FLOAT);
3460    arg_width->add_floatvalue(width);
3461
3462    // call function
3463    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3464    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3465    glContext->hooks->gl.glLineWidth(width);
3466    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3467    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3468
3469    void *pointerArgs[] = {
3470    };
3471
3472    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3473                              threadStartTime, threadEndTime,
3474                              &glmsg, pointerArgs);
3475    glContext->traceGLMessage(&glmsg);
3476}
3477
3478void GLTrace_glLinkProgram(GLuint program) {
3479    GLMessage glmsg;
3480    GLTraceContext *glContext = getGLTraceContext();
3481
3482    glmsg.set_function(GLMessage::glLinkProgram);
3483
3484    // copy argument program
3485    GLMessage_DataType *arg_program = glmsg.add_args();
3486    arg_program->set_isarray(false);
3487    arg_program->set_type(GLMessage::DataType::INT);
3488    arg_program->add_intvalue(program);
3489
3490    // call function
3491    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3492    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3493    glContext->hooks->gl.glLinkProgram(program);
3494    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3495    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3496
3497    void *pointerArgs[] = {
3498    };
3499
3500    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3501                              threadStartTime, threadEndTime,
3502                              &glmsg, pointerArgs);
3503    glContext->traceGLMessage(&glmsg);
3504}
3505
3506void GLTrace_glPixelStorei(GLenum pname, GLint param) {
3507    GLMessage glmsg;
3508    GLTraceContext *glContext = getGLTraceContext();
3509
3510    glmsg.set_function(GLMessage::glPixelStorei);
3511
3512    // copy argument pname
3513    GLMessage_DataType *arg_pname = glmsg.add_args();
3514    arg_pname->set_isarray(false);
3515    arg_pname->set_type(GLMessage::DataType::ENUM);
3516    arg_pname->add_intvalue((int)pname);
3517
3518    // copy argument param
3519    GLMessage_DataType *arg_param = glmsg.add_args();
3520    arg_param->set_isarray(false);
3521    arg_param->set_type(GLMessage::DataType::INT);
3522    arg_param->add_intvalue(param);
3523
3524    // call function
3525    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3526    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3527    glContext->hooks->gl.glPixelStorei(pname, param);
3528    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3529    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3530
3531    void *pointerArgs[] = {
3532    };
3533
3534    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3535                              threadStartTime, threadEndTime,
3536                              &glmsg, pointerArgs);
3537    glContext->traceGLMessage(&glmsg);
3538}
3539
3540void GLTrace_glPolygonOffset(GLfloat factor, GLfloat units) {
3541    GLMessage glmsg;
3542    GLTraceContext *glContext = getGLTraceContext();
3543
3544    glmsg.set_function(GLMessage::glPolygonOffset);
3545
3546    // copy argument factor
3547    GLMessage_DataType *arg_factor = glmsg.add_args();
3548    arg_factor->set_isarray(false);
3549    arg_factor->set_type(GLMessage::DataType::FLOAT);
3550    arg_factor->add_floatvalue(factor);
3551
3552    // copy argument units
3553    GLMessage_DataType *arg_units = glmsg.add_args();
3554    arg_units->set_isarray(false);
3555    arg_units->set_type(GLMessage::DataType::FLOAT);
3556    arg_units->add_floatvalue(units);
3557
3558    // call function
3559    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3560    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3561    glContext->hooks->gl.glPolygonOffset(factor, units);
3562    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3563    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3564
3565    void *pointerArgs[] = {
3566    };
3567
3568    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3569                              threadStartTime, threadEndTime,
3570                              &glmsg, pointerArgs);
3571    glContext->traceGLMessage(&glmsg);
3572}
3573
3574void GLTrace_glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void * pixels) {
3575    GLMessage glmsg;
3576    GLTraceContext *glContext = getGLTraceContext();
3577
3578    glmsg.set_function(GLMessage::glReadPixels);
3579
3580    // copy argument x
3581    GLMessage_DataType *arg_x = glmsg.add_args();
3582    arg_x->set_isarray(false);
3583    arg_x->set_type(GLMessage::DataType::INT);
3584    arg_x->add_intvalue(x);
3585
3586    // copy argument y
3587    GLMessage_DataType *arg_y = glmsg.add_args();
3588    arg_y->set_isarray(false);
3589    arg_y->set_type(GLMessage::DataType::INT);
3590    arg_y->add_intvalue(y);
3591
3592    // copy argument width
3593    GLMessage_DataType *arg_width = glmsg.add_args();
3594    arg_width->set_isarray(false);
3595    arg_width->set_type(GLMessage::DataType::INT);
3596    arg_width->add_intvalue(width);
3597
3598    // copy argument height
3599    GLMessage_DataType *arg_height = glmsg.add_args();
3600    arg_height->set_isarray(false);
3601    arg_height->set_type(GLMessage::DataType::INT);
3602    arg_height->add_intvalue(height);
3603
3604    // copy argument format
3605    GLMessage_DataType *arg_format = glmsg.add_args();
3606    arg_format->set_isarray(false);
3607    arg_format->set_type(GLMessage::DataType::ENUM);
3608    arg_format->add_intvalue((int)format);
3609
3610    // copy argument type
3611    GLMessage_DataType *arg_type = glmsg.add_args();
3612    arg_type->set_isarray(false);
3613    arg_type->set_type(GLMessage::DataType::ENUM);
3614    arg_type->add_intvalue((int)type);
3615
3616    // copy argument pixels
3617    GLMessage_DataType *arg_pixels = glmsg.add_args();
3618    arg_pixels->set_isarray(false);
3619    arg_pixels->set_type(GLMessage::DataType::INT64);
3620    arg_pixels->add_int64value((uintptr_t)pixels);
3621
3622    // call function
3623    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3624    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3625    glContext->hooks->gl.glReadPixels(x, y, width, height, format, type, pixels);
3626    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3627    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3628
3629    void *pointerArgs[] = {
3630        (void *) pixels,
3631    };
3632
3633    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3634                              threadStartTime, threadEndTime,
3635                              &glmsg, pointerArgs);
3636    glContext->traceGLMessage(&glmsg);
3637}
3638
3639void GLTrace_glReleaseShaderCompiler(void) {
3640    GLMessage glmsg;
3641    GLTraceContext *glContext = getGLTraceContext();
3642
3643    glmsg.set_function(GLMessage::glReleaseShaderCompiler);
3644
3645    // call function
3646    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3647    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3648    glContext->hooks->gl.glReleaseShaderCompiler();
3649    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3650    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3651
3652    void *pointerArgs[] = {
3653    };
3654
3655    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3656                              threadStartTime, threadEndTime,
3657                              &glmsg, pointerArgs);
3658    glContext->traceGLMessage(&glmsg);
3659}
3660
3661void GLTrace_glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) {
3662    GLMessage glmsg;
3663    GLTraceContext *glContext = getGLTraceContext();
3664
3665    glmsg.set_function(GLMessage::glRenderbufferStorage);
3666
3667    // copy argument target
3668    GLMessage_DataType *arg_target = glmsg.add_args();
3669    arg_target->set_isarray(false);
3670    arg_target->set_type(GLMessage::DataType::ENUM);
3671    arg_target->add_intvalue((int)target);
3672
3673    // copy argument internalformat
3674    GLMessage_DataType *arg_internalformat = glmsg.add_args();
3675    arg_internalformat->set_isarray(false);
3676    arg_internalformat->set_type(GLMessage::DataType::ENUM);
3677    arg_internalformat->add_intvalue((int)internalformat);
3678
3679    // copy argument width
3680    GLMessage_DataType *arg_width = glmsg.add_args();
3681    arg_width->set_isarray(false);
3682    arg_width->set_type(GLMessage::DataType::INT);
3683    arg_width->add_intvalue(width);
3684
3685    // copy argument height
3686    GLMessage_DataType *arg_height = glmsg.add_args();
3687    arg_height->set_isarray(false);
3688    arg_height->set_type(GLMessage::DataType::INT);
3689    arg_height->add_intvalue(height);
3690
3691    // call function
3692    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3693    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3694    glContext->hooks->gl.glRenderbufferStorage(target, internalformat, width, height);
3695    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3696    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3697
3698    void *pointerArgs[] = {
3699    };
3700
3701    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3702                              threadStartTime, threadEndTime,
3703                              &glmsg, pointerArgs);
3704    glContext->traceGLMessage(&glmsg);
3705}
3706
3707void GLTrace_glSampleCoverage(GLfloat value, GLboolean invert) {
3708    GLMessage glmsg;
3709    GLTraceContext *glContext = getGLTraceContext();
3710
3711    glmsg.set_function(GLMessage::glSampleCoverage);
3712
3713    // copy argument value
3714    GLMessage_DataType *arg_value = glmsg.add_args();
3715    arg_value->set_isarray(false);
3716    arg_value->set_type(GLMessage::DataType::FLOAT);
3717    arg_value->add_floatvalue(value);
3718
3719    // copy argument invert
3720    GLMessage_DataType *arg_invert = glmsg.add_args();
3721    arg_invert->set_isarray(false);
3722    arg_invert->set_type(GLMessage::DataType::BOOL);
3723    arg_invert->add_boolvalue(invert);
3724
3725    // call function
3726    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3727    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3728    glContext->hooks->gl.glSampleCoverage(value, invert);
3729    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3730    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3731
3732    void *pointerArgs[] = {
3733    };
3734
3735    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3736                              threadStartTime, threadEndTime,
3737                              &glmsg, pointerArgs);
3738    glContext->traceGLMessage(&glmsg);
3739}
3740
3741void GLTrace_glScissor(GLint x, GLint y, GLsizei width, GLsizei height) {
3742    GLMessage glmsg;
3743    GLTraceContext *glContext = getGLTraceContext();
3744
3745    glmsg.set_function(GLMessage::glScissor);
3746
3747    // copy argument x
3748    GLMessage_DataType *arg_x = glmsg.add_args();
3749    arg_x->set_isarray(false);
3750    arg_x->set_type(GLMessage::DataType::INT);
3751    arg_x->add_intvalue(x);
3752
3753    // copy argument y
3754    GLMessage_DataType *arg_y = glmsg.add_args();
3755    arg_y->set_isarray(false);
3756    arg_y->set_type(GLMessage::DataType::INT);
3757    arg_y->add_intvalue(y);
3758
3759    // copy argument width
3760    GLMessage_DataType *arg_width = glmsg.add_args();
3761    arg_width->set_isarray(false);
3762    arg_width->set_type(GLMessage::DataType::INT);
3763    arg_width->add_intvalue(width);
3764
3765    // copy argument height
3766    GLMessage_DataType *arg_height = glmsg.add_args();
3767    arg_height->set_isarray(false);
3768    arg_height->set_type(GLMessage::DataType::INT);
3769    arg_height->add_intvalue(height);
3770
3771    // call function
3772    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3773    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3774    glContext->hooks->gl.glScissor(x, y, width, height);
3775    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3776    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3777
3778    void *pointerArgs[] = {
3779    };
3780
3781    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3782                              threadStartTime, threadEndTime,
3783                              &glmsg, pointerArgs);
3784    glContext->traceGLMessage(&glmsg);
3785}
3786
3787void GLTrace_glShaderBinary(GLsizei count, const GLuint * shaders, GLenum binaryformat, const void * binary, GLsizei length) {
3788    GLMessage glmsg;
3789    GLTraceContext *glContext = getGLTraceContext();
3790
3791    glmsg.set_function(GLMessage::glShaderBinary);
3792
3793    // copy argument count
3794    GLMessage_DataType *arg_count = glmsg.add_args();
3795    arg_count->set_isarray(false);
3796    arg_count->set_type(GLMessage::DataType::INT);
3797    arg_count->add_intvalue(count);
3798
3799    // copy argument shaders
3800    GLMessage_DataType *arg_shaders = glmsg.add_args();
3801    arg_shaders->set_isarray(false);
3802    arg_shaders->set_type(GLMessage::DataType::INT64);
3803    arg_shaders->add_int64value((uintptr_t)shaders);
3804
3805    // copy argument binaryformat
3806    GLMessage_DataType *arg_binaryformat = glmsg.add_args();
3807    arg_binaryformat->set_isarray(false);
3808    arg_binaryformat->set_type(GLMessage::DataType::ENUM);
3809    arg_binaryformat->add_intvalue((int)binaryformat);
3810
3811    // copy argument binary
3812    GLMessage_DataType *arg_binary = glmsg.add_args();
3813    arg_binary->set_isarray(false);
3814    arg_binary->set_type(GLMessage::DataType::INT64);
3815    arg_binary->add_int64value((uintptr_t)binary);
3816
3817    // copy argument length
3818    GLMessage_DataType *arg_length = glmsg.add_args();
3819    arg_length->set_isarray(false);
3820    arg_length->set_type(GLMessage::DataType::INT);
3821    arg_length->add_intvalue(length);
3822
3823    // call function
3824    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3825    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3826    glContext->hooks->gl.glShaderBinary(count, shaders, binaryformat, binary, length);
3827    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3828    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3829
3830    void *pointerArgs[] = {
3831        (void *) shaders,
3832        (void *) binary,
3833    };
3834
3835    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3836                              threadStartTime, threadEndTime,
3837                              &glmsg, pointerArgs);
3838    glContext->traceGLMessage(&glmsg);
3839}
3840
3841void GLTrace_glShaderSource(GLuint shader, GLsizei count, const GLchar *const* string, const GLint * length) {
3842    GLMessage glmsg;
3843    GLTraceContext *glContext = getGLTraceContext();
3844
3845    glmsg.set_function(GLMessage::glShaderSource);
3846
3847    // copy argument shader
3848    GLMessage_DataType *arg_shader = glmsg.add_args();
3849    arg_shader->set_isarray(false);
3850    arg_shader->set_type(GLMessage::DataType::INT);
3851    arg_shader->add_intvalue(shader);
3852
3853    // copy argument count
3854    GLMessage_DataType *arg_count = glmsg.add_args();
3855    arg_count->set_isarray(false);
3856    arg_count->set_type(GLMessage::DataType::INT);
3857    arg_count->add_intvalue(count);
3858
3859    // copy argument string
3860    GLMessage_DataType *arg_string = glmsg.add_args();
3861    arg_string->set_isarray(false);
3862    arg_string->set_type(GLMessage::DataType::INT64);
3863    arg_string->add_int64value((uintptr_t)string);
3864
3865    // copy argument length
3866    GLMessage_DataType *arg_length = glmsg.add_args();
3867    arg_length->set_isarray(false);
3868    arg_length->set_type(GLMessage::DataType::INT64);
3869    arg_length->add_int64value((uintptr_t)length);
3870
3871    // call function
3872    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3873    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3874    glContext->hooks->gl.glShaderSource(shader, count, string, length);
3875    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3876    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3877
3878    void *pointerArgs[] = {
3879        (void *) string,
3880        (void *) length,
3881    };
3882
3883    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3884                              threadStartTime, threadEndTime,
3885                              &glmsg, pointerArgs);
3886    glContext->traceGLMessage(&glmsg);
3887}
3888
3889void GLTrace_glStencilFunc(GLenum func, GLint ref, GLuint mask) {
3890    GLMessage glmsg;
3891    GLTraceContext *glContext = getGLTraceContext();
3892
3893    glmsg.set_function(GLMessage::glStencilFunc);
3894
3895    // copy argument func
3896    GLMessage_DataType *arg_func = glmsg.add_args();
3897    arg_func->set_isarray(false);
3898    arg_func->set_type(GLMessage::DataType::ENUM);
3899    arg_func->add_intvalue((int)func);
3900
3901    // copy argument ref
3902    GLMessage_DataType *arg_ref = glmsg.add_args();
3903    arg_ref->set_isarray(false);
3904    arg_ref->set_type(GLMessage::DataType::INT);
3905    arg_ref->add_intvalue(ref);
3906
3907    // copy argument mask
3908    GLMessage_DataType *arg_mask = glmsg.add_args();
3909    arg_mask->set_isarray(false);
3910    arg_mask->set_type(GLMessage::DataType::INT);
3911    arg_mask->add_intvalue(mask);
3912
3913    // call function
3914    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3915    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3916    glContext->hooks->gl.glStencilFunc(func, ref, mask);
3917    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3918    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3919
3920    void *pointerArgs[] = {
3921    };
3922
3923    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3924                              threadStartTime, threadEndTime,
3925                              &glmsg, pointerArgs);
3926    glContext->traceGLMessage(&glmsg);
3927}
3928
3929void GLTrace_glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) {
3930    GLMessage glmsg;
3931    GLTraceContext *glContext = getGLTraceContext();
3932
3933    glmsg.set_function(GLMessage::glStencilFuncSeparate);
3934
3935    // copy argument face
3936    GLMessage_DataType *arg_face = glmsg.add_args();
3937    arg_face->set_isarray(false);
3938    arg_face->set_type(GLMessage::DataType::ENUM);
3939    arg_face->add_intvalue((int)face);
3940
3941    // copy argument func
3942    GLMessage_DataType *arg_func = glmsg.add_args();
3943    arg_func->set_isarray(false);
3944    arg_func->set_type(GLMessage::DataType::ENUM);
3945    arg_func->add_intvalue((int)func);
3946
3947    // copy argument ref
3948    GLMessage_DataType *arg_ref = glmsg.add_args();
3949    arg_ref->set_isarray(false);
3950    arg_ref->set_type(GLMessage::DataType::INT);
3951    arg_ref->add_intvalue(ref);
3952
3953    // copy argument mask
3954    GLMessage_DataType *arg_mask = glmsg.add_args();
3955    arg_mask->set_isarray(false);
3956    arg_mask->set_type(GLMessage::DataType::INT);
3957    arg_mask->add_intvalue(mask);
3958
3959    // call function
3960    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3961    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3962    glContext->hooks->gl.glStencilFuncSeparate(face, func, ref, mask);
3963    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3964    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3965
3966    void *pointerArgs[] = {
3967    };
3968
3969    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3970                              threadStartTime, threadEndTime,
3971                              &glmsg, pointerArgs);
3972    glContext->traceGLMessage(&glmsg);
3973}
3974
3975void GLTrace_glStencilMask(GLuint mask) {
3976    GLMessage glmsg;
3977    GLTraceContext *glContext = getGLTraceContext();
3978
3979    glmsg.set_function(GLMessage::glStencilMask);
3980
3981    // copy argument mask
3982    GLMessage_DataType *arg_mask = glmsg.add_args();
3983    arg_mask->set_isarray(false);
3984    arg_mask->set_type(GLMessage::DataType::INT);
3985    arg_mask->add_intvalue(mask);
3986
3987    // call function
3988    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
3989    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3990    glContext->hooks->gl.glStencilMask(mask);
3991    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
3992    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3993
3994    void *pointerArgs[] = {
3995    };
3996
3997    fixupGLMessage(glContext, wallStartTime, wallEndTime,
3998                              threadStartTime, threadEndTime,
3999                              &glmsg, pointerArgs);
4000    glContext->traceGLMessage(&glmsg);
4001}
4002
4003void GLTrace_glStencilMaskSeparate(GLenum face, GLuint mask) {
4004    GLMessage glmsg;
4005    GLTraceContext *glContext = getGLTraceContext();
4006
4007    glmsg.set_function(GLMessage::glStencilMaskSeparate);
4008
4009    // copy argument face
4010    GLMessage_DataType *arg_face = glmsg.add_args();
4011    arg_face->set_isarray(false);
4012    arg_face->set_type(GLMessage::DataType::ENUM);
4013    arg_face->add_intvalue((int)face);
4014
4015    // copy argument mask
4016    GLMessage_DataType *arg_mask = glmsg.add_args();
4017    arg_mask->set_isarray(false);
4018    arg_mask->set_type(GLMessage::DataType::INT);
4019    arg_mask->add_intvalue(mask);
4020
4021    // call function
4022    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4023    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4024    glContext->hooks->gl.glStencilMaskSeparate(face, mask);
4025    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4026    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4027
4028    void *pointerArgs[] = {
4029    };
4030
4031    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4032                              threadStartTime, threadEndTime,
4033                              &glmsg, pointerArgs);
4034    glContext->traceGLMessage(&glmsg);
4035}
4036
4037void GLTrace_glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) {
4038    GLMessage glmsg;
4039    GLTraceContext *glContext = getGLTraceContext();
4040
4041    glmsg.set_function(GLMessage::glStencilOp);
4042
4043    // copy argument fail
4044    GLMessage_DataType *arg_fail = glmsg.add_args();
4045    arg_fail->set_isarray(false);
4046    arg_fail->set_type(GLMessage::DataType::ENUM);
4047    arg_fail->add_intvalue((int)fail);
4048
4049    // copy argument zfail
4050    GLMessage_DataType *arg_zfail = glmsg.add_args();
4051    arg_zfail->set_isarray(false);
4052    arg_zfail->set_type(GLMessage::DataType::ENUM);
4053    arg_zfail->add_intvalue((int)zfail);
4054
4055    // copy argument zpass
4056    GLMessage_DataType *arg_zpass = glmsg.add_args();
4057    arg_zpass->set_isarray(false);
4058    arg_zpass->set_type(GLMessage::DataType::ENUM);
4059    arg_zpass->add_intvalue((int)zpass);
4060
4061    // call function
4062    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4063    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4064    glContext->hooks->gl.glStencilOp(fail, zfail, zpass);
4065    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4066    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4067
4068    void *pointerArgs[] = {
4069    };
4070
4071    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4072                              threadStartTime, threadEndTime,
4073                              &glmsg, pointerArgs);
4074    glContext->traceGLMessage(&glmsg);
4075}
4076
4077void GLTrace_glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) {
4078    GLMessage glmsg;
4079    GLTraceContext *glContext = getGLTraceContext();
4080
4081    glmsg.set_function(GLMessage::glStencilOpSeparate);
4082
4083    // copy argument face
4084    GLMessage_DataType *arg_face = glmsg.add_args();
4085    arg_face->set_isarray(false);
4086    arg_face->set_type(GLMessage::DataType::ENUM);
4087    arg_face->add_intvalue((int)face);
4088
4089    // copy argument sfail
4090    GLMessage_DataType *arg_sfail = glmsg.add_args();
4091    arg_sfail->set_isarray(false);
4092    arg_sfail->set_type(GLMessage::DataType::ENUM);
4093    arg_sfail->add_intvalue((int)sfail);
4094
4095    // copy argument dpfail
4096    GLMessage_DataType *arg_dpfail = glmsg.add_args();
4097    arg_dpfail->set_isarray(false);
4098    arg_dpfail->set_type(GLMessage::DataType::ENUM);
4099    arg_dpfail->add_intvalue((int)dpfail);
4100
4101    // copy argument dppass
4102    GLMessage_DataType *arg_dppass = glmsg.add_args();
4103    arg_dppass->set_isarray(false);
4104    arg_dppass->set_type(GLMessage::DataType::ENUM);
4105    arg_dppass->add_intvalue((int)dppass);
4106
4107    // call function
4108    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4109    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4110    glContext->hooks->gl.glStencilOpSeparate(face, sfail, dpfail, dppass);
4111    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4112    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4113
4114    void *pointerArgs[] = {
4115    };
4116
4117    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4118                              threadStartTime, threadEndTime,
4119                              &glmsg, pointerArgs);
4120    glContext->traceGLMessage(&glmsg);
4121}
4122
4123void GLTrace_glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void * pixels) {
4124    GLMessage glmsg;
4125    GLTraceContext *glContext = getGLTraceContext();
4126
4127    glmsg.set_function(GLMessage::glTexImage2D);
4128
4129    // copy argument target
4130    GLMessage_DataType *arg_target = glmsg.add_args();
4131    arg_target->set_isarray(false);
4132    arg_target->set_type(GLMessage::DataType::ENUM);
4133    arg_target->add_intvalue((int)target);
4134
4135    // copy argument level
4136    GLMessage_DataType *arg_level = glmsg.add_args();
4137    arg_level->set_isarray(false);
4138    arg_level->set_type(GLMessage::DataType::INT);
4139    arg_level->add_intvalue(level);
4140
4141    // copy argument internalformat
4142    GLMessage_DataType *arg_internalformat = glmsg.add_args();
4143    arg_internalformat->set_isarray(false);
4144    arg_internalformat->set_type(GLMessage::DataType::INT);
4145    arg_internalformat->add_intvalue(internalformat);
4146
4147    // copy argument width
4148    GLMessage_DataType *arg_width = glmsg.add_args();
4149    arg_width->set_isarray(false);
4150    arg_width->set_type(GLMessage::DataType::INT);
4151    arg_width->add_intvalue(width);
4152
4153    // copy argument height
4154    GLMessage_DataType *arg_height = glmsg.add_args();
4155    arg_height->set_isarray(false);
4156    arg_height->set_type(GLMessage::DataType::INT);
4157    arg_height->add_intvalue(height);
4158
4159    // copy argument border
4160    GLMessage_DataType *arg_border = glmsg.add_args();
4161    arg_border->set_isarray(false);
4162    arg_border->set_type(GLMessage::DataType::INT);
4163    arg_border->add_intvalue(border);
4164
4165    // copy argument format
4166    GLMessage_DataType *arg_format = glmsg.add_args();
4167    arg_format->set_isarray(false);
4168    arg_format->set_type(GLMessage::DataType::ENUM);
4169    arg_format->add_intvalue((int)format);
4170
4171    // copy argument type
4172    GLMessage_DataType *arg_type = glmsg.add_args();
4173    arg_type->set_isarray(false);
4174    arg_type->set_type(GLMessage::DataType::ENUM);
4175    arg_type->add_intvalue((int)type);
4176
4177    // copy argument pixels
4178    GLMessage_DataType *arg_pixels = glmsg.add_args();
4179    arg_pixels->set_isarray(false);
4180    arg_pixels->set_type(GLMessage::DataType::INT64);
4181    arg_pixels->add_int64value((uintptr_t)pixels);
4182
4183    // call function
4184    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4185    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4186    glContext->hooks->gl.glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels);
4187    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4188    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4189
4190    void *pointerArgs[] = {
4191        (void *) pixels,
4192    };
4193
4194    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4195                              threadStartTime, threadEndTime,
4196                              &glmsg, pointerArgs);
4197    glContext->traceGLMessage(&glmsg);
4198}
4199
4200void GLTrace_glTexParameterf(GLenum target, GLenum pname, GLfloat param) {
4201    GLMessage glmsg;
4202    GLTraceContext *glContext = getGLTraceContext();
4203
4204    glmsg.set_function(GLMessage::glTexParameterf);
4205
4206    // copy argument target
4207    GLMessage_DataType *arg_target = glmsg.add_args();
4208    arg_target->set_isarray(false);
4209    arg_target->set_type(GLMessage::DataType::ENUM);
4210    arg_target->add_intvalue((int)target);
4211
4212    // copy argument pname
4213    GLMessage_DataType *arg_pname = glmsg.add_args();
4214    arg_pname->set_isarray(false);
4215    arg_pname->set_type(GLMessage::DataType::ENUM);
4216    arg_pname->add_intvalue((int)pname);
4217
4218    // copy argument param
4219    GLMessage_DataType *arg_param = glmsg.add_args();
4220    arg_param->set_isarray(false);
4221    arg_param->set_type(GLMessage::DataType::FLOAT);
4222    arg_param->add_floatvalue(param);
4223
4224    // call function
4225    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4226    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4227    glContext->hooks->gl.glTexParameterf(target, pname, param);
4228    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4229    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4230
4231    void *pointerArgs[] = {
4232    };
4233
4234    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4235                              threadStartTime, threadEndTime,
4236                              &glmsg, pointerArgs);
4237    glContext->traceGLMessage(&glmsg);
4238}
4239
4240void GLTrace_glTexParameterfv(GLenum target, GLenum pname, const GLfloat * params) {
4241    GLMessage glmsg;
4242    GLTraceContext *glContext = getGLTraceContext();
4243
4244    glmsg.set_function(GLMessage::glTexParameterfv);
4245
4246    // copy argument target
4247    GLMessage_DataType *arg_target = glmsg.add_args();
4248    arg_target->set_isarray(false);
4249    arg_target->set_type(GLMessage::DataType::ENUM);
4250    arg_target->add_intvalue((int)target);
4251
4252    // copy argument pname
4253    GLMessage_DataType *arg_pname = glmsg.add_args();
4254    arg_pname->set_isarray(false);
4255    arg_pname->set_type(GLMessage::DataType::ENUM);
4256    arg_pname->add_intvalue((int)pname);
4257
4258    // copy argument params
4259    GLMessage_DataType *arg_params = glmsg.add_args();
4260    arg_params->set_isarray(false);
4261    arg_params->set_type(GLMessage::DataType::INT64);
4262    arg_params->add_int64value((uintptr_t)params);
4263
4264    // call function
4265    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4266    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4267    glContext->hooks->gl.glTexParameterfv(target, pname, params);
4268    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4269    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4270
4271    void *pointerArgs[] = {
4272        (void *) params,
4273    };
4274
4275    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4276                              threadStartTime, threadEndTime,
4277                              &glmsg, pointerArgs);
4278    glContext->traceGLMessage(&glmsg);
4279}
4280
4281void GLTrace_glTexParameteri(GLenum target, GLenum pname, GLint param) {
4282    GLMessage glmsg;
4283    GLTraceContext *glContext = getGLTraceContext();
4284
4285    glmsg.set_function(GLMessage::glTexParameteri);
4286
4287    // copy argument target
4288    GLMessage_DataType *arg_target = glmsg.add_args();
4289    arg_target->set_isarray(false);
4290    arg_target->set_type(GLMessage::DataType::ENUM);
4291    arg_target->add_intvalue((int)target);
4292
4293    // copy argument pname
4294    GLMessage_DataType *arg_pname = glmsg.add_args();
4295    arg_pname->set_isarray(false);
4296    arg_pname->set_type(GLMessage::DataType::ENUM);
4297    arg_pname->add_intvalue((int)pname);
4298
4299    // copy argument param
4300    GLMessage_DataType *arg_param = glmsg.add_args();
4301    arg_param->set_isarray(false);
4302    arg_param->set_type(GLMessage::DataType::INT);
4303    arg_param->add_intvalue(param);
4304
4305    // call function
4306    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4307    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4308    glContext->hooks->gl.glTexParameteri(target, pname, param);
4309    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4310    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4311
4312    void *pointerArgs[] = {
4313    };
4314
4315    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4316                              threadStartTime, threadEndTime,
4317                              &glmsg, pointerArgs);
4318    glContext->traceGLMessage(&glmsg);
4319}
4320
4321void GLTrace_glTexParameteriv(GLenum target, GLenum pname, const GLint * params) {
4322    GLMessage glmsg;
4323    GLTraceContext *glContext = getGLTraceContext();
4324
4325    glmsg.set_function(GLMessage::glTexParameteriv);
4326
4327    // copy argument target
4328    GLMessage_DataType *arg_target = glmsg.add_args();
4329    arg_target->set_isarray(false);
4330    arg_target->set_type(GLMessage::DataType::ENUM);
4331    arg_target->add_intvalue((int)target);
4332
4333    // copy argument pname
4334    GLMessage_DataType *arg_pname = glmsg.add_args();
4335    arg_pname->set_isarray(false);
4336    arg_pname->set_type(GLMessage::DataType::ENUM);
4337    arg_pname->add_intvalue((int)pname);
4338
4339    // copy argument params
4340    GLMessage_DataType *arg_params = glmsg.add_args();
4341    arg_params->set_isarray(false);
4342    arg_params->set_type(GLMessage::DataType::INT64);
4343    arg_params->add_int64value((uintptr_t)params);
4344
4345    // call function
4346    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4347    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4348    glContext->hooks->gl.glTexParameteriv(target, pname, params);
4349    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4350    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4351
4352    void *pointerArgs[] = {
4353        (void *) params,
4354    };
4355
4356    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4357                              threadStartTime, threadEndTime,
4358                              &glmsg, pointerArgs);
4359    glContext->traceGLMessage(&glmsg);
4360}
4361
4362void GLTrace_glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * pixels) {
4363    GLMessage glmsg;
4364    GLTraceContext *glContext = getGLTraceContext();
4365
4366    glmsg.set_function(GLMessage::glTexSubImage2D);
4367
4368    // copy argument target
4369    GLMessage_DataType *arg_target = glmsg.add_args();
4370    arg_target->set_isarray(false);
4371    arg_target->set_type(GLMessage::DataType::ENUM);
4372    arg_target->add_intvalue((int)target);
4373
4374    // copy argument level
4375    GLMessage_DataType *arg_level = glmsg.add_args();
4376    arg_level->set_isarray(false);
4377    arg_level->set_type(GLMessage::DataType::INT);
4378    arg_level->add_intvalue(level);
4379
4380    // copy argument xoffset
4381    GLMessage_DataType *arg_xoffset = glmsg.add_args();
4382    arg_xoffset->set_isarray(false);
4383    arg_xoffset->set_type(GLMessage::DataType::INT);
4384    arg_xoffset->add_intvalue(xoffset);
4385
4386    // copy argument yoffset
4387    GLMessage_DataType *arg_yoffset = glmsg.add_args();
4388    arg_yoffset->set_isarray(false);
4389    arg_yoffset->set_type(GLMessage::DataType::INT);
4390    arg_yoffset->add_intvalue(yoffset);
4391
4392    // copy argument width
4393    GLMessage_DataType *arg_width = glmsg.add_args();
4394    arg_width->set_isarray(false);
4395    arg_width->set_type(GLMessage::DataType::INT);
4396    arg_width->add_intvalue(width);
4397
4398    // copy argument height
4399    GLMessage_DataType *arg_height = glmsg.add_args();
4400    arg_height->set_isarray(false);
4401    arg_height->set_type(GLMessage::DataType::INT);
4402    arg_height->add_intvalue(height);
4403
4404    // copy argument format
4405    GLMessage_DataType *arg_format = glmsg.add_args();
4406    arg_format->set_isarray(false);
4407    arg_format->set_type(GLMessage::DataType::ENUM);
4408    arg_format->add_intvalue((int)format);
4409
4410    // copy argument type
4411    GLMessage_DataType *arg_type = glmsg.add_args();
4412    arg_type->set_isarray(false);
4413    arg_type->set_type(GLMessage::DataType::ENUM);
4414    arg_type->add_intvalue((int)type);
4415
4416    // copy argument pixels
4417    GLMessage_DataType *arg_pixels = glmsg.add_args();
4418    arg_pixels->set_isarray(false);
4419    arg_pixels->set_type(GLMessage::DataType::INT64);
4420    arg_pixels->add_int64value((uintptr_t)pixels);
4421
4422    // call function
4423    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4424    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4425    glContext->hooks->gl.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
4426    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4427    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4428
4429    void *pointerArgs[] = {
4430        (void *) pixels,
4431    };
4432
4433    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4434                              threadStartTime, threadEndTime,
4435                              &glmsg, pointerArgs);
4436    glContext->traceGLMessage(&glmsg);
4437}
4438
4439void GLTrace_glUniform1f(GLint location, GLfloat v0) {
4440    GLMessage glmsg;
4441    GLTraceContext *glContext = getGLTraceContext();
4442
4443    glmsg.set_function(GLMessage::glUniform1f);
4444
4445    // copy argument location
4446    GLMessage_DataType *arg_location = glmsg.add_args();
4447    arg_location->set_isarray(false);
4448    arg_location->set_type(GLMessage::DataType::INT);
4449    arg_location->add_intvalue(location);
4450
4451    // copy argument v0
4452    GLMessage_DataType *arg_v0 = glmsg.add_args();
4453    arg_v0->set_isarray(false);
4454    arg_v0->set_type(GLMessage::DataType::FLOAT);
4455    arg_v0->add_floatvalue(v0);
4456
4457    // call function
4458    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4459    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4460    glContext->hooks->gl.glUniform1f(location, v0);
4461    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4462    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4463
4464    void *pointerArgs[] = {
4465    };
4466
4467    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4468                              threadStartTime, threadEndTime,
4469                              &glmsg, pointerArgs);
4470    glContext->traceGLMessage(&glmsg);
4471}
4472
4473void GLTrace_glUniform1fv(GLint location, GLsizei count, const GLfloat * value) {
4474    GLMessage glmsg;
4475    GLTraceContext *glContext = getGLTraceContext();
4476
4477    glmsg.set_function(GLMessage::glUniform1fv);
4478
4479    // copy argument location
4480    GLMessage_DataType *arg_location = glmsg.add_args();
4481    arg_location->set_isarray(false);
4482    arg_location->set_type(GLMessage::DataType::INT);
4483    arg_location->add_intvalue(location);
4484
4485    // copy argument count
4486    GLMessage_DataType *arg_count = glmsg.add_args();
4487    arg_count->set_isarray(false);
4488    arg_count->set_type(GLMessage::DataType::INT);
4489    arg_count->add_intvalue(count);
4490
4491    // copy argument value
4492    GLMessage_DataType *arg_value = glmsg.add_args();
4493    arg_value->set_isarray(false);
4494    arg_value->set_type(GLMessage::DataType::INT64);
4495    arg_value->add_int64value((uintptr_t)value);
4496
4497    // call function
4498    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4499    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4500    glContext->hooks->gl.glUniform1fv(location, count, value);
4501    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4502    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4503
4504    void *pointerArgs[] = {
4505        (void *) value,
4506    };
4507
4508    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4509                              threadStartTime, threadEndTime,
4510                              &glmsg, pointerArgs);
4511    glContext->traceGLMessage(&glmsg);
4512}
4513
4514void GLTrace_glUniform1i(GLint location, GLint v0) {
4515    GLMessage glmsg;
4516    GLTraceContext *glContext = getGLTraceContext();
4517
4518    glmsg.set_function(GLMessage::glUniform1i);
4519
4520    // copy argument location
4521    GLMessage_DataType *arg_location = glmsg.add_args();
4522    arg_location->set_isarray(false);
4523    arg_location->set_type(GLMessage::DataType::INT);
4524    arg_location->add_intvalue(location);
4525
4526    // copy argument v0
4527    GLMessage_DataType *arg_v0 = glmsg.add_args();
4528    arg_v0->set_isarray(false);
4529    arg_v0->set_type(GLMessage::DataType::INT);
4530    arg_v0->add_intvalue(v0);
4531
4532    // call function
4533    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4534    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4535    glContext->hooks->gl.glUniform1i(location, v0);
4536    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4537    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4538
4539    void *pointerArgs[] = {
4540    };
4541
4542    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4543                              threadStartTime, threadEndTime,
4544                              &glmsg, pointerArgs);
4545    glContext->traceGLMessage(&glmsg);
4546}
4547
4548void GLTrace_glUniform1iv(GLint location, GLsizei count, const GLint * value) {
4549    GLMessage glmsg;
4550    GLTraceContext *glContext = getGLTraceContext();
4551
4552    glmsg.set_function(GLMessage::glUniform1iv);
4553
4554    // copy argument location
4555    GLMessage_DataType *arg_location = glmsg.add_args();
4556    arg_location->set_isarray(false);
4557    arg_location->set_type(GLMessage::DataType::INT);
4558    arg_location->add_intvalue(location);
4559
4560    // copy argument count
4561    GLMessage_DataType *arg_count = glmsg.add_args();
4562    arg_count->set_isarray(false);
4563    arg_count->set_type(GLMessage::DataType::INT);
4564    arg_count->add_intvalue(count);
4565
4566    // copy argument value
4567    GLMessage_DataType *arg_value = glmsg.add_args();
4568    arg_value->set_isarray(false);
4569    arg_value->set_type(GLMessage::DataType::INT64);
4570    arg_value->add_int64value((uintptr_t)value);
4571
4572    // call function
4573    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4574    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4575    glContext->hooks->gl.glUniform1iv(location, count, value);
4576    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4577    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4578
4579    void *pointerArgs[] = {
4580        (void *) value,
4581    };
4582
4583    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4584                              threadStartTime, threadEndTime,
4585                              &glmsg, pointerArgs);
4586    glContext->traceGLMessage(&glmsg);
4587}
4588
4589void GLTrace_glUniform2f(GLint location, GLfloat v0, GLfloat v1) {
4590    GLMessage glmsg;
4591    GLTraceContext *glContext = getGLTraceContext();
4592
4593    glmsg.set_function(GLMessage::glUniform2f);
4594
4595    // copy argument location
4596    GLMessage_DataType *arg_location = glmsg.add_args();
4597    arg_location->set_isarray(false);
4598    arg_location->set_type(GLMessage::DataType::INT);
4599    arg_location->add_intvalue(location);
4600
4601    // copy argument v0
4602    GLMessage_DataType *arg_v0 = glmsg.add_args();
4603    arg_v0->set_isarray(false);
4604    arg_v0->set_type(GLMessage::DataType::FLOAT);
4605    arg_v0->add_floatvalue(v0);
4606
4607    // copy argument v1
4608    GLMessage_DataType *arg_v1 = glmsg.add_args();
4609    arg_v1->set_isarray(false);
4610    arg_v1->set_type(GLMessage::DataType::FLOAT);
4611    arg_v1->add_floatvalue(v1);
4612
4613    // call function
4614    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4615    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4616    glContext->hooks->gl.glUniform2f(location, v0, v1);
4617    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4618    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4619
4620    void *pointerArgs[] = {
4621    };
4622
4623    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4624                              threadStartTime, threadEndTime,
4625                              &glmsg, pointerArgs);
4626    glContext->traceGLMessage(&glmsg);
4627}
4628
4629void GLTrace_glUniform2fv(GLint location, GLsizei count, const GLfloat * value) {
4630    GLMessage glmsg;
4631    GLTraceContext *glContext = getGLTraceContext();
4632
4633    glmsg.set_function(GLMessage::glUniform2fv);
4634
4635    // copy argument location
4636    GLMessage_DataType *arg_location = glmsg.add_args();
4637    arg_location->set_isarray(false);
4638    arg_location->set_type(GLMessage::DataType::INT);
4639    arg_location->add_intvalue(location);
4640
4641    // copy argument count
4642    GLMessage_DataType *arg_count = glmsg.add_args();
4643    arg_count->set_isarray(false);
4644    arg_count->set_type(GLMessage::DataType::INT);
4645    arg_count->add_intvalue(count);
4646
4647    // copy argument value
4648    GLMessage_DataType *arg_value = glmsg.add_args();
4649    arg_value->set_isarray(false);
4650    arg_value->set_type(GLMessage::DataType::INT64);
4651    arg_value->add_int64value((uintptr_t)value);
4652
4653    // call function
4654    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4655    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4656    glContext->hooks->gl.glUniform2fv(location, count, value);
4657    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4658    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4659
4660    void *pointerArgs[] = {
4661        (void *) value,
4662    };
4663
4664    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4665                              threadStartTime, threadEndTime,
4666                              &glmsg, pointerArgs);
4667    glContext->traceGLMessage(&glmsg);
4668}
4669
4670void GLTrace_glUniform2i(GLint location, GLint v0, GLint v1) {
4671    GLMessage glmsg;
4672    GLTraceContext *glContext = getGLTraceContext();
4673
4674    glmsg.set_function(GLMessage::glUniform2i);
4675
4676    // copy argument location
4677    GLMessage_DataType *arg_location = glmsg.add_args();
4678    arg_location->set_isarray(false);
4679    arg_location->set_type(GLMessage::DataType::INT);
4680    arg_location->add_intvalue(location);
4681
4682    // copy argument v0
4683    GLMessage_DataType *arg_v0 = glmsg.add_args();
4684    arg_v0->set_isarray(false);
4685    arg_v0->set_type(GLMessage::DataType::INT);
4686    arg_v0->add_intvalue(v0);
4687
4688    // copy argument v1
4689    GLMessage_DataType *arg_v1 = glmsg.add_args();
4690    arg_v1->set_isarray(false);
4691    arg_v1->set_type(GLMessage::DataType::INT);
4692    arg_v1->add_intvalue(v1);
4693
4694    // call function
4695    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4696    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4697    glContext->hooks->gl.glUniform2i(location, v0, v1);
4698    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4699    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4700
4701    void *pointerArgs[] = {
4702    };
4703
4704    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4705                              threadStartTime, threadEndTime,
4706                              &glmsg, pointerArgs);
4707    glContext->traceGLMessage(&glmsg);
4708}
4709
4710void GLTrace_glUniform2iv(GLint location, GLsizei count, const GLint * value) {
4711    GLMessage glmsg;
4712    GLTraceContext *glContext = getGLTraceContext();
4713
4714    glmsg.set_function(GLMessage::glUniform2iv);
4715
4716    // copy argument location
4717    GLMessage_DataType *arg_location = glmsg.add_args();
4718    arg_location->set_isarray(false);
4719    arg_location->set_type(GLMessage::DataType::INT);
4720    arg_location->add_intvalue(location);
4721
4722    // copy argument count
4723    GLMessage_DataType *arg_count = glmsg.add_args();
4724    arg_count->set_isarray(false);
4725    arg_count->set_type(GLMessage::DataType::INT);
4726    arg_count->add_intvalue(count);
4727
4728    // copy argument value
4729    GLMessage_DataType *arg_value = glmsg.add_args();
4730    arg_value->set_isarray(false);
4731    arg_value->set_type(GLMessage::DataType::INT64);
4732    arg_value->add_int64value((uintptr_t)value);
4733
4734    // call function
4735    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4736    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4737    glContext->hooks->gl.glUniform2iv(location, count, value);
4738    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4739    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4740
4741    void *pointerArgs[] = {
4742        (void *) value,
4743    };
4744
4745    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4746                              threadStartTime, threadEndTime,
4747                              &glmsg, pointerArgs);
4748    glContext->traceGLMessage(&glmsg);
4749}
4750
4751void GLTrace_glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) {
4752    GLMessage glmsg;
4753    GLTraceContext *glContext = getGLTraceContext();
4754
4755    glmsg.set_function(GLMessage::glUniform3f);
4756
4757    // copy argument location
4758    GLMessage_DataType *arg_location = glmsg.add_args();
4759    arg_location->set_isarray(false);
4760    arg_location->set_type(GLMessage::DataType::INT);
4761    arg_location->add_intvalue(location);
4762
4763    // copy argument v0
4764    GLMessage_DataType *arg_v0 = glmsg.add_args();
4765    arg_v0->set_isarray(false);
4766    arg_v0->set_type(GLMessage::DataType::FLOAT);
4767    arg_v0->add_floatvalue(v0);
4768
4769    // copy argument v1
4770    GLMessage_DataType *arg_v1 = glmsg.add_args();
4771    arg_v1->set_isarray(false);
4772    arg_v1->set_type(GLMessage::DataType::FLOAT);
4773    arg_v1->add_floatvalue(v1);
4774
4775    // copy argument v2
4776    GLMessage_DataType *arg_v2 = glmsg.add_args();
4777    arg_v2->set_isarray(false);
4778    arg_v2->set_type(GLMessage::DataType::FLOAT);
4779    arg_v2->add_floatvalue(v2);
4780
4781    // call function
4782    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4783    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4784    glContext->hooks->gl.glUniform3f(location, v0, v1, v2);
4785    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4786    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4787
4788    void *pointerArgs[] = {
4789    };
4790
4791    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4792                              threadStartTime, threadEndTime,
4793                              &glmsg, pointerArgs);
4794    glContext->traceGLMessage(&glmsg);
4795}
4796
4797void GLTrace_glUniform3fv(GLint location, GLsizei count, const GLfloat * value) {
4798    GLMessage glmsg;
4799    GLTraceContext *glContext = getGLTraceContext();
4800
4801    glmsg.set_function(GLMessage::glUniform3fv);
4802
4803    // copy argument location
4804    GLMessage_DataType *arg_location = glmsg.add_args();
4805    arg_location->set_isarray(false);
4806    arg_location->set_type(GLMessage::DataType::INT);
4807    arg_location->add_intvalue(location);
4808
4809    // copy argument count
4810    GLMessage_DataType *arg_count = glmsg.add_args();
4811    arg_count->set_isarray(false);
4812    arg_count->set_type(GLMessage::DataType::INT);
4813    arg_count->add_intvalue(count);
4814
4815    // copy argument value
4816    GLMessage_DataType *arg_value = glmsg.add_args();
4817    arg_value->set_isarray(false);
4818    arg_value->set_type(GLMessage::DataType::INT64);
4819    arg_value->add_int64value((uintptr_t)value);
4820
4821    // call function
4822    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4823    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4824    glContext->hooks->gl.glUniform3fv(location, count, value);
4825    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4826    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4827
4828    void *pointerArgs[] = {
4829        (void *) value,
4830    };
4831
4832    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4833                              threadStartTime, threadEndTime,
4834                              &glmsg, pointerArgs);
4835    glContext->traceGLMessage(&glmsg);
4836}
4837
4838void GLTrace_glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) {
4839    GLMessage glmsg;
4840    GLTraceContext *glContext = getGLTraceContext();
4841
4842    glmsg.set_function(GLMessage::glUniform3i);
4843
4844    // copy argument location
4845    GLMessage_DataType *arg_location = glmsg.add_args();
4846    arg_location->set_isarray(false);
4847    arg_location->set_type(GLMessage::DataType::INT);
4848    arg_location->add_intvalue(location);
4849
4850    // copy argument v0
4851    GLMessage_DataType *arg_v0 = glmsg.add_args();
4852    arg_v0->set_isarray(false);
4853    arg_v0->set_type(GLMessage::DataType::INT);
4854    arg_v0->add_intvalue(v0);
4855
4856    // copy argument v1
4857    GLMessage_DataType *arg_v1 = glmsg.add_args();
4858    arg_v1->set_isarray(false);
4859    arg_v1->set_type(GLMessage::DataType::INT);
4860    arg_v1->add_intvalue(v1);
4861
4862    // copy argument v2
4863    GLMessage_DataType *arg_v2 = glmsg.add_args();
4864    arg_v2->set_isarray(false);
4865    arg_v2->set_type(GLMessage::DataType::INT);
4866    arg_v2->add_intvalue(v2);
4867
4868    // call function
4869    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4870    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4871    glContext->hooks->gl.glUniform3i(location, v0, v1, v2);
4872    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4873    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4874
4875    void *pointerArgs[] = {
4876    };
4877
4878    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4879                              threadStartTime, threadEndTime,
4880                              &glmsg, pointerArgs);
4881    glContext->traceGLMessage(&glmsg);
4882}
4883
4884void GLTrace_glUniform3iv(GLint location, GLsizei count, const GLint * value) {
4885    GLMessage glmsg;
4886    GLTraceContext *glContext = getGLTraceContext();
4887
4888    glmsg.set_function(GLMessage::glUniform3iv);
4889
4890    // copy argument location
4891    GLMessage_DataType *arg_location = glmsg.add_args();
4892    arg_location->set_isarray(false);
4893    arg_location->set_type(GLMessage::DataType::INT);
4894    arg_location->add_intvalue(location);
4895
4896    // copy argument count
4897    GLMessage_DataType *arg_count = glmsg.add_args();
4898    arg_count->set_isarray(false);
4899    arg_count->set_type(GLMessage::DataType::INT);
4900    arg_count->add_intvalue(count);
4901
4902    // copy argument value
4903    GLMessage_DataType *arg_value = glmsg.add_args();
4904    arg_value->set_isarray(false);
4905    arg_value->set_type(GLMessage::DataType::INT64);
4906    arg_value->add_int64value((uintptr_t)value);
4907
4908    // call function
4909    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4910    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4911    glContext->hooks->gl.glUniform3iv(location, count, value);
4912    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4913    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4914
4915    void *pointerArgs[] = {
4916        (void *) value,
4917    };
4918
4919    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4920                              threadStartTime, threadEndTime,
4921                              &glmsg, pointerArgs);
4922    glContext->traceGLMessage(&glmsg);
4923}
4924
4925void GLTrace_glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) {
4926    GLMessage glmsg;
4927    GLTraceContext *glContext = getGLTraceContext();
4928
4929    glmsg.set_function(GLMessage::glUniform4f);
4930
4931    // copy argument location
4932    GLMessage_DataType *arg_location = glmsg.add_args();
4933    arg_location->set_isarray(false);
4934    arg_location->set_type(GLMessage::DataType::INT);
4935    arg_location->add_intvalue(location);
4936
4937    // copy argument v0
4938    GLMessage_DataType *arg_v0 = glmsg.add_args();
4939    arg_v0->set_isarray(false);
4940    arg_v0->set_type(GLMessage::DataType::FLOAT);
4941    arg_v0->add_floatvalue(v0);
4942
4943    // copy argument v1
4944    GLMessage_DataType *arg_v1 = glmsg.add_args();
4945    arg_v1->set_isarray(false);
4946    arg_v1->set_type(GLMessage::DataType::FLOAT);
4947    arg_v1->add_floatvalue(v1);
4948
4949    // copy argument v2
4950    GLMessage_DataType *arg_v2 = glmsg.add_args();
4951    arg_v2->set_isarray(false);
4952    arg_v2->set_type(GLMessage::DataType::FLOAT);
4953    arg_v2->add_floatvalue(v2);
4954
4955    // copy argument v3
4956    GLMessage_DataType *arg_v3 = glmsg.add_args();
4957    arg_v3->set_isarray(false);
4958    arg_v3->set_type(GLMessage::DataType::FLOAT);
4959    arg_v3->add_floatvalue(v3);
4960
4961    // call function
4962    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4963    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4964    glContext->hooks->gl.glUniform4f(location, v0, v1, v2, v3);
4965    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
4966    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4967
4968    void *pointerArgs[] = {
4969    };
4970
4971    fixupGLMessage(glContext, wallStartTime, wallEndTime,
4972                              threadStartTime, threadEndTime,
4973                              &glmsg, pointerArgs);
4974    glContext->traceGLMessage(&glmsg);
4975}
4976
4977void GLTrace_glUniform4fv(GLint location, GLsizei count, const GLfloat * value) {
4978    GLMessage glmsg;
4979    GLTraceContext *glContext = getGLTraceContext();
4980
4981    glmsg.set_function(GLMessage::glUniform4fv);
4982
4983    // copy argument location
4984    GLMessage_DataType *arg_location = glmsg.add_args();
4985    arg_location->set_isarray(false);
4986    arg_location->set_type(GLMessage::DataType::INT);
4987    arg_location->add_intvalue(location);
4988
4989    // copy argument count
4990    GLMessage_DataType *arg_count = glmsg.add_args();
4991    arg_count->set_isarray(false);
4992    arg_count->set_type(GLMessage::DataType::INT);
4993    arg_count->add_intvalue(count);
4994
4995    // copy argument value
4996    GLMessage_DataType *arg_value = glmsg.add_args();
4997    arg_value->set_isarray(false);
4998    arg_value->set_type(GLMessage::DataType::INT64);
4999    arg_value->add_int64value((uintptr_t)value);
5000
5001    // call function
5002    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5003    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5004    glContext->hooks->gl.glUniform4fv(location, count, value);
5005    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5006    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5007
5008    void *pointerArgs[] = {
5009        (void *) value,
5010    };
5011
5012    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5013                              threadStartTime, threadEndTime,
5014                              &glmsg, pointerArgs);
5015    glContext->traceGLMessage(&glmsg);
5016}
5017
5018void GLTrace_glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) {
5019    GLMessage glmsg;
5020    GLTraceContext *glContext = getGLTraceContext();
5021
5022    glmsg.set_function(GLMessage::glUniform4i);
5023
5024    // copy argument location
5025    GLMessage_DataType *arg_location = glmsg.add_args();
5026    arg_location->set_isarray(false);
5027    arg_location->set_type(GLMessage::DataType::INT);
5028    arg_location->add_intvalue(location);
5029
5030    // copy argument v0
5031    GLMessage_DataType *arg_v0 = glmsg.add_args();
5032    arg_v0->set_isarray(false);
5033    arg_v0->set_type(GLMessage::DataType::INT);
5034    arg_v0->add_intvalue(v0);
5035
5036    // copy argument v1
5037    GLMessage_DataType *arg_v1 = glmsg.add_args();
5038    arg_v1->set_isarray(false);
5039    arg_v1->set_type(GLMessage::DataType::INT);
5040    arg_v1->add_intvalue(v1);
5041
5042    // copy argument v2
5043    GLMessage_DataType *arg_v2 = glmsg.add_args();
5044    arg_v2->set_isarray(false);
5045    arg_v2->set_type(GLMessage::DataType::INT);
5046    arg_v2->add_intvalue(v2);
5047
5048    // copy argument v3
5049    GLMessage_DataType *arg_v3 = glmsg.add_args();
5050    arg_v3->set_isarray(false);
5051    arg_v3->set_type(GLMessage::DataType::INT);
5052    arg_v3->add_intvalue(v3);
5053
5054    // call function
5055    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5056    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5057    glContext->hooks->gl.glUniform4i(location, v0, v1, v2, v3);
5058    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5059    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5060
5061    void *pointerArgs[] = {
5062    };
5063
5064    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5065                              threadStartTime, threadEndTime,
5066                              &glmsg, pointerArgs);
5067    glContext->traceGLMessage(&glmsg);
5068}
5069
5070void GLTrace_glUniform4iv(GLint location, GLsizei count, const GLint * value) {
5071    GLMessage glmsg;
5072    GLTraceContext *glContext = getGLTraceContext();
5073
5074    glmsg.set_function(GLMessage::glUniform4iv);
5075
5076    // copy argument location
5077    GLMessage_DataType *arg_location = glmsg.add_args();
5078    arg_location->set_isarray(false);
5079    arg_location->set_type(GLMessage::DataType::INT);
5080    arg_location->add_intvalue(location);
5081
5082    // copy argument count
5083    GLMessage_DataType *arg_count = glmsg.add_args();
5084    arg_count->set_isarray(false);
5085    arg_count->set_type(GLMessage::DataType::INT);
5086    arg_count->add_intvalue(count);
5087
5088    // copy argument value
5089    GLMessage_DataType *arg_value = glmsg.add_args();
5090    arg_value->set_isarray(false);
5091    arg_value->set_type(GLMessage::DataType::INT64);
5092    arg_value->add_int64value((uintptr_t)value);
5093
5094    // call function
5095    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5096    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5097    glContext->hooks->gl.glUniform4iv(location, count, value);
5098    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5099    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5100
5101    void *pointerArgs[] = {
5102        (void *) value,
5103    };
5104
5105    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5106                              threadStartTime, threadEndTime,
5107                              &glmsg, pointerArgs);
5108    glContext->traceGLMessage(&glmsg);
5109}
5110
5111void GLTrace_glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
5112    GLMessage glmsg;
5113    GLTraceContext *glContext = getGLTraceContext();
5114
5115    glmsg.set_function(GLMessage::glUniformMatrix2fv);
5116
5117    // copy argument location
5118    GLMessage_DataType *arg_location = glmsg.add_args();
5119    arg_location->set_isarray(false);
5120    arg_location->set_type(GLMessage::DataType::INT);
5121    arg_location->add_intvalue(location);
5122
5123    // copy argument count
5124    GLMessage_DataType *arg_count = glmsg.add_args();
5125    arg_count->set_isarray(false);
5126    arg_count->set_type(GLMessage::DataType::INT);
5127    arg_count->add_intvalue(count);
5128
5129    // copy argument transpose
5130    GLMessage_DataType *arg_transpose = glmsg.add_args();
5131    arg_transpose->set_isarray(false);
5132    arg_transpose->set_type(GLMessage::DataType::BOOL);
5133    arg_transpose->add_boolvalue(transpose);
5134
5135    // copy argument value
5136    GLMessage_DataType *arg_value = glmsg.add_args();
5137    arg_value->set_isarray(false);
5138    arg_value->set_type(GLMessage::DataType::INT64);
5139    arg_value->add_int64value((uintptr_t)value);
5140
5141    // call function
5142    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5143    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5144    glContext->hooks->gl.glUniformMatrix2fv(location, count, transpose, value);
5145    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5146    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5147
5148    void *pointerArgs[] = {
5149        (void *) value,
5150    };
5151
5152    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5153                              threadStartTime, threadEndTime,
5154                              &glmsg, pointerArgs);
5155    glContext->traceGLMessage(&glmsg);
5156}
5157
5158void GLTrace_glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
5159    GLMessage glmsg;
5160    GLTraceContext *glContext = getGLTraceContext();
5161
5162    glmsg.set_function(GLMessage::glUniformMatrix3fv);
5163
5164    // copy argument location
5165    GLMessage_DataType *arg_location = glmsg.add_args();
5166    arg_location->set_isarray(false);
5167    arg_location->set_type(GLMessage::DataType::INT);
5168    arg_location->add_intvalue(location);
5169
5170    // copy argument count
5171    GLMessage_DataType *arg_count = glmsg.add_args();
5172    arg_count->set_isarray(false);
5173    arg_count->set_type(GLMessage::DataType::INT);
5174    arg_count->add_intvalue(count);
5175
5176    // copy argument transpose
5177    GLMessage_DataType *arg_transpose = glmsg.add_args();
5178    arg_transpose->set_isarray(false);
5179    arg_transpose->set_type(GLMessage::DataType::BOOL);
5180    arg_transpose->add_boolvalue(transpose);
5181
5182    // copy argument value
5183    GLMessage_DataType *arg_value = glmsg.add_args();
5184    arg_value->set_isarray(false);
5185    arg_value->set_type(GLMessage::DataType::INT64);
5186    arg_value->add_int64value((uintptr_t)value);
5187
5188    // call function
5189    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5190    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5191    glContext->hooks->gl.glUniformMatrix3fv(location, count, transpose, value);
5192    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5193    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5194
5195    void *pointerArgs[] = {
5196        (void *) value,
5197    };
5198
5199    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5200                              threadStartTime, threadEndTime,
5201                              &glmsg, pointerArgs);
5202    glContext->traceGLMessage(&glmsg);
5203}
5204
5205void GLTrace_glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
5206    GLMessage glmsg;
5207    GLTraceContext *glContext = getGLTraceContext();
5208
5209    glmsg.set_function(GLMessage::glUniformMatrix4fv);
5210
5211    // copy argument location
5212    GLMessage_DataType *arg_location = glmsg.add_args();
5213    arg_location->set_isarray(false);
5214    arg_location->set_type(GLMessage::DataType::INT);
5215    arg_location->add_intvalue(location);
5216
5217    // copy argument count
5218    GLMessage_DataType *arg_count = glmsg.add_args();
5219    arg_count->set_isarray(false);
5220    arg_count->set_type(GLMessage::DataType::INT);
5221    arg_count->add_intvalue(count);
5222
5223    // copy argument transpose
5224    GLMessage_DataType *arg_transpose = glmsg.add_args();
5225    arg_transpose->set_isarray(false);
5226    arg_transpose->set_type(GLMessage::DataType::BOOL);
5227    arg_transpose->add_boolvalue(transpose);
5228
5229    // copy argument value
5230    GLMessage_DataType *arg_value = glmsg.add_args();
5231    arg_value->set_isarray(false);
5232    arg_value->set_type(GLMessage::DataType::INT64);
5233    arg_value->add_int64value((uintptr_t)value);
5234
5235    // call function
5236    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5237    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5238    glContext->hooks->gl.glUniformMatrix4fv(location, count, transpose, value);
5239    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5240    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5241
5242    void *pointerArgs[] = {
5243        (void *) value,
5244    };
5245
5246    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5247                              threadStartTime, threadEndTime,
5248                              &glmsg, pointerArgs);
5249    glContext->traceGLMessage(&glmsg);
5250}
5251
5252void GLTrace_glUseProgram(GLuint program) {
5253    GLMessage glmsg;
5254    GLTraceContext *glContext = getGLTraceContext();
5255
5256    glmsg.set_function(GLMessage::glUseProgram);
5257
5258    // copy argument program
5259    GLMessage_DataType *arg_program = glmsg.add_args();
5260    arg_program->set_isarray(false);
5261    arg_program->set_type(GLMessage::DataType::INT);
5262    arg_program->add_intvalue(program);
5263
5264    // call function
5265    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5266    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5267    glContext->hooks->gl.glUseProgram(program);
5268    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5269    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5270
5271    void *pointerArgs[] = {
5272    };
5273
5274    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5275                              threadStartTime, threadEndTime,
5276                              &glmsg, pointerArgs);
5277    glContext->traceGLMessage(&glmsg);
5278}
5279
5280void GLTrace_glValidateProgram(GLuint program) {
5281    GLMessage glmsg;
5282    GLTraceContext *glContext = getGLTraceContext();
5283
5284    glmsg.set_function(GLMessage::glValidateProgram);
5285
5286    // copy argument program
5287    GLMessage_DataType *arg_program = glmsg.add_args();
5288    arg_program->set_isarray(false);
5289    arg_program->set_type(GLMessage::DataType::INT);
5290    arg_program->add_intvalue(program);
5291
5292    // call function
5293    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5294    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5295    glContext->hooks->gl.glValidateProgram(program);
5296    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5297    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5298
5299    void *pointerArgs[] = {
5300    };
5301
5302    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5303                              threadStartTime, threadEndTime,
5304                              &glmsg, pointerArgs);
5305    glContext->traceGLMessage(&glmsg);
5306}
5307
5308void GLTrace_glVertexAttrib1f(GLuint index, GLfloat x) {
5309    GLMessage glmsg;
5310    GLTraceContext *glContext = getGLTraceContext();
5311
5312    glmsg.set_function(GLMessage::glVertexAttrib1f);
5313
5314    // copy argument index
5315    GLMessage_DataType *arg_index = glmsg.add_args();
5316    arg_index->set_isarray(false);
5317    arg_index->set_type(GLMessage::DataType::INT);
5318    arg_index->add_intvalue(index);
5319
5320    // copy argument x
5321    GLMessage_DataType *arg_x = glmsg.add_args();
5322    arg_x->set_isarray(false);
5323    arg_x->set_type(GLMessage::DataType::FLOAT);
5324    arg_x->add_floatvalue(x);
5325
5326    // call function
5327    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5328    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5329    glContext->hooks->gl.glVertexAttrib1f(index, x);
5330    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5331    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5332
5333    void *pointerArgs[] = {
5334    };
5335
5336    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5337                              threadStartTime, threadEndTime,
5338                              &glmsg, pointerArgs);
5339    glContext->traceGLMessage(&glmsg);
5340}
5341
5342void GLTrace_glVertexAttrib1fv(GLuint index, const GLfloat * v) {
5343    GLMessage glmsg;
5344    GLTraceContext *glContext = getGLTraceContext();
5345
5346    glmsg.set_function(GLMessage::glVertexAttrib1fv);
5347
5348    // copy argument index
5349    GLMessage_DataType *arg_index = glmsg.add_args();
5350    arg_index->set_isarray(false);
5351    arg_index->set_type(GLMessage::DataType::INT);
5352    arg_index->add_intvalue(index);
5353
5354    // copy argument v
5355    GLMessage_DataType *arg_v = glmsg.add_args();
5356    arg_v->set_isarray(false);
5357    arg_v->set_type(GLMessage::DataType::INT64);
5358    arg_v->add_int64value((uintptr_t)v);
5359
5360    // call function
5361    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5362    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5363    glContext->hooks->gl.glVertexAttrib1fv(index, v);
5364    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5365    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5366
5367    void *pointerArgs[] = {
5368        (void *) v,
5369    };
5370
5371    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5372                              threadStartTime, threadEndTime,
5373                              &glmsg, pointerArgs);
5374    glContext->traceGLMessage(&glmsg);
5375}
5376
5377void GLTrace_glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) {
5378    GLMessage glmsg;
5379    GLTraceContext *glContext = getGLTraceContext();
5380
5381    glmsg.set_function(GLMessage::glVertexAttrib2f);
5382
5383    // copy argument index
5384    GLMessage_DataType *arg_index = glmsg.add_args();
5385    arg_index->set_isarray(false);
5386    arg_index->set_type(GLMessage::DataType::INT);
5387    arg_index->add_intvalue(index);
5388
5389    // copy argument x
5390    GLMessage_DataType *arg_x = glmsg.add_args();
5391    arg_x->set_isarray(false);
5392    arg_x->set_type(GLMessage::DataType::FLOAT);
5393    arg_x->add_floatvalue(x);
5394
5395    // copy argument y
5396    GLMessage_DataType *arg_y = glmsg.add_args();
5397    arg_y->set_isarray(false);
5398    arg_y->set_type(GLMessage::DataType::FLOAT);
5399    arg_y->add_floatvalue(y);
5400
5401    // call function
5402    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5403    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5404    glContext->hooks->gl.glVertexAttrib2f(index, x, y);
5405    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5406    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5407
5408    void *pointerArgs[] = {
5409    };
5410
5411    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5412                              threadStartTime, threadEndTime,
5413                              &glmsg, pointerArgs);
5414    glContext->traceGLMessage(&glmsg);
5415}
5416
5417void GLTrace_glVertexAttrib2fv(GLuint index, const GLfloat * v) {
5418    GLMessage glmsg;
5419    GLTraceContext *glContext = getGLTraceContext();
5420
5421    glmsg.set_function(GLMessage::glVertexAttrib2fv);
5422
5423    // copy argument index
5424    GLMessage_DataType *arg_index = glmsg.add_args();
5425    arg_index->set_isarray(false);
5426    arg_index->set_type(GLMessage::DataType::INT);
5427    arg_index->add_intvalue(index);
5428
5429    // copy argument v
5430    GLMessage_DataType *arg_v = glmsg.add_args();
5431    arg_v->set_isarray(false);
5432    arg_v->set_type(GLMessage::DataType::INT64);
5433    arg_v->add_int64value((uintptr_t)v);
5434
5435    // call function
5436    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5437    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5438    glContext->hooks->gl.glVertexAttrib2fv(index, v);
5439    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5440    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5441
5442    void *pointerArgs[] = {
5443        (void *) v,
5444    };
5445
5446    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5447                              threadStartTime, threadEndTime,
5448                              &glmsg, pointerArgs);
5449    glContext->traceGLMessage(&glmsg);
5450}
5451
5452void GLTrace_glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) {
5453    GLMessage glmsg;
5454    GLTraceContext *glContext = getGLTraceContext();
5455
5456    glmsg.set_function(GLMessage::glVertexAttrib3f);
5457
5458    // copy argument index
5459    GLMessage_DataType *arg_index = glmsg.add_args();
5460    arg_index->set_isarray(false);
5461    arg_index->set_type(GLMessage::DataType::INT);
5462    arg_index->add_intvalue(index);
5463
5464    // copy argument x
5465    GLMessage_DataType *arg_x = glmsg.add_args();
5466    arg_x->set_isarray(false);
5467    arg_x->set_type(GLMessage::DataType::FLOAT);
5468    arg_x->add_floatvalue(x);
5469
5470    // copy argument y
5471    GLMessage_DataType *arg_y = glmsg.add_args();
5472    arg_y->set_isarray(false);
5473    arg_y->set_type(GLMessage::DataType::FLOAT);
5474    arg_y->add_floatvalue(y);
5475
5476    // copy argument z
5477    GLMessage_DataType *arg_z = glmsg.add_args();
5478    arg_z->set_isarray(false);
5479    arg_z->set_type(GLMessage::DataType::FLOAT);
5480    arg_z->add_floatvalue(z);
5481
5482    // call function
5483    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5484    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5485    glContext->hooks->gl.glVertexAttrib3f(index, x, y, z);
5486    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5487    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5488
5489    void *pointerArgs[] = {
5490    };
5491
5492    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5493                              threadStartTime, threadEndTime,
5494                              &glmsg, pointerArgs);
5495    glContext->traceGLMessage(&glmsg);
5496}
5497
5498void GLTrace_glVertexAttrib3fv(GLuint index, const GLfloat * v) {
5499    GLMessage glmsg;
5500    GLTraceContext *glContext = getGLTraceContext();
5501
5502    glmsg.set_function(GLMessage::glVertexAttrib3fv);
5503
5504    // copy argument index
5505    GLMessage_DataType *arg_index = glmsg.add_args();
5506    arg_index->set_isarray(false);
5507    arg_index->set_type(GLMessage::DataType::INT);
5508    arg_index->add_intvalue(index);
5509
5510    // copy argument v
5511    GLMessage_DataType *arg_v = glmsg.add_args();
5512    arg_v->set_isarray(false);
5513    arg_v->set_type(GLMessage::DataType::INT64);
5514    arg_v->add_int64value((uintptr_t)v);
5515
5516    // call function
5517    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5518    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5519    glContext->hooks->gl.glVertexAttrib3fv(index, v);
5520    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5521    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5522
5523    void *pointerArgs[] = {
5524        (void *) v,
5525    };
5526
5527    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5528                              threadStartTime, threadEndTime,
5529                              &glmsg, pointerArgs);
5530    glContext->traceGLMessage(&glmsg);
5531}
5532
5533void GLTrace_glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {
5534    GLMessage glmsg;
5535    GLTraceContext *glContext = getGLTraceContext();
5536
5537    glmsg.set_function(GLMessage::glVertexAttrib4f);
5538
5539    // copy argument index
5540    GLMessage_DataType *arg_index = glmsg.add_args();
5541    arg_index->set_isarray(false);
5542    arg_index->set_type(GLMessage::DataType::INT);
5543    arg_index->add_intvalue(index);
5544
5545    // copy argument x
5546    GLMessage_DataType *arg_x = glmsg.add_args();
5547    arg_x->set_isarray(false);
5548    arg_x->set_type(GLMessage::DataType::FLOAT);
5549    arg_x->add_floatvalue(x);
5550
5551    // copy argument y
5552    GLMessage_DataType *arg_y = glmsg.add_args();
5553    arg_y->set_isarray(false);
5554    arg_y->set_type(GLMessage::DataType::FLOAT);
5555    arg_y->add_floatvalue(y);
5556
5557    // copy argument z
5558    GLMessage_DataType *arg_z = glmsg.add_args();
5559    arg_z->set_isarray(false);
5560    arg_z->set_type(GLMessage::DataType::FLOAT);
5561    arg_z->add_floatvalue(z);
5562
5563    // copy argument w
5564    GLMessage_DataType *arg_w = glmsg.add_args();
5565    arg_w->set_isarray(false);
5566    arg_w->set_type(GLMessage::DataType::FLOAT);
5567    arg_w->add_floatvalue(w);
5568
5569    // call function
5570    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5571    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5572    glContext->hooks->gl.glVertexAttrib4f(index, x, y, z, w);
5573    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5574    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5575
5576    void *pointerArgs[] = {
5577    };
5578
5579    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5580                              threadStartTime, threadEndTime,
5581                              &glmsg, pointerArgs);
5582    glContext->traceGLMessage(&glmsg);
5583}
5584
5585void GLTrace_glVertexAttrib4fv(GLuint index, const GLfloat * v) {
5586    GLMessage glmsg;
5587    GLTraceContext *glContext = getGLTraceContext();
5588
5589    glmsg.set_function(GLMessage::glVertexAttrib4fv);
5590
5591    // copy argument index
5592    GLMessage_DataType *arg_index = glmsg.add_args();
5593    arg_index->set_isarray(false);
5594    arg_index->set_type(GLMessage::DataType::INT);
5595    arg_index->add_intvalue(index);
5596
5597    // copy argument v
5598    GLMessage_DataType *arg_v = glmsg.add_args();
5599    arg_v->set_isarray(false);
5600    arg_v->set_type(GLMessage::DataType::INT64);
5601    arg_v->add_int64value((uintptr_t)v);
5602
5603    // call function
5604    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5605    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5606    glContext->hooks->gl.glVertexAttrib4fv(index, v);
5607    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5608    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5609
5610    void *pointerArgs[] = {
5611        (void *) v,
5612    };
5613
5614    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5615                              threadStartTime, threadEndTime,
5616                              &glmsg, pointerArgs);
5617    glContext->traceGLMessage(&glmsg);
5618}
5619
5620void GLTrace_glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer) {
5621    GLMessage glmsg;
5622    GLTraceContext *glContext = getGLTraceContext();
5623
5624    glmsg.set_function(GLMessage::glVertexAttribPointer);
5625
5626    // copy argument index
5627    GLMessage_DataType *arg_index = glmsg.add_args();
5628    arg_index->set_isarray(false);
5629    arg_index->set_type(GLMessage::DataType::INT);
5630    arg_index->add_intvalue(index);
5631
5632    // copy argument size
5633    GLMessage_DataType *arg_size = glmsg.add_args();
5634    arg_size->set_isarray(false);
5635    arg_size->set_type(GLMessage::DataType::INT);
5636    arg_size->add_intvalue(size);
5637
5638    // copy argument type
5639    GLMessage_DataType *arg_type = glmsg.add_args();
5640    arg_type->set_isarray(false);
5641    arg_type->set_type(GLMessage::DataType::ENUM);
5642    arg_type->add_intvalue((int)type);
5643
5644    // copy argument normalized
5645    GLMessage_DataType *arg_normalized = glmsg.add_args();
5646    arg_normalized->set_isarray(false);
5647    arg_normalized->set_type(GLMessage::DataType::BOOL);
5648    arg_normalized->add_boolvalue(normalized);
5649
5650    // copy argument stride
5651    GLMessage_DataType *arg_stride = glmsg.add_args();
5652    arg_stride->set_isarray(false);
5653    arg_stride->set_type(GLMessage::DataType::INT);
5654    arg_stride->add_intvalue(stride);
5655
5656    // copy argument pointer
5657    GLMessage_DataType *arg_pointer = glmsg.add_args();
5658    arg_pointer->set_isarray(false);
5659    arg_pointer->set_type(GLMessage::DataType::INT64);
5660    arg_pointer->add_int64value((uintptr_t)pointer);
5661
5662    // call function
5663    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5664    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5665    glContext->hooks->gl.glVertexAttribPointer(index, size, type, normalized, stride, pointer);
5666    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5667    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5668
5669    void *pointerArgs[] = {
5670        (void *) pointer,
5671    };
5672
5673    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5674                              threadStartTime, threadEndTime,
5675                              &glmsg, pointerArgs);
5676    glContext->traceGLMessage(&glmsg);
5677}
5678
5679void GLTrace_glViewport(GLint x, GLint y, GLsizei width, GLsizei height) {
5680    GLMessage glmsg;
5681    GLTraceContext *glContext = getGLTraceContext();
5682
5683    glmsg.set_function(GLMessage::glViewport);
5684
5685    // copy argument x
5686    GLMessage_DataType *arg_x = glmsg.add_args();
5687    arg_x->set_isarray(false);
5688    arg_x->set_type(GLMessage::DataType::INT);
5689    arg_x->add_intvalue(x);
5690
5691    // copy argument y
5692    GLMessage_DataType *arg_y = glmsg.add_args();
5693    arg_y->set_isarray(false);
5694    arg_y->set_type(GLMessage::DataType::INT);
5695    arg_y->add_intvalue(y);
5696
5697    // copy argument width
5698    GLMessage_DataType *arg_width = glmsg.add_args();
5699    arg_width->set_isarray(false);
5700    arg_width->set_type(GLMessage::DataType::INT);
5701    arg_width->add_intvalue(width);
5702
5703    // copy argument height
5704    GLMessage_DataType *arg_height = glmsg.add_args();
5705    arg_height->set_isarray(false);
5706    arg_height->set_type(GLMessage::DataType::INT);
5707    arg_height->add_intvalue(height);
5708
5709    // call function
5710    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5711    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5712    glContext->hooks->gl.glViewport(x, y, width, height);
5713    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5714    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5715
5716    void *pointerArgs[] = {
5717    };
5718
5719    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5720                              threadStartTime, threadEndTime,
5721                              &glmsg, pointerArgs);
5722    glContext->traceGLMessage(&glmsg);
5723}
5724
5725void GLTrace_glReadBuffer(GLenum mode) {
5726    GLMessage glmsg;
5727    GLTraceContext *glContext = getGLTraceContext();
5728
5729    glmsg.set_function(GLMessage::glReadBuffer);
5730
5731    // copy argument mode
5732    GLMessage_DataType *arg_mode = glmsg.add_args();
5733    arg_mode->set_isarray(false);
5734    arg_mode->set_type(GLMessage::DataType::ENUM);
5735    arg_mode->add_intvalue((int)mode);
5736
5737    // call function
5738    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5739    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5740    glContext->hooks->gl.glReadBuffer(mode);
5741    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5742    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5743
5744    void *pointerArgs[] = {
5745    };
5746
5747    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5748                              threadStartTime, threadEndTime,
5749                              &glmsg, pointerArgs);
5750    glContext->traceGLMessage(&glmsg);
5751}
5752
5753void GLTrace_glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void * indices) {
5754    GLMessage glmsg;
5755    GLTraceContext *glContext = getGLTraceContext();
5756
5757    glmsg.set_function(GLMessage::glDrawRangeElements);
5758
5759    // copy argument mode
5760    GLMessage_DataType *arg_mode = glmsg.add_args();
5761    arg_mode->set_isarray(false);
5762    arg_mode->set_type(GLMessage::DataType::ENUM);
5763    arg_mode->add_intvalue((int)mode);
5764
5765    // copy argument start
5766    GLMessage_DataType *arg_start = glmsg.add_args();
5767    arg_start->set_isarray(false);
5768    arg_start->set_type(GLMessage::DataType::INT);
5769    arg_start->add_intvalue(start);
5770
5771    // copy argument end
5772    GLMessage_DataType *arg_end = glmsg.add_args();
5773    arg_end->set_isarray(false);
5774    arg_end->set_type(GLMessage::DataType::INT);
5775    arg_end->add_intvalue(end);
5776
5777    // copy argument count
5778    GLMessage_DataType *arg_count = glmsg.add_args();
5779    arg_count->set_isarray(false);
5780    arg_count->set_type(GLMessage::DataType::INT);
5781    arg_count->add_intvalue(count);
5782
5783    // copy argument type
5784    GLMessage_DataType *arg_type = glmsg.add_args();
5785    arg_type->set_isarray(false);
5786    arg_type->set_type(GLMessage::DataType::ENUM);
5787    arg_type->add_intvalue((int)type);
5788
5789    // copy argument indices
5790    GLMessage_DataType *arg_indices = glmsg.add_args();
5791    arg_indices->set_isarray(false);
5792    arg_indices->set_type(GLMessage::DataType::INT64);
5793    arg_indices->add_int64value((uintptr_t)indices);
5794
5795    // call function
5796    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5797    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5798    glContext->hooks->gl.glDrawRangeElements(mode, start, end, count, type, indices);
5799    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5800    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5801
5802    void *pointerArgs[] = {
5803        (void *) indices,
5804    };
5805
5806    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5807                              threadStartTime, threadEndTime,
5808                              &glmsg, pointerArgs);
5809    glContext->traceGLMessage(&glmsg);
5810}
5811
5812void GLTrace_glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels) {
5813    GLMessage glmsg;
5814    GLTraceContext *glContext = getGLTraceContext();
5815
5816    glmsg.set_function(GLMessage::glTexImage3D);
5817
5818    // copy argument target
5819    GLMessage_DataType *arg_target = glmsg.add_args();
5820    arg_target->set_isarray(false);
5821    arg_target->set_type(GLMessage::DataType::ENUM);
5822    arg_target->add_intvalue((int)target);
5823
5824    // copy argument level
5825    GLMessage_DataType *arg_level = glmsg.add_args();
5826    arg_level->set_isarray(false);
5827    arg_level->set_type(GLMessage::DataType::INT);
5828    arg_level->add_intvalue(level);
5829
5830    // copy argument internalformat
5831    GLMessage_DataType *arg_internalformat = glmsg.add_args();
5832    arg_internalformat->set_isarray(false);
5833    arg_internalformat->set_type(GLMessage::DataType::INT);
5834    arg_internalformat->add_intvalue(internalformat);
5835
5836    // copy argument width
5837    GLMessage_DataType *arg_width = glmsg.add_args();
5838    arg_width->set_isarray(false);
5839    arg_width->set_type(GLMessage::DataType::INT);
5840    arg_width->add_intvalue(width);
5841
5842    // copy argument height
5843    GLMessage_DataType *arg_height = glmsg.add_args();
5844    arg_height->set_isarray(false);
5845    arg_height->set_type(GLMessage::DataType::INT);
5846    arg_height->add_intvalue(height);
5847
5848    // copy argument depth
5849    GLMessage_DataType *arg_depth = glmsg.add_args();
5850    arg_depth->set_isarray(false);
5851    arg_depth->set_type(GLMessage::DataType::INT);
5852    arg_depth->add_intvalue(depth);
5853
5854    // copy argument border
5855    GLMessage_DataType *arg_border = glmsg.add_args();
5856    arg_border->set_isarray(false);
5857    arg_border->set_type(GLMessage::DataType::INT);
5858    arg_border->add_intvalue(border);
5859
5860    // copy argument format
5861    GLMessage_DataType *arg_format = glmsg.add_args();
5862    arg_format->set_isarray(false);
5863    arg_format->set_type(GLMessage::DataType::ENUM);
5864    arg_format->add_intvalue((int)format);
5865
5866    // copy argument type
5867    GLMessage_DataType *arg_type = glmsg.add_args();
5868    arg_type->set_isarray(false);
5869    arg_type->set_type(GLMessage::DataType::ENUM);
5870    arg_type->add_intvalue((int)type);
5871
5872    // copy argument pixels
5873    GLMessage_DataType *arg_pixels = glmsg.add_args();
5874    arg_pixels->set_isarray(false);
5875    arg_pixels->set_type(GLMessage::DataType::INT64);
5876    arg_pixels->add_int64value((uintptr_t)pixels);
5877
5878    // call function
5879    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5880    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5881    glContext->hooks->gl.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels);
5882    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5883    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5884
5885    void *pointerArgs[] = {
5886        (void *) pixels,
5887    };
5888
5889    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5890                              threadStartTime, threadEndTime,
5891                              &glmsg, pointerArgs);
5892    glContext->traceGLMessage(&glmsg);
5893}
5894
5895void 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) {
5896    GLMessage glmsg;
5897    GLTraceContext *glContext = getGLTraceContext();
5898
5899    glmsg.set_function(GLMessage::glTexSubImage3D);
5900
5901    // copy argument target
5902    GLMessage_DataType *arg_target = glmsg.add_args();
5903    arg_target->set_isarray(false);
5904    arg_target->set_type(GLMessage::DataType::ENUM);
5905    arg_target->add_intvalue((int)target);
5906
5907    // copy argument level
5908    GLMessage_DataType *arg_level = glmsg.add_args();
5909    arg_level->set_isarray(false);
5910    arg_level->set_type(GLMessage::DataType::INT);
5911    arg_level->add_intvalue(level);
5912
5913    // copy argument xoffset
5914    GLMessage_DataType *arg_xoffset = glmsg.add_args();
5915    arg_xoffset->set_isarray(false);
5916    arg_xoffset->set_type(GLMessage::DataType::INT);
5917    arg_xoffset->add_intvalue(xoffset);
5918
5919    // copy argument yoffset
5920    GLMessage_DataType *arg_yoffset = glmsg.add_args();
5921    arg_yoffset->set_isarray(false);
5922    arg_yoffset->set_type(GLMessage::DataType::INT);
5923    arg_yoffset->add_intvalue(yoffset);
5924
5925    // copy argument zoffset
5926    GLMessage_DataType *arg_zoffset = glmsg.add_args();
5927    arg_zoffset->set_isarray(false);
5928    arg_zoffset->set_type(GLMessage::DataType::INT);
5929    arg_zoffset->add_intvalue(zoffset);
5930
5931    // copy argument width
5932    GLMessage_DataType *arg_width = glmsg.add_args();
5933    arg_width->set_isarray(false);
5934    arg_width->set_type(GLMessage::DataType::INT);
5935    arg_width->add_intvalue(width);
5936
5937    // copy argument height
5938    GLMessage_DataType *arg_height = glmsg.add_args();
5939    arg_height->set_isarray(false);
5940    arg_height->set_type(GLMessage::DataType::INT);
5941    arg_height->add_intvalue(height);
5942
5943    // copy argument depth
5944    GLMessage_DataType *arg_depth = glmsg.add_args();
5945    arg_depth->set_isarray(false);
5946    arg_depth->set_type(GLMessage::DataType::INT);
5947    arg_depth->add_intvalue(depth);
5948
5949    // copy argument format
5950    GLMessage_DataType *arg_format = glmsg.add_args();
5951    arg_format->set_isarray(false);
5952    arg_format->set_type(GLMessage::DataType::ENUM);
5953    arg_format->add_intvalue((int)format);
5954
5955    // copy argument type
5956    GLMessage_DataType *arg_type = glmsg.add_args();
5957    arg_type->set_isarray(false);
5958    arg_type->set_type(GLMessage::DataType::ENUM);
5959    arg_type->add_intvalue((int)type);
5960
5961    // copy argument pixels
5962    GLMessage_DataType *arg_pixels = glmsg.add_args();
5963    arg_pixels->set_isarray(false);
5964    arg_pixels->set_type(GLMessage::DataType::INT64);
5965    arg_pixels->add_int64value((uintptr_t)pixels);
5966
5967    // call function
5968    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
5969    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5970    glContext->hooks->gl.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
5971    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5972    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5973
5974    void *pointerArgs[] = {
5975        (void *) pixels,
5976    };
5977
5978    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5979                              threadStartTime, threadEndTime,
5980                              &glmsg, pointerArgs);
5981    glContext->traceGLMessage(&glmsg);
5982}
5983
5984void GLTrace_glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) {
5985    GLMessage glmsg;
5986    GLTraceContext *glContext = getGLTraceContext();
5987
5988    glmsg.set_function(GLMessage::glCopyTexSubImage3D);
5989
5990    // copy argument target
5991    GLMessage_DataType *arg_target = glmsg.add_args();
5992    arg_target->set_isarray(false);
5993    arg_target->set_type(GLMessage::DataType::ENUM);
5994    arg_target->add_intvalue((int)target);
5995
5996    // copy argument level
5997    GLMessage_DataType *arg_level = glmsg.add_args();
5998    arg_level->set_isarray(false);
5999    arg_level->set_type(GLMessage::DataType::INT);
6000    arg_level->add_intvalue(level);
6001
6002    // copy argument xoffset
6003    GLMessage_DataType *arg_xoffset = glmsg.add_args();
6004    arg_xoffset->set_isarray(false);
6005    arg_xoffset->set_type(GLMessage::DataType::INT);
6006    arg_xoffset->add_intvalue(xoffset);
6007
6008    // copy argument yoffset
6009    GLMessage_DataType *arg_yoffset = glmsg.add_args();
6010    arg_yoffset->set_isarray(false);
6011    arg_yoffset->set_type(GLMessage::DataType::INT);
6012    arg_yoffset->add_intvalue(yoffset);
6013
6014    // copy argument zoffset
6015    GLMessage_DataType *arg_zoffset = glmsg.add_args();
6016    arg_zoffset->set_isarray(false);
6017    arg_zoffset->set_type(GLMessage::DataType::INT);
6018    arg_zoffset->add_intvalue(zoffset);
6019
6020    // copy argument x
6021    GLMessage_DataType *arg_x = glmsg.add_args();
6022    arg_x->set_isarray(false);
6023    arg_x->set_type(GLMessage::DataType::INT);
6024    arg_x->add_intvalue(x);
6025
6026    // copy argument y
6027    GLMessage_DataType *arg_y = glmsg.add_args();
6028    arg_y->set_isarray(false);
6029    arg_y->set_type(GLMessage::DataType::INT);
6030    arg_y->add_intvalue(y);
6031
6032    // copy argument width
6033    GLMessage_DataType *arg_width = glmsg.add_args();
6034    arg_width->set_isarray(false);
6035    arg_width->set_type(GLMessage::DataType::INT);
6036    arg_width->add_intvalue(width);
6037
6038    // copy argument height
6039    GLMessage_DataType *arg_height = glmsg.add_args();
6040    arg_height->set_isarray(false);
6041    arg_height->set_type(GLMessage::DataType::INT);
6042    arg_height->add_intvalue(height);
6043
6044    // call function
6045    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6046    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6047    glContext->hooks->gl.glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);
6048    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6049    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6050
6051    void *pointerArgs[] = {
6052    };
6053
6054    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6055                              threadStartTime, threadEndTime,
6056                              &glmsg, pointerArgs);
6057    glContext->traceGLMessage(&glmsg);
6058}
6059
6060void GLTrace_glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data) {
6061    GLMessage glmsg;
6062    GLTraceContext *glContext = getGLTraceContext();
6063
6064    glmsg.set_function(GLMessage::glCompressedTexImage3D);
6065
6066    // copy argument target
6067    GLMessage_DataType *arg_target = glmsg.add_args();
6068    arg_target->set_isarray(false);
6069    arg_target->set_type(GLMessage::DataType::ENUM);
6070    arg_target->add_intvalue((int)target);
6071
6072    // copy argument level
6073    GLMessage_DataType *arg_level = glmsg.add_args();
6074    arg_level->set_isarray(false);
6075    arg_level->set_type(GLMessage::DataType::INT);
6076    arg_level->add_intvalue(level);
6077
6078    // copy argument internalformat
6079    GLMessage_DataType *arg_internalformat = glmsg.add_args();
6080    arg_internalformat->set_isarray(false);
6081    arg_internalformat->set_type(GLMessage::DataType::ENUM);
6082    arg_internalformat->add_intvalue((int)internalformat);
6083
6084    // copy argument width
6085    GLMessage_DataType *arg_width = glmsg.add_args();
6086    arg_width->set_isarray(false);
6087    arg_width->set_type(GLMessage::DataType::INT);
6088    arg_width->add_intvalue(width);
6089
6090    // copy argument height
6091    GLMessage_DataType *arg_height = glmsg.add_args();
6092    arg_height->set_isarray(false);
6093    arg_height->set_type(GLMessage::DataType::INT);
6094    arg_height->add_intvalue(height);
6095
6096    // copy argument depth
6097    GLMessage_DataType *arg_depth = glmsg.add_args();
6098    arg_depth->set_isarray(false);
6099    arg_depth->set_type(GLMessage::DataType::INT);
6100    arg_depth->add_intvalue(depth);
6101
6102    // copy argument border
6103    GLMessage_DataType *arg_border = glmsg.add_args();
6104    arg_border->set_isarray(false);
6105    arg_border->set_type(GLMessage::DataType::INT);
6106    arg_border->add_intvalue(border);
6107
6108    // copy argument imageSize
6109    GLMessage_DataType *arg_imageSize = glmsg.add_args();
6110    arg_imageSize->set_isarray(false);
6111    arg_imageSize->set_type(GLMessage::DataType::INT);
6112    arg_imageSize->add_intvalue(imageSize);
6113
6114    // copy argument data
6115    GLMessage_DataType *arg_data = glmsg.add_args();
6116    arg_data->set_isarray(false);
6117    arg_data->set_type(GLMessage::DataType::INT64);
6118    arg_data->add_int64value((uintptr_t)data);
6119
6120    // call function
6121    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6122    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6123    glContext->hooks->gl.glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data);
6124    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6125    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6126
6127    void *pointerArgs[] = {
6128        (void *) data,
6129    };
6130
6131    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6132                              threadStartTime, threadEndTime,
6133                              &glmsg, pointerArgs);
6134    glContext->traceGLMessage(&glmsg);
6135}
6136
6137void 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) {
6138    GLMessage glmsg;
6139    GLTraceContext *glContext = getGLTraceContext();
6140
6141    glmsg.set_function(GLMessage::glCompressedTexSubImage3D);
6142
6143    // copy argument target
6144    GLMessage_DataType *arg_target = glmsg.add_args();
6145    arg_target->set_isarray(false);
6146    arg_target->set_type(GLMessage::DataType::ENUM);
6147    arg_target->add_intvalue((int)target);
6148
6149    // copy argument level
6150    GLMessage_DataType *arg_level = glmsg.add_args();
6151    arg_level->set_isarray(false);
6152    arg_level->set_type(GLMessage::DataType::INT);
6153    arg_level->add_intvalue(level);
6154
6155    // copy argument xoffset
6156    GLMessage_DataType *arg_xoffset = glmsg.add_args();
6157    arg_xoffset->set_isarray(false);
6158    arg_xoffset->set_type(GLMessage::DataType::INT);
6159    arg_xoffset->add_intvalue(xoffset);
6160
6161    // copy argument yoffset
6162    GLMessage_DataType *arg_yoffset = glmsg.add_args();
6163    arg_yoffset->set_isarray(false);
6164    arg_yoffset->set_type(GLMessage::DataType::INT);
6165    arg_yoffset->add_intvalue(yoffset);
6166
6167    // copy argument zoffset
6168    GLMessage_DataType *arg_zoffset = glmsg.add_args();
6169    arg_zoffset->set_isarray(false);
6170    arg_zoffset->set_type(GLMessage::DataType::INT);
6171    arg_zoffset->add_intvalue(zoffset);
6172
6173    // copy argument width
6174    GLMessage_DataType *arg_width = glmsg.add_args();
6175    arg_width->set_isarray(false);
6176    arg_width->set_type(GLMessage::DataType::INT);
6177    arg_width->add_intvalue(width);
6178
6179    // copy argument height
6180    GLMessage_DataType *arg_height = glmsg.add_args();
6181    arg_height->set_isarray(false);
6182    arg_height->set_type(GLMessage::DataType::INT);
6183    arg_height->add_intvalue(height);
6184
6185    // copy argument depth
6186    GLMessage_DataType *arg_depth = glmsg.add_args();
6187    arg_depth->set_isarray(false);
6188    arg_depth->set_type(GLMessage::DataType::INT);
6189    arg_depth->add_intvalue(depth);
6190
6191    // copy argument format
6192    GLMessage_DataType *arg_format = glmsg.add_args();
6193    arg_format->set_isarray(false);
6194    arg_format->set_type(GLMessage::DataType::ENUM);
6195    arg_format->add_intvalue((int)format);
6196
6197    // copy argument imageSize
6198    GLMessage_DataType *arg_imageSize = glmsg.add_args();
6199    arg_imageSize->set_isarray(false);
6200    arg_imageSize->set_type(GLMessage::DataType::INT);
6201    arg_imageSize->add_intvalue(imageSize);
6202
6203    // copy argument data
6204    GLMessage_DataType *arg_data = glmsg.add_args();
6205    arg_data->set_isarray(false);
6206    arg_data->set_type(GLMessage::DataType::INT64);
6207    arg_data->add_int64value((uintptr_t)data);
6208
6209    // call function
6210    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6211    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6212    glContext->hooks->gl.glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
6213    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6214    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6215
6216    void *pointerArgs[] = {
6217        (void *) data,
6218    };
6219
6220    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6221                              threadStartTime, threadEndTime,
6222                              &glmsg, pointerArgs);
6223    glContext->traceGLMessage(&glmsg);
6224}
6225
6226void GLTrace_glGenQueries(GLsizei n, GLuint * ids) {
6227    GLMessage glmsg;
6228    GLTraceContext *glContext = getGLTraceContext();
6229
6230    glmsg.set_function(GLMessage::glGenQueries);
6231
6232    // copy argument n
6233    GLMessage_DataType *arg_n = glmsg.add_args();
6234    arg_n->set_isarray(false);
6235    arg_n->set_type(GLMessage::DataType::INT);
6236    arg_n->add_intvalue(n);
6237
6238    // copy argument ids
6239    GLMessage_DataType *arg_ids = glmsg.add_args();
6240    arg_ids->set_isarray(false);
6241    arg_ids->set_type(GLMessage::DataType::INT64);
6242    arg_ids->add_int64value((uintptr_t)ids);
6243
6244    // call function
6245    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6246    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6247    glContext->hooks->gl.glGenQueries(n, ids);
6248    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6249    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6250
6251    void *pointerArgs[] = {
6252        (void *) ids,
6253    };
6254
6255    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6256                              threadStartTime, threadEndTime,
6257                              &glmsg, pointerArgs);
6258    glContext->traceGLMessage(&glmsg);
6259}
6260
6261void GLTrace_glDeleteQueries(GLsizei n, const GLuint * ids) {
6262    GLMessage glmsg;
6263    GLTraceContext *glContext = getGLTraceContext();
6264
6265    glmsg.set_function(GLMessage::glDeleteQueries);
6266
6267    // copy argument n
6268    GLMessage_DataType *arg_n = glmsg.add_args();
6269    arg_n->set_isarray(false);
6270    arg_n->set_type(GLMessage::DataType::INT);
6271    arg_n->add_intvalue(n);
6272
6273    // copy argument ids
6274    GLMessage_DataType *arg_ids = glmsg.add_args();
6275    arg_ids->set_isarray(false);
6276    arg_ids->set_type(GLMessage::DataType::INT64);
6277    arg_ids->add_int64value((uintptr_t)ids);
6278
6279    // call function
6280    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6281    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6282    glContext->hooks->gl.glDeleteQueries(n, ids);
6283    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6284    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6285
6286    void *pointerArgs[] = {
6287        (void *) ids,
6288    };
6289
6290    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6291                              threadStartTime, threadEndTime,
6292                              &glmsg, pointerArgs);
6293    glContext->traceGLMessage(&glmsg);
6294}
6295
6296GLboolean GLTrace_glIsQuery(GLuint id) {
6297    GLMessage glmsg;
6298    GLTraceContext *glContext = getGLTraceContext();
6299
6300    glmsg.set_function(GLMessage::glIsQuery);
6301
6302    // copy argument id
6303    GLMessage_DataType *arg_id = glmsg.add_args();
6304    arg_id->set_isarray(false);
6305    arg_id->set_type(GLMessage::DataType::INT);
6306    arg_id->add_intvalue(id);
6307
6308    // call function
6309    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6310    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6311    GLboolean retValue = glContext->hooks->gl.glIsQuery(id);
6312    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6313    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6314
6315    // set return value
6316    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
6317    rt->set_isarray(false);
6318    rt->set_type(GLMessage::DataType::BOOL);
6319    rt->add_boolvalue(retValue);
6320
6321    void *pointerArgs[] = {
6322    };
6323
6324    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6325                              threadStartTime, threadEndTime,
6326                              &glmsg, pointerArgs);
6327    glContext->traceGLMessage(&glmsg);
6328
6329    return retValue;
6330}
6331
6332void GLTrace_glBeginQuery(GLenum target, GLuint id) {
6333    GLMessage glmsg;
6334    GLTraceContext *glContext = getGLTraceContext();
6335
6336    glmsg.set_function(GLMessage::glBeginQuery);
6337
6338    // copy argument target
6339    GLMessage_DataType *arg_target = glmsg.add_args();
6340    arg_target->set_isarray(false);
6341    arg_target->set_type(GLMessage::DataType::ENUM);
6342    arg_target->add_intvalue((int)target);
6343
6344    // copy argument id
6345    GLMessage_DataType *arg_id = glmsg.add_args();
6346    arg_id->set_isarray(false);
6347    arg_id->set_type(GLMessage::DataType::INT);
6348    arg_id->add_intvalue(id);
6349
6350    // call function
6351    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6352    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6353    glContext->hooks->gl.glBeginQuery(target, id);
6354    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6355    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6356
6357    void *pointerArgs[] = {
6358    };
6359
6360    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6361                              threadStartTime, threadEndTime,
6362                              &glmsg, pointerArgs);
6363    glContext->traceGLMessage(&glmsg);
6364}
6365
6366void GLTrace_glEndQuery(GLenum target) {
6367    GLMessage glmsg;
6368    GLTraceContext *glContext = getGLTraceContext();
6369
6370    glmsg.set_function(GLMessage::glEndQuery);
6371
6372    // copy argument target
6373    GLMessage_DataType *arg_target = glmsg.add_args();
6374    arg_target->set_isarray(false);
6375    arg_target->set_type(GLMessage::DataType::ENUM);
6376    arg_target->add_intvalue((int)target);
6377
6378    // call function
6379    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6380    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6381    glContext->hooks->gl.glEndQuery(target);
6382    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6383    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6384
6385    void *pointerArgs[] = {
6386    };
6387
6388    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6389                              threadStartTime, threadEndTime,
6390                              &glmsg, pointerArgs);
6391    glContext->traceGLMessage(&glmsg);
6392}
6393
6394void GLTrace_glGetQueryiv(GLenum target, GLenum pname, GLint * params) {
6395    GLMessage glmsg;
6396    GLTraceContext *glContext = getGLTraceContext();
6397
6398    glmsg.set_function(GLMessage::glGetQueryiv);
6399
6400    // copy argument target
6401    GLMessage_DataType *arg_target = glmsg.add_args();
6402    arg_target->set_isarray(false);
6403    arg_target->set_type(GLMessage::DataType::ENUM);
6404    arg_target->add_intvalue((int)target);
6405
6406    // copy argument pname
6407    GLMessage_DataType *arg_pname = glmsg.add_args();
6408    arg_pname->set_isarray(false);
6409    arg_pname->set_type(GLMessage::DataType::ENUM);
6410    arg_pname->add_intvalue((int)pname);
6411
6412    // copy argument params
6413    GLMessage_DataType *arg_params = glmsg.add_args();
6414    arg_params->set_isarray(false);
6415    arg_params->set_type(GLMessage::DataType::INT64);
6416    arg_params->add_int64value((uintptr_t)params);
6417
6418    // call function
6419    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6420    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6421    glContext->hooks->gl.glGetQueryiv(target, pname, params);
6422    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6423    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6424
6425    void *pointerArgs[] = {
6426        (void *) params,
6427    };
6428
6429    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6430                              threadStartTime, threadEndTime,
6431                              &glmsg, pointerArgs);
6432    glContext->traceGLMessage(&glmsg);
6433}
6434
6435void GLTrace_glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint * params) {
6436    GLMessage glmsg;
6437    GLTraceContext *glContext = getGLTraceContext();
6438
6439    glmsg.set_function(GLMessage::glGetQueryObjectuiv);
6440
6441    // copy argument id
6442    GLMessage_DataType *arg_id = glmsg.add_args();
6443    arg_id->set_isarray(false);
6444    arg_id->set_type(GLMessage::DataType::INT);
6445    arg_id->add_intvalue(id);
6446
6447    // copy argument pname
6448    GLMessage_DataType *arg_pname = glmsg.add_args();
6449    arg_pname->set_isarray(false);
6450    arg_pname->set_type(GLMessage::DataType::ENUM);
6451    arg_pname->add_intvalue((int)pname);
6452
6453    // copy argument params
6454    GLMessage_DataType *arg_params = glmsg.add_args();
6455    arg_params->set_isarray(false);
6456    arg_params->set_type(GLMessage::DataType::INT64);
6457    arg_params->add_int64value((uintptr_t)params);
6458
6459    // call function
6460    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6461    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6462    glContext->hooks->gl.glGetQueryObjectuiv(id, pname, params);
6463    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6464    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6465
6466    void *pointerArgs[] = {
6467        (void *) params,
6468    };
6469
6470    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6471                              threadStartTime, threadEndTime,
6472                              &glmsg, pointerArgs);
6473    glContext->traceGLMessage(&glmsg);
6474}
6475
6476GLboolean GLTrace_glUnmapBuffer(GLenum target) {
6477    GLMessage glmsg;
6478    GLTraceContext *glContext = getGLTraceContext();
6479
6480    glmsg.set_function(GLMessage::glUnmapBuffer);
6481
6482    // copy argument target
6483    GLMessage_DataType *arg_target = glmsg.add_args();
6484    arg_target->set_isarray(false);
6485    arg_target->set_type(GLMessage::DataType::ENUM);
6486    arg_target->add_intvalue((int)target);
6487
6488    // call function
6489    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6490    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6491    GLboolean retValue = glContext->hooks->gl.glUnmapBuffer(target);
6492    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6493    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6494
6495    // set return value
6496    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
6497    rt->set_isarray(false);
6498    rt->set_type(GLMessage::DataType::BOOL);
6499    rt->add_boolvalue(retValue);
6500
6501    void *pointerArgs[] = {
6502    };
6503
6504    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6505                              threadStartTime, threadEndTime,
6506                              &glmsg, pointerArgs);
6507    glContext->traceGLMessage(&glmsg);
6508
6509    return retValue;
6510}
6511
6512void GLTrace_glGetBufferPointerv(GLenum target, GLenum pname, void ** params) {
6513    GLMessage glmsg;
6514    GLTraceContext *glContext = getGLTraceContext();
6515
6516    glmsg.set_function(GLMessage::glGetBufferPointerv);
6517
6518    // copy argument target
6519    GLMessage_DataType *arg_target = glmsg.add_args();
6520    arg_target->set_isarray(false);
6521    arg_target->set_type(GLMessage::DataType::ENUM);
6522    arg_target->add_intvalue((int)target);
6523
6524    // copy argument pname
6525    GLMessage_DataType *arg_pname = glmsg.add_args();
6526    arg_pname->set_isarray(false);
6527    arg_pname->set_type(GLMessage::DataType::ENUM);
6528    arg_pname->add_intvalue((int)pname);
6529
6530    // copy argument params
6531    GLMessage_DataType *arg_params = glmsg.add_args();
6532    arg_params->set_isarray(false);
6533    arg_params->set_type(GLMessage::DataType::INT64);
6534    arg_params->add_int64value((uintptr_t)params);
6535
6536    // call function
6537    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6538    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6539    glContext->hooks->gl.glGetBufferPointerv(target, pname, params);
6540    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6541    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6542
6543    void *pointerArgs[] = {
6544        (void *) params,
6545    };
6546
6547    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6548                              threadStartTime, threadEndTime,
6549                              &glmsg, pointerArgs);
6550    glContext->traceGLMessage(&glmsg);
6551}
6552
6553void GLTrace_glDrawBuffers(GLsizei n, const GLenum * bufs) {
6554    GLMessage glmsg;
6555    GLTraceContext *glContext = getGLTraceContext();
6556
6557    glmsg.set_function(GLMessage::glDrawBuffers);
6558
6559    // copy argument n
6560    GLMessage_DataType *arg_n = glmsg.add_args();
6561    arg_n->set_isarray(false);
6562    arg_n->set_type(GLMessage::DataType::INT);
6563    arg_n->add_intvalue(n);
6564
6565    // copy argument bufs
6566    GLMessage_DataType *arg_bufs = glmsg.add_args();
6567    arg_bufs->set_isarray(false);
6568    arg_bufs->set_type(GLMessage::DataType::INT64);
6569    arg_bufs->add_int64value((uintptr_t)bufs);
6570
6571    // call function
6572    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6573    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6574    glContext->hooks->gl.glDrawBuffers(n, bufs);
6575    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6576    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6577
6578    void *pointerArgs[] = {
6579        (void *) bufs,
6580    };
6581
6582    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6583                              threadStartTime, threadEndTime,
6584                              &glmsg, pointerArgs);
6585    glContext->traceGLMessage(&glmsg);
6586}
6587
6588void GLTrace_glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
6589    GLMessage glmsg;
6590    GLTraceContext *glContext = getGLTraceContext();
6591
6592    glmsg.set_function(GLMessage::glUniformMatrix2x3fv);
6593
6594    // copy argument location
6595    GLMessage_DataType *arg_location = glmsg.add_args();
6596    arg_location->set_isarray(false);
6597    arg_location->set_type(GLMessage::DataType::INT);
6598    arg_location->add_intvalue(location);
6599
6600    // copy argument count
6601    GLMessage_DataType *arg_count = glmsg.add_args();
6602    arg_count->set_isarray(false);
6603    arg_count->set_type(GLMessage::DataType::INT);
6604    arg_count->add_intvalue(count);
6605
6606    // copy argument transpose
6607    GLMessage_DataType *arg_transpose = glmsg.add_args();
6608    arg_transpose->set_isarray(false);
6609    arg_transpose->set_type(GLMessage::DataType::BOOL);
6610    arg_transpose->add_boolvalue(transpose);
6611
6612    // copy argument value
6613    GLMessage_DataType *arg_value = glmsg.add_args();
6614    arg_value->set_isarray(false);
6615    arg_value->set_type(GLMessage::DataType::INT64);
6616    arg_value->add_int64value((uintptr_t)value);
6617
6618    // call function
6619    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6620    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6621    glContext->hooks->gl.glUniformMatrix2x3fv(location, count, transpose, value);
6622    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6623    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6624
6625    void *pointerArgs[] = {
6626        (void *) value,
6627    };
6628
6629    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6630                              threadStartTime, threadEndTime,
6631                              &glmsg, pointerArgs);
6632    glContext->traceGLMessage(&glmsg);
6633}
6634
6635void GLTrace_glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
6636    GLMessage glmsg;
6637    GLTraceContext *glContext = getGLTraceContext();
6638
6639    glmsg.set_function(GLMessage::glUniformMatrix3x2fv);
6640
6641    // copy argument location
6642    GLMessage_DataType *arg_location = glmsg.add_args();
6643    arg_location->set_isarray(false);
6644    arg_location->set_type(GLMessage::DataType::INT);
6645    arg_location->add_intvalue(location);
6646
6647    // copy argument count
6648    GLMessage_DataType *arg_count = glmsg.add_args();
6649    arg_count->set_isarray(false);
6650    arg_count->set_type(GLMessage::DataType::INT);
6651    arg_count->add_intvalue(count);
6652
6653    // copy argument transpose
6654    GLMessage_DataType *arg_transpose = glmsg.add_args();
6655    arg_transpose->set_isarray(false);
6656    arg_transpose->set_type(GLMessage::DataType::BOOL);
6657    arg_transpose->add_boolvalue(transpose);
6658
6659    // copy argument value
6660    GLMessage_DataType *arg_value = glmsg.add_args();
6661    arg_value->set_isarray(false);
6662    arg_value->set_type(GLMessage::DataType::INT64);
6663    arg_value->add_int64value((uintptr_t)value);
6664
6665    // call function
6666    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6667    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6668    glContext->hooks->gl.glUniformMatrix3x2fv(location, count, transpose, value);
6669    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6670    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6671
6672    void *pointerArgs[] = {
6673        (void *) value,
6674    };
6675
6676    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6677                              threadStartTime, threadEndTime,
6678                              &glmsg, pointerArgs);
6679    glContext->traceGLMessage(&glmsg);
6680}
6681
6682void GLTrace_glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
6683    GLMessage glmsg;
6684    GLTraceContext *glContext = getGLTraceContext();
6685
6686    glmsg.set_function(GLMessage::glUniformMatrix2x4fv);
6687
6688    // copy argument location
6689    GLMessage_DataType *arg_location = glmsg.add_args();
6690    arg_location->set_isarray(false);
6691    arg_location->set_type(GLMessage::DataType::INT);
6692    arg_location->add_intvalue(location);
6693
6694    // copy argument count
6695    GLMessage_DataType *arg_count = glmsg.add_args();
6696    arg_count->set_isarray(false);
6697    arg_count->set_type(GLMessage::DataType::INT);
6698    arg_count->add_intvalue(count);
6699
6700    // copy argument transpose
6701    GLMessage_DataType *arg_transpose = glmsg.add_args();
6702    arg_transpose->set_isarray(false);
6703    arg_transpose->set_type(GLMessage::DataType::BOOL);
6704    arg_transpose->add_boolvalue(transpose);
6705
6706    // copy argument value
6707    GLMessage_DataType *arg_value = glmsg.add_args();
6708    arg_value->set_isarray(false);
6709    arg_value->set_type(GLMessage::DataType::INT64);
6710    arg_value->add_int64value((uintptr_t)value);
6711
6712    // call function
6713    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6714    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6715    glContext->hooks->gl.glUniformMatrix2x4fv(location, count, transpose, value);
6716    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6717    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6718
6719    void *pointerArgs[] = {
6720        (void *) value,
6721    };
6722
6723    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6724                              threadStartTime, threadEndTime,
6725                              &glmsg, pointerArgs);
6726    glContext->traceGLMessage(&glmsg);
6727}
6728
6729void GLTrace_glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
6730    GLMessage glmsg;
6731    GLTraceContext *glContext = getGLTraceContext();
6732
6733    glmsg.set_function(GLMessage::glUniformMatrix4x2fv);
6734
6735    // copy argument location
6736    GLMessage_DataType *arg_location = glmsg.add_args();
6737    arg_location->set_isarray(false);
6738    arg_location->set_type(GLMessage::DataType::INT);
6739    arg_location->add_intvalue(location);
6740
6741    // copy argument count
6742    GLMessage_DataType *arg_count = glmsg.add_args();
6743    arg_count->set_isarray(false);
6744    arg_count->set_type(GLMessage::DataType::INT);
6745    arg_count->add_intvalue(count);
6746
6747    // copy argument transpose
6748    GLMessage_DataType *arg_transpose = glmsg.add_args();
6749    arg_transpose->set_isarray(false);
6750    arg_transpose->set_type(GLMessage::DataType::BOOL);
6751    arg_transpose->add_boolvalue(transpose);
6752
6753    // copy argument value
6754    GLMessage_DataType *arg_value = glmsg.add_args();
6755    arg_value->set_isarray(false);
6756    arg_value->set_type(GLMessage::DataType::INT64);
6757    arg_value->add_int64value((uintptr_t)value);
6758
6759    // call function
6760    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6761    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6762    glContext->hooks->gl.glUniformMatrix4x2fv(location, count, transpose, value);
6763    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6764    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6765
6766    void *pointerArgs[] = {
6767        (void *) value,
6768    };
6769
6770    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6771                              threadStartTime, threadEndTime,
6772                              &glmsg, pointerArgs);
6773    glContext->traceGLMessage(&glmsg);
6774}
6775
6776void GLTrace_glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
6777    GLMessage glmsg;
6778    GLTraceContext *glContext = getGLTraceContext();
6779
6780    glmsg.set_function(GLMessage::glUniformMatrix3x4fv);
6781
6782    // copy argument location
6783    GLMessage_DataType *arg_location = glmsg.add_args();
6784    arg_location->set_isarray(false);
6785    arg_location->set_type(GLMessage::DataType::INT);
6786    arg_location->add_intvalue(location);
6787
6788    // copy argument count
6789    GLMessage_DataType *arg_count = glmsg.add_args();
6790    arg_count->set_isarray(false);
6791    arg_count->set_type(GLMessage::DataType::INT);
6792    arg_count->add_intvalue(count);
6793
6794    // copy argument transpose
6795    GLMessage_DataType *arg_transpose = glmsg.add_args();
6796    arg_transpose->set_isarray(false);
6797    arg_transpose->set_type(GLMessage::DataType::BOOL);
6798    arg_transpose->add_boolvalue(transpose);
6799
6800    // copy argument value
6801    GLMessage_DataType *arg_value = glmsg.add_args();
6802    arg_value->set_isarray(false);
6803    arg_value->set_type(GLMessage::DataType::INT64);
6804    arg_value->add_int64value((uintptr_t)value);
6805
6806    // call function
6807    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6808    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6809    glContext->hooks->gl.glUniformMatrix3x4fv(location, count, transpose, value);
6810    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6811    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6812
6813    void *pointerArgs[] = {
6814        (void *) value,
6815    };
6816
6817    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6818                              threadStartTime, threadEndTime,
6819                              &glmsg, pointerArgs);
6820    glContext->traceGLMessage(&glmsg);
6821}
6822
6823void GLTrace_glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
6824    GLMessage glmsg;
6825    GLTraceContext *glContext = getGLTraceContext();
6826
6827    glmsg.set_function(GLMessage::glUniformMatrix4x3fv);
6828
6829    // copy argument location
6830    GLMessage_DataType *arg_location = glmsg.add_args();
6831    arg_location->set_isarray(false);
6832    arg_location->set_type(GLMessage::DataType::INT);
6833    arg_location->add_intvalue(location);
6834
6835    // copy argument count
6836    GLMessage_DataType *arg_count = glmsg.add_args();
6837    arg_count->set_isarray(false);
6838    arg_count->set_type(GLMessage::DataType::INT);
6839    arg_count->add_intvalue(count);
6840
6841    // copy argument transpose
6842    GLMessage_DataType *arg_transpose = glmsg.add_args();
6843    arg_transpose->set_isarray(false);
6844    arg_transpose->set_type(GLMessage::DataType::BOOL);
6845    arg_transpose->add_boolvalue(transpose);
6846
6847    // copy argument value
6848    GLMessage_DataType *arg_value = glmsg.add_args();
6849    arg_value->set_isarray(false);
6850    arg_value->set_type(GLMessage::DataType::INT64);
6851    arg_value->add_int64value((uintptr_t)value);
6852
6853    // call function
6854    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6855    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6856    glContext->hooks->gl.glUniformMatrix4x3fv(location, count, transpose, value);
6857    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6858    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6859
6860    void *pointerArgs[] = {
6861        (void *) value,
6862    };
6863
6864    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6865                              threadStartTime, threadEndTime,
6866                              &glmsg, pointerArgs);
6867    glContext->traceGLMessage(&glmsg);
6868}
6869
6870void GLTrace_glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) {
6871    GLMessage glmsg;
6872    GLTraceContext *glContext = getGLTraceContext();
6873
6874    glmsg.set_function(GLMessage::glBlitFramebuffer);
6875
6876    // copy argument srcX0
6877    GLMessage_DataType *arg_srcX0 = glmsg.add_args();
6878    arg_srcX0->set_isarray(false);
6879    arg_srcX0->set_type(GLMessage::DataType::INT);
6880    arg_srcX0->add_intvalue(srcX0);
6881
6882    // copy argument srcY0
6883    GLMessage_DataType *arg_srcY0 = glmsg.add_args();
6884    arg_srcY0->set_isarray(false);
6885    arg_srcY0->set_type(GLMessage::DataType::INT);
6886    arg_srcY0->add_intvalue(srcY0);
6887
6888    // copy argument srcX1
6889    GLMessage_DataType *arg_srcX1 = glmsg.add_args();
6890    arg_srcX1->set_isarray(false);
6891    arg_srcX1->set_type(GLMessage::DataType::INT);
6892    arg_srcX1->add_intvalue(srcX1);
6893
6894    // copy argument srcY1
6895    GLMessage_DataType *arg_srcY1 = glmsg.add_args();
6896    arg_srcY1->set_isarray(false);
6897    arg_srcY1->set_type(GLMessage::DataType::INT);
6898    arg_srcY1->add_intvalue(srcY1);
6899
6900    // copy argument dstX0
6901    GLMessage_DataType *arg_dstX0 = glmsg.add_args();
6902    arg_dstX0->set_isarray(false);
6903    arg_dstX0->set_type(GLMessage::DataType::INT);
6904    arg_dstX0->add_intvalue(dstX0);
6905
6906    // copy argument dstY0
6907    GLMessage_DataType *arg_dstY0 = glmsg.add_args();
6908    arg_dstY0->set_isarray(false);
6909    arg_dstY0->set_type(GLMessage::DataType::INT);
6910    arg_dstY0->add_intvalue(dstY0);
6911
6912    // copy argument dstX1
6913    GLMessage_DataType *arg_dstX1 = glmsg.add_args();
6914    arg_dstX1->set_isarray(false);
6915    arg_dstX1->set_type(GLMessage::DataType::INT);
6916    arg_dstX1->add_intvalue(dstX1);
6917
6918    // copy argument dstY1
6919    GLMessage_DataType *arg_dstY1 = glmsg.add_args();
6920    arg_dstY1->set_isarray(false);
6921    arg_dstY1->set_type(GLMessage::DataType::INT);
6922    arg_dstY1->add_intvalue(dstY1);
6923
6924    // copy argument mask
6925    GLMessage_DataType *arg_mask = glmsg.add_args();
6926    arg_mask->set_isarray(false);
6927    arg_mask->set_type(GLMessage::DataType::INT);
6928    arg_mask->add_intvalue(mask);
6929
6930    // copy argument filter
6931    GLMessage_DataType *arg_filter = glmsg.add_args();
6932    arg_filter->set_isarray(false);
6933    arg_filter->set_type(GLMessage::DataType::ENUM);
6934    arg_filter->add_intvalue((int)filter);
6935
6936    // call function
6937    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6938    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6939    glContext->hooks->gl.glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
6940    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6941    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6942
6943    void *pointerArgs[] = {
6944    };
6945
6946    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6947                              threadStartTime, threadEndTime,
6948                              &glmsg, pointerArgs);
6949    glContext->traceGLMessage(&glmsg);
6950}
6951
6952void GLTrace_glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
6953    GLMessage glmsg;
6954    GLTraceContext *glContext = getGLTraceContext();
6955
6956    glmsg.set_function(GLMessage::glRenderbufferStorageMultisample);
6957
6958    // copy argument target
6959    GLMessage_DataType *arg_target = glmsg.add_args();
6960    arg_target->set_isarray(false);
6961    arg_target->set_type(GLMessage::DataType::ENUM);
6962    arg_target->add_intvalue((int)target);
6963
6964    // copy argument samples
6965    GLMessage_DataType *arg_samples = glmsg.add_args();
6966    arg_samples->set_isarray(false);
6967    arg_samples->set_type(GLMessage::DataType::INT);
6968    arg_samples->add_intvalue(samples);
6969
6970    // copy argument internalformat
6971    GLMessage_DataType *arg_internalformat = glmsg.add_args();
6972    arg_internalformat->set_isarray(false);
6973    arg_internalformat->set_type(GLMessage::DataType::ENUM);
6974    arg_internalformat->add_intvalue((int)internalformat);
6975
6976    // copy argument width
6977    GLMessage_DataType *arg_width = glmsg.add_args();
6978    arg_width->set_isarray(false);
6979    arg_width->set_type(GLMessage::DataType::INT);
6980    arg_width->add_intvalue(width);
6981
6982    // copy argument height
6983    GLMessage_DataType *arg_height = glmsg.add_args();
6984    arg_height->set_isarray(false);
6985    arg_height->set_type(GLMessage::DataType::INT);
6986    arg_height->add_intvalue(height);
6987
6988    // call function
6989    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
6990    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6991    glContext->hooks->gl.glRenderbufferStorageMultisample(target, samples, internalformat, width, height);
6992    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
6993    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6994
6995    void *pointerArgs[] = {
6996    };
6997
6998    fixupGLMessage(glContext, wallStartTime, wallEndTime,
6999                              threadStartTime, threadEndTime,
7000                              &glmsg, pointerArgs);
7001    glContext->traceGLMessage(&glmsg);
7002}
7003
7004void GLTrace_glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) {
7005    GLMessage glmsg;
7006    GLTraceContext *glContext = getGLTraceContext();
7007
7008    glmsg.set_function(GLMessage::glFramebufferTextureLayer);
7009
7010    // copy argument target
7011    GLMessage_DataType *arg_target = glmsg.add_args();
7012    arg_target->set_isarray(false);
7013    arg_target->set_type(GLMessage::DataType::ENUM);
7014    arg_target->add_intvalue((int)target);
7015
7016    // copy argument attachment
7017    GLMessage_DataType *arg_attachment = glmsg.add_args();
7018    arg_attachment->set_isarray(false);
7019    arg_attachment->set_type(GLMessage::DataType::ENUM);
7020    arg_attachment->add_intvalue((int)attachment);
7021
7022    // copy argument texture
7023    GLMessage_DataType *arg_texture = glmsg.add_args();
7024    arg_texture->set_isarray(false);
7025    arg_texture->set_type(GLMessage::DataType::INT);
7026    arg_texture->add_intvalue(texture);
7027
7028    // copy argument level
7029    GLMessage_DataType *arg_level = glmsg.add_args();
7030    arg_level->set_isarray(false);
7031    arg_level->set_type(GLMessage::DataType::INT);
7032    arg_level->add_intvalue(level);
7033
7034    // copy argument layer
7035    GLMessage_DataType *arg_layer = glmsg.add_args();
7036    arg_layer->set_isarray(false);
7037    arg_layer->set_type(GLMessage::DataType::INT);
7038    arg_layer->add_intvalue(layer);
7039
7040    // call function
7041    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7042    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7043    glContext->hooks->gl.glFramebufferTextureLayer(target, attachment, texture, level, layer);
7044    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7045    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7046
7047    void *pointerArgs[] = {
7048    };
7049
7050    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7051                              threadStartTime, threadEndTime,
7052                              &glmsg, pointerArgs);
7053    glContext->traceGLMessage(&glmsg);
7054}
7055
7056void * GLTrace_glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) {
7057    GLMessage glmsg;
7058    GLTraceContext *glContext = getGLTraceContext();
7059
7060    glmsg.set_function(GLMessage::glMapBufferRange);
7061
7062    // copy argument target
7063    GLMessage_DataType *arg_target = glmsg.add_args();
7064    arg_target->set_isarray(false);
7065    arg_target->set_type(GLMessage::DataType::ENUM);
7066    arg_target->add_intvalue((int)target);
7067
7068    // copy argument offset
7069    GLMessage_DataType *arg_offset = glmsg.add_args();
7070    arg_offset->set_isarray(false);
7071    arg_offset->set_type(GLMessage::DataType::INT);
7072    arg_offset->add_intvalue(offset);
7073
7074    // copy argument length
7075    GLMessage_DataType *arg_length = glmsg.add_args();
7076    arg_length->set_isarray(false);
7077    arg_length->set_type(GLMessage::DataType::INT);
7078    arg_length->add_intvalue(length);
7079
7080    // copy argument access
7081    GLMessage_DataType *arg_access = glmsg.add_args();
7082    arg_access->set_isarray(false);
7083    arg_access->set_type(GLMessage::DataType::INT);
7084    arg_access->add_intvalue(access);
7085
7086    // call function
7087    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7088    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7089    void * retValue = glContext->hooks->gl.glMapBufferRange(target, offset, length, access);
7090    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7091    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7092
7093    // set return value
7094    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
7095    rt->set_isarray(false);
7096    rt->set_type(GLMessage::DataType::INT64);
7097    rt->add_int64value((uintptr_t)retValue);
7098
7099    void *pointerArgs[] = {
7100        (void *) retValue,
7101    };
7102
7103    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7104                              threadStartTime, threadEndTime,
7105                              &glmsg, pointerArgs);
7106    glContext->traceGLMessage(&glmsg);
7107
7108    return retValue;
7109}
7110
7111void GLTrace_glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) {
7112    GLMessage glmsg;
7113    GLTraceContext *glContext = getGLTraceContext();
7114
7115    glmsg.set_function(GLMessage::glFlushMappedBufferRange);
7116
7117    // copy argument target
7118    GLMessage_DataType *arg_target = glmsg.add_args();
7119    arg_target->set_isarray(false);
7120    arg_target->set_type(GLMessage::DataType::ENUM);
7121    arg_target->add_intvalue((int)target);
7122
7123    // copy argument offset
7124    GLMessage_DataType *arg_offset = glmsg.add_args();
7125    arg_offset->set_isarray(false);
7126    arg_offset->set_type(GLMessage::DataType::INT);
7127    arg_offset->add_intvalue(offset);
7128
7129    // copy argument length
7130    GLMessage_DataType *arg_length = glmsg.add_args();
7131    arg_length->set_isarray(false);
7132    arg_length->set_type(GLMessage::DataType::INT);
7133    arg_length->add_intvalue(length);
7134
7135    // call function
7136    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7137    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7138    glContext->hooks->gl.glFlushMappedBufferRange(target, offset, length);
7139    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7140    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7141
7142    void *pointerArgs[] = {
7143    };
7144
7145    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7146                              threadStartTime, threadEndTime,
7147                              &glmsg, pointerArgs);
7148    glContext->traceGLMessage(&glmsg);
7149}
7150
7151void GLTrace_glBindVertexArray(GLuint array) {
7152    GLMessage glmsg;
7153    GLTraceContext *glContext = getGLTraceContext();
7154
7155    glmsg.set_function(GLMessage::glBindVertexArray);
7156
7157    // copy argument array
7158    GLMessage_DataType *arg_array = glmsg.add_args();
7159    arg_array->set_isarray(false);
7160    arg_array->set_type(GLMessage::DataType::INT);
7161    arg_array->add_intvalue(array);
7162
7163    // call function
7164    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7165    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7166    glContext->hooks->gl.glBindVertexArray(array);
7167    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7168    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7169
7170    void *pointerArgs[] = {
7171    };
7172
7173    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7174                              threadStartTime, threadEndTime,
7175                              &glmsg, pointerArgs);
7176    glContext->traceGLMessage(&glmsg);
7177}
7178
7179void GLTrace_glDeleteVertexArrays(GLsizei n, const GLuint * arrays) {
7180    GLMessage glmsg;
7181    GLTraceContext *glContext = getGLTraceContext();
7182
7183    glmsg.set_function(GLMessage::glDeleteVertexArrays);
7184
7185    // copy argument n
7186    GLMessage_DataType *arg_n = glmsg.add_args();
7187    arg_n->set_isarray(false);
7188    arg_n->set_type(GLMessage::DataType::INT);
7189    arg_n->add_intvalue(n);
7190
7191    // copy argument arrays
7192    GLMessage_DataType *arg_arrays = glmsg.add_args();
7193    arg_arrays->set_isarray(false);
7194    arg_arrays->set_type(GLMessage::DataType::INT64);
7195    arg_arrays->add_int64value((uintptr_t)arrays);
7196
7197    // call function
7198    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7199    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7200    glContext->hooks->gl.glDeleteVertexArrays(n, arrays);
7201    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7202    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7203
7204    void *pointerArgs[] = {
7205        (void *) arrays,
7206    };
7207
7208    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7209                              threadStartTime, threadEndTime,
7210                              &glmsg, pointerArgs);
7211    glContext->traceGLMessage(&glmsg);
7212}
7213
7214void GLTrace_glGenVertexArrays(GLsizei n, GLuint * arrays) {
7215    GLMessage glmsg;
7216    GLTraceContext *glContext = getGLTraceContext();
7217
7218    glmsg.set_function(GLMessage::glGenVertexArrays);
7219
7220    // copy argument n
7221    GLMessage_DataType *arg_n = glmsg.add_args();
7222    arg_n->set_isarray(false);
7223    arg_n->set_type(GLMessage::DataType::INT);
7224    arg_n->add_intvalue(n);
7225
7226    // copy argument arrays
7227    GLMessage_DataType *arg_arrays = glmsg.add_args();
7228    arg_arrays->set_isarray(false);
7229    arg_arrays->set_type(GLMessage::DataType::INT64);
7230    arg_arrays->add_int64value((uintptr_t)arrays);
7231
7232    // call function
7233    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7234    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7235    glContext->hooks->gl.glGenVertexArrays(n, arrays);
7236    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7237    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7238
7239    void *pointerArgs[] = {
7240        (void *) arrays,
7241    };
7242
7243    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7244                              threadStartTime, threadEndTime,
7245                              &glmsg, pointerArgs);
7246    glContext->traceGLMessage(&glmsg);
7247}
7248
7249GLboolean GLTrace_glIsVertexArray(GLuint array) {
7250    GLMessage glmsg;
7251    GLTraceContext *glContext = getGLTraceContext();
7252
7253    glmsg.set_function(GLMessage::glIsVertexArray);
7254
7255    // copy argument array
7256    GLMessage_DataType *arg_array = glmsg.add_args();
7257    arg_array->set_isarray(false);
7258    arg_array->set_type(GLMessage::DataType::INT);
7259    arg_array->add_intvalue(array);
7260
7261    // call function
7262    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7263    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7264    GLboolean retValue = glContext->hooks->gl.glIsVertexArray(array);
7265    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7266    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7267
7268    // set return value
7269    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
7270    rt->set_isarray(false);
7271    rt->set_type(GLMessage::DataType::BOOL);
7272    rt->add_boolvalue(retValue);
7273
7274    void *pointerArgs[] = {
7275    };
7276
7277    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7278                              threadStartTime, threadEndTime,
7279                              &glmsg, pointerArgs);
7280    glContext->traceGLMessage(&glmsg);
7281
7282    return retValue;
7283}
7284
7285void GLTrace_glGetIntegeri_v(GLenum target, GLuint index, GLint * data) {
7286    GLMessage glmsg;
7287    GLTraceContext *glContext = getGLTraceContext();
7288
7289    glmsg.set_function(GLMessage::glGetIntegeri_v);
7290
7291    // copy argument target
7292    GLMessage_DataType *arg_target = glmsg.add_args();
7293    arg_target->set_isarray(false);
7294    arg_target->set_type(GLMessage::DataType::ENUM);
7295    arg_target->add_intvalue((int)target);
7296
7297    // copy argument index
7298    GLMessage_DataType *arg_index = glmsg.add_args();
7299    arg_index->set_isarray(false);
7300    arg_index->set_type(GLMessage::DataType::INT);
7301    arg_index->add_intvalue(index);
7302
7303    // copy argument data
7304    GLMessage_DataType *arg_data = glmsg.add_args();
7305    arg_data->set_isarray(false);
7306    arg_data->set_type(GLMessage::DataType::INT64);
7307    arg_data->add_int64value((uintptr_t)data);
7308
7309    // call function
7310    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7311    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7312    glContext->hooks->gl.glGetIntegeri_v(target, index, data);
7313    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7314    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7315
7316    void *pointerArgs[] = {
7317        (void *) data,
7318    };
7319
7320    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7321                              threadStartTime, threadEndTime,
7322                              &glmsg, pointerArgs);
7323    glContext->traceGLMessage(&glmsg);
7324}
7325
7326void GLTrace_glBeginTransformFeedback(GLenum primitiveMode) {
7327    GLMessage glmsg;
7328    GLTraceContext *glContext = getGLTraceContext();
7329
7330    glmsg.set_function(GLMessage::glBeginTransformFeedback);
7331
7332    // copy argument primitiveMode
7333    GLMessage_DataType *arg_primitiveMode = glmsg.add_args();
7334    arg_primitiveMode->set_isarray(false);
7335    arg_primitiveMode->set_type(GLMessage::DataType::ENUM);
7336    arg_primitiveMode->add_intvalue((int)primitiveMode);
7337
7338    // call function
7339    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7340    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7341    glContext->hooks->gl.glBeginTransformFeedback(primitiveMode);
7342    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7343    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7344
7345    void *pointerArgs[] = {
7346    };
7347
7348    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7349                              threadStartTime, threadEndTime,
7350                              &glmsg, pointerArgs);
7351    glContext->traceGLMessage(&glmsg);
7352}
7353
7354void GLTrace_glEndTransformFeedback(void) {
7355    GLMessage glmsg;
7356    GLTraceContext *glContext = getGLTraceContext();
7357
7358    glmsg.set_function(GLMessage::glEndTransformFeedback);
7359
7360    // call function
7361    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7362    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7363    glContext->hooks->gl.glEndTransformFeedback();
7364    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7365    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7366
7367    void *pointerArgs[] = {
7368    };
7369
7370    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7371                              threadStartTime, threadEndTime,
7372                              &glmsg, pointerArgs);
7373    glContext->traceGLMessage(&glmsg);
7374}
7375
7376void GLTrace_glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) {
7377    GLMessage glmsg;
7378    GLTraceContext *glContext = getGLTraceContext();
7379
7380    glmsg.set_function(GLMessage::glBindBufferRange);
7381
7382    // copy argument target
7383    GLMessage_DataType *arg_target = glmsg.add_args();
7384    arg_target->set_isarray(false);
7385    arg_target->set_type(GLMessage::DataType::ENUM);
7386    arg_target->add_intvalue((int)target);
7387
7388    // copy argument index
7389    GLMessage_DataType *arg_index = glmsg.add_args();
7390    arg_index->set_isarray(false);
7391    arg_index->set_type(GLMessage::DataType::INT);
7392    arg_index->add_intvalue(index);
7393
7394    // copy argument buffer
7395    GLMessage_DataType *arg_buffer = glmsg.add_args();
7396    arg_buffer->set_isarray(false);
7397    arg_buffer->set_type(GLMessage::DataType::INT);
7398    arg_buffer->add_intvalue(buffer);
7399
7400    // copy argument offset
7401    GLMessage_DataType *arg_offset = glmsg.add_args();
7402    arg_offset->set_isarray(false);
7403    arg_offset->set_type(GLMessage::DataType::INT);
7404    arg_offset->add_intvalue(offset);
7405
7406    // copy argument size
7407    GLMessage_DataType *arg_size = glmsg.add_args();
7408    arg_size->set_isarray(false);
7409    arg_size->set_type(GLMessage::DataType::INT);
7410    arg_size->add_intvalue(size);
7411
7412    // call function
7413    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7414    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7415    glContext->hooks->gl.glBindBufferRange(target, index, buffer, offset, size);
7416    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7417    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7418
7419    void *pointerArgs[] = {
7420    };
7421
7422    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7423                              threadStartTime, threadEndTime,
7424                              &glmsg, pointerArgs);
7425    glContext->traceGLMessage(&glmsg);
7426}
7427
7428void GLTrace_glBindBufferBase(GLenum target, GLuint index, GLuint buffer) {
7429    GLMessage glmsg;
7430    GLTraceContext *glContext = getGLTraceContext();
7431
7432    glmsg.set_function(GLMessage::glBindBufferBase);
7433
7434    // copy argument target
7435    GLMessage_DataType *arg_target = glmsg.add_args();
7436    arg_target->set_isarray(false);
7437    arg_target->set_type(GLMessage::DataType::ENUM);
7438    arg_target->add_intvalue((int)target);
7439
7440    // copy argument index
7441    GLMessage_DataType *arg_index = glmsg.add_args();
7442    arg_index->set_isarray(false);
7443    arg_index->set_type(GLMessage::DataType::INT);
7444    arg_index->add_intvalue(index);
7445
7446    // copy argument buffer
7447    GLMessage_DataType *arg_buffer = glmsg.add_args();
7448    arg_buffer->set_isarray(false);
7449    arg_buffer->set_type(GLMessage::DataType::INT);
7450    arg_buffer->add_intvalue(buffer);
7451
7452    // call function
7453    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7454    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7455    glContext->hooks->gl.glBindBufferBase(target, index, buffer);
7456    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7457    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7458
7459    void *pointerArgs[] = {
7460    };
7461
7462    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7463                              threadStartTime, threadEndTime,
7464                              &glmsg, pointerArgs);
7465    glContext->traceGLMessage(&glmsg);
7466}
7467
7468void GLTrace_glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode) {
7469    GLMessage glmsg;
7470    GLTraceContext *glContext = getGLTraceContext();
7471
7472    glmsg.set_function(GLMessage::glTransformFeedbackVaryings);
7473
7474    // copy argument program
7475    GLMessage_DataType *arg_program = glmsg.add_args();
7476    arg_program->set_isarray(false);
7477    arg_program->set_type(GLMessage::DataType::INT);
7478    arg_program->add_intvalue(program);
7479
7480    // copy argument count
7481    GLMessage_DataType *arg_count = glmsg.add_args();
7482    arg_count->set_isarray(false);
7483    arg_count->set_type(GLMessage::DataType::INT);
7484    arg_count->add_intvalue(count);
7485
7486    // copy argument varyings
7487    GLMessage_DataType *arg_varyings = glmsg.add_args();
7488    arg_varyings->set_isarray(false);
7489    arg_varyings->set_type(GLMessage::DataType::INT64);
7490    arg_varyings->add_int64value((uintptr_t)varyings);
7491
7492    // copy argument bufferMode
7493    GLMessage_DataType *arg_bufferMode = glmsg.add_args();
7494    arg_bufferMode->set_isarray(false);
7495    arg_bufferMode->set_type(GLMessage::DataType::ENUM);
7496    arg_bufferMode->add_intvalue((int)bufferMode);
7497
7498    // call function
7499    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7500    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7501    glContext->hooks->gl.glTransformFeedbackVaryings(program, count, varyings, bufferMode);
7502    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7503    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7504
7505    void *pointerArgs[] = {
7506        (void *) varyings,
7507    };
7508
7509    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7510                              threadStartTime, threadEndTime,
7511                              &glmsg, pointerArgs);
7512    glContext->traceGLMessage(&glmsg);
7513}
7514
7515void GLTrace_glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name) {
7516    GLMessage glmsg;
7517    GLTraceContext *glContext = getGLTraceContext();
7518
7519    glmsg.set_function(GLMessage::glGetTransformFeedbackVarying);
7520
7521    // copy argument program
7522    GLMessage_DataType *arg_program = glmsg.add_args();
7523    arg_program->set_isarray(false);
7524    arg_program->set_type(GLMessage::DataType::INT);
7525    arg_program->add_intvalue(program);
7526
7527    // copy argument index
7528    GLMessage_DataType *arg_index = glmsg.add_args();
7529    arg_index->set_isarray(false);
7530    arg_index->set_type(GLMessage::DataType::INT);
7531    arg_index->add_intvalue(index);
7532
7533    // copy argument bufSize
7534    GLMessage_DataType *arg_bufSize = glmsg.add_args();
7535    arg_bufSize->set_isarray(false);
7536    arg_bufSize->set_type(GLMessage::DataType::INT);
7537    arg_bufSize->add_intvalue(bufSize);
7538
7539    // copy argument length
7540    GLMessage_DataType *arg_length = glmsg.add_args();
7541    arg_length->set_isarray(false);
7542    arg_length->set_type(GLMessage::DataType::INT64);
7543    arg_length->add_int64value((uintptr_t)length);
7544
7545    // copy argument size
7546    GLMessage_DataType *arg_size = glmsg.add_args();
7547    arg_size->set_isarray(false);
7548    arg_size->set_type(GLMessage::DataType::INT64);
7549    arg_size->add_int64value((uintptr_t)size);
7550
7551    // copy argument type
7552    GLMessage_DataType *arg_type = glmsg.add_args();
7553    arg_type->set_isarray(false);
7554    arg_type->set_type(GLMessage::DataType::INT64);
7555    arg_type->add_int64value((uintptr_t)type);
7556
7557    // copy argument name
7558    GLMessage_DataType *arg_name = glmsg.add_args();
7559    arg_name->set_isarray(false);
7560    arg_name->set_type(GLMessage::DataType::INT64);
7561    arg_name->add_int64value((uintptr_t)name);
7562
7563    // call function
7564    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7565    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7566    glContext->hooks->gl.glGetTransformFeedbackVarying(program, index, bufSize, length, size, type, name);
7567    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7568    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7569
7570    void *pointerArgs[] = {
7571        (void *) length,
7572        (void *) size,
7573        (void *) type,
7574        (void *) name,
7575    };
7576
7577    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7578                              threadStartTime, threadEndTime,
7579                              &glmsg, pointerArgs);
7580    glContext->traceGLMessage(&glmsg);
7581}
7582
7583void GLTrace_glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const void * pointer) {
7584    GLMessage glmsg;
7585    GLTraceContext *glContext = getGLTraceContext();
7586
7587    glmsg.set_function(GLMessage::glVertexAttribIPointer);
7588
7589    // copy argument index
7590    GLMessage_DataType *arg_index = glmsg.add_args();
7591    arg_index->set_isarray(false);
7592    arg_index->set_type(GLMessage::DataType::INT);
7593    arg_index->add_intvalue(index);
7594
7595    // copy argument size
7596    GLMessage_DataType *arg_size = glmsg.add_args();
7597    arg_size->set_isarray(false);
7598    arg_size->set_type(GLMessage::DataType::INT);
7599    arg_size->add_intvalue(size);
7600
7601    // copy argument type
7602    GLMessage_DataType *arg_type = glmsg.add_args();
7603    arg_type->set_isarray(false);
7604    arg_type->set_type(GLMessage::DataType::ENUM);
7605    arg_type->add_intvalue((int)type);
7606
7607    // copy argument stride
7608    GLMessage_DataType *arg_stride = glmsg.add_args();
7609    arg_stride->set_isarray(false);
7610    arg_stride->set_type(GLMessage::DataType::INT);
7611    arg_stride->add_intvalue(stride);
7612
7613    // copy argument pointer
7614    GLMessage_DataType *arg_pointer = glmsg.add_args();
7615    arg_pointer->set_isarray(false);
7616    arg_pointer->set_type(GLMessage::DataType::INT64);
7617    arg_pointer->add_int64value((uintptr_t)pointer);
7618
7619    // call function
7620    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7621    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7622    glContext->hooks->gl.glVertexAttribIPointer(index, size, type, stride, pointer);
7623    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7624    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7625
7626    void *pointerArgs[] = {
7627        (void *) pointer,
7628    };
7629
7630    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7631                              threadStartTime, threadEndTime,
7632                              &glmsg, pointerArgs);
7633    glContext->traceGLMessage(&glmsg);
7634}
7635
7636void GLTrace_glGetVertexAttribIiv(GLuint index, GLenum pname, GLint * params) {
7637    GLMessage glmsg;
7638    GLTraceContext *glContext = getGLTraceContext();
7639
7640    glmsg.set_function(GLMessage::glGetVertexAttribIiv);
7641
7642    // copy argument index
7643    GLMessage_DataType *arg_index = glmsg.add_args();
7644    arg_index->set_isarray(false);
7645    arg_index->set_type(GLMessage::DataType::INT);
7646    arg_index->add_intvalue(index);
7647
7648    // copy argument pname
7649    GLMessage_DataType *arg_pname = glmsg.add_args();
7650    arg_pname->set_isarray(false);
7651    arg_pname->set_type(GLMessage::DataType::ENUM);
7652    arg_pname->add_intvalue((int)pname);
7653
7654    // copy argument params
7655    GLMessage_DataType *arg_params = glmsg.add_args();
7656    arg_params->set_isarray(false);
7657    arg_params->set_type(GLMessage::DataType::INT64);
7658    arg_params->add_int64value((uintptr_t)params);
7659
7660    // call function
7661    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7662    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7663    glContext->hooks->gl.glGetVertexAttribIiv(index, pname, params);
7664    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7665    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7666
7667    void *pointerArgs[] = {
7668        (void *) params,
7669    };
7670
7671    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7672                              threadStartTime, threadEndTime,
7673                              &glmsg, pointerArgs);
7674    glContext->traceGLMessage(&glmsg);
7675}
7676
7677void GLTrace_glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint * params) {
7678    GLMessage glmsg;
7679    GLTraceContext *glContext = getGLTraceContext();
7680
7681    glmsg.set_function(GLMessage::glGetVertexAttribIuiv);
7682
7683    // copy argument index
7684    GLMessage_DataType *arg_index = glmsg.add_args();
7685    arg_index->set_isarray(false);
7686    arg_index->set_type(GLMessage::DataType::INT);
7687    arg_index->add_intvalue(index);
7688
7689    // copy argument pname
7690    GLMessage_DataType *arg_pname = glmsg.add_args();
7691    arg_pname->set_isarray(false);
7692    arg_pname->set_type(GLMessage::DataType::ENUM);
7693    arg_pname->add_intvalue((int)pname);
7694
7695    // copy argument params
7696    GLMessage_DataType *arg_params = glmsg.add_args();
7697    arg_params->set_isarray(false);
7698    arg_params->set_type(GLMessage::DataType::INT64);
7699    arg_params->add_int64value((uintptr_t)params);
7700
7701    // call function
7702    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7703    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7704    glContext->hooks->gl.glGetVertexAttribIuiv(index, pname, params);
7705    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7706    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7707
7708    void *pointerArgs[] = {
7709        (void *) params,
7710    };
7711
7712    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7713                              threadStartTime, threadEndTime,
7714                              &glmsg, pointerArgs);
7715    glContext->traceGLMessage(&glmsg);
7716}
7717
7718void GLTrace_glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) {
7719    GLMessage glmsg;
7720    GLTraceContext *glContext = getGLTraceContext();
7721
7722    glmsg.set_function(GLMessage::glVertexAttribI4i);
7723
7724    // copy argument index
7725    GLMessage_DataType *arg_index = glmsg.add_args();
7726    arg_index->set_isarray(false);
7727    arg_index->set_type(GLMessage::DataType::INT);
7728    arg_index->add_intvalue(index);
7729
7730    // copy argument x
7731    GLMessage_DataType *arg_x = glmsg.add_args();
7732    arg_x->set_isarray(false);
7733    arg_x->set_type(GLMessage::DataType::INT);
7734    arg_x->add_intvalue(x);
7735
7736    // copy argument y
7737    GLMessage_DataType *arg_y = glmsg.add_args();
7738    arg_y->set_isarray(false);
7739    arg_y->set_type(GLMessage::DataType::INT);
7740    arg_y->add_intvalue(y);
7741
7742    // copy argument z
7743    GLMessage_DataType *arg_z = glmsg.add_args();
7744    arg_z->set_isarray(false);
7745    arg_z->set_type(GLMessage::DataType::INT);
7746    arg_z->add_intvalue(z);
7747
7748    // copy argument w
7749    GLMessage_DataType *arg_w = glmsg.add_args();
7750    arg_w->set_isarray(false);
7751    arg_w->set_type(GLMessage::DataType::INT);
7752    arg_w->add_intvalue(w);
7753
7754    // call function
7755    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7756    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7757    glContext->hooks->gl.glVertexAttribI4i(index, x, y, z, w);
7758    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7759    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7760
7761    void *pointerArgs[] = {
7762    };
7763
7764    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7765                              threadStartTime, threadEndTime,
7766                              &glmsg, pointerArgs);
7767    glContext->traceGLMessage(&glmsg);
7768}
7769
7770void GLTrace_glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) {
7771    GLMessage glmsg;
7772    GLTraceContext *glContext = getGLTraceContext();
7773
7774    glmsg.set_function(GLMessage::glVertexAttribI4ui);
7775
7776    // copy argument index
7777    GLMessage_DataType *arg_index = glmsg.add_args();
7778    arg_index->set_isarray(false);
7779    arg_index->set_type(GLMessage::DataType::INT);
7780    arg_index->add_intvalue(index);
7781
7782    // copy argument x
7783    GLMessage_DataType *arg_x = glmsg.add_args();
7784    arg_x->set_isarray(false);
7785    arg_x->set_type(GLMessage::DataType::INT);
7786    arg_x->add_intvalue(x);
7787
7788    // copy argument y
7789    GLMessage_DataType *arg_y = glmsg.add_args();
7790    arg_y->set_isarray(false);
7791    arg_y->set_type(GLMessage::DataType::INT);
7792    arg_y->add_intvalue(y);
7793
7794    // copy argument z
7795    GLMessage_DataType *arg_z = glmsg.add_args();
7796    arg_z->set_isarray(false);
7797    arg_z->set_type(GLMessage::DataType::INT);
7798    arg_z->add_intvalue(z);
7799
7800    // copy argument w
7801    GLMessage_DataType *arg_w = glmsg.add_args();
7802    arg_w->set_isarray(false);
7803    arg_w->set_type(GLMessage::DataType::INT);
7804    arg_w->add_intvalue(w);
7805
7806    // call function
7807    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7808    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7809    glContext->hooks->gl.glVertexAttribI4ui(index, x, y, z, w);
7810    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7811    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7812
7813    void *pointerArgs[] = {
7814    };
7815
7816    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7817                              threadStartTime, threadEndTime,
7818                              &glmsg, pointerArgs);
7819    glContext->traceGLMessage(&glmsg);
7820}
7821
7822void GLTrace_glVertexAttribI4iv(GLuint index, const GLint * v) {
7823    GLMessage glmsg;
7824    GLTraceContext *glContext = getGLTraceContext();
7825
7826    glmsg.set_function(GLMessage::glVertexAttribI4iv);
7827
7828    // copy argument index
7829    GLMessage_DataType *arg_index = glmsg.add_args();
7830    arg_index->set_isarray(false);
7831    arg_index->set_type(GLMessage::DataType::INT);
7832    arg_index->add_intvalue(index);
7833
7834    // copy argument v
7835    GLMessage_DataType *arg_v = glmsg.add_args();
7836    arg_v->set_isarray(false);
7837    arg_v->set_type(GLMessage::DataType::INT64);
7838    arg_v->add_int64value((uintptr_t)v);
7839
7840    // call function
7841    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7842    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7843    glContext->hooks->gl.glVertexAttribI4iv(index, v);
7844    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7845    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7846
7847    void *pointerArgs[] = {
7848        (void *) v,
7849    };
7850
7851    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7852                              threadStartTime, threadEndTime,
7853                              &glmsg, pointerArgs);
7854    glContext->traceGLMessage(&glmsg);
7855}
7856
7857void GLTrace_glVertexAttribI4uiv(GLuint index, const GLuint * v) {
7858    GLMessage glmsg;
7859    GLTraceContext *glContext = getGLTraceContext();
7860
7861    glmsg.set_function(GLMessage::glVertexAttribI4uiv);
7862
7863    // copy argument index
7864    GLMessage_DataType *arg_index = glmsg.add_args();
7865    arg_index->set_isarray(false);
7866    arg_index->set_type(GLMessage::DataType::INT);
7867    arg_index->add_intvalue(index);
7868
7869    // copy argument v
7870    GLMessage_DataType *arg_v = glmsg.add_args();
7871    arg_v->set_isarray(false);
7872    arg_v->set_type(GLMessage::DataType::INT64);
7873    arg_v->add_int64value((uintptr_t)v);
7874
7875    // call function
7876    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7877    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7878    glContext->hooks->gl.glVertexAttribI4uiv(index, v);
7879    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7880    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7881
7882    void *pointerArgs[] = {
7883        (void *) v,
7884    };
7885
7886    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7887                              threadStartTime, threadEndTime,
7888                              &glmsg, pointerArgs);
7889    glContext->traceGLMessage(&glmsg);
7890}
7891
7892void GLTrace_glGetUniformuiv(GLuint program, GLint location, GLuint * params) {
7893    GLMessage glmsg;
7894    GLTraceContext *glContext = getGLTraceContext();
7895
7896    glmsg.set_function(GLMessage::glGetUniformuiv);
7897
7898    // copy argument program
7899    GLMessage_DataType *arg_program = glmsg.add_args();
7900    arg_program->set_isarray(false);
7901    arg_program->set_type(GLMessage::DataType::INT);
7902    arg_program->add_intvalue(program);
7903
7904    // copy argument location
7905    GLMessage_DataType *arg_location = glmsg.add_args();
7906    arg_location->set_isarray(false);
7907    arg_location->set_type(GLMessage::DataType::INT);
7908    arg_location->add_intvalue(location);
7909
7910    // copy argument params
7911    GLMessage_DataType *arg_params = glmsg.add_args();
7912    arg_params->set_isarray(false);
7913    arg_params->set_type(GLMessage::DataType::INT64);
7914    arg_params->add_int64value((uintptr_t)params);
7915
7916    // call function
7917    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7918    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7919    glContext->hooks->gl.glGetUniformuiv(program, location, params);
7920    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7921    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7922
7923    void *pointerArgs[] = {
7924        (void *) params,
7925    };
7926
7927    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7928                              threadStartTime, threadEndTime,
7929                              &glmsg, pointerArgs);
7930    glContext->traceGLMessage(&glmsg);
7931}
7932
7933GLint GLTrace_glGetFragDataLocation(GLuint program, const GLchar * name) {
7934    GLMessage glmsg;
7935    GLTraceContext *glContext = getGLTraceContext();
7936
7937    glmsg.set_function(GLMessage::glGetFragDataLocation);
7938
7939    // copy argument program
7940    GLMessage_DataType *arg_program = glmsg.add_args();
7941    arg_program->set_isarray(false);
7942    arg_program->set_type(GLMessage::DataType::INT);
7943    arg_program->add_intvalue(program);
7944
7945    // copy argument name
7946    GLMessage_DataType *arg_name = glmsg.add_args();
7947    arg_name->set_isarray(false);
7948    arg_name->set_type(GLMessage::DataType::INT64);
7949    arg_name->add_int64value((uintptr_t)name);
7950
7951    // call function
7952    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7953    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7954    GLint retValue = glContext->hooks->gl.glGetFragDataLocation(program, name);
7955    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7956    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7957
7958    // set return value
7959    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
7960    rt->set_isarray(false);
7961    rt->set_type(GLMessage::DataType::INT);
7962    rt->add_intvalue(retValue);
7963
7964    void *pointerArgs[] = {
7965        (void *) name,
7966    };
7967
7968    fixupGLMessage(glContext, wallStartTime, wallEndTime,
7969                              threadStartTime, threadEndTime,
7970                              &glmsg, pointerArgs);
7971    glContext->traceGLMessage(&glmsg);
7972
7973    return retValue;
7974}
7975
7976void GLTrace_glUniform1ui(GLint location, GLuint v0) {
7977    GLMessage glmsg;
7978    GLTraceContext *glContext = getGLTraceContext();
7979
7980    glmsg.set_function(GLMessage::glUniform1ui);
7981
7982    // copy argument location
7983    GLMessage_DataType *arg_location = glmsg.add_args();
7984    arg_location->set_isarray(false);
7985    arg_location->set_type(GLMessage::DataType::INT);
7986    arg_location->add_intvalue(location);
7987
7988    // copy argument v0
7989    GLMessage_DataType *arg_v0 = glmsg.add_args();
7990    arg_v0->set_isarray(false);
7991    arg_v0->set_type(GLMessage::DataType::INT);
7992    arg_v0->add_intvalue(v0);
7993
7994    // call function
7995    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
7996    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7997    glContext->hooks->gl.glUniform1ui(location, v0);
7998    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
7999    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8000
8001    void *pointerArgs[] = {
8002    };
8003
8004    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8005                              threadStartTime, threadEndTime,
8006                              &glmsg, pointerArgs);
8007    glContext->traceGLMessage(&glmsg);
8008}
8009
8010void GLTrace_glUniform2ui(GLint location, GLuint v0, GLuint v1) {
8011    GLMessage glmsg;
8012    GLTraceContext *glContext = getGLTraceContext();
8013
8014    glmsg.set_function(GLMessage::glUniform2ui);
8015
8016    // copy argument location
8017    GLMessage_DataType *arg_location = glmsg.add_args();
8018    arg_location->set_isarray(false);
8019    arg_location->set_type(GLMessage::DataType::INT);
8020    arg_location->add_intvalue(location);
8021
8022    // copy argument v0
8023    GLMessage_DataType *arg_v0 = glmsg.add_args();
8024    arg_v0->set_isarray(false);
8025    arg_v0->set_type(GLMessage::DataType::INT);
8026    arg_v0->add_intvalue(v0);
8027
8028    // copy argument v1
8029    GLMessage_DataType *arg_v1 = glmsg.add_args();
8030    arg_v1->set_isarray(false);
8031    arg_v1->set_type(GLMessage::DataType::INT);
8032    arg_v1->add_intvalue(v1);
8033
8034    // call function
8035    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8036    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8037    glContext->hooks->gl.glUniform2ui(location, v0, v1);
8038    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8039    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8040
8041    void *pointerArgs[] = {
8042    };
8043
8044    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8045                              threadStartTime, threadEndTime,
8046                              &glmsg, pointerArgs);
8047    glContext->traceGLMessage(&glmsg);
8048}
8049
8050void GLTrace_glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) {
8051    GLMessage glmsg;
8052    GLTraceContext *glContext = getGLTraceContext();
8053
8054    glmsg.set_function(GLMessage::glUniform3ui);
8055
8056    // copy argument location
8057    GLMessage_DataType *arg_location = glmsg.add_args();
8058    arg_location->set_isarray(false);
8059    arg_location->set_type(GLMessage::DataType::INT);
8060    arg_location->add_intvalue(location);
8061
8062    // copy argument v0
8063    GLMessage_DataType *arg_v0 = glmsg.add_args();
8064    arg_v0->set_isarray(false);
8065    arg_v0->set_type(GLMessage::DataType::INT);
8066    arg_v0->add_intvalue(v0);
8067
8068    // copy argument v1
8069    GLMessage_DataType *arg_v1 = glmsg.add_args();
8070    arg_v1->set_isarray(false);
8071    arg_v1->set_type(GLMessage::DataType::INT);
8072    arg_v1->add_intvalue(v1);
8073
8074    // copy argument v2
8075    GLMessage_DataType *arg_v2 = glmsg.add_args();
8076    arg_v2->set_isarray(false);
8077    arg_v2->set_type(GLMessage::DataType::INT);
8078    arg_v2->add_intvalue(v2);
8079
8080    // call function
8081    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8082    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8083    glContext->hooks->gl.glUniform3ui(location, v0, v1, v2);
8084    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8085    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8086
8087    void *pointerArgs[] = {
8088    };
8089
8090    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8091                              threadStartTime, threadEndTime,
8092                              &glmsg, pointerArgs);
8093    glContext->traceGLMessage(&glmsg);
8094}
8095
8096void GLTrace_glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) {
8097    GLMessage glmsg;
8098    GLTraceContext *glContext = getGLTraceContext();
8099
8100    glmsg.set_function(GLMessage::glUniform4ui);
8101
8102    // copy argument location
8103    GLMessage_DataType *arg_location = glmsg.add_args();
8104    arg_location->set_isarray(false);
8105    arg_location->set_type(GLMessage::DataType::INT);
8106    arg_location->add_intvalue(location);
8107
8108    // copy argument v0
8109    GLMessage_DataType *arg_v0 = glmsg.add_args();
8110    arg_v0->set_isarray(false);
8111    arg_v0->set_type(GLMessage::DataType::INT);
8112    arg_v0->add_intvalue(v0);
8113
8114    // copy argument v1
8115    GLMessage_DataType *arg_v1 = glmsg.add_args();
8116    arg_v1->set_isarray(false);
8117    arg_v1->set_type(GLMessage::DataType::INT);
8118    arg_v1->add_intvalue(v1);
8119
8120    // copy argument v2
8121    GLMessage_DataType *arg_v2 = glmsg.add_args();
8122    arg_v2->set_isarray(false);
8123    arg_v2->set_type(GLMessage::DataType::INT);
8124    arg_v2->add_intvalue(v2);
8125
8126    // copy argument v3
8127    GLMessage_DataType *arg_v3 = glmsg.add_args();
8128    arg_v3->set_isarray(false);
8129    arg_v3->set_type(GLMessage::DataType::INT);
8130    arg_v3->add_intvalue(v3);
8131
8132    // call function
8133    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8134    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8135    glContext->hooks->gl.glUniform4ui(location, v0, v1, v2, v3);
8136    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8137    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8138
8139    void *pointerArgs[] = {
8140    };
8141
8142    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8143                              threadStartTime, threadEndTime,
8144                              &glmsg, pointerArgs);
8145    glContext->traceGLMessage(&glmsg);
8146}
8147
8148void GLTrace_glUniform1uiv(GLint location, GLsizei count, const GLuint * value) {
8149    GLMessage glmsg;
8150    GLTraceContext *glContext = getGLTraceContext();
8151
8152    glmsg.set_function(GLMessage::glUniform1uiv);
8153
8154    // copy argument location
8155    GLMessage_DataType *arg_location = glmsg.add_args();
8156    arg_location->set_isarray(false);
8157    arg_location->set_type(GLMessage::DataType::INT);
8158    arg_location->add_intvalue(location);
8159
8160    // copy argument count
8161    GLMessage_DataType *arg_count = glmsg.add_args();
8162    arg_count->set_isarray(false);
8163    arg_count->set_type(GLMessage::DataType::INT);
8164    arg_count->add_intvalue(count);
8165
8166    // copy argument value
8167    GLMessage_DataType *arg_value = glmsg.add_args();
8168    arg_value->set_isarray(false);
8169    arg_value->set_type(GLMessage::DataType::INT64);
8170    arg_value->add_int64value((uintptr_t)value);
8171
8172    // call function
8173    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8174    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8175    glContext->hooks->gl.glUniform1uiv(location, count, value);
8176    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8177    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8178
8179    void *pointerArgs[] = {
8180        (void *) value,
8181    };
8182
8183    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8184                              threadStartTime, threadEndTime,
8185                              &glmsg, pointerArgs);
8186    glContext->traceGLMessage(&glmsg);
8187}
8188
8189void GLTrace_glUniform2uiv(GLint location, GLsizei count, const GLuint * value) {
8190    GLMessage glmsg;
8191    GLTraceContext *glContext = getGLTraceContext();
8192
8193    glmsg.set_function(GLMessage::glUniform2uiv);
8194
8195    // copy argument location
8196    GLMessage_DataType *arg_location = glmsg.add_args();
8197    arg_location->set_isarray(false);
8198    arg_location->set_type(GLMessage::DataType::INT);
8199    arg_location->add_intvalue(location);
8200
8201    // copy argument count
8202    GLMessage_DataType *arg_count = glmsg.add_args();
8203    arg_count->set_isarray(false);
8204    arg_count->set_type(GLMessage::DataType::INT);
8205    arg_count->add_intvalue(count);
8206
8207    // copy argument value
8208    GLMessage_DataType *arg_value = glmsg.add_args();
8209    arg_value->set_isarray(false);
8210    arg_value->set_type(GLMessage::DataType::INT64);
8211    arg_value->add_int64value((uintptr_t)value);
8212
8213    // call function
8214    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8215    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8216    glContext->hooks->gl.glUniform2uiv(location, count, value);
8217    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8218    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8219
8220    void *pointerArgs[] = {
8221        (void *) value,
8222    };
8223
8224    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8225                              threadStartTime, threadEndTime,
8226                              &glmsg, pointerArgs);
8227    glContext->traceGLMessage(&glmsg);
8228}
8229
8230void GLTrace_glUniform3uiv(GLint location, GLsizei count, const GLuint * value) {
8231    GLMessage glmsg;
8232    GLTraceContext *glContext = getGLTraceContext();
8233
8234    glmsg.set_function(GLMessage::glUniform3uiv);
8235
8236    // copy argument location
8237    GLMessage_DataType *arg_location = glmsg.add_args();
8238    arg_location->set_isarray(false);
8239    arg_location->set_type(GLMessage::DataType::INT);
8240    arg_location->add_intvalue(location);
8241
8242    // copy argument count
8243    GLMessage_DataType *arg_count = glmsg.add_args();
8244    arg_count->set_isarray(false);
8245    arg_count->set_type(GLMessage::DataType::INT);
8246    arg_count->add_intvalue(count);
8247
8248    // copy argument value
8249    GLMessage_DataType *arg_value = glmsg.add_args();
8250    arg_value->set_isarray(false);
8251    arg_value->set_type(GLMessage::DataType::INT64);
8252    arg_value->add_int64value((uintptr_t)value);
8253
8254    // call function
8255    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8256    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8257    glContext->hooks->gl.glUniform3uiv(location, count, value);
8258    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8259    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8260
8261    void *pointerArgs[] = {
8262        (void *) value,
8263    };
8264
8265    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8266                              threadStartTime, threadEndTime,
8267                              &glmsg, pointerArgs);
8268    glContext->traceGLMessage(&glmsg);
8269}
8270
8271void GLTrace_glUniform4uiv(GLint location, GLsizei count, const GLuint * value) {
8272    GLMessage glmsg;
8273    GLTraceContext *glContext = getGLTraceContext();
8274
8275    glmsg.set_function(GLMessage::glUniform4uiv);
8276
8277    // copy argument location
8278    GLMessage_DataType *arg_location = glmsg.add_args();
8279    arg_location->set_isarray(false);
8280    arg_location->set_type(GLMessage::DataType::INT);
8281    arg_location->add_intvalue(location);
8282
8283    // copy argument count
8284    GLMessage_DataType *arg_count = glmsg.add_args();
8285    arg_count->set_isarray(false);
8286    arg_count->set_type(GLMessage::DataType::INT);
8287    arg_count->add_intvalue(count);
8288
8289    // copy argument value
8290    GLMessage_DataType *arg_value = glmsg.add_args();
8291    arg_value->set_isarray(false);
8292    arg_value->set_type(GLMessage::DataType::INT64);
8293    arg_value->add_int64value((uintptr_t)value);
8294
8295    // call function
8296    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8297    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8298    glContext->hooks->gl.glUniform4uiv(location, count, value);
8299    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8300    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8301
8302    void *pointerArgs[] = {
8303        (void *) value,
8304    };
8305
8306    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8307                              threadStartTime, threadEndTime,
8308                              &glmsg, pointerArgs);
8309    glContext->traceGLMessage(&glmsg);
8310}
8311
8312void GLTrace_glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint * value) {
8313    GLMessage glmsg;
8314    GLTraceContext *glContext = getGLTraceContext();
8315
8316    glmsg.set_function(GLMessage::glClearBufferiv);
8317
8318    // copy argument buffer
8319    GLMessage_DataType *arg_buffer = glmsg.add_args();
8320    arg_buffer->set_isarray(false);
8321    arg_buffer->set_type(GLMessage::DataType::ENUM);
8322    arg_buffer->add_intvalue((int)buffer);
8323
8324    // copy argument drawbuffer
8325    GLMessage_DataType *arg_drawbuffer = glmsg.add_args();
8326    arg_drawbuffer->set_isarray(false);
8327    arg_drawbuffer->set_type(GLMessage::DataType::INT);
8328    arg_drawbuffer->add_intvalue(drawbuffer);
8329
8330    // copy argument value
8331    GLMessage_DataType *arg_value = glmsg.add_args();
8332    arg_value->set_isarray(false);
8333    arg_value->set_type(GLMessage::DataType::INT64);
8334    arg_value->add_int64value((uintptr_t)value);
8335
8336    // call function
8337    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8338    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8339    glContext->hooks->gl.glClearBufferiv(buffer, drawbuffer, value);
8340    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8341    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8342
8343    void *pointerArgs[] = {
8344        (void *) value,
8345    };
8346
8347    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8348                              threadStartTime, threadEndTime,
8349                              &glmsg, pointerArgs);
8350    glContext->traceGLMessage(&glmsg);
8351}
8352
8353void GLTrace_glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint * value) {
8354    GLMessage glmsg;
8355    GLTraceContext *glContext = getGLTraceContext();
8356
8357    glmsg.set_function(GLMessage::glClearBufferuiv);
8358
8359    // copy argument buffer
8360    GLMessage_DataType *arg_buffer = glmsg.add_args();
8361    arg_buffer->set_isarray(false);
8362    arg_buffer->set_type(GLMessage::DataType::ENUM);
8363    arg_buffer->add_intvalue((int)buffer);
8364
8365    // copy argument drawbuffer
8366    GLMessage_DataType *arg_drawbuffer = glmsg.add_args();
8367    arg_drawbuffer->set_isarray(false);
8368    arg_drawbuffer->set_type(GLMessage::DataType::INT);
8369    arg_drawbuffer->add_intvalue(drawbuffer);
8370
8371    // copy argument value
8372    GLMessage_DataType *arg_value = glmsg.add_args();
8373    arg_value->set_isarray(false);
8374    arg_value->set_type(GLMessage::DataType::INT64);
8375    arg_value->add_int64value((uintptr_t)value);
8376
8377    // call function
8378    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8379    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8380    glContext->hooks->gl.glClearBufferuiv(buffer, drawbuffer, value);
8381    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8382    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8383
8384    void *pointerArgs[] = {
8385        (void *) value,
8386    };
8387
8388    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8389                              threadStartTime, threadEndTime,
8390                              &glmsg, pointerArgs);
8391    glContext->traceGLMessage(&glmsg);
8392}
8393
8394void GLTrace_glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat * value) {
8395    GLMessage glmsg;
8396    GLTraceContext *glContext = getGLTraceContext();
8397
8398    glmsg.set_function(GLMessage::glClearBufferfv);
8399
8400    // copy argument buffer
8401    GLMessage_DataType *arg_buffer = glmsg.add_args();
8402    arg_buffer->set_isarray(false);
8403    arg_buffer->set_type(GLMessage::DataType::ENUM);
8404    arg_buffer->add_intvalue((int)buffer);
8405
8406    // copy argument drawbuffer
8407    GLMessage_DataType *arg_drawbuffer = glmsg.add_args();
8408    arg_drawbuffer->set_isarray(false);
8409    arg_drawbuffer->set_type(GLMessage::DataType::INT);
8410    arg_drawbuffer->add_intvalue(drawbuffer);
8411
8412    // copy argument value
8413    GLMessage_DataType *arg_value = glmsg.add_args();
8414    arg_value->set_isarray(false);
8415    arg_value->set_type(GLMessage::DataType::INT64);
8416    arg_value->add_int64value((uintptr_t)value);
8417
8418    // call function
8419    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8420    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8421    glContext->hooks->gl.glClearBufferfv(buffer, drawbuffer, value);
8422    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8423    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8424
8425    void *pointerArgs[] = {
8426        (void *) value,
8427    };
8428
8429    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8430                              threadStartTime, threadEndTime,
8431                              &glmsg, pointerArgs);
8432    glContext->traceGLMessage(&glmsg);
8433}
8434
8435void GLTrace_glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) {
8436    GLMessage glmsg;
8437    GLTraceContext *glContext = getGLTraceContext();
8438
8439    glmsg.set_function(GLMessage::glClearBufferfi);
8440
8441    // copy argument buffer
8442    GLMessage_DataType *arg_buffer = glmsg.add_args();
8443    arg_buffer->set_isarray(false);
8444    arg_buffer->set_type(GLMessage::DataType::ENUM);
8445    arg_buffer->add_intvalue((int)buffer);
8446
8447    // copy argument drawbuffer
8448    GLMessage_DataType *arg_drawbuffer = glmsg.add_args();
8449    arg_drawbuffer->set_isarray(false);
8450    arg_drawbuffer->set_type(GLMessage::DataType::INT);
8451    arg_drawbuffer->add_intvalue(drawbuffer);
8452
8453    // copy argument depth
8454    GLMessage_DataType *arg_depth = glmsg.add_args();
8455    arg_depth->set_isarray(false);
8456    arg_depth->set_type(GLMessage::DataType::FLOAT);
8457    arg_depth->add_floatvalue(depth);
8458
8459    // copy argument stencil
8460    GLMessage_DataType *arg_stencil = glmsg.add_args();
8461    arg_stencil->set_isarray(false);
8462    arg_stencil->set_type(GLMessage::DataType::INT);
8463    arg_stencil->add_intvalue(stencil);
8464
8465    // call function
8466    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8467    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8468    glContext->hooks->gl.glClearBufferfi(buffer, drawbuffer, depth, stencil);
8469    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8470    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8471
8472    void *pointerArgs[] = {
8473    };
8474
8475    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8476                              threadStartTime, threadEndTime,
8477                              &glmsg, pointerArgs);
8478    glContext->traceGLMessage(&glmsg);
8479}
8480
8481const GLubyte * GLTrace_glGetStringi(GLenum name, GLuint index) {
8482    GLMessage glmsg;
8483    GLTraceContext *glContext = getGLTraceContext();
8484
8485    glmsg.set_function(GLMessage::glGetStringi);
8486
8487    // copy argument name
8488    GLMessage_DataType *arg_name = glmsg.add_args();
8489    arg_name->set_isarray(false);
8490    arg_name->set_type(GLMessage::DataType::ENUM);
8491    arg_name->add_intvalue((int)name);
8492
8493    // copy argument index
8494    GLMessage_DataType *arg_index = glmsg.add_args();
8495    arg_index->set_isarray(false);
8496    arg_index->set_type(GLMessage::DataType::INT);
8497    arg_index->add_intvalue(index);
8498
8499    // call function
8500    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8501    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8502    const GLubyte * retValue = glContext->hooks->gl.glGetStringi(name, index);
8503    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8504    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8505
8506    // set return value
8507    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
8508    rt->set_isarray(false);
8509    rt->set_type(GLMessage::DataType::INT64);
8510    rt->add_int64value((uintptr_t)retValue);
8511
8512    void *pointerArgs[] = {
8513        (void *) retValue,
8514    };
8515
8516    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8517                              threadStartTime, threadEndTime,
8518                              &glmsg, pointerArgs);
8519    glContext->traceGLMessage(&glmsg);
8520
8521    return retValue;
8522}
8523
8524void GLTrace_glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) {
8525    GLMessage glmsg;
8526    GLTraceContext *glContext = getGLTraceContext();
8527
8528    glmsg.set_function(GLMessage::glCopyBufferSubData);
8529
8530    // copy argument readTarget
8531    GLMessage_DataType *arg_readTarget = glmsg.add_args();
8532    arg_readTarget->set_isarray(false);
8533    arg_readTarget->set_type(GLMessage::DataType::ENUM);
8534    arg_readTarget->add_intvalue((int)readTarget);
8535
8536    // copy argument writeTarget
8537    GLMessage_DataType *arg_writeTarget = glmsg.add_args();
8538    arg_writeTarget->set_isarray(false);
8539    arg_writeTarget->set_type(GLMessage::DataType::ENUM);
8540    arg_writeTarget->add_intvalue((int)writeTarget);
8541
8542    // copy argument readOffset
8543    GLMessage_DataType *arg_readOffset = glmsg.add_args();
8544    arg_readOffset->set_isarray(false);
8545    arg_readOffset->set_type(GLMessage::DataType::INT);
8546    arg_readOffset->add_intvalue(readOffset);
8547
8548    // copy argument writeOffset
8549    GLMessage_DataType *arg_writeOffset = glmsg.add_args();
8550    arg_writeOffset->set_isarray(false);
8551    arg_writeOffset->set_type(GLMessage::DataType::INT);
8552    arg_writeOffset->add_intvalue(writeOffset);
8553
8554    // copy argument size
8555    GLMessage_DataType *arg_size = glmsg.add_args();
8556    arg_size->set_isarray(false);
8557    arg_size->set_type(GLMessage::DataType::INT);
8558    arg_size->add_intvalue(size);
8559
8560    // call function
8561    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8562    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8563    glContext->hooks->gl.glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size);
8564    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8565    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8566
8567    void *pointerArgs[] = {
8568    };
8569
8570    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8571                              threadStartTime, threadEndTime,
8572                              &glmsg, pointerArgs);
8573    glContext->traceGLMessage(&glmsg);
8574}
8575
8576void GLTrace_glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar *const* uniformNames, GLuint * uniformIndices) {
8577    GLMessage glmsg;
8578    GLTraceContext *glContext = getGLTraceContext();
8579
8580    glmsg.set_function(GLMessage::glGetUniformIndices);
8581
8582    // copy argument program
8583    GLMessage_DataType *arg_program = glmsg.add_args();
8584    arg_program->set_isarray(false);
8585    arg_program->set_type(GLMessage::DataType::INT);
8586    arg_program->add_intvalue(program);
8587
8588    // copy argument uniformCount
8589    GLMessage_DataType *arg_uniformCount = glmsg.add_args();
8590    arg_uniformCount->set_isarray(false);
8591    arg_uniformCount->set_type(GLMessage::DataType::INT);
8592    arg_uniformCount->add_intvalue(uniformCount);
8593
8594    // copy argument uniformNames
8595    GLMessage_DataType *arg_uniformNames = glmsg.add_args();
8596    arg_uniformNames->set_isarray(false);
8597    arg_uniformNames->set_type(GLMessage::DataType::INT64);
8598    arg_uniformNames->add_int64value((uintptr_t)uniformNames);
8599
8600    // copy argument uniformIndices
8601    GLMessage_DataType *arg_uniformIndices = glmsg.add_args();
8602    arg_uniformIndices->set_isarray(false);
8603    arg_uniformIndices->set_type(GLMessage::DataType::INT64);
8604    arg_uniformIndices->add_int64value((uintptr_t)uniformIndices);
8605
8606    // call function
8607    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8608    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8609    glContext->hooks->gl.glGetUniformIndices(program, uniformCount, uniformNames, uniformIndices);
8610    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8611    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8612
8613    void *pointerArgs[] = {
8614        (void *) uniformNames,
8615        (void *) uniformIndices,
8616    };
8617
8618    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8619                              threadStartTime, threadEndTime,
8620                              &glmsg, pointerArgs);
8621    glContext->traceGLMessage(&glmsg);
8622}
8623
8624void GLTrace_glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint * uniformIndices, GLenum pname, GLint * params) {
8625    GLMessage glmsg;
8626    GLTraceContext *glContext = getGLTraceContext();
8627
8628    glmsg.set_function(GLMessage::glGetActiveUniformsiv);
8629
8630    // copy argument program
8631    GLMessage_DataType *arg_program = glmsg.add_args();
8632    arg_program->set_isarray(false);
8633    arg_program->set_type(GLMessage::DataType::INT);
8634    arg_program->add_intvalue(program);
8635
8636    // copy argument uniformCount
8637    GLMessage_DataType *arg_uniformCount = glmsg.add_args();
8638    arg_uniformCount->set_isarray(false);
8639    arg_uniformCount->set_type(GLMessage::DataType::INT);
8640    arg_uniformCount->add_intvalue(uniformCount);
8641
8642    // copy argument uniformIndices
8643    GLMessage_DataType *arg_uniformIndices = glmsg.add_args();
8644    arg_uniformIndices->set_isarray(false);
8645    arg_uniformIndices->set_type(GLMessage::DataType::INT64);
8646    arg_uniformIndices->add_int64value((uintptr_t)uniformIndices);
8647
8648    // copy argument pname
8649    GLMessage_DataType *arg_pname = glmsg.add_args();
8650    arg_pname->set_isarray(false);
8651    arg_pname->set_type(GLMessage::DataType::ENUM);
8652    arg_pname->add_intvalue((int)pname);
8653
8654    // copy argument params
8655    GLMessage_DataType *arg_params = glmsg.add_args();
8656    arg_params->set_isarray(false);
8657    arg_params->set_type(GLMessage::DataType::INT64);
8658    arg_params->add_int64value((uintptr_t)params);
8659
8660    // call function
8661    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8662    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8663    glContext->hooks->gl.glGetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params);
8664    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8665    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8666
8667    void *pointerArgs[] = {
8668        (void *) uniformIndices,
8669        (void *) params,
8670    };
8671
8672    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8673                              threadStartTime, threadEndTime,
8674                              &glmsg, pointerArgs);
8675    glContext->traceGLMessage(&glmsg);
8676}
8677
8678GLuint GLTrace_glGetUniformBlockIndex(GLuint program, const GLchar * uniformBlockName) {
8679    GLMessage glmsg;
8680    GLTraceContext *glContext = getGLTraceContext();
8681
8682    glmsg.set_function(GLMessage::glGetUniformBlockIndex);
8683
8684    // copy argument program
8685    GLMessage_DataType *arg_program = glmsg.add_args();
8686    arg_program->set_isarray(false);
8687    arg_program->set_type(GLMessage::DataType::INT);
8688    arg_program->add_intvalue(program);
8689
8690    // copy argument uniformBlockName
8691    GLMessage_DataType *arg_uniformBlockName = glmsg.add_args();
8692    arg_uniformBlockName->set_isarray(false);
8693    arg_uniformBlockName->set_type(GLMessage::DataType::INT64);
8694    arg_uniformBlockName->add_int64value((uintptr_t)uniformBlockName);
8695
8696    // call function
8697    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8698    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8699    GLuint retValue = glContext->hooks->gl.glGetUniformBlockIndex(program, uniformBlockName);
8700    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8701    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8702
8703    // set return value
8704    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
8705    rt->set_isarray(false);
8706    rt->set_type(GLMessage::DataType::INT);
8707    rt->add_intvalue(retValue);
8708
8709    void *pointerArgs[] = {
8710        (void *) uniformBlockName,
8711    };
8712
8713    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8714                              threadStartTime, threadEndTime,
8715                              &glmsg, pointerArgs);
8716    glContext->traceGLMessage(&glmsg);
8717
8718    return retValue;
8719}
8720
8721void GLTrace_glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint * params) {
8722    GLMessage glmsg;
8723    GLTraceContext *glContext = getGLTraceContext();
8724
8725    glmsg.set_function(GLMessage::glGetActiveUniformBlockiv);
8726
8727    // copy argument program
8728    GLMessage_DataType *arg_program = glmsg.add_args();
8729    arg_program->set_isarray(false);
8730    arg_program->set_type(GLMessage::DataType::INT);
8731    arg_program->add_intvalue(program);
8732
8733    // copy argument uniformBlockIndex
8734    GLMessage_DataType *arg_uniformBlockIndex = glmsg.add_args();
8735    arg_uniformBlockIndex->set_isarray(false);
8736    arg_uniformBlockIndex->set_type(GLMessage::DataType::INT);
8737    arg_uniformBlockIndex->add_intvalue(uniformBlockIndex);
8738
8739    // copy argument pname
8740    GLMessage_DataType *arg_pname = glmsg.add_args();
8741    arg_pname->set_isarray(false);
8742    arg_pname->set_type(GLMessage::DataType::ENUM);
8743    arg_pname->add_intvalue((int)pname);
8744
8745    // copy argument params
8746    GLMessage_DataType *arg_params = glmsg.add_args();
8747    arg_params->set_isarray(false);
8748    arg_params->set_type(GLMessage::DataType::INT64);
8749    arg_params->add_int64value((uintptr_t)params);
8750
8751    // call function
8752    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8753    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8754    glContext->hooks->gl.glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, params);
8755    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8756    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8757
8758    void *pointerArgs[] = {
8759        (void *) params,
8760    };
8761
8762    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8763                              threadStartTime, threadEndTime,
8764                              &glmsg, pointerArgs);
8765    glContext->traceGLMessage(&glmsg);
8766}
8767
8768void GLTrace_glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformBlockName) {
8769    GLMessage glmsg;
8770    GLTraceContext *glContext = getGLTraceContext();
8771
8772    glmsg.set_function(GLMessage::glGetActiveUniformBlockName);
8773
8774    // copy argument program
8775    GLMessage_DataType *arg_program = glmsg.add_args();
8776    arg_program->set_isarray(false);
8777    arg_program->set_type(GLMessage::DataType::INT);
8778    arg_program->add_intvalue(program);
8779
8780    // copy argument uniformBlockIndex
8781    GLMessage_DataType *arg_uniformBlockIndex = glmsg.add_args();
8782    arg_uniformBlockIndex->set_isarray(false);
8783    arg_uniformBlockIndex->set_type(GLMessage::DataType::INT);
8784    arg_uniformBlockIndex->add_intvalue(uniformBlockIndex);
8785
8786    // copy argument bufSize
8787    GLMessage_DataType *arg_bufSize = glmsg.add_args();
8788    arg_bufSize->set_isarray(false);
8789    arg_bufSize->set_type(GLMessage::DataType::INT);
8790    arg_bufSize->add_intvalue(bufSize);
8791
8792    // copy argument length
8793    GLMessage_DataType *arg_length = glmsg.add_args();
8794    arg_length->set_isarray(false);
8795    arg_length->set_type(GLMessage::DataType::INT64);
8796    arg_length->add_int64value((uintptr_t)length);
8797
8798    // copy argument uniformBlockName
8799    GLMessage_DataType *arg_uniformBlockName = glmsg.add_args();
8800    arg_uniformBlockName->set_isarray(false);
8801    arg_uniformBlockName->set_type(GLMessage::DataType::INT64);
8802    arg_uniformBlockName->add_int64value((uintptr_t)uniformBlockName);
8803
8804    // call function
8805    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8806    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8807    glContext->hooks->gl.glGetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName);
8808    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8809    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8810
8811    void *pointerArgs[] = {
8812        (void *) length,
8813        (void *) uniformBlockName,
8814    };
8815
8816    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8817                              threadStartTime, threadEndTime,
8818                              &glmsg, pointerArgs);
8819    glContext->traceGLMessage(&glmsg);
8820}
8821
8822void GLTrace_glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) {
8823    GLMessage glmsg;
8824    GLTraceContext *glContext = getGLTraceContext();
8825
8826    glmsg.set_function(GLMessage::glUniformBlockBinding);
8827
8828    // copy argument program
8829    GLMessage_DataType *arg_program = glmsg.add_args();
8830    arg_program->set_isarray(false);
8831    arg_program->set_type(GLMessage::DataType::INT);
8832    arg_program->add_intvalue(program);
8833
8834    // copy argument uniformBlockIndex
8835    GLMessage_DataType *arg_uniformBlockIndex = glmsg.add_args();
8836    arg_uniformBlockIndex->set_isarray(false);
8837    arg_uniformBlockIndex->set_type(GLMessage::DataType::INT);
8838    arg_uniformBlockIndex->add_intvalue(uniformBlockIndex);
8839
8840    // copy argument uniformBlockBinding
8841    GLMessage_DataType *arg_uniformBlockBinding = glmsg.add_args();
8842    arg_uniformBlockBinding->set_isarray(false);
8843    arg_uniformBlockBinding->set_type(GLMessage::DataType::INT);
8844    arg_uniformBlockBinding->add_intvalue(uniformBlockBinding);
8845
8846    // call function
8847    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8848    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8849    glContext->hooks->gl.glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding);
8850    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8851    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8852
8853    void *pointerArgs[] = {
8854    };
8855
8856    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8857                              threadStartTime, threadEndTime,
8858                              &glmsg, pointerArgs);
8859    glContext->traceGLMessage(&glmsg);
8860}
8861
8862void GLTrace_glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) {
8863    GLMessage glmsg;
8864    GLTraceContext *glContext = getGLTraceContext();
8865
8866    glmsg.set_function(GLMessage::glDrawArraysInstanced);
8867
8868    // copy argument mode
8869    GLMessage_DataType *arg_mode = glmsg.add_args();
8870    arg_mode->set_isarray(false);
8871    arg_mode->set_type(GLMessage::DataType::ENUM);
8872    arg_mode->add_intvalue((int)mode);
8873
8874    // copy argument first
8875    GLMessage_DataType *arg_first = glmsg.add_args();
8876    arg_first->set_isarray(false);
8877    arg_first->set_type(GLMessage::DataType::INT);
8878    arg_first->add_intvalue(first);
8879
8880    // copy argument count
8881    GLMessage_DataType *arg_count = glmsg.add_args();
8882    arg_count->set_isarray(false);
8883    arg_count->set_type(GLMessage::DataType::INT);
8884    arg_count->add_intvalue(count);
8885
8886    // copy argument instancecount
8887    GLMessage_DataType *arg_instancecount = glmsg.add_args();
8888    arg_instancecount->set_isarray(false);
8889    arg_instancecount->set_type(GLMessage::DataType::INT);
8890    arg_instancecount->add_intvalue(instancecount);
8891
8892    // call function
8893    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8894    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8895    glContext->hooks->gl.glDrawArraysInstanced(mode, first, count, instancecount);
8896    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8897    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8898
8899    void *pointerArgs[] = {
8900    };
8901
8902    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8903                              threadStartTime, threadEndTime,
8904                              &glmsg, pointerArgs);
8905    glContext->traceGLMessage(&glmsg);
8906}
8907
8908void GLTrace_glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount) {
8909    GLMessage glmsg;
8910    GLTraceContext *glContext = getGLTraceContext();
8911
8912    glmsg.set_function(GLMessage::glDrawElementsInstanced);
8913
8914    // copy argument mode
8915    GLMessage_DataType *arg_mode = glmsg.add_args();
8916    arg_mode->set_isarray(false);
8917    arg_mode->set_type(GLMessage::DataType::ENUM);
8918    arg_mode->add_intvalue((int)mode);
8919
8920    // copy argument count
8921    GLMessage_DataType *arg_count = glmsg.add_args();
8922    arg_count->set_isarray(false);
8923    arg_count->set_type(GLMessage::DataType::INT);
8924    arg_count->add_intvalue(count);
8925
8926    // copy argument type
8927    GLMessage_DataType *arg_type = glmsg.add_args();
8928    arg_type->set_isarray(false);
8929    arg_type->set_type(GLMessage::DataType::ENUM);
8930    arg_type->add_intvalue((int)type);
8931
8932    // copy argument indices
8933    GLMessage_DataType *arg_indices = glmsg.add_args();
8934    arg_indices->set_isarray(false);
8935    arg_indices->set_type(GLMessage::DataType::INT64);
8936    arg_indices->add_int64value((uintptr_t)indices);
8937
8938    // copy argument instancecount
8939    GLMessage_DataType *arg_instancecount = glmsg.add_args();
8940    arg_instancecount->set_isarray(false);
8941    arg_instancecount->set_type(GLMessage::DataType::INT);
8942    arg_instancecount->add_intvalue(instancecount);
8943
8944    // call function
8945    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8946    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8947    glContext->hooks->gl.glDrawElementsInstanced(mode, count, type, indices, instancecount);
8948    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8949    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8950
8951    void *pointerArgs[] = {
8952        (void *) indices,
8953    };
8954
8955    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8956                              threadStartTime, threadEndTime,
8957                              &glmsg, pointerArgs);
8958    glContext->traceGLMessage(&glmsg);
8959}
8960
8961GLsync GLTrace_glFenceSync(GLenum condition, GLbitfield flags) {
8962    GLMessage glmsg;
8963    GLTraceContext *glContext = getGLTraceContext();
8964
8965    glmsg.set_function(GLMessage::glFenceSync);
8966
8967    // copy argument condition
8968    GLMessage_DataType *arg_condition = glmsg.add_args();
8969    arg_condition->set_isarray(false);
8970    arg_condition->set_type(GLMessage::DataType::ENUM);
8971    arg_condition->add_intvalue((int)condition);
8972
8973    // copy argument flags
8974    GLMessage_DataType *arg_flags = glmsg.add_args();
8975    arg_flags->set_isarray(false);
8976    arg_flags->set_type(GLMessage::DataType::INT);
8977    arg_flags->add_intvalue(flags);
8978
8979    // call function
8980    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8981    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8982    GLsync retValue = glContext->hooks->gl.glFenceSync(condition, flags);
8983    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8984    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8985
8986    // set return value
8987    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
8988    rt->set_isarray(false);
8989    rt->set_type(GLMessage::DataType::INT64);
8990    rt->add_int64value((uintptr_t)retValue);
8991
8992    void *pointerArgs[] = {
8993        (void *) retValue,
8994    };
8995
8996    fixupGLMessage(glContext, wallStartTime, wallEndTime,
8997                              threadStartTime, threadEndTime,
8998                              &glmsg, pointerArgs);
8999    glContext->traceGLMessage(&glmsg);
9000
9001    return retValue;
9002}
9003
9004GLboolean GLTrace_glIsSync(GLsync sync) {
9005    GLMessage glmsg;
9006    GLTraceContext *glContext = getGLTraceContext();
9007
9008    glmsg.set_function(GLMessage::glIsSync);
9009
9010    // copy argument sync
9011    GLMessage_DataType *arg_sync = glmsg.add_args();
9012    arg_sync->set_isarray(false);
9013    arg_sync->set_type(GLMessage::DataType::INT64);
9014    arg_sync->add_int64value((uintptr_t)sync);
9015
9016    // call function
9017    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9018    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9019    GLboolean retValue = glContext->hooks->gl.glIsSync(sync);
9020    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9021    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9022
9023    // set return value
9024    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
9025    rt->set_isarray(false);
9026    rt->set_type(GLMessage::DataType::BOOL);
9027    rt->add_boolvalue(retValue);
9028
9029    void *pointerArgs[] = {
9030        (void *) sync,
9031    };
9032
9033    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9034                              threadStartTime, threadEndTime,
9035                              &glmsg, pointerArgs);
9036    glContext->traceGLMessage(&glmsg);
9037
9038    return retValue;
9039}
9040
9041void GLTrace_glDeleteSync(GLsync sync) {
9042    GLMessage glmsg;
9043    GLTraceContext *glContext = getGLTraceContext();
9044
9045    glmsg.set_function(GLMessage::glDeleteSync);
9046
9047    // copy argument sync
9048    GLMessage_DataType *arg_sync = glmsg.add_args();
9049    arg_sync->set_isarray(false);
9050    arg_sync->set_type(GLMessage::DataType::INT64);
9051    arg_sync->add_int64value((uintptr_t)sync);
9052
9053    // call function
9054    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9055    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9056    glContext->hooks->gl.glDeleteSync(sync);
9057    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9058    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9059
9060    void *pointerArgs[] = {
9061        (void *) sync,
9062    };
9063
9064    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9065                              threadStartTime, threadEndTime,
9066                              &glmsg, pointerArgs);
9067    glContext->traceGLMessage(&glmsg);
9068}
9069
9070GLenum GLTrace_glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) {
9071    GLMessage glmsg;
9072    GLTraceContext *glContext = getGLTraceContext();
9073
9074    glmsg.set_function(GLMessage::glClientWaitSync);
9075
9076    // copy argument sync
9077    GLMessage_DataType *arg_sync = glmsg.add_args();
9078    arg_sync->set_isarray(false);
9079    arg_sync->set_type(GLMessage::DataType::INT64);
9080    arg_sync->add_int64value((uintptr_t)sync);
9081
9082    // copy argument flags
9083    GLMessage_DataType *arg_flags = glmsg.add_args();
9084    arg_flags->set_isarray(false);
9085    arg_flags->set_type(GLMessage::DataType::INT);
9086    arg_flags->add_intvalue(flags);
9087
9088    // copy argument timeout
9089    GLMessage_DataType *arg_timeout = glmsg.add_args();
9090    arg_timeout->set_isarray(false);
9091    arg_timeout->set_type(GLMessage::DataType::INT64);
9092    arg_timeout->add_int64value(timeout);
9093
9094    // call function
9095    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9096    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9097    GLenum retValue = glContext->hooks->gl.glClientWaitSync(sync, flags, timeout);
9098    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9099    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9100
9101    // set return value
9102    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
9103    rt->set_isarray(false);
9104    rt->set_type(GLMessage::DataType::ENUM);
9105    rt->add_intvalue((int)retValue);
9106
9107    void *pointerArgs[] = {
9108        (void *) sync,
9109    };
9110
9111    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9112                              threadStartTime, threadEndTime,
9113                              &glmsg, pointerArgs);
9114    glContext->traceGLMessage(&glmsg);
9115
9116    return retValue;
9117}
9118
9119void GLTrace_glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) {
9120    GLMessage glmsg;
9121    GLTraceContext *glContext = getGLTraceContext();
9122
9123    glmsg.set_function(GLMessage::glWaitSync);
9124
9125    // copy argument sync
9126    GLMessage_DataType *arg_sync = glmsg.add_args();
9127    arg_sync->set_isarray(false);
9128    arg_sync->set_type(GLMessage::DataType::INT64);
9129    arg_sync->add_int64value((uintptr_t)sync);
9130
9131    // copy argument flags
9132    GLMessage_DataType *arg_flags = glmsg.add_args();
9133    arg_flags->set_isarray(false);
9134    arg_flags->set_type(GLMessage::DataType::INT);
9135    arg_flags->add_intvalue(flags);
9136
9137    // copy argument timeout
9138    GLMessage_DataType *arg_timeout = glmsg.add_args();
9139    arg_timeout->set_isarray(false);
9140    arg_timeout->set_type(GLMessage::DataType::INT64);
9141    arg_timeout->add_int64value(timeout);
9142
9143    // call function
9144    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9145    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9146    glContext->hooks->gl.glWaitSync(sync, flags, timeout);
9147    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9148    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9149
9150    void *pointerArgs[] = {
9151        (void *) sync,
9152    };
9153
9154    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9155                              threadStartTime, threadEndTime,
9156                              &glmsg, pointerArgs);
9157    glContext->traceGLMessage(&glmsg);
9158}
9159
9160void GLTrace_glGetInteger64v(GLenum pname, GLint64 * data) {
9161    GLMessage glmsg;
9162    GLTraceContext *glContext = getGLTraceContext();
9163
9164    glmsg.set_function(GLMessage::glGetInteger64v);
9165
9166    // copy argument pname
9167    GLMessage_DataType *arg_pname = glmsg.add_args();
9168    arg_pname->set_isarray(false);
9169    arg_pname->set_type(GLMessage::DataType::ENUM);
9170    arg_pname->add_intvalue((int)pname);
9171
9172    // copy argument data
9173    GLMessage_DataType *arg_data = glmsg.add_args();
9174    arg_data->set_isarray(false);
9175    arg_data->set_type(GLMessage::DataType::INT64);
9176    arg_data->add_int64value((uintptr_t)data);
9177
9178    // call function
9179    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9180    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9181    glContext->hooks->gl.glGetInteger64v(pname, data);
9182    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9183    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9184
9185    void *pointerArgs[] = {
9186        (void *) data,
9187    };
9188
9189    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9190                              threadStartTime, threadEndTime,
9191                              &glmsg, pointerArgs);
9192    glContext->traceGLMessage(&glmsg);
9193}
9194
9195void GLTrace_glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values) {
9196    GLMessage glmsg;
9197    GLTraceContext *glContext = getGLTraceContext();
9198
9199    glmsg.set_function(GLMessage::glGetSynciv);
9200
9201    // copy argument sync
9202    GLMessage_DataType *arg_sync = glmsg.add_args();
9203    arg_sync->set_isarray(false);
9204    arg_sync->set_type(GLMessage::DataType::INT64);
9205    arg_sync->add_int64value((uintptr_t)sync);
9206
9207    // copy argument pname
9208    GLMessage_DataType *arg_pname = glmsg.add_args();
9209    arg_pname->set_isarray(false);
9210    arg_pname->set_type(GLMessage::DataType::ENUM);
9211    arg_pname->add_intvalue((int)pname);
9212
9213    // copy argument bufSize
9214    GLMessage_DataType *arg_bufSize = glmsg.add_args();
9215    arg_bufSize->set_isarray(false);
9216    arg_bufSize->set_type(GLMessage::DataType::INT);
9217    arg_bufSize->add_intvalue(bufSize);
9218
9219    // copy argument length
9220    GLMessage_DataType *arg_length = glmsg.add_args();
9221    arg_length->set_isarray(false);
9222    arg_length->set_type(GLMessage::DataType::INT64);
9223    arg_length->add_int64value((uintptr_t)length);
9224
9225    // copy argument values
9226    GLMessage_DataType *arg_values = glmsg.add_args();
9227    arg_values->set_isarray(false);
9228    arg_values->set_type(GLMessage::DataType::INT64);
9229    arg_values->add_int64value((uintptr_t)values);
9230
9231    // call function
9232    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9233    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9234    glContext->hooks->gl.glGetSynciv(sync, pname, bufSize, length, values);
9235    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9236    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9237
9238    void *pointerArgs[] = {
9239        (void *) sync,
9240        (void *) length,
9241        (void *) values,
9242    };
9243
9244    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9245                              threadStartTime, threadEndTime,
9246                              &glmsg, pointerArgs);
9247    glContext->traceGLMessage(&glmsg);
9248}
9249
9250void GLTrace_glGetInteger64i_v(GLenum target, GLuint index, GLint64 * data) {
9251    GLMessage glmsg;
9252    GLTraceContext *glContext = getGLTraceContext();
9253
9254    glmsg.set_function(GLMessage::glGetInteger64i_v);
9255
9256    // copy argument target
9257    GLMessage_DataType *arg_target = glmsg.add_args();
9258    arg_target->set_isarray(false);
9259    arg_target->set_type(GLMessage::DataType::ENUM);
9260    arg_target->add_intvalue((int)target);
9261
9262    // copy argument index
9263    GLMessage_DataType *arg_index = glmsg.add_args();
9264    arg_index->set_isarray(false);
9265    arg_index->set_type(GLMessage::DataType::INT);
9266    arg_index->add_intvalue(index);
9267
9268    // copy argument data
9269    GLMessage_DataType *arg_data = glmsg.add_args();
9270    arg_data->set_isarray(false);
9271    arg_data->set_type(GLMessage::DataType::INT64);
9272    arg_data->add_int64value((uintptr_t)data);
9273
9274    // call function
9275    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9276    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9277    glContext->hooks->gl.glGetInteger64i_v(target, index, data);
9278    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9279    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9280
9281    void *pointerArgs[] = {
9282        (void *) data,
9283    };
9284
9285    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9286                              threadStartTime, threadEndTime,
9287                              &glmsg, pointerArgs);
9288    glContext->traceGLMessage(&glmsg);
9289}
9290
9291void GLTrace_glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 * params) {
9292    GLMessage glmsg;
9293    GLTraceContext *glContext = getGLTraceContext();
9294
9295    glmsg.set_function(GLMessage::glGetBufferParameteri64v);
9296
9297    // copy argument target
9298    GLMessage_DataType *arg_target = glmsg.add_args();
9299    arg_target->set_isarray(false);
9300    arg_target->set_type(GLMessage::DataType::ENUM);
9301    arg_target->add_intvalue((int)target);
9302
9303    // copy argument pname
9304    GLMessage_DataType *arg_pname = glmsg.add_args();
9305    arg_pname->set_isarray(false);
9306    arg_pname->set_type(GLMessage::DataType::ENUM);
9307    arg_pname->add_intvalue((int)pname);
9308
9309    // copy argument params
9310    GLMessage_DataType *arg_params = glmsg.add_args();
9311    arg_params->set_isarray(false);
9312    arg_params->set_type(GLMessage::DataType::INT64);
9313    arg_params->add_int64value((uintptr_t)params);
9314
9315    // call function
9316    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9317    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9318    glContext->hooks->gl.glGetBufferParameteri64v(target, pname, params);
9319    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9320    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9321
9322    void *pointerArgs[] = {
9323        (void *) params,
9324    };
9325
9326    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9327                              threadStartTime, threadEndTime,
9328                              &glmsg, pointerArgs);
9329    glContext->traceGLMessage(&glmsg);
9330}
9331
9332void GLTrace_glGenSamplers(GLsizei count, GLuint * samplers) {
9333    GLMessage glmsg;
9334    GLTraceContext *glContext = getGLTraceContext();
9335
9336    glmsg.set_function(GLMessage::glGenSamplers);
9337
9338    // copy argument count
9339    GLMessage_DataType *arg_count = glmsg.add_args();
9340    arg_count->set_isarray(false);
9341    arg_count->set_type(GLMessage::DataType::INT);
9342    arg_count->add_intvalue(count);
9343
9344    // copy argument samplers
9345    GLMessage_DataType *arg_samplers = glmsg.add_args();
9346    arg_samplers->set_isarray(false);
9347    arg_samplers->set_type(GLMessage::DataType::INT64);
9348    arg_samplers->add_int64value((uintptr_t)samplers);
9349
9350    // call function
9351    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9352    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9353    glContext->hooks->gl.glGenSamplers(count, samplers);
9354    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9355    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9356
9357    void *pointerArgs[] = {
9358        (void *) samplers,
9359    };
9360
9361    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9362                              threadStartTime, threadEndTime,
9363                              &glmsg, pointerArgs);
9364    glContext->traceGLMessage(&glmsg);
9365}
9366
9367void GLTrace_glDeleteSamplers(GLsizei count, const GLuint * samplers) {
9368    GLMessage glmsg;
9369    GLTraceContext *glContext = getGLTraceContext();
9370
9371    glmsg.set_function(GLMessage::glDeleteSamplers);
9372
9373    // copy argument count
9374    GLMessage_DataType *arg_count = glmsg.add_args();
9375    arg_count->set_isarray(false);
9376    arg_count->set_type(GLMessage::DataType::INT);
9377    arg_count->add_intvalue(count);
9378
9379    // copy argument samplers
9380    GLMessage_DataType *arg_samplers = glmsg.add_args();
9381    arg_samplers->set_isarray(false);
9382    arg_samplers->set_type(GLMessage::DataType::INT64);
9383    arg_samplers->add_int64value((uintptr_t)samplers);
9384
9385    // call function
9386    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9387    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9388    glContext->hooks->gl.glDeleteSamplers(count, samplers);
9389    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9390    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9391
9392    void *pointerArgs[] = {
9393        (void *) samplers,
9394    };
9395
9396    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9397                              threadStartTime, threadEndTime,
9398                              &glmsg, pointerArgs);
9399    glContext->traceGLMessage(&glmsg);
9400}
9401
9402GLboolean GLTrace_glIsSampler(GLuint sampler) {
9403    GLMessage glmsg;
9404    GLTraceContext *glContext = getGLTraceContext();
9405
9406    glmsg.set_function(GLMessage::glIsSampler);
9407
9408    // copy argument sampler
9409    GLMessage_DataType *arg_sampler = glmsg.add_args();
9410    arg_sampler->set_isarray(false);
9411    arg_sampler->set_type(GLMessage::DataType::INT);
9412    arg_sampler->add_intvalue(sampler);
9413
9414    // call function
9415    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9416    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9417    GLboolean retValue = glContext->hooks->gl.glIsSampler(sampler);
9418    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9419    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9420
9421    // set return value
9422    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
9423    rt->set_isarray(false);
9424    rt->set_type(GLMessage::DataType::BOOL);
9425    rt->add_boolvalue(retValue);
9426
9427    void *pointerArgs[] = {
9428    };
9429
9430    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9431                              threadStartTime, threadEndTime,
9432                              &glmsg, pointerArgs);
9433    glContext->traceGLMessage(&glmsg);
9434
9435    return retValue;
9436}
9437
9438void GLTrace_glBindSampler(GLuint unit, GLuint sampler) {
9439    GLMessage glmsg;
9440    GLTraceContext *glContext = getGLTraceContext();
9441
9442    glmsg.set_function(GLMessage::glBindSampler);
9443
9444    // copy argument unit
9445    GLMessage_DataType *arg_unit = glmsg.add_args();
9446    arg_unit->set_isarray(false);
9447    arg_unit->set_type(GLMessage::DataType::INT);
9448    arg_unit->add_intvalue(unit);
9449
9450    // copy argument sampler
9451    GLMessage_DataType *arg_sampler = glmsg.add_args();
9452    arg_sampler->set_isarray(false);
9453    arg_sampler->set_type(GLMessage::DataType::INT);
9454    arg_sampler->add_intvalue(sampler);
9455
9456    // call function
9457    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9458    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9459    glContext->hooks->gl.glBindSampler(unit, sampler);
9460    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9461    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9462
9463    void *pointerArgs[] = {
9464    };
9465
9466    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9467                              threadStartTime, threadEndTime,
9468                              &glmsg, pointerArgs);
9469    glContext->traceGLMessage(&glmsg);
9470}
9471
9472void GLTrace_glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) {
9473    GLMessage glmsg;
9474    GLTraceContext *glContext = getGLTraceContext();
9475
9476    glmsg.set_function(GLMessage::glSamplerParameteri);
9477
9478    // copy argument sampler
9479    GLMessage_DataType *arg_sampler = glmsg.add_args();
9480    arg_sampler->set_isarray(false);
9481    arg_sampler->set_type(GLMessage::DataType::INT);
9482    arg_sampler->add_intvalue(sampler);
9483
9484    // copy argument pname
9485    GLMessage_DataType *arg_pname = glmsg.add_args();
9486    arg_pname->set_isarray(false);
9487    arg_pname->set_type(GLMessage::DataType::ENUM);
9488    arg_pname->add_intvalue((int)pname);
9489
9490    // copy argument param
9491    GLMessage_DataType *arg_param = glmsg.add_args();
9492    arg_param->set_isarray(false);
9493    arg_param->set_type(GLMessage::DataType::INT);
9494    arg_param->add_intvalue(param);
9495
9496    // call function
9497    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9498    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9499    glContext->hooks->gl.glSamplerParameteri(sampler, pname, param);
9500    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9501    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9502
9503    void *pointerArgs[] = {
9504    };
9505
9506    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9507                              threadStartTime, threadEndTime,
9508                              &glmsg, pointerArgs);
9509    glContext->traceGLMessage(&glmsg);
9510}
9511
9512void GLTrace_glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint * param) {
9513    GLMessage glmsg;
9514    GLTraceContext *glContext = getGLTraceContext();
9515
9516    glmsg.set_function(GLMessage::glSamplerParameteriv);
9517
9518    // copy argument sampler
9519    GLMessage_DataType *arg_sampler = glmsg.add_args();
9520    arg_sampler->set_isarray(false);
9521    arg_sampler->set_type(GLMessage::DataType::INT);
9522    arg_sampler->add_intvalue(sampler);
9523
9524    // copy argument pname
9525    GLMessage_DataType *arg_pname = glmsg.add_args();
9526    arg_pname->set_isarray(false);
9527    arg_pname->set_type(GLMessage::DataType::ENUM);
9528    arg_pname->add_intvalue((int)pname);
9529
9530    // copy argument param
9531    GLMessage_DataType *arg_param = glmsg.add_args();
9532    arg_param->set_isarray(false);
9533    arg_param->set_type(GLMessage::DataType::INT64);
9534    arg_param->add_int64value((uintptr_t)param);
9535
9536    // call function
9537    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9538    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9539    glContext->hooks->gl.glSamplerParameteriv(sampler, pname, param);
9540    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9541    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9542
9543    void *pointerArgs[] = {
9544        (void *) param,
9545    };
9546
9547    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9548                              threadStartTime, threadEndTime,
9549                              &glmsg, pointerArgs);
9550    glContext->traceGLMessage(&glmsg);
9551}
9552
9553void GLTrace_glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) {
9554    GLMessage glmsg;
9555    GLTraceContext *glContext = getGLTraceContext();
9556
9557    glmsg.set_function(GLMessage::glSamplerParameterf);
9558
9559    // copy argument sampler
9560    GLMessage_DataType *arg_sampler = glmsg.add_args();
9561    arg_sampler->set_isarray(false);
9562    arg_sampler->set_type(GLMessage::DataType::INT);
9563    arg_sampler->add_intvalue(sampler);
9564
9565    // copy argument pname
9566    GLMessage_DataType *arg_pname = glmsg.add_args();
9567    arg_pname->set_isarray(false);
9568    arg_pname->set_type(GLMessage::DataType::ENUM);
9569    arg_pname->add_intvalue((int)pname);
9570
9571    // copy argument param
9572    GLMessage_DataType *arg_param = glmsg.add_args();
9573    arg_param->set_isarray(false);
9574    arg_param->set_type(GLMessage::DataType::FLOAT);
9575    arg_param->add_floatvalue(param);
9576
9577    // call function
9578    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9579    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9580    glContext->hooks->gl.glSamplerParameterf(sampler, pname, param);
9581    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9582    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9583
9584    void *pointerArgs[] = {
9585    };
9586
9587    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9588                              threadStartTime, threadEndTime,
9589                              &glmsg, pointerArgs);
9590    glContext->traceGLMessage(&glmsg);
9591}
9592
9593void GLTrace_glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat * param) {
9594    GLMessage glmsg;
9595    GLTraceContext *glContext = getGLTraceContext();
9596
9597    glmsg.set_function(GLMessage::glSamplerParameterfv);
9598
9599    // copy argument sampler
9600    GLMessage_DataType *arg_sampler = glmsg.add_args();
9601    arg_sampler->set_isarray(false);
9602    arg_sampler->set_type(GLMessage::DataType::INT);
9603    arg_sampler->add_intvalue(sampler);
9604
9605    // copy argument pname
9606    GLMessage_DataType *arg_pname = glmsg.add_args();
9607    arg_pname->set_isarray(false);
9608    arg_pname->set_type(GLMessage::DataType::ENUM);
9609    arg_pname->add_intvalue((int)pname);
9610
9611    // copy argument param
9612    GLMessage_DataType *arg_param = glmsg.add_args();
9613    arg_param->set_isarray(false);
9614    arg_param->set_type(GLMessage::DataType::INT64);
9615    arg_param->add_int64value((uintptr_t)param);
9616
9617    // call function
9618    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9619    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9620    glContext->hooks->gl.glSamplerParameterfv(sampler, pname, param);
9621    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9622    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9623
9624    void *pointerArgs[] = {
9625        (void *) param,
9626    };
9627
9628    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9629                              threadStartTime, threadEndTime,
9630                              &glmsg, pointerArgs);
9631    glContext->traceGLMessage(&glmsg);
9632}
9633
9634void GLTrace_glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint * params) {
9635    GLMessage glmsg;
9636    GLTraceContext *glContext = getGLTraceContext();
9637
9638    glmsg.set_function(GLMessage::glGetSamplerParameteriv);
9639
9640    // copy argument sampler
9641    GLMessage_DataType *arg_sampler = glmsg.add_args();
9642    arg_sampler->set_isarray(false);
9643    arg_sampler->set_type(GLMessage::DataType::INT);
9644    arg_sampler->add_intvalue(sampler);
9645
9646    // copy argument pname
9647    GLMessage_DataType *arg_pname = glmsg.add_args();
9648    arg_pname->set_isarray(false);
9649    arg_pname->set_type(GLMessage::DataType::ENUM);
9650    arg_pname->add_intvalue((int)pname);
9651
9652    // copy argument params
9653    GLMessage_DataType *arg_params = glmsg.add_args();
9654    arg_params->set_isarray(false);
9655    arg_params->set_type(GLMessage::DataType::INT64);
9656    arg_params->add_int64value((uintptr_t)params);
9657
9658    // call function
9659    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9660    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9661    glContext->hooks->gl.glGetSamplerParameteriv(sampler, pname, params);
9662    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9663    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9664
9665    void *pointerArgs[] = {
9666        (void *) params,
9667    };
9668
9669    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9670                              threadStartTime, threadEndTime,
9671                              &glmsg, pointerArgs);
9672    glContext->traceGLMessage(&glmsg);
9673}
9674
9675void GLTrace_glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat * params) {
9676    GLMessage glmsg;
9677    GLTraceContext *glContext = getGLTraceContext();
9678
9679    glmsg.set_function(GLMessage::glGetSamplerParameterfv);
9680
9681    // copy argument sampler
9682    GLMessage_DataType *arg_sampler = glmsg.add_args();
9683    arg_sampler->set_isarray(false);
9684    arg_sampler->set_type(GLMessage::DataType::INT);
9685    arg_sampler->add_intvalue(sampler);
9686
9687    // copy argument pname
9688    GLMessage_DataType *arg_pname = glmsg.add_args();
9689    arg_pname->set_isarray(false);
9690    arg_pname->set_type(GLMessage::DataType::ENUM);
9691    arg_pname->add_intvalue((int)pname);
9692
9693    // copy argument params
9694    GLMessage_DataType *arg_params = glmsg.add_args();
9695    arg_params->set_isarray(false);
9696    arg_params->set_type(GLMessage::DataType::INT64);
9697    arg_params->add_int64value((uintptr_t)params);
9698
9699    // call function
9700    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9701    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9702    glContext->hooks->gl.glGetSamplerParameterfv(sampler, pname, params);
9703    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9704    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9705
9706    void *pointerArgs[] = {
9707        (void *) params,
9708    };
9709
9710    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9711                              threadStartTime, threadEndTime,
9712                              &glmsg, pointerArgs);
9713    glContext->traceGLMessage(&glmsg);
9714}
9715
9716void GLTrace_glVertexAttribDivisor(GLuint index, GLuint divisor) {
9717    GLMessage glmsg;
9718    GLTraceContext *glContext = getGLTraceContext();
9719
9720    glmsg.set_function(GLMessage::glVertexAttribDivisor);
9721
9722    // copy argument index
9723    GLMessage_DataType *arg_index = glmsg.add_args();
9724    arg_index->set_isarray(false);
9725    arg_index->set_type(GLMessage::DataType::INT);
9726    arg_index->add_intvalue(index);
9727
9728    // copy argument divisor
9729    GLMessage_DataType *arg_divisor = glmsg.add_args();
9730    arg_divisor->set_isarray(false);
9731    arg_divisor->set_type(GLMessage::DataType::INT);
9732    arg_divisor->add_intvalue(divisor);
9733
9734    // call function
9735    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9736    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9737    glContext->hooks->gl.glVertexAttribDivisor(index, divisor);
9738    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9739    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9740
9741    void *pointerArgs[] = {
9742    };
9743
9744    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9745                              threadStartTime, threadEndTime,
9746                              &glmsg, pointerArgs);
9747    glContext->traceGLMessage(&glmsg);
9748}
9749
9750void GLTrace_glBindTransformFeedback(GLenum target, GLuint id) {
9751    GLMessage glmsg;
9752    GLTraceContext *glContext = getGLTraceContext();
9753
9754    glmsg.set_function(GLMessage::glBindTransformFeedback);
9755
9756    // copy argument target
9757    GLMessage_DataType *arg_target = glmsg.add_args();
9758    arg_target->set_isarray(false);
9759    arg_target->set_type(GLMessage::DataType::ENUM);
9760    arg_target->add_intvalue((int)target);
9761
9762    // copy argument id
9763    GLMessage_DataType *arg_id = glmsg.add_args();
9764    arg_id->set_isarray(false);
9765    arg_id->set_type(GLMessage::DataType::INT);
9766    arg_id->add_intvalue(id);
9767
9768    // call function
9769    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9770    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9771    glContext->hooks->gl.glBindTransformFeedback(target, id);
9772    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9773    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9774
9775    void *pointerArgs[] = {
9776    };
9777
9778    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9779                              threadStartTime, threadEndTime,
9780                              &glmsg, pointerArgs);
9781    glContext->traceGLMessage(&glmsg);
9782}
9783
9784void GLTrace_glDeleteTransformFeedbacks(GLsizei n, const GLuint * ids) {
9785    GLMessage glmsg;
9786    GLTraceContext *glContext = getGLTraceContext();
9787
9788    glmsg.set_function(GLMessage::glDeleteTransformFeedbacks);
9789
9790    // copy argument n
9791    GLMessage_DataType *arg_n = glmsg.add_args();
9792    arg_n->set_isarray(false);
9793    arg_n->set_type(GLMessage::DataType::INT);
9794    arg_n->add_intvalue(n);
9795
9796    // copy argument ids
9797    GLMessage_DataType *arg_ids = glmsg.add_args();
9798    arg_ids->set_isarray(false);
9799    arg_ids->set_type(GLMessage::DataType::INT64);
9800    arg_ids->add_int64value((uintptr_t)ids);
9801
9802    // call function
9803    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9804    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9805    glContext->hooks->gl.glDeleteTransformFeedbacks(n, ids);
9806    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9807    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9808
9809    void *pointerArgs[] = {
9810        (void *) ids,
9811    };
9812
9813    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9814                              threadStartTime, threadEndTime,
9815                              &glmsg, pointerArgs);
9816    glContext->traceGLMessage(&glmsg);
9817}
9818
9819void GLTrace_glGenTransformFeedbacks(GLsizei n, GLuint * ids) {
9820    GLMessage glmsg;
9821    GLTraceContext *glContext = getGLTraceContext();
9822
9823    glmsg.set_function(GLMessage::glGenTransformFeedbacks);
9824
9825    // copy argument n
9826    GLMessage_DataType *arg_n = glmsg.add_args();
9827    arg_n->set_isarray(false);
9828    arg_n->set_type(GLMessage::DataType::INT);
9829    arg_n->add_intvalue(n);
9830
9831    // copy argument ids
9832    GLMessage_DataType *arg_ids = glmsg.add_args();
9833    arg_ids->set_isarray(false);
9834    arg_ids->set_type(GLMessage::DataType::INT64);
9835    arg_ids->add_int64value((uintptr_t)ids);
9836
9837    // call function
9838    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9839    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9840    glContext->hooks->gl.glGenTransformFeedbacks(n, ids);
9841    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9842    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9843
9844    void *pointerArgs[] = {
9845        (void *) ids,
9846    };
9847
9848    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9849                              threadStartTime, threadEndTime,
9850                              &glmsg, pointerArgs);
9851    glContext->traceGLMessage(&glmsg);
9852}
9853
9854GLboolean GLTrace_glIsTransformFeedback(GLuint id) {
9855    GLMessage glmsg;
9856    GLTraceContext *glContext = getGLTraceContext();
9857
9858    glmsg.set_function(GLMessage::glIsTransformFeedback);
9859
9860    // copy argument id
9861    GLMessage_DataType *arg_id = glmsg.add_args();
9862    arg_id->set_isarray(false);
9863    arg_id->set_type(GLMessage::DataType::INT);
9864    arg_id->add_intvalue(id);
9865
9866    // call function
9867    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9868    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9869    GLboolean retValue = glContext->hooks->gl.glIsTransformFeedback(id);
9870    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9871    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9872
9873    // set return value
9874    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
9875    rt->set_isarray(false);
9876    rt->set_type(GLMessage::DataType::BOOL);
9877    rt->add_boolvalue(retValue);
9878
9879    void *pointerArgs[] = {
9880    };
9881
9882    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9883                              threadStartTime, threadEndTime,
9884                              &glmsg, pointerArgs);
9885    glContext->traceGLMessage(&glmsg);
9886
9887    return retValue;
9888}
9889
9890void GLTrace_glPauseTransformFeedback(void) {
9891    GLMessage glmsg;
9892    GLTraceContext *glContext = getGLTraceContext();
9893
9894    glmsg.set_function(GLMessage::glPauseTransformFeedback);
9895
9896    // call function
9897    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9898    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9899    glContext->hooks->gl.glPauseTransformFeedback();
9900    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9901    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9902
9903    void *pointerArgs[] = {
9904    };
9905
9906    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9907                              threadStartTime, threadEndTime,
9908                              &glmsg, pointerArgs);
9909    glContext->traceGLMessage(&glmsg);
9910}
9911
9912void GLTrace_glResumeTransformFeedback(void) {
9913    GLMessage glmsg;
9914    GLTraceContext *glContext = getGLTraceContext();
9915
9916    glmsg.set_function(GLMessage::glResumeTransformFeedback);
9917
9918    // call function
9919    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9920    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9921    glContext->hooks->gl.glResumeTransformFeedback();
9922    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9923    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9924
9925    void *pointerArgs[] = {
9926    };
9927
9928    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9929                              threadStartTime, threadEndTime,
9930                              &glmsg, pointerArgs);
9931    glContext->traceGLMessage(&glmsg);
9932}
9933
9934void GLTrace_glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei * length, GLenum * binaryFormat, void * binary) {
9935    GLMessage glmsg;
9936    GLTraceContext *glContext = getGLTraceContext();
9937
9938    glmsg.set_function(GLMessage::glGetProgramBinary);
9939
9940    // copy argument program
9941    GLMessage_DataType *arg_program = glmsg.add_args();
9942    arg_program->set_isarray(false);
9943    arg_program->set_type(GLMessage::DataType::INT);
9944    arg_program->add_intvalue(program);
9945
9946    // copy argument bufSize
9947    GLMessage_DataType *arg_bufSize = glmsg.add_args();
9948    arg_bufSize->set_isarray(false);
9949    arg_bufSize->set_type(GLMessage::DataType::INT);
9950    arg_bufSize->add_intvalue(bufSize);
9951
9952    // copy argument length
9953    GLMessage_DataType *arg_length = glmsg.add_args();
9954    arg_length->set_isarray(false);
9955    arg_length->set_type(GLMessage::DataType::INT64);
9956    arg_length->add_int64value((uintptr_t)length);
9957
9958    // copy argument binaryFormat
9959    GLMessage_DataType *arg_binaryFormat = glmsg.add_args();
9960    arg_binaryFormat->set_isarray(false);
9961    arg_binaryFormat->set_type(GLMessage::DataType::INT64);
9962    arg_binaryFormat->add_int64value((uintptr_t)binaryFormat);
9963
9964    // copy argument binary
9965    GLMessage_DataType *arg_binary = glmsg.add_args();
9966    arg_binary->set_isarray(false);
9967    arg_binary->set_type(GLMessage::DataType::INT64);
9968    arg_binary->add_int64value((uintptr_t)binary);
9969
9970    // call function
9971    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
9972    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9973    glContext->hooks->gl.glGetProgramBinary(program, bufSize, length, binaryFormat, binary);
9974    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
9975    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9976
9977    void *pointerArgs[] = {
9978        (void *) length,
9979        (void *) binaryFormat,
9980        (void *) binary,
9981    };
9982
9983    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9984                              threadStartTime, threadEndTime,
9985                              &glmsg, pointerArgs);
9986    glContext->traceGLMessage(&glmsg);
9987}
9988
9989void GLTrace_glProgramBinary(GLuint program, GLenum binaryFormat, const void * binary, GLsizei length) {
9990    GLMessage glmsg;
9991    GLTraceContext *glContext = getGLTraceContext();
9992
9993    glmsg.set_function(GLMessage::glProgramBinary);
9994
9995    // copy argument program
9996    GLMessage_DataType *arg_program = glmsg.add_args();
9997    arg_program->set_isarray(false);
9998    arg_program->set_type(GLMessage::DataType::INT);
9999    arg_program->add_intvalue(program);
10000
10001    // copy argument binaryFormat
10002    GLMessage_DataType *arg_binaryFormat = glmsg.add_args();
10003    arg_binaryFormat->set_isarray(false);
10004    arg_binaryFormat->set_type(GLMessage::DataType::ENUM);
10005    arg_binaryFormat->add_intvalue((int)binaryFormat);
10006
10007    // copy argument binary
10008    GLMessage_DataType *arg_binary = glmsg.add_args();
10009    arg_binary->set_isarray(false);
10010    arg_binary->set_type(GLMessage::DataType::INT64);
10011    arg_binary->add_int64value((uintptr_t)binary);
10012
10013    // copy argument length
10014    GLMessage_DataType *arg_length = glmsg.add_args();
10015    arg_length->set_isarray(false);
10016    arg_length->set_type(GLMessage::DataType::INT);
10017    arg_length->add_intvalue(length);
10018
10019    // call function
10020    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10021    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10022    glContext->hooks->gl.glProgramBinary(program, binaryFormat, binary, length);
10023    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10024    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10025
10026    void *pointerArgs[] = {
10027        (void *) binary,
10028    };
10029
10030    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10031                              threadStartTime, threadEndTime,
10032                              &glmsg, pointerArgs);
10033    glContext->traceGLMessage(&glmsg);
10034}
10035
10036void GLTrace_glProgramParameteri(GLuint program, GLenum pname, GLint value) {
10037    GLMessage glmsg;
10038    GLTraceContext *glContext = getGLTraceContext();
10039
10040    glmsg.set_function(GLMessage::glProgramParameteri);
10041
10042    // copy argument program
10043    GLMessage_DataType *arg_program = glmsg.add_args();
10044    arg_program->set_isarray(false);
10045    arg_program->set_type(GLMessage::DataType::INT);
10046    arg_program->add_intvalue(program);
10047
10048    // copy argument pname
10049    GLMessage_DataType *arg_pname = glmsg.add_args();
10050    arg_pname->set_isarray(false);
10051    arg_pname->set_type(GLMessage::DataType::ENUM);
10052    arg_pname->add_intvalue((int)pname);
10053
10054    // copy argument value
10055    GLMessage_DataType *arg_value = glmsg.add_args();
10056    arg_value->set_isarray(false);
10057    arg_value->set_type(GLMessage::DataType::INT);
10058    arg_value->add_intvalue(value);
10059
10060    // call function
10061    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10062    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10063    glContext->hooks->gl.glProgramParameteri(program, pname, value);
10064    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10065    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10066
10067    void *pointerArgs[] = {
10068    };
10069
10070    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10071                              threadStartTime, threadEndTime,
10072                              &glmsg, pointerArgs);
10073    glContext->traceGLMessage(&glmsg);
10074}
10075
10076void GLTrace_glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum * attachments) {
10077    GLMessage glmsg;
10078    GLTraceContext *glContext = getGLTraceContext();
10079
10080    glmsg.set_function(GLMessage::glInvalidateFramebuffer);
10081
10082    // copy argument target
10083    GLMessage_DataType *arg_target = glmsg.add_args();
10084    arg_target->set_isarray(false);
10085    arg_target->set_type(GLMessage::DataType::ENUM);
10086    arg_target->add_intvalue((int)target);
10087
10088    // copy argument numAttachments
10089    GLMessage_DataType *arg_numAttachments = glmsg.add_args();
10090    arg_numAttachments->set_isarray(false);
10091    arg_numAttachments->set_type(GLMessage::DataType::INT);
10092    arg_numAttachments->add_intvalue(numAttachments);
10093
10094    // copy argument attachments
10095    GLMessage_DataType *arg_attachments = glmsg.add_args();
10096    arg_attachments->set_isarray(false);
10097    arg_attachments->set_type(GLMessage::DataType::INT64);
10098    arg_attachments->add_int64value((uintptr_t)attachments);
10099
10100    // call function
10101    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10102    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10103    glContext->hooks->gl.glInvalidateFramebuffer(target, numAttachments, attachments);
10104    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10105    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10106
10107    void *pointerArgs[] = {
10108        (void *) attachments,
10109    };
10110
10111    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10112                              threadStartTime, threadEndTime,
10113                              &glmsg, pointerArgs);
10114    glContext->traceGLMessage(&glmsg);
10115}
10116
10117void GLTrace_glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height) {
10118    GLMessage glmsg;
10119    GLTraceContext *glContext = getGLTraceContext();
10120
10121    glmsg.set_function(GLMessage::glInvalidateSubFramebuffer);
10122
10123    // copy argument target
10124    GLMessage_DataType *arg_target = glmsg.add_args();
10125    arg_target->set_isarray(false);
10126    arg_target->set_type(GLMessage::DataType::ENUM);
10127    arg_target->add_intvalue((int)target);
10128
10129    // copy argument numAttachments
10130    GLMessage_DataType *arg_numAttachments = glmsg.add_args();
10131    arg_numAttachments->set_isarray(false);
10132    arg_numAttachments->set_type(GLMessage::DataType::INT);
10133    arg_numAttachments->add_intvalue(numAttachments);
10134
10135    // copy argument attachments
10136    GLMessage_DataType *arg_attachments = glmsg.add_args();
10137    arg_attachments->set_isarray(false);
10138    arg_attachments->set_type(GLMessage::DataType::INT64);
10139    arg_attachments->add_int64value((uintptr_t)attachments);
10140
10141    // copy argument x
10142    GLMessage_DataType *arg_x = glmsg.add_args();
10143    arg_x->set_isarray(false);
10144    arg_x->set_type(GLMessage::DataType::INT);
10145    arg_x->add_intvalue(x);
10146
10147    // copy argument y
10148    GLMessage_DataType *arg_y = glmsg.add_args();
10149    arg_y->set_isarray(false);
10150    arg_y->set_type(GLMessage::DataType::INT);
10151    arg_y->add_intvalue(y);
10152
10153    // copy argument width
10154    GLMessage_DataType *arg_width = glmsg.add_args();
10155    arg_width->set_isarray(false);
10156    arg_width->set_type(GLMessage::DataType::INT);
10157    arg_width->add_intvalue(width);
10158
10159    // copy argument height
10160    GLMessage_DataType *arg_height = glmsg.add_args();
10161    arg_height->set_isarray(false);
10162    arg_height->set_type(GLMessage::DataType::INT);
10163    arg_height->add_intvalue(height);
10164
10165    // call function
10166    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10167    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10168    glContext->hooks->gl.glInvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height);
10169    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10170    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10171
10172    void *pointerArgs[] = {
10173        (void *) attachments,
10174    };
10175
10176    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10177                              threadStartTime, threadEndTime,
10178                              &glmsg, pointerArgs);
10179    glContext->traceGLMessage(&glmsg);
10180}
10181
10182void GLTrace_glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) {
10183    GLMessage glmsg;
10184    GLTraceContext *glContext = getGLTraceContext();
10185
10186    glmsg.set_function(GLMessage::glTexStorage2D);
10187
10188    // copy argument target
10189    GLMessage_DataType *arg_target = glmsg.add_args();
10190    arg_target->set_isarray(false);
10191    arg_target->set_type(GLMessage::DataType::ENUM);
10192    arg_target->add_intvalue((int)target);
10193
10194    // copy argument levels
10195    GLMessage_DataType *arg_levels = glmsg.add_args();
10196    arg_levels->set_isarray(false);
10197    arg_levels->set_type(GLMessage::DataType::INT);
10198    arg_levels->add_intvalue(levels);
10199
10200    // copy argument internalformat
10201    GLMessage_DataType *arg_internalformat = glmsg.add_args();
10202    arg_internalformat->set_isarray(false);
10203    arg_internalformat->set_type(GLMessage::DataType::ENUM);
10204    arg_internalformat->add_intvalue((int)internalformat);
10205
10206    // copy argument width
10207    GLMessage_DataType *arg_width = glmsg.add_args();
10208    arg_width->set_isarray(false);
10209    arg_width->set_type(GLMessage::DataType::INT);
10210    arg_width->add_intvalue(width);
10211
10212    // copy argument height
10213    GLMessage_DataType *arg_height = glmsg.add_args();
10214    arg_height->set_isarray(false);
10215    arg_height->set_type(GLMessage::DataType::INT);
10216    arg_height->add_intvalue(height);
10217
10218    // call function
10219    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10220    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10221    glContext->hooks->gl.glTexStorage2D(target, levels, internalformat, width, height);
10222    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10223    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10224
10225    void *pointerArgs[] = {
10226    };
10227
10228    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10229                              threadStartTime, threadEndTime,
10230                              &glmsg, pointerArgs);
10231    glContext->traceGLMessage(&glmsg);
10232}
10233
10234void GLTrace_glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) {
10235    GLMessage glmsg;
10236    GLTraceContext *glContext = getGLTraceContext();
10237
10238    glmsg.set_function(GLMessage::glTexStorage3D);
10239
10240    // copy argument target
10241    GLMessage_DataType *arg_target = glmsg.add_args();
10242    arg_target->set_isarray(false);
10243    arg_target->set_type(GLMessage::DataType::ENUM);
10244    arg_target->add_intvalue((int)target);
10245
10246    // copy argument levels
10247    GLMessage_DataType *arg_levels = glmsg.add_args();
10248    arg_levels->set_isarray(false);
10249    arg_levels->set_type(GLMessage::DataType::INT);
10250    arg_levels->add_intvalue(levels);
10251
10252    // copy argument internalformat
10253    GLMessage_DataType *arg_internalformat = glmsg.add_args();
10254    arg_internalformat->set_isarray(false);
10255    arg_internalformat->set_type(GLMessage::DataType::ENUM);
10256    arg_internalformat->add_intvalue((int)internalformat);
10257
10258    // copy argument width
10259    GLMessage_DataType *arg_width = glmsg.add_args();
10260    arg_width->set_isarray(false);
10261    arg_width->set_type(GLMessage::DataType::INT);
10262    arg_width->add_intvalue(width);
10263
10264    // copy argument height
10265    GLMessage_DataType *arg_height = glmsg.add_args();
10266    arg_height->set_isarray(false);
10267    arg_height->set_type(GLMessage::DataType::INT);
10268    arg_height->add_intvalue(height);
10269
10270    // copy argument depth
10271    GLMessage_DataType *arg_depth = glmsg.add_args();
10272    arg_depth->set_isarray(false);
10273    arg_depth->set_type(GLMessage::DataType::INT);
10274    arg_depth->add_intvalue(depth);
10275
10276    // call function
10277    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10278    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10279    glContext->hooks->gl.glTexStorage3D(target, levels, internalformat, width, height, depth);
10280    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10281    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10282
10283    void *pointerArgs[] = {
10284    };
10285
10286    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10287                              threadStartTime, threadEndTime,
10288                              &glmsg, pointerArgs);
10289    glContext->traceGLMessage(&glmsg);
10290}
10291
10292void GLTrace_glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint * params) {
10293    GLMessage glmsg;
10294    GLTraceContext *glContext = getGLTraceContext();
10295
10296    glmsg.set_function(GLMessage::glGetInternalformativ);
10297
10298    // copy argument target
10299    GLMessage_DataType *arg_target = glmsg.add_args();
10300    arg_target->set_isarray(false);
10301    arg_target->set_type(GLMessage::DataType::ENUM);
10302    arg_target->add_intvalue((int)target);
10303
10304    // copy argument internalformat
10305    GLMessage_DataType *arg_internalformat = glmsg.add_args();
10306    arg_internalformat->set_isarray(false);
10307    arg_internalformat->set_type(GLMessage::DataType::ENUM);
10308    arg_internalformat->add_intvalue((int)internalformat);
10309
10310    // copy argument pname
10311    GLMessage_DataType *arg_pname = glmsg.add_args();
10312    arg_pname->set_isarray(false);
10313    arg_pname->set_type(GLMessage::DataType::ENUM);
10314    arg_pname->add_intvalue((int)pname);
10315
10316    // copy argument bufSize
10317    GLMessage_DataType *arg_bufSize = glmsg.add_args();
10318    arg_bufSize->set_isarray(false);
10319    arg_bufSize->set_type(GLMessage::DataType::INT);
10320    arg_bufSize->add_intvalue(bufSize);
10321
10322    // copy argument params
10323    GLMessage_DataType *arg_params = glmsg.add_args();
10324    arg_params->set_isarray(false);
10325    arg_params->set_type(GLMessage::DataType::INT64);
10326    arg_params->add_int64value((uintptr_t)params);
10327
10328    // call function
10329    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10330    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10331    glContext->hooks->gl.glGetInternalformativ(target, internalformat, pname, bufSize, params);
10332    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10333    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10334
10335    void *pointerArgs[] = {
10336        (void *) params,
10337    };
10338
10339    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10340                              threadStartTime, threadEndTime,
10341                              &glmsg, pointerArgs);
10342    glContext->traceGLMessage(&glmsg);
10343}
10344
10345void GLTrace_glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z) {
10346    GLMessage glmsg;
10347    GLTraceContext *glContext = getGLTraceContext();
10348
10349    glmsg.set_function(GLMessage::glDispatchCompute);
10350
10351    // copy argument num_groups_x
10352    GLMessage_DataType *arg_num_groups_x = glmsg.add_args();
10353    arg_num_groups_x->set_isarray(false);
10354    arg_num_groups_x->set_type(GLMessage::DataType::INT);
10355    arg_num_groups_x->add_intvalue(num_groups_x);
10356
10357    // copy argument num_groups_y
10358    GLMessage_DataType *arg_num_groups_y = glmsg.add_args();
10359    arg_num_groups_y->set_isarray(false);
10360    arg_num_groups_y->set_type(GLMessage::DataType::INT);
10361    arg_num_groups_y->add_intvalue(num_groups_y);
10362
10363    // copy argument num_groups_z
10364    GLMessage_DataType *arg_num_groups_z = glmsg.add_args();
10365    arg_num_groups_z->set_isarray(false);
10366    arg_num_groups_z->set_type(GLMessage::DataType::INT);
10367    arg_num_groups_z->add_intvalue(num_groups_z);
10368
10369    // call function
10370    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10371    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10372    glContext->hooks->gl.glDispatchCompute(num_groups_x, num_groups_y, num_groups_z);
10373    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10374    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10375
10376    void *pointerArgs[] = {
10377    };
10378
10379    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10380                              threadStartTime, threadEndTime,
10381                              &glmsg, pointerArgs);
10382    glContext->traceGLMessage(&glmsg);
10383}
10384
10385void GLTrace_glDispatchComputeIndirect(GLintptr indirect) {
10386    GLMessage glmsg;
10387    GLTraceContext *glContext = getGLTraceContext();
10388
10389    glmsg.set_function(GLMessage::glDispatchComputeIndirect);
10390
10391    // copy argument indirect
10392    GLMessage_DataType *arg_indirect = glmsg.add_args();
10393    arg_indirect->set_isarray(false);
10394    arg_indirect->set_type(GLMessage::DataType::INT);
10395    arg_indirect->add_intvalue(indirect);
10396
10397    // call function
10398    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10399    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10400    glContext->hooks->gl.glDispatchComputeIndirect(indirect);
10401    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10402    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10403
10404    void *pointerArgs[] = {
10405    };
10406
10407    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10408                              threadStartTime, threadEndTime,
10409                              &glmsg, pointerArgs);
10410    glContext->traceGLMessage(&glmsg);
10411}
10412
10413void GLTrace_glDrawArraysIndirect(GLenum mode, const void * indirect) {
10414    GLMessage glmsg;
10415    GLTraceContext *glContext = getGLTraceContext();
10416
10417    glmsg.set_function(GLMessage::glDrawArraysIndirect);
10418
10419    // copy argument mode
10420    GLMessage_DataType *arg_mode = glmsg.add_args();
10421    arg_mode->set_isarray(false);
10422    arg_mode->set_type(GLMessage::DataType::ENUM);
10423    arg_mode->add_intvalue((int)mode);
10424
10425    // copy argument indirect
10426    GLMessage_DataType *arg_indirect = glmsg.add_args();
10427    arg_indirect->set_isarray(false);
10428    arg_indirect->set_type(GLMessage::DataType::INT64);
10429    arg_indirect->add_int64value((uintptr_t)indirect);
10430
10431    // call function
10432    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10433    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10434    glContext->hooks->gl.glDrawArraysIndirect(mode, indirect);
10435    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10436    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10437
10438    void *pointerArgs[] = {
10439        (void *) indirect,
10440    };
10441
10442    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10443                              threadStartTime, threadEndTime,
10444                              &glmsg, pointerArgs);
10445    glContext->traceGLMessage(&glmsg);
10446}
10447
10448void GLTrace_glDrawElementsIndirect(GLenum mode, GLenum type, const void * indirect) {
10449    GLMessage glmsg;
10450    GLTraceContext *glContext = getGLTraceContext();
10451
10452    glmsg.set_function(GLMessage::glDrawElementsIndirect);
10453
10454    // copy argument mode
10455    GLMessage_DataType *arg_mode = glmsg.add_args();
10456    arg_mode->set_isarray(false);
10457    arg_mode->set_type(GLMessage::DataType::ENUM);
10458    arg_mode->add_intvalue((int)mode);
10459
10460    // copy argument type
10461    GLMessage_DataType *arg_type = glmsg.add_args();
10462    arg_type->set_isarray(false);
10463    arg_type->set_type(GLMessage::DataType::ENUM);
10464    arg_type->add_intvalue((int)type);
10465
10466    // copy argument indirect
10467    GLMessage_DataType *arg_indirect = glmsg.add_args();
10468    arg_indirect->set_isarray(false);
10469    arg_indirect->set_type(GLMessage::DataType::INT64);
10470    arg_indirect->add_int64value((uintptr_t)indirect);
10471
10472    // call function
10473    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10474    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10475    glContext->hooks->gl.glDrawElementsIndirect(mode, type, indirect);
10476    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10477    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10478
10479    void *pointerArgs[] = {
10480        (void *) indirect,
10481    };
10482
10483    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10484                              threadStartTime, threadEndTime,
10485                              &glmsg, pointerArgs);
10486    glContext->traceGLMessage(&glmsg);
10487}
10488
10489void GLTrace_glFramebufferParameteri(GLenum target, GLenum pname, GLint param) {
10490    GLMessage glmsg;
10491    GLTraceContext *glContext = getGLTraceContext();
10492
10493    glmsg.set_function(GLMessage::glFramebufferParameteri);
10494
10495    // copy argument target
10496    GLMessage_DataType *arg_target = glmsg.add_args();
10497    arg_target->set_isarray(false);
10498    arg_target->set_type(GLMessage::DataType::ENUM);
10499    arg_target->add_intvalue((int)target);
10500
10501    // copy argument pname
10502    GLMessage_DataType *arg_pname = glmsg.add_args();
10503    arg_pname->set_isarray(false);
10504    arg_pname->set_type(GLMessage::DataType::ENUM);
10505    arg_pname->add_intvalue((int)pname);
10506
10507    // copy argument param
10508    GLMessage_DataType *arg_param = glmsg.add_args();
10509    arg_param->set_isarray(false);
10510    arg_param->set_type(GLMessage::DataType::INT);
10511    arg_param->add_intvalue(param);
10512
10513    // call function
10514    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10515    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10516    glContext->hooks->gl.glFramebufferParameteri(target, pname, param);
10517    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10518    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10519
10520    void *pointerArgs[] = {
10521    };
10522
10523    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10524                              threadStartTime, threadEndTime,
10525                              &glmsg, pointerArgs);
10526    glContext->traceGLMessage(&glmsg);
10527}
10528
10529void GLTrace_glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint * params) {
10530    GLMessage glmsg;
10531    GLTraceContext *glContext = getGLTraceContext();
10532
10533    glmsg.set_function(GLMessage::glGetFramebufferParameteriv);
10534
10535    // copy argument target
10536    GLMessage_DataType *arg_target = glmsg.add_args();
10537    arg_target->set_isarray(false);
10538    arg_target->set_type(GLMessage::DataType::ENUM);
10539    arg_target->add_intvalue((int)target);
10540
10541    // copy argument pname
10542    GLMessage_DataType *arg_pname = glmsg.add_args();
10543    arg_pname->set_isarray(false);
10544    arg_pname->set_type(GLMessage::DataType::ENUM);
10545    arg_pname->add_intvalue((int)pname);
10546
10547    // copy argument params
10548    GLMessage_DataType *arg_params = glmsg.add_args();
10549    arg_params->set_isarray(false);
10550    arg_params->set_type(GLMessage::DataType::INT64);
10551    arg_params->add_int64value((uintptr_t)params);
10552
10553    // call function
10554    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10555    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10556    glContext->hooks->gl.glGetFramebufferParameteriv(target, pname, params);
10557    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10558    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10559
10560    void *pointerArgs[] = {
10561        (void *) params,
10562    };
10563
10564    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10565                              threadStartTime, threadEndTime,
10566                              &glmsg, pointerArgs);
10567    glContext->traceGLMessage(&glmsg);
10568}
10569
10570void GLTrace_glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint * params) {
10571    GLMessage glmsg;
10572    GLTraceContext *glContext = getGLTraceContext();
10573
10574    glmsg.set_function(GLMessage::glGetProgramInterfaceiv);
10575
10576    // copy argument program
10577    GLMessage_DataType *arg_program = glmsg.add_args();
10578    arg_program->set_isarray(false);
10579    arg_program->set_type(GLMessage::DataType::INT);
10580    arg_program->add_intvalue(program);
10581
10582    // copy argument programInterface
10583    GLMessage_DataType *arg_programInterface = glmsg.add_args();
10584    arg_programInterface->set_isarray(false);
10585    arg_programInterface->set_type(GLMessage::DataType::ENUM);
10586    arg_programInterface->add_intvalue((int)programInterface);
10587
10588    // copy argument pname
10589    GLMessage_DataType *arg_pname = glmsg.add_args();
10590    arg_pname->set_isarray(false);
10591    arg_pname->set_type(GLMessage::DataType::ENUM);
10592    arg_pname->add_intvalue((int)pname);
10593
10594    // copy argument params
10595    GLMessage_DataType *arg_params = glmsg.add_args();
10596    arg_params->set_isarray(false);
10597    arg_params->set_type(GLMessage::DataType::INT64);
10598    arg_params->add_int64value((uintptr_t)params);
10599
10600    // call function
10601    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10602    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10603    glContext->hooks->gl.glGetProgramInterfaceiv(program, programInterface, pname, params);
10604    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10605    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10606
10607    void *pointerArgs[] = {
10608        (void *) params,
10609    };
10610
10611    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10612                              threadStartTime, threadEndTime,
10613                              &glmsg, pointerArgs);
10614    glContext->traceGLMessage(&glmsg);
10615}
10616
10617GLuint GLTrace_glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar * name) {
10618    GLMessage glmsg;
10619    GLTraceContext *glContext = getGLTraceContext();
10620
10621    glmsg.set_function(GLMessage::glGetProgramResourceIndex);
10622
10623    // copy argument program
10624    GLMessage_DataType *arg_program = glmsg.add_args();
10625    arg_program->set_isarray(false);
10626    arg_program->set_type(GLMessage::DataType::INT);
10627    arg_program->add_intvalue(program);
10628
10629    // copy argument programInterface
10630    GLMessage_DataType *arg_programInterface = glmsg.add_args();
10631    arg_programInterface->set_isarray(false);
10632    arg_programInterface->set_type(GLMessage::DataType::ENUM);
10633    arg_programInterface->add_intvalue((int)programInterface);
10634
10635    // copy argument name
10636    GLMessage_DataType *arg_name = glmsg.add_args();
10637    arg_name->set_isarray(false);
10638    arg_name->set_type(GLMessage::DataType::INT64);
10639    arg_name->add_int64value((uintptr_t)name);
10640
10641    // call function
10642    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10643    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10644    GLuint retValue = glContext->hooks->gl.glGetProgramResourceIndex(program, programInterface, name);
10645    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10646    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10647
10648    // set return value
10649    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
10650    rt->set_isarray(false);
10651    rt->set_type(GLMessage::DataType::INT);
10652    rt->add_intvalue(retValue);
10653
10654    void *pointerArgs[] = {
10655        (void *) name,
10656    };
10657
10658    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10659                              threadStartTime, threadEndTime,
10660                              &glmsg, pointerArgs);
10661    glContext->traceGLMessage(&glmsg);
10662
10663    return retValue;
10664}
10665
10666void GLTrace_glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei * length, GLchar * name) {
10667    GLMessage glmsg;
10668    GLTraceContext *glContext = getGLTraceContext();
10669
10670    glmsg.set_function(GLMessage::glGetProgramResourceName);
10671
10672    // copy argument program
10673    GLMessage_DataType *arg_program = glmsg.add_args();
10674    arg_program->set_isarray(false);
10675    arg_program->set_type(GLMessage::DataType::INT);
10676    arg_program->add_intvalue(program);
10677
10678    // copy argument programInterface
10679    GLMessage_DataType *arg_programInterface = glmsg.add_args();
10680    arg_programInterface->set_isarray(false);
10681    arg_programInterface->set_type(GLMessage::DataType::ENUM);
10682    arg_programInterface->add_intvalue((int)programInterface);
10683
10684    // copy argument index
10685    GLMessage_DataType *arg_index = glmsg.add_args();
10686    arg_index->set_isarray(false);
10687    arg_index->set_type(GLMessage::DataType::INT);
10688    arg_index->add_intvalue(index);
10689
10690    // copy argument bufSize
10691    GLMessage_DataType *arg_bufSize = glmsg.add_args();
10692    arg_bufSize->set_isarray(false);
10693    arg_bufSize->set_type(GLMessage::DataType::INT);
10694    arg_bufSize->add_intvalue(bufSize);
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::INT64);
10700    arg_length->add_int64value((uintptr_t)length);
10701
10702    // copy argument name
10703    GLMessage_DataType *arg_name = glmsg.add_args();
10704    arg_name->set_isarray(false);
10705    arg_name->set_type(GLMessage::DataType::INT64);
10706    arg_name->add_int64value((uintptr_t)name);
10707
10708    // call function
10709    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10710    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10711    glContext->hooks->gl.glGetProgramResourceName(program, programInterface, index, bufSize, length, name);
10712    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10713    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10714
10715    void *pointerArgs[] = {
10716        (void *) length,
10717        (void *) name,
10718    };
10719
10720    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10721                              threadStartTime, threadEndTime,
10722                              &glmsg, pointerArgs);
10723    glContext->traceGLMessage(&glmsg);
10724}
10725
10726void GLTrace_glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum * props, GLsizei bufSize, GLsizei * length, GLint * params) {
10727    GLMessage glmsg;
10728    GLTraceContext *glContext = getGLTraceContext();
10729
10730    glmsg.set_function(GLMessage::glGetProgramResourceiv);
10731
10732    // copy argument program
10733    GLMessage_DataType *arg_program = glmsg.add_args();
10734    arg_program->set_isarray(false);
10735    arg_program->set_type(GLMessage::DataType::INT);
10736    arg_program->add_intvalue(program);
10737
10738    // copy argument programInterface
10739    GLMessage_DataType *arg_programInterface = glmsg.add_args();
10740    arg_programInterface->set_isarray(false);
10741    arg_programInterface->set_type(GLMessage::DataType::ENUM);
10742    arg_programInterface->add_intvalue((int)programInterface);
10743
10744    // copy argument index
10745    GLMessage_DataType *arg_index = glmsg.add_args();
10746    arg_index->set_isarray(false);
10747    arg_index->set_type(GLMessage::DataType::INT);
10748    arg_index->add_intvalue(index);
10749
10750    // copy argument propCount
10751    GLMessage_DataType *arg_propCount = glmsg.add_args();
10752    arg_propCount->set_isarray(false);
10753    arg_propCount->set_type(GLMessage::DataType::INT);
10754    arg_propCount->add_intvalue(propCount);
10755
10756    // copy argument props
10757    GLMessage_DataType *arg_props = glmsg.add_args();
10758    arg_props->set_isarray(false);
10759    arg_props->set_type(GLMessage::DataType::INT64);
10760    arg_props->add_int64value((uintptr_t)props);
10761
10762    // copy argument bufSize
10763    GLMessage_DataType *arg_bufSize = glmsg.add_args();
10764    arg_bufSize->set_isarray(false);
10765    arg_bufSize->set_type(GLMessage::DataType::INT);
10766    arg_bufSize->add_intvalue(bufSize);
10767
10768    // copy argument length
10769    GLMessage_DataType *arg_length = glmsg.add_args();
10770    arg_length->set_isarray(false);
10771    arg_length->set_type(GLMessage::DataType::INT64);
10772    arg_length->add_int64value((uintptr_t)length);
10773
10774    // copy argument params
10775    GLMessage_DataType *arg_params = glmsg.add_args();
10776    arg_params->set_isarray(false);
10777    arg_params->set_type(GLMessage::DataType::INT64);
10778    arg_params->add_int64value((uintptr_t)params);
10779
10780    // call function
10781    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10782    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10783    glContext->hooks->gl.glGetProgramResourceiv(program, programInterface, index, propCount, props, bufSize, length, params);
10784    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10785    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10786
10787    void *pointerArgs[] = {
10788        (void *) props,
10789        (void *) length,
10790        (void *) params,
10791    };
10792
10793    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10794                              threadStartTime, threadEndTime,
10795                              &glmsg, pointerArgs);
10796    glContext->traceGLMessage(&glmsg);
10797}
10798
10799GLint GLTrace_glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar * name) {
10800    GLMessage glmsg;
10801    GLTraceContext *glContext = getGLTraceContext();
10802
10803    glmsg.set_function(GLMessage::glGetProgramResourceLocation);
10804
10805    // copy argument program
10806    GLMessage_DataType *arg_program = glmsg.add_args();
10807    arg_program->set_isarray(false);
10808    arg_program->set_type(GLMessage::DataType::INT);
10809    arg_program->add_intvalue(program);
10810
10811    // copy argument programInterface
10812    GLMessage_DataType *arg_programInterface = glmsg.add_args();
10813    arg_programInterface->set_isarray(false);
10814    arg_programInterface->set_type(GLMessage::DataType::ENUM);
10815    arg_programInterface->add_intvalue((int)programInterface);
10816
10817    // copy argument name
10818    GLMessage_DataType *arg_name = glmsg.add_args();
10819    arg_name->set_isarray(false);
10820    arg_name->set_type(GLMessage::DataType::INT64);
10821    arg_name->add_int64value((uintptr_t)name);
10822
10823    // call function
10824    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10825    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10826    GLint retValue = glContext->hooks->gl.glGetProgramResourceLocation(program, programInterface, name);
10827    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10828    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10829
10830    // set return value
10831    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
10832    rt->set_isarray(false);
10833    rt->set_type(GLMessage::DataType::INT);
10834    rt->add_intvalue(retValue);
10835
10836    void *pointerArgs[] = {
10837        (void *) name,
10838    };
10839
10840    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10841                              threadStartTime, threadEndTime,
10842                              &glmsg, pointerArgs);
10843    glContext->traceGLMessage(&glmsg);
10844
10845    return retValue;
10846}
10847
10848void GLTrace_glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) {
10849    GLMessage glmsg;
10850    GLTraceContext *glContext = getGLTraceContext();
10851
10852    glmsg.set_function(GLMessage::glUseProgramStages);
10853
10854    // copy argument pipeline
10855    GLMessage_DataType *arg_pipeline = glmsg.add_args();
10856    arg_pipeline->set_isarray(false);
10857    arg_pipeline->set_type(GLMessage::DataType::INT);
10858    arg_pipeline->add_intvalue(pipeline);
10859
10860    // copy argument stages
10861    GLMessage_DataType *arg_stages = glmsg.add_args();
10862    arg_stages->set_isarray(false);
10863    arg_stages->set_type(GLMessage::DataType::INT);
10864    arg_stages->add_intvalue(stages);
10865
10866    // copy argument program
10867    GLMessage_DataType *arg_program = glmsg.add_args();
10868    arg_program->set_isarray(false);
10869    arg_program->set_type(GLMessage::DataType::INT);
10870    arg_program->add_intvalue(program);
10871
10872    // call function
10873    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10874    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10875    glContext->hooks->gl.glUseProgramStages(pipeline, stages, program);
10876    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10877    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10878
10879    void *pointerArgs[] = {
10880    };
10881
10882    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10883                              threadStartTime, threadEndTime,
10884                              &glmsg, pointerArgs);
10885    glContext->traceGLMessage(&glmsg);
10886}
10887
10888void GLTrace_glActiveShaderProgram(GLuint pipeline, GLuint program) {
10889    GLMessage glmsg;
10890    GLTraceContext *glContext = getGLTraceContext();
10891
10892    glmsg.set_function(GLMessage::glActiveShaderProgram);
10893
10894    // copy argument pipeline
10895    GLMessage_DataType *arg_pipeline = glmsg.add_args();
10896    arg_pipeline->set_isarray(false);
10897    arg_pipeline->set_type(GLMessage::DataType::INT);
10898    arg_pipeline->add_intvalue(pipeline);
10899
10900    // copy argument program
10901    GLMessage_DataType *arg_program = glmsg.add_args();
10902    arg_program->set_isarray(false);
10903    arg_program->set_type(GLMessage::DataType::INT);
10904    arg_program->add_intvalue(program);
10905
10906    // call function
10907    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10908    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10909    glContext->hooks->gl.glActiveShaderProgram(pipeline, program);
10910    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10911    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10912
10913    void *pointerArgs[] = {
10914    };
10915
10916    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10917                              threadStartTime, threadEndTime,
10918                              &glmsg, pointerArgs);
10919    glContext->traceGLMessage(&glmsg);
10920}
10921
10922GLuint GLTrace_glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar *const* strings) {
10923    GLMessage glmsg;
10924    GLTraceContext *glContext = getGLTraceContext();
10925
10926    glmsg.set_function(GLMessage::glCreateShaderProgramv);
10927
10928    // copy argument type
10929    GLMessage_DataType *arg_type = glmsg.add_args();
10930    arg_type->set_isarray(false);
10931    arg_type->set_type(GLMessage::DataType::ENUM);
10932    arg_type->add_intvalue((int)type);
10933
10934    // copy argument count
10935    GLMessage_DataType *arg_count = glmsg.add_args();
10936    arg_count->set_isarray(false);
10937    arg_count->set_type(GLMessage::DataType::INT);
10938    arg_count->add_intvalue(count);
10939
10940    // copy argument strings
10941    GLMessage_DataType *arg_strings = glmsg.add_args();
10942    arg_strings->set_isarray(false);
10943    arg_strings->set_type(GLMessage::DataType::INT64);
10944    arg_strings->add_int64value((uintptr_t)strings);
10945
10946    // call function
10947    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10948    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10949    GLuint retValue = glContext->hooks->gl.glCreateShaderProgramv(type, count, strings);
10950    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10951    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10952
10953    // set return value
10954    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
10955    rt->set_isarray(false);
10956    rt->set_type(GLMessage::DataType::INT);
10957    rt->add_intvalue(retValue);
10958
10959    void *pointerArgs[] = {
10960        (void *) strings,
10961    };
10962
10963    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10964                              threadStartTime, threadEndTime,
10965                              &glmsg, pointerArgs);
10966    glContext->traceGLMessage(&glmsg);
10967
10968    return retValue;
10969}
10970
10971void GLTrace_glBindProgramPipeline(GLuint pipeline) {
10972    GLMessage glmsg;
10973    GLTraceContext *glContext = getGLTraceContext();
10974
10975    glmsg.set_function(GLMessage::glBindProgramPipeline);
10976
10977    // copy argument pipeline
10978    GLMessage_DataType *arg_pipeline = glmsg.add_args();
10979    arg_pipeline->set_isarray(false);
10980    arg_pipeline->set_type(GLMessage::DataType::INT);
10981    arg_pipeline->add_intvalue(pipeline);
10982
10983    // call function
10984    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
10985    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10986    glContext->hooks->gl.glBindProgramPipeline(pipeline);
10987    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
10988    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10989
10990    void *pointerArgs[] = {
10991    };
10992
10993    fixupGLMessage(glContext, wallStartTime, wallEndTime,
10994                              threadStartTime, threadEndTime,
10995                              &glmsg, pointerArgs);
10996    glContext->traceGLMessage(&glmsg);
10997}
10998
10999void GLTrace_glDeleteProgramPipelines(GLsizei n, const GLuint * pipelines) {
11000    GLMessage glmsg;
11001    GLTraceContext *glContext = getGLTraceContext();
11002
11003    glmsg.set_function(GLMessage::glDeleteProgramPipelines);
11004
11005    // copy argument n
11006    GLMessage_DataType *arg_n = glmsg.add_args();
11007    arg_n->set_isarray(false);
11008    arg_n->set_type(GLMessage::DataType::INT);
11009    arg_n->add_intvalue(n);
11010
11011    // copy argument pipelines
11012    GLMessage_DataType *arg_pipelines = glmsg.add_args();
11013    arg_pipelines->set_isarray(false);
11014    arg_pipelines->set_type(GLMessage::DataType::INT64);
11015    arg_pipelines->add_int64value((uintptr_t)pipelines);
11016
11017    // call function
11018    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11019    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11020    glContext->hooks->gl.glDeleteProgramPipelines(n, pipelines);
11021    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11022    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11023
11024    void *pointerArgs[] = {
11025        (void *) pipelines,
11026    };
11027
11028    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11029                              threadStartTime, threadEndTime,
11030                              &glmsg, pointerArgs);
11031    glContext->traceGLMessage(&glmsg);
11032}
11033
11034void GLTrace_glGenProgramPipelines(GLsizei n, GLuint * pipelines) {
11035    GLMessage glmsg;
11036    GLTraceContext *glContext = getGLTraceContext();
11037
11038    glmsg.set_function(GLMessage::glGenProgramPipelines);
11039
11040    // copy argument n
11041    GLMessage_DataType *arg_n = glmsg.add_args();
11042    arg_n->set_isarray(false);
11043    arg_n->set_type(GLMessage::DataType::INT);
11044    arg_n->add_intvalue(n);
11045
11046    // copy argument pipelines
11047    GLMessage_DataType *arg_pipelines = glmsg.add_args();
11048    arg_pipelines->set_isarray(false);
11049    arg_pipelines->set_type(GLMessage::DataType::INT64);
11050    arg_pipelines->add_int64value((uintptr_t)pipelines);
11051
11052    // call function
11053    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11054    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11055    glContext->hooks->gl.glGenProgramPipelines(n, pipelines);
11056    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11057    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11058
11059    void *pointerArgs[] = {
11060        (void *) pipelines,
11061    };
11062
11063    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11064                              threadStartTime, threadEndTime,
11065                              &glmsg, pointerArgs);
11066    glContext->traceGLMessage(&glmsg);
11067}
11068
11069GLboolean GLTrace_glIsProgramPipeline(GLuint pipeline) {
11070    GLMessage glmsg;
11071    GLTraceContext *glContext = getGLTraceContext();
11072
11073    glmsg.set_function(GLMessage::glIsProgramPipeline);
11074
11075    // copy argument pipeline
11076    GLMessage_DataType *arg_pipeline = glmsg.add_args();
11077    arg_pipeline->set_isarray(false);
11078    arg_pipeline->set_type(GLMessage::DataType::INT);
11079    arg_pipeline->add_intvalue(pipeline);
11080
11081    // call function
11082    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11083    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11084    GLboolean retValue = glContext->hooks->gl.glIsProgramPipeline(pipeline);
11085    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11086    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11087
11088    // set return value
11089    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
11090    rt->set_isarray(false);
11091    rt->set_type(GLMessage::DataType::BOOL);
11092    rt->add_boolvalue(retValue);
11093
11094    void *pointerArgs[] = {
11095    };
11096
11097    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11098                              threadStartTime, threadEndTime,
11099                              &glmsg, pointerArgs);
11100    glContext->traceGLMessage(&glmsg);
11101
11102    return retValue;
11103}
11104
11105void GLTrace_glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint * params) {
11106    GLMessage glmsg;
11107    GLTraceContext *glContext = getGLTraceContext();
11108
11109    glmsg.set_function(GLMessage::glGetProgramPipelineiv);
11110
11111    // copy argument pipeline
11112    GLMessage_DataType *arg_pipeline = glmsg.add_args();
11113    arg_pipeline->set_isarray(false);
11114    arg_pipeline->set_type(GLMessage::DataType::INT);
11115    arg_pipeline->add_intvalue(pipeline);
11116
11117    // copy argument pname
11118    GLMessage_DataType *arg_pname = glmsg.add_args();
11119    arg_pname->set_isarray(false);
11120    arg_pname->set_type(GLMessage::DataType::ENUM);
11121    arg_pname->add_intvalue((int)pname);
11122
11123    // copy argument params
11124    GLMessage_DataType *arg_params = glmsg.add_args();
11125    arg_params->set_isarray(false);
11126    arg_params->set_type(GLMessage::DataType::INT64);
11127    arg_params->add_int64value((uintptr_t)params);
11128
11129    // call function
11130    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11131    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11132    glContext->hooks->gl.glGetProgramPipelineiv(pipeline, pname, params);
11133    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11134    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11135
11136    void *pointerArgs[] = {
11137        (void *) params,
11138    };
11139
11140    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11141                              threadStartTime, threadEndTime,
11142                              &glmsg, pointerArgs);
11143    glContext->traceGLMessage(&glmsg);
11144}
11145
11146void GLTrace_glProgramUniform1i(GLuint program, GLint location, GLint v0) {
11147    GLMessage glmsg;
11148    GLTraceContext *glContext = getGLTraceContext();
11149
11150    glmsg.set_function(GLMessage::glProgramUniform1i);
11151
11152    // copy argument program
11153    GLMessage_DataType *arg_program = glmsg.add_args();
11154    arg_program->set_isarray(false);
11155    arg_program->set_type(GLMessage::DataType::INT);
11156    arg_program->add_intvalue(program);
11157
11158    // copy argument location
11159    GLMessage_DataType *arg_location = glmsg.add_args();
11160    arg_location->set_isarray(false);
11161    arg_location->set_type(GLMessage::DataType::INT);
11162    arg_location->add_intvalue(location);
11163
11164    // copy argument v0
11165    GLMessage_DataType *arg_v0 = glmsg.add_args();
11166    arg_v0->set_isarray(false);
11167    arg_v0->set_type(GLMessage::DataType::INT);
11168    arg_v0->add_intvalue(v0);
11169
11170    // call function
11171    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11172    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11173    glContext->hooks->gl.glProgramUniform1i(program, location, v0);
11174    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11175    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11176
11177    void *pointerArgs[] = {
11178    };
11179
11180    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11181                              threadStartTime, threadEndTime,
11182                              &glmsg, pointerArgs);
11183    glContext->traceGLMessage(&glmsg);
11184}
11185
11186void GLTrace_glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) {
11187    GLMessage glmsg;
11188    GLTraceContext *glContext = getGLTraceContext();
11189
11190    glmsg.set_function(GLMessage::glProgramUniform2i);
11191
11192    // copy argument program
11193    GLMessage_DataType *arg_program = glmsg.add_args();
11194    arg_program->set_isarray(false);
11195    arg_program->set_type(GLMessage::DataType::INT);
11196    arg_program->add_intvalue(program);
11197
11198    // copy argument location
11199    GLMessage_DataType *arg_location = glmsg.add_args();
11200    arg_location->set_isarray(false);
11201    arg_location->set_type(GLMessage::DataType::INT);
11202    arg_location->add_intvalue(location);
11203
11204    // copy argument v0
11205    GLMessage_DataType *arg_v0 = glmsg.add_args();
11206    arg_v0->set_isarray(false);
11207    arg_v0->set_type(GLMessage::DataType::INT);
11208    arg_v0->add_intvalue(v0);
11209
11210    // copy argument v1
11211    GLMessage_DataType *arg_v1 = glmsg.add_args();
11212    arg_v1->set_isarray(false);
11213    arg_v1->set_type(GLMessage::DataType::INT);
11214    arg_v1->add_intvalue(v1);
11215
11216    // call function
11217    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11218    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11219    glContext->hooks->gl.glProgramUniform2i(program, location, v0, v1);
11220    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11221    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11222
11223    void *pointerArgs[] = {
11224    };
11225
11226    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11227                              threadStartTime, threadEndTime,
11228                              &glmsg, pointerArgs);
11229    glContext->traceGLMessage(&glmsg);
11230}
11231
11232void GLTrace_glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) {
11233    GLMessage glmsg;
11234    GLTraceContext *glContext = getGLTraceContext();
11235
11236    glmsg.set_function(GLMessage::glProgramUniform3i);
11237
11238    // copy argument program
11239    GLMessage_DataType *arg_program = glmsg.add_args();
11240    arg_program->set_isarray(false);
11241    arg_program->set_type(GLMessage::DataType::INT);
11242    arg_program->add_intvalue(program);
11243
11244    // copy argument location
11245    GLMessage_DataType *arg_location = glmsg.add_args();
11246    arg_location->set_isarray(false);
11247    arg_location->set_type(GLMessage::DataType::INT);
11248    arg_location->add_intvalue(location);
11249
11250    // copy argument v0
11251    GLMessage_DataType *arg_v0 = glmsg.add_args();
11252    arg_v0->set_isarray(false);
11253    arg_v0->set_type(GLMessage::DataType::INT);
11254    arg_v0->add_intvalue(v0);
11255
11256    // copy argument v1
11257    GLMessage_DataType *arg_v1 = glmsg.add_args();
11258    arg_v1->set_isarray(false);
11259    arg_v1->set_type(GLMessage::DataType::INT);
11260    arg_v1->add_intvalue(v1);
11261
11262    // copy argument v2
11263    GLMessage_DataType *arg_v2 = glmsg.add_args();
11264    arg_v2->set_isarray(false);
11265    arg_v2->set_type(GLMessage::DataType::INT);
11266    arg_v2->add_intvalue(v2);
11267
11268    // call function
11269    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11270    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11271    glContext->hooks->gl.glProgramUniform3i(program, location, v0, v1, v2);
11272    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11273    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11274
11275    void *pointerArgs[] = {
11276    };
11277
11278    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11279                              threadStartTime, threadEndTime,
11280                              &glmsg, pointerArgs);
11281    glContext->traceGLMessage(&glmsg);
11282}
11283
11284void GLTrace_glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) {
11285    GLMessage glmsg;
11286    GLTraceContext *glContext = getGLTraceContext();
11287
11288    glmsg.set_function(GLMessage::glProgramUniform4i);
11289
11290    // copy argument program
11291    GLMessage_DataType *arg_program = glmsg.add_args();
11292    arg_program->set_isarray(false);
11293    arg_program->set_type(GLMessage::DataType::INT);
11294    arg_program->add_intvalue(program);
11295
11296    // copy argument location
11297    GLMessage_DataType *arg_location = glmsg.add_args();
11298    arg_location->set_isarray(false);
11299    arg_location->set_type(GLMessage::DataType::INT);
11300    arg_location->add_intvalue(location);
11301
11302    // copy argument v0
11303    GLMessage_DataType *arg_v0 = glmsg.add_args();
11304    arg_v0->set_isarray(false);
11305    arg_v0->set_type(GLMessage::DataType::INT);
11306    arg_v0->add_intvalue(v0);
11307
11308    // copy argument v1
11309    GLMessage_DataType *arg_v1 = glmsg.add_args();
11310    arg_v1->set_isarray(false);
11311    arg_v1->set_type(GLMessage::DataType::INT);
11312    arg_v1->add_intvalue(v1);
11313
11314    // copy argument v2
11315    GLMessage_DataType *arg_v2 = glmsg.add_args();
11316    arg_v2->set_isarray(false);
11317    arg_v2->set_type(GLMessage::DataType::INT);
11318    arg_v2->add_intvalue(v2);
11319
11320    // copy argument v3
11321    GLMessage_DataType *arg_v3 = glmsg.add_args();
11322    arg_v3->set_isarray(false);
11323    arg_v3->set_type(GLMessage::DataType::INT);
11324    arg_v3->add_intvalue(v3);
11325
11326    // call function
11327    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11328    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11329    glContext->hooks->gl.glProgramUniform4i(program, location, v0, v1, v2, v3);
11330    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11331    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11332
11333    void *pointerArgs[] = {
11334    };
11335
11336    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11337                              threadStartTime, threadEndTime,
11338                              &glmsg, pointerArgs);
11339    glContext->traceGLMessage(&glmsg);
11340}
11341
11342void GLTrace_glProgramUniform1ui(GLuint program, GLint location, GLuint v0) {
11343    GLMessage glmsg;
11344    GLTraceContext *glContext = getGLTraceContext();
11345
11346    glmsg.set_function(GLMessage::glProgramUniform1ui);
11347
11348    // copy argument program
11349    GLMessage_DataType *arg_program = glmsg.add_args();
11350    arg_program->set_isarray(false);
11351    arg_program->set_type(GLMessage::DataType::INT);
11352    arg_program->add_intvalue(program);
11353
11354    // copy argument location
11355    GLMessage_DataType *arg_location = glmsg.add_args();
11356    arg_location->set_isarray(false);
11357    arg_location->set_type(GLMessage::DataType::INT);
11358    arg_location->add_intvalue(location);
11359
11360    // copy argument v0
11361    GLMessage_DataType *arg_v0 = glmsg.add_args();
11362    arg_v0->set_isarray(false);
11363    arg_v0->set_type(GLMessage::DataType::INT);
11364    arg_v0->add_intvalue(v0);
11365
11366    // call function
11367    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11368    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11369    glContext->hooks->gl.glProgramUniform1ui(program, location, v0);
11370    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11371    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11372
11373    void *pointerArgs[] = {
11374    };
11375
11376    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11377                              threadStartTime, threadEndTime,
11378                              &glmsg, pointerArgs);
11379    glContext->traceGLMessage(&glmsg);
11380}
11381
11382void GLTrace_glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) {
11383    GLMessage glmsg;
11384    GLTraceContext *glContext = getGLTraceContext();
11385
11386    glmsg.set_function(GLMessage::glProgramUniform2ui);
11387
11388    // copy argument program
11389    GLMessage_DataType *arg_program = glmsg.add_args();
11390    arg_program->set_isarray(false);
11391    arg_program->set_type(GLMessage::DataType::INT);
11392    arg_program->add_intvalue(program);
11393
11394    // copy argument location
11395    GLMessage_DataType *arg_location = glmsg.add_args();
11396    arg_location->set_isarray(false);
11397    arg_location->set_type(GLMessage::DataType::INT);
11398    arg_location->add_intvalue(location);
11399
11400    // copy argument v0
11401    GLMessage_DataType *arg_v0 = glmsg.add_args();
11402    arg_v0->set_isarray(false);
11403    arg_v0->set_type(GLMessage::DataType::INT);
11404    arg_v0->add_intvalue(v0);
11405
11406    // copy argument v1
11407    GLMessage_DataType *arg_v1 = glmsg.add_args();
11408    arg_v1->set_isarray(false);
11409    arg_v1->set_type(GLMessage::DataType::INT);
11410    arg_v1->add_intvalue(v1);
11411
11412    // call function
11413    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11414    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11415    glContext->hooks->gl.glProgramUniform2ui(program, location, v0, v1);
11416    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11417    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11418
11419    void *pointerArgs[] = {
11420    };
11421
11422    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11423                              threadStartTime, threadEndTime,
11424                              &glmsg, pointerArgs);
11425    glContext->traceGLMessage(&glmsg);
11426}
11427
11428void GLTrace_glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) {
11429    GLMessage glmsg;
11430    GLTraceContext *glContext = getGLTraceContext();
11431
11432    glmsg.set_function(GLMessage::glProgramUniform3ui);
11433
11434    // copy argument program
11435    GLMessage_DataType *arg_program = glmsg.add_args();
11436    arg_program->set_isarray(false);
11437    arg_program->set_type(GLMessage::DataType::INT);
11438    arg_program->add_intvalue(program);
11439
11440    // copy argument location
11441    GLMessage_DataType *arg_location = glmsg.add_args();
11442    arg_location->set_isarray(false);
11443    arg_location->set_type(GLMessage::DataType::INT);
11444    arg_location->add_intvalue(location);
11445
11446    // copy argument v0
11447    GLMessage_DataType *arg_v0 = glmsg.add_args();
11448    arg_v0->set_isarray(false);
11449    arg_v0->set_type(GLMessage::DataType::INT);
11450    arg_v0->add_intvalue(v0);
11451
11452    // copy argument v1
11453    GLMessage_DataType *arg_v1 = glmsg.add_args();
11454    arg_v1->set_isarray(false);
11455    arg_v1->set_type(GLMessage::DataType::INT);
11456    arg_v1->add_intvalue(v1);
11457
11458    // copy argument v2
11459    GLMessage_DataType *arg_v2 = glmsg.add_args();
11460    arg_v2->set_isarray(false);
11461    arg_v2->set_type(GLMessage::DataType::INT);
11462    arg_v2->add_intvalue(v2);
11463
11464    // call function
11465    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11466    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11467    glContext->hooks->gl.glProgramUniform3ui(program, location, v0, v1, v2);
11468    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11469    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11470
11471    void *pointerArgs[] = {
11472    };
11473
11474    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11475                              threadStartTime, threadEndTime,
11476                              &glmsg, pointerArgs);
11477    glContext->traceGLMessage(&glmsg);
11478}
11479
11480void GLTrace_glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) {
11481    GLMessage glmsg;
11482    GLTraceContext *glContext = getGLTraceContext();
11483
11484    glmsg.set_function(GLMessage::glProgramUniform4ui);
11485
11486    // copy argument program
11487    GLMessage_DataType *arg_program = glmsg.add_args();
11488    arg_program->set_isarray(false);
11489    arg_program->set_type(GLMessage::DataType::INT);
11490    arg_program->add_intvalue(program);
11491
11492    // copy argument location
11493    GLMessage_DataType *arg_location = glmsg.add_args();
11494    arg_location->set_isarray(false);
11495    arg_location->set_type(GLMessage::DataType::INT);
11496    arg_location->add_intvalue(location);
11497
11498    // copy argument v0
11499    GLMessage_DataType *arg_v0 = glmsg.add_args();
11500    arg_v0->set_isarray(false);
11501    arg_v0->set_type(GLMessage::DataType::INT);
11502    arg_v0->add_intvalue(v0);
11503
11504    // copy argument v1
11505    GLMessage_DataType *arg_v1 = glmsg.add_args();
11506    arg_v1->set_isarray(false);
11507    arg_v1->set_type(GLMessage::DataType::INT);
11508    arg_v1->add_intvalue(v1);
11509
11510    // copy argument v2
11511    GLMessage_DataType *arg_v2 = glmsg.add_args();
11512    arg_v2->set_isarray(false);
11513    arg_v2->set_type(GLMessage::DataType::INT);
11514    arg_v2->add_intvalue(v2);
11515
11516    // copy argument v3
11517    GLMessage_DataType *arg_v3 = glmsg.add_args();
11518    arg_v3->set_isarray(false);
11519    arg_v3->set_type(GLMessage::DataType::INT);
11520    arg_v3->add_intvalue(v3);
11521
11522    // call function
11523    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11524    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11525    glContext->hooks->gl.glProgramUniform4ui(program, location, v0, v1, v2, v3);
11526    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11527    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11528
11529    void *pointerArgs[] = {
11530    };
11531
11532    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11533                              threadStartTime, threadEndTime,
11534                              &glmsg, pointerArgs);
11535    glContext->traceGLMessage(&glmsg);
11536}
11537
11538void GLTrace_glProgramUniform1f(GLuint program, GLint location, GLfloat v0) {
11539    GLMessage glmsg;
11540    GLTraceContext *glContext = getGLTraceContext();
11541
11542    glmsg.set_function(GLMessage::glProgramUniform1f);
11543
11544    // copy argument program
11545    GLMessage_DataType *arg_program = glmsg.add_args();
11546    arg_program->set_isarray(false);
11547    arg_program->set_type(GLMessage::DataType::INT);
11548    arg_program->add_intvalue(program);
11549
11550    // copy argument location
11551    GLMessage_DataType *arg_location = glmsg.add_args();
11552    arg_location->set_isarray(false);
11553    arg_location->set_type(GLMessage::DataType::INT);
11554    arg_location->add_intvalue(location);
11555
11556    // copy argument v0
11557    GLMessage_DataType *arg_v0 = glmsg.add_args();
11558    arg_v0->set_isarray(false);
11559    arg_v0->set_type(GLMessage::DataType::FLOAT);
11560    arg_v0->add_floatvalue(v0);
11561
11562    // call function
11563    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11564    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11565    glContext->hooks->gl.glProgramUniform1f(program, location, v0);
11566    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11567    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11568
11569    void *pointerArgs[] = {
11570    };
11571
11572    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11573                              threadStartTime, threadEndTime,
11574                              &glmsg, pointerArgs);
11575    glContext->traceGLMessage(&glmsg);
11576}
11577
11578void GLTrace_glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) {
11579    GLMessage glmsg;
11580    GLTraceContext *glContext = getGLTraceContext();
11581
11582    glmsg.set_function(GLMessage::glProgramUniform2f);
11583
11584    // copy argument program
11585    GLMessage_DataType *arg_program = glmsg.add_args();
11586    arg_program->set_isarray(false);
11587    arg_program->set_type(GLMessage::DataType::INT);
11588    arg_program->add_intvalue(program);
11589
11590    // copy argument location
11591    GLMessage_DataType *arg_location = glmsg.add_args();
11592    arg_location->set_isarray(false);
11593    arg_location->set_type(GLMessage::DataType::INT);
11594    arg_location->add_intvalue(location);
11595
11596    // copy argument v0
11597    GLMessage_DataType *arg_v0 = glmsg.add_args();
11598    arg_v0->set_isarray(false);
11599    arg_v0->set_type(GLMessage::DataType::FLOAT);
11600    arg_v0->add_floatvalue(v0);
11601
11602    // copy argument v1
11603    GLMessage_DataType *arg_v1 = glmsg.add_args();
11604    arg_v1->set_isarray(false);
11605    arg_v1->set_type(GLMessage::DataType::FLOAT);
11606    arg_v1->add_floatvalue(v1);
11607
11608    // call function
11609    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11610    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11611    glContext->hooks->gl.glProgramUniform2f(program, location, v0, v1);
11612    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11613    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11614
11615    void *pointerArgs[] = {
11616    };
11617
11618    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11619                              threadStartTime, threadEndTime,
11620                              &glmsg, pointerArgs);
11621    glContext->traceGLMessage(&glmsg);
11622}
11623
11624void GLTrace_glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) {
11625    GLMessage glmsg;
11626    GLTraceContext *glContext = getGLTraceContext();
11627
11628    glmsg.set_function(GLMessage::glProgramUniform3f);
11629
11630    // copy argument program
11631    GLMessage_DataType *arg_program = glmsg.add_args();
11632    arg_program->set_isarray(false);
11633    arg_program->set_type(GLMessage::DataType::INT);
11634    arg_program->add_intvalue(program);
11635
11636    // copy argument location
11637    GLMessage_DataType *arg_location = glmsg.add_args();
11638    arg_location->set_isarray(false);
11639    arg_location->set_type(GLMessage::DataType::INT);
11640    arg_location->add_intvalue(location);
11641
11642    // copy argument v0
11643    GLMessage_DataType *arg_v0 = glmsg.add_args();
11644    arg_v0->set_isarray(false);
11645    arg_v0->set_type(GLMessage::DataType::FLOAT);
11646    arg_v0->add_floatvalue(v0);
11647
11648    // copy argument v1
11649    GLMessage_DataType *arg_v1 = glmsg.add_args();
11650    arg_v1->set_isarray(false);
11651    arg_v1->set_type(GLMessage::DataType::FLOAT);
11652    arg_v1->add_floatvalue(v1);
11653
11654    // copy argument v2
11655    GLMessage_DataType *arg_v2 = glmsg.add_args();
11656    arg_v2->set_isarray(false);
11657    arg_v2->set_type(GLMessage::DataType::FLOAT);
11658    arg_v2->add_floatvalue(v2);
11659
11660    // call function
11661    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11662    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11663    glContext->hooks->gl.glProgramUniform3f(program, location, v0, v1, v2);
11664    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11665    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11666
11667    void *pointerArgs[] = {
11668    };
11669
11670    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11671                              threadStartTime, threadEndTime,
11672                              &glmsg, pointerArgs);
11673    glContext->traceGLMessage(&glmsg);
11674}
11675
11676void GLTrace_glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) {
11677    GLMessage glmsg;
11678    GLTraceContext *glContext = getGLTraceContext();
11679
11680    glmsg.set_function(GLMessage::glProgramUniform4f);
11681
11682    // copy argument program
11683    GLMessage_DataType *arg_program = glmsg.add_args();
11684    arg_program->set_isarray(false);
11685    arg_program->set_type(GLMessage::DataType::INT);
11686    arg_program->add_intvalue(program);
11687
11688    // copy argument location
11689    GLMessage_DataType *arg_location = glmsg.add_args();
11690    arg_location->set_isarray(false);
11691    arg_location->set_type(GLMessage::DataType::INT);
11692    arg_location->add_intvalue(location);
11693
11694    // copy argument v0
11695    GLMessage_DataType *arg_v0 = glmsg.add_args();
11696    arg_v0->set_isarray(false);
11697    arg_v0->set_type(GLMessage::DataType::FLOAT);
11698    arg_v0->add_floatvalue(v0);
11699
11700    // copy argument v1
11701    GLMessage_DataType *arg_v1 = glmsg.add_args();
11702    arg_v1->set_isarray(false);
11703    arg_v1->set_type(GLMessage::DataType::FLOAT);
11704    arg_v1->add_floatvalue(v1);
11705
11706    // copy argument v2
11707    GLMessage_DataType *arg_v2 = glmsg.add_args();
11708    arg_v2->set_isarray(false);
11709    arg_v2->set_type(GLMessage::DataType::FLOAT);
11710    arg_v2->add_floatvalue(v2);
11711
11712    // copy argument v3
11713    GLMessage_DataType *arg_v3 = glmsg.add_args();
11714    arg_v3->set_isarray(false);
11715    arg_v3->set_type(GLMessage::DataType::FLOAT);
11716    arg_v3->add_floatvalue(v3);
11717
11718    // call function
11719    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11720    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11721    glContext->hooks->gl.glProgramUniform4f(program, location, v0, v1, v2, v3);
11722    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11723    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11724
11725    void *pointerArgs[] = {
11726    };
11727
11728    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11729                              threadStartTime, threadEndTime,
11730                              &glmsg, pointerArgs);
11731    glContext->traceGLMessage(&glmsg);
11732}
11733
11734void GLTrace_glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint * value) {
11735    GLMessage glmsg;
11736    GLTraceContext *glContext = getGLTraceContext();
11737
11738    glmsg.set_function(GLMessage::glProgramUniform1iv);
11739
11740    // copy argument program
11741    GLMessage_DataType *arg_program = glmsg.add_args();
11742    arg_program->set_isarray(false);
11743    arg_program->set_type(GLMessage::DataType::INT);
11744    arg_program->add_intvalue(program);
11745
11746    // copy argument location
11747    GLMessage_DataType *arg_location = glmsg.add_args();
11748    arg_location->set_isarray(false);
11749    arg_location->set_type(GLMessage::DataType::INT);
11750    arg_location->add_intvalue(location);
11751
11752    // copy argument count
11753    GLMessage_DataType *arg_count = glmsg.add_args();
11754    arg_count->set_isarray(false);
11755    arg_count->set_type(GLMessage::DataType::INT);
11756    arg_count->add_intvalue(count);
11757
11758    // copy argument value
11759    GLMessage_DataType *arg_value = glmsg.add_args();
11760    arg_value->set_isarray(false);
11761    arg_value->set_type(GLMessage::DataType::INT64);
11762    arg_value->add_int64value((uintptr_t)value);
11763
11764    // call function
11765    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11766    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11767    glContext->hooks->gl.glProgramUniform1iv(program, location, count, value);
11768    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11769    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11770
11771    void *pointerArgs[] = {
11772        (void *) value,
11773    };
11774
11775    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11776                              threadStartTime, threadEndTime,
11777                              &glmsg, pointerArgs);
11778    glContext->traceGLMessage(&glmsg);
11779}
11780
11781void GLTrace_glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint * value) {
11782    GLMessage glmsg;
11783    GLTraceContext *glContext = getGLTraceContext();
11784
11785    glmsg.set_function(GLMessage::glProgramUniform2iv);
11786
11787    // copy argument program
11788    GLMessage_DataType *arg_program = glmsg.add_args();
11789    arg_program->set_isarray(false);
11790    arg_program->set_type(GLMessage::DataType::INT);
11791    arg_program->add_intvalue(program);
11792
11793    // copy argument location
11794    GLMessage_DataType *arg_location = glmsg.add_args();
11795    arg_location->set_isarray(false);
11796    arg_location->set_type(GLMessage::DataType::INT);
11797    arg_location->add_intvalue(location);
11798
11799    // copy argument count
11800    GLMessage_DataType *arg_count = glmsg.add_args();
11801    arg_count->set_isarray(false);
11802    arg_count->set_type(GLMessage::DataType::INT);
11803    arg_count->add_intvalue(count);
11804
11805    // copy argument value
11806    GLMessage_DataType *arg_value = glmsg.add_args();
11807    arg_value->set_isarray(false);
11808    arg_value->set_type(GLMessage::DataType::INT64);
11809    arg_value->add_int64value((uintptr_t)value);
11810
11811    // call function
11812    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11813    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11814    glContext->hooks->gl.glProgramUniform2iv(program, location, count, value);
11815    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11816    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11817
11818    void *pointerArgs[] = {
11819        (void *) value,
11820    };
11821
11822    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11823                              threadStartTime, threadEndTime,
11824                              &glmsg, pointerArgs);
11825    glContext->traceGLMessage(&glmsg);
11826}
11827
11828void GLTrace_glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint * value) {
11829    GLMessage glmsg;
11830    GLTraceContext *glContext = getGLTraceContext();
11831
11832    glmsg.set_function(GLMessage::glProgramUniform3iv);
11833
11834    // copy argument program
11835    GLMessage_DataType *arg_program = glmsg.add_args();
11836    arg_program->set_isarray(false);
11837    arg_program->set_type(GLMessage::DataType::INT);
11838    arg_program->add_intvalue(program);
11839
11840    // copy argument location
11841    GLMessage_DataType *arg_location = glmsg.add_args();
11842    arg_location->set_isarray(false);
11843    arg_location->set_type(GLMessage::DataType::INT);
11844    arg_location->add_intvalue(location);
11845
11846    // copy argument count
11847    GLMessage_DataType *arg_count = glmsg.add_args();
11848    arg_count->set_isarray(false);
11849    arg_count->set_type(GLMessage::DataType::INT);
11850    arg_count->add_intvalue(count);
11851
11852    // copy argument value
11853    GLMessage_DataType *arg_value = glmsg.add_args();
11854    arg_value->set_isarray(false);
11855    arg_value->set_type(GLMessage::DataType::INT64);
11856    arg_value->add_int64value((uintptr_t)value);
11857
11858    // call function
11859    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11860    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11861    glContext->hooks->gl.glProgramUniform3iv(program, location, count, value);
11862    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11863    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11864
11865    void *pointerArgs[] = {
11866        (void *) value,
11867    };
11868
11869    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11870                              threadStartTime, threadEndTime,
11871                              &glmsg, pointerArgs);
11872    glContext->traceGLMessage(&glmsg);
11873}
11874
11875void GLTrace_glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint * value) {
11876    GLMessage glmsg;
11877    GLTraceContext *glContext = getGLTraceContext();
11878
11879    glmsg.set_function(GLMessage::glProgramUniform4iv);
11880
11881    // copy argument program
11882    GLMessage_DataType *arg_program = glmsg.add_args();
11883    arg_program->set_isarray(false);
11884    arg_program->set_type(GLMessage::DataType::INT);
11885    arg_program->add_intvalue(program);
11886
11887    // copy argument location
11888    GLMessage_DataType *arg_location = glmsg.add_args();
11889    arg_location->set_isarray(false);
11890    arg_location->set_type(GLMessage::DataType::INT);
11891    arg_location->add_intvalue(location);
11892
11893    // copy argument count
11894    GLMessage_DataType *arg_count = glmsg.add_args();
11895    arg_count->set_isarray(false);
11896    arg_count->set_type(GLMessage::DataType::INT);
11897    arg_count->add_intvalue(count);
11898
11899    // copy argument value
11900    GLMessage_DataType *arg_value = glmsg.add_args();
11901    arg_value->set_isarray(false);
11902    arg_value->set_type(GLMessage::DataType::INT64);
11903    arg_value->add_int64value((uintptr_t)value);
11904
11905    // call function
11906    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11907    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11908    glContext->hooks->gl.glProgramUniform4iv(program, location, count, value);
11909    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11910    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11911
11912    void *pointerArgs[] = {
11913        (void *) value,
11914    };
11915
11916    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11917                              threadStartTime, threadEndTime,
11918                              &glmsg, pointerArgs);
11919    glContext->traceGLMessage(&glmsg);
11920}
11921
11922void GLTrace_glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint * value) {
11923    GLMessage glmsg;
11924    GLTraceContext *glContext = getGLTraceContext();
11925
11926    glmsg.set_function(GLMessage::glProgramUniform1uiv);
11927
11928    // copy argument program
11929    GLMessage_DataType *arg_program = glmsg.add_args();
11930    arg_program->set_isarray(false);
11931    arg_program->set_type(GLMessage::DataType::INT);
11932    arg_program->add_intvalue(program);
11933
11934    // copy argument location
11935    GLMessage_DataType *arg_location = glmsg.add_args();
11936    arg_location->set_isarray(false);
11937    arg_location->set_type(GLMessage::DataType::INT);
11938    arg_location->add_intvalue(location);
11939
11940    // copy argument count
11941    GLMessage_DataType *arg_count = glmsg.add_args();
11942    arg_count->set_isarray(false);
11943    arg_count->set_type(GLMessage::DataType::INT);
11944    arg_count->add_intvalue(count);
11945
11946    // copy argument value
11947    GLMessage_DataType *arg_value = glmsg.add_args();
11948    arg_value->set_isarray(false);
11949    arg_value->set_type(GLMessage::DataType::INT64);
11950    arg_value->add_int64value((uintptr_t)value);
11951
11952    // call function
11953    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
11954    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11955    glContext->hooks->gl.glProgramUniform1uiv(program, location, count, value);
11956    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
11957    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11958
11959    void *pointerArgs[] = {
11960        (void *) value,
11961    };
11962
11963    fixupGLMessage(glContext, wallStartTime, wallEndTime,
11964                              threadStartTime, threadEndTime,
11965                              &glmsg, pointerArgs);
11966    glContext->traceGLMessage(&glmsg);
11967}
11968
11969void GLTrace_glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint * value) {
11970    GLMessage glmsg;
11971    GLTraceContext *glContext = getGLTraceContext();
11972
11973    glmsg.set_function(GLMessage::glProgramUniform2uiv);
11974
11975    // copy argument program
11976    GLMessage_DataType *arg_program = glmsg.add_args();
11977    arg_program->set_isarray(false);
11978    arg_program->set_type(GLMessage::DataType::INT);
11979    arg_program->add_intvalue(program);
11980
11981    // copy argument location
11982    GLMessage_DataType *arg_location = glmsg.add_args();
11983    arg_location->set_isarray(false);
11984    arg_location->set_type(GLMessage::DataType::INT);
11985    arg_location->add_intvalue(location);
11986
11987    // copy argument count
11988    GLMessage_DataType *arg_count = glmsg.add_args();
11989    arg_count->set_isarray(false);
11990    arg_count->set_type(GLMessage::DataType::INT);
11991    arg_count->add_intvalue(count);
11992
11993    // copy argument value
11994    GLMessage_DataType *arg_value = glmsg.add_args();
11995    arg_value->set_isarray(false);
11996    arg_value->set_type(GLMessage::DataType::INT64);
11997    arg_value->add_int64value((uintptr_t)value);
11998
11999    // call function
12000    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12001    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12002    glContext->hooks->gl.glProgramUniform2uiv(program, location, count, value);
12003    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12004    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12005
12006    void *pointerArgs[] = {
12007        (void *) value,
12008    };
12009
12010    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12011                              threadStartTime, threadEndTime,
12012                              &glmsg, pointerArgs);
12013    glContext->traceGLMessage(&glmsg);
12014}
12015
12016void GLTrace_glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint * value) {
12017    GLMessage glmsg;
12018    GLTraceContext *glContext = getGLTraceContext();
12019
12020    glmsg.set_function(GLMessage::glProgramUniform3uiv);
12021
12022    // copy argument program
12023    GLMessage_DataType *arg_program = glmsg.add_args();
12024    arg_program->set_isarray(false);
12025    arg_program->set_type(GLMessage::DataType::INT);
12026    arg_program->add_intvalue(program);
12027
12028    // copy argument location
12029    GLMessage_DataType *arg_location = glmsg.add_args();
12030    arg_location->set_isarray(false);
12031    arg_location->set_type(GLMessage::DataType::INT);
12032    arg_location->add_intvalue(location);
12033
12034    // copy argument count
12035    GLMessage_DataType *arg_count = glmsg.add_args();
12036    arg_count->set_isarray(false);
12037    arg_count->set_type(GLMessage::DataType::INT);
12038    arg_count->add_intvalue(count);
12039
12040    // copy argument value
12041    GLMessage_DataType *arg_value = glmsg.add_args();
12042    arg_value->set_isarray(false);
12043    arg_value->set_type(GLMessage::DataType::INT64);
12044    arg_value->add_int64value((uintptr_t)value);
12045
12046    // call function
12047    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12048    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12049    glContext->hooks->gl.glProgramUniform3uiv(program, location, count, value);
12050    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12051    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12052
12053    void *pointerArgs[] = {
12054        (void *) value,
12055    };
12056
12057    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12058                              threadStartTime, threadEndTime,
12059                              &glmsg, pointerArgs);
12060    glContext->traceGLMessage(&glmsg);
12061}
12062
12063void GLTrace_glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint * value) {
12064    GLMessage glmsg;
12065    GLTraceContext *glContext = getGLTraceContext();
12066
12067    glmsg.set_function(GLMessage::glProgramUniform4uiv);
12068
12069    // copy argument program
12070    GLMessage_DataType *arg_program = glmsg.add_args();
12071    arg_program->set_isarray(false);
12072    arg_program->set_type(GLMessage::DataType::INT);
12073    arg_program->add_intvalue(program);
12074
12075    // copy argument location
12076    GLMessage_DataType *arg_location = glmsg.add_args();
12077    arg_location->set_isarray(false);
12078    arg_location->set_type(GLMessage::DataType::INT);
12079    arg_location->add_intvalue(location);
12080
12081    // copy argument count
12082    GLMessage_DataType *arg_count = glmsg.add_args();
12083    arg_count->set_isarray(false);
12084    arg_count->set_type(GLMessage::DataType::INT);
12085    arg_count->add_intvalue(count);
12086
12087    // copy argument value
12088    GLMessage_DataType *arg_value = glmsg.add_args();
12089    arg_value->set_isarray(false);
12090    arg_value->set_type(GLMessage::DataType::INT64);
12091    arg_value->add_int64value((uintptr_t)value);
12092
12093    // call function
12094    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12095    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12096    glContext->hooks->gl.glProgramUniform4uiv(program, location, count, value);
12097    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12098    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12099
12100    void *pointerArgs[] = {
12101        (void *) value,
12102    };
12103
12104    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12105                              threadStartTime, threadEndTime,
12106                              &glmsg, pointerArgs);
12107    glContext->traceGLMessage(&glmsg);
12108}
12109
12110void GLTrace_glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat * value) {
12111    GLMessage glmsg;
12112    GLTraceContext *glContext = getGLTraceContext();
12113
12114    glmsg.set_function(GLMessage::glProgramUniform1fv);
12115
12116    // copy argument program
12117    GLMessage_DataType *arg_program = glmsg.add_args();
12118    arg_program->set_isarray(false);
12119    arg_program->set_type(GLMessage::DataType::INT);
12120    arg_program->add_intvalue(program);
12121
12122    // copy argument location
12123    GLMessage_DataType *arg_location = glmsg.add_args();
12124    arg_location->set_isarray(false);
12125    arg_location->set_type(GLMessage::DataType::INT);
12126    arg_location->add_intvalue(location);
12127
12128    // copy argument count
12129    GLMessage_DataType *arg_count = glmsg.add_args();
12130    arg_count->set_isarray(false);
12131    arg_count->set_type(GLMessage::DataType::INT);
12132    arg_count->add_intvalue(count);
12133
12134    // copy argument value
12135    GLMessage_DataType *arg_value = glmsg.add_args();
12136    arg_value->set_isarray(false);
12137    arg_value->set_type(GLMessage::DataType::INT64);
12138    arg_value->add_int64value((uintptr_t)value);
12139
12140    // call function
12141    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12142    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12143    glContext->hooks->gl.glProgramUniform1fv(program, location, count, value);
12144    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12145    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12146
12147    void *pointerArgs[] = {
12148        (void *) value,
12149    };
12150
12151    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12152                              threadStartTime, threadEndTime,
12153                              &glmsg, pointerArgs);
12154    glContext->traceGLMessage(&glmsg);
12155}
12156
12157void GLTrace_glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat * value) {
12158    GLMessage glmsg;
12159    GLTraceContext *glContext = getGLTraceContext();
12160
12161    glmsg.set_function(GLMessage::glProgramUniform2fv);
12162
12163    // copy argument program
12164    GLMessage_DataType *arg_program = glmsg.add_args();
12165    arg_program->set_isarray(false);
12166    arg_program->set_type(GLMessage::DataType::INT);
12167    arg_program->add_intvalue(program);
12168
12169    // copy argument location
12170    GLMessage_DataType *arg_location = glmsg.add_args();
12171    arg_location->set_isarray(false);
12172    arg_location->set_type(GLMessage::DataType::INT);
12173    arg_location->add_intvalue(location);
12174
12175    // copy argument count
12176    GLMessage_DataType *arg_count = glmsg.add_args();
12177    arg_count->set_isarray(false);
12178    arg_count->set_type(GLMessage::DataType::INT);
12179    arg_count->add_intvalue(count);
12180
12181    // copy argument value
12182    GLMessage_DataType *arg_value = glmsg.add_args();
12183    arg_value->set_isarray(false);
12184    arg_value->set_type(GLMessage::DataType::INT64);
12185    arg_value->add_int64value((uintptr_t)value);
12186
12187    // call function
12188    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12189    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12190    glContext->hooks->gl.glProgramUniform2fv(program, location, count, value);
12191    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12192    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12193
12194    void *pointerArgs[] = {
12195        (void *) value,
12196    };
12197
12198    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12199                              threadStartTime, threadEndTime,
12200                              &glmsg, pointerArgs);
12201    glContext->traceGLMessage(&glmsg);
12202}
12203
12204void GLTrace_glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat * value) {
12205    GLMessage glmsg;
12206    GLTraceContext *glContext = getGLTraceContext();
12207
12208    glmsg.set_function(GLMessage::glProgramUniform3fv);
12209
12210    // copy argument program
12211    GLMessage_DataType *arg_program = glmsg.add_args();
12212    arg_program->set_isarray(false);
12213    arg_program->set_type(GLMessage::DataType::INT);
12214    arg_program->add_intvalue(program);
12215
12216    // copy argument location
12217    GLMessage_DataType *arg_location = glmsg.add_args();
12218    arg_location->set_isarray(false);
12219    arg_location->set_type(GLMessage::DataType::INT);
12220    arg_location->add_intvalue(location);
12221
12222    // copy argument count
12223    GLMessage_DataType *arg_count = glmsg.add_args();
12224    arg_count->set_isarray(false);
12225    arg_count->set_type(GLMessage::DataType::INT);
12226    arg_count->add_intvalue(count);
12227
12228    // copy argument value
12229    GLMessage_DataType *arg_value = glmsg.add_args();
12230    arg_value->set_isarray(false);
12231    arg_value->set_type(GLMessage::DataType::INT64);
12232    arg_value->add_int64value((uintptr_t)value);
12233
12234    // call function
12235    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12236    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12237    glContext->hooks->gl.glProgramUniform3fv(program, location, count, value);
12238    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12239    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12240
12241    void *pointerArgs[] = {
12242        (void *) value,
12243    };
12244
12245    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12246                              threadStartTime, threadEndTime,
12247                              &glmsg, pointerArgs);
12248    glContext->traceGLMessage(&glmsg);
12249}
12250
12251void GLTrace_glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat * value) {
12252    GLMessage glmsg;
12253    GLTraceContext *glContext = getGLTraceContext();
12254
12255    glmsg.set_function(GLMessage::glProgramUniform4fv);
12256
12257    // copy argument program
12258    GLMessage_DataType *arg_program = glmsg.add_args();
12259    arg_program->set_isarray(false);
12260    arg_program->set_type(GLMessage::DataType::INT);
12261    arg_program->add_intvalue(program);
12262
12263    // copy argument location
12264    GLMessage_DataType *arg_location = glmsg.add_args();
12265    arg_location->set_isarray(false);
12266    arg_location->set_type(GLMessage::DataType::INT);
12267    arg_location->add_intvalue(location);
12268
12269    // copy argument count
12270    GLMessage_DataType *arg_count = glmsg.add_args();
12271    arg_count->set_isarray(false);
12272    arg_count->set_type(GLMessage::DataType::INT);
12273    arg_count->add_intvalue(count);
12274
12275    // copy argument value
12276    GLMessage_DataType *arg_value = glmsg.add_args();
12277    arg_value->set_isarray(false);
12278    arg_value->set_type(GLMessage::DataType::INT64);
12279    arg_value->add_int64value((uintptr_t)value);
12280
12281    // call function
12282    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12283    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12284    glContext->hooks->gl.glProgramUniform4fv(program, location, count, value);
12285    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12286    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12287
12288    void *pointerArgs[] = {
12289        (void *) value,
12290    };
12291
12292    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12293                              threadStartTime, threadEndTime,
12294                              &glmsg, pointerArgs);
12295    glContext->traceGLMessage(&glmsg);
12296}
12297
12298void GLTrace_glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
12299    GLMessage glmsg;
12300    GLTraceContext *glContext = getGLTraceContext();
12301
12302    glmsg.set_function(GLMessage::glProgramUniformMatrix2fv);
12303
12304    // copy argument program
12305    GLMessage_DataType *arg_program = glmsg.add_args();
12306    arg_program->set_isarray(false);
12307    arg_program->set_type(GLMessage::DataType::INT);
12308    arg_program->add_intvalue(program);
12309
12310    // copy argument location
12311    GLMessage_DataType *arg_location = glmsg.add_args();
12312    arg_location->set_isarray(false);
12313    arg_location->set_type(GLMessage::DataType::INT);
12314    arg_location->add_intvalue(location);
12315
12316    // copy argument count
12317    GLMessage_DataType *arg_count = glmsg.add_args();
12318    arg_count->set_isarray(false);
12319    arg_count->set_type(GLMessage::DataType::INT);
12320    arg_count->add_intvalue(count);
12321
12322    // copy argument transpose
12323    GLMessage_DataType *arg_transpose = glmsg.add_args();
12324    arg_transpose->set_isarray(false);
12325    arg_transpose->set_type(GLMessage::DataType::BOOL);
12326    arg_transpose->add_boolvalue(transpose);
12327
12328    // copy argument value
12329    GLMessage_DataType *arg_value = glmsg.add_args();
12330    arg_value->set_isarray(false);
12331    arg_value->set_type(GLMessage::DataType::INT64);
12332    arg_value->add_int64value((uintptr_t)value);
12333
12334    // call function
12335    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12336    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12337    glContext->hooks->gl.glProgramUniformMatrix2fv(program, location, count, transpose, value);
12338    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12339    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12340
12341    void *pointerArgs[] = {
12342        (void *) value,
12343    };
12344
12345    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12346                              threadStartTime, threadEndTime,
12347                              &glmsg, pointerArgs);
12348    glContext->traceGLMessage(&glmsg);
12349}
12350
12351void GLTrace_glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
12352    GLMessage glmsg;
12353    GLTraceContext *glContext = getGLTraceContext();
12354
12355    glmsg.set_function(GLMessage::glProgramUniformMatrix3fv);
12356
12357    // copy argument program
12358    GLMessage_DataType *arg_program = glmsg.add_args();
12359    arg_program->set_isarray(false);
12360    arg_program->set_type(GLMessage::DataType::INT);
12361    arg_program->add_intvalue(program);
12362
12363    // copy argument location
12364    GLMessage_DataType *arg_location = glmsg.add_args();
12365    arg_location->set_isarray(false);
12366    arg_location->set_type(GLMessage::DataType::INT);
12367    arg_location->add_intvalue(location);
12368
12369    // copy argument count
12370    GLMessage_DataType *arg_count = glmsg.add_args();
12371    arg_count->set_isarray(false);
12372    arg_count->set_type(GLMessage::DataType::INT);
12373    arg_count->add_intvalue(count);
12374
12375    // copy argument transpose
12376    GLMessage_DataType *arg_transpose = glmsg.add_args();
12377    arg_transpose->set_isarray(false);
12378    arg_transpose->set_type(GLMessage::DataType::BOOL);
12379    arg_transpose->add_boolvalue(transpose);
12380
12381    // copy argument value
12382    GLMessage_DataType *arg_value = glmsg.add_args();
12383    arg_value->set_isarray(false);
12384    arg_value->set_type(GLMessage::DataType::INT64);
12385    arg_value->add_int64value((uintptr_t)value);
12386
12387    // call function
12388    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12389    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12390    glContext->hooks->gl.glProgramUniformMatrix3fv(program, location, count, transpose, value);
12391    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12392    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12393
12394    void *pointerArgs[] = {
12395        (void *) value,
12396    };
12397
12398    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12399                              threadStartTime, threadEndTime,
12400                              &glmsg, pointerArgs);
12401    glContext->traceGLMessage(&glmsg);
12402}
12403
12404void GLTrace_glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
12405    GLMessage glmsg;
12406    GLTraceContext *glContext = getGLTraceContext();
12407
12408    glmsg.set_function(GLMessage::glProgramUniformMatrix4fv);
12409
12410    // copy argument program
12411    GLMessage_DataType *arg_program = glmsg.add_args();
12412    arg_program->set_isarray(false);
12413    arg_program->set_type(GLMessage::DataType::INT);
12414    arg_program->add_intvalue(program);
12415
12416    // copy argument location
12417    GLMessage_DataType *arg_location = glmsg.add_args();
12418    arg_location->set_isarray(false);
12419    arg_location->set_type(GLMessage::DataType::INT);
12420    arg_location->add_intvalue(location);
12421
12422    // copy argument count
12423    GLMessage_DataType *arg_count = glmsg.add_args();
12424    arg_count->set_isarray(false);
12425    arg_count->set_type(GLMessage::DataType::INT);
12426    arg_count->add_intvalue(count);
12427
12428    // copy argument transpose
12429    GLMessage_DataType *arg_transpose = glmsg.add_args();
12430    arg_transpose->set_isarray(false);
12431    arg_transpose->set_type(GLMessage::DataType::BOOL);
12432    arg_transpose->add_boolvalue(transpose);
12433
12434    // copy argument value
12435    GLMessage_DataType *arg_value = glmsg.add_args();
12436    arg_value->set_isarray(false);
12437    arg_value->set_type(GLMessage::DataType::INT64);
12438    arg_value->add_int64value((uintptr_t)value);
12439
12440    // call function
12441    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12442    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12443    glContext->hooks->gl.glProgramUniformMatrix4fv(program, location, count, transpose, value);
12444    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12445    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12446
12447    void *pointerArgs[] = {
12448        (void *) value,
12449    };
12450
12451    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12452                              threadStartTime, threadEndTime,
12453                              &glmsg, pointerArgs);
12454    glContext->traceGLMessage(&glmsg);
12455}
12456
12457void GLTrace_glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
12458    GLMessage glmsg;
12459    GLTraceContext *glContext = getGLTraceContext();
12460
12461    glmsg.set_function(GLMessage::glProgramUniformMatrix2x3fv);
12462
12463    // copy argument program
12464    GLMessage_DataType *arg_program = glmsg.add_args();
12465    arg_program->set_isarray(false);
12466    arg_program->set_type(GLMessage::DataType::INT);
12467    arg_program->add_intvalue(program);
12468
12469    // copy argument location
12470    GLMessage_DataType *arg_location = glmsg.add_args();
12471    arg_location->set_isarray(false);
12472    arg_location->set_type(GLMessage::DataType::INT);
12473    arg_location->add_intvalue(location);
12474
12475    // copy argument count
12476    GLMessage_DataType *arg_count = glmsg.add_args();
12477    arg_count->set_isarray(false);
12478    arg_count->set_type(GLMessage::DataType::INT);
12479    arg_count->add_intvalue(count);
12480
12481    // copy argument transpose
12482    GLMessage_DataType *arg_transpose = glmsg.add_args();
12483    arg_transpose->set_isarray(false);
12484    arg_transpose->set_type(GLMessage::DataType::BOOL);
12485    arg_transpose->add_boolvalue(transpose);
12486
12487    // copy argument value
12488    GLMessage_DataType *arg_value = glmsg.add_args();
12489    arg_value->set_isarray(false);
12490    arg_value->set_type(GLMessage::DataType::INT64);
12491    arg_value->add_int64value((uintptr_t)value);
12492
12493    // call function
12494    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12495    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12496    glContext->hooks->gl.glProgramUniformMatrix2x3fv(program, location, count, transpose, value);
12497    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12498    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12499
12500    void *pointerArgs[] = {
12501        (void *) value,
12502    };
12503
12504    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12505                              threadStartTime, threadEndTime,
12506                              &glmsg, pointerArgs);
12507    glContext->traceGLMessage(&glmsg);
12508}
12509
12510void GLTrace_glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
12511    GLMessage glmsg;
12512    GLTraceContext *glContext = getGLTraceContext();
12513
12514    glmsg.set_function(GLMessage::glProgramUniformMatrix3x2fv);
12515
12516    // copy argument program
12517    GLMessage_DataType *arg_program = glmsg.add_args();
12518    arg_program->set_isarray(false);
12519    arg_program->set_type(GLMessage::DataType::INT);
12520    arg_program->add_intvalue(program);
12521
12522    // copy argument location
12523    GLMessage_DataType *arg_location = glmsg.add_args();
12524    arg_location->set_isarray(false);
12525    arg_location->set_type(GLMessage::DataType::INT);
12526    arg_location->add_intvalue(location);
12527
12528    // copy argument count
12529    GLMessage_DataType *arg_count = glmsg.add_args();
12530    arg_count->set_isarray(false);
12531    arg_count->set_type(GLMessage::DataType::INT);
12532    arg_count->add_intvalue(count);
12533
12534    // copy argument transpose
12535    GLMessage_DataType *arg_transpose = glmsg.add_args();
12536    arg_transpose->set_isarray(false);
12537    arg_transpose->set_type(GLMessage::DataType::BOOL);
12538    arg_transpose->add_boolvalue(transpose);
12539
12540    // copy argument value
12541    GLMessage_DataType *arg_value = glmsg.add_args();
12542    arg_value->set_isarray(false);
12543    arg_value->set_type(GLMessage::DataType::INT64);
12544    arg_value->add_int64value((uintptr_t)value);
12545
12546    // call function
12547    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12548    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12549    glContext->hooks->gl.glProgramUniformMatrix3x2fv(program, location, count, transpose, value);
12550    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12551    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12552
12553    void *pointerArgs[] = {
12554        (void *) value,
12555    };
12556
12557    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12558                              threadStartTime, threadEndTime,
12559                              &glmsg, pointerArgs);
12560    glContext->traceGLMessage(&glmsg);
12561}
12562
12563void GLTrace_glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
12564    GLMessage glmsg;
12565    GLTraceContext *glContext = getGLTraceContext();
12566
12567    glmsg.set_function(GLMessage::glProgramUniformMatrix2x4fv);
12568
12569    // copy argument program
12570    GLMessage_DataType *arg_program = glmsg.add_args();
12571    arg_program->set_isarray(false);
12572    arg_program->set_type(GLMessage::DataType::INT);
12573    arg_program->add_intvalue(program);
12574
12575    // copy argument location
12576    GLMessage_DataType *arg_location = glmsg.add_args();
12577    arg_location->set_isarray(false);
12578    arg_location->set_type(GLMessage::DataType::INT);
12579    arg_location->add_intvalue(location);
12580
12581    // copy argument count
12582    GLMessage_DataType *arg_count = glmsg.add_args();
12583    arg_count->set_isarray(false);
12584    arg_count->set_type(GLMessage::DataType::INT);
12585    arg_count->add_intvalue(count);
12586
12587    // copy argument transpose
12588    GLMessage_DataType *arg_transpose = glmsg.add_args();
12589    arg_transpose->set_isarray(false);
12590    arg_transpose->set_type(GLMessage::DataType::BOOL);
12591    arg_transpose->add_boolvalue(transpose);
12592
12593    // copy argument value
12594    GLMessage_DataType *arg_value = glmsg.add_args();
12595    arg_value->set_isarray(false);
12596    arg_value->set_type(GLMessage::DataType::INT64);
12597    arg_value->add_int64value((uintptr_t)value);
12598
12599    // call function
12600    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12601    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12602    glContext->hooks->gl.glProgramUniformMatrix2x4fv(program, location, count, transpose, value);
12603    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12604    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12605
12606    void *pointerArgs[] = {
12607        (void *) value,
12608    };
12609
12610    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12611                              threadStartTime, threadEndTime,
12612                              &glmsg, pointerArgs);
12613    glContext->traceGLMessage(&glmsg);
12614}
12615
12616void GLTrace_glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
12617    GLMessage glmsg;
12618    GLTraceContext *glContext = getGLTraceContext();
12619
12620    glmsg.set_function(GLMessage::glProgramUniformMatrix4x2fv);
12621
12622    // copy argument program
12623    GLMessage_DataType *arg_program = glmsg.add_args();
12624    arg_program->set_isarray(false);
12625    arg_program->set_type(GLMessage::DataType::INT);
12626    arg_program->add_intvalue(program);
12627
12628    // copy argument location
12629    GLMessage_DataType *arg_location = glmsg.add_args();
12630    arg_location->set_isarray(false);
12631    arg_location->set_type(GLMessage::DataType::INT);
12632    arg_location->add_intvalue(location);
12633
12634    // copy argument count
12635    GLMessage_DataType *arg_count = glmsg.add_args();
12636    arg_count->set_isarray(false);
12637    arg_count->set_type(GLMessage::DataType::INT);
12638    arg_count->add_intvalue(count);
12639
12640    // copy argument transpose
12641    GLMessage_DataType *arg_transpose = glmsg.add_args();
12642    arg_transpose->set_isarray(false);
12643    arg_transpose->set_type(GLMessage::DataType::BOOL);
12644    arg_transpose->add_boolvalue(transpose);
12645
12646    // copy argument value
12647    GLMessage_DataType *arg_value = glmsg.add_args();
12648    arg_value->set_isarray(false);
12649    arg_value->set_type(GLMessage::DataType::INT64);
12650    arg_value->add_int64value((uintptr_t)value);
12651
12652    // call function
12653    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12654    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12655    glContext->hooks->gl.glProgramUniformMatrix4x2fv(program, location, count, transpose, value);
12656    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12657    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12658
12659    void *pointerArgs[] = {
12660        (void *) value,
12661    };
12662
12663    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12664                              threadStartTime, threadEndTime,
12665                              &glmsg, pointerArgs);
12666    glContext->traceGLMessage(&glmsg);
12667}
12668
12669void GLTrace_glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
12670    GLMessage glmsg;
12671    GLTraceContext *glContext = getGLTraceContext();
12672
12673    glmsg.set_function(GLMessage::glProgramUniformMatrix3x4fv);
12674
12675    // copy argument program
12676    GLMessage_DataType *arg_program = glmsg.add_args();
12677    arg_program->set_isarray(false);
12678    arg_program->set_type(GLMessage::DataType::INT);
12679    arg_program->add_intvalue(program);
12680
12681    // copy argument location
12682    GLMessage_DataType *arg_location = glmsg.add_args();
12683    arg_location->set_isarray(false);
12684    arg_location->set_type(GLMessage::DataType::INT);
12685    arg_location->add_intvalue(location);
12686
12687    // copy argument count
12688    GLMessage_DataType *arg_count = glmsg.add_args();
12689    arg_count->set_isarray(false);
12690    arg_count->set_type(GLMessage::DataType::INT);
12691    arg_count->add_intvalue(count);
12692
12693    // copy argument transpose
12694    GLMessage_DataType *arg_transpose = glmsg.add_args();
12695    arg_transpose->set_isarray(false);
12696    arg_transpose->set_type(GLMessage::DataType::BOOL);
12697    arg_transpose->add_boolvalue(transpose);
12698
12699    // copy argument value
12700    GLMessage_DataType *arg_value = glmsg.add_args();
12701    arg_value->set_isarray(false);
12702    arg_value->set_type(GLMessage::DataType::INT64);
12703    arg_value->add_int64value((uintptr_t)value);
12704
12705    // call function
12706    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12707    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12708    glContext->hooks->gl.glProgramUniformMatrix3x4fv(program, location, count, transpose, value);
12709    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12710    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12711
12712    void *pointerArgs[] = {
12713        (void *) value,
12714    };
12715
12716    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12717                              threadStartTime, threadEndTime,
12718                              &glmsg, pointerArgs);
12719    glContext->traceGLMessage(&glmsg);
12720}
12721
12722void GLTrace_glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
12723    GLMessage glmsg;
12724    GLTraceContext *glContext = getGLTraceContext();
12725
12726    glmsg.set_function(GLMessage::glProgramUniformMatrix4x3fv);
12727
12728    // copy argument program
12729    GLMessage_DataType *arg_program = glmsg.add_args();
12730    arg_program->set_isarray(false);
12731    arg_program->set_type(GLMessage::DataType::INT);
12732    arg_program->add_intvalue(program);
12733
12734    // copy argument location
12735    GLMessage_DataType *arg_location = glmsg.add_args();
12736    arg_location->set_isarray(false);
12737    arg_location->set_type(GLMessage::DataType::INT);
12738    arg_location->add_intvalue(location);
12739
12740    // copy argument count
12741    GLMessage_DataType *arg_count = glmsg.add_args();
12742    arg_count->set_isarray(false);
12743    arg_count->set_type(GLMessage::DataType::INT);
12744    arg_count->add_intvalue(count);
12745
12746    // copy argument transpose
12747    GLMessage_DataType *arg_transpose = glmsg.add_args();
12748    arg_transpose->set_isarray(false);
12749    arg_transpose->set_type(GLMessage::DataType::BOOL);
12750    arg_transpose->add_boolvalue(transpose);
12751
12752    // copy argument value
12753    GLMessage_DataType *arg_value = glmsg.add_args();
12754    arg_value->set_isarray(false);
12755    arg_value->set_type(GLMessage::DataType::INT64);
12756    arg_value->add_int64value((uintptr_t)value);
12757
12758    // call function
12759    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12760    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12761    glContext->hooks->gl.glProgramUniformMatrix4x3fv(program, location, count, transpose, value);
12762    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12763    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12764
12765    void *pointerArgs[] = {
12766        (void *) value,
12767    };
12768
12769    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12770                              threadStartTime, threadEndTime,
12771                              &glmsg, pointerArgs);
12772    glContext->traceGLMessage(&glmsg);
12773}
12774
12775void GLTrace_glValidateProgramPipeline(GLuint pipeline) {
12776    GLMessage glmsg;
12777    GLTraceContext *glContext = getGLTraceContext();
12778
12779    glmsg.set_function(GLMessage::glValidateProgramPipeline);
12780
12781    // copy argument pipeline
12782    GLMessage_DataType *arg_pipeline = glmsg.add_args();
12783    arg_pipeline->set_isarray(false);
12784    arg_pipeline->set_type(GLMessage::DataType::INT);
12785    arg_pipeline->add_intvalue(pipeline);
12786
12787    // call function
12788    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12789    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12790    glContext->hooks->gl.glValidateProgramPipeline(pipeline);
12791    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12792    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12793
12794    void *pointerArgs[] = {
12795    };
12796
12797    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12798                              threadStartTime, threadEndTime,
12799                              &glmsg, pointerArgs);
12800    glContext->traceGLMessage(&glmsg);
12801}
12802
12803void GLTrace_glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei * length, GLchar * infoLog) {
12804    GLMessage glmsg;
12805    GLTraceContext *glContext = getGLTraceContext();
12806
12807    glmsg.set_function(GLMessage::glGetProgramPipelineInfoLog);
12808
12809    // copy argument pipeline
12810    GLMessage_DataType *arg_pipeline = glmsg.add_args();
12811    arg_pipeline->set_isarray(false);
12812    arg_pipeline->set_type(GLMessage::DataType::INT);
12813    arg_pipeline->add_intvalue(pipeline);
12814
12815    // copy argument bufSize
12816    GLMessage_DataType *arg_bufSize = glmsg.add_args();
12817    arg_bufSize->set_isarray(false);
12818    arg_bufSize->set_type(GLMessage::DataType::INT);
12819    arg_bufSize->add_intvalue(bufSize);
12820
12821    // copy argument length
12822    GLMessage_DataType *arg_length = glmsg.add_args();
12823    arg_length->set_isarray(false);
12824    arg_length->set_type(GLMessage::DataType::INT64);
12825    arg_length->add_int64value((uintptr_t)length);
12826
12827    // copy argument infoLog
12828    GLMessage_DataType *arg_infoLog = glmsg.add_args();
12829    arg_infoLog->set_isarray(false);
12830    arg_infoLog->set_type(GLMessage::DataType::INT64);
12831    arg_infoLog->add_int64value((uintptr_t)infoLog);
12832
12833    // call function
12834    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12835    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12836    glContext->hooks->gl.glGetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog);
12837    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12838    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12839
12840    void *pointerArgs[] = {
12841        (void *) length,
12842        (void *) infoLog,
12843    };
12844
12845    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12846                              threadStartTime, threadEndTime,
12847                              &glmsg, pointerArgs);
12848    glContext->traceGLMessage(&glmsg);
12849}
12850
12851void GLTrace_glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format) {
12852    GLMessage glmsg;
12853    GLTraceContext *glContext = getGLTraceContext();
12854
12855    glmsg.set_function(GLMessage::glBindImageTexture);
12856
12857    // copy argument unit
12858    GLMessage_DataType *arg_unit = glmsg.add_args();
12859    arg_unit->set_isarray(false);
12860    arg_unit->set_type(GLMessage::DataType::INT);
12861    arg_unit->add_intvalue(unit);
12862
12863    // copy argument texture
12864    GLMessage_DataType *arg_texture = glmsg.add_args();
12865    arg_texture->set_isarray(false);
12866    arg_texture->set_type(GLMessage::DataType::INT);
12867    arg_texture->add_intvalue(texture);
12868
12869    // copy argument level
12870    GLMessage_DataType *arg_level = glmsg.add_args();
12871    arg_level->set_isarray(false);
12872    arg_level->set_type(GLMessage::DataType::INT);
12873    arg_level->add_intvalue(level);
12874
12875    // copy argument layered
12876    GLMessage_DataType *arg_layered = glmsg.add_args();
12877    arg_layered->set_isarray(false);
12878    arg_layered->set_type(GLMessage::DataType::BOOL);
12879    arg_layered->add_boolvalue(layered);
12880
12881    // copy argument layer
12882    GLMessage_DataType *arg_layer = glmsg.add_args();
12883    arg_layer->set_isarray(false);
12884    arg_layer->set_type(GLMessage::DataType::INT);
12885    arg_layer->add_intvalue(layer);
12886
12887    // copy argument access
12888    GLMessage_DataType *arg_access = glmsg.add_args();
12889    arg_access->set_isarray(false);
12890    arg_access->set_type(GLMessage::DataType::ENUM);
12891    arg_access->add_intvalue((int)access);
12892
12893    // copy argument format
12894    GLMessage_DataType *arg_format = glmsg.add_args();
12895    arg_format->set_isarray(false);
12896    arg_format->set_type(GLMessage::DataType::ENUM);
12897    arg_format->add_intvalue((int)format);
12898
12899    // call function
12900    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12901    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12902    glContext->hooks->gl.glBindImageTexture(unit, texture, level, layered, layer, access, format);
12903    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12904    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12905
12906    void *pointerArgs[] = {
12907    };
12908
12909    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12910                              threadStartTime, threadEndTime,
12911                              &glmsg, pointerArgs);
12912    glContext->traceGLMessage(&glmsg);
12913}
12914
12915void GLTrace_glGetBooleani_v(GLenum target, GLuint index, GLboolean * data) {
12916    GLMessage glmsg;
12917    GLTraceContext *glContext = getGLTraceContext();
12918
12919    glmsg.set_function(GLMessage::glGetBooleani_v);
12920
12921    // copy argument target
12922    GLMessage_DataType *arg_target = glmsg.add_args();
12923    arg_target->set_isarray(false);
12924    arg_target->set_type(GLMessage::DataType::ENUM);
12925    arg_target->add_intvalue((int)target);
12926
12927    // copy argument index
12928    GLMessage_DataType *arg_index = glmsg.add_args();
12929    arg_index->set_isarray(false);
12930    arg_index->set_type(GLMessage::DataType::INT);
12931    arg_index->add_intvalue(index);
12932
12933    // copy argument data
12934    GLMessage_DataType *arg_data = glmsg.add_args();
12935    arg_data->set_isarray(false);
12936    arg_data->set_type(GLMessage::DataType::INT64);
12937    arg_data->add_int64value((uintptr_t)data);
12938
12939    // call function
12940    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12941    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12942    glContext->hooks->gl.glGetBooleani_v(target, index, data);
12943    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12944    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12945
12946    void *pointerArgs[] = {
12947        (void *) data,
12948    };
12949
12950    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12951                              threadStartTime, threadEndTime,
12952                              &glmsg, pointerArgs);
12953    glContext->traceGLMessage(&glmsg);
12954}
12955
12956void GLTrace_glMemoryBarrier(GLbitfield barriers) {
12957    GLMessage glmsg;
12958    GLTraceContext *glContext = getGLTraceContext();
12959
12960    glmsg.set_function(GLMessage::glMemoryBarrier);
12961
12962    // copy argument barriers
12963    GLMessage_DataType *arg_barriers = glmsg.add_args();
12964    arg_barriers->set_isarray(false);
12965    arg_barriers->set_type(GLMessage::DataType::INT);
12966    arg_barriers->add_intvalue(barriers);
12967
12968    // call function
12969    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12970    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12971    glContext->hooks->gl.glMemoryBarrier(barriers);
12972    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12973    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12974
12975    void *pointerArgs[] = {
12976    };
12977
12978    fixupGLMessage(glContext, wallStartTime, wallEndTime,
12979                              threadStartTime, threadEndTime,
12980                              &glmsg, pointerArgs);
12981    glContext->traceGLMessage(&glmsg);
12982}
12983
12984void GLTrace_glMemoryBarrierByRegion(GLbitfield barriers) {
12985    GLMessage glmsg;
12986    GLTraceContext *glContext = getGLTraceContext();
12987
12988    glmsg.set_function(GLMessage::glMemoryBarrierByRegion);
12989
12990    // copy argument barriers
12991    GLMessage_DataType *arg_barriers = glmsg.add_args();
12992    arg_barriers->set_isarray(false);
12993    arg_barriers->set_type(GLMessage::DataType::INT);
12994    arg_barriers->add_intvalue(barriers);
12995
12996    // call function
12997    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12998    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12999    glContext->hooks->gl.glMemoryBarrierByRegion(barriers);
13000    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13001    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13002
13003    void *pointerArgs[] = {
13004    };
13005
13006    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13007                              threadStartTime, threadEndTime,
13008                              &glmsg, pointerArgs);
13009    glContext->traceGLMessage(&glmsg);
13010}
13011
13012void GLTrace_glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) {
13013    GLMessage glmsg;
13014    GLTraceContext *glContext = getGLTraceContext();
13015
13016    glmsg.set_function(GLMessage::glTexStorage2DMultisample);
13017
13018    // copy argument target
13019    GLMessage_DataType *arg_target = glmsg.add_args();
13020    arg_target->set_isarray(false);
13021    arg_target->set_type(GLMessage::DataType::ENUM);
13022    arg_target->add_intvalue((int)target);
13023
13024    // copy argument samples
13025    GLMessage_DataType *arg_samples = glmsg.add_args();
13026    arg_samples->set_isarray(false);
13027    arg_samples->set_type(GLMessage::DataType::INT);
13028    arg_samples->add_intvalue(samples);
13029
13030    // copy argument internalformat
13031    GLMessage_DataType *arg_internalformat = glmsg.add_args();
13032    arg_internalformat->set_isarray(false);
13033    arg_internalformat->set_type(GLMessage::DataType::ENUM);
13034    arg_internalformat->add_intvalue((int)internalformat);
13035
13036    // copy argument width
13037    GLMessage_DataType *arg_width = glmsg.add_args();
13038    arg_width->set_isarray(false);
13039    arg_width->set_type(GLMessage::DataType::INT);
13040    arg_width->add_intvalue(width);
13041
13042    // copy argument height
13043    GLMessage_DataType *arg_height = glmsg.add_args();
13044    arg_height->set_isarray(false);
13045    arg_height->set_type(GLMessage::DataType::INT);
13046    arg_height->add_intvalue(height);
13047
13048    // copy argument fixedsamplelocations
13049    GLMessage_DataType *arg_fixedsamplelocations = glmsg.add_args();
13050    arg_fixedsamplelocations->set_isarray(false);
13051    arg_fixedsamplelocations->set_type(GLMessage::DataType::BOOL);
13052    arg_fixedsamplelocations->add_boolvalue(fixedsamplelocations);
13053
13054    // call function
13055    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13056    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13057    glContext->hooks->gl.glTexStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations);
13058    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13059    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13060
13061    void *pointerArgs[] = {
13062    };
13063
13064    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13065                              threadStartTime, threadEndTime,
13066                              &glmsg, pointerArgs);
13067    glContext->traceGLMessage(&glmsg);
13068}
13069
13070void GLTrace_glGetMultisamplefv(GLenum pname, GLuint index, GLfloat * val) {
13071    GLMessage glmsg;
13072    GLTraceContext *glContext = getGLTraceContext();
13073
13074    glmsg.set_function(GLMessage::glGetMultisamplefv);
13075
13076    // copy argument pname
13077    GLMessage_DataType *arg_pname = glmsg.add_args();
13078    arg_pname->set_isarray(false);
13079    arg_pname->set_type(GLMessage::DataType::ENUM);
13080    arg_pname->add_intvalue((int)pname);
13081
13082    // copy argument index
13083    GLMessage_DataType *arg_index = glmsg.add_args();
13084    arg_index->set_isarray(false);
13085    arg_index->set_type(GLMessage::DataType::INT);
13086    arg_index->add_intvalue(index);
13087
13088    // copy argument val
13089    GLMessage_DataType *arg_val = glmsg.add_args();
13090    arg_val->set_isarray(false);
13091    arg_val->set_type(GLMessage::DataType::INT64);
13092    arg_val->add_int64value((uintptr_t)val);
13093
13094    // call function
13095    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13096    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13097    glContext->hooks->gl.glGetMultisamplefv(pname, index, val);
13098    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13099    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13100
13101    void *pointerArgs[] = {
13102        (void *) val,
13103    };
13104
13105    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13106                              threadStartTime, threadEndTime,
13107                              &glmsg, pointerArgs);
13108    glContext->traceGLMessage(&glmsg);
13109}
13110
13111void GLTrace_glSampleMaski(GLuint maskNumber, GLbitfield mask) {
13112    GLMessage glmsg;
13113    GLTraceContext *glContext = getGLTraceContext();
13114
13115    glmsg.set_function(GLMessage::glSampleMaski);
13116
13117    // copy argument maskNumber
13118    GLMessage_DataType *arg_maskNumber = glmsg.add_args();
13119    arg_maskNumber->set_isarray(false);
13120    arg_maskNumber->set_type(GLMessage::DataType::INT);
13121    arg_maskNumber->add_intvalue(maskNumber);
13122
13123    // copy argument mask
13124    GLMessage_DataType *arg_mask = glmsg.add_args();
13125    arg_mask->set_isarray(false);
13126    arg_mask->set_type(GLMessage::DataType::INT);
13127    arg_mask->add_intvalue(mask);
13128
13129    // call function
13130    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13131    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13132    glContext->hooks->gl.glSampleMaski(maskNumber, mask);
13133    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13134    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13135
13136    void *pointerArgs[] = {
13137    };
13138
13139    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13140                              threadStartTime, threadEndTime,
13141                              &glmsg, pointerArgs);
13142    glContext->traceGLMessage(&glmsg);
13143}
13144
13145void GLTrace_glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint * params) {
13146    GLMessage glmsg;
13147    GLTraceContext *glContext = getGLTraceContext();
13148
13149    glmsg.set_function(GLMessage::glGetTexLevelParameteriv);
13150
13151    // copy argument target
13152    GLMessage_DataType *arg_target = glmsg.add_args();
13153    arg_target->set_isarray(false);
13154    arg_target->set_type(GLMessage::DataType::ENUM);
13155    arg_target->add_intvalue((int)target);
13156
13157    // copy argument level
13158    GLMessage_DataType *arg_level = glmsg.add_args();
13159    arg_level->set_isarray(false);
13160    arg_level->set_type(GLMessage::DataType::INT);
13161    arg_level->add_intvalue(level);
13162
13163    // copy argument pname
13164    GLMessage_DataType *arg_pname = glmsg.add_args();
13165    arg_pname->set_isarray(false);
13166    arg_pname->set_type(GLMessage::DataType::ENUM);
13167    arg_pname->add_intvalue((int)pname);
13168
13169    // copy argument params
13170    GLMessage_DataType *arg_params = glmsg.add_args();
13171    arg_params->set_isarray(false);
13172    arg_params->set_type(GLMessage::DataType::INT64);
13173    arg_params->add_int64value((uintptr_t)params);
13174
13175    // call function
13176    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13177    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13178    glContext->hooks->gl.glGetTexLevelParameteriv(target, level, pname, params);
13179    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13180    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13181
13182    void *pointerArgs[] = {
13183        (void *) params,
13184    };
13185
13186    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13187                              threadStartTime, threadEndTime,
13188                              &glmsg, pointerArgs);
13189    glContext->traceGLMessage(&glmsg);
13190}
13191
13192void GLTrace_glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat * params) {
13193    GLMessage glmsg;
13194    GLTraceContext *glContext = getGLTraceContext();
13195
13196    glmsg.set_function(GLMessage::glGetTexLevelParameterfv);
13197
13198    // copy argument target
13199    GLMessage_DataType *arg_target = glmsg.add_args();
13200    arg_target->set_isarray(false);
13201    arg_target->set_type(GLMessage::DataType::ENUM);
13202    arg_target->add_intvalue((int)target);
13203
13204    // copy argument level
13205    GLMessage_DataType *arg_level = glmsg.add_args();
13206    arg_level->set_isarray(false);
13207    arg_level->set_type(GLMessage::DataType::INT);
13208    arg_level->add_intvalue(level);
13209
13210    // copy argument pname
13211    GLMessage_DataType *arg_pname = glmsg.add_args();
13212    arg_pname->set_isarray(false);
13213    arg_pname->set_type(GLMessage::DataType::ENUM);
13214    arg_pname->add_intvalue((int)pname);
13215
13216    // copy argument params
13217    GLMessage_DataType *arg_params = glmsg.add_args();
13218    arg_params->set_isarray(false);
13219    arg_params->set_type(GLMessage::DataType::INT64);
13220    arg_params->add_int64value((uintptr_t)params);
13221
13222    // call function
13223    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13224    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13225    glContext->hooks->gl.glGetTexLevelParameterfv(target, level, pname, params);
13226    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13227    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13228
13229    void *pointerArgs[] = {
13230        (void *) params,
13231    };
13232
13233    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13234                              threadStartTime, threadEndTime,
13235                              &glmsg, pointerArgs);
13236    glContext->traceGLMessage(&glmsg);
13237}
13238
13239void GLTrace_glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) {
13240    GLMessage glmsg;
13241    GLTraceContext *glContext = getGLTraceContext();
13242
13243    glmsg.set_function(GLMessage::glBindVertexBuffer);
13244
13245    // copy argument bindingindex
13246    GLMessage_DataType *arg_bindingindex = glmsg.add_args();
13247    arg_bindingindex->set_isarray(false);
13248    arg_bindingindex->set_type(GLMessage::DataType::INT);
13249    arg_bindingindex->add_intvalue(bindingindex);
13250
13251    // copy argument buffer
13252    GLMessage_DataType *arg_buffer = glmsg.add_args();
13253    arg_buffer->set_isarray(false);
13254    arg_buffer->set_type(GLMessage::DataType::INT);
13255    arg_buffer->add_intvalue(buffer);
13256
13257    // copy argument offset
13258    GLMessage_DataType *arg_offset = glmsg.add_args();
13259    arg_offset->set_isarray(false);
13260    arg_offset->set_type(GLMessage::DataType::INT);
13261    arg_offset->add_intvalue(offset);
13262
13263    // copy argument stride
13264    GLMessage_DataType *arg_stride = glmsg.add_args();
13265    arg_stride->set_isarray(false);
13266    arg_stride->set_type(GLMessage::DataType::INT);
13267    arg_stride->add_intvalue(stride);
13268
13269    // call function
13270    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13271    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13272    glContext->hooks->gl.glBindVertexBuffer(bindingindex, buffer, offset, stride);
13273    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13274    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13275
13276    void *pointerArgs[] = {
13277    };
13278
13279    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13280                              threadStartTime, threadEndTime,
13281                              &glmsg, pointerArgs);
13282    glContext->traceGLMessage(&glmsg);
13283}
13284
13285void GLTrace_glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset) {
13286    GLMessage glmsg;
13287    GLTraceContext *glContext = getGLTraceContext();
13288
13289    glmsg.set_function(GLMessage::glVertexAttribFormat);
13290
13291    // copy argument attribindex
13292    GLMessage_DataType *arg_attribindex = glmsg.add_args();
13293    arg_attribindex->set_isarray(false);
13294    arg_attribindex->set_type(GLMessage::DataType::INT);
13295    arg_attribindex->add_intvalue(attribindex);
13296
13297    // copy argument size
13298    GLMessage_DataType *arg_size = glmsg.add_args();
13299    arg_size->set_isarray(false);
13300    arg_size->set_type(GLMessage::DataType::INT);
13301    arg_size->add_intvalue(size);
13302
13303    // copy argument type
13304    GLMessage_DataType *arg_type = glmsg.add_args();
13305    arg_type->set_isarray(false);
13306    arg_type->set_type(GLMessage::DataType::ENUM);
13307    arg_type->add_intvalue((int)type);
13308
13309    // copy argument normalized
13310    GLMessage_DataType *arg_normalized = glmsg.add_args();
13311    arg_normalized->set_isarray(false);
13312    arg_normalized->set_type(GLMessage::DataType::BOOL);
13313    arg_normalized->add_boolvalue(normalized);
13314
13315    // copy argument relativeoffset
13316    GLMessage_DataType *arg_relativeoffset = glmsg.add_args();
13317    arg_relativeoffset->set_isarray(false);
13318    arg_relativeoffset->set_type(GLMessage::DataType::INT);
13319    arg_relativeoffset->add_intvalue(relativeoffset);
13320
13321    // call function
13322    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13323    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13324    glContext->hooks->gl.glVertexAttribFormat(attribindex, size, type, normalized, relativeoffset);
13325    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13326    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13327
13328    void *pointerArgs[] = {
13329    };
13330
13331    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13332                              threadStartTime, threadEndTime,
13333                              &glmsg, pointerArgs);
13334    glContext->traceGLMessage(&glmsg);
13335}
13336
13337void GLTrace_glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) {
13338    GLMessage glmsg;
13339    GLTraceContext *glContext = getGLTraceContext();
13340
13341    glmsg.set_function(GLMessage::glVertexAttribIFormat);
13342
13343    // copy argument attribindex
13344    GLMessage_DataType *arg_attribindex = glmsg.add_args();
13345    arg_attribindex->set_isarray(false);
13346    arg_attribindex->set_type(GLMessage::DataType::INT);
13347    arg_attribindex->add_intvalue(attribindex);
13348
13349    // copy argument size
13350    GLMessage_DataType *arg_size = glmsg.add_args();
13351    arg_size->set_isarray(false);
13352    arg_size->set_type(GLMessage::DataType::INT);
13353    arg_size->add_intvalue(size);
13354
13355    // copy argument type
13356    GLMessage_DataType *arg_type = glmsg.add_args();
13357    arg_type->set_isarray(false);
13358    arg_type->set_type(GLMessage::DataType::ENUM);
13359    arg_type->add_intvalue((int)type);
13360
13361    // copy argument relativeoffset
13362    GLMessage_DataType *arg_relativeoffset = glmsg.add_args();
13363    arg_relativeoffset->set_isarray(false);
13364    arg_relativeoffset->set_type(GLMessage::DataType::INT);
13365    arg_relativeoffset->add_intvalue(relativeoffset);
13366
13367    // call function
13368    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13369    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13370    glContext->hooks->gl.glVertexAttribIFormat(attribindex, size, type, relativeoffset);
13371    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13372    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13373
13374    void *pointerArgs[] = {
13375    };
13376
13377    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13378                              threadStartTime, threadEndTime,
13379                              &glmsg, pointerArgs);
13380    glContext->traceGLMessage(&glmsg);
13381}
13382
13383void GLTrace_glVertexAttribBinding(GLuint attribindex, GLuint bindingindex) {
13384    GLMessage glmsg;
13385    GLTraceContext *glContext = getGLTraceContext();
13386
13387    glmsg.set_function(GLMessage::glVertexAttribBinding);
13388
13389    // copy argument attribindex
13390    GLMessage_DataType *arg_attribindex = glmsg.add_args();
13391    arg_attribindex->set_isarray(false);
13392    arg_attribindex->set_type(GLMessage::DataType::INT);
13393    arg_attribindex->add_intvalue(attribindex);
13394
13395    // copy argument bindingindex
13396    GLMessage_DataType *arg_bindingindex = glmsg.add_args();
13397    arg_bindingindex->set_isarray(false);
13398    arg_bindingindex->set_type(GLMessage::DataType::INT);
13399    arg_bindingindex->add_intvalue(bindingindex);
13400
13401    // call function
13402    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13403    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13404    glContext->hooks->gl.glVertexAttribBinding(attribindex, bindingindex);
13405    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13406    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13407
13408    void *pointerArgs[] = {
13409    };
13410
13411    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13412                              threadStartTime, threadEndTime,
13413                              &glmsg, pointerArgs);
13414    glContext->traceGLMessage(&glmsg);
13415}
13416
13417void GLTrace_glVertexBindingDivisor(GLuint bindingindex, GLuint divisor) {
13418    GLMessage glmsg;
13419    GLTraceContext *glContext = getGLTraceContext();
13420
13421    glmsg.set_function(GLMessage::glVertexBindingDivisor);
13422
13423    // copy argument bindingindex
13424    GLMessage_DataType *arg_bindingindex = glmsg.add_args();
13425    arg_bindingindex->set_isarray(false);
13426    arg_bindingindex->set_type(GLMessage::DataType::INT);
13427    arg_bindingindex->add_intvalue(bindingindex);
13428
13429    // copy argument divisor
13430    GLMessage_DataType *arg_divisor = glmsg.add_args();
13431    arg_divisor->set_isarray(false);
13432    arg_divisor->set_type(GLMessage::DataType::INT);
13433    arg_divisor->add_intvalue(divisor);
13434
13435    // call function
13436    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13437    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13438    glContext->hooks->gl.glVertexBindingDivisor(bindingindex, divisor);
13439    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13440    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13441
13442    void *pointerArgs[] = {
13443    };
13444
13445    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13446                              threadStartTime, threadEndTime,
13447                              &glmsg, pointerArgs);
13448    glContext->traceGLMessage(&glmsg);
13449}
13450
13451
13452// Definitions for GL2Ext APIs
13453
13454void GLTrace_glBlendBarrierKHR(void) {
13455    GLMessage glmsg;
13456    GLTraceContext *glContext = getGLTraceContext();
13457
13458    glmsg.set_function(GLMessage::glBlendBarrierKHR);
13459
13460    // call function
13461    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13462    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13463    glContext->hooks->gl.glBlendBarrierKHR();
13464    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13465    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13466
13467    void *pointerArgs[] = {
13468    };
13469
13470    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13471                              threadStartTime, threadEndTime,
13472                              &glmsg, pointerArgs);
13473    glContext->traceGLMessage(&glmsg);
13474}
13475
13476void GLTrace_glDebugMessageControlKHR(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled) {
13477    GLMessage glmsg;
13478    GLTraceContext *glContext = getGLTraceContext();
13479
13480    glmsg.set_function(GLMessage::glDebugMessageControlKHR);
13481
13482    // copy argument source
13483    GLMessage_DataType *arg_source = glmsg.add_args();
13484    arg_source->set_isarray(false);
13485    arg_source->set_type(GLMessage::DataType::ENUM);
13486    arg_source->add_intvalue((int)source);
13487
13488    // copy argument type
13489    GLMessage_DataType *arg_type = glmsg.add_args();
13490    arg_type->set_isarray(false);
13491    arg_type->set_type(GLMessage::DataType::ENUM);
13492    arg_type->add_intvalue((int)type);
13493
13494    // copy argument severity
13495    GLMessage_DataType *arg_severity = glmsg.add_args();
13496    arg_severity->set_isarray(false);
13497    arg_severity->set_type(GLMessage::DataType::ENUM);
13498    arg_severity->add_intvalue((int)severity);
13499
13500    // copy argument count
13501    GLMessage_DataType *arg_count = glmsg.add_args();
13502    arg_count->set_isarray(false);
13503    arg_count->set_type(GLMessage::DataType::INT);
13504    arg_count->add_intvalue(count);
13505
13506    // copy argument ids
13507    GLMessage_DataType *arg_ids = glmsg.add_args();
13508    arg_ids->set_isarray(false);
13509    arg_ids->set_type(GLMessage::DataType::INT64);
13510    arg_ids->add_int64value((uintptr_t)ids);
13511
13512    // copy argument enabled
13513    GLMessage_DataType *arg_enabled = glmsg.add_args();
13514    arg_enabled->set_isarray(false);
13515    arg_enabled->set_type(GLMessage::DataType::BOOL);
13516    arg_enabled->add_boolvalue(enabled);
13517
13518    // call function
13519    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13520    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13521    glContext->hooks->gl.glDebugMessageControlKHR(source, type, severity, count, ids, enabled);
13522    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13523    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13524
13525    void *pointerArgs[] = {
13526        (void *) ids,
13527    };
13528
13529    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13530                              threadStartTime, threadEndTime,
13531                              &glmsg, pointerArgs);
13532    glContext->traceGLMessage(&glmsg);
13533}
13534
13535void GLTrace_glDebugMessageInsertKHR(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf) {
13536    GLMessage glmsg;
13537    GLTraceContext *glContext = getGLTraceContext();
13538
13539    glmsg.set_function(GLMessage::glDebugMessageInsertKHR);
13540
13541    // copy argument source
13542    GLMessage_DataType *arg_source = glmsg.add_args();
13543    arg_source->set_isarray(false);
13544    arg_source->set_type(GLMessage::DataType::ENUM);
13545    arg_source->add_intvalue((int)source);
13546
13547    // copy argument type
13548    GLMessage_DataType *arg_type = glmsg.add_args();
13549    arg_type->set_isarray(false);
13550    arg_type->set_type(GLMessage::DataType::ENUM);
13551    arg_type->add_intvalue((int)type);
13552
13553    // copy argument id
13554    GLMessage_DataType *arg_id = glmsg.add_args();
13555    arg_id->set_isarray(false);
13556    arg_id->set_type(GLMessage::DataType::INT);
13557    arg_id->add_intvalue(id);
13558
13559    // copy argument severity
13560    GLMessage_DataType *arg_severity = glmsg.add_args();
13561    arg_severity->set_isarray(false);
13562    arg_severity->set_type(GLMessage::DataType::ENUM);
13563    arg_severity->add_intvalue((int)severity);
13564
13565    // copy argument length
13566    GLMessage_DataType *arg_length = glmsg.add_args();
13567    arg_length->set_isarray(false);
13568    arg_length->set_type(GLMessage::DataType::INT);
13569    arg_length->add_intvalue(length);
13570
13571    // copy argument buf
13572    GLMessage_DataType *arg_buf = glmsg.add_args();
13573    arg_buf->set_isarray(false);
13574    arg_buf->set_type(GLMessage::DataType::INT64);
13575    arg_buf->add_int64value((uintptr_t)buf);
13576
13577    // call function
13578    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13579    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13580    glContext->hooks->gl.glDebugMessageInsertKHR(source, type, id, severity, length, buf);
13581    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13582    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13583
13584    void *pointerArgs[] = {
13585        (void *) buf,
13586    };
13587
13588    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13589                              threadStartTime, threadEndTime,
13590                              &glmsg, pointerArgs);
13591    glContext->traceGLMessage(&glmsg);
13592}
13593
13594void GLTrace_glDebugMessageCallbackKHR(GLDEBUGPROCKHR callback, const void * userParam) {
13595    GLMessage glmsg;
13596    GLTraceContext *glContext = getGLTraceContext();
13597
13598    glmsg.set_function(GLMessage::glDebugMessageCallbackKHR);
13599
13600    // copy argument callback
13601    GLMessage_DataType *arg_callback = glmsg.add_args();
13602    arg_callback->set_isarray(false);
13603    arg_callback->set_type(GLMessage::DataType::INT64);
13604    arg_callback->add_int64value((uintptr_t)callback);
13605
13606    // copy argument userParam
13607    GLMessage_DataType *arg_userParam = glmsg.add_args();
13608    arg_userParam->set_isarray(false);
13609    arg_userParam->set_type(GLMessage::DataType::INT64);
13610    arg_userParam->add_int64value((uintptr_t)userParam);
13611
13612    // call function
13613    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13614    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13615    glContext->hooks->gl.glDebugMessageCallbackKHR(callback, userParam);
13616    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13617    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13618
13619    void *pointerArgs[] = {
13620        (void *) callback,
13621        (void *) userParam,
13622    };
13623
13624    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13625                              threadStartTime, threadEndTime,
13626                              &glmsg, pointerArgs);
13627    glContext->traceGLMessage(&glmsg);
13628}
13629
13630GLuint GLTrace_glGetDebugMessageLogKHR(GLuint count, GLsizei bufSize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog) {
13631    GLMessage glmsg;
13632    GLTraceContext *glContext = getGLTraceContext();
13633
13634    glmsg.set_function(GLMessage::glGetDebugMessageLogKHR);
13635
13636    // copy argument count
13637    GLMessage_DataType *arg_count = glmsg.add_args();
13638    arg_count->set_isarray(false);
13639    arg_count->set_type(GLMessage::DataType::INT);
13640    arg_count->add_intvalue(count);
13641
13642    // copy argument bufSize
13643    GLMessage_DataType *arg_bufSize = glmsg.add_args();
13644    arg_bufSize->set_isarray(false);
13645    arg_bufSize->set_type(GLMessage::DataType::INT);
13646    arg_bufSize->add_intvalue(bufSize);
13647
13648    // copy argument sources
13649    GLMessage_DataType *arg_sources = glmsg.add_args();
13650    arg_sources->set_isarray(false);
13651    arg_sources->set_type(GLMessage::DataType::INT64);
13652    arg_sources->add_int64value((uintptr_t)sources);
13653
13654    // copy argument types
13655    GLMessage_DataType *arg_types = glmsg.add_args();
13656    arg_types->set_isarray(false);
13657    arg_types->set_type(GLMessage::DataType::INT64);
13658    arg_types->add_int64value((uintptr_t)types);
13659
13660    // copy argument ids
13661    GLMessage_DataType *arg_ids = glmsg.add_args();
13662    arg_ids->set_isarray(false);
13663    arg_ids->set_type(GLMessage::DataType::INT64);
13664    arg_ids->add_int64value((uintptr_t)ids);
13665
13666    // copy argument severities
13667    GLMessage_DataType *arg_severities = glmsg.add_args();
13668    arg_severities->set_isarray(false);
13669    arg_severities->set_type(GLMessage::DataType::INT64);
13670    arg_severities->add_int64value((uintptr_t)severities);
13671
13672    // copy argument lengths
13673    GLMessage_DataType *arg_lengths = glmsg.add_args();
13674    arg_lengths->set_isarray(false);
13675    arg_lengths->set_type(GLMessage::DataType::INT64);
13676    arg_lengths->add_int64value((uintptr_t)lengths);
13677
13678    // copy argument messageLog
13679    GLMessage_DataType *arg_messageLog = glmsg.add_args();
13680    arg_messageLog->set_isarray(false);
13681    arg_messageLog->set_type(GLMessage::DataType::INT64);
13682    arg_messageLog->add_int64value((uintptr_t)messageLog);
13683
13684    // call function
13685    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13686    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13687    GLuint retValue = glContext->hooks->gl.glGetDebugMessageLogKHR(count, bufSize, sources, types, ids, severities, lengths, messageLog);
13688    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13689    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13690
13691    // set return value
13692    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
13693    rt->set_isarray(false);
13694    rt->set_type(GLMessage::DataType::INT);
13695    rt->add_intvalue(retValue);
13696
13697    void *pointerArgs[] = {
13698        (void *) sources,
13699        (void *) types,
13700        (void *) ids,
13701        (void *) severities,
13702        (void *) lengths,
13703        (void *) messageLog,
13704    };
13705
13706    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13707                              threadStartTime, threadEndTime,
13708                              &glmsg, pointerArgs);
13709    glContext->traceGLMessage(&glmsg);
13710
13711    return retValue;
13712}
13713
13714void GLTrace_glPushDebugGroupKHR(GLenum source, GLuint id, GLsizei length, const GLchar * message) {
13715    GLMessage glmsg;
13716    GLTraceContext *glContext = getGLTraceContext();
13717
13718    glmsg.set_function(GLMessage::glPushDebugGroupKHR);
13719
13720    // copy argument source
13721    GLMessage_DataType *arg_source = glmsg.add_args();
13722    arg_source->set_isarray(false);
13723    arg_source->set_type(GLMessage::DataType::ENUM);
13724    arg_source->add_intvalue((int)source);
13725
13726    // copy argument id
13727    GLMessage_DataType *arg_id = glmsg.add_args();
13728    arg_id->set_isarray(false);
13729    arg_id->set_type(GLMessage::DataType::INT);
13730    arg_id->add_intvalue(id);
13731
13732    // copy argument length
13733    GLMessage_DataType *arg_length = glmsg.add_args();
13734    arg_length->set_isarray(false);
13735    arg_length->set_type(GLMessage::DataType::INT);
13736    arg_length->add_intvalue(length);
13737
13738    // copy argument message
13739    GLMessage_DataType *arg_message = glmsg.add_args();
13740    arg_message->set_isarray(false);
13741    arg_message->set_type(GLMessage::DataType::INT64);
13742    arg_message->add_int64value((uintptr_t)message);
13743
13744    // call function
13745    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13746    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13747    glContext->hooks->gl.glPushDebugGroupKHR(source, id, length, message);
13748    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13749    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13750
13751    void *pointerArgs[] = {
13752        (void *) message,
13753    };
13754
13755    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13756                              threadStartTime, threadEndTime,
13757                              &glmsg, pointerArgs);
13758    glContext->traceGLMessage(&glmsg);
13759}
13760
13761void GLTrace_glPopDebugGroupKHR(void) {
13762    GLMessage glmsg;
13763    GLTraceContext *glContext = getGLTraceContext();
13764
13765    glmsg.set_function(GLMessage::glPopDebugGroupKHR);
13766
13767    // call function
13768    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13769    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13770    glContext->hooks->gl.glPopDebugGroupKHR();
13771    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13772    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13773
13774    void *pointerArgs[] = {
13775    };
13776
13777    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13778                              threadStartTime, threadEndTime,
13779                              &glmsg, pointerArgs);
13780    glContext->traceGLMessage(&glmsg);
13781}
13782
13783void GLTrace_glObjectLabelKHR(GLenum identifier, GLuint name, GLsizei length, const GLchar * label) {
13784    GLMessage glmsg;
13785    GLTraceContext *glContext = getGLTraceContext();
13786
13787    glmsg.set_function(GLMessage::glObjectLabelKHR);
13788
13789    // copy argument identifier
13790    GLMessage_DataType *arg_identifier = glmsg.add_args();
13791    arg_identifier->set_isarray(false);
13792    arg_identifier->set_type(GLMessage::DataType::ENUM);
13793    arg_identifier->add_intvalue((int)identifier);
13794
13795    // copy argument name
13796    GLMessage_DataType *arg_name = glmsg.add_args();
13797    arg_name->set_isarray(false);
13798    arg_name->set_type(GLMessage::DataType::INT);
13799    arg_name->add_intvalue(name);
13800
13801    // copy argument length
13802    GLMessage_DataType *arg_length = glmsg.add_args();
13803    arg_length->set_isarray(false);
13804    arg_length->set_type(GLMessage::DataType::INT);
13805    arg_length->add_intvalue(length);
13806
13807    // copy argument label
13808    GLMessage_DataType *arg_label = glmsg.add_args();
13809    arg_label->set_isarray(false);
13810    arg_label->set_type(GLMessage::DataType::INT64);
13811    arg_label->add_int64value((uintptr_t)label);
13812
13813    // call function
13814    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13815    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13816    glContext->hooks->gl.glObjectLabelKHR(identifier, name, length, label);
13817    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13818    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13819
13820    void *pointerArgs[] = {
13821        (void *) label,
13822    };
13823
13824    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13825                              threadStartTime, threadEndTime,
13826                              &glmsg, pointerArgs);
13827    glContext->traceGLMessage(&glmsg);
13828}
13829
13830void GLTrace_glGetObjectLabelKHR(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei * length, GLchar * label) {
13831    GLMessage glmsg;
13832    GLTraceContext *glContext = getGLTraceContext();
13833
13834    glmsg.set_function(GLMessage::glGetObjectLabelKHR);
13835
13836    // copy argument identifier
13837    GLMessage_DataType *arg_identifier = glmsg.add_args();
13838    arg_identifier->set_isarray(false);
13839    arg_identifier->set_type(GLMessage::DataType::ENUM);
13840    arg_identifier->add_intvalue((int)identifier);
13841
13842    // copy argument name
13843    GLMessage_DataType *arg_name = glmsg.add_args();
13844    arg_name->set_isarray(false);
13845    arg_name->set_type(GLMessage::DataType::INT);
13846    arg_name->add_intvalue(name);
13847
13848    // copy argument bufSize
13849    GLMessage_DataType *arg_bufSize = glmsg.add_args();
13850    arg_bufSize->set_isarray(false);
13851    arg_bufSize->set_type(GLMessage::DataType::INT);
13852    arg_bufSize->add_intvalue(bufSize);
13853
13854    // copy argument length
13855    GLMessage_DataType *arg_length = glmsg.add_args();
13856    arg_length->set_isarray(false);
13857    arg_length->set_type(GLMessage::DataType::INT64);
13858    arg_length->add_int64value((uintptr_t)length);
13859
13860    // copy argument label
13861    GLMessage_DataType *arg_label = glmsg.add_args();
13862    arg_label->set_isarray(false);
13863    arg_label->set_type(GLMessage::DataType::INT64);
13864    arg_label->add_int64value((uintptr_t)label);
13865
13866    // call function
13867    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13868    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13869    glContext->hooks->gl.glGetObjectLabelKHR(identifier, name, bufSize, length, label);
13870    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13871    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13872
13873    void *pointerArgs[] = {
13874        (void *) length,
13875        (void *) label,
13876    };
13877
13878    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13879                              threadStartTime, threadEndTime,
13880                              &glmsg, pointerArgs);
13881    glContext->traceGLMessage(&glmsg);
13882}
13883
13884void GLTrace_glObjectPtrLabelKHR(const void * ptr, GLsizei length, const GLchar * label) {
13885    GLMessage glmsg;
13886    GLTraceContext *glContext = getGLTraceContext();
13887
13888    glmsg.set_function(GLMessage::glObjectPtrLabelKHR);
13889
13890    // copy argument ptr
13891    GLMessage_DataType *arg_ptr = glmsg.add_args();
13892    arg_ptr->set_isarray(false);
13893    arg_ptr->set_type(GLMessage::DataType::INT64);
13894    arg_ptr->add_int64value((uintptr_t)ptr);
13895
13896    // copy argument length
13897    GLMessage_DataType *arg_length = glmsg.add_args();
13898    arg_length->set_isarray(false);
13899    arg_length->set_type(GLMessage::DataType::INT);
13900    arg_length->add_intvalue(length);
13901
13902    // copy argument label
13903    GLMessage_DataType *arg_label = glmsg.add_args();
13904    arg_label->set_isarray(false);
13905    arg_label->set_type(GLMessage::DataType::INT64);
13906    arg_label->add_int64value((uintptr_t)label);
13907
13908    // call function
13909    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13910    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13911    glContext->hooks->gl.glObjectPtrLabelKHR(ptr, length, label);
13912    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13913    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13914
13915    void *pointerArgs[] = {
13916        (void *) ptr,
13917        (void *) label,
13918    };
13919
13920    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13921                              threadStartTime, threadEndTime,
13922                              &glmsg, pointerArgs);
13923    glContext->traceGLMessage(&glmsg);
13924}
13925
13926void GLTrace_glGetObjectPtrLabelKHR(const void * ptr, GLsizei bufSize, GLsizei * length, GLchar * label) {
13927    GLMessage glmsg;
13928    GLTraceContext *glContext = getGLTraceContext();
13929
13930    glmsg.set_function(GLMessage::glGetObjectPtrLabelKHR);
13931
13932    // copy argument ptr
13933    GLMessage_DataType *arg_ptr = glmsg.add_args();
13934    arg_ptr->set_isarray(false);
13935    arg_ptr->set_type(GLMessage::DataType::INT64);
13936    arg_ptr->add_int64value((uintptr_t)ptr);
13937
13938    // copy argument bufSize
13939    GLMessage_DataType *arg_bufSize = glmsg.add_args();
13940    arg_bufSize->set_isarray(false);
13941    arg_bufSize->set_type(GLMessage::DataType::INT);
13942    arg_bufSize->add_intvalue(bufSize);
13943
13944    // copy argument length
13945    GLMessage_DataType *arg_length = glmsg.add_args();
13946    arg_length->set_isarray(false);
13947    arg_length->set_type(GLMessage::DataType::INT64);
13948    arg_length->add_int64value((uintptr_t)length);
13949
13950    // copy argument label
13951    GLMessage_DataType *arg_label = glmsg.add_args();
13952    arg_label->set_isarray(false);
13953    arg_label->set_type(GLMessage::DataType::INT64);
13954    arg_label->add_int64value((uintptr_t)label);
13955
13956    // call function
13957    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13958    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13959    glContext->hooks->gl.glGetObjectPtrLabelKHR(ptr, bufSize, length, label);
13960    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13961    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13962
13963    void *pointerArgs[] = {
13964        (void *) ptr,
13965        (void *) length,
13966        (void *) label,
13967    };
13968
13969    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13970                              threadStartTime, threadEndTime,
13971                              &glmsg, pointerArgs);
13972    glContext->traceGLMessage(&glmsg);
13973}
13974
13975void GLTrace_glGetPointervKHR(GLenum pname, void ** params) {
13976    GLMessage glmsg;
13977    GLTraceContext *glContext = getGLTraceContext();
13978
13979    glmsg.set_function(GLMessage::glGetPointervKHR);
13980
13981    // copy argument pname
13982    GLMessage_DataType *arg_pname = glmsg.add_args();
13983    arg_pname->set_isarray(false);
13984    arg_pname->set_type(GLMessage::DataType::ENUM);
13985    arg_pname->add_intvalue((int)pname);
13986
13987    // copy argument params
13988    GLMessage_DataType *arg_params = glmsg.add_args();
13989    arg_params->set_isarray(false);
13990    arg_params->set_type(GLMessage::DataType::INT64);
13991    arg_params->add_int64value((uintptr_t)params);
13992
13993    // call function
13994    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
13995    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13996    glContext->hooks->gl.glGetPointervKHR(pname, params);
13997    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
13998    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13999
14000    void *pointerArgs[] = {
14001        (void *) params,
14002    };
14003
14004    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14005                              threadStartTime, threadEndTime,
14006                              &glmsg, pointerArgs);
14007    glContext->traceGLMessage(&glmsg);
14008}
14009
14010void GLTrace_glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image) {
14011    GLMessage glmsg;
14012    GLTraceContext *glContext = getGLTraceContext();
14013
14014    glmsg.set_function(GLMessage::glEGLImageTargetTexture2DOES);
14015
14016    // copy argument target
14017    GLMessage_DataType *arg_target = glmsg.add_args();
14018    arg_target->set_isarray(false);
14019    arg_target->set_type(GLMessage::DataType::ENUM);
14020    arg_target->add_intvalue((int)target);
14021
14022    // copy argument image
14023    GLMessage_DataType *arg_image = glmsg.add_args();
14024    arg_image->set_isarray(false);
14025    arg_image->set_type(GLMessage::DataType::INT64);
14026    arg_image->add_int64value((uintptr_t)image);
14027
14028    // call function
14029    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14030    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14031    glContext->hooks->gl.glEGLImageTargetTexture2DOES(target, image);
14032    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14033    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14034
14035    void *pointerArgs[] = {
14036        (void *) image,
14037    };
14038
14039    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14040                              threadStartTime, threadEndTime,
14041                              &glmsg, pointerArgs);
14042    glContext->traceGLMessage(&glmsg);
14043}
14044
14045void GLTrace_glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image) {
14046    GLMessage glmsg;
14047    GLTraceContext *glContext = getGLTraceContext();
14048
14049    glmsg.set_function(GLMessage::glEGLImageTargetRenderbufferStorageOES);
14050
14051    // copy argument target
14052    GLMessage_DataType *arg_target = glmsg.add_args();
14053    arg_target->set_isarray(false);
14054    arg_target->set_type(GLMessage::DataType::ENUM);
14055    arg_target->add_intvalue((int)target);
14056
14057    // copy argument image
14058    GLMessage_DataType *arg_image = glmsg.add_args();
14059    arg_image->set_isarray(false);
14060    arg_image->set_type(GLMessage::DataType::INT64);
14061    arg_image->add_int64value((uintptr_t)image);
14062
14063    // call function
14064    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14065    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14066    glContext->hooks->gl.glEGLImageTargetRenderbufferStorageOES(target, image);
14067    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14068    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14069
14070    void *pointerArgs[] = {
14071        (void *) image,
14072    };
14073
14074    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14075                              threadStartTime, threadEndTime,
14076                              &glmsg, pointerArgs);
14077    glContext->traceGLMessage(&glmsg);
14078}
14079
14080void GLTrace_glGetProgramBinaryOES(GLuint program, GLsizei bufSize, GLsizei * length, GLenum * binaryFormat, void * binary) {
14081    GLMessage glmsg;
14082    GLTraceContext *glContext = getGLTraceContext();
14083
14084    glmsg.set_function(GLMessage::glGetProgramBinaryOES);
14085
14086    // copy argument program
14087    GLMessage_DataType *arg_program = glmsg.add_args();
14088    arg_program->set_isarray(false);
14089    arg_program->set_type(GLMessage::DataType::INT);
14090    arg_program->add_intvalue(program);
14091
14092    // copy argument bufSize
14093    GLMessage_DataType *arg_bufSize = glmsg.add_args();
14094    arg_bufSize->set_isarray(false);
14095    arg_bufSize->set_type(GLMessage::DataType::INT);
14096    arg_bufSize->add_intvalue(bufSize);
14097
14098    // copy argument length
14099    GLMessage_DataType *arg_length = glmsg.add_args();
14100    arg_length->set_isarray(false);
14101    arg_length->set_type(GLMessage::DataType::INT64);
14102    arg_length->add_int64value((uintptr_t)length);
14103
14104    // copy argument binaryFormat
14105    GLMessage_DataType *arg_binaryFormat = glmsg.add_args();
14106    arg_binaryFormat->set_isarray(false);
14107    arg_binaryFormat->set_type(GLMessage::DataType::INT64);
14108    arg_binaryFormat->add_int64value((uintptr_t)binaryFormat);
14109
14110    // copy argument binary
14111    GLMessage_DataType *arg_binary = glmsg.add_args();
14112    arg_binary->set_isarray(false);
14113    arg_binary->set_type(GLMessage::DataType::INT64);
14114    arg_binary->add_int64value((uintptr_t)binary);
14115
14116    // call function
14117    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14118    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14119    glContext->hooks->gl.glGetProgramBinaryOES(program, bufSize, length, binaryFormat, binary);
14120    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14121    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14122
14123    void *pointerArgs[] = {
14124        (void *) length,
14125        (void *) binaryFormat,
14126        (void *) binary,
14127    };
14128
14129    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14130                              threadStartTime, threadEndTime,
14131                              &glmsg, pointerArgs);
14132    glContext->traceGLMessage(&glmsg);
14133}
14134
14135void GLTrace_glProgramBinaryOES(GLuint program, GLenum binaryFormat, const void * binary, GLint length) {
14136    GLMessage glmsg;
14137    GLTraceContext *glContext = getGLTraceContext();
14138
14139    glmsg.set_function(GLMessage::glProgramBinaryOES);
14140
14141    // copy argument program
14142    GLMessage_DataType *arg_program = glmsg.add_args();
14143    arg_program->set_isarray(false);
14144    arg_program->set_type(GLMessage::DataType::INT);
14145    arg_program->add_intvalue(program);
14146
14147    // copy argument binaryFormat
14148    GLMessage_DataType *arg_binaryFormat = glmsg.add_args();
14149    arg_binaryFormat->set_isarray(false);
14150    arg_binaryFormat->set_type(GLMessage::DataType::ENUM);
14151    arg_binaryFormat->add_intvalue((int)binaryFormat);
14152
14153    // copy argument binary
14154    GLMessage_DataType *arg_binary = glmsg.add_args();
14155    arg_binary->set_isarray(false);
14156    arg_binary->set_type(GLMessage::DataType::INT64);
14157    arg_binary->add_int64value((uintptr_t)binary);
14158
14159    // copy argument length
14160    GLMessage_DataType *arg_length = glmsg.add_args();
14161    arg_length->set_isarray(false);
14162    arg_length->set_type(GLMessage::DataType::INT);
14163    arg_length->add_intvalue(length);
14164
14165    // call function
14166    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14167    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14168    glContext->hooks->gl.glProgramBinaryOES(program, binaryFormat, binary, length);
14169    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14170    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14171
14172    void *pointerArgs[] = {
14173        (void *) binary,
14174    };
14175
14176    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14177                              threadStartTime, threadEndTime,
14178                              &glmsg, pointerArgs);
14179    glContext->traceGLMessage(&glmsg);
14180}
14181
14182void * GLTrace_glMapBufferOES(GLenum target, GLenum access) {
14183    GLMessage glmsg;
14184    GLTraceContext *glContext = getGLTraceContext();
14185
14186    glmsg.set_function(GLMessage::glMapBufferOES);
14187
14188    // copy argument target
14189    GLMessage_DataType *arg_target = glmsg.add_args();
14190    arg_target->set_isarray(false);
14191    arg_target->set_type(GLMessage::DataType::ENUM);
14192    arg_target->add_intvalue((int)target);
14193
14194    // copy argument access
14195    GLMessage_DataType *arg_access = glmsg.add_args();
14196    arg_access->set_isarray(false);
14197    arg_access->set_type(GLMessage::DataType::ENUM);
14198    arg_access->add_intvalue((int)access);
14199
14200    // call function
14201    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14202    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14203    void * retValue = glContext->hooks->gl.glMapBufferOES(target, access);
14204    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14205    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14206
14207    // set return value
14208    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
14209    rt->set_isarray(false);
14210    rt->set_type(GLMessage::DataType::INT64);
14211    rt->add_int64value((uintptr_t)retValue);
14212
14213    void *pointerArgs[] = {
14214        (void *) retValue,
14215    };
14216
14217    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14218                              threadStartTime, threadEndTime,
14219                              &glmsg, pointerArgs);
14220    glContext->traceGLMessage(&glmsg);
14221
14222    return retValue;
14223}
14224
14225GLboolean GLTrace_glUnmapBufferOES(GLenum target) {
14226    GLMessage glmsg;
14227    GLTraceContext *glContext = getGLTraceContext();
14228
14229    glmsg.set_function(GLMessage::glUnmapBufferOES);
14230
14231    // copy argument target
14232    GLMessage_DataType *arg_target = glmsg.add_args();
14233    arg_target->set_isarray(false);
14234    arg_target->set_type(GLMessage::DataType::ENUM);
14235    arg_target->add_intvalue((int)target);
14236
14237    // call function
14238    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14239    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14240    GLboolean retValue = glContext->hooks->gl.glUnmapBufferOES(target);
14241    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14242    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14243
14244    // set return value
14245    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
14246    rt->set_isarray(false);
14247    rt->set_type(GLMessage::DataType::BOOL);
14248    rt->add_boolvalue(retValue);
14249
14250    void *pointerArgs[] = {
14251    };
14252
14253    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14254                              threadStartTime, threadEndTime,
14255                              &glmsg, pointerArgs);
14256    glContext->traceGLMessage(&glmsg);
14257
14258    return retValue;
14259}
14260
14261void GLTrace_glGetBufferPointervOES(GLenum target, GLenum pname, void ** params) {
14262    GLMessage glmsg;
14263    GLTraceContext *glContext = getGLTraceContext();
14264
14265    glmsg.set_function(GLMessage::glGetBufferPointervOES);
14266
14267    // copy argument target
14268    GLMessage_DataType *arg_target = glmsg.add_args();
14269    arg_target->set_isarray(false);
14270    arg_target->set_type(GLMessage::DataType::ENUM);
14271    arg_target->add_intvalue((int)target);
14272
14273    // copy argument pname
14274    GLMessage_DataType *arg_pname = glmsg.add_args();
14275    arg_pname->set_isarray(false);
14276    arg_pname->set_type(GLMessage::DataType::ENUM);
14277    arg_pname->add_intvalue((int)pname);
14278
14279    // copy argument params
14280    GLMessage_DataType *arg_params = glmsg.add_args();
14281    arg_params->set_isarray(false);
14282    arg_params->set_type(GLMessage::DataType::INT64);
14283    arg_params->add_int64value((uintptr_t)params);
14284
14285    // call function
14286    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14287    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14288    glContext->hooks->gl.glGetBufferPointervOES(target, pname, params);
14289    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14290    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14291
14292    void *pointerArgs[] = {
14293        (void *) params,
14294    };
14295
14296    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14297                              threadStartTime, threadEndTime,
14298                              &glmsg, pointerArgs);
14299    glContext->traceGLMessage(&glmsg);
14300}
14301
14302void GLTrace_glMinSampleShadingOES(GLfloat value) {
14303    GLMessage glmsg;
14304    GLTraceContext *glContext = getGLTraceContext();
14305
14306    glmsg.set_function(GLMessage::glMinSampleShadingOES);
14307
14308    // copy argument value
14309    GLMessage_DataType *arg_value = glmsg.add_args();
14310    arg_value->set_isarray(false);
14311    arg_value->set_type(GLMessage::DataType::FLOAT);
14312    arg_value->add_floatvalue(value);
14313
14314    // call function
14315    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14316    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14317    glContext->hooks->gl.glMinSampleShadingOES(value);
14318    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14319    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14320
14321    void *pointerArgs[] = {
14322    };
14323
14324    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14325                              threadStartTime, threadEndTime,
14326                              &glmsg, pointerArgs);
14327    glContext->traceGLMessage(&glmsg);
14328}
14329
14330void GLTrace_glTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void * pixels) {
14331    GLMessage glmsg;
14332    GLTraceContext *glContext = getGLTraceContext();
14333
14334    glmsg.set_function(GLMessage::glTexImage3DOES);
14335
14336    // copy argument target
14337    GLMessage_DataType *arg_target = glmsg.add_args();
14338    arg_target->set_isarray(false);
14339    arg_target->set_type(GLMessage::DataType::ENUM);
14340    arg_target->add_intvalue((int)target);
14341
14342    // copy argument level
14343    GLMessage_DataType *arg_level = glmsg.add_args();
14344    arg_level->set_isarray(false);
14345    arg_level->set_type(GLMessage::DataType::INT);
14346    arg_level->add_intvalue(level);
14347
14348    // copy argument internalformat
14349    GLMessage_DataType *arg_internalformat = glmsg.add_args();
14350    arg_internalformat->set_isarray(false);
14351    arg_internalformat->set_type(GLMessage::DataType::ENUM);
14352    arg_internalformat->add_intvalue((int)internalformat);
14353
14354    // copy argument width
14355    GLMessage_DataType *arg_width = glmsg.add_args();
14356    arg_width->set_isarray(false);
14357    arg_width->set_type(GLMessage::DataType::INT);
14358    arg_width->add_intvalue(width);
14359
14360    // copy argument height
14361    GLMessage_DataType *arg_height = glmsg.add_args();
14362    arg_height->set_isarray(false);
14363    arg_height->set_type(GLMessage::DataType::INT);
14364    arg_height->add_intvalue(height);
14365
14366    // copy argument depth
14367    GLMessage_DataType *arg_depth = glmsg.add_args();
14368    arg_depth->set_isarray(false);
14369    arg_depth->set_type(GLMessage::DataType::INT);
14370    arg_depth->add_intvalue(depth);
14371
14372    // copy argument border
14373    GLMessage_DataType *arg_border = glmsg.add_args();
14374    arg_border->set_isarray(false);
14375    arg_border->set_type(GLMessage::DataType::INT);
14376    arg_border->add_intvalue(border);
14377
14378    // copy argument format
14379    GLMessage_DataType *arg_format = glmsg.add_args();
14380    arg_format->set_isarray(false);
14381    arg_format->set_type(GLMessage::DataType::ENUM);
14382    arg_format->add_intvalue((int)format);
14383
14384    // copy argument type
14385    GLMessage_DataType *arg_type = glmsg.add_args();
14386    arg_type->set_isarray(false);
14387    arg_type->set_type(GLMessage::DataType::ENUM);
14388    arg_type->add_intvalue((int)type);
14389
14390    // copy argument pixels
14391    GLMessage_DataType *arg_pixels = glmsg.add_args();
14392    arg_pixels->set_isarray(false);
14393    arg_pixels->set_type(GLMessage::DataType::INT64);
14394    arg_pixels->add_int64value((uintptr_t)pixels);
14395
14396    // call function
14397    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14398    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14399    glContext->hooks->gl.glTexImage3DOES(target, level, internalformat, width, height, depth, border, format, type, pixels);
14400    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14401    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14402
14403    void *pointerArgs[] = {
14404        (void *) pixels,
14405    };
14406
14407    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14408                              threadStartTime, threadEndTime,
14409                              &glmsg, pointerArgs);
14410    glContext->traceGLMessage(&glmsg);
14411}
14412
14413void 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) {
14414    GLMessage glmsg;
14415    GLTraceContext *glContext = getGLTraceContext();
14416
14417    glmsg.set_function(GLMessage::glTexSubImage3DOES);
14418
14419    // copy argument target
14420    GLMessage_DataType *arg_target = glmsg.add_args();
14421    arg_target->set_isarray(false);
14422    arg_target->set_type(GLMessage::DataType::ENUM);
14423    arg_target->add_intvalue((int)target);
14424
14425    // copy argument level
14426    GLMessage_DataType *arg_level = glmsg.add_args();
14427    arg_level->set_isarray(false);
14428    arg_level->set_type(GLMessage::DataType::INT);
14429    arg_level->add_intvalue(level);
14430
14431    // copy argument xoffset
14432    GLMessage_DataType *arg_xoffset = glmsg.add_args();
14433    arg_xoffset->set_isarray(false);
14434    arg_xoffset->set_type(GLMessage::DataType::INT);
14435    arg_xoffset->add_intvalue(xoffset);
14436
14437    // copy argument yoffset
14438    GLMessage_DataType *arg_yoffset = glmsg.add_args();
14439    arg_yoffset->set_isarray(false);
14440    arg_yoffset->set_type(GLMessage::DataType::INT);
14441    arg_yoffset->add_intvalue(yoffset);
14442
14443    // copy argument zoffset
14444    GLMessage_DataType *arg_zoffset = glmsg.add_args();
14445    arg_zoffset->set_isarray(false);
14446    arg_zoffset->set_type(GLMessage::DataType::INT);
14447    arg_zoffset->add_intvalue(zoffset);
14448
14449    // copy argument width
14450    GLMessage_DataType *arg_width = glmsg.add_args();
14451    arg_width->set_isarray(false);
14452    arg_width->set_type(GLMessage::DataType::INT);
14453    arg_width->add_intvalue(width);
14454
14455    // copy argument height
14456    GLMessage_DataType *arg_height = glmsg.add_args();
14457    arg_height->set_isarray(false);
14458    arg_height->set_type(GLMessage::DataType::INT);
14459    arg_height->add_intvalue(height);
14460
14461    // copy argument depth
14462    GLMessage_DataType *arg_depth = glmsg.add_args();
14463    arg_depth->set_isarray(false);
14464    arg_depth->set_type(GLMessage::DataType::INT);
14465    arg_depth->add_intvalue(depth);
14466
14467    // copy argument format
14468    GLMessage_DataType *arg_format = glmsg.add_args();
14469    arg_format->set_isarray(false);
14470    arg_format->set_type(GLMessage::DataType::ENUM);
14471    arg_format->add_intvalue((int)format);
14472
14473    // copy argument type
14474    GLMessage_DataType *arg_type = glmsg.add_args();
14475    arg_type->set_isarray(false);
14476    arg_type->set_type(GLMessage::DataType::ENUM);
14477    arg_type->add_intvalue((int)type);
14478
14479    // copy argument pixels
14480    GLMessage_DataType *arg_pixels = glmsg.add_args();
14481    arg_pixels->set_isarray(false);
14482    arg_pixels->set_type(GLMessage::DataType::INT64);
14483    arg_pixels->add_int64value((uintptr_t)pixels);
14484
14485    // call function
14486    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14487    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14488    glContext->hooks->gl.glTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
14489    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14490    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14491
14492    void *pointerArgs[] = {
14493        (void *) pixels,
14494    };
14495
14496    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14497                              threadStartTime, threadEndTime,
14498                              &glmsg, pointerArgs);
14499    glContext->traceGLMessage(&glmsg);
14500}
14501
14502void GLTrace_glCopyTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) {
14503    GLMessage glmsg;
14504    GLTraceContext *glContext = getGLTraceContext();
14505
14506    glmsg.set_function(GLMessage::glCopyTexSubImage3DOES);
14507
14508    // copy argument target
14509    GLMessage_DataType *arg_target = glmsg.add_args();
14510    arg_target->set_isarray(false);
14511    arg_target->set_type(GLMessage::DataType::ENUM);
14512    arg_target->add_intvalue((int)target);
14513
14514    // copy argument level
14515    GLMessage_DataType *arg_level = glmsg.add_args();
14516    arg_level->set_isarray(false);
14517    arg_level->set_type(GLMessage::DataType::INT);
14518    arg_level->add_intvalue(level);
14519
14520    // copy argument xoffset
14521    GLMessage_DataType *arg_xoffset = glmsg.add_args();
14522    arg_xoffset->set_isarray(false);
14523    arg_xoffset->set_type(GLMessage::DataType::INT);
14524    arg_xoffset->add_intvalue(xoffset);
14525
14526    // copy argument yoffset
14527    GLMessage_DataType *arg_yoffset = glmsg.add_args();
14528    arg_yoffset->set_isarray(false);
14529    arg_yoffset->set_type(GLMessage::DataType::INT);
14530    arg_yoffset->add_intvalue(yoffset);
14531
14532    // copy argument zoffset
14533    GLMessage_DataType *arg_zoffset = glmsg.add_args();
14534    arg_zoffset->set_isarray(false);
14535    arg_zoffset->set_type(GLMessage::DataType::INT);
14536    arg_zoffset->add_intvalue(zoffset);
14537
14538    // copy argument x
14539    GLMessage_DataType *arg_x = glmsg.add_args();
14540    arg_x->set_isarray(false);
14541    arg_x->set_type(GLMessage::DataType::INT);
14542    arg_x->add_intvalue(x);
14543
14544    // copy argument y
14545    GLMessage_DataType *arg_y = glmsg.add_args();
14546    arg_y->set_isarray(false);
14547    arg_y->set_type(GLMessage::DataType::INT);
14548    arg_y->add_intvalue(y);
14549
14550    // copy argument width
14551    GLMessage_DataType *arg_width = glmsg.add_args();
14552    arg_width->set_isarray(false);
14553    arg_width->set_type(GLMessage::DataType::INT);
14554    arg_width->add_intvalue(width);
14555
14556    // copy argument height
14557    GLMessage_DataType *arg_height = glmsg.add_args();
14558    arg_height->set_isarray(false);
14559    arg_height->set_type(GLMessage::DataType::INT);
14560    arg_height->add_intvalue(height);
14561
14562    // call function
14563    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14564    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14565    glContext->hooks->gl.glCopyTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, x, y, width, height);
14566    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14567    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14568
14569    void *pointerArgs[] = {
14570    };
14571
14572    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14573                              threadStartTime, threadEndTime,
14574                              &glmsg, pointerArgs);
14575    glContext->traceGLMessage(&glmsg);
14576}
14577
14578void GLTrace_glCompressedTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void * data) {
14579    GLMessage glmsg;
14580    GLTraceContext *glContext = getGLTraceContext();
14581
14582    glmsg.set_function(GLMessage::glCompressedTexImage3DOES);
14583
14584    // copy argument target
14585    GLMessage_DataType *arg_target = glmsg.add_args();
14586    arg_target->set_isarray(false);
14587    arg_target->set_type(GLMessage::DataType::ENUM);
14588    arg_target->add_intvalue((int)target);
14589
14590    // copy argument level
14591    GLMessage_DataType *arg_level = glmsg.add_args();
14592    arg_level->set_isarray(false);
14593    arg_level->set_type(GLMessage::DataType::INT);
14594    arg_level->add_intvalue(level);
14595
14596    // copy argument internalformat
14597    GLMessage_DataType *arg_internalformat = glmsg.add_args();
14598    arg_internalformat->set_isarray(false);
14599    arg_internalformat->set_type(GLMessage::DataType::ENUM);
14600    arg_internalformat->add_intvalue((int)internalformat);
14601
14602    // copy argument width
14603    GLMessage_DataType *arg_width = glmsg.add_args();
14604    arg_width->set_isarray(false);
14605    arg_width->set_type(GLMessage::DataType::INT);
14606    arg_width->add_intvalue(width);
14607
14608    // copy argument height
14609    GLMessage_DataType *arg_height = glmsg.add_args();
14610    arg_height->set_isarray(false);
14611    arg_height->set_type(GLMessage::DataType::INT);
14612    arg_height->add_intvalue(height);
14613
14614    // copy argument depth
14615    GLMessage_DataType *arg_depth = glmsg.add_args();
14616    arg_depth->set_isarray(false);
14617    arg_depth->set_type(GLMessage::DataType::INT);
14618    arg_depth->add_intvalue(depth);
14619
14620    // copy argument border
14621    GLMessage_DataType *arg_border = glmsg.add_args();
14622    arg_border->set_isarray(false);
14623    arg_border->set_type(GLMessage::DataType::INT);
14624    arg_border->add_intvalue(border);
14625
14626    // copy argument imageSize
14627    GLMessage_DataType *arg_imageSize = glmsg.add_args();
14628    arg_imageSize->set_isarray(false);
14629    arg_imageSize->set_type(GLMessage::DataType::INT);
14630    arg_imageSize->add_intvalue(imageSize);
14631
14632    // copy argument data
14633    GLMessage_DataType *arg_data = glmsg.add_args();
14634    arg_data->set_isarray(false);
14635    arg_data->set_type(GLMessage::DataType::INT64);
14636    arg_data->add_int64value((uintptr_t)data);
14637
14638    // call function
14639    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14640    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14641    glContext->hooks->gl.glCompressedTexImage3DOES(target, level, internalformat, width, height, depth, border, imageSize, data);
14642    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14643    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14644
14645    void *pointerArgs[] = {
14646        (void *) data,
14647    };
14648
14649    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14650                              threadStartTime, threadEndTime,
14651                              &glmsg, pointerArgs);
14652    glContext->traceGLMessage(&glmsg);
14653}
14654
14655void 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) {
14656    GLMessage glmsg;
14657    GLTraceContext *glContext = getGLTraceContext();
14658
14659    glmsg.set_function(GLMessage::glCompressedTexSubImage3DOES);
14660
14661    // copy argument target
14662    GLMessage_DataType *arg_target = glmsg.add_args();
14663    arg_target->set_isarray(false);
14664    arg_target->set_type(GLMessage::DataType::ENUM);
14665    arg_target->add_intvalue((int)target);
14666
14667    // copy argument level
14668    GLMessage_DataType *arg_level = glmsg.add_args();
14669    arg_level->set_isarray(false);
14670    arg_level->set_type(GLMessage::DataType::INT);
14671    arg_level->add_intvalue(level);
14672
14673    // copy argument xoffset
14674    GLMessage_DataType *arg_xoffset = glmsg.add_args();
14675    arg_xoffset->set_isarray(false);
14676    arg_xoffset->set_type(GLMessage::DataType::INT);
14677    arg_xoffset->add_intvalue(xoffset);
14678
14679    // copy argument yoffset
14680    GLMessage_DataType *arg_yoffset = glmsg.add_args();
14681    arg_yoffset->set_isarray(false);
14682    arg_yoffset->set_type(GLMessage::DataType::INT);
14683    arg_yoffset->add_intvalue(yoffset);
14684
14685    // copy argument zoffset
14686    GLMessage_DataType *arg_zoffset = glmsg.add_args();
14687    arg_zoffset->set_isarray(false);
14688    arg_zoffset->set_type(GLMessage::DataType::INT);
14689    arg_zoffset->add_intvalue(zoffset);
14690
14691    // copy argument width
14692    GLMessage_DataType *arg_width = glmsg.add_args();
14693    arg_width->set_isarray(false);
14694    arg_width->set_type(GLMessage::DataType::INT);
14695    arg_width->add_intvalue(width);
14696
14697    // copy argument height
14698    GLMessage_DataType *arg_height = glmsg.add_args();
14699    arg_height->set_isarray(false);
14700    arg_height->set_type(GLMessage::DataType::INT);
14701    arg_height->add_intvalue(height);
14702
14703    // copy argument depth
14704    GLMessage_DataType *arg_depth = glmsg.add_args();
14705    arg_depth->set_isarray(false);
14706    arg_depth->set_type(GLMessage::DataType::INT);
14707    arg_depth->add_intvalue(depth);
14708
14709    // copy argument format
14710    GLMessage_DataType *arg_format = glmsg.add_args();
14711    arg_format->set_isarray(false);
14712    arg_format->set_type(GLMessage::DataType::ENUM);
14713    arg_format->add_intvalue((int)format);
14714
14715    // copy argument imageSize
14716    GLMessage_DataType *arg_imageSize = glmsg.add_args();
14717    arg_imageSize->set_isarray(false);
14718    arg_imageSize->set_type(GLMessage::DataType::INT);
14719    arg_imageSize->add_intvalue(imageSize);
14720
14721    // copy argument data
14722    GLMessage_DataType *arg_data = glmsg.add_args();
14723    arg_data->set_isarray(false);
14724    arg_data->set_type(GLMessage::DataType::INT64);
14725    arg_data->add_int64value((uintptr_t)data);
14726
14727    // call function
14728    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14729    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14730    glContext->hooks->gl.glCompressedTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
14731    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14732    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14733
14734    void *pointerArgs[] = {
14735        (void *) data,
14736    };
14737
14738    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14739                              threadStartTime, threadEndTime,
14740                              &glmsg, pointerArgs);
14741    glContext->traceGLMessage(&glmsg);
14742}
14743
14744void GLTrace_glFramebufferTexture3DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) {
14745    GLMessage glmsg;
14746    GLTraceContext *glContext = getGLTraceContext();
14747
14748    glmsg.set_function(GLMessage::glFramebufferTexture3DOES);
14749
14750    // copy argument target
14751    GLMessage_DataType *arg_target = glmsg.add_args();
14752    arg_target->set_isarray(false);
14753    arg_target->set_type(GLMessage::DataType::ENUM);
14754    arg_target->add_intvalue((int)target);
14755
14756    // copy argument attachment
14757    GLMessage_DataType *arg_attachment = glmsg.add_args();
14758    arg_attachment->set_isarray(false);
14759    arg_attachment->set_type(GLMessage::DataType::ENUM);
14760    arg_attachment->add_intvalue((int)attachment);
14761
14762    // copy argument textarget
14763    GLMessage_DataType *arg_textarget = glmsg.add_args();
14764    arg_textarget->set_isarray(false);
14765    arg_textarget->set_type(GLMessage::DataType::ENUM);
14766    arg_textarget->add_intvalue((int)textarget);
14767
14768    // copy argument texture
14769    GLMessage_DataType *arg_texture = glmsg.add_args();
14770    arg_texture->set_isarray(false);
14771    arg_texture->set_type(GLMessage::DataType::INT);
14772    arg_texture->add_intvalue(texture);
14773
14774    // copy argument level
14775    GLMessage_DataType *arg_level = glmsg.add_args();
14776    arg_level->set_isarray(false);
14777    arg_level->set_type(GLMessage::DataType::INT);
14778    arg_level->add_intvalue(level);
14779
14780    // copy argument zoffset
14781    GLMessage_DataType *arg_zoffset = glmsg.add_args();
14782    arg_zoffset->set_isarray(false);
14783    arg_zoffset->set_type(GLMessage::DataType::INT);
14784    arg_zoffset->add_intvalue(zoffset);
14785
14786    // call function
14787    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14788    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14789    glContext->hooks->gl.glFramebufferTexture3DOES(target, attachment, textarget, texture, level, zoffset);
14790    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14791    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14792
14793    void *pointerArgs[] = {
14794    };
14795
14796    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14797                              threadStartTime, threadEndTime,
14798                              &glmsg, pointerArgs);
14799    glContext->traceGLMessage(&glmsg);
14800}
14801
14802void GLTrace_glTexStorage3DMultisampleOES(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) {
14803    GLMessage glmsg;
14804    GLTraceContext *glContext = getGLTraceContext();
14805
14806    glmsg.set_function(GLMessage::glTexStorage3DMultisampleOES);
14807
14808    // copy argument target
14809    GLMessage_DataType *arg_target = glmsg.add_args();
14810    arg_target->set_isarray(false);
14811    arg_target->set_type(GLMessage::DataType::ENUM);
14812    arg_target->add_intvalue((int)target);
14813
14814    // copy argument samples
14815    GLMessage_DataType *arg_samples = glmsg.add_args();
14816    arg_samples->set_isarray(false);
14817    arg_samples->set_type(GLMessage::DataType::INT);
14818    arg_samples->add_intvalue(samples);
14819
14820    // copy argument internalformat
14821    GLMessage_DataType *arg_internalformat = glmsg.add_args();
14822    arg_internalformat->set_isarray(false);
14823    arg_internalformat->set_type(GLMessage::DataType::ENUM);
14824    arg_internalformat->add_intvalue((int)internalformat);
14825
14826    // copy argument width
14827    GLMessage_DataType *arg_width = glmsg.add_args();
14828    arg_width->set_isarray(false);
14829    arg_width->set_type(GLMessage::DataType::INT);
14830    arg_width->add_intvalue(width);
14831
14832    // copy argument height
14833    GLMessage_DataType *arg_height = glmsg.add_args();
14834    arg_height->set_isarray(false);
14835    arg_height->set_type(GLMessage::DataType::INT);
14836    arg_height->add_intvalue(height);
14837
14838    // copy argument depth
14839    GLMessage_DataType *arg_depth = glmsg.add_args();
14840    arg_depth->set_isarray(false);
14841    arg_depth->set_type(GLMessage::DataType::INT);
14842    arg_depth->add_intvalue(depth);
14843
14844    // copy argument fixedsamplelocations
14845    GLMessage_DataType *arg_fixedsamplelocations = glmsg.add_args();
14846    arg_fixedsamplelocations->set_isarray(false);
14847    arg_fixedsamplelocations->set_type(GLMessage::DataType::BOOL);
14848    arg_fixedsamplelocations->add_boolvalue(fixedsamplelocations);
14849
14850    // call function
14851    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14852    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14853    glContext->hooks->gl.glTexStorage3DMultisampleOES(target, samples, internalformat, width, height, depth, fixedsamplelocations);
14854    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14855    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14856
14857    void *pointerArgs[] = {
14858    };
14859
14860    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14861                              threadStartTime, threadEndTime,
14862                              &glmsg, pointerArgs);
14863    glContext->traceGLMessage(&glmsg);
14864}
14865
14866void GLTrace_glBindVertexArrayOES(GLuint array) {
14867    GLMessage glmsg;
14868    GLTraceContext *glContext = getGLTraceContext();
14869
14870    glmsg.set_function(GLMessage::glBindVertexArrayOES);
14871
14872    // copy argument array
14873    GLMessage_DataType *arg_array = glmsg.add_args();
14874    arg_array->set_isarray(false);
14875    arg_array->set_type(GLMessage::DataType::INT);
14876    arg_array->add_intvalue(array);
14877
14878    // call function
14879    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14880    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14881    glContext->hooks->gl.glBindVertexArrayOES(array);
14882    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14883    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14884
14885    void *pointerArgs[] = {
14886    };
14887
14888    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14889                              threadStartTime, threadEndTime,
14890                              &glmsg, pointerArgs);
14891    glContext->traceGLMessage(&glmsg);
14892}
14893
14894void GLTrace_glDeleteVertexArraysOES(GLsizei n, const GLuint * arrays) {
14895    GLMessage glmsg;
14896    GLTraceContext *glContext = getGLTraceContext();
14897
14898    glmsg.set_function(GLMessage::glDeleteVertexArraysOES);
14899
14900    // copy argument n
14901    GLMessage_DataType *arg_n = glmsg.add_args();
14902    arg_n->set_isarray(false);
14903    arg_n->set_type(GLMessage::DataType::INT);
14904    arg_n->add_intvalue(n);
14905
14906    // copy argument arrays
14907    GLMessage_DataType *arg_arrays = glmsg.add_args();
14908    arg_arrays->set_isarray(false);
14909    arg_arrays->set_type(GLMessage::DataType::INT64);
14910    arg_arrays->add_int64value((uintptr_t)arrays);
14911
14912    // call function
14913    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14914    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14915    glContext->hooks->gl.glDeleteVertexArraysOES(n, arrays);
14916    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14917    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14918
14919    void *pointerArgs[] = {
14920        (void *) arrays,
14921    };
14922
14923    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14924                              threadStartTime, threadEndTime,
14925                              &glmsg, pointerArgs);
14926    glContext->traceGLMessage(&glmsg);
14927}
14928
14929void GLTrace_glGenVertexArraysOES(GLsizei n, GLuint * arrays) {
14930    GLMessage glmsg;
14931    GLTraceContext *glContext = getGLTraceContext();
14932
14933    glmsg.set_function(GLMessage::glGenVertexArraysOES);
14934
14935    // copy argument n
14936    GLMessage_DataType *arg_n = glmsg.add_args();
14937    arg_n->set_isarray(false);
14938    arg_n->set_type(GLMessage::DataType::INT);
14939    arg_n->add_intvalue(n);
14940
14941    // copy argument arrays
14942    GLMessage_DataType *arg_arrays = glmsg.add_args();
14943    arg_arrays->set_isarray(false);
14944    arg_arrays->set_type(GLMessage::DataType::INT64);
14945    arg_arrays->add_int64value((uintptr_t)arrays);
14946
14947    // call function
14948    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14949    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14950    glContext->hooks->gl.glGenVertexArraysOES(n, arrays);
14951    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14952    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14953
14954    void *pointerArgs[] = {
14955        (void *) arrays,
14956    };
14957
14958    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14959                              threadStartTime, threadEndTime,
14960                              &glmsg, pointerArgs);
14961    glContext->traceGLMessage(&glmsg);
14962}
14963
14964GLboolean GLTrace_glIsVertexArrayOES(GLuint array) {
14965    GLMessage glmsg;
14966    GLTraceContext *glContext = getGLTraceContext();
14967
14968    glmsg.set_function(GLMessage::glIsVertexArrayOES);
14969
14970    // copy argument array
14971    GLMessage_DataType *arg_array = glmsg.add_args();
14972    arg_array->set_isarray(false);
14973    arg_array->set_type(GLMessage::DataType::INT);
14974    arg_array->add_intvalue(array);
14975
14976    // call function
14977    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
14978    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14979    GLboolean retValue = glContext->hooks->gl.glIsVertexArrayOES(array);
14980    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
14981    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14982
14983    // set return value
14984    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
14985    rt->set_isarray(false);
14986    rt->set_type(GLMessage::DataType::BOOL);
14987    rt->add_boolvalue(retValue);
14988
14989    void *pointerArgs[] = {
14990    };
14991
14992    fixupGLMessage(glContext, wallStartTime, wallEndTime,
14993                              threadStartTime, threadEndTime,
14994                              &glmsg, pointerArgs);
14995    glContext->traceGLMessage(&glmsg);
14996
14997    return retValue;
14998}
14999
15000void GLTrace_glGetPerfMonitorGroupsAMD(GLint * numGroups, GLsizei groupsSize, GLuint * groups) {
15001    GLMessage glmsg;
15002    GLTraceContext *glContext = getGLTraceContext();
15003
15004    glmsg.set_function(GLMessage::glGetPerfMonitorGroupsAMD);
15005
15006    // copy argument numGroups
15007    GLMessage_DataType *arg_numGroups = glmsg.add_args();
15008    arg_numGroups->set_isarray(false);
15009    arg_numGroups->set_type(GLMessage::DataType::INT64);
15010    arg_numGroups->add_int64value((uintptr_t)numGroups);
15011
15012    // copy argument groupsSize
15013    GLMessage_DataType *arg_groupsSize = glmsg.add_args();
15014    arg_groupsSize->set_isarray(false);
15015    arg_groupsSize->set_type(GLMessage::DataType::INT);
15016    arg_groupsSize->add_intvalue(groupsSize);
15017
15018    // copy argument groups
15019    GLMessage_DataType *arg_groups = glmsg.add_args();
15020    arg_groups->set_isarray(false);
15021    arg_groups->set_type(GLMessage::DataType::INT64);
15022    arg_groups->add_int64value((uintptr_t)groups);
15023
15024    // call function
15025    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15026    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15027    glContext->hooks->gl.glGetPerfMonitorGroupsAMD(numGroups, groupsSize, groups);
15028    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15029    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15030
15031    void *pointerArgs[] = {
15032        (void *) numGroups,
15033        (void *) groups,
15034    };
15035
15036    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15037                              threadStartTime, threadEndTime,
15038                              &glmsg, pointerArgs);
15039    glContext->traceGLMessage(&glmsg);
15040}
15041
15042void GLTrace_glGetPerfMonitorCountersAMD(GLuint group, GLint * numCounters, GLint * maxActiveCounters, GLsizei counterSize, GLuint * counters) {
15043    GLMessage glmsg;
15044    GLTraceContext *glContext = getGLTraceContext();
15045
15046    glmsg.set_function(GLMessage::glGetPerfMonitorCountersAMD);
15047
15048    // copy argument group
15049    GLMessage_DataType *arg_group = glmsg.add_args();
15050    arg_group->set_isarray(false);
15051    arg_group->set_type(GLMessage::DataType::INT);
15052    arg_group->add_intvalue(group);
15053
15054    // copy argument numCounters
15055    GLMessage_DataType *arg_numCounters = glmsg.add_args();
15056    arg_numCounters->set_isarray(false);
15057    arg_numCounters->set_type(GLMessage::DataType::INT64);
15058    arg_numCounters->add_int64value((uintptr_t)numCounters);
15059
15060    // copy argument maxActiveCounters
15061    GLMessage_DataType *arg_maxActiveCounters = glmsg.add_args();
15062    arg_maxActiveCounters->set_isarray(false);
15063    arg_maxActiveCounters->set_type(GLMessage::DataType::INT64);
15064    arg_maxActiveCounters->add_int64value((uintptr_t)maxActiveCounters);
15065
15066    // copy argument counterSize
15067    GLMessage_DataType *arg_counterSize = glmsg.add_args();
15068    arg_counterSize->set_isarray(false);
15069    arg_counterSize->set_type(GLMessage::DataType::INT);
15070    arg_counterSize->add_intvalue(counterSize);
15071
15072    // copy argument counters
15073    GLMessage_DataType *arg_counters = glmsg.add_args();
15074    arg_counters->set_isarray(false);
15075    arg_counters->set_type(GLMessage::DataType::INT64);
15076    arg_counters->add_int64value((uintptr_t)counters);
15077
15078    // call function
15079    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15080    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15081    glContext->hooks->gl.glGetPerfMonitorCountersAMD(group, numCounters, maxActiveCounters, counterSize, counters);
15082    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15083    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15084
15085    void *pointerArgs[] = {
15086        (void *) numCounters,
15087        (void *) maxActiveCounters,
15088        (void *) counters,
15089    };
15090
15091    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15092                              threadStartTime, threadEndTime,
15093                              &glmsg, pointerArgs);
15094    glContext->traceGLMessage(&glmsg);
15095}
15096
15097void GLTrace_glGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, GLsizei * length, GLchar * groupString) {
15098    GLMessage glmsg;
15099    GLTraceContext *glContext = getGLTraceContext();
15100
15101    glmsg.set_function(GLMessage::glGetPerfMonitorGroupStringAMD);
15102
15103    // copy argument group
15104    GLMessage_DataType *arg_group = glmsg.add_args();
15105    arg_group->set_isarray(false);
15106    arg_group->set_type(GLMessage::DataType::INT);
15107    arg_group->add_intvalue(group);
15108
15109    // copy argument bufSize
15110    GLMessage_DataType *arg_bufSize = glmsg.add_args();
15111    arg_bufSize->set_isarray(false);
15112    arg_bufSize->set_type(GLMessage::DataType::INT);
15113    arg_bufSize->add_intvalue(bufSize);
15114
15115    // copy argument length
15116    GLMessage_DataType *arg_length = glmsg.add_args();
15117    arg_length->set_isarray(false);
15118    arg_length->set_type(GLMessage::DataType::INT64);
15119    arg_length->add_int64value((uintptr_t)length);
15120
15121    // copy argument groupString
15122    GLMessage_DataType *arg_groupString = glmsg.add_args();
15123    arg_groupString->set_isarray(false);
15124    arg_groupString->set_type(GLMessage::DataType::INT64);
15125    arg_groupString->add_int64value((uintptr_t)groupString);
15126
15127    // call function
15128    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15129    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15130    glContext->hooks->gl.glGetPerfMonitorGroupStringAMD(group, bufSize, length, groupString);
15131    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15132    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15133
15134    void *pointerArgs[] = {
15135        (void *) length,
15136        (void *) groupString,
15137    };
15138
15139    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15140                              threadStartTime, threadEndTime,
15141                              &glmsg, pointerArgs);
15142    glContext->traceGLMessage(&glmsg);
15143}
15144
15145void GLTrace_glGetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, GLsizei bufSize, GLsizei * length, GLchar * counterString) {
15146    GLMessage glmsg;
15147    GLTraceContext *glContext = getGLTraceContext();
15148
15149    glmsg.set_function(GLMessage::glGetPerfMonitorCounterStringAMD);
15150
15151    // copy argument group
15152    GLMessage_DataType *arg_group = glmsg.add_args();
15153    arg_group->set_isarray(false);
15154    arg_group->set_type(GLMessage::DataType::INT);
15155    arg_group->add_intvalue(group);
15156
15157    // copy argument counter
15158    GLMessage_DataType *arg_counter = glmsg.add_args();
15159    arg_counter->set_isarray(false);
15160    arg_counter->set_type(GLMessage::DataType::INT);
15161    arg_counter->add_intvalue(counter);
15162
15163    // copy argument bufSize
15164    GLMessage_DataType *arg_bufSize = glmsg.add_args();
15165    arg_bufSize->set_isarray(false);
15166    arg_bufSize->set_type(GLMessage::DataType::INT);
15167    arg_bufSize->add_intvalue(bufSize);
15168
15169    // copy argument length
15170    GLMessage_DataType *arg_length = glmsg.add_args();
15171    arg_length->set_isarray(false);
15172    arg_length->set_type(GLMessage::DataType::INT64);
15173    arg_length->add_int64value((uintptr_t)length);
15174
15175    // copy argument counterString
15176    GLMessage_DataType *arg_counterString = glmsg.add_args();
15177    arg_counterString->set_isarray(false);
15178    arg_counterString->set_type(GLMessage::DataType::INT64);
15179    arg_counterString->add_int64value((uintptr_t)counterString);
15180
15181    // call function
15182    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15183    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15184    glContext->hooks->gl.glGetPerfMonitorCounterStringAMD(group, counter, bufSize, length, counterString);
15185    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15186    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15187
15188    void *pointerArgs[] = {
15189        (void *) length,
15190        (void *) counterString,
15191    };
15192
15193    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15194                              threadStartTime, threadEndTime,
15195                              &glmsg, pointerArgs);
15196    glContext->traceGLMessage(&glmsg);
15197}
15198
15199void GLTrace_glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, void * data) {
15200    GLMessage glmsg;
15201    GLTraceContext *glContext = getGLTraceContext();
15202
15203    glmsg.set_function(GLMessage::glGetPerfMonitorCounterInfoAMD);
15204
15205    // copy argument group
15206    GLMessage_DataType *arg_group = glmsg.add_args();
15207    arg_group->set_isarray(false);
15208    arg_group->set_type(GLMessage::DataType::INT);
15209    arg_group->add_intvalue(group);
15210
15211    // copy argument counter
15212    GLMessage_DataType *arg_counter = glmsg.add_args();
15213    arg_counter->set_isarray(false);
15214    arg_counter->set_type(GLMessage::DataType::INT);
15215    arg_counter->add_intvalue(counter);
15216
15217    // copy argument pname
15218    GLMessage_DataType *arg_pname = glmsg.add_args();
15219    arg_pname->set_isarray(false);
15220    arg_pname->set_type(GLMessage::DataType::ENUM);
15221    arg_pname->add_intvalue((int)pname);
15222
15223    // copy argument data
15224    GLMessage_DataType *arg_data = glmsg.add_args();
15225    arg_data->set_isarray(false);
15226    arg_data->set_type(GLMessage::DataType::INT64);
15227    arg_data->add_int64value((uintptr_t)data);
15228
15229    // call function
15230    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15231    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15232    glContext->hooks->gl.glGetPerfMonitorCounterInfoAMD(group, counter, pname, data);
15233    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15234    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15235
15236    void *pointerArgs[] = {
15237        (void *) data,
15238    };
15239
15240    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15241                              threadStartTime, threadEndTime,
15242                              &glmsg, pointerArgs);
15243    glContext->traceGLMessage(&glmsg);
15244}
15245
15246void GLTrace_glGenPerfMonitorsAMD(GLsizei n, GLuint * monitors) {
15247    GLMessage glmsg;
15248    GLTraceContext *glContext = getGLTraceContext();
15249
15250    glmsg.set_function(GLMessage::glGenPerfMonitorsAMD);
15251
15252    // copy argument n
15253    GLMessage_DataType *arg_n = glmsg.add_args();
15254    arg_n->set_isarray(false);
15255    arg_n->set_type(GLMessage::DataType::INT);
15256    arg_n->add_intvalue(n);
15257
15258    // copy argument monitors
15259    GLMessage_DataType *arg_monitors = glmsg.add_args();
15260    arg_monitors->set_isarray(false);
15261    arg_monitors->set_type(GLMessage::DataType::INT64);
15262    arg_monitors->add_int64value((uintptr_t)monitors);
15263
15264    // call function
15265    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15266    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15267    glContext->hooks->gl.glGenPerfMonitorsAMD(n, monitors);
15268    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15269    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15270
15271    void *pointerArgs[] = {
15272        (void *) monitors,
15273    };
15274
15275    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15276                              threadStartTime, threadEndTime,
15277                              &glmsg, pointerArgs);
15278    glContext->traceGLMessage(&glmsg);
15279}
15280
15281void GLTrace_glDeletePerfMonitorsAMD(GLsizei n, GLuint * monitors) {
15282    GLMessage glmsg;
15283    GLTraceContext *glContext = getGLTraceContext();
15284
15285    glmsg.set_function(GLMessage::glDeletePerfMonitorsAMD);
15286
15287    // copy argument n
15288    GLMessage_DataType *arg_n = glmsg.add_args();
15289    arg_n->set_isarray(false);
15290    arg_n->set_type(GLMessage::DataType::INT);
15291    arg_n->add_intvalue(n);
15292
15293    // copy argument monitors
15294    GLMessage_DataType *arg_monitors = glmsg.add_args();
15295    arg_monitors->set_isarray(false);
15296    arg_monitors->set_type(GLMessage::DataType::INT64);
15297    arg_monitors->add_int64value((uintptr_t)monitors);
15298
15299    // call function
15300    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15301    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15302    glContext->hooks->gl.glDeletePerfMonitorsAMD(n, monitors);
15303    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15304    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15305
15306    void *pointerArgs[] = {
15307        (void *) monitors,
15308    };
15309
15310    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15311                              threadStartTime, threadEndTime,
15312                              &glmsg, pointerArgs);
15313    glContext->traceGLMessage(&glmsg);
15314}
15315
15316void GLTrace_glSelectPerfMonitorCountersAMD(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint * counterList) {
15317    GLMessage glmsg;
15318    GLTraceContext *glContext = getGLTraceContext();
15319
15320    glmsg.set_function(GLMessage::glSelectPerfMonitorCountersAMD);
15321
15322    // copy argument monitor
15323    GLMessage_DataType *arg_monitor = glmsg.add_args();
15324    arg_monitor->set_isarray(false);
15325    arg_monitor->set_type(GLMessage::DataType::INT);
15326    arg_monitor->add_intvalue(monitor);
15327
15328    // copy argument enable
15329    GLMessage_DataType *arg_enable = glmsg.add_args();
15330    arg_enable->set_isarray(false);
15331    arg_enable->set_type(GLMessage::DataType::BOOL);
15332    arg_enable->add_boolvalue(enable);
15333
15334    // copy argument group
15335    GLMessage_DataType *arg_group = glmsg.add_args();
15336    arg_group->set_isarray(false);
15337    arg_group->set_type(GLMessage::DataType::INT);
15338    arg_group->add_intvalue(group);
15339
15340    // copy argument numCounters
15341    GLMessage_DataType *arg_numCounters = glmsg.add_args();
15342    arg_numCounters->set_isarray(false);
15343    arg_numCounters->set_type(GLMessage::DataType::INT);
15344    arg_numCounters->add_intvalue(numCounters);
15345
15346    // copy argument counterList
15347    GLMessage_DataType *arg_counterList = glmsg.add_args();
15348    arg_counterList->set_isarray(false);
15349    arg_counterList->set_type(GLMessage::DataType::INT64);
15350    arg_counterList->add_int64value((uintptr_t)counterList);
15351
15352    // call function
15353    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15354    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15355    glContext->hooks->gl.glSelectPerfMonitorCountersAMD(monitor, enable, group, numCounters, counterList);
15356    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15357    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15358
15359    void *pointerArgs[] = {
15360        (void *) counterList,
15361    };
15362
15363    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15364                              threadStartTime, threadEndTime,
15365                              &glmsg, pointerArgs);
15366    glContext->traceGLMessage(&glmsg);
15367}
15368
15369void GLTrace_glBeginPerfMonitorAMD(GLuint monitor) {
15370    GLMessage glmsg;
15371    GLTraceContext *glContext = getGLTraceContext();
15372
15373    glmsg.set_function(GLMessage::glBeginPerfMonitorAMD);
15374
15375    // copy argument monitor
15376    GLMessage_DataType *arg_monitor = glmsg.add_args();
15377    arg_monitor->set_isarray(false);
15378    arg_monitor->set_type(GLMessage::DataType::INT);
15379    arg_monitor->add_intvalue(monitor);
15380
15381    // call function
15382    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15383    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15384    glContext->hooks->gl.glBeginPerfMonitorAMD(monitor);
15385    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15386    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15387
15388    void *pointerArgs[] = {
15389    };
15390
15391    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15392                              threadStartTime, threadEndTime,
15393                              &glmsg, pointerArgs);
15394    glContext->traceGLMessage(&glmsg);
15395}
15396
15397void GLTrace_glEndPerfMonitorAMD(GLuint monitor) {
15398    GLMessage glmsg;
15399    GLTraceContext *glContext = getGLTraceContext();
15400
15401    glmsg.set_function(GLMessage::glEndPerfMonitorAMD);
15402
15403    // copy argument monitor
15404    GLMessage_DataType *arg_monitor = glmsg.add_args();
15405    arg_monitor->set_isarray(false);
15406    arg_monitor->set_type(GLMessage::DataType::INT);
15407    arg_monitor->add_intvalue(monitor);
15408
15409    // call function
15410    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15411    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15412    glContext->hooks->gl.glEndPerfMonitorAMD(monitor);
15413    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15414    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15415
15416    void *pointerArgs[] = {
15417    };
15418
15419    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15420                              threadStartTime, threadEndTime,
15421                              &glmsg, pointerArgs);
15422    glContext->traceGLMessage(&glmsg);
15423}
15424
15425void GLTrace_glGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint * data, GLint * bytesWritten) {
15426    GLMessage glmsg;
15427    GLTraceContext *glContext = getGLTraceContext();
15428
15429    glmsg.set_function(GLMessage::glGetPerfMonitorCounterDataAMD);
15430
15431    // copy argument monitor
15432    GLMessage_DataType *arg_monitor = glmsg.add_args();
15433    arg_monitor->set_isarray(false);
15434    arg_monitor->set_type(GLMessage::DataType::INT);
15435    arg_monitor->add_intvalue(monitor);
15436
15437    // copy argument pname
15438    GLMessage_DataType *arg_pname = glmsg.add_args();
15439    arg_pname->set_isarray(false);
15440    arg_pname->set_type(GLMessage::DataType::ENUM);
15441    arg_pname->add_intvalue((int)pname);
15442
15443    // copy argument dataSize
15444    GLMessage_DataType *arg_dataSize = glmsg.add_args();
15445    arg_dataSize->set_isarray(false);
15446    arg_dataSize->set_type(GLMessage::DataType::INT);
15447    arg_dataSize->add_intvalue(dataSize);
15448
15449    // copy argument data
15450    GLMessage_DataType *arg_data = glmsg.add_args();
15451    arg_data->set_isarray(false);
15452    arg_data->set_type(GLMessage::DataType::INT64);
15453    arg_data->add_int64value((uintptr_t)data);
15454
15455    // copy argument bytesWritten
15456    GLMessage_DataType *arg_bytesWritten = glmsg.add_args();
15457    arg_bytesWritten->set_isarray(false);
15458    arg_bytesWritten->set_type(GLMessage::DataType::INT64);
15459    arg_bytesWritten->add_int64value((uintptr_t)bytesWritten);
15460
15461    // call function
15462    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15463    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15464    glContext->hooks->gl.glGetPerfMonitorCounterDataAMD(monitor, pname, dataSize, data, bytesWritten);
15465    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15466    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15467
15468    void *pointerArgs[] = {
15469        (void *) data,
15470        (void *) bytesWritten,
15471    };
15472
15473    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15474                              threadStartTime, threadEndTime,
15475                              &glmsg, pointerArgs);
15476    glContext->traceGLMessage(&glmsg);
15477}
15478
15479void GLTrace_glBlitFramebufferANGLE(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) {
15480    GLMessage glmsg;
15481    GLTraceContext *glContext = getGLTraceContext();
15482
15483    glmsg.set_function(GLMessage::glBlitFramebufferANGLE);
15484
15485    // copy argument srcX0
15486    GLMessage_DataType *arg_srcX0 = glmsg.add_args();
15487    arg_srcX0->set_isarray(false);
15488    arg_srcX0->set_type(GLMessage::DataType::INT);
15489    arg_srcX0->add_intvalue(srcX0);
15490
15491    // copy argument srcY0
15492    GLMessage_DataType *arg_srcY0 = glmsg.add_args();
15493    arg_srcY0->set_isarray(false);
15494    arg_srcY0->set_type(GLMessage::DataType::INT);
15495    arg_srcY0->add_intvalue(srcY0);
15496
15497    // copy argument srcX1
15498    GLMessage_DataType *arg_srcX1 = glmsg.add_args();
15499    arg_srcX1->set_isarray(false);
15500    arg_srcX1->set_type(GLMessage::DataType::INT);
15501    arg_srcX1->add_intvalue(srcX1);
15502
15503    // copy argument srcY1
15504    GLMessage_DataType *arg_srcY1 = glmsg.add_args();
15505    arg_srcY1->set_isarray(false);
15506    arg_srcY1->set_type(GLMessage::DataType::INT);
15507    arg_srcY1->add_intvalue(srcY1);
15508
15509    // copy argument dstX0
15510    GLMessage_DataType *arg_dstX0 = glmsg.add_args();
15511    arg_dstX0->set_isarray(false);
15512    arg_dstX0->set_type(GLMessage::DataType::INT);
15513    arg_dstX0->add_intvalue(dstX0);
15514
15515    // copy argument dstY0
15516    GLMessage_DataType *arg_dstY0 = glmsg.add_args();
15517    arg_dstY0->set_isarray(false);
15518    arg_dstY0->set_type(GLMessage::DataType::INT);
15519    arg_dstY0->add_intvalue(dstY0);
15520
15521    // copy argument dstX1
15522    GLMessage_DataType *arg_dstX1 = glmsg.add_args();
15523    arg_dstX1->set_isarray(false);
15524    arg_dstX1->set_type(GLMessage::DataType::INT);
15525    arg_dstX1->add_intvalue(dstX1);
15526
15527    // copy argument dstY1
15528    GLMessage_DataType *arg_dstY1 = glmsg.add_args();
15529    arg_dstY1->set_isarray(false);
15530    arg_dstY1->set_type(GLMessage::DataType::INT);
15531    arg_dstY1->add_intvalue(dstY1);
15532
15533    // copy argument mask
15534    GLMessage_DataType *arg_mask = glmsg.add_args();
15535    arg_mask->set_isarray(false);
15536    arg_mask->set_type(GLMessage::DataType::INT);
15537    arg_mask->add_intvalue(mask);
15538
15539    // copy argument filter
15540    GLMessage_DataType *arg_filter = glmsg.add_args();
15541    arg_filter->set_isarray(false);
15542    arg_filter->set_type(GLMessage::DataType::ENUM);
15543    arg_filter->add_intvalue((int)filter);
15544
15545    // call function
15546    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15547    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15548    glContext->hooks->gl.glBlitFramebufferANGLE(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
15549    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15550    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15551
15552    void *pointerArgs[] = {
15553    };
15554
15555    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15556                              threadStartTime, threadEndTime,
15557                              &glmsg, pointerArgs);
15558    glContext->traceGLMessage(&glmsg);
15559}
15560
15561void GLTrace_glRenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
15562    GLMessage glmsg;
15563    GLTraceContext *glContext = getGLTraceContext();
15564
15565    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleANGLE);
15566
15567    // copy argument target
15568    GLMessage_DataType *arg_target = glmsg.add_args();
15569    arg_target->set_isarray(false);
15570    arg_target->set_type(GLMessage::DataType::ENUM);
15571    arg_target->add_intvalue((int)target);
15572
15573    // copy argument samples
15574    GLMessage_DataType *arg_samples = glmsg.add_args();
15575    arg_samples->set_isarray(false);
15576    arg_samples->set_type(GLMessage::DataType::INT);
15577    arg_samples->add_intvalue(samples);
15578
15579    // copy argument internalformat
15580    GLMessage_DataType *arg_internalformat = glmsg.add_args();
15581    arg_internalformat->set_isarray(false);
15582    arg_internalformat->set_type(GLMessage::DataType::ENUM);
15583    arg_internalformat->add_intvalue((int)internalformat);
15584
15585    // copy argument width
15586    GLMessage_DataType *arg_width = glmsg.add_args();
15587    arg_width->set_isarray(false);
15588    arg_width->set_type(GLMessage::DataType::INT);
15589    arg_width->add_intvalue(width);
15590
15591    // copy argument height
15592    GLMessage_DataType *arg_height = glmsg.add_args();
15593    arg_height->set_isarray(false);
15594    arg_height->set_type(GLMessage::DataType::INT);
15595    arg_height->add_intvalue(height);
15596
15597    // call function
15598    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15599    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15600    glContext->hooks->gl.glRenderbufferStorageMultisampleANGLE(target, samples, internalformat, width, height);
15601    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15602    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15603
15604    void *pointerArgs[] = {
15605    };
15606
15607    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15608                              threadStartTime, threadEndTime,
15609                              &glmsg, pointerArgs);
15610    glContext->traceGLMessage(&glmsg);
15611}
15612
15613void GLTrace_glDrawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei count, GLsizei primcount) {
15614    GLMessage glmsg;
15615    GLTraceContext *glContext = getGLTraceContext();
15616
15617    glmsg.set_function(GLMessage::glDrawArraysInstancedANGLE);
15618
15619    // copy argument mode
15620    GLMessage_DataType *arg_mode = glmsg.add_args();
15621    arg_mode->set_isarray(false);
15622    arg_mode->set_type(GLMessage::DataType::ENUM);
15623    arg_mode->add_intvalue((int)mode);
15624
15625    // copy argument first
15626    GLMessage_DataType *arg_first = glmsg.add_args();
15627    arg_first->set_isarray(false);
15628    arg_first->set_type(GLMessage::DataType::INT);
15629    arg_first->add_intvalue(first);
15630
15631    // copy argument count
15632    GLMessage_DataType *arg_count = glmsg.add_args();
15633    arg_count->set_isarray(false);
15634    arg_count->set_type(GLMessage::DataType::INT);
15635    arg_count->add_intvalue(count);
15636
15637    // copy argument primcount
15638    GLMessage_DataType *arg_primcount = glmsg.add_args();
15639    arg_primcount->set_isarray(false);
15640    arg_primcount->set_type(GLMessage::DataType::INT);
15641    arg_primcount->add_intvalue(primcount);
15642
15643    // call function
15644    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15645    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15646    glContext->hooks->gl.glDrawArraysInstancedANGLE(mode, first, count, primcount);
15647    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15648    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15649
15650    void *pointerArgs[] = {
15651    };
15652
15653    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15654                              threadStartTime, threadEndTime,
15655                              &glmsg, pointerArgs);
15656    glContext->traceGLMessage(&glmsg);
15657}
15658
15659void GLTrace_glDrawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei primcount) {
15660    GLMessage glmsg;
15661    GLTraceContext *glContext = getGLTraceContext();
15662
15663    glmsg.set_function(GLMessage::glDrawElementsInstancedANGLE);
15664
15665    // copy argument mode
15666    GLMessage_DataType *arg_mode = glmsg.add_args();
15667    arg_mode->set_isarray(false);
15668    arg_mode->set_type(GLMessage::DataType::ENUM);
15669    arg_mode->add_intvalue((int)mode);
15670
15671    // copy argument count
15672    GLMessage_DataType *arg_count = glmsg.add_args();
15673    arg_count->set_isarray(false);
15674    arg_count->set_type(GLMessage::DataType::INT);
15675    arg_count->add_intvalue(count);
15676
15677    // copy argument type
15678    GLMessage_DataType *arg_type = glmsg.add_args();
15679    arg_type->set_isarray(false);
15680    arg_type->set_type(GLMessage::DataType::ENUM);
15681    arg_type->add_intvalue((int)type);
15682
15683    // copy argument indices
15684    GLMessage_DataType *arg_indices = glmsg.add_args();
15685    arg_indices->set_isarray(false);
15686    arg_indices->set_type(GLMessage::DataType::INT64);
15687    arg_indices->add_int64value((uintptr_t)indices);
15688
15689    // copy argument primcount
15690    GLMessage_DataType *arg_primcount = glmsg.add_args();
15691    arg_primcount->set_isarray(false);
15692    arg_primcount->set_type(GLMessage::DataType::INT);
15693    arg_primcount->add_intvalue(primcount);
15694
15695    // call function
15696    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15697    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15698    glContext->hooks->gl.glDrawElementsInstancedANGLE(mode, count, type, indices, primcount);
15699    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15700    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15701
15702    void *pointerArgs[] = {
15703        (void *) indices,
15704    };
15705
15706    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15707                              threadStartTime, threadEndTime,
15708                              &glmsg, pointerArgs);
15709    glContext->traceGLMessage(&glmsg);
15710}
15711
15712void GLTrace_glVertexAttribDivisorANGLE(GLuint index, GLuint divisor) {
15713    GLMessage glmsg;
15714    GLTraceContext *glContext = getGLTraceContext();
15715
15716    glmsg.set_function(GLMessage::glVertexAttribDivisorANGLE);
15717
15718    // copy argument index
15719    GLMessage_DataType *arg_index = glmsg.add_args();
15720    arg_index->set_isarray(false);
15721    arg_index->set_type(GLMessage::DataType::INT);
15722    arg_index->add_intvalue(index);
15723
15724    // copy argument divisor
15725    GLMessage_DataType *arg_divisor = glmsg.add_args();
15726    arg_divisor->set_isarray(false);
15727    arg_divisor->set_type(GLMessage::DataType::INT);
15728    arg_divisor->add_intvalue(divisor);
15729
15730    // call function
15731    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15732    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15733    glContext->hooks->gl.glVertexAttribDivisorANGLE(index, divisor);
15734    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15735    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15736
15737    void *pointerArgs[] = {
15738    };
15739
15740    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15741                              threadStartTime, threadEndTime,
15742                              &glmsg, pointerArgs);
15743    glContext->traceGLMessage(&glmsg);
15744}
15745
15746void GLTrace_glGetTranslatedShaderSourceANGLE(GLuint shader, GLsizei bufsize, GLsizei * length, GLchar * source) {
15747    GLMessage glmsg;
15748    GLTraceContext *glContext = getGLTraceContext();
15749
15750    glmsg.set_function(GLMessage::glGetTranslatedShaderSourceANGLE);
15751
15752    // copy argument shader
15753    GLMessage_DataType *arg_shader = glmsg.add_args();
15754    arg_shader->set_isarray(false);
15755    arg_shader->set_type(GLMessage::DataType::INT);
15756    arg_shader->add_intvalue(shader);
15757
15758    // copy argument bufsize
15759    GLMessage_DataType *arg_bufsize = glmsg.add_args();
15760    arg_bufsize->set_isarray(false);
15761    arg_bufsize->set_type(GLMessage::DataType::INT);
15762    arg_bufsize->add_intvalue(bufsize);
15763
15764    // copy argument length
15765    GLMessage_DataType *arg_length = glmsg.add_args();
15766    arg_length->set_isarray(false);
15767    arg_length->set_type(GLMessage::DataType::INT64);
15768    arg_length->add_int64value((uintptr_t)length);
15769
15770    // copy argument source
15771    GLMessage_DataType *arg_source = glmsg.add_args();
15772    arg_source->set_isarray(false);
15773    arg_source->set_type(GLMessage::DataType::INT64);
15774    arg_source->add_int64value((uintptr_t)source);
15775
15776    // call function
15777    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15778    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15779    glContext->hooks->gl.glGetTranslatedShaderSourceANGLE(shader, bufsize, length, source);
15780    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15781    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15782
15783    void *pointerArgs[] = {
15784        (void *) length,
15785        (void *) source,
15786    };
15787
15788    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15789                              threadStartTime, threadEndTime,
15790                              &glmsg, pointerArgs);
15791    glContext->traceGLMessage(&glmsg);
15792}
15793
15794void GLTrace_glCopyTextureLevelsAPPLE(GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount) {
15795    GLMessage glmsg;
15796    GLTraceContext *glContext = getGLTraceContext();
15797
15798    glmsg.set_function(GLMessage::glCopyTextureLevelsAPPLE);
15799
15800    // copy argument destinationTexture
15801    GLMessage_DataType *arg_destinationTexture = glmsg.add_args();
15802    arg_destinationTexture->set_isarray(false);
15803    arg_destinationTexture->set_type(GLMessage::DataType::INT);
15804    arg_destinationTexture->add_intvalue(destinationTexture);
15805
15806    // copy argument sourceTexture
15807    GLMessage_DataType *arg_sourceTexture = glmsg.add_args();
15808    arg_sourceTexture->set_isarray(false);
15809    arg_sourceTexture->set_type(GLMessage::DataType::INT);
15810    arg_sourceTexture->add_intvalue(sourceTexture);
15811
15812    // copy argument sourceBaseLevel
15813    GLMessage_DataType *arg_sourceBaseLevel = glmsg.add_args();
15814    arg_sourceBaseLevel->set_isarray(false);
15815    arg_sourceBaseLevel->set_type(GLMessage::DataType::INT);
15816    arg_sourceBaseLevel->add_intvalue(sourceBaseLevel);
15817
15818    // copy argument sourceLevelCount
15819    GLMessage_DataType *arg_sourceLevelCount = glmsg.add_args();
15820    arg_sourceLevelCount->set_isarray(false);
15821    arg_sourceLevelCount->set_type(GLMessage::DataType::INT);
15822    arg_sourceLevelCount->add_intvalue(sourceLevelCount);
15823
15824    // call function
15825    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15826    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15827    glContext->hooks->gl.glCopyTextureLevelsAPPLE(destinationTexture, sourceTexture, sourceBaseLevel, sourceLevelCount);
15828    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15829    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15830
15831    void *pointerArgs[] = {
15832    };
15833
15834    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15835                              threadStartTime, threadEndTime,
15836                              &glmsg, pointerArgs);
15837    glContext->traceGLMessage(&glmsg);
15838}
15839
15840void GLTrace_glRenderbufferStorageMultisampleAPPLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
15841    GLMessage glmsg;
15842    GLTraceContext *glContext = getGLTraceContext();
15843
15844    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleAPPLE);
15845
15846    // copy argument target
15847    GLMessage_DataType *arg_target = glmsg.add_args();
15848    arg_target->set_isarray(false);
15849    arg_target->set_type(GLMessage::DataType::ENUM);
15850    arg_target->add_intvalue((int)target);
15851
15852    // copy argument samples
15853    GLMessage_DataType *arg_samples = glmsg.add_args();
15854    arg_samples->set_isarray(false);
15855    arg_samples->set_type(GLMessage::DataType::INT);
15856    arg_samples->add_intvalue(samples);
15857
15858    // copy argument internalformat
15859    GLMessage_DataType *arg_internalformat = glmsg.add_args();
15860    arg_internalformat->set_isarray(false);
15861    arg_internalformat->set_type(GLMessage::DataType::ENUM);
15862    arg_internalformat->add_intvalue((int)internalformat);
15863
15864    // copy argument width
15865    GLMessage_DataType *arg_width = glmsg.add_args();
15866    arg_width->set_isarray(false);
15867    arg_width->set_type(GLMessage::DataType::INT);
15868    arg_width->add_intvalue(width);
15869
15870    // copy argument height
15871    GLMessage_DataType *arg_height = glmsg.add_args();
15872    arg_height->set_isarray(false);
15873    arg_height->set_type(GLMessage::DataType::INT);
15874    arg_height->add_intvalue(height);
15875
15876    // call function
15877    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15878    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15879    glContext->hooks->gl.glRenderbufferStorageMultisampleAPPLE(target, samples, internalformat, width, height);
15880    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15881    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15882
15883    void *pointerArgs[] = {
15884    };
15885
15886    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15887                              threadStartTime, threadEndTime,
15888                              &glmsg, pointerArgs);
15889    glContext->traceGLMessage(&glmsg);
15890}
15891
15892void GLTrace_glResolveMultisampleFramebufferAPPLE(void) {
15893    GLMessage glmsg;
15894    GLTraceContext *glContext = getGLTraceContext();
15895
15896    glmsg.set_function(GLMessage::glResolveMultisampleFramebufferAPPLE);
15897
15898    // call function
15899    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15900    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15901    glContext->hooks->gl.glResolveMultisampleFramebufferAPPLE();
15902    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15903    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15904
15905    void *pointerArgs[] = {
15906    };
15907
15908    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15909                              threadStartTime, threadEndTime,
15910                              &glmsg, pointerArgs);
15911    glContext->traceGLMessage(&glmsg);
15912}
15913
15914GLsync GLTrace_glFenceSyncAPPLE(GLenum condition, GLbitfield flags) {
15915    GLMessage glmsg;
15916    GLTraceContext *glContext = getGLTraceContext();
15917
15918    glmsg.set_function(GLMessage::glFenceSyncAPPLE);
15919
15920    // copy argument condition
15921    GLMessage_DataType *arg_condition = glmsg.add_args();
15922    arg_condition->set_isarray(false);
15923    arg_condition->set_type(GLMessage::DataType::ENUM);
15924    arg_condition->add_intvalue((int)condition);
15925
15926    // copy argument flags
15927    GLMessage_DataType *arg_flags = glmsg.add_args();
15928    arg_flags->set_isarray(false);
15929    arg_flags->set_type(GLMessage::DataType::INT);
15930    arg_flags->add_intvalue(flags);
15931
15932    // call function
15933    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15934    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15935    GLsync retValue = glContext->hooks->gl.glFenceSyncAPPLE(condition, flags);
15936    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15937    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15938
15939    // set return value
15940    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
15941    rt->set_isarray(false);
15942    rt->set_type(GLMessage::DataType::INT64);
15943    rt->add_int64value((uintptr_t)retValue);
15944
15945    void *pointerArgs[] = {
15946        (void *) retValue,
15947    };
15948
15949    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15950                              threadStartTime, threadEndTime,
15951                              &glmsg, pointerArgs);
15952    glContext->traceGLMessage(&glmsg);
15953
15954    return retValue;
15955}
15956
15957GLboolean GLTrace_glIsSyncAPPLE(GLsync sync) {
15958    GLMessage glmsg;
15959    GLTraceContext *glContext = getGLTraceContext();
15960
15961    glmsg.set_function(GLMessage::glIsSyncAPPLE);
15962
15963    // copy argument sync
15964    GLMessage_DataType *arg_sync = glmsg.add_args();
15965    arg_sync->set_isarray(false);
15966    arg_sync->set_type(GLMessage::DataType::INT64);
15967    arg_sync->add_int64value((uintptr_t)sync);
15968
15969    // call function
15970    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15971    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15972    GLboolean retValue = glContext->hooks->gl.glIsSyncAPPLE(sync);
15973    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15974    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15975
15976    // set return value
15977    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
15978    rt->set_isarray(false);
15979    rt->set_type(GLMessage::DataType::BOOL);
15980    rt->add_boolvalue(retValue);
15981
15982    void *pointerArgs[] = {
15983        (void *) sync,
15984    };
15985
15986    fixupGLMessage(glContext, wallStartTime, wallEndTime,
15987                              threadStartTime, threadEndTime,
15988                              &glmsg, pointerArgs);
15989    glContext->traceGLMessage(&glmsg);
15990
15991    return retValue;
15992}
15993
15994void GLTrace_glDeleteSyncAPPLE(GLsync sync) {
15995    GLMessage glmsg;
15996    GLTraceContext *glContext = getGLTraceContext();
15997
15998    glmsg.set_function(GLMessage::glDeleteSyncAPPLE);
15999
16000    // copy argument sync
16001    GLMessage_DataType *arg_sync = glmsg.add_args();
16002    arg_sync->set_isarray(false);
16003    arg_sync->set_type(GLMessage::DataType::INT64);
16004    arg_sync->add_int64value((uintptr_t)sync);
16005
16006    // call function
16007    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16008    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16009    glContext->hooks->gl.glDeleteSyncAPPLE(sync);
16010    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16011    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16012
16013    void *pointerArgs[] = {
16014        (void *) sync,
16015    };
16016
16017    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16018                              threadStartTime, threadEndTime,
16019                              &glmsg, pointerArgs);
16020    glContext->traceGLMessage(&glmsg);
16021}
16022
16023GLenum GLTrace_glClientWaitSyncAPPLE(GLsync sync, GLbitfield flags, GLuint64 timeout) {
16024    GLMessage glmsg;
16025    GLTraceContext *glContext = getGLTraceContext();
16026
16027    glmsg.set_function(GLMessage::glClientWaitSyncAPPLE);
16028
16029    // copy argument sync
16030    GLMessage_DataType *arg_sync = glmsg.add_args();
16031    arg_sync->set_isarray(false);
16032    arg_sync->set_type(GLMessage::DataType::INT64);
16033    arg_sync->add_int64value((uintptr_t)sync);
16034
16035    // copy argument flags
16036    GLMessage_DataType *arg_flags = glmsg.add_args();
16037    arg_flags->set_isarray(false);
16038    arg_flags->set_type(GLMessage::DataType::INT);
16039    arg_flags->add_intvalue(flags);
16040
16041    // copy argument timeout
16042    GLMessage_DataType *arg_timeout = glmsg.add_args();
16043    arg_timeout->set_isarray(false);
16044    arg_timeout->set_type(GLMessage::DataType::INT64);
16045    arg_timeout->add_int64value(timeout);
16046
16047    // call function
16048    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16049    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16050    GLenum retValue = glContext->hooks->gl.glClientWaitSyncAPPLE(sync, flags, timeout);
16051    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16052    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16053
16054    // set return value
16055    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
16056    rt->set_isarray(false);
16057    rt->set_type(GLMessage::DataType::ENUM);
16058    rt->add_intvalue((int)retValue);
16059
16060    void *pointerArgs[] = {
16061        (void *) sync,
16062    };
16063
16064    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16065                              threadStartTime, threadEndTime,
16066                              &glmsg, pointerArgs);
16067    glContext->traceGLMessage(&glmsg);
16068
16069    return retValue;
16070}
16071
16072void GLTrace_glWaitSyncAPPLE(GLsync sync, GLbitfield flags, GLuint64 timeout) {
16073    GLMessage glmsg;
16074    GLTraceContext *glContext = getGLTraceContext();
16075
16076    glmsg.set_function(GLMessage::glWaitSyncAPPLE);
16077
16078    // copy argument sync
16079    GLMessage_DataType *arg_sync = glmsg.add_args();
16080    arg_sync->set_isarray(false);
16081    arg_sync->set_type(GLMessage::DataType::INT64);
16082    arg_sync->add_int64value((uintptr_t)sync);
16083
16084    // copy argument flags
16085    GLMessage_DataType *arg_flags = glmsg.add_args();
16086    arg_flags->set_isarray(false);
16087    arg_flags->set_type(GLMessage::DataType::INT);
16088    arg_flags->add_intvalue(flags);
16089
16090    // copy argument timeout
16091    GLMessage_DataType *arg_timeout = glmsg.add_args();
16092    arg_timeout->set_isarray(false);
16093    arg_timeout->set_type(GLMessage::DataType::INT64);
16094    arg_timeout->add_int64value(timeout);
16095
16096    // call function
16097    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16098    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16099    glContext->hooks->gl.glWaitSyncAPPLE(sync, flags, timeout);
16100    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16101    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16102
16103    void *pointerArgs[] = {
16104        (void *) sync,
16105    };
16106
16107    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16108                              threadStartTime, threadEndTime,
16109                              &glmsg, pointerArgs);
16110    glContext->traceGLMessage(&glmsg);
16111}
16112
16113void GLTrace_glGetInteger64vAPPLE(GLenum pname, GLint64 * params) {
16114    GLMessage glmsg;
16115    GLTraceContext *glContext = getGLTraceContext();
16116
16117    glmsg.set_function(GLMessage::glGetInteger64vAPPLE);
16118
16119    // copy argument pname
16120    GLMessage_DataType *arg_pname = glmsg.add_args();
16121    arg_pname->set_isarray(false);
16122    arg_pname->set_type(GLMessage::DataType::ENUM);
16123    arg_pname->add_intvalue((int)pname);
16124
16125    // copy argument params
16126    GLMessage_DataType *arg_params = glmsg.add_args();
16127    arg_params->set_isarray(false);
16128    arg_params->set_type(GLMessage::DataType::INT64);
16129    arg_params->add_int64value((uintptr_t)params);
16130
16131    // call function
16132    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16133    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16134    glContext->hooks->gl.glGetInteger64vAPPLE(pname, params);
16135    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16136    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16137
16138    void *pointerArgs[] = {
16139        (void *) params,
16140    };
16141
16142    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16143                              threadStartTime, threadEndTime,
16144                              &glmsg, pointerArgs);
16145    glContext->traceGLMessage(&glmsg);
16146}
16147
16148void GLTrace_glGetSyncivAPPLE(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values) {
16149    GLMessage glmsg;
16150    GLTraceContext *glContext = getGLTraceContext();
16151
16152    glmsg.set_function(GLMessage::glGetSyncivAPPLE);
16153
16154    // copy argument sync
16155    GLMessage_DataType *arg_sync = glmsg.add_args();
16156    arg_sync->set_isarray(false);
16157    arg_sync->set_type(GLMessage::DataType::INT64);
16158    arg_sync->add_int64value((uintptr_t)sync);
16159
16160    // copy argument pname
16161    GLMessage_DataType *arg_pname = glmsg.add_args();
16162    arg_pname->set_isarray(false);
16163    arg_pname->set_type(GLMessage::DataType::ENUM);
16164    arg_pname->add_intvalue((int)pname);
16165
16166    // copy argument bufSize
16167    GLMessage_DataType *arg_bufSize = glmsg.add_args();
16168    arg_bufSize->set_isarray(false);
16169    arg_bufSize->set_type(GLMessage::DataType::INT);
16170    arg_bufSize->add_intvalue(bufSize);
16171
16172    // copy argument length
16173    GLMessage_DataType *arg_length = glmsg.add_args();
16174    arg_length->set_isarray(false);
16175    arg_length->set_type(GLMessage::DataType::INT64);
16176    arg_length->add_int64value((uintptr_t)length);
16177
16178    // copy argument values
16179    GLMessage_DataType *arg_values = glmsg.add_args();
16180    arg_values->set_isarray(false);
16181    arg_values->set_type(GLMessage::DataType::INT64);
16182    arg_values->add_int64value((uintptr_t)values);
16183
16184    // call function
16185    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16186    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16187    glContext->hooks->gl.glGetSyncivAPPLE(sync, pname, bufSize, length, values);
16188    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16189    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16190
16191    void *pointerArgs[] = {
16192        (void *) sync,
16193        (void *) length,
16194        (void *) values,
16195    };
16196
16197    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16198                              threadStartTime, threadEndTime,
16199                              &glmsg, pointerArgs);
16200    glContext->traceGLMessage(&glmsg);
16201}
16202
16203void GLTrace_glCopyImageSubDataEXT(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth) {
16204    GLMessage glmsg;
16205    GLTraceContext *glContext = getGLTraceContext();
16206
16207    glmsg.set_function(GLMessage::glCopyImageSubDataEXT);
16208
16209    // copy argument srcName
16210    GLMessage_DataType *arg_srcName = glmsg.add_args();
16211    arg_srcName->set_isarray(false);
16212    arg_srcName->set_type(GLMessage::DataType::INT);
16213    arg_srcName->add_intvalue(srcName);
16214
16215    // copy argument srcTarget
16216    GLMessage_DataType *arg_srcTarget = glmsg.add_args();
16217    arg_srcTarget->set_isarray(false);
16218    arg_srcTarget->set_type(GLMessage::DataType::ENUM);
16219    arg_srcTarget->add_intvalue((int)srcTarget);
16220
16221    // copy argument srcLevel
16222    GLMessage_DataType *arg_srcLevel = glmsg.add_args();
16223    arg_srcLevel->set_isarray(false);
16224    arg_srcLevel->set_type(GLMessage::DataType::INT);
16225    arg_srcLevel->add_intvalue(srcLevel);
16226
16227    // copy argument srcX
16228    GLMessage_DataType *arg_srcX = glmsg.add_args();
16229    arg_srcX->set_isarray(false);
16230    arg_srcX->set_type(GLMessage::DataType::INT);
16231    arg_srcX->add_intvalue(srcX);
16232
16233    // copy argument srcY
16234    GLMessage_DataType *arg_srcY = glmsg.add_args();
16235    arg_srcY->set_isarray(false);
16236    arg_srcY->set_type(GLMessage::DataType::INT);
16237    arg_srcY->add_intvalue(srcY);
16238
16239    // copy argument srcZ
16240    GLMessage_DataType *arg_srcZ = glmsg.add_args();
16241    arg_srcZ->set_isarray(false);
16242    arg_srcZ->set_type(GLMessage::DataType::INT);
16243    arg_srcZ->add_intvalue(srcZ);
16244
16245    // copy argument dstName
16246    GLMessage_DataType *arg_dstName = glmsg.add_args();
16247    arg_dstName->set_isarray(false);
16248    arg_dstName->set_type(GLMessage::DataType::INT);
16249    arg_dstName->add_intvalue(dstName);
16250
16251    // copy argument dstTarget
16252    GLMessage_DataType *arg_dstTarget = glmsg.add_args();
16253    arg_dstTarget->set_isarray(false);
16254    arg_dstTarget->set_type(GLMessage::DataType::ENUM);
16255    arg_dstTarget->add_intvalue((int)dstTarget);
16256
16257    // copy argument dstLevel
16258    GLMessage_DataType *arg_dstLevel = glmsg.add_args();
16259    arg_dstLevel->set_isarray(false);
16260    arg_dstLevel->set_type(GLMessage::DataType::INT);
16261    arg_dstLevel->add_intvalue(dstLevel);
16262
16263    // copy argument dstX
16264    GLMessage_DataType *arg_dstX = glmsg.add_args();
16265    arg_dstX->set_isarray(false);
16266    arg_dstX->set_type(GLMessage::DataType::INT);
16267    arg_dstX->add_intvalue(dstX);
16268
16269    // copy argument dstY
16270    GLMessage_DataType *arg_dstY = glmsg.add_args();
16271    arg_dstY->set_isarray(false);
16272    arg_dstY->set_type(GLMessage::DataType::INT);
16273    arg_dstY->add_intvalue(dstY);
16274
16275    // copy argument dstZ
16276    GLMessage_DataType *arg_dstZ = glmsg.add_args();
16277    arg_dstZ->set_isarray(false);
16278    arg_dstZ->set_type(GLMessage::DataType::INT);
16279    arg_dstZ->add_intvalue(dstZ);
16280
16281    // copy argument srcWidth
16282    GLMessage_DataType *arg_srcWidth = glmsg.add_args();
16283    arg_srcWidth->set_isarray(false);
16284    arg_srcWidth->set_type(GLMessage::DataType::INT);
16285    arg_srcWidth->add_intvalue(srcWidth);
16286
16287    // copy argument srcHeight
16288    GLMessage_DataType *arg_srcHeight = glmsg.add_args();
16289    arg_srcHeight->set_isarray(false);
16290    arg_srcHeight->set_type(GLMessage::DataType::INT);
16291    arg_srcHeight->add_intvalue(srcHeight);
16292
16293    // copy argument srcDepth
16294    GLMessage_DataType *arg_srcDepth = glmsg.add_args();
16295    arg_srcDepth->set_isarray(false);
16296    arg_srcDepth->set_type(GLMessage::DataType::INT);
16297    arg_srcDepth->add_intvalue(srcDepth);
16298
16299    // call function
16300    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16301    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16302    glContext->hooks->gl.glCopyImageSubDataEXT(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth);
16303    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16304    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16305
16306    void *pointerArgs[] = {
16307    };
16308
16309    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16310                              threadStartTime, threadEndTime,
16311                              &glmsg, pointerArgs);
16312    glContext->traceGLMessage(&glmsg);
16313}
16314
16315void GLTrace_glLabelObjectEXT(GLenum type, GLuint object, GLsizei length, const GLchar * label) {
16316    GLMessage glmsg;
16317    GLTraceContext *glContext = getGLTraceContext();
16318
16319    glmsg.set_function(GLMessage::glLabelObjectEXT);
16320
16321    // copy argument type
16322    GLMessage_DataType *arg_type = glmsg.add_args();
16323    arg_type->set_isarray(false);
16324    arg_type->set_type(GLMessage::DataType::ENUM);
16325    arg_type->add_intvalue((int)type);
16326
16327    // copy argument object
16328    GLMessage_DataType *arg_object = glmsg.add_args();
16329    arg_object->set_isarray(false);
16330    arg_object->set_type(GLMessage::DataType::INT);
16331    arg_object->add_intvalue(object);
16332
16333    // copy argument length
16334    GLMessage_DataType *arg_length = glmsg.add_args();
16335    arg_length->set_isarray(false);
16336    arg_length->set_type(GLMessage::DataType::INT);
16337    arg_length->add_intvalue(length);
16338
16339    // copy argument label
16340    GLMessage_DataType *arg_label = glmsg.add_args();
16341    arg_label->set_isarray(false);
16342    arg_label->set_type(GLMessage::DataType::INT64);
16343    arg_label->add_int64value((uintptr_t)label);
16344
16345    // call function
16346    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16347    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16348    glContext->hooks->gl.glLabelObjectEXT(type, object, length, label);
16349    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16350    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16351
16352    void *pointerArgs[] = {
16353        (void *) label,
16354    };
16355
16356    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16357                              threadStartTime, threadEndTime,
16358                              &glmsg, pointerArgs);
16359    glContext->traceGLMessage(&glmsg);
16360}
16361
16362void GLTrace_glGetObjectLabelEXT(GLenum type, GLuint object, GLsizei bufSize, GLsizei * length, GLchar * label) {
16363    GLMessage glmsg;
16364    GLTraceContext *glContext = getGLTraceContext();
16365
16366    glmsg.set_function(GLMessage::glGetObjectLabelEXT);
16367
16368    // copy argument type
16369    GLMessage_DataType *arg_type = glmsg.add_args();
16370    arg_type->set_isarray(false);
16371    arg_type->set_type(GLMessage::DataType::ENUM);
16372    arg_type->add_intvalue((int)type);
16373
16374    // copy argument object
16375    GLMessage_DataType *arg_object = glmsg.add_args();
16376    arg_object->set_isarray(false);
16377    arg_object->set_type(GLMessage::DataType::INT);
16378    arg_object->add_intvalue(object);
16379
16380    // copy argument bufSize
16381    GLMessage_DataType *arg_bufSize = glmsg.add_args();
16382    arg_bufSize->set_isarray(false);
16383    arg_bufSize->set_type(GLMessage::DataType::INT);
16384    arg_bufSize->add_intvalue(bufSize);
16385
16386    // copy argument length
16387    GLMessage_DataType *arg_length = glmsg.add_args();
16388    arg_length->set_isarray(false);
16389    arg_length->set_type(GLMessage::DataType::INT64);
16390    arg_length->add_int64value((uintptr_t)length);
16391
16392    // copy argument label
16393    GLMessage_DataType *arg_label = glmsg.add_args();
16394    arg_label->set_isarray(false);
16395    arg_label->set_type(GLMessage::DataType::INT64);
16396    arg_label->add_int64value((uintptr_t)label);
16397
16398    // call function
16399    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16400    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16401    glContext->hooks->gl.glGetObjectLabelEXT(type, object, bufSize, length, label);
16402    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16403    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16404
16405    void *pointerArgs[] = {
16406        (void *) length,
16407        (void *) label,
16408    };
16409
16410    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16411                              threadStartTime, threadEndTime,
16412                              &glmsg, pointerArgs);
16413    glContext->traceGLMessage(&glmsg);
16414}
16415
16416void GLTrace_glInsertEventMarkerEXT(GLsizei length, const GLchar * marker) {
16417    GLMessage glmsg;
16418    GLTraceContext *glContext = getGLTraceContext();
16419
16420    glmsg.set_function(GLMessage::glInsertEventMarkerEXT);
16421
16422    // copy argument length
16423    GLMessage_DataType *arg_length = glmsg.add_args();
16424    arg_length->set_isarray(false);
16425    arg_length->set_type(GLMessage::DataType::INT);
16426    arg_length->add_intvalue(length);
16427
16428    // copy argument marker
16429    GLMessage_DataType *arg_marker = glmsg.add_args();
16430    arg_marker->set_isarray(false);
16431    arg_marker->set_type(GLMessage::DataType::INT64);
16432    arg_marker->add_int64value((uintptr_t)marker);
16433
16434    // call function
16435    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16436    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16437    glContext->hooks->gl.glInsertEventMarkerEXT(length, marker);
16438    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16439    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16440
16441    void *pointerArgs[] = {
16442        (void *) marker,
16443    };
16444
16445    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16446                              threadStartTime, threadEndTime,
16447                              &glmsg, pointerArgs);
16448    glContext->traceGLMessage(&glmsg);
16449}
16450
16451void GLTrace_glPushGroupMarkerEXT(GLsizei length, const GLchar * marker) {
16452    GLMessage glmsg;
16453    GLTraceContext *glContext = getGLTraceContext();
16454
16455    glmsg.set_function(GLMessage::glPushGroupMarkerEXT);
16456
16457    // copy argument length
16458    GLMessage_DataType *arg_length = glmsg.add_args();
16459    arg_length->set_isarray(false);
16460    arg_length->set_type(GLMessage::DataType::INT);
16461    arg_length->add_intvalue(length);
16462
16463    // copy argument marker
16464    GLMessage_DataType *arg_marker = glmsg.add_args();
16465    arg_marker->set_isarray(false);
16466    arg_marker->set_type(GLMessage::DataType::INT64);
16467    arg_marker->add_int64value((uintptr_t)marker);
16468
16469    // call function
16470    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16471    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16472    glContext->hooks->gl.glPushGroupMarkerEXT(length, marker);
16473    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16474    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16475
16476    void *pointerArgs[] = {
16477        (void *) marker,
16478    };
16479
16480    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16481                              threadStartTime, threadEndTime,
16482                              &glmsg, pointerArgs);
16483    glContext->traceGLMessage(&glmsg);
16484}
16485
16486void GLTrace_glPopGroupMarkerEXT(void) {
16487    GLMessage glmsg;
16488    GLTraceContext *glContext = getGLTraceContext();
16489
16490    glmsg.set_function(GLMessage::glPopGroupMarkerEXT);
16491
16492    // call function
16493    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16494    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16495    glContext->hooks->gl.glPopGroupMarkerEXT();
16496    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16497    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16498
16499    void *pointerArgs[] = {
16500    };
16501
16502    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16503                              threadStartTime, threadEndTime,
16504                              &glmsg, pointerArgs);
16505    glContext->traceGLMessage(&glmsg);
16506}
16507
16508void GLTrace_glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum * attachments) {
16509    GLMessage glmsg;
16510    GLTraceContext *glContext = getGLTraceContext();
16511
16512    glmsg.set_function(GLMessage::glDiscardFramebufferEXT);
16513
16514    // copy argument target
16515    GLMessage_DataType *arg_target = glmsg.add_args();
16516    arg_target->set_isarray(false);
16517    arg_target->set_type(GLMessage::DataType::ENUM);
16518    arg_target->add_intvalue((int)target);
16519
16520    // copy argument numAttachments
16521    GLMessage_DataType *arg_numAttachments = glmsg.add_args();
16522    arg_numAttachments->set_isarray(false);
16523    arg_numAttachments->set_type(GLMessage::DataType::INT);
16524    arg_numAttachments->add_intvalue(numAttachments);
16525
16526    // copy argument attachments
16527    GLMessage_DataType *arg_attachments = glmsg.add_args();
16528    arg_attachments->set_isarray(false);
16529    arg_attachments->set_type(GLMessage::DataType::INT64);
16530    arg_attachments->add_int64value((uintptr_t)attachments);
16531
16532    // call function
16533    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16534    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16535    glContext->hooks->gl.glDiscardFramebufferEXT(target, numAttachments, attachments);
16536    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16537    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16538
16539    void *pointerArgs[] = {
16540        (void *) attachments,
16541    };
16542
16543    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16544                              threadStartTime, threadEndTime,
16545                              &glmsg, pointerArgs);
16546    glContext->traceGLMessage(&glmsg);
16547}
16548
16549void GLTrace_glGenQueriesEXT(GLsizei n, GLuint * ids) {
16550    GLMessage glmsg;
16551    GLTraceContext *glContext = getGLTraceContext();
16552
16553    glmsg.set_function(GLMessage::glGenQueriesEXT);
16554
16555    // copy argument n
16556    GLMessage_DataType *arg_n = glmsg.add_args();
16557    arg_n->set_isarray(false);
16558    arg_n->set_type(GLMessage::DataType::INT);
16559    arg_n->add_intvalue(n);
16560
16561    // copy argument ids
16562    GLMessage_DataType *arg_ids = glmsg.add_args();
16563    arg_ids->set_isarray(false);
16564    arg_ids->set_type(GLMessage::DataType::INT64);
16565    arg_ids->add_int64value((uintptr_t)ids);
16566
16567    // call function
16568    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16569    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16570    glContext->hooks->gl.glGenQueriesEXT(n, ids);
16571    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16572    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16573
16574    void *pointerArgs[] = {
16575        (void *) ids,
16576    };
16577
16578    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16579                              threadStartTime, threadEndTime,
16580                              &glmsg, pointerArgs);
16581    glContext->traceGLMessage(&glmsg);
16582}
16583
16584void GLTrace_glDeleteQueriesEXT(GLsizei n, const GLuint * ids) {
16585    GLMessage glmsg;
16586    GLTraceContext *glContext = getGLTraceContext();
16587
16588    glmsg.set_function(GLMessage::glDeleteQueriesEXT);
16589
16590    // copy argument n
16591    GLMessage_DataType *arg_n = glmsg.add_args();
16592    arg_n->set_isarray(false);
16593    arg_n->set_type(GLMessage::DataType::INT);
16594    arg_n->add_intvalue(n);
16595
16596    // copy argument ids
16597    GLMessage_DataType *arg_ids = glmsg.add_args();
16598    arg_ids->set_isarray(false);
16599    arg_ids->set_type(GLMessage::DataType::INT64);
16600    arg_ids->add_int64value((uintptr_t)ids);
16601
16602    // call function
16603    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16604    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16605    glContext->hooks->gl.glDeleteQueriesEXT(n, ids);
16606    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16607    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16608
16609    void *pointerArgs[] = {
16610        (void *) ids,
16611    };
16612
16613    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16614                              threadStartTime, threadEndTime,
16615                              &glmsg, pointerArgs);
16616    glContext->traceGLMessage(&glmsg);
16617}
16618
16619GLboolean GLTrace_glIsQueryEXT(GLuint id) {
16620    GLMessage glmsg;
16621    GLTraceContext *glContext = getGLTraceContext();
16622
16623    glmsg.set_function(GLMessage::glIsQueryEXT);
16624
16625    // copy argument id
16626    GLMessage_DataType *arg_id = glmsg.add_args();
16627    arg_id->set_isarray(false);
16628    arg_id->set_type(GLMessage::DataType::INT);
16629    arg_id->add_intvalue(id);
16630
16631    // call function
16632    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16633    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16634    GLboolean retValue = glContext->hooks->gl.glIsQueryEXT(id);
16635    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16636    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16637
16638    // set return value
16639    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
16640    rt->set_isarray(false);
16641    rt->set_type(GLMessage::DataType::BOOL);
16642    rt->add_boolvalue(retValue);
16643
16644    void *pointerArgs[] = {
16645    };
16646
16647    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16648                              threadStartTime, threadEndTime,
16649                              &glmsg, pointerArgs);
16650    glContext->traceGLMessage(&glmsg);
16651
16652    return retValue;
16653}
16654
16655void GLTrace_glBeginQueryEXT(GLenum target, GLuint id) {
16656    GLMessage glmsg;
16657    GLTraceContext *glContext = getGLTraceContext();
16658
16659    glmsg.set_function(GLMessage::glBeginQueryEXT);
16660
16661    // copy argument target
16662    GLMessage_DataType *arg_target = glmsg.add_args();
16663    arg_target->set_isarray(false);
16664    arg_target->set_type(GLMessage::DataType::ENUM);
16665    arg_target->add_intvalue((int)target);
16666
16667    // copy argument id
16668    GLMessage_DataType *arg_id = glmsg.add_args();
16669    arg_id->set_isarray(false);
16670    arg_id->set_type(GLMessage::DataType::INT);
16671    arg_id->add_intvalue(id);
16672
16673    // call function
16674    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16675    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16676    glContext->hooks->gl.glBeginQueryEXT(target, id);
16677    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16678    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16679
16680    void *pointerArgs[] = {
16681    };
16682
16683    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16684                              threadStartTime, threadEndTime,
16685                              &glmsg, pointerArgs);
16686    glContext->traceGLMessage(&glmsg);
16687}
16688
16689void GLTrace_glEndQueryEXT(GLenum target) {
16690    GLMessage glmsg;
16691    GLTraceContext *glContext = getGLTraceContext();
16692
16693    glmsg.set_function(GLMessage::glEndQueryEXT);
16694
16695    // copy argument target
16696    GLMessage_DataType *arg_target = glmsg.add_args();
16697    arg_target->set_isarray(false);
16698    arg_target->set_type(GLMessage::DataType::ENUM);
16699    arg_target->add_intvalue((int)target);
16700
16701    // call function
16702    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16703    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16704    glContext->hooks->gl.glEndQueryEXT(target);
16705    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16706    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16707
16708    void *pointerArgs[] = {
16709    };
16710
16711    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16712                              threadStartTime, threadEndTime,
16713                              &glmsg, pointerArgs);
16714    glContext->traceGLMessage(&glmsg);
16715}
16716
16717void GLTrace_glQueryCounterEXT(GLuint id, GLenum target) {
16718    GLMessage glmsg;
16719    GLTraceContext *glContext = getGLTraceContext();
16720
16721    glmsg.set_function(GLMessage::glQueryCounterEXT);
16722
16723    // copy argument id
16724    GLMessage_DataType *arg_id = glmsg.add_args();
16725    arg_id->set_isarray(false);
16726    arg_id->set_type(GLMessage::DataType::INT);
16727    arg_id->add_intvalue(id);
16728
16729    // copy argument target
16730    GLMessage_DataType *arg_target = glmsg.add_args();
16731    arg_target->set_isarray(false);
16732    arg_target->set_type(GLMessage::DataType::ENUM);
16733    arg_target->add_intvalue((int)target);
16734
16735    // call function
16736    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16737    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16738    glContext->hooks->gl.glQueryCounterEXT(id, target);
16739    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16740    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16741
16742    void *pointerArgs[] = {
16743    };
16744
16745    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16746                              threadStartTime, threadEndTime,
16747                              &glmsg, pointerArgs);
16748    glContext->traceGLMessage(&glmsg);
16749}
16750
16751void GLTrace_glGetQueryivEXT(GLenum target, GLenum pname, GLint * params) {
16752    GLMessage glmsg;
16753    GLTraceContext *glContext = getGLTraceContext();
16754
16755    glmsg.set_function(GLMessage::glGetQueryivEXT);
16756
16757    // copy argument target
16758    GLMessage_DataType *arg_target = glmsg.add_args();
16759    arg_target->set_isarray(false);
16760    arg_target->set_type(GLMessage::DataType::ENUM);
16761    arg_target->add_intvalue((int)target);
16762
16763    // copy argument pname
16764    GLMessage_DataType *arg_pname = glmsg.add_args();
16765    arg_pname->set_isarray(false);
16766    arg_pname->set_type(GLMessage::DataType::ENUM);
16767    arg_pname->add_intvalue((int)pname);
16768
16769    // copy argument params
16770    GLMessage_DataType *arg_params = glmsg.add_args();
16771    arg_params->set_isarray(false);
16772    arg_params->set_type(GLMessage::DataType::INT64);
16773    arg_params->add_int64value((uintptr_t)params);
16774
16775    // call function
16776    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16777    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16778    glContext->hooks->gl.glGetQueryivEXT(target, pname, params);
16779    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16780    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16781
16782    void *pointerArgs[] = {
16783        (void *) params,
16784    };
16785
16786    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16787                              threadStartTime, threadEndTime,
16788                              &glmsg, pointerArgs);
16789    glContext->traceGLMessage(&glmsg);
16790}
16791
16792void GLTrace_glGetQueryObjectivEXT(GLuint id, GLenum pname, GLint * params) {
16793    GLMessage glmsg;
16794    GLTraceContext *glContext = getGLTraceContext();
16795
16796    glmsg.set_function(GLMessage::glGetQueryObjectivEXT);
16797
16798    // copy argument id
16799    GLMessage_DataType *arg_id = glmsg.add_args();
16800    arg_id->set_isarray(false);
16801    arg_id->set_type(GLMessage::DataType::INT);
16802    arg_id->add_intvalue(id);
16803
16804    // copy argument pname
16805    GLMessage_DataType *arg_pname = glmsg.add_args();
16806    arg_pname->set_isarray(false);
16807    arg_pname->set_type(GLMessage::DataType::ENUM);
16808    arg_pname->add_intvalue((int)pname);
16809
16810    // copy argument params
16811    GLMessage_DataType *arg_params = glmsg.add_args();
16812    arg_params->set_isarray(false);
16813    arg_params->set_type(GLMessage::DataType::INT64);
16814    arg_params->add_int64value((uintptr_t)params);
16815
16816    // call function
16817    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16818    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16819    glContext->hooks->gl.glGetQueryObjectivEXT(id, pname, params);
16820    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16821    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16822
16823    void *pointerArgs[] = {
16824        (void *) params,
16825    };
16826
16827    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16828                              threadStartTime, threadEndTime,
16829                              &glmsg, pointerArgs);
16830    glContext->traceGLMessage(&glmsg);
16831}
16832
16833void GLTrace_glGetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint * params) {
16834    GLMessage glmsg;
16835    GLTraceContext *glContext = getGLTraceContext();
16836
16837    glmsg.set_function(GLMessage::glGetQueryObjectuivEXT);
16838
16839    // copy argument id
16840    GLMessage_DataType *arg_id = glmsg.add_args();
16841    arg_id->set_isarray(false);
16842    arg_id->set_type(GLMessage::DataType::INT);
16843    arg_id->add_intvalue(id);
16844
16845    // copy argument pname
16846    GLMessage_DataType *arg_pname = glmsg.add_args();
16847    arg_pname->set_isarray(false);
16848    arg_pname->set_type(GLMessage::DataType::ENUM);
16849    arg_pname->add_intvalue((int)pname);
16850
16851    // copy argument params
16852    GLMessage_DataType *arg_params = glmsg.add_args();
16853    arg_params->set_isarray(false);
16854    arg_params->set_type(GLMessage::DataType::INT64);
16855    arg_params->add_int64value((uintptr_t)params);
16856
16857    // call function
16858    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16859    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16860    glContext->hooks->gl.glGetQueryObjectuivEXT(id, pname, params);
16861    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16862    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16863
16864    void *pointerArgs[] = {
16865        (void *) params,
16866    };
16867
16868    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16869                              threadStartTime, threadEndTime,
16870                              &glmsg, pointerArgs);
16871    glContext->traceGLMessage(&glmsg);
16872}
16873
16874void GLTrace_glGetQueryObjecti64vEXT(GLuint id, GLenum pname, GLint64 * params) {
16875    GLMessage glmsg;
16876    GLTraceContext *glContext = getGLTraceContext();
16877
16878    glmsg.set_function(GLMessage::glGetQueryObjecti64vEXT);
16879
16880    // copy argument id
16881    GLMessage_DataType *arg_id = glmsg.add_args();
16882    arg_id->set_isarray(false);
16883    arg_id->set_type(GLMessage::DataType::INT);
16884    arg_id->add_intvalue(id);
16885
16886    // copy argument pname
16887    GLMessage_DataType *arg_pname = glmsg.add_args();
16888    arg_pname->set_isarray(false);
16889    arg_pname->set_type(GLMessage::DataType::ENUM);
16890    arg_pname->add_intvalue((int)pname);
16891
16892    // copy argument params
16893    GLMessage_DataType *arg_params = glmsg.add_args();
16894    arg_params->set_isarray(false);
16895    arg_params->set_type(GLMessage::DataType::INT64);
16896    arg_params->add_int64value((uintptr_t)params);
16897
16898    // call function
16899    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16900    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16901    glContext->hooks->gl.glGetQueryObjecti64vEXT(id, pname, params);
16902    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16903    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16904
16905    void *pointerArgs[] = {
16906        (void *) params,
16907    };
16908
16909    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16910                              threadStartTime, threadEndTime,
16911                              &glmsg, pointerArgs);
16912    glContext->traceGLMessage(&glmsg);
16913}
16914
16915void GLTrace_glGetQueryObjectui64vEXT(GLuint id, GLenum pname, GLuint64 * params) {
16916    GLMessage glmsg;
16917    GLTraceContext *glContext = getGLTraceContext();
16918
16919    glmsg.set_function(GLMessage::glGetQueryObjectui64vEXT);
16920
16921    // copy argument id
16922    GLMessage_DataType *arg_id = glmsg.add_args();
16923    arg_id->set_isarray(false);
16924    arg_id->set_type(GLMessage::DataType::INT);
16925    arg_id->add_intvalue(id);
16926
16927    // copy argument pname
16928    GLMessage_DataType *arg_pname = glmsg.add_args();
16929    arg_pname->set_isarray(false);
16930    arg_pname->set_type(GLMessage::DataType::ENUM);
16931    arg_pname->add_intvalue((int)pname);
16932
16933    // copy argument params
16934    GLMessage_DataType *arg_params = glmsg.add_args();
16935    arg_params->set_isarray(false);
16936    arg_params->set_type(GLMessage::DataType::INT64);
16937    arg_params->add_int64value((uintptr_t)params);
16938
16939    // call function
16940    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16941    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16942    glContext->hooks->gl.glGetQueryObjectui64vEXT(id, pname, params);
16943    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16944    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16945
16946    void *pointerArgs[] = {
16947        (void *) params,
16948    };
16949
16950    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16951                              threadStartTime, threadEndTime,
16952                              &glmsg, pointerArgs);
16953    glContext->traceGLMessage(&glmsg);
16954}
16955
16956void GLTrace_glDrawBuffersEXT(GLsizei n, const GLenum * bufs) {
16957    GLMessage glmsg;
16958    GLTraceContext *glContext = getGLTraceContext();
16959
16960    glmsg.set_function(GLMessage::glDrawBuffersEXT);
16961
16962    // copy argument n
16963    GLMessage_DataType *arg_n = glmsg.add_args();
16964    arg_n->set_isarray(false);
16965    arg_n->set_type(GLMessage::DataType::INT);
16966    arg_n->add_intvalue(n);
16967
16968    // copy argument bufs
16969    GLMessage_DataType *arg_bufs = glmsg.add_args();
16970    arg_bufs->set_isarray(false);
16971    arg_bufs->set_type(GLMessage::DataType::INT64);
16972    arg_bufs->add_int64value((uintptr_t)bufs);
16973
16974    // call function
16975    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
16976    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16977    glContext->hooks->gl.glDrawBuffersEXT(n, bufs);
16978    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
16979    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16980
16981    void *pointerArgs[] = {
16982        (void *) bufs,
16983    };
16984
16985    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16986                              threadStartTime, threadEndTime,
16987                              &glmsg, pointerArgs);
16988    glContext->traceGLMessage(&glmsg);
16989}
16990
16991void GLTrace_glEnableiEXT(GLenum target, GLuint index) {
16992    GLMessage glmsg;
16993    GLTraceContext *glContext = getGLTraceContext();
16994
16995    glmsg.set_function(GLMessage::glEnableiEXT);
16996
16997    // copy argument target
16998    GLMessage_DataType *arg_target = glmsg.add_args();
16999    arg_target->set_isarray(false);
17000    arg_target->set_type(GLMessage::DataType::ENUM);
17001    arg_target->add_intvalue((int)target);
17002
17003    // copy argument index
17004    GLMessage_DataType *arg_index = glmsg.add_args();
17005    arg_index->set_isarray(false);
17006    arg_index->set_type(GLMessage::DataType::INT);
17007    arg_index->add_intvalue(index);
17008
17009    // call function
17010    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17011    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17012    glContext->hooks->gl.glEnableiEXT(target, index);
17013    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17014    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17015
17016    void *pointerArgs[] = {
17017    };
17018
17019    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17020                              threadStartTime, threadEndTime,
17021                              &glmsg, pointerArgs);
17022    glContext->traceGLMessage(&glmsg);
17023}
17024
17025void GLTrace_glDisableiEXT(GLenum target, GLuint index) {
17026    GLMessage glmsg;
17027    GLTraceContext *glContext = getGLTraceContext();
17028
17029    glmsg.set_function(GLMessage::glDisableiEXT);
17030
17031    // copy argument target
17032    GLMessage_DataType *arg_target = glmsg.add_args();
17033    arg_target->set_isarray(false);
17034    arg_target->set_type(GLMessage::DataType::ENUM);
17035    arg_target->add_intvalue((int)target);
17036
17037    // copy argument index
17038    GLMessage_DataType *arg_index = glmsg.add_args();
17039    arg_index->set_isarray(false);
17040    arg_index->set_type(GLMessage::DataType::INT);
17041    arg_index->add_intvalue(index);
17042
17043    // call function
17044    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17045    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17046    glContext->hooks->gl.glDisableiEXT(target, index);
17047    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17048    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17049
17050    void *pointerArgs[] = {
17051    };
17052
17053    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17054                              threadStartTime, threadEndTime,
17055                              &glmsg, pointerArgs);
17056    glContext->traceGLMessage(&glmsg);
17057}
17058
17059void GLTrace_glBlendEquationiEXT(GLuint buf, GLenum mode) {
17060    GLMessage glmsg;
17061    GLTraceContext *glContext = getGLTraceContext();
17062
17063    glmsg.set_function(GLMessage::glBlendEquationiEXT);
17064
17065    // copy argument buf
17066    GLMessage_DataType *arg_buf = glmsg.add_args();
17067    arg_buf->set_isarray(false);
17068    arg_buf->set_type(GLMessage::DataType::INT);
17069    arg_buf->add_intvalue(buf);
17070
17071    // copy argument mode
17072    GLMessage_DataType *arg_mode = glmsg.add_args();
17073    arg_mode->set_isarray(false);
17074    arg_mode->set_type(GLMessage::DataType::ENUM);
17075    arg_mode->add_intvalue((int)mode);
17076
17077    // call function
17078    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17079    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17080    glContext->hooks->gl.glBlendEquationiEXT(buf, mode);
17081    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17082    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17083
17084    void *pointerArgs[] = {
17085    };
17086
17087    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17088                              threadStartTime, threadEndTime,
17089                              &glmsg, pointerArgs);
17090    glContext->traceGLMessage(&glmsg);
17091}
17092
17093void GLTrace_glBlendEquationSeparateiEXT(GLuint buf, GLenum modeRGB, GLenum modeAlpha) {
17094    GLMessage glmsg;
17095    GLTraceContext *glContext = getGLTraceContext();
17096
17097    glmsg.set_function(GLMessage::glBlendEquationSeparateiEXT);
17098
17099    // copy argument buf
17100    GLMessage_DataType *arg_buf = glmsg.add_args();
17101    arg_buf->set_isarray(false);
17102    arg_buf->set_type(GLMessage::DataType::INT);
17103    arg_buf->add_intvalue(buf);
17104
17105    // copy argument modeRGB
17106    GLMessage_DataType *arg_modeRGB = glmsg.add_args();
17107    arg_modeRGB->set_isarray(false);
17108    arg_modeRGB->set_type(GLMessage::DataType::ENUM);
17109    arg_modeRGB->add_intvalue((int)modeRGB);
17110
17111    // copy argument modeAlpha
17112    GLMessage_DataType *arg_modeAlpha = glmsg.add_args();
17113    arg_modeAlpha->set_isarray(false);
17114    arg_modeAlpha->set_type(GLMessage::DataType::ENUM);
17115    arg_modeAlpha->add_intvalue((int)modeAlpha);
17116
17117    // call function
17118    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17119    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17120    glContext->hooks->gl.glBlendEquationSeparateiEXT(buf, modeRGB, modeAlpha);
17121    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17122    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17123
17124    void *pointerArgs[] = {
17125    };
17126
17127    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17128                              threadStartTime, threadEndTime,
17129                              &glmsg, pointerArgs);
17130    glContext->traceGLMessage(&glmsg);
17131}
17132
17133void GLTrace_glBlendFunciEXT(GLuint buf, GLenum src, GLenum dst) {
17134    GLMessage glmsg;
17135    GLTraceContext *glContext = getGLTraceContext();
17136
17137    glmsg.set_function(GLMessage::glBlendFunciEXT);
17138
17139    // copy argument buf
17140    GLMessage_DataType *arg_buf = glmsg.add_args();
17141    arg_buf->set_isarray(false);
17142    arg_buf->set_type(GLMessage::DataType::INT);
17143    arg_buf->add_intvalue(buf);
17144
17145    // copy argument src
17146    GLMessage_DataType *arg_src = glmsg.add_args();
17147    arg_src->set_isarray(false);
17148    arg_src->set_type(GLMessage::DataType::ENUM);
17149    arg_src->add_intvalue((int)src);
17150
17151    // copy argument dst
17152    GLMessage_DataType *arg_dst = glmsg.add_args();
17153    arg_dst->set_isarray(false);
17154    arg_dst->set_type(GLMessage::DataType::ENUM);
17155    arg_dst->add_intvalue((int)dst);
17156
17157    // call function
17158    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17159    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17160    glContext->hooks->gl.glBlendFunciEXT(buf, src, dst);
17161    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17162    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17163
17164    void *pointerArgs[] = {
17165    };
17166
17167    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17168                              threadStartTime, threadEndTime,
17169                              &glmsg, pointerArgs);
17170    glContext->traceGLMessage(&glmsg);
17171}
17172
17173void GLTrace_glBlendFuncSeparateiEXT(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) {
17174    GLMessage glmsg;
17175    GLTraceContext *glContext = getGLTraceContext();
17176
17177    glmsg.set_function(GLMessage::glBlendFuncSeparateiEXT);
17178
17179    // copy argument buf
17180    GLMessage_DataType *arg_buf = glmsg.add_args();
17181    arg_buf->set_isarray(false);
17182    arg_buf->set_type(GLMessage::DataType::INT);
17183    arg_buf->add_intvalue(buf);
17184
17185    // copy argument srcRGB
17186    GLMessage_DataType *arg_srcRGB = glmsg.add_args();
17187    arg_srcRGB->set_isarray(false);
17188    arg_srcRGB->set_type(GLMessage::DataType::ENUM);
17189    arg_srcRGB->add_intvalue((int)srcRGB);
17190
17191    // copy argument dstRGB
17192    GLMessage_DataType *arg_dstRGB = glmsg.add_args();
17193    arg_dstRGB->set_isarray(false);
17194    arg_dstRGB->set_type(GLMessage::DataType::ENUM);
17195    arg_dstRGB->add_intvalue((int)dstRGB);
17196
17197    // copy argument srcAlpha
17198    GLMessage_DataType *arg_srcAlpha = glmsg.add_args();
17199    arg_srcAlpha->set_isarray(false);
17200    arg_srcAlpha->set_type(GLMessage::DataType::ENUM);
17201    arg_srcAlpha->add_intvalue((int)srcAlpha);
17202
17203    // copy argument dstAlpha
17204    GLMessage_DataType *arg_dstAlpha = glmsg.add_args();
17205    arg_dstAlpha->set_isarray(false);
17206    arg_dstAlpha->set_type(GLMessage::DataType::ENUM);
17207    arg_dstAlpha->add_intvalue((int)dstAlpha);
17208
17209    // call function
17210    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17211    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17212    glContext->hooks->gl.glBlendFuncSeparateiEXT(buf, srcRGB, dstRGB, srcAlpha, dstAlpha);
17213    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17214    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17215
17216    void *pointerArgs[] = {
17217    };
17218
17219    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17220                              threadStartTime, threadEndTime,
17221                              &glmsg, pointerArgs);
17222    glContext->traceGLMessage(&glmsg);
17223}
17224
17225void GLTrace_glColorMaskiEXT(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) {
17226    GLMessage glmsg;
17227    GLTraceContext *glContext = getGLTraceContext();
17228
17229    glmsg.set_function(GLMessage::glColorMaskiEXT);
17230
17231    // copy argument index
17232    GLMessage_DataType *arg_index = glmsg.add_args();
17233    arg_index->set_isarray(false);
17234    arg_index->set_type(GLMessage::DataType::INT);
17235    arg_index->add_intvalue(index);
17236
17237    // copy argument r
17238    GLMessage_DataType *arg_r = glmsg.add_args();
17239    arg_r->set_isarray(false);
17240    arg_r->set_type(GLMessage::DataType::BOOL);
17241    arg_r->add_boolvalue(r);
17242
17243    // copy argument g
17244    GLMessage_DataType *arg_g = glmsg.add_args();
17245    arg_g->set_isarray(false);
17246    arg_g->set_type(GLMessage::DataType::BOOL);
17247    arg_g->add_boolvalue(g);
17248
17249    // copy argument b
17250    GLMessage_DataType *arg_b = glmsg.add_args();
17251    arg_b->set_isarray(false);
17252    arg_b->set_type(GLMessage::DataType::BOOL);
17253    arg_b->add_boolvalue(b);
17254
17255    // copy argument a
17256    GLMessage_DataType *arg_a = glmsg.add_args();
17257    arg_a->set_isarray(false);
17258    arg_a->set_type(GLMessage::DataType::BOOL);
17259    arg_a->add_boolvalue(a);
17260
17261    // call function
17262    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17263    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17264    glContext->hooks->gl.glColorMaskiEXT(index, r, g, b, a);
17265    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17266    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17267
17268    void *pointerArgs[] = {
17269    };
17270
17271    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17272                              threadStartTime, threadEndTime,
17273                              &glmsg, pointerArgs);
17274    glContext->traceGLMessage(&glmsg);
17275}
17276
17277GLboolean GLTrace_glIsEnablediEXT(GLenum target, GLuint index) {
17278    GLMessage glmsg;
17279    GLTraceContext *glContext = getGLTraceContext();
17280
17281    glmsg.set_function(GLMessage::glIsEnablediEXT);
17282
17283    // copy argument target
17284    GLMessage_DataType *arg_target = glmsg.add_args();
17285    arg_target->set_isarray(false);
17286    arg_target->set_type(GLMessage::DataType::ENUM);
17287    arg_target->add_intvalue((int)target);
17288
17289    // copy argument index
17290    GLMessage_DataType *arg_index = glmsg.add_args();
17291    arg_index->set_isarray(false);
17292    arg_index->set_type(GLMessage::DataType::INT);
17293    arg_index->add_intvalue(index);
17294
17295    // call function
17296    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17297    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17298    GLboolean retValue = glContext->hooks->gl.glIsEnablediEXT(target, index);
17299    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17300    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17301
17302    // set return value
17303    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
17304    rt->set_isarray(false);
17305    rt->set_type(GLMessage::DataType::BOOL);
17306    rt->add_boolvalue(retValue);
17307
17308    void *pointerArgs[] = {
17309    };
17310
17311    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17312                              threadStartTime, threadEndTime,
17313                              &glmsg, pointerArgs);
17314    glContext->traceGLMessage(&glmsg);
17315
17316    return retValue;
17317}
17318
17319void GLTrace_glDrawArraysInstancedEXT(GLenum mode, GLint start, GLsizei count, GLsizei primcount) {
17320    GLMessage glmsg;
17321    GLTraceContext *glContext = getGLTraceContext();
17322
17323    glmsg.set_function(GLMessage::glDrawArraysInstancedEXT);
17324
17325    // copy argument mode
17326    GLMessage_DataType *arg_mode = glmsg.add_args();
17327    arg_mode->set_isarray(false);
17328    arg_mode->set_type(GLMessage::DataType::ENUM);
17329    arg_mode->add_intvalue((int)mode);
17330
17331    // copy argument start
17332    GLMessage_DataType *arg_start = glmsg.add_args();
17333    arg_start->set_isarray(false);
17334    arg_start->set_type(GLMessage::DataType::INT);
17335    arg_start->add_intvalue(start);
17336
17337    // copy argument count
17338    GLMessage_DataType *arg_count = glmsg.add_args();
17339    arg_count->set_isarray(false);
17340    arg_count->set_type(GLMessage::DataType::INT);
17341    arg_count->add_intvalue(count);
17342
17343    // copy argument primcount
17344    GLMessage_DataType *arg_primcount = glmsg.add_args();
17345    arg_primcount->set_isarray(false);
17346    arg_primcount->set_type(GLMessage::DataType::INT);
17347    arg_primcount->add_intvalue(primcount);
17348
17349    // call function
17350    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17351    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17352    glContext->hooks->gl.glDrawArraysInstancedEXT(mode, start, count, primcount);
17353    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17354    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17355
17356    void *pointerArgs[] = {
17357    };
17358
17359    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17360                              threadStartTime, threadEndTime,
17361                              &glmsg, pointerArgs);
17362    glContext->traceGLMessage(&glmsg);
17363}
17364
17365void GLTrace_glDrawElementsInstancedEXT(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei primcount) {
17366    GLMessage glmsg;
17367    GLTraceContext *glContext = getGLTraceContext();
17368
17369    glmsg.set_function(GLMessage::glDrawElementsInstancedEXT);
17370
17371    // copy argument mode
17372    GLMessage_DataType *arg_mode = glmsg.add_args();
17373    arg_mode->set_isarray(false);
17374    arg_mode->set_type(GLMessage::DataType::ENUM);
17375    arg_mode->add_intvalue((int)mode);
17376
17377    // copy argument count
17378    GLMessage_DataType *arg_count = glmsg.add_args();
17379    arg_count->set_isarray(false);
17380    arg_count->set_type(GLMessage::DataType::INT);
17381    arg_count->add_intvalue(count);
17382
17383    // copy argument type
17384    GLMessage_DataType *arg_type = glmsg.add_args();
17385    arg_type->set_isarray(false);
17386    arg_type->set_type(GLMessage::DataType::ENUM);
17387    arg_type->add_intvalue((int)type);
17388
17389    // copy argument indices
17390    GLMessage_DataType *arg_indices = glmsg.add_args();
17391    arg_indices->set_isarray(false);
17392    arg_indices->set_type(GLMessage::DataType::INT64);
17393    arg_indices->add_int64value((uintptr_t)indices);
17394
17395    // copy argument primcount
17396    GLMessage_DataType *arg_primcount = glmsg.add_args();
17397    arg_primcount->set_isarray(false);
17398    arg_primcount->set_type(GLMessage::DataType::INT);
17399    arg_primcount->add_intvalue(primcount);
17400
17401    // call function
17402    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17403    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17404    glContext->hooks->gl.glDrawElementsInstancedEXT(mode, count, type, indices, primcount);
17405    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17406    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17407
17408    void *pointerArgs[] = {
17409        (void *) indices,
17410    };
17411
17412    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17413                              threadStartTime, threadEndTime,
17414                              &glmsg, pointerArgs);
17415    glContext->traceGLMessage(&glmsg);
17416}
17417
17418void GLTrace_glFramebufferTextureEXT(GLenum target, GLenum attachment, GLuint texture, GLint level) {
17419    GLMessage glmsg;
17420    GLTraceContext *glContext = getGLTraceContext();
17421
17422    glmsg.set_function(GLMessage::glFramebufferTextureEXT);
17423
17424    // copy argument target
17425    GLMessage_DataType *arg_target = glmsg.add_args();
17426    arg_target->set_isarray(false);
17427    arg_target->set_type(GLMessage::DataType::ENUM);
17428    arg_target->add_intvalue((int)target);
17429
17430    // copy argument attachment
17431    GLMessage_DataType *arg_attachment = glmsg.add_args();
17432    arg_attachment->set_isarray(false);
17433    arg_attachment->set_type(GLMessage::DataType::ENUM);
17434    arg_attachment->add_intvalue((int)attachment);
17435
17436    // copy argument texture
17437    GLMessage_DataType *arg_texture = glmsg.add_args();
17438    arg_texture->set_isarray(false);
17439    arg_texture->set_type(GLMessage::DataType::INT);
17440    arg_texture->add_intvalue(texture);
17441
17442    // copy argument level
17443    GLMessage_DataType *arg_level = glmsg.add_args();
17444    arg_level->set_isarray(false);
17445    arg_level->set_type(GLMessage::DataType::INT);
17446    arg_level->add_intvalue(level);
17447
17448    // call function
17449    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17450    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17451    glContext->hooks->gl.glFramebufferTextureEXT(target, attachment, texture, level);
17452    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17453    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17454
17455    void *pointerArgs[] = {
17456    };
17457
17458    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17459                              threadStartTime, threadEndTime,
17460                              &glmsg, pointerArgs);
17461    glContext->traceGLMessage(&glmsg);
17462}
17463
17464void GLTrace_glVertexAttribDivisorEXT(GLuint index, GLuint divisor) {
17465    GLMessage glmsg;
17466    GLTraceContext *glContext = getGLTraceContext();
17467
17468    glmsg.set_function(GLMessage::glVertexAttribDivisorEXT);
17469
17470    // copy argument index
17471    GLMessage_DataType *arg_index = glmsg.add_args();
17472    arg_index->set_isarray(false);
17473    arg_index->set_type(GLMessage::DataType::INT);
17474    arg_index->add_intvalue(index);
17475
17476    // copy argument divisor
17477    GLMessage_DataType *arg_divisor = glmsg.add_args();
17478    arg_divisor->set_isarray(false);
17479    arg_divisor->set_type(GLMessage::DataType::INT);
17480    arg_divisor->add_intvalue(divisor);
17481
17482    // call function
17483    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17484    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17485    glContext->hooks->gl.glVertexAttribDivisorEXT(index, divisor);
17486    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17487    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17488
17489    void *pointerArgs[] = {
17490    };
17491
17492    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17493                              threadStartTime, threadEndTime,
17494                              &glmsg, pointerArgs);
17495    glContext->traceGLMessage(&glmsg);
17496}
17497
17498void * GLTrace_glMapBufferRangeEXT(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) {
17499    GLMessage glmsg;
17500    GLTraceContext *glContext = getGLTraceContext();
17501
17502    glmsg.set_function(GLMessage::glMapBufferRangeEXT);
17503
17504    // copy argument target
17505    GLMessage_DataType *arg_target = glmsg.add_args();
17506    arg_target->set_isarray(false);
17507    arg_target->set_type(GLMessage::DataType::ENUM);
17508    arg_target->add_intvalue((int)target);
17509
17510    // copy argument offset
17511    GLMessage_DataType *arg_offset = glmsg.add_args();
17512    arg_offset->set_isarray(false);
17513    arg_offset->set_type(GLMessage::DataType::INT);
17514    arg_offset->add_intvalue(offset);
17515
17516    // copy argument length
17517    GLMessage_DataType *arg_length = glmsg.add_args();
17518    arg_length->set_isarray(false);
17519    arg_length->set_type(GLMessage::DataType::INT);
17520    arg_length->add_intvalue(length);
17521
17522    // copy argument access
17523    GLMessage_DataType *arg_access = glmsg.add_args();
17524    arg_access->set_isarray(false);
17525    arg_access->set_type(GLMessage::DataType::INT);
17526    arg_access->add_intvalue(access);
17527
17528    // call function
17529    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17530    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17531    void * retValue = glContext->hooks->gl.glMapBufferRangeEXT(target, offset, length, access);
17532    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17533    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17534
17535    // set return value
17536    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
17537    rt->set_isarray(false);
17538    rt->set_type(GLMessage::DataType::INT64);
17539    rt->add_int64value((uintptr_t)retValue);
17540
17541    void *pointerArgs[] = {
17542        (void *) retValue,
17543    };
17544
17545    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17546                              threadStartTime, threadEndTime,
17547                              &glmsg, pointerArgs);
17548    glContext->traceGLMessage(&glmsg);
17549
17550    return retValue;
17551}
17552
17553void GLTrace_glFlushMappedBufferRangeEXT(GLenum target, GLintptr offset, GLsizeiptr length) {
17554    GLMessage glmsg;
17555    GLTraceContext *glContext = getGLTraceContext();
17556
17557    glmsg.set_function(GLMessage::glFlushMappedBufferRangeEXT);
17558
17559    // copy argument target
17560    GLMessage_DataType *arg_target = glmsg.add_args();
17561    arg_target->set_isarray(false);
17562    arg_target->set_type(GLMessage::DataType::ENUM);
17563    arg_target->add_intvalue((int)target);
17564
17565    // copy argument offset
17566    GLMessage_DataType *arg_offset = glmsg.add_args();
17567    arg_offset->set_isarray(false);
17568    arg_offset->set_type(GLMessage::DataType::INT);
17569    arg_offset->add_intvalue(offset);
17570
17571    // copy argument length
17572    GLMessage_DataType *arg_length = glmsg.add_args();
17573    arg_length->set_isarray(false);
17574    arg_length->set_type(GLMessage::DataType::INT);
17575    arg_length->add_intvalue(length);
17576
17577    // call function
17578    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17579    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17580    glContext->hooks->gl.glFlushMappedBufferRangeEXT(target, offset, length);
17581    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17582    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17583
17584    void *pointerArgs[] = {
17585    };
17586
17587    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17588                              threadStartTime, threadEndTime,
17589                              &glmsg, pointerArgs);
17590    glContext->traceGLMessage(&glmsg);
17591}
17592
17593void GLTrace_glMultiDrawArraysEXT(GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount) {
17594    GLMessage glmsg;
17595    GLTraceContext *glContext = getGLTraceContext();
17596
17597    glmsg.set_function(GLMessage::glMultiDrawArraysEXT);
17598
17599    // copy argument mode
17600    GLMessage_DataType *arg_mode = glmsg.add_args();
17601    arg_mode->set_isarray(false);
17602    arg_mode->set_type(GLMessage::DataType::ENUM);
17603    arg_mode->add_intvalue((int)mode);
17604
17605    // copy argument first
17606    GLMessage_DataType *arg_first = glmsg.add_args();
17607    arg_first->set_isarray(false);
17608    arg_first->set_type(GLMessage::DataType::INT64);
17609    arg_first->add_int64value((uintptr_t)first);
17610
17611    // copy argument count
17612    GLMessage_DataType *arg_count = glmsg.add_args();
17613    arg_count->set_isarray(false);
17614    arg_count->set_type(GLMessage::DataType::INT64);
17615    arg_count->add_int64value((uintptr_t)count);
17616
17617    // copy argument primcount
17618    GLMessage_DataType *arg_primcount = glmsg.add_args();
17619    arg_primcount->set_isarray(false);
17620    arg_primcount->set_type(GLMessage::DataType::INT);
17621    arg_primcount->add_intvalue(primcount);
17622
17623    // call function
17624    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17625    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17626    glContext->hooks->gl.glMultiDrawArraysEXT(mode, first, count, primcount);
17627    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17628    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17629
17630    void *pointerArgs[] = {
17631        (void *) first,
17632        (void *) count,
17633    };
17634
17635    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17636                              threadStartTime, threadEndTime,
17637                              &glmsg, pointerArgs);
17638    glContext->traceGLMessage(&glmsg);
17639}
17640
17641void GLTrace_glMultiDrawElementsEXT(GLenum mode, const GLsizei * count, GLenum type, const void *const* indices, GLsizei primcount) {
17642    GLMessage glmsg;
17643    GLTraceContext *glContext = getGLTraceContext();
17644
17645    glmsg.set_function(GLMessage::glMultiDrawElementsEXT);
17646
17647    // copy argument mode
17648    GLMessage_DataType *arg_mode = glmsg.add_args();
17649    arg_mode->set_isarray(false);
17650    arg_mode->set_type(GLMessage::DataType::ENUM);
17651    arg_mode->add_intvalue((int)mode);
17652
17653    // copy argument count
17654    GLMessage_DataType *arg_count = glmsg.add_args();
17655    arg_count->set_isarray(false);
17656    arg_count->set_type(GLMessage::DataType::INT64);
17657    arg_count->add_int64value((uintptr_t)count);
17658
17659    // copy argument type
17660    GLMessage_DataType *arg_type = glmsg.add_args();
17661    arg_type->set_isarray(false);
17662    arg_type->set_type(GLMessage::DataType::ENUM);
17663    arg_type->add_intvalue((int)type);
17664
17665    // copy argument indices
17666    GLMessage_DataType *arg_indices = glmsg.add_args();
17667    arg_indices->set_isarray(false);
17668    arg_indices->set_type(GLMessage::DataType::INT64);
17669    arg_indices->add_int64value((uintptr_t)indices);
17670
17671    // copy argument primcount
17672    GLMessage_DataType *arg_primcount = glmsg.add_args();
17673    arg_primcount->set_isarray(false);
17674    arg_primcount->set_type(GLMessage::DataType::INT);
17675    arg_primcount->add_intvalue(primcount);
17676
17677    // call function
17678    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17679    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17680    glContext->hooks->gl.glMultiDrawElementsEXT(mode, count, type, indices, primcount);
17681    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17682    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17683
17684    void *pointerArgs[] = {
17685        (void *) count,
17686        (void *) indices,
17687    };
17688
17689    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17690                              threadStartTime, threadEndTime,
17691                              &glmsg, pointerArgs);
17692    glContext->traceGLMessage(&glmsg);
17693}
17694
17695void GLTrace_glRenderbufferStorageMultisampleEXT(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
17696    GLMessage glmsg;
17697    GLTraceContext *glContext = getGLTraceContext();
17698
17699    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleEXT);
17700
17701    // copy argument target
17702    GLMessage_DataType *arg_target = glmsg.add_args();
17703    arg_target->set_isarray(false);
17704    arg_target->set_type(GLMessage::DataType::ENUM);
17705    arg_target->add_intvalue((int)target);
17706
17707    // copy argument samples
17708    GLMessage_DataType *arg_samples = glmsg.add_args();
17709    arg_samples->set_isarray(false);
17710    arg_samples->set_type(GLMessage::DataType::INT);
17711    arg_samples->add_intvalue(samples);
17712
17713    // copy argument internalformat
17714    GLMessage_DataType *arg_internalformat = glmsg.add_args();
17715    arg_internalformat->set_isarray(false);
17716    arg_internalformat->set_type(GLMessage::DataType::ENUM);
17717    arg_internalformat->add_intvalue((int)internalformat);
17718
17719    // copy argument width
17720    GLMessage_DataType *arg_width = glmsg.add_args();
17721    arg_width->set_isarray(false);
17722    arg_width->set_type(GLMessage::DataType::INT);
17723    arg_width->add_intvalue(width);
17724
17725    // copy argument height
17726    GLMessage_DataType *arg_height = glmsg.add_args();
17727    arg_height->set_isarray(false);
17728    arg_height->set_type(GLMessage::DataType::INT);
17729    arg_height->add_intvalue(height);
17730
17731    // call function
17732    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17733    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17734    glContext->hooks->gl.glRenderbufferStorageMultisampleEXT(target, samples, internalformat, width, height);
17735    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17736    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17737
17738    void *pointerArgs[] = {
17739    };
17740
17741    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17742                              threadStartTime, threadEndTime,
17743                              &glmsg, pointerArgs);
17744    glContext->traceGLMessage(&glmsg);
17745}
17746
17747void GLTrace_glFramebufferTexture2DMultisampleEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples) {
17748    GLMessage glmsg;
17749    GLTraceContext *glContext = getGLTraceContext();
17750
17751    glmsg.set_function(GLMessage::glFramebufferTexture2DMultisampleEXT);
17752
17753    // copy argument target
17754    GLMessage_DataType *arg_target = glmsg.add_args();
17755    arg_target->set_isarray(false);
17756    arg_target->set_type(GLMessage::DataType::ENUM);
17757    arg_target->add_intvalue((int)target);
17758
17759    // copy argument attachment
17760    GLMessage_DataType *arg_attachment = glmsg.add_args();
17761    arg_attachment->set_isarray(false);
17762    arg_attachment->set_type(GLMessage::DataType::ENUM);
17763    arg_attachment->add_intvalue((int)attachment);
17764
17765    // copy argument textarget
17766    GLMessage_DataType *arg_textarget = glmsg.add_args();
17767    arg_textarget->set_isarray(false);
17768    arg_textarget->set_type(GLMessage::DataType::ENUM);
17769    arg_textarget->add_intvalue((int)textarget);
17770
17771    // copy argument texture
17772    GLMessage_DataType *arg_texture = glmsg.add_args();
17773    arg_texture->set_isarray(false);
17774    arg_texture->set_type(GLMessage::DataType::INT);
17775    arg_texture->add_intvalue(texture);
17776
17777    // copy argument level
17778    GLMessage_DataType *arg_level = glmsg.add_args();
17779    arg_level->set_isarray(false);
17780    arg_level->set_type(GLMessage::DataType::INT);
17781    arg_level->add_intvalue(level);
17782
17783    // copy argument samples
17784    GLMessage_DataType *arg_samples = glmsg.add_args();
17785    arg_samples->set_isarray(false);
17786    arg_samples->set_type(GLMessage::DataType::INT);
17787    arg_samples->add_intvalue(samples);
17788
17789    // call function
17790    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17791    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17792    glContext->hooks->gl.glFramebufferTexture2DMultisampleEXT(target, attachment, textarget, texture, level, samples);
17793    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17794    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17795
17796    void *pointerArgs[] = {
17797    };
17798
17799    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17800                              threadStartTime, threadEndTime,
17801                              &glmsg, pointerArgs);
17802    glContext->traceGLMessage(&glmsg);
17803}
17804
17805void GLTrace_glReadBufferIndexedEXT(GLenum src, GLint index) {
17806    GLMessage glmsg;
17807    GLTraceContext *glContext = getGLTraceContext();
17808
17809    glmsg.set_function(GLMessage::glReadBufferIndexedEXT);
17810
17811    // copy argument src
17812    GLMessage_DataType *arg_src = glmsg.add_args();
17813    arg_src->set_isarray(false);
17814    arg_src->set_type(GLMessage::DataType::ENUM);
17815    arg_src->add_intvalue((int)src);
17816
17817    // copy argument index
17818    GLMessage_DataType *arg_index = glmsg.add_args();
17819    arg_index->set_isarray(false);
17820    arg_index->set_type(GLMessage::DataType::INT);
17821    arg_index->add_intvalue(index);
17822
17823    // call function
17824    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17825    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17826    glContext->hooks->gl.glReadBufferIndexedEXT(src, index);
17827    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17828    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17829
17830    void *pointerArgs[] = {
17831    };
17832
17833    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17834                              threadStartTime, threadEndTime,
17835                              &glmsg, pointerArgs);
17836    glContext->traceGLMessage(&glmsg);
17837}
17838
17839void GLTrace_glDrawBuffersIndexedEXT(GLint n, const GLenum * location, const GLint * indices) {
17840    GLMessage glmsg;
17841    GLTraceContext *glContext = getGLTraceContext();
17842
17843    glmsg.set_function(GLMessage::glDrawBuffersIndexedEXT);
17844
17845    // copy argument n
17846    GLMessage_DataType *arg_n = glmsg.add_args();
17847    arg_n->set_isarray(false);
17848    arg_n->set_type(GLMessage::DataType::INT);
17849    arg_n->add_intvalue(n);
17850
17851    // copy argument location
17852    GLMessage_DataType *arg_location = glmsg.add_args();
17853    arg_location->set_isarray(false);
17854    arg_location->set_type(GLMessage::DataType::INT64);
17855    arg_location->add_int64value((uintptr_t)location);
17856
17857    // copy argument indices
17858    GLMessage_DataType *arg_indices = glmsg.add_args();
17859    arg_indices->set_isarray(false);
17860    arg_indices->set_type(GLMessage::DataType::INT64);
17861    arg_indices->add_int64value((uintptr_t)indices);
17862
17863    // call function
17864    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17865    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17866    glContext->hooks->gl.glDrawBuffersIndexedEXT(n, location, indices);
17867    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17868    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17869
17870    void *pointerArgs[] = {
17871        (void *) location,
17872        (void *) indices,
17873    };
17874
17875    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17876                              threadStartTime, threadEndTime,
17877                              &glmsg, pointerArgs);
17878    glContext->traceGLMessage(&glmsg);
17879}
17880
17881void GLTrace_glGetIntegeri_vEXT(GLenum target, GLuint index, GLint * data) {
17882    GLMessage glmsg;
17883    GLTraceContext *glContext = getGLTraceContext();
17884
17885    glmsg.set_function(GLMessage::glGetIntegeri_vEXT);
17886
17887    // copy argument target
17888    GLMessage_DataType *arg_target = glmsg.add_args();
17889    arg_target->set_isarray(false);
17890    arg_target->set_type(GLMessage::DataType::ENUM);
17891    arg_target->add_intvalue((int)target);
17892
17893    // copy argument index
17894    GLMessage_DataType *arg_index = glmsg.add_args();
17895    arg_index->set_isarray(false);
17896    arg_index->set_type(GLMessage::DataType::INT);
17897    arg_index->add_intvalue(index);
17898
17899    // copy argument data
17900    GLMessage_DataType *arg_data = glmsg.add_args();
17901    arg_data->set_isarray(false);
17902    arg_data->set_type(GLMessage::DataType::INT64);
17903    arg_data->add_int64value((uintptr_t)data);
17904
17905    // call function
17906    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17907    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17908    glContext->hooks->gl.glGetIntegeri_vEXT(target, index, data);
17909    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17910    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17911
17912    void *pointerArgs[] = {
17913        (void *) data,
17914    };
17915
17916    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17917                              threadStartTime, threadEndTime,
17918                              &glmsg, pointerArgs);
17919    glContext->traceGLMessage(&glmsg);
17920}
17921
17922void GLTrace_glPrimitiveBoundingBoxEXT(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW) {
17923    GLMessage glmsg;
17924    GLTraceContext *glContext = getGLTraceContext();
17925
17926    glmsg.set_function(GLMessage::glPrimitiveBoundingBoxEXT);
17927
17928    // copy argument minX
17929    GLMessage_DataType *arg_minX = glmsg.add_args();
17930    arg_minX->set_isarray(false);
17931    arg_minX->set_type(GLMessage::DataType::FLOAT);
17932    arg_minX->add_floatvalue(minX);
17933
17934    // copy argument minY
17935    GLMessage_DataType *arg_minY = glmsg.add_args();
17936    arg_minY->set_isarray(false);
17937    arg_minY->set_type(GLMessage::DataType::FLOAT);
17938    arg_minY->add_floatvalue(minY);
17939
17940    // copy argument minZ
17941    GLMessage_DataType *arg_minZ = glmsg.add_args();
17942    arg_minZ->set_isarray(false);
17943    arg_minZ->set_type(GLMessage::DataType::FLOAT);
17944    arg_minZ->add_floatvalue(minZ);
17945
17946    // copy argument minW
17947    GLMessage_DataType *arg_minW = glmsg.add_args();
17948    arg_minW->set_isarray(false);
17949    arg_minW->set_type(GLMessage::DataType::FLOAT);
17950    arg_minW->add_floatvalue(minW);
17951
17952    // copy argument maxX
17953    GLMessage_DataType *arg_maxX = glmsg.add_args();
17954    arg_maxX->set_isarray(false);
17955    arg_maxX->set_type(GLMessage::DataType::FLOAT);
17956    arg_maxX->add_floatvalue(maxX);
17957
17958    // copy argument maxY
17959    GLMessage_DataType *arg_maxY = glmsg.add_args();
17960    arg_maxY->set_isarray(false);
17961    arg_maxY->set_type(GLMessage::DataType::FLOAT);
17962    arg_maxY->add_floatvalue(maxY);
17963
17964    // copy argument maxZ
17965    GLMessage_DataType *arg_maxZ = glmsg.add_args();
17966    arg_maxZ->set_isarray(false);
17967    arg_maxZ->set_type(GLMessage::DataType::FLOAT);
17968    arg_maxZ->add_floatvalue(maxZ);
17969
17970    // copy argument maxW
17971    GLMessage_DataType *arg_maxW = glmsg.add_args();
17972    arg_maxW->set_isarray(false);
17973    arg_maxW->set_type(GLMessage::DataType::FLOAT);
17974    arg_maxW->add_floatvalue(maxW);
17975
17976    // call function
17977    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
17978    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17979    glContext->hooks->gl.glPrimitiveBoundingBoxEXT(minX, minY, minZ, minW, maxX, maxY, maxZ, maxW);
17980    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
17981    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17982
17983    void *pointerArgs[] = {
17984    };
17985
17986    fixupGLMessage(glContext, wallStartTime, wallEndTime,
17987                              threadStartTime, threadEndTime,
17988                              &glmsg, pointerArgs);
17989    glContext->traceGLMessage(&glmsg);
17990}
17991
17992GLenum GLTrace_glGetGraphicsResetStatusEXT(void) {
17993    GLMessage glmsg;
17994    GLTraceContext *glContext = getGLTraceContext();
17995
17996    glmsg.set_function(GLMessage::glGetGraphicsResetStatusEXT);
17997
17998    // call function
17999    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18000    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18001    GLenum retValue = glContext->hooks->gl.glGetGraphicsResetStatusEXT();
18002    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18003    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18004
18005    // set return value
18006    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
18007    rt->set_isarray(false);
18008    rt->set_type(GLMessage::DataType::ENUM);
18009    rt->add_intvalue((int)retValue);
18010
18011    void *pointerArgs[] = {
18012    };
18013
18014    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18015                              threadStartTime, threadEndTime,
18016                              &glmsg, pointerArgs);
18017    glContext->traceGLMessage(&glmsg);
18018
18019    return retValue;
18020}
18021
18022void GLTrace_glReadnPixelsEXT(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void * data) {
18023    GLMessage glmsg;
18024    GLTraceContext *glContext = getGLTraceContext();
18025
18026    glmsg.set_function(GLMessage::glReadnPixelsEXT);
18027
18028    // copy argument x
18029    GLMessage_DataType *arg_x = glmsg.add_args();
18030    arg_x->set_isarray(false);
18031    arg_x->set_type(GLMessage::DataType::INT);
18032    arg_x->add_intvalue(x);
18033
18034    // copy argument y
18035    GLMessage_DataType *arg_y = glmsg.add_args();
18036    arg_y->set_isarray(false);
18037    arg_y->set_type(GLMessage::DataType::INT);
18038    arg_y->add_intvalue(y);
18039
18040    // copy argument width
18041    GLMessage_DataType *arg_width = glmsg.add_args();
18042    arg_width->set_isarray(false);
18043    arg_width->set_type(GLMessage::DataType::INT);
18044    arg_width->add_intvalue(width);
18045
18046    // copy argument height
18047    GLMessage_DataType *arg_height = glmsg.add_args();
18048    arg_height->set_isarray(false);
18049    arg_height->set_type(GLMessage::DataType::INT);
18050    arg_height->add_intvalue(height);
18051
18052    // copy argument format
18053    GLMessage_DataType *arg_format = glmsg.add_args();
18054    arg_format->set_isarray(false);
18055    arg_format->set_type(GLMessage::DataType::ENUM);
18056    arg_format->add_intvalue((int)format);
18057
18058    // copy argument type
18059    GLMessage_DataType *arg_type = glmsg.add_args();
18060    arg_type->set_isarray(false);
18061    arg_type->set_type(GLMessage::DataType::ENUM);
18062    arg_type->add_intvalue((int)type);
18063
18064    // copy argument bufSize
18065    GLMessage_DataType *arg_bufSize = glmsg.add_args();
18066    arg_bufSize->set_isarray(false);
18067    arg_bufSize->set_type(GLMessage::DataType::INT);
18068    arg_bufSize->add_intvalue(bufSize);
18069
18070    // copy argument data
18071    GLMessage_DataType *arg_data = glmsg.add_args();
18072    arg_data->set_isarray(false);
18073    arg_data->set_type(GLMessage::DataType::INT64);
18074    arg_data->add_int64value((uintptr_t)data);
18075
18076    // call function
18077    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18078    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18079    glContext->hooks->gl.glReadnPixelsEXT(x, y, width, height, format, type, bufSize, data);
18080    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18081    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18082
18083    void *pointerArgs[] = {
18084        (void *) data,
18085    };
18086
18087    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18088                              threadStartTime, threadEndTime,
18089                              &glmsg, pointerArgs);
18090    glContext->traceGLMessage(&glmsg);
18091}
18092
18093void GLTrace_glGetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSize, GLfloat * params) {
18094    GLMessage glmsg;
18095    GLTraceContext *glContext = getGLTraceContext();
18096
18097    glmsg.set_function(GLMessage::glGetnUniformfvEXT);
18098
18099    // copy argument program
18100    GLMessage_DataType *arg_program = glmsg.add_args();
18101    arg_program->set_isarray(false);
18102    arg_program->set_type(GLMessage::DataType::INT);
18103    arg_program->add_intvalue(program);
18104
18105    // copy argument location
18106    GLMessage_DataType *arg_location = glmsg.add_args();
18107    arg_location->set_isarray(false);
18108    arg_location->set_type(GLMessage::DataType::INT);
18109    arg_location->add_intvalue(location);
18110
18111    // copy argument bufSize
18112    GLMessage_DataType *arg_bufSize = glmsg.add_args();
18113    arg_bufSize->set_isarray(false);
18114    arg_bufSize->set_type(GLMessage::DataType::INT);
18115    arg_bufSize->add_intvalue(bufSize);
18116
18117    // copy argument params
18118    GLMessage_DataType *arg_params = glmsg.add_args();
18119    arg_params->set_isarray(false);
18120    arg_params->set_type(GLMessage::DataType::INT64);
18121    arg_params->add_int64value((uintptr_t)params);
18122
18123    // call function
18124    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18125    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18126    glContext->hooks->gl.glGetnUniformfvEXT(program, location, bufSize, params);
18127    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18128    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18129
18130    void *pointerArgs[] = {
18131        (void *) params,
18132    };
18133
18134    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18135                              threadStartTime, threadEndTime,
18136                              &glmsg, pointerArgs);
18137    glContext->traceGLMessage(&glmsg);
18138}
18139
18140void GLTrace_glGetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint * params) {
18141    GLMessage glmsg;
18142    GLTraceContext *glContext = getGLTraceContext();
18143
18144    glmsg.set_function(GLMessage::glGetnUniformivEXT);
18145
18146    // copy argument program
18147    GLMessage_DataType *arg_program = glmsg.add_args();
18148    arg_program->set_isarray(false);
18149    arg_program->set_type(GLMessage::DataType::INT);
18150    arg_program->add_intvalue(program);
18151
18152    // copy argument location
18153    GLMessage_DataType *arg_location = glmsg.add_args();
18154    arg_location->set_isarray(false);
18155    arg_location->set_type(GLMessage::DataType::INT);
18156    arg_location->add_intvalue(location);
18157
18158    // copy argument bufSize
18159    GLMessage_DataType *arg_bufSize = glmsg.add_args();
18160    arg_bufSize->set_isarray(false);
18161    arg_bufSize->set_type(GLMessage::DataType::INT);
18162    arg_bufSize->add_intvalue(bufSize);
18163
18164    // copy argument params
18165    GLMessage_DataType *arg_params = glmsg.add_args();
18166    arg_params->set_isarray(false);
18167    arg_params->set_type(GLMessage::DataType::INT64);
18168    arg_params->add_int64value((uintptr_t)params);
18169
18170    // call function
18171    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18172    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18173    glContext->hooks->gl.glGetnUniformivEXT(program, location, bufSize, params);
18174    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18175    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18176
18177    void *pointerArgs[] = {
18178        (void *) params,
18179    };
18180
18181    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18182                              threadStartTime, threadEndTime,
18183                              &glmsg, pointerArgs);
18184    glContext->traceGLMessage(&glmsg);
18185}
18186
18187void GLTrace_glActiveShaderProgramEXT(GLuint pipeline, GLuint program) {
18188    GLMessage glmsg;
18189    GLTraceContext *glContext = getGLTraceContext();
18190
18191    glmsg.set_function(GLMessage::glActiveShaderProgramEXT);
18192
18193    // copy argument pipeline
18194    GLMessage_DataType *arg_pipeline = glmsg.add_args();
18195    arg_pipeline->set_isarray(false);
18196    arg_pipeline->set_type(GLMessage::DataType::INT);
18197    arg_pipeline->add_intvalue(pipeline);
18198
18199    // copy argument program
18200    GLMessage_DataType *arg_program = glmsg.add_args();
18201    arg_program->set_isarray(false);
18202    arg_program->set_type(GLMessage::DataType::INT);
18203    arg_program->add_intvalue(program);
18204
18205    // call function
18206    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18207    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18208    glContext->hooks->gl.glActiveShaderProgramEXT(pipeline, program);
18209    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18210    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18211
18212    void *pointerArgs[] = {
18213    };
18214
18215    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18216                              threadStartTime, threadEndTime,
18217                              &glmsg, pointerArgs);
18218    glContext->traceGLMessage(&glmsg);
18219}
18220
18221void GLTrace_glBindProgramPipelineEXT(GLuint pipeline) {
18222    GLMessage glmsg;
18223    GLTraceContext *glContext = getGLTraceContext();
18224
18225    glmsg.set_function(GLMessage::glBindProgramPipelineEXT);
18226
18227    // copy argument pipeline
18228    GLMessage_DataType *arg_pipeline = glmsg.add_args();
18229    arg_pipeline->set_isarray(false);
18230    arg_pipeline->set_type(GLMessage::DataType::INT);
18231    arg_pipeline->add_intvalue(pipeline);
18232
18233    // call function
18234    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18235    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18236    glContext->hooks->gl.glBindProgramPipelineEXT(pipeline);
18237    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18238    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18239
18240    void *pointerArgs[] = {
18241    };
18242
18243    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18244                              threadStartTime, threadEndTime,
18245                              &glmsg, pointerArgs);
18246    glContext->traceGLMessage(&glmsg);
18247}
18248
18249GLuint GLTrace_glCreateShaderProgramvEXT(GLenum type, GLsizei count, const GLchar ** strings) {
18250    GLMessage glmsg;
18251    GLTraceContext *glContext = getGLTraceContext();
18252
18253    glmsg.set_function(GLMessage::glCreateShaderProgramvEXT);
18254
18255    // copy argument type
18256    GLMessage_DataType *arg_type = glmsg.add_args();
18257    arg_type->set_isarray(false);
18258    arg_type->set_type(GLMessage::DataType::ENUM);
18259    arg_type->add_intvalue((int)type);
18260
18261    // copy argument count
18262    GLMessage_DataType *arg_count = glmsg.add_args();
18263    arg_count->set_isarray(false);
18264    arg_count->set_type(GLMessage::DataType::INT);
18265    arg_count->add_intvalue(count);
18266
18267    // copy argument strings
18268    GLMessage_DataType *arg_strings = glmsg.add_args();
18269    arg_strings->set_isarray(false);
18270    arg_strings->set_type(GLMessage::DataType::INT64);
18271    arg_strings->add_int64value((uintptr_t)strings);
18272
18273    // call function
18274    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18275    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18276    GLuint retValue = glContext->hooks->gl.glCreateShaderProgramvEXT(type, count, strings);
18277    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18278    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18279
18280    // set return value
18281    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
18282    rt->set_isarray(false);
18283    rt->set_type(GLMessage::DataType::INT);
18284    rt->add_intvalue(retValue);
18285
18286    void *pointerArgs[] = {
18287        (void *) strings,
18288    };
18289
18290    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18291                              threadStartTime, threadEndTime,
18292                              &glmsg, pointerArgs);
18293    glContext->traceGLMessage(&glmsg);
18294
18295    return retValue;
18296}
18297
18298void GLTrace_glDeleteProgramPipelinesEXT(GLsizei n, const GLuint * pipelines) {
18299    GLMessage glmsg;
18300    GLTraceContext *glContext = getGLTraceContext();
18301
18302    glmsg.set_function(GLMessage::glDeleteProgramPipelinesEXT);
18303
18304    // copy argument n
18305    GLMessage_DataType *arg_n = glmsg.add_args();
18306    arg_n->set_isarray(false);
18307    arg_n->set_type(GLMessage::DataType::INT);
18308    arg_n->add_intvalue(n);
18309
18310    // copy argument pipelines
18311    GLMessage_DataType *arg_pipelines = glmsg.add_args();
18312    arg_pipelines->set_isarray(false);
18313    arg_pipelines->set_type(GLMessage::DataType::INT64);
18314    arg_pipelines->add_int64value((uintptr_t)pipelines);
18315
18316    // call function
18317    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18318    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18319    glContext->hooks->gl.glDeleteProgramPipelinesEXT(n, pipelines);
18320    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18321    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18322
18323    void *pointerArgs[] = {
18324        (void *) pipelines,
18325    };
18326
18327    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18328                              threadStartTime, threadEndTime,
18329                              &glmsg, pointerArgs);
18330    glContext->traceGLMessage(&glmsg);
18331}
18332
18333void GLTrace_glGenProgramPipelinesEXT(GLsizei n, GLuint * pipelines) {
18334    GLMessage glmsg;
18335    GLTraceContext *glContext = getGLTraceContext();
18336
18337    glmsg.set_function(GLMessage::glGenProgramPipelinesEXT);
18338
18339    // copy argument n
18340    GLMessage_DataType *arg_n = glmsg.add_args();
18341    arg_n->set_isarray(false);
18342    arg_n->set_type(GLMessage::DataType::INT);
18343    arg_n->add_intvalue(n);
18344
18345    // copy argument pipelines
18346    GLMessage_DataType *arg_pipelines = glmsg.add_args();
18347    arg_pipelines->set_isarray(false);
18348    arg_pipelines->set_type(GLMessage::DataType::INT64);
18349    arg_pipelines->add_int64value((uintptr_t)pipelines);
18350
18351    // call function
18352    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18353    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18354    glContext->hooks->gl.glGenProgramPipelinesEXT(n, pipelines);
18355    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18356    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18357
18358    void *pointerArgs[] = {
18359        (void *) pipelines,
18360    };
18361
18362    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18363                              threadStartTime, threadEndTime,
18364                              &glmsg, pointerArgs);
18365    glContext->traceGLMessage(&glmsg);
18366}
18367
18368void GLTrace_glGetProgramPipelineInfoLogEXT(GLuint pipeline, GLsizei bufSize, GLsizei * length, GLchar * infoLog) {
18369    GLMessage glmsg;
18370    GLTraceContext *glContext = getGLTraceContext();
18371
18372    glmsg.set_function(GLMessage::glGetProgramPipelineInfoLogEXT);
18373
18374    // copy argument pipeline
18375    GLMessage_DataType *arg_pipeline = glmsg.add_args();
18376    arg_pipeline->set_isarray(false);
18377    arg_pipeline->set_type(GLMessage::DataType::INT);
18378    arg_pipeline->add_intvalue(pipeline);
18379
18380    // copy argument bufSize
18381    GLMessage_DataType *arg_bufSize = glmsg.add_args();
18382    arg_bufSize->set_isarray(false);
18383    arg_bufSize->set_type(GLMessage::DataType::INT);
18384    arg_bufSize->add_intvalue(bufSize);
18385
18386    // copy argument length
18387    GLMessage_DataType *arg_length = glmsg.add_args();
18388    arg_length->set_isarray(false);
18389    arg_length->set_type(GLMessage::DataType::INT64);
18390    arg_length->add_int64value((uintptr_t)length);
18391
18392    // copy argument infoLog
18393    GLMessage_DataType *arg_infoLog = glmsg.add_args();
18394    arg_infoLog->set_isarray(false);
18395    arg_infoLog->set_type(GLMessage::DataType::INT64);
18396    arg_infoLog->add_int64value((uintptr_t)infoLog);
18397
18398    // call function
18399    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18400    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18401    glContext->hooks->gl.glGetProgramPipelineInfoLogEXT(pipeline, bufSize, length, infoLog);
18402    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18403    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18404
18405    void *pointerArgs[] = {
18406        (void *) length,
18407        (void *) infoLog,
18408    };
18409
18410    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18411                              threadStartTime, threadEndTime,
18412                              &glmsg, pointerArgs);
18413    glContext->traceGLMessage(&glmsg);
18414}
18415
18416void GLTrace_glGetProgramPipelineivEXT(GLuint pipeline, GLenum pname, GLint * params) {
18417    GLMessage glmsg;
18418    GLTraceContext *glContext = getGLTraceContext();
18419
18420    glmsg.set_function(GLMessage::glGetProgramPipelineivEXT);
18421
18422    // copy argument pipeline
18423    GLMessage_DataType *arg_pipeline = glmsg.add_args();
18424    arg_pipeline->set_isarray(false);
18425    arg_pipeline->set_type(GLMessage::DataType::INT);
18426    arg_pipeline->add_intvalue(pipeline);
18427
18428    // copy argument pname
18429    GLMessage_DataType *arg_pname = glmsg.add_args();
18430    arg_pname->set_isarray(false);
18431    arg_pname->set_type(GLMessage::DataType::ENUM);
18432    arg_pname->add_intvalue((int)pname);
18433
18434    // copy argument params
18435    GLMessage_DataType *arg_params = glmsg.add_args();
18436    arg_params->set_isarray(false);
18437    arg_params->set_type(GLMessage::DataType::INT64);
18438    arg_params->add_int64value((uintptr_t)params);
18439
18440    // call function
18441    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18442    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18443    glContext->hooks->gl.glGetProgramPipelineivEXT(pipeline, pname, params);
18444    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18445    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18446
18447    void *pointerArgs[] = {
18448        (void *) params,
18449    };
18450
18451    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18452                              threadStartTime, threadEndTime,
18453                              &glmsg, pointerArgs);
18454    glContext->traceGLMessage(&glmsg);
18455}
18456
18457GLboolean GLTrace_glIsProgramPipelineEXT(GLuint pipeline) {
18458    GLMessage glmsg;
18459    GLTraceContext *glContext = getGLTraceContext();
18460
18461    glmsg.set_function(GLMessage::glIsProgramPipelineEXT);
18462
18463    // copy argument pipeline
18464    GLMessage_DataType *arg_pipeline = glmsg.add_args();
18465    arg_pipeline->set_isarray(false);
18466    arg_pipeline->set_type(GLMessage::DataType::INT);
18467    arg_pipeline->add_intvalue(pipeline);
18468
18469    // call function
18470    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18471    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18472    GLboolean retValue = glContext->hooks->gl.glIsProgramPipelineEXT(pipeline);
18473    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18474    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18475
18476    // set return value
18477    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
18478    rt->set_isarray(false);
18479    rt->set_type(GLMessage::DataType::BOOL);
18480    rt->add_boolvalue(retValue);
18481
18482    void *pointerArgs[] = {
18483    };
18484
18485    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18486                              threadStartTime, threadEndTime,
18487                              &glmsg, pointerArgs);
18488    glContext->traceGLMessage(&glmsg);
18489
18490    return retValue;
18491}
18492
18493void GLTrace_glProgramParameteriEXT(GLuint program, GLenum pname, GLint value) {
18494    GLMessage glmsg;
18495    GLTraceContext *glContext = getGLTraceContext();
18496
18497    glmsg.set_function(GLMessage::glProgramParameteriEXT);
18498
18499    // copy argument program
18500    GLMessage_DataType *arg_program = glmsg.add_args();
18501    arg_program->set_isarray(false);
18502    arg_program->set_type(GLMessage::DataType::INT);
18503    arg_program->add_intvalue(program);
18504
18505    // copy argument pname
18506    GLMessage_DataType *arg_pname = glmsg.add_args();
18507    arg_pname->set_isarray(false);
18508    arg_pname->set_type(GLMessage::DataType::ENUM);
18509    arg_pname->add_intvalue((int)pname);
18510
18511    // copy argument value
18512    GLMessage_DataType *arg_value = glmsg.add_args();
18513    arg_value->set_isarray(false);
18514    arg_value->set_type(GLMessage::DataType::INT);
18515    arg_value->add_intvalue(value);
18516
18517    // call function
18518    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18519    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18520    glContext->hooks->gl.glProgramParameteriEXT(program, pname, value);
18521    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18522    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18523
18524    void *pointerArgs[] = {
18525    };
18526
18527    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18528                              threadStartTime, threadEndTime,
18529                              &glmsg, pointerArgs);
18530    glContext->traceGLMessage(&glmsg);
18531}
18532
18533void GLTrace_glProgramUniform1fEXT(GLuint program, GLint location, GLfloat v0) {
18534    GLMessage glmsg;
18535    GLTraceContext *glContext = getGLTraceContext();
18536
18537    glmsg.set_function(GLMessage::glProgramUniform1fEXT);
18538
18539    // copy argument program
18540    GLMessage_DataType *arg_program = glmsg.add_args();
18541    arg_program->set_isarray(false);
18542    arg_program->set_type(GLMessage::DataType::INT);
18543    arg_program->add_intvalue(program);
18544
18545    // copy argument location
18546    GLMessage_DataType *arg_location = glmsg.add_args();
18547    arg_location->set_isarray(false);
18548    arg_location->set_type(GLMessage::DataType::INT);
18549    arg_location->add_intvalue(location);
18550
18551    // copy argument v0
18552    GLMessage_DataType *arg_v0 = glmsg.add_args();
18553    arg_v0->set_isarray(false);
18554    arg_v0->set_type(GLMessage::DataType::FLOAT);
18555    arg_v0->add_floatvalue(v0);
18556
18557    // call function
18558    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18559    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18560    glContext->hooks->gl.glProgramUniform1fEXT(program, location, v0);
18561    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18562    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18563
18564    void *pointerArgs[] = {
18565    };
18566
18567    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18568                              threadStartTime, threadEndTime,
18569                              &glmsg, pointerArgs);
18570    glContext->traceGLMessage(&glmsg);
18571}
18572
18573void GLTrace_glProgramUniform1fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat * value) {
18574    GLMessage glmsg;
18575    GLTraceContext *glContext = getGLTraceContext();
18576
18577    glmsg.set_function(GLMessage::glProgramUniform1fvEXT);
18578
18579    // copy argument program
18580    GLMessage_DataType *arg_program = glmsg.add_args();
18581    arg_program->set_isarray(false);
18582    arg_program->set_type(GLMessage::DataType::INT);
18583    arg_program->add_intvalue(program);
18584
18585    // copy argument location
18586    GLMessage_DataType *arg_location = glmsg.add_args();
18587    arg_location->set_isarray(false);
18588    arg_location->set_type(GLMessage::DataType::INT);
18589    arg_location->add_intvalue(location);
18590
18591    // copy argument count
18592    GLMessage_DataType *arg_count = glmsg.add_args();
18593    arg_count->set_isarray(false);
18594    arg_count->set_type(GLMessage::DataType::INT);
18595    arg_count->add_intvalue(count);
18596
18597    // copy argument value
18598    GLMessage_DataType *arg_value = glmsg.add_args();
18599    arg_value->set_isarray(false);
18600    arg_value->set_type(GLMessage::DataType::INT64);
18601    arg_value->add_int64value((uintptr_t)value);
18602
18603    // call function
18604    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18605    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18606    glContext->hooks->gl.glProgramUniform1fvEXT(program, location, count, value);
18607    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18608    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18609
18610    void *pointerArgs[] = {
18611        (void *) value,
18612    };
18613
18614    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18615                              threadStartTime, threadEndTime,
18616                              &glmsg, pointerArgs);
18617    glContext->traceGLMessage(&glmsg);
18618}
18619
18620void GLTrace_glProgramUniform1iEXT(GLuint program, GLint location, GLint v0) {
18621    GLMessage glmsg;
18622    GLTraceContext *glContext = getGLTraceContext();
18623
18624    glmsg.set_function(GLMessage::glProgramUniform1iEXT);
18625
18626    // copy argument program
18627    GLMessage_DataType *arg_program = glmsg.add_args();
18628    arg_program->set_isarray(false);
18629    arg_program->set_type(GLMessage::DataType::INT);
18630    arg_program->add_intvalue(program);
18631
18632    // copy argument location
18633    GLMessage_DataType *arg_location = glmsg.add_args();
18634    arg_location->set_isarray(false);
18635    arg_location->set_type(GLMessage::DataType::INT);
18636    arg_location->add_intvalue(location);
18637
18638    // copy argument v0
18639    GLMessage_DataType *arg_v0 = glmsg.add_args();
18640    arg_v0->set_isarray(false);
18641    arg_v0->set_type(GLMessage::DataType::INT);
18642    arg_v0->add_intvalue(v0);
18643
18644    // call function
18645    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18646    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18647    glContext->hooks->gl.glProgramUniform1iEXT(program, location, v0);
18648    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18649    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18650
18651    void *pointerArgs[] = {
18652    };
18653
18654    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18655                              threadStartTime, threadEndTime,
18656                              &glmsg, pointerArgs);
18657    glContext->traceGLMessage(&glmsg);
18658}
18659
18660void GLTrace_glProgramUniform1ivEXT(GLuint program, GLint location, GLsizei count, const GLint * value) {
18661    GLMessage glmsg;
18662    GLTraceContext *glContext = getGLTraceContext();
18663
18664    glmsg.set_function(GLMessage::glProgramUniform1ivEXT);
18665
18666    // copy argument program
18667    GLMessage_DataType *arg_program = glmsg.add_args();
18668    arg_program->set_isarray(false);
18669    arg_program->set_type(GLMessage::DataType::INT);
18670    arg_program->add_intvalue(program);
18671
18672    // copy argument location
18673    GLMessage_DataType *arg_location = glmsg.add_args();
18674    arg_location->set_isarray(false);
18675    arg_location->set_type(GLMessage::DataType::INT);
18676    arg_location->add_intvalue(location);
18677
18678    // copy argument count
18679    GLMessage_DataType *arg_count = glmsg.add_args();
18680    arg_count->set_isarray(false);
18681    arg_count->set_type(GLMessage::DataType::INT);
18682    arg_count->add_intvalue(count);
18683
18684    // copy argument value
18685    GLMessage_DataType *arg_value = glmsg.add_args();
18686    arg_value->set_isarray(false);
18687    arg_value->set_type(GLMessage::DataType::INT64);
18688    arg_value->add_int64value((uintptr_t)value);
18689
18690    // call function
18691    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18692    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18693    glContext->hooks->gl.glProgramUniform1ivEXT(program, location, count, value);
18694    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18695    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18696
18697    void *pointerArgs[] = {
18698        (void *) value,
18699    };
18700
18701    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18702                              threadStartTime, threadEndTime,
18703                              &glmsg, pointerArgs);
18704    glContext->traceGLMessage(&glmsg);
18705}
18706
18707void GLTrace_glProgramUniform2fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1) {
18708    GLMessage glmsg;
18709    GLTraceContext *glContext = getGLTraceContext();
18710
18711    glmsg.set_function(GLMessage::glProgramUniform2fEXT);
18712
18713    // copy argument program
18714    GLMessage_DataType *arg_program = glmsg.add_args();
18715    arg_program->set_isarray(false);
18716    arg_program->set_type(GLMessage::DataType::INT);
18717    arg_program->add_intvalue(program);
18718
18719    // copy argument location
18720    GLMessage_DataType *arg_location = glmsg.add_args();
18721    arg_location->set_isarray(false);
18722    arg_location->set_type(GLMessage::DataType::INT);
18723    arg_location->add_intvalue(location);
18724
18725    // copy argument v0
18726    GLMessage_DataType *arg_v0 = glmsg.add_args();
18727    arg_v0->set_isarray(false);
18728    arg_v0->set_type(GLMessage::DataType::FLOAT);
18729    arg_v0->add_floatvalue(v0);
18730
18731    // copy argument v1
18732    GLMessage_DataType *arg_v1 = glmsg.add_args();
18733    arg_v1->set_isarray(false);
18734    arg_v1->set_type(GLMessage::DataType::FLOAT);
18735    arg_v1->add_floatvalue(v1);
18736
18737    // call function
18738    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18739    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18740    glContext->hooks->gl.glProgramUniform2fEXT(program, location, v0, v1);
18741    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18742    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18743
18744    void *pointerArgs[] = {
18745    };
18746
18747    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18748                              threadStartTime, threadEndTime,
18749                              &glmsg, pointerArgs);
18750    glContext->traceGLMessage(&glmsg);
18751}
18752
18753void GLTrace_glProgramUniform2fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat * value) {
18754    GLMessage glmsg;
18755    GLTraceContext *glContext = getGLTraceContext();
18756
18757    glmsg.set_function(GLMessage::glProgramUniform2fvEXT);
18758
18759    // copy argument program
18760    GLMessage_DataType *arg_program = glmsg.add_args();
18761    arg_program->set_isarray(false);
18762    arg_program->set_type(GLMessage::DataType::INT);
18763    arg_program->add_intvalue(program);
18764
18765    // copy argument location
18766    GLMessage_DataType *arg_location = glmsg.add_args();
18767    arg_location->set_isarray(false);
18768    arg_location->set_type(GLMessage::DataType::INT);
18769    arg_location->add_intvalue(location);
18770
18771    // copy argument count
18772    GLMessage_DataType *arg_count = glmsg.add_args();
18773    arg_count->set_isarray(false);
18774    arg_count->set_type(GLMessage::DataType::INT);
18775    arg_count->add_intvalue(count);
18776
18777    // copy argument value
18778    GLMessage_DataType *arg_value = glmsg.add_args();
18779    arg_value->set_isarray(false);
18780    arg_value->set_type(GLMessage::DataType::INT64);
18781    arg_value->add_int64value((uintptr_t)value);
18782
18783    // call function
18784    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18785    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18786    glContext->hooks->gl.glProgramUniform2fvEXT(program, location, count, value);
18787    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18788    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18789
18790    void *pointerArgs[] = {
18791        (void *) value,
18792    };
18793
18794    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18795                              threadStartTime, threadEndTime,
18796                              &glmsg, pointerArgs);
18797    glContext->traceGLMessage(&glmsg);
18798}
18799
18800void GLTrace_glProgramUniform2iEXT(GLuint program, GLint location, GLint v0, GLint v1) {
18801    GLMessage glmsg;
18802    GLTraceContext *glContext = getGLTraceContext();
18803
18804    glmsg.set_function(GLMessage::glProgramUniform2iEXT);
18805
18806    // copy argument program
18807    GLMessage_DataType *arg_program = glmsg.add_args();
18808    arg_program->set_isarray(false);
18809    arg_program->set_type(GLMessage::DataType::INT);
18810    arg_program->add_intvalue(program);
18811
18812    // copy argument location
18813    GLMessage_DataType *arg_location = glmsg.add_args();
18814    arg_location->set_isarray(false);
18815    arg_location->set_type(GLMessage::DataType::INT);
18816    arg_location->add_intvalue(location);
18817
18818    // copy argument v0
18819    GLMessage_DataType *arg_v0 = glmsg.add_args();
18820    arg_v0->set_isarray(false);
18821    arg_v0->set_type(GLMessage::DataType::INT);
18822    arg_v0->add_intvalue(v0);
18823
18824    // copy argument v1
18825    GLMessage_DataType *arg_v1 = glmsg.add_args();
18826    arg_v1->set_isarray(false);
18827    arg_v1->set_type(GLMessage::DataType::INT);
18828    arg_v1->add_intvalue(v1);
18829
18830    // call function
18831    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18832    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18833    glContext->hooks->gl.glProgramUniform2iEXT(program, location, v0, v1);
18834    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18835    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18836
18837    void *pointerArgs[] = {
18838    };
18839
18840    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18841                              threadStartTime, threadEndTime,
18842                              &glmsg, pointerArgs);
18843    glContext->traceGLMessage(&glmsg);
18844}
18845
18846void GLTrace_glProgramUniform2ivEXT(GLuint program, GLint location, GLsizei count, const GLint * value) {
18847    GLMessage glmsg;
18848    GLTraceContext *glContext = getGLTraceContext();
18849
18850    glmsg.set_function(GLMessage::glProgramUniform2ivEXT);
18851
18852    // copy argument program
18853    GLMessage_DataType *arg_program = glmsg.add_args();
18854    arg_program->set_isarray(false);
18855    arg_program->set_type(GLMessage::DataType::INT);
18856    arg_program->add_intvalue(program);
18857
18858    // copy argument location
18859    GLMessage_DataType *arg_location = glmsg.add_args();
18860    arg_location->set_isarray(false);
18861    arg_location->set_type(GLMessage::DataType::INT);
18862    arg_location->add_intvalue(location);
18863
18864    // copy argument count
18865    GLMessage_DataType *arg_count = glmsg.add_args();
18866    arg_count->set_isarray(false);
18867    arg_count->set_type(GLMessage::DataType::INT);
18868    arg_count->add_intvalue(count);
18869
18870    // copy argument value
18871    GLMessage_DataType *arg_value = glmsg.add_args();
18872    arg_value->set_isarray(false);
18873    arg_value->set_type(GLMessage::DataType::INT64);
18874    arg_value->add_int64value((uintptr_t)value);
18875
18876    // call function
18877    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18878    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18879    glContext->hooks->gl.glProgramUniform2ivEXT(program, location, count, value);
18880    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18881    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18882
18883    void *pointerArgs[] = {
18884        (void *) value,
18885    };
18886
18887    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18888                              threadStartTime, threadEndTime,
18889                              &glmsg, pointerArgs);
18890    glContext->traceGLMessage(&glmsg);
18891}
18892
18893void GLTrace_glProgramUniform3fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) {
18894    GLMessage glmsg;
18895    GLTraceContext *glContext = getGLTraceContext();
18896
18897    glmsg.set_function(GLMessage::glProgramUniform3fEXT);
18898
18899    // copy argument program
18900    GLMessage_DataType *arg_program = glmsg.add_args();
18901    arg_program->set_isarray(false);
18902    arg_program->set_type(GLMessage::DataType::INT);
18903    arg_program->add_intvalue(program);
18904
18905    // copy argument location
18906    GLMessage_DataType *arg_location = glmsg.add_args();
18907    arg_location->set_isarray(false);
18908    arg_location->set_type(GLMessage::DataType::INT);
18909    arg_location->add_intvalue(location);
18910
18911    // copy argument v0
18912    GLMessage_DataType *arg_v0 = glmsg.add_args();
18913    arg_v0->set_isarray(false);
18914    arg_v0->set_type(GLMessage::DataType::FLOAT);
18915    arg_v0->add_floatvalue(v0);
18916
18917    // copy argument v1
18918    GLMessage_DataType *arg_v1 = glmsg.add_args();
18919    arg_v1->set_isarray(false);
18920    arg_v1->set_type(GLMessage::DataType::FLOAT);
18921    arg_v1->add_floatvalue(v1);
18922
18923    // copy argument v2
18924    GLMessage_DataType *arg_v2 = glmsg.add_args();
18925    arg_v2->set_isarray(false);
18926    arg_v2->set_type(GLMessage::DataType::FLOAT);
18927    arg_v2->add_floatvalue(v2);
18928
18929    // call function
18930    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18931    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18932    glContext->hooks->gl.glProgramUniform3fEXT(program, location, v0, v1, v2);
18933    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18934    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18935
18936    void *pointerArgs[] = {
18937    };
18938
18939    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18940                              threadStartTime, threadEndTime,
18941                              &glmsg, pointerArgs);
18942    glContext->traceGLMessage(&glmsg);
18943}
18944
18945void GLTrace_glProgramUniform3fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat * value) {
18946    GLMessage glmsg;
18947    GLTraceContext *glContext = getGLTraceContext();
18948
18949    glmsg.set_function(GLMessage::glProgramUniform3fvEXT);
18950
18951    // copy argument program
18952    GLMessage_DataType *arg_program = glmsg.add_args();
18953    arg_program->set_isarray(false);
18954    arg_program->set_type(GLMessage::DataType::INT);
18955    arg_program->add_intvalue(program);
18956
18957    // copy argument location
18958    GLMessage_DataType *arg_location = glmsg.add_args();
18959    arg_location->set_isarray(false);
18960    arg_location->set_type(GLMessage::DataType::INT);
18961    arg_location->add_intvalue(location);
18962
18963    // copy argument count
18964    GLMessage_DataType *arg_count = glmsg.add_args();
18965    arg_count->set_isarray(false);
18966    arg_count->set_type(GLMessage::DataType::INT);
18967    arg_count->add_intvalue(count);
18968
18969    // copy argument value
18970    GLMessage_DataType *arg_value = glmsg.add_args();
18971    arg_value->set_isarray(false);
18972    arg_value->set_type(GLMessage::DataType::INT64);
18973    arg_value->add_int64value((uintptr_t)value);
18974
18975    // call function
18976    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
18977    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18978    glContext->hooks->gl.glProgramUniform3fvEXT(program, location, count, value);
18979    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
18980    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18981
18982    void *pointerArgs[] = {
18983        (void *) value,
18984    };
18985
18986    fixupGLMessage(glContext, wallStartTime, wallEndTime,
18987                              threadStartTime, threadEndTime,
18988                              &glmsg, pointerArgs);
18989    glContext->traceGLMessage(&glmsg);
18990}
18991
18992void GLTrace_glProgramUniform3iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) {
18993    GLMessage glmsg;
18994    GLTraceContext *glContext = getGLTraceContext();
18995
18996    glmsg.set_function(GLMessage::glProgramUniform3iEXT);
18997
18998    // copy argument program
18999    GLMessage_DataType *arg_program = glmsg.add_args();
19000    arg_program->set_isarray(false);
19001    arg_program->set_type(GLMessage::DataType::INT);
19002    arg_program->add_intvalue(program);
19003
19004    // copy argument location
19005    GLMessage_DataType *arg_location = glmsg.add_args();
19006    arg_location->set_isarray(false);
19007    arg_location->set_type(GLMessage::DataType::INT);
19008    arg_location->add_intvalue(location);
19009
19010    // copy argument v0
19011    GLMessage_DataType *arg_v0 = glmsg.add_args();
19012    arg_v0->set_isarray(false);
19013    arg_v0->set_type(GLMessage::DataType::INT);
19014    arg_v0->add_intvalue(v0);
19015
19016    // copy argument v1
19017    GLMessage_DataType *arg_v1 = glmsg.add_args();
19018    arg_v1->set_isarray(false);
19019    arg_v1->set_type(GLMessage::DataType::INT);
19020    arg_v1->add_intvalue(v1);
19021
19022    // copy argument v2
19023    GLMessage_DataType *arg_v2 = glmsg.add_args();
19024    arg_v2->set_isarray(false);
19025    arg_v2->set_type(GLMessage::DataType::INT);
19026    arg_v2->add_intvalue(v2);
19027
19028    // call function
19029    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19030    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19031    glContext->hooks->gl.glProgramUniform3iEXT(program, location, v0, v1, v2);
19032    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19033    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19034
19035    void *pointerArgs[] = {
19036    };
19037
19038    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19039                              threadStartTime, threadEndTime,
19040                              &glmsg, pointerArgs);
19041    glContext->traceGLMessage(&glmsg);
19042}
19043
19044void GLTrace_glProgramUniform3ivEXT(GLuint program, GLint location, GLsizei count, const GLint * value) {
19045    GLMessage glmsg;
19046    GLTraceContext *glContext = getGLTraceContext();
19047
19048    glmsg.set_function(GLMessage::glProgramUniform3ivEXT);
19049
19050    // copy argument program
19051    GLMessage_DataType *arg_program = glmsg.add_args();
19052    arg_program->set_isarray(false);
19053    arg_program->set_type(GLMessage::DataType::INT);
19054    arg_program->add_intvalue(program);
19055
19056    // copy argument location
19057    GLMessage_DataType *arg_location = glmsg.add_args();
19058    arg_location->set_isarray(false);
19059    arg_location->set_type(GLMessage::DataType::INT);
19060    arg_location->add_intvalue(location);
19061
19062    // copy argument count
19063    GLMessage_DataType *arg_count = glmsg.add_args();
19064    arg_count->set_isarray(false);
19065    arg_count->set_type(GLMessage::DataType::INT);
19066    arg_count->add_intvalue(count);
19067
19068    // copy argument value
19069    GLMessage_DataType *arg_value = glmsg.add_args();
19070    arg_value->set_isarray(false);
19071    arg_value->set_type(GLMessage::DataType::INT64);
19072    arg_value->add_int64value((uintptr_t)value);
19073
19074    // call function
19075    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19076    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19077    glContext->hooks->gl.glProgramUniform3ivEXT(program, location, count, value);
19078    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19079    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19080
19081    void *pointerArgs[] = {
19082        (void *) value,
19083    };
19084
19085    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19086                              threadStartTime, threadEndTime,
19087                              &glmsg, pointerArgs);
19088    glContext->traceGLMessage(&glmsg);
19089}
19090
19091void GLTrace_glProgramUniform4fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) {
19092    GLMessage glmsg;
19093    GLTraceContext *glContext = getGLTraceContext();
19094
19095    glmsg.set_function(GLMessage::glProgramUniform4fEXT);
19096
19097    // copy argument program
19098    GLMessage_DataType *arg_program = glmsg.add_args();
19099    arg_program->set_isarray(false);
19100    arg_program->set_type(GLMessage::DataType::INT);
19101    arg_program->add_intvalue(program);
19102
19103    // copy argument location
19104    GLMessage_DataType *arg_location = glmsg.add_args();
19105    arg_location->set_isarray(false);
19106    arg_location->set_type(GLMessage::DataType::INT);
19107    arg_location->add_intvalue(location);
19108
19109    // copy argument v0
19110    GLMessage_DataType *arg_v0 = glmsg.add_args();
19111    arg_v0->set_isarray(false);
19112    arg_v0->set_type(GLMessage::DataType::FLOAT);
19113    arg_v0->add_floatvalue(v0);
19114
19115    // copy argument v1
19116    GLMessage_DataType *arg_v1 = glmsg.add_args();
19117    arg_v1->set_isarray(false);
19118    arg_v1->set_type(GLMessage::DataType::FLOAT);
19119    arg_v1->add_floatvalue(v1);
19120
19121    // copy argument v2
19122    GLMessage_DataType *arg_v2 = glmsg.add_args();
19123    arg_v2->set_isarray(false);
19124    arg_v2->set_type(GLMessage::DataType::FLOAT);
19125    arg_v2->add_floatvalue(v2);
19126
19127    // copy argument v3
19128    GLMessage_DataType *arg_v3 = glmsg.add_args();
19129    arg_v3->set_isarray(false);
19130    arg_v3->set_type(GLMessage::DataType::FLOAT);
19131    arg_v3->add_floatvalue(v3);
19132
19133    // call function
19134    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19135    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19136    glContext->hooks->gl.glProgramUniform4fEXT(program, location, v0, v1, v2, v3);
19137    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19138    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19139
19140    void *pointerArgs[] = {
19141    };
19142
19143    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19144                              threadStartTime, threadEndTime,
19145                              &glmsg, pointerArgs);
19146    glContext->traceGLMessage(&glmsg);
19147}
19148
19149void GLTrace_glProgramUniform4fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat * value) {
19150    GLMessage glmsg;
19151    GLTraceContext *glContext = getGLTraceContext();
19152
19153    glmsg.set_function(GLMessage::glProgramUniform4fvEXT);
19154
19155    // copy argument program
19156    GLMessage_DataType *arg_program = glmsg.add_args();
19157    arg_program->set_isarray(false);
19158    arg_program->set_type(GLMessage::DataType::INT);
19159    arg_program->add_intvalue(program);
19160
19161    // copy argument location
19162    GLMessage_DataType *arg_location = glmsg.add_args();
19163    arg_location->set_isarray(false);
19164    arg_location->set_type(GLMessage::DataType::INT);
19165    arg_location->add_intvalue(location);
19166
19167    // copy argument count
19168    GLMessage_DataType *arg_count = glmsg.add_args();
19169    arg_count->set_isarray(false);
19170    arg_count->set_type(GLMessage::DataType::INT);
19171    arg_count->add_intvalue(count);
19172
19173    // copy argument value
19174    GLMessage_DataType *arg_value = glmsg.add_args();
19175    arg_value->set_isarray(false);
19176    arg_value->set_type(GLMessage::DataType::INT64);
19177    arg_value->add_int64value((uintptr_t)value);
19178
19179    // call function
19180    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19181    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19182    glContext->hooks->gl.glProgramUniform4fvEXT(program, location, count, value);
19183    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19184    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19185
19186    void *pointerArgs[] = {
19187        (void *) value,
19188    };
19189
19190    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19191                              threadStartTime, threadEndTime,
19192                              &glmsg, pointerArgs);
19193    glContext->traceGLMessage(&glmsg);
19194}
19195
19196void GLTrace_glProgramUniform4iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) {
19197    GLMessage glmsg;
19198    GLTraceContext *glContext = getGLTraceContext();
19199
19200    glmsg.set_function(GLMessage::glProgramUniform4iEXT);
19201
19202    // copy argument program
19203    GLMessage_DataType *arg_program = glmsg.add_args();
19204    arg_program->set_isarray(false);
19205    arg_program->set_type(GLMessage::DataType::INT);
19206    arg_program->add_intvalue(program);
19207
19208    // copy argument location
19209    GLMessage_DataType *arg_location = glmsg.add_args();
19210    arg_location->set_isarray(false);
19211    arg_location->set_type(GLMessage::DataType::INT);
19212    arg_location->add_intvalue(location);
19213
19214    // copy argument v0
19215    GLMessage_DataType *arg_v0 = glmsg.add_args();
19216    arg_v0->set_isarray(false);
19217    arg_v0->set_type(GLMessage::DataType::INT);
19218    arg_v0->add_intvalue(v0);
19219
19220    // copy argument v1
19221    GLMessage_DataType *arg_v1 = glmsg.add_args();
19222    arg_v1->set_isarray(false);
19223    arg_v1->set_type(GLMessage::DataType::INT);
19224    arg_v1->add_intvalue(v1);
19225
19226    // copy argument v2
19227    GLMessage_DataType *arg_v2 = glmsg.add_args();
19228    arg_v2->set_isarray(false);
19229    arg_v2->set_type(GLMessage::DataType::INT);
19230    arg_v2->add_intvalue(v2);
19231
19232    // copy argument v3
19233    GLMessage_DataType *arg_v3 = glmsg.add_args();
19234    arg_v3->set_isarray(false);
19235    arg_v3->set_type(GLMessage::DataType::INT);
19236    arg_v3->add_intvalue(v3);
19237
19238    // call function
19239    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19240    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19241    glContext->hooks->gl.glProgramUniform4iEXT(program, location, v0, v1, v2, v3);
19242    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19243    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19244
19245    void *pointerArgs[] = {
19246    };
19247
19248    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19249                              threadStartTime, threadEndTime,
19250                              &glmsg, pointerArgs);
19251    glContext->traceGLMessage(&glmsg);
19252}
19253
19254void GLTrace_glProgramUniform4ivEXT(GLuint program, GLint location, GLsizei count, const GLint * value) {
19255    GLMessage glmsg;
19256    GLTraceContext *glContext = getGLTraceContext();
19257
19258    glmsg.set_function(GLMessage::glProgramUniform4ivEXT);
19259
19260    // copy argument program
19261    GLMessage_DataType *arg_program = glmsg.add_args();
19262    arg_program->set_isarray(false);
19263    arg_program->set_type(GLMessage::DataType::INT);
19264    arg_program->add_intvalue(program);
19265
19266    // copy argument location
19267    GLMessage_DataType *arg_location = glmsg.add_args();
19268    arg_location->set_isarray(false);
19269    arg_location->set_type(GLMessage::DataType::INT);
19270    arg_location->add_intvalue(location);
19271
19272    // copy argument count
19273    GLMessage_DataType *arg_count = glmsg.add_args();
19274    arg_count->set_isarray(false);
19275    arg_count->set_type(GLMessage::DataType::INT);
19276    arg_count->add_intvalue(count);
19277
19278    // copy argument value
19279    GLMessage_DataType *arg_value = glmsg.add_args();
19280    arg_value->set_isarray(false);
19281    arg_value->set_type(GLMessage::DataType::INT64);
19282    arg_value->add_int64value((uintptr_t)value);
19283
19284    // call function
19285    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19286    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19287    glContext->hooks->gl.glProgramUniform4ivEXT(program, location, count, value);
19288    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19289    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19290
19291    void *pointerArgs[] = {
19292        (void *) value,
19293    };
19294
19295    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19296                              threadStartTime, threadEndTime,
19297                              &glmsg, pointerArgs);
19298    glContext->traceGLMessage(&glmsg);
19299}
19300
19301void GLTrace_glProgramUniformMatrix2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
19302    GLMessage glmsg;
19303    GLTraceContext *glContext = getGLTraceContext();
19304
19305    glmsg.set_function(GLMessage::glProgramUniformMatrix2fvEXT);
19306
19307    // copy argument program
19308    GLMessage_DataType *arg_program = glmsg.add_args();
19309    arg_program->set_isarray(false);
19310    arg_program->set_type(GLMessage::DataType::INT);
19311    arg_program->add_intvalue(program);
19312
19313    // copy argument location
19314    GLMessage_DataType *arg_location = glmsg.add_args();
19315    arg_location->set_isarray(false);
19316    arg_location->set_type(GLMessage::DataType::INT);
19317    arg_location->add_intvalue(location);
19318
19319    // copy argument count
19320    GLMessage_DataType *arg_count = glmsg.add_args();
19321    arg_count->set_isarray(false);
19322    arg_count->set_type(GLMessage::DataType::INT);
19323    arg_count->add_intvalue(count);
19324
19325    // copy argument transpose
19326    GLMessage_DataType *arg_transpose = glmsg.add_args();
19327    arg_transpose->set_isarray(false);
19328    arg_transpose->set_type(GLMessage::DataType::BOOL);
19329    arg_transpose->add_boolvalue(transpose);
19330
19331    // copy argument value
19332    GLMessage_DataType *arg_value = glmsg.add_args();
19333    arg_value->set_isarray(false);
19334    arg_value->set_type(GLMessage::DataType::INT64);
19335    arg_value->add_int64value((uintptr_t)value);
19336
19337    // call function
19338    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19339    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19340    glContext->hooks->gl.glProgramUniformMatrix2fvEXT(program, location, count, transpose, value);
19341    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19342    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19343
19344    void *pointerArgs[] = {
19345        (void *) value,
19346    };
19347
19348    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19349                              threadStartTime, threadEndTime,
19350                              &glmsg, pointerArgs);
19351    glContext->traceGLMessage(&glmsg);
19352}
19353
19354void GLTrace_glProgramUniformMatrix3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
19355    GLMessage glmsg;
19356    GLTraceContext *glContext = getGLTraceContext();
19357
19358    glmsg.set_function(GLMessage::glProgramUniformMatrix3fvEXT);
19359
19360    // copy argument program
19361    GLMessage_DataType *arg_program = glmsg.add_args();
19362    arg_program->set_isarray(false);
19363    arg_program->set_type(GLMessage::DataType::INT);
19364    arg_program->add_intvalue(program);
19365
19366    // copy argument location
19367    GLMessage_DataType *arg_location = glmsg.add_args();
19368    arg_location->set_isarray(false);
19369    arg_location->set_type(GLMessage::DataType::INT);
19370    arg_location->add_intvalue(location);
19371
19372    // copy argument count
19373    GLMessage_DataType *arg_count = glmsg.add_args();
19374    arg_count->set_isarray(false);
19375    arg_count->set_type(GLMessage::DataType::INT);
19376    arg_count->add_intvalue(count);
19377
19378    // copy argument transpose
19379    GLMessage_DataType *arg_transpose = glmsg.add_args();
19380    arg_transpose->set_isarray(false);
19381    arg_transpose->set_type(GLMessage::DataType::BOOL);
19382    arg_transpose->add_boolvalue(transpose);
19383
19384    // copy argument value
19385    GLMessage_DataType *arg_value = glmsg.add_args();
19386    arg_value->set_isarray(false);
19387    arg_value->set_type(GLMessage::DataType::INT64);
19388    arg_value->add_int64value((uintptr_t)value);
19389
19390    // call function
19391    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19392    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19393    glContext->hooks->gl.glProgramUniformMatrix3fvEXT(program, location, count, transpose, value);
19394    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19395    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19396
19397    void *pointerArgs[] = {
19398        (void *) value,
19399    };
19400
19401    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19402                              threadStartTime, threadEndTime,
19403                              &glmsg, pointerArgs);
19404    glContext->traceGLMessage(&glmsg);
19405}
19406
19407void GLTrace_glProgramUniformMatrix4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
19408    GLMessage glmsg;
19409    GLTraceContext *glContext = getGLTraceContext();
19410
19411    glmsg.set_function(GLMessage::glProgramUniformMatrix4fvEXT);
19412
19413    // copy argument program
19414    GLMessage_DataType *arg_program = glmsg.add_args();
19415    arg_program->set_isarray(false);
19416    arg_program->set_type(GLMessage::DataType::INT);
19417    arg_program->add_intvalue(program);
19418
19419    // copy argument location
19420    GLMessage_DataType *arg_location = glmsg.add_args();
19421    arg_location->set_isarray(false);
19422    arg_location->set_type(GLMessage::DataType::INT);
19423    arg_location->add_intvalue(location);
19424
19425    // copy argument count
19426    GLMessage_DataType *arg_count = glmsg.add_args();
19427    arg_count->set_isarray(false);
19428    arg_count->set_type(GLMessage::DataType::INT);
19429    arg_count->add_intvalue(count);
19430
19431    // copy argument transpose
19432    GLMessage_DataType *arg_transpose = glmsg.add_args();
19433    arg_transpose->set_isarray(false);
19434    arg_transpose->set_type(GLMessage::DataType::BOOL);
19435    arg_transpose->add_boolvalue(transpose);
19436
19437    // copy argument value
19438    GLMessage_DataType *arg_value = glmsg.add_args();
19439    arg_value->set_isarray(false);
19440    arg_value->set_type(GLMessage::DataType::INT64);
19441    arg_value->add_int64value((uintptr_t)value);
19442
19443    // call function
19444    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19445    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19446    glContext->hooks->gl.glProgramUniformMatrix4fvEXT(program, location, count, transpose, value);
19447    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19448    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19449
19450    void *pointerArgs[] = {
19451        (void *) value,
19452    };
19453
19454    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19455                              threadStartTime, threadEndTime,
19456                              &glmsg, pointerArgs);
19457    glContext->traceGLMessage(&glmsg);
19458}
19459
19460void GLTrace_glUseProgramStagesEXT(GLuint pipeline, GLbitfield stages, GLuint program) {
19461    GLMessage glmsg;
19462    GLTraceContext *glContext = getGLTraceContext();
19463
19464    glmsg.set_function(GLMessage::glUseProgramStagesEXT);
19465
19466    // copy argument pipeline
19467    GLMessage_DataType *arg_pipeline = glmsg.add_args();
19468    arg_pipeline->set_isarray(false);
19469    arg_pipeline->set_type(GLMessage::DataType::INT);
19470    arg_pipeline->add_intvalue(pipeline);
19471
19472    // copy argument stages
19473    GLMessage_DataType *arg_stages = glmsg.add_args();
19474    arg_stages->set_isarray(false);
19475    arg_stages->set_type(GLMessage::DataType::INT);
19476    arg_stages->add_intvalue(stages);
19477
19478    // copy argument program
19479    GLMessage_DataType *arg_program = glmsg.add_args();
19480    arg_program->set_isarray(false);
19481    arg_program->set_type(GLMessage::DataType::INT);
19482    arg_program->add_intvalue(program);
19483
19484    // call function
19485    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19486    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19487    glContext->hooks->gl.glUseProgramStagesEXT(pipeline, stages, program);
19488    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19489    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19490
19491    void *pointerArgs[] = {
19492    };
19493
19494    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19495                              threadStartTime, threadEndTime,
19496                              &glmsg, pointerArgs);
19497    glContext->traceGLMessage(&glmsg);
19498}
19499
19500void GLTrace_glValidateProgramPipelineEXT(GLuint pipeline) {
19501    GLMessage glmsg;
19502    GLTraceContext *glContext = getGLTraceContext();
19503
19504    glmsg.set_function(GLMessage::glValidateProgramPipelineEXT);
19505
19506    // copy argument pipeline
19507    GLMessage_DataType *arg_pipeline = glmsg.add_args();
19508    arg_pipeline->set_isarray(false);
19509    arg_pipeline->set_type(GLMessage::DataType::INT);
19510    arg_pipeline->add_intvalue(pipeline);
19511
19512    // call function
19513    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19514    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19515    glContext->hooks->gl.glValidateProgramPipelineEXT(pipeline);
19516    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19517    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19518
19519    void *pointerArgs[] = {
19520    };
19521
19522    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19523                              threadStartTime, threadEndTime,
19524                              &glmsg, pointerArgs);
19525    glContext->traceGLMessage(&glmsg);
19526}
19527
19528void GLTrace_glProgramUniform1uiEXT(GLuint program, GLint location, GLuint v0) {
19529    GLMessage glmsg;
19530    GLTraceContext *glContext = getGLTraceContext();
19531
19532    glmsg.set_function(GLMessage::glProgramUniform1uiEXT);
19533
19534    // copy argument program
19535    GLMessage_DataType *arg_program = glmsg.add_args();
19536    arg_program->set_isarray(false);
19537    arg_program->set_type(GLMessage::DataType::INT);
19538    arg_program->add_intvalue(program);
19539
19540    // copy argument location
19541    GLMessage_DataType *arg_location = glmsg.add_args();
19542    arg_location->set_isarray(false);
19543    arg_location->set_type(GLMessage::DataType::INT);
19544    arg_location->add_intvalue(location);
19545
19546    // copy argument v0
19547    GLMessage_DataType *arg_v0 = glmsg.add_args();
19548    arg_v0->set_isarray(false);
19549    arg_v0->set_type(GLMessage::DataType::INT);
19550    arg_v0->add_intvalue(v0);
19551
19552    // call function
19553    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19554    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19555    glContext->hooks->gl.glProgramUniform1uiEXT(program, location, v0);
19556    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19557    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19558
19559    void *pointerArgs[] = {
19560    };
19561
19562    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19563                              threadStartTime, threadEndTime,
19564                              &glmsg, pointerArgs);
19565    glContext->traceGLMessage(&glmsg);
19566}
19567
19568void GLTrace_glProgramUniform2uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1) {
19569    GLMessage glmsg;
19570    GLTraceContext *glContext = getGLTraceContext();
19571
19572    glmsg.set_function(GLMessage::glProgramUniform2uiEXT);
19573
19574    // copy argument program
19575    GLMessage_DataType *arg_program = glmsg.add_args();
19576    arg_program->set_isarray(false);
19577    arg_program->set_type(GLMessage::DataType::INT);
19578    arg_program->add_intvalue(program);
19579
19580    // copy argument location
19581    GLMessage_DataType *arg_location = glmsg.add_args();
19582    arg_location->set_isarray(false);
19583    arg_location->set_type(GLMessage::DataType::INT);
19584    arg_location->add_intvalue(location);
19585
19586    // copy argument v0
19587    GLMessage_DataType *arg_v0 = glmsg.add_args();
19588    arg_v0->set_isarray(false);
19589    arg_v0->set_type(GLMessage::DataType::INT);
19590    arg_v0->add_intvalue(v0);
19591
19592    // copy argument v1
19593    GLMessage_DataType *arg_v1 = glmsg.add_args();
19594    arg_v1->set_isarray(false);
19595    arg_v1->set_type(GLMessage::DataType::INT);
19596    arg_v1->add_intvalue(v1);
19597
19598    // call function
19599    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19600    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19601    glContext->hooks->gl.glProgramUniform2uiEXT(program, location, v0, v1);
19602    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19603    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19604
19605    void *pointerArgs[] = {
19606    };
19607
19608    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19609                              threadStartTime, threadEndTime,
19610                              &glmsg, pointerArgs);
19611    glContext->traceGLMessage(&glmsg);
19612}
19613
19614void GLTrace_glProgramUniform3uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) {
19615    GLMessage glmsg;
19616    GLTraceContext *glContext = getGLTraceContext();
19617
19618    glmsg.set_function(GLMessage::glProgramUniform3uiEXT);
19619
19620    // copy argument program
19621    GLMessage_DataType *arg_program = glmsg.add_args();
19622    arg_program->set_isarray(false);
19623    arg_program->set_type(GLMessage::DataType::INT);
19624    arg_program->add_intvalue(program);
19625
19626    // copy argument location
19627    GLMessage_DataType *arg_location = glmsg.add_args();
19628    arg_location->set_isarray(false);
19629    arg_location->set_type(GLMessage::DataType::INT);
19630    arg_location->add_intvalue(location);
19631
19632    // copy argument v0
19633    GLMessage_DataType *arg_v0 = glmsg.add_args();
19634    arg_v0->set_isarray(false);
19635    arg_v0->set_type(GLMessage::DataType::INT);
19636    arg_v0->add_intvalue(v0);
19637
19638    // copy argument v1
19639    GLMessage_DataType *arg_v1 = glmsg.add_args();
19640    arg_v1->set_isarray(false);
19641    arg_v1->set_type(GLMessage::DataType::INT);
19642    arg_v1->add_intvalue(v1);
19643
19644    // copy argument v2
19645    GLMessage_DataType *arg_v2 = glmsg.add_args();
19646    arg_v2->set_isarray(false);
19647    arg_v2->set_type(GLMessage::DataType::INT);
19648    arg_v2->add_intvalue(v2);
19649
19650    // call function
19651    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19652    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19653    glContext->hooks->gl.glProgramUniform3uiEXT(program, location, v0, v1, v2);
19654    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19655    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19656
19657    void *pointerArgs[] = {
19658    };
19659
19660    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19661                              threadStartTime, threadEndTime,
19662                              &glmsg, pointerArgs);
19663    glContext->traceGLMessage(&glmsg);
19664}
19665
19666void GLTrace_glProgramUniform4uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) {
19667    GLMessage glmsg;
19668    GLTraceContext *glContext = getGLTraceContext();
19669
19670    glmsg.set_function(GLMessage::glProgramUniform4uiEXT);
19671
19672    // copy argument program
19673    GLMessage_DataType *arg_program = glmsg.add_args();
19674    arg_program->set_isarray(false);
19675    arg_program->set_type(GLMessage::DataType::INT);
19676    arg_program->add_intvalue(program);
19677
19678    // copy argument location
19679    GLMessage_DataType *arg_location = glmsg.add_args();
19680    arg_location->set_isarray(false);
19681    arg_location->set_type(GLMessage::DataType::INT);
19682    arg_location->add_intvalue(location);
19683
19684    // copy argument v0
19685    GLMessage_DataType *arg_v0 = glmsg.add_args();
19686    arg_v0->set_isarray(false);
19687    arg_v0->set_type(GLMessage::DataType::INT);
19688    arg_v0->add_intvalue(v0);
19689
19690    // copy argument v1
19691    GLMessage_DataType *arg_v1 = glmsg.add_args();
19692    arg_v1->set_isarray(false);
19693    arg_v1->set_type(GLMessage::DataType::INT);
19694    arg_v1->add_intvalue(v1);
19695
19696    // copy argument v2
19697    GLMessage_DataType *arg_v2 = glmsg.add_args();
19698    arg_v2->set_isarray(false);
19699    arg_v2->set_type(GLMessage::DataType::INT);
19700    arg_v2->add_intvalue(v2);
19701
19702    // copy argument v3
19703    GLMessage_DataType *arg_v3 = glmsg.add_args();
19704    arg_v3->set_isarray(false);
19705    arg_v3->set_type(GLMessage::DataType::INT);
19706    arg_v3->add_intvalue(v3);
19707
19708    // call function
19709    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19710    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19711    glContext->hooks->gl.glProgramUniform4uiEXT(program, location, v0, v1, v2, v3);
19712    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19713    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19714
19715    void *pointerArgs[] = {
19716    };
19717
19718    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19719                              threadStartTime, threadEndTime,
19720                              &glmsg, pointerArgs);
19721    glContext->traceGLMessage(&glmsg);
19722}
19723
19724void GLTrace_glProgramUniform1uivEXT(GLuint program, GLint location, GLsizei count, const GLuint * value) {
19725    GLMessage glmsg;
19726    GLTraceContext *glContext = getGLTraceContext();
19727
19728    glmsg.set_function(GLMessage::glProgramUniform1uivEXT);
19729
19730    // copy argument program
19731    GLMessage_DataType *arg_program = glmsg.add_args();
19732    arg_program->set_isarray(false);
19733    arg_program->set_type(GLMessage::DataType::INT);
19734    arg_program->add_intvalue(program);
19735
19736    // copy argument location
19737    GLMessage_DataType *arg_location = glmsg.add_args();
19738    arg_location->set_isarray(false);
19739    arg_location->set_type(GLMessage::DataType::INT);
19740    arg_location->add_intvalue(location);
19741
19742    // copy argument count
19743    GLMessage_DataType *arg_count = glmsg.add_args();
19744    arg_count->set_isarray(false);
19745    arg_count->set_type(GLMessage::DataType::INT);
19746    arg_count->add_intvalue(count);
19747
19748    // copy argument value
19749    GLMessage_DataType *arg_value = glmsg.add_args();
19750    arg_value->set_isarray(false);
19751    arg_value->set_type(GLMessage::DataType::INT64);
19752    arg_value->add_int64value((uintptr_t)value);
19753
19754    // call function
19755    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19756    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19757    glContext->hooks->gl.glProgramUniform1uivEXT(program, location, count, value);
19758    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19759    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19760
19761    void *pointerArgs[] = {
19762        (void *) value,
19763    };
19764
19765    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19766                              threadStartTime, threadEndTime,
19767                              &glmsg, pointerArgs);
19768    glContext->traceGLMessage(&glmsg);
19769}
19770
19771void GLTrace_glProgramUniform2uivEXT(GLuint program, GLint location, GLsizei count, const GLuint * value) {
19772    GLMessage glmsg;
19773    GLTraceContext *glContext = getGLTraceContext();
19774
19775    glmsg.set_function(GLMessage::glProgramUniform2uivEXT);
19776
19777    // copy argument program
19778    GLMessage_DataType *arg_program = glmsg.add_args();
19779    arg_program->set_isarray(false);
19780    arg_program->set_type(GLMessage::DataType::INT);
19781    arg_program->add_intvalue(program);
19782
19783    // copy argument location
19784    GLMessage_DataType *arg_location = glmsg.add_args();
19785    arg_location->set_isarray(false);
19786    arg_location->set_type(GLMessage::DataType::INT);
19787    arg_location->add_intvalue(location);
19788
19789    // copy argument count
19790    GLMessage_DataType *arg_count = glmsg.add_args();
19791    arg_count->set_isarray(false);
19792    arg_count->set_type(GLMessage::DataType::INT);
19793    arg_count->add_intvalue(count);
19794
19795    // copy argument value
19796    GLMessage_DataType *arg_value = glmsg.add_args();
19797    arg_value->set_isarray(false);
19798    arg_value->set_type(GLMessage::DataType::INT64);
19799    arg_value->add_int64value((uintptr_t)value);
19800
19801    // call function
19802    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19803    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19804    glContext->hooks->gl.glProgramUniform2uivEXT(program, location, count, value);
19805    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19806    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19807
19808    void *pointerArgs[] = {
19809        (void *) value,
19810    };
19811
19812    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19813                              threadStartTime, threadEndTime,
19814                              &glmsg, pointerArgs);
19815    glContext->traceGLMessage(&glmsg);
19816}
19817
19818void GLTrace_glProgramUniform3uivEXT(GLuint program, GLint location, GLsizei count, const GLuint * value) {
19819    GLMessage glmsg;
19820    GLTraceContext *glContext = getGLTraceContext();
19821
19822    glmsg.set_function(GLMessage::glProgramUniform3uivEXT);
19823
19824    // copy argument program
19825    GLMessage_DataType *arg_program = glmsg.add_args();
19826    arg_program->set_isarray(false);
19827    arg_program->set_type(GLMessage::DataType::INT);
19828    arg_program->add_intvalue(program);
19829
19830    // copy argument location
19831    GLMessage_DataType *arg_location = glmsg.add_args();
19832    arg_location->set_isarray(false);
19833    arg_location->set_type(GLMessage::DataType::INT);
19834    arg_location->add_intvalue(location);
19835
19836    // copy argument count
19837    GLMessage_DataType *arg_count = glmsg.add_args();
19838    arg_count->set_isarray(false);
19839    arg_count->set_type(GLMessage::DataType::INT);
19840    arg_count->add_intvalue(count);
19841
19842    // copy argument value
19843    GLMessage_DataType *arg_value = glmsg.add_args();
19844    arg_value->set_isarray(false);
19845    arg_value->set_type(GLMessage::DataType::INT64);
19846    arg_value->add_int64value((uintptr_t)value);
19847
19848    // call function
19849    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19850    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19851    glContext->hooks->gl.glProgramUniform3uivEXT(program, location, count, value);
19852    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19853    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19854
19855    void *pointerArgs[] = {
19856        (void *) value,
19857    };
19858
19859    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19860                              threadStartTime, threadEndTime,
19861                              &glmsg, pointerArgs);
19862    glContext->traceGLMessage(&glmsg);
19863}
19864
19865void GLTrace_glProgramUniform4uivEXT(GLuint program, GLint location, GLsizei count, const GLuint * value) {
19866    GLMessage glmsg;
19867    GLTraceContext *glContext = getGLTraceContext();
19868
19869    glmsg.set_function(GLMessage::glProgramUniform4uivEXT);
19870
19871    // copy argument program
19872    GLMessage_DataType *arg_program = glmsg.add_args();
19873    arg_program->set_isarray(false);
19874    arg_program->set_type(GLMessage::DataType::INT);
19875    arg_program->add_intvalue(program);
19876
19877    // copy argument location
19878    GLMessage_DataType *arg_location = glmsg.add_args();
19879    arg_location->set_isarray(false);
19880    arg_location->set_type(GLMessage::DataType::INT);
19881    arg_location->add_intvalue(location);
19882
19883    // copy argument count
19884    GLMessage_DataType *arg_count = glmsg.add_args();
19885    arg_count->set_isarray(false);
19886    arg_count->set_type(GLMessage::DataType::INT);
19887    arg_count->add_intvalue(count);
19888
19889    // copy argument value
19890    GLMessage_DataType *arg_value = glmsg.add_args();
19891    arg_value->set_isarray(false);
19892    arg_value->set_type(GLMessage::DataType::INT64);
19893    arg_value->add_int64value((uintptr_t)value);
19894
19895    // call function
19896    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19897    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19898    glContext->hooks->gl.glProgramUniform4uivEXT(program, location, count, value);
19899    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19900    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19901
19902    void *pointerArgs[] = {
19903        (void *) value,
19904    };
19905
19906    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19907                              threadStartTime, threadEndTime,
19908                              &glmsg, pointerArgs);
19909    glContext->traceGLMessage(&glmsg);
19910}
19911
19912void GLTrace_glProgramUniformMatrix2x3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
19913    GLMessage glmsg;
19914    GLTraceContext *glContext = getGLTraceContext();
19915
19916    glmsg.set_function(GLMessage::glProgramUniformMatrix2x3fvEXT);
19917
19918    // copy argument program
19919    GLMessage_DataType *arg_program = glmsg.add_args();
19920    arg_program->set_isarray(false);
19921    arg_program->set_type(GLMessage::DataType::INT);
19922    arg_program->add_intvalue(program);
19923
19924    // copy argument location
19925    GLMessage_DataType *arg_location = glmsg.add_args();
19926    arg_location->set_isarray(false);
19927    arg_location->set_type(GLMessage::DataType::INT);
19928    arg_location->add_intvalue(location);
19929
19930    // copy argument count
19931    GLMessage_DataType *arg_count = glmsg.add_args();
19932    arg_count->set_isarray(false);
19933    arg_count->set_type(GLMessage::DataType::INT);
19934    arg_count->add_intvalue(count);
19935
19936    // copy argument transpose
19937    GLMessage_DataType *arg_transpose = glmsg.add_args();
19938    arg_transpose->set_isarray(false);
19939    arg_transpose->set_type(GLMessage::DataType::BOOL);
19940    arg_transpose->add_boolvalue(transpose);
19941
19942    // copy argument value
19943    GLMessage_DataType *arg_value = glmsg.add_args();
19944    arg_value->set_isarray(false);
19945    arg_value->set_type(GLMessage::DataType::INT64);
19946    arg_value->add_int64value((uintptr_t)value);
19947
19948    // call function
19949    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19950    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19951    glContext->hooks->gl.glProgramUniformMatrix2x3fvEXT(program, location, count, transpose, value);
19952    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19953    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19954
19955    void *pointerArgs[] = {
19956        (void *) value,
19957    };
19958
19959    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19960                              threadStartTime, threadEndTime,
19961                              &glmsg, pointerArgs);
19962    glContext->traceGLMessage(&glmsg);
19963}
19964
19965void GLTrace_glProgramUniformMatrix3x2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
19966    GLMessage glmsg;
19967    GLTraceContext *glContext = getGLTraceContext();
19968
19969    glmsg.set_function(GLMessage::glProgramUniformMatrix3x2fvEXT);
19970
19971    // copy argument program
19972    GLMessage_DataType *arg_program = glmsg.add_args();
19973    arg_program->set_isarray(false);
19974    arg_program->set_type(GLMessage::DataType::INT);
19975    arg_program->add_intvalue(program);
19976
19977    // copy argument location
19978    GLMessage_DataType *arg_location = glmsg.add_args();
19979    arg_location->set_isarray(false);
19980    arg_location->set_type(GLMessage::DataType::INT);
19981    arg_location->add_intvalue(location);
19982
19983    // copy argument count
19984    GLMessage_DataType *arg_count = glmsg.add_args();
19985    arg_count->set_isarray(false);
19986    arg_count->set_type(GLMessage::DataType::INT);
19987    arg_count->add_intvalue(count);
19988
19989    // copy argument transpose
19990    GLMessage_DataType *arg_transpose = glmsg.add_args();
19991    arg_transpose->set_isarray(false);
19992    arg_transpose->set_type(GLMessage::DataType::BOOL);
19993    arg_transpose->add_boolvalue(transpose);
19994
19995    // copy argument value
19996    GLMessage_DataType *arg_value = glmsg.add_args();
19997    arg_value->set_isarray(false);
19998    arg_value->set_type(GLMessage::DataType::INT64);
19999    arg_value->add_int64value((uintptr_t)value);
20000
20001    // call function
20002    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20003    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20004    glContext->hooks->gl.glProgramUniformMatrix3x2fvEXT(program, location, count, transpose, value);
20005    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20006    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20007
20008    void *pointerArgs[] = {
20009        (void *) value,
20010    };
20011
20012    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20013                              threadStartTime, threadEndTime,
20014                              &glmsg, pointerArgs);
20015    glContext->traceGLMessage(&glmsg);
20016}
20017
20018void GLTrace_glProgramUniformMatrix2x4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
20019    GLMessage glmsg;
20020    GLTraceContext *glContext = getGLTraceContext();
20021
20022    glmsg.set_function(GLMessage::glProgramUniformMatrix2x4fvEXT);
20023
20024    // copy argument program
20025    GLMessage_DataType *arg_program = glmsg.add_args();
20026    arg_program->set_isarray(false);
20027    arg_program->set_type(GLMessage::DataType::INT);
20028    arg_program->add_intvalue(program);
20029
20030    // copy argument location
20031    GLMessage_DataType *arg_location = glmsg.add_args();
20032    arg_location->set_isarray(false);
20033    arg_location->set_type(GLMessage::DataType::INT);
20034    arg_location->add_intvalue(location);
20035
20036    // copy argument count
20037    GLMessage_DataType *arg_count = glmsg.add_args();
20038    arg_count->set_isarray(false);
20039    arg_count->set_type(GLMessage::DataType::INT);
20040    arg_count->add_intvalue(count);
20041
20042    // copy argument transpose
20043    GLMessage_DataType *arg_transpose = glmsg.add_args();
20044    arg_transpose->set_isarray(false);
20045    arg_transpose->set_type(GLMessage::DataType::BOOL);
20046    arg_transpose->add_boolvalue(transpose);
20047
20048    // copy argument value
20049    GLMessage_DataType *arg_value = glmsg.add_args();
20050    arg_value->set_isarray(false);
20051    arg_value->set_type(GLMessage::DataType::INT64);
20052    arg_value->add_int64value((uintptr_t)value);
20053
20054    // call function
20055    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20056    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20057    glContext->hooks->gl.glProgramUniformMatrix2x4fvEXT(program, location, count, transpose, value);
20058    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20059    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20060
20061    void *pointerArgs[] = {
20062        (void *) value,
20063    };
20064
20065    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20066                              threadStartTime, threadEndTime,
20067                              &glmsg, pointerArgs);
20068    glContext->traceGLMessage(&glmsg);
20069}
20070
20071void GLTrace_glProgramUniformMatrix4x2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
20072    GLMessage glmsg;
20073    GLTraceContext *glContext = getGLTraceContext();
20074
20075    glmsg.set_function(GLMessage::glProgramUniformMatrix4x2fvEXT);
20076
20077    // copy argument program
20078    GLMessage_DataType *arg_program = glmsg.add_args();
20079    arg_program->set_isarray(false);
20080    arg_program->set_type(GLMessage::DataType::INT);
20081    arg_program->add_intvalue(program);
20082
20083    // copy argument location
20084    GLMessage_DataType *arg_location = glmsg.add_args();
20085    arg_location->set_isarray(false);
20086    arg_location->set_type(GLMessage::DataType::INT);
20087    arg_location->add_intvalue(location);
20088
20089    // copy argument count
20090    GLMessage_DataType *arg_count = glmsg.add_args();
20091    arg_count->set_isarray(false);
20092    arg_count->set_type(GLMessage::DataType::INT);
20093    arg_count->add_intvalue(count);
20094
20095    // copy argument transpose
20096    GLMessage_DataType *arg_transpose = glmsg.add_args();
20097    arg_transpose->set_isarray(false);
20098    arg_transpose->set_type(GLMessage::DataType::BOOL);
20099    arg_transpose->add_boolvalue(transpose);
20100
20101    // copy argument value
20102    GLMessage_DataType *arg_value = glmsg.add_args();
20103    arg_value->set_isarray(false);
20104    arg_value->set_type(GLMessage::DataType::INT64);
20105    arg_value->add_int64value((uintptr_t)value);
20106
20107    // call function
20108    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20109    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20110    glContext->hooks->gl.glProgramUniformMatrix4x2fvEXT(program, location, count, transpose, value);
20111    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20112    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20113
20114    void *pointerArgs[] = {
20115        (void *) value,
20116    };
20117
20118    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20119                              threadStartTime, threadEndTime,
20120                              &glmsg, pointerArgs);
20121    glContext->traceGLMessage(&glmsg);
20122}
20123
20124void GLTrace_glProgramUniformMatrix3x4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
20125    GLMessage glmsg;
20126    GLTraceContext *glContext = getGLTraceContext();
20127
20128    glmsg.set_function(GLMessage::glProgramUniformMatrix3x4fvEXT);
20129
20130    // copy argument program
20131    GLMessage_DataType *arg_program = glmsg.add_args();
20132    arg_program->set_isarray(false);
20133    arg_program->set_type(GLMessage::DataType::INT);
20134    arg_program->add_intvalue(program);
20135
20136    // copy argument location
20137    GLMessage_DataType *arg_location = glmsg.add_args();
20138    arg_location->set_isarray(false);
20139    arg_location->set_type(GLMessage::DataType::INT);
20140    arg_location->add_intvalue(location);
20141
20142    // copy argument count
20143    GLMessage_DataType *arg_count = glmsg.add_args();
20144    arg_count->set_isarray(false);
20145    arg_count->set_type(GLMessage::DataType::INT);
20146    arg_count->add_intvalue(count);
20147
20148    // copy argument transpose
20149    GLMessage_DataType *arg_transpose = glmsg.add_args();
20150    arg_transpose->set_isarray(false);
20151    arg_transpose->set_type(GLMessage::DataType::BOOL);
20152    arg_transpose->add_boolvalue(transpose);
20153
20154    // copy argument value
20155    GLMessage_DataType *arg_value = glmsg.add_args();
20156    arg_value->set_isarray(false);
20157    arg_value->set_type(GLMessage::DataType::INT64);
20158    arg_value->add_int64value((uintptr_t)value);
20159
20160    // call function
20161    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20162    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20163    glContext->hooks->gl.glProgramUniformMatrix3x4fvEXT(program, location, count, transpose, value);
20164    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20165    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20166
20167    void *pointerArgs[] = {
20168        (void *) value,
20169    };
20170
20171    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20172                              threadStartTime, threadEndTime,
20173                              &glmsg, pointerArgs);
20174    glContext->traceGLMessage(&glmsg);
20175}
20176
20177void GLTrace_glProgramUniformMatrix4x3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
20178    GLMessage glmsg;
20179    GLTraceContext *glContext = getGLTraceContext();
20180
20181    glmsg.set_function(GLMessage::glProgramUniformMatrix4x3fvEXT);
20182
20183    // copy argument program
20184    GLMessage_DataType *arg_program = glmsg.add_args();
20185    arg_program->set_isarray(false);
20186    arg_program->set_type(GLMessage::DataType::INT);
20187    arg_program->add_intvalue(program);
20188
20189    // copy argument location
20190    GLMessage_DataType *arg_location = glmsg.add_args();
20191    arg_location->set_isarray(false);
20192    arg_location->set_type(GLMessage::DataType::INT);
20193    arg_location->add_intvalue(location);
20194
20195    // copy argument count
20196    GLMessage_DataType *arg_count = glmsg.add_args();
20197    arg_count->set_isarray(false);
20198    arg_count->set_type(GLMessage::DataType::INT);
20199    arg_count->add_intvalue(count);
20200
20201    // copy argument transpose
20202    GLMessage_DataType *arg_transpose = glmsg.add_args();
20203    arg_transpose->set_isarray(false);
20204    arg_transpose->set_type(GLMessage::DataType::BOOL);
20205    arg_transpose->add_boolvalue(transpose);
20206
20207    // copy argument value
20208    GLMessage_DataType *arg_value = glmsg.add_args();
20209    arg_value->set_isarray(false);
20210    arg_value->set_type(GLMessage::DataType::INT64);
20211    arg_value->add_int64value((uintptr_t)value);
20212
20213    // call function
20214    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20215    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20216    glContext->hooks->gl.glProgramUniformMatrix4x3fvEXT(program, location, count, transpose, value);
20217    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20218    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20219
20220    void *pointerArgs[] = {
20221        (void *) value,
20222    };
20223
20224    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20225                              threadStartTime, threadEndTime,
20226                              &glmsg, pointerArgs);
20227    glContext->traceGLMessage(&glmsg);
20228}
20229
20230void GLTrace_glPatchParameteriEXT(GLenum pname, GLint value) {
20231    GLMessage glmsg;
20232    GLTraceContext *glContext = getGLTraceContext();
20233
20234    glmsg.set_function(GLMessage::glPatchParameteriEXT);
20235
20236    // copy argument pname
20237    GLMessage_DataType *arg_pname = glmsg.add_args();
20238    arg_pname->set_isarray(false);
20239    arg_pname->set_type(GLMessage::DataType::ENUM);
20240    arg_pname->add_intvalue((int)pname);
20241
20242    // copy argument value
20243    GLMessage_DataType *arg_value = glmsg.add_args();
20244    arg_value->set_isarray(false);
20245    arg_value->set_type(GLMessage::DataType::INT);
20246    arg_value->add_intvalue(value);
20247
20248    // call function
20249    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20250    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20251    glContext->hooks->gl.glPatchParameteriEXT(pname, value);
20252    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20253    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20254
20255    void *pointerArgs[] = {
20256    };
20257
20258    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20259                              threadStartTime, threadEndTime,
20260                              &glmsg, pointerArgs);
20261    glContext->traceGLMessage(&glmsg);
20262}
20263
20264void GLTrace_glTexParameterIivEXT(GLenum target, GLenum pname, const GLint * params) {
20265    GLMessage glmsg;
20266    GLTraceContext *glContext = getGLTraceContext();
20267
20268    glmsg.set_function(GLMessage::glTexParameterIivEXT);
20269
20270    // copy argument target
20271    GLMessage_DataType *arg_target = glmsg.add_args();
20272    arg_target->set_isarray(false);
20273    arg_target->set_type(GLMessage::DataType::ENUM);
20274    arg_target->add_intvalue((int)target);
20275
20276    // copy argument pname
20277    GLMessage_DataType *arg_pname = glmsg.add_args();
20278    arg_pname->set_isarray(false);
20279    arg_pname->set_type(GLMessage::DataType::ENUM);
20280    arg_pname->add_intvalue((int)pname);
20281
20282    // copy argument params
20283    GLMessage_DataType *arg_params = glmsg.add_args();
20284    arg_params->set_isarray(false);
20285    arg_params->set_type(GLMessage::DataType::INT64);
20286    arg_params->add_int64value((uintptr_t)params);
20287
20288    // call function
20289    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20290    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20291    glContext->hooks->gl.glTexParameterIivEXT(target, pname, params);
20292    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20293    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20294
20295    void *pointerArgs[] = {
20296        (void *) params,
20297    };
20298
20299    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20300                              threadStartTime, threadEndTime,
20301                              &glmsg, pointerArgs);
20302    glContext->traceGLMessage(&glmsg);
20303}
20304
20305void GLTrace_glTexParameterIuivEXT(GLenum target, GLenum pname, const GLuint * params) {
20306    GLMessage glmsg;
20307    GLTraceContext *glContext = getGLTraceContext();
20308
20309    glmsg.set_function(GLMessage::glTexParameterIuivEXT);
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 params
20324    GLMessage_DataType *arg_params = glmsg.add_args();
20325    arg_params->set_isarray(false);
20326    arg_params->set_type(GLMessage::DataType::INT64);
20327    arg_params->add_int64value((uintptr_t)params);
20328
20329    // call function
20330    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20331    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20332    glContext->hooks->gl.glTexParameterIuivEXT(target, pname, params);
20333    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20334    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20335
20336    void *pointerArgs[] = {
20337        (void *) params,
20338    };
20339
20340    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20341                              threadStartTime, threadEndTime,
20342                              &glmsg, pointerArgs);
20343    glContext->traceGLMessage(&glmsg);
20344}
20345
20346void GLTrace_glGetTexParameterIivEXT(GLenum target, GLenum pname, GLint * params) {
20347    GLMessage glmsg;
20348    GLTraceContext *glContext = getGLTraceContext();
20349
20350    glmsg.set_function(GLMessage::glGetTexParameterIivEXT);
20351
20352    // copy argument target
20353    GLMessage_DataType *arg_target = glmsg.add_args();
20354    arg_target->set_isarray(false);
20355    arg_target->set_type(GLMessage::DataType::ENUM);
20356    arg_target->add_intvalue((int)target);
20357
20358    // copy argument pname
20359    GLMessage_DataType *arg_pname = glmsg.add_args();
20360    arg_pname->set_isarray(false);
20361    arg_pname->set_type(GLMessage::DataType::ENUM);
20362    arg_pname->add_intvalue((int)pname);
20363
20364    // copy argument params
20365    GLMessage_DataType *arg_params = glmsg.add_args();
20366    arg_params->set_isarray(false);
20367    arg_params->set_type(GLMessage::DataType::INT64);
20368    arg_params->add_int64value((uintptr_t)params);
20369
20370    // call function
20371    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20372    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20373    glContext->hooks->gl.glGetTexParameterIivEXT(target, pname, params);
20374    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20375    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20376
20377    void *pointerArgs[] = {
20378        (void *) params,
20379    };
20380
20381    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20382                              threadStartTime, threadEndTime,
20383                              &glmsg, pointerArgs);
20384    glContext->traceGLMessage(&glmsg);
20385}
20386
20387void GLTrace_glGetTexParameterIuivEXT(GLenum target, GLenum pname, GLuint * params) {
20388    GLMessage glmsg;
20389    GLTraceContext *glContext = getGLTraceContext();
20390
20391    glmsg.set_function(GLMessage::glGetTexParameterIuivEXT);
20392
20393    // copy argument target
20394    GLMessage_DataType *arg_target = glmsg.add_args();
20395    arg_target->set_isarray(false);
20396    arg_target->set_type(GLMessage::DataType::ENUM);
20397    arg_target->add_intvalue((int)target);
20398
20399    // copy argument pname
20400    GLMessage_DataType *arg_pname = glmsg.add_args();
20401    arg_pname->set_isarray(false);
20402    arg_pname->set_type(GLMessage::DataType::ENUM);
20403    arg_pname->add_intvalue((int)pname);
20404
20405    // copy argument params
20406    GLMessage_DataType *arg_params = glmsg.add_args();
20407    arg_params->set_isarray(false);
20408    arg_params->set_type(GLMessage::DataType::INT64);
20409    arg_params->add_int64value((uintptr_t)params);
20410
20411    // call function
20412    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20413    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20414    glContext->hooks->gl.glGetTexParameterIuivEXT(target, pname, params);
20415    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20416    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20417
20418    void *pointerArgs[] = {
20419        (void *) params,
20420    };
20421
20422    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20423                              threadStartTime, threadEndTime,
20424                              &glmsg, pointerArgs);
20425    glContext->traceGLMessage(&glmsg);
20426}
20427
20428void GLTrace_glSamplerParameterIivEXT(GLuint sampler, GLenum pname, const GLint * param) {
20429    GLMessage glmsg;
20430    GLTraceContext *glContext = getGLTraceContext();
20431
20432    glmsg.set_function(GLMessage::glSamplerParameterIivEXT);
20433
20434    // copy argument sampler
20435    GLMessage_DataType *arg_sampler = glmsg.add_args();
20436    arg_sampler->set_isarray(false);
20437    arg_sampler->set_type(GLMessage::DataType::INT);
20438    arg_sampler->add_intvalue(sampler);
20439
20440    // copy argument pname
20441    GLMessage_DataType *arg_pname = glmsg.add_args();
20442    arg_pname->set_isarray(false);
20443    arg_pname->set_type(GLMessage::DataType::ENUM);
20444    arg_pname->add_intvalue((int)pname);
20445
20446    // copy argument param
20447    GLMessage_DataType *arg_param = glmsg.add_args();
20448    arg_param->set_isarray(false);
20449    arg_param->set_type(GLMessage::DataType::INT64);
20450    arg_param->add_int64value((uintptr_t)param);
20451
20452    // call function
20453    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20454    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20455    glContext->hooks->gl.glSamplerParameterIivEXT(sampler, pname, param);
20456    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20457    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20458
20459    void *pointerArgs[] = {
20460        (void *) param,
20461    };
20462
20463    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20464                              threadStartTime, threadEndTime,
20465                              &glmsg, pointerArgs);
20466    glContext->traceGLMessage(&glmsg);
20467}
20468
20469void GLTrace_glSamplerParameterIuivEXT(GLuint sampler, GLenum pname, const GLuint * param) {
20470    GLMessage glmsg;
20471    GLTraceContext *glContext = getGLTraceContext();
20472
20473    glmsg.set_function(GLMessage::glSamplerParameterIuivEXT);
20474
20475    // copy argument sampler
20476    GLMessage_DataType *arg_sampler = glmsg.add_args();
20477    arg_sampler->set_isarray(false);
20478    arg_sampler->set_type(GLMessage::DataType::INT);
20479    arg_sampler->add_intvalue(sampler);
20480
20481    // copy argument pname
20482    GLMessage_DataType *arg_pname = glmsg.add_args();
20483    arg_pname->set_isarray(false);
20484    arg_pname->set_type(GLMessage::DataType::ENUM);
20485    arg_pname->add_intvalue((int)pname);
20486
20487    // copy argument param
20488    GLMessage_DataType *arg_param = glmsg.add_args();
20489    arg_param->set_isarray(false);
20490    arg_param->set_type(GLMessage::DataType::INT64);
20491    arg_param->add_int64value((uintptr_t)param);
20492
20493    // call function
20494    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20495    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20496    glContext->hooks->gl.glSamplerParameterIuivEXT(sampler, pname, param);
20497    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20498    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20499
20500    void *pointerArgs[] = {
20501        (void *) param,
20502    };
20503
20504    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20505                              threadStartTime, threadEndTime,
20506                              &glmsg, pointerArgs);
20507    glContext->traceGLMessage(&glmsg);
20508}
20509
20510void GLTrace_glGetSamplerParameterIivEXT(GLuint sampler, GLenum pname, GLint * params) {
20511    GLMessage glmsg;
20512    GLTraceContext *glContext = getGLTraceContext();
20513
20514    glmsg.set_function(GLMessage::glGetSamplerParameterIivEXT);
20515
20516    // copy argument sampler
20517    GLMessage_DataType *arg_sampler = glmsg.add_args();
20518    arg_sampler->set_isarray(false);
20519    arg_sampler->set_type(GLMessage::DataType::INT);
20520    arg_sampler->add_intvalue(sampler);
20521
20522    // copy argument pname
20523    GLMessage_DataType *arg_pname = glmsg.add_args();
20524    arg_pname->set_isarray(false);
20525    arg_pname->set_type(GLMessage::DataType::ENUM);
20526    arg_pname->add_intvalue((int)pname);
20527
20528    // copy argument params
20529    GLMessage_DataType *arg_params = glmsg.add_args();
20530    arg_params->set_isarray(false);
20531    arg_params->set_type(GLMessage::DataType::INT64);
20532    arg_params->add_int64value((uintptr_t)params);
20533
20534    // call function
20535    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20536    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20537    glContext->hooks->gl.glGetSamplerParameterIivEXT(sampler, pname, params);
20538    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20539    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20540
20541    void *pointerArgs[] = {
20542        (void *) params,
20543    };
20544
20545    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20546                              threadStartTime, threadEndTime,
20547                              &glmsg, pointerArgs);
20548    glContext->traceGLMessage(&glmsg);
20549}
20550
20551void GLTrace_glGetSamplerParameterIuivEXT(GLuint sampler, GLenum pname, GLuint * params) {
20552    GLMessage glmsg;
20553    GLTraceContext *glContext = getGLTraceContext();
20554
20555    glmsg.set_function(GLMessage::glGetSamplerParameterIuivEXT);
20556
20557    // copy argument sampler
20558    GLMessage_DataType *arg_sampler = glmsg.add_args();
20559    arg_sampler->set_isarray(false);
20560    arg_sampler->set_type(GLMessage::DataType::INT);
20561    arg_sampler->add_intvalue(sampler);
20562
20563    // copy argument pname
20564    GLMessage_DataType *arg_pname = glmsg.add_args();
20565    arg_pname->set_isarray(false);
20566    arg_pname->set_type(GLMessage::DataType::ENUM);
20567    arg_pname->add_intvalue((int)pname);
20568
20569    // copy argument params
20570    GLMessage_DataType *arg_params = glmsg.add_args();
20571    arg_params->set_isarray(false);
20572    arg_params->set_type(GLMessage::DataType::INT64);
20573    arg_params->add_int64value((uintptr_t)params);
20574
20575    // call function
20576    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20577    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20578    glContext->hooks->gl.glGetSamplerParameterIuivEXT(sampler, pname, params);
20579    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20580    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20581
20582    void *pointerArgs[] = {
20583        (void *) params,
20584    };
20585
20586    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20587                              threadStartTime, threadEndTime,
20588                              &glmsg, pointerArgs);
20589    glContext->traceGLMessage(&glmsg);
20590}
20591
20592void GLTrace_glTexBufferEXT(GLenum target, GLenum internalformat, GLuint buffer) {
20593    GLMessage glmsg;
20594    GLTraceContext *glContext = getGLTraceContext();
20595
20596    glmsg.set_function(GLMessage::glTexBufferEXT);
20597
20598    // copy argument target
20599    GLMessage_DataType *arg_target = glmsg.add_args();
20600    arg_target->set_isarray(false);
20601    arg_target->set_type(GLMessage::DataType::ENUM);
20602    arg_target->add_intvalue((int)target);
20603
20604    // copy argument internalformat
20605    GLMessage_DataType *arg_internalformat = glmsg.add_args();
20606    arg_internalformat->set_isarray(false);
20607    arg_internalformat->set_type(GLMessage::DataType::ENUM);
20608    arg_internalformat->add_intvalue((int)internalformat);
20609
20610    // copy argument buffer
20611    GLMessage_DataType *arg_buffer = glmsg.add_args();
20612    arg_buffer->set_isarray(false);
20613    arg_buffer->set_type(GLMessage::DataType::INT);
20614    arg_buffer->add_intvalue(buffer);
20615
20616    // call function
20617    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20618    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20619    glContext->hooks->gl.glTexBufferEXT(target, internalformat, buffer);
20620    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20621    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20622
20623    void *pointerArgs[] = {
20624    };
20625
20626    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20627                              threadStartTime, threadEndTime,
20628                              &glmsg, pointerArgs);
20629    glContext->traceGLMessage(&glmsg);
20630}
20631
20632void GLTrace_glTexBufferRangeEXT(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size) {
20633    GLMessage glmsg;
20634    GLTraceContext *glContext = getGLTraceContext();
20635
20636    glmsg.set_function(GLMessage::glTexBufferRangeEXT);
20637
20638    // copy argument target
20639    GLMessage_DataType *arg_target = glmsg.add_args();
20640    arg_target->set_isarray(false);
20641    arg_target->set_type(GLMessage::DataType::ENUM);
20642    arg_target->add_intvalue((int)target);
20643
20644    // copy argument internalformat
20645    GLMessage_DataType *arg_internalformat = glmsg.add_args();
20646    arg_internalformat->set_isarray(false);
20647    arg_internalformat->set_type(GLMessage::DataType::ENUM);
20648    arg_internalformat->add_intvalue((int)internalformat);
20649
20650    // copy argument buffer
20651    GLMessage_DataType *arg_buffer = glmsg.add_args();
20652    arg_buffer->set_isarray(false);
20653    arg_buffer->set_type(GLMessage::DataType::INT);
20654    arg_buffer->add_intvalue(buffer);
20655
20656    // copy argument offset
20657    GLMessage_DataType *arg_offset = glmsg.add_args();
20658    arg_offset->set_isarray(false);
20659    arg_offset->set_type(GLMessage::DataType::INT);
20660    arg_offset->add_intvalue(offset);
20661
20662    // copy argument size
20663    GLMessage_DataType *arg_size = glmsg.add_args();
20664    arg_size->set_isarray(false);
20665    arg_size->set_type(GLMessage::DataType::INT);
20666    arg_size->add_intvalue(size);
20667
20668    // call function
20669    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20670    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20671    glContext->hooks->gl.glTexBufferRangeEXT(target, internalformat, buffer, offset, size);
20672    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20673    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20674
20675    void *pointerArgs[] = {
20676    };
20677
20678    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20679                              threadStartTime, threadEndTime,
20680                              &glmsg, pointerArgs);
20681    glContext->traceGLMessage(&glmsg);
20682}
20683
20684void GLTrace_glTexStorage1DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) {
20685    GLMessage glmsg;
20686    GLTraceContext *glContext = getGLTraceContext();
20687
20688    glmsg.set_function(GLMessage::glTexStorage1DEXT);
20689
20690    // copy argument target
20691    GLMessage_DataType *arg_target = glmsg.add_args();
20692    arg_target->set_isarray(false);
20693    arg_target->set_type(GLMessage::DataType::ENUM);
20694    arg_target->add_intvalue((int)target);
20695
20696    // copy argument levels
20697    GLMessage_DataType *arg_levels = glmsg.add_args();
20698    arg_levels->set_isarray(false);
20699    arg_levels->set_type(GLMessage::DataType::INT);
20700    arg_levels->add_intvalue(levels);
20701
20702    // copy argument internalformat
20703    GLMessage_DataType *arg_internalformat = glmsg.add_args();
20704    arg_internalformat->set_isarray(false);
20705    arg_internalformat->set_type(GLMessage::DataType::ENUM);
20706    arg_internalformat->add_intvalue((int)internalformat);
20707
20708    // copy argument width
20709    GLMessage_DataType *arg_width = glmsg.add_args();
20710    arg_width->set_isarray(false);
20711    arg_width->set_type(GLMessage::DataType::INT);
20712    arg_width->add_intvalue(width);
20713
20714    // call function
20715    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20716    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20717    glContext->hooks->gl.glTexStorage1DEXT(target, levels, internalformat, width);
20718    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20719    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20720
20721    void *pointerArgs[] = {
20722    };
20723
20724    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20725                              threadStartTime, threadEndTime,
20726                              &glmsg, pointerArgs);
20727    glContext->traceGLMessage(&glmsg);
20728}
20729
20730void GLTrace_glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) {
20731    GLMessage glmsg;
20732    GLTraceContext *glContext = getGLTraceContext();
20733
20734    glmsg.set_function(GLMessage::glTexStorage2DEXT);
20735
20736    // copy argument target
20737    GLMessage_DataType *arg_target = glmsg.add_args();
20738    arg_target->set_isarray(false);
20739    arg_target->set_type(GLMessage::DataType::ENUM);
20740    arg_target->add_intvalue((int)target);
20741
20742    // copy argument levels
20743    GLMessage_DataType *arg_levels = glmsg.add_args();
20744    arg_levels->set_isarray(false);
20745    arg_levels->set_type(GLMessage::DataType::INT);
20746    arg_levels->add_intvalue(levels);
20747
20748    // copy argument internalformat
20749    GLMessage_DataType *arg_internalformat = glmsg.add_args();
20750    arg_internalformat->set_isarray(false);
20751    arg_internalformat->set_type(GLMessage::DataType::ENUM);
20752    arg_internalformat->add_intvalue((int)internalformat);
20753
20754    // copy argument width
20755    GLMessage_DataType *arg_width = glmsg.add_args();
20756    arg_width->set_isarray(false);
20757    arg_width->set_type(GLMessage::DataType::INT);
20758    arg_width->add_intvalue(width);
20759
20760    // copy argument height
20761    GLMessage_DataType *arg_height = glmsg.add_args();
20762    arg_height->set_isarray(false);
20763    arg_height->set_type(GLMessage::DataType::INT);
20764    arg_height->add_intvalue(height);
20765
20766    // call function
20767    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20768    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20769    glContext->hooks->gl.glTexStorage2DEXT(target, levels, internalformat, width, height);
20770    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20771    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20772
20773    void *pointerArgs[] = {
20774    };
20775
20776    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20777                              threadStartTime, threadEndTime,
20778                              &glmsg, pointerArgs);
20779    glContext->traceGLMessage(&glmsg);
20780}
20781
20782void GLTrace_glTexStorage3DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) {
20783    GLMessage glmsg;
20784    GLTraceContext *glContext = getGLTraceContext();
20785
20786    glmsg.set_function(GLMessage::glTexStorage3DEXT);
20787
20788    // copy argument target
20789    GLMessage_DataType *arg_target = glmsg.add_args();
20790    arg_target->set_isarray(false);
20791    arg_target->set_type(GLMessage::DataType::ENUM);
20792    arg_target->add_intvalue((int)target);
20793
20794    // copy argument levels
20795    GLMessage_DataType *arg_levels = glmsg.add_args();
20796    arg_levels->set_isarray(false);
20797    arg_levels->set_type(GLMessage::DataType::INT);
20798    arg_levels->add_intvalue(levels);
20799
20800    // copy argument internalformat
20801    GLMessage_DataType *arg_internalformat = glmsg.add_args();
20802    arg_internalformat->set_isarray(false);
20803    arg_internalformat->set_type(GLMessage::DataType::ENUM);
20804    arg_internalformat->add_intvalue((int)internalformat);
20805
20806    // copy argument width
20807    GLMessage_DataType *arg_width = glmsg.add_args();
20808    arg_width->set_isarray(false);
20809    arg_width->set_type(GLMessage::DataType::INT);
20810    arg_width->add_intvalue(width);
20811
20812    // copy argument height
20813    GLMessage_DataType *arg_height = glmsg.add_args();
20814    arg_height->set_isarray(false);
20815    arg_height->set_type(GLMessage::DataType::INT);
20816    arg_height->add_intvalue(height);
20817
20818    // copy argument depth
20819    GLMessage_DataType *arg_depth = glmsg.add_args();
20820    arg_depth->set_isarray(false);
20821    arg_depth->set_type(GLMessage::DataType::INT);
20822    arg_depth->add_intvalue(depth);
20823
20824    // call function
20825    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20826    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20827    glContext->hooks->gl.glTexStorage3DEXT(target, levels, internalformat, width, height, depth);
20828    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20829    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20830
20831    void *pointerArgs[] = {
20832    };
20833
20834    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20835                              threadStartTime, threadEndTime,
20836                              &glmsg, pointerArgs);
20837    glContext->traceGLMessage(&glmsg);
20838}
20839
20840void GLTrace_glTextureStorage1DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) {
20841    GLMessage glmsg;
20842    GLTraceContext *glContext = getGLTraceContext();
20843
20844    glmsg.set_function(GLMessage::glTextureStorage1DEXT);
20845
20846    // copy argument texture
20847    GLMessage_DataType *arg_texture = glmsg.add_args();
20848    arg_texture->set_isarray(false);
20849    arg_texture->set_type(GLMessage::DataType::INT);
20850    arg_texture->add_intvalue(texture);
20851
20852    // copy argument target
20853    GLMessage_DataType *arg_target = glmsg.add_args();
20854    arg_target->set_isarray(false);
20855    arg_target->set_type(GLMessage::DataType::ENUM);
20856    arg_target->add_intvalue((int)target);
20857
20858    // copy argument levels
20859    GLMessage_DataType *arg_levels = glmsg.add_args();
20860    arg_levels->set_isarray(false);
20861    arg_levels->set_type(GLMessage::DataType::INT);
20862    arg_levels->add_intvalue(levels);
20863
20864    // copy argument internalformat
20865    GLMessage_DataType *arg_internalformat = glmsg.add_args();
20866    arg_internalformat->set_isarray(false);
20867    arg_internalformat->set_type(GLMessage::DataType::ENUM);
20868    arg_internalformat->add_intvalue((int)internalformat);
20869
20870    // copy argument width
20871    GLMessage_DataType *arg_width = glmsg.add_args();
20872    arg_width->set_isarray(false);
20873    arg_width->set_type(GLMessage::DataType::INT);
20874    arg_width->add_intvalue(width);
20875
20876    // call function
20877    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20878    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20879    glContext->hooks->gl.glTextureStorage1DEXT(texture, target, levels, internalformat, width);
20880    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20881    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20882
20883    void *pointerArgs[] = {
20884    };
20885
20886    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20887                              threadStartTime, threadEndTime,
20888                              &glmsg, pointerArgs);
20889    glContext->traceGLMessage(&glmsg);
20890}
20891
20892void GLTrace_glTextureStorage2DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) {
20893    GLMessage glmsg;
20894    GLTraceContext *glContext = getGLTraceContext();
20895
20896    glmsg.set_function(GLMessage::glTextureStorage2DEXT);
20897
20898    // copy argument texture
20899    GLMessage_DataType *arg_texture = glmsg.add_args();
20900    arg_texture->set_isarray(false);
20901    arg_texture->set_type(GLMessage::DataType::INT);
20902    arg_texture->add_intvalue(texture);
20903
20904    // copy argument target
20905    GLMessage_DataType *arg_target = glmsg.add_args();
20906    arg_target->set_isarray(false);
20907    arg_target->set_type(GLMessage::DataType::ENUM);
20908    arg_target->add_intvalue((int)target);
20909
20910    // copy argument levels
20911    GLMessage_DataType *arg_levels = glmsg.add_args();
20912    arg_levels->set_isarray(false);
20913    arg_levels->set_type(GLMessage::DataType::INT);
20914    arg_levels->add_intvalue(levels);
20915
20916    // copy argument internalformat
20917    GLMessage_DataType *arg_internalformat = glmsg.add_args();
20918    arg_internalformat->set_isarray(false);
20919    arg_internalformat->set_type(GLMessage::DataType::ENUM);
20920    arg_internalformat->add_intvalue((int)internalformat);
20921
20922    // copy argument width
20923    GLMessage_DataType *arg_width = glmsg.add_args();
20924    arg_width->set_isarray(false);
20925    arg_width->set_type(GLMessage::DataType::INT);
20926    arg_width->add_intvalue(width);
20927
20928    // copy argument height
20929    GLMessage_DataType *arg_height = glmsg.add_args();
20930    arg_height->set_isarray(false);
20931    arg_height->set_type(GLMessage::DataType::INT);
20932    arg_height->add_intvalue(height);
20933
20934    // call function
20935    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
20936    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20937    glContext->hooks->gl.glTextureStorage2DEXT(texture, target, levels, internalformat, width, height);
20938    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
20939    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20940
20941    void *pointerArgs[] = {
20942    };
20943
20944    fixupGLMessage(glContext, wallStartTime, wallEndTime,
20945                              threadStartTime, threadEndTime,
20946                              &glmsg, pointerArgs);
20947    glContext->traceGLMessage(&glmsg);
20948}
20949
20950void GLTrace_glTextureStorage3DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) {
20951    GLMessage glmsg;
20952    GLTraceContext *glContext = getGLTraceContext();
20953
20954    glmsg.set_function(GLMessage::glTextureStorage3DEXT);
20955
20956    // copy argument texture
20957    GLMessage_DataType *arg_texture = glmsg.add_args();
20958    arg_texture->set_isarray(false);
20959    arg_texture->set_type(GLMessage::DataType::INT);
20960    arg_texture->add_intvalue(texture);
20961
20962    // copy argument target
20963    GLMessage_DataType *arg_target = glmsg.add_args();
20964    arg_target->set_isarray(false);
20965    arg_target->set_type(GLMessage::DataType::ENUM);
20966    arg_target->add_intvalue((int)target);
20967
20968    // copy argument levels
20969    GLMessage_DataType *arg_levels = glmsg.add_args();
20970    arg_levels->set_isarray(false);
20971    arg_levels->set_type(GLMessage::DataType::INT);
20972    arg_levels->add_intvalue(levels);
20973
20974    // copy argument internalformat
20975    GLMessage_DataType *arg_internalformat = glmsg.add_args();
20976    arg_internalformat->set_isarray(false);
20977    arg_internalformat->set_type(GLMessage::DataType::ENUM);
20978    arg_internalformat->add_intvalue((int)internalformat);
20979
20980    // copy argument width
20981    GLMessage_DataType *arg_width = glmsg.add_args();
20982    arg_width->set_isarray(false);
20983    arg_width->set_type(GLMessage::DataType::INT);
20984    arg_width->add_intvalue(width);
20985
20986    // copy argument height
20987    GLMessage_DataType *arg_height = glmsg.add_args();
20988    arg_height->set_isarray(false);
20989    arg_height->set_type(GLMessage::DataType::INT);
20990    arg_height->add_intvalue(height);
20991
20992    // copy argument depth
20993    GLMessage_DataType *arg_depth = glmsg.add_args();
20994    arg_depth->set_isarray(false);
20995    arg_depth->set_type(GLMessage::DataType::INT);
20996    arg_depth->add_intvalue(depth);
20997
20998    // call function
20999    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21000    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21001    glContext->hooks->gl.glTextureStorage3DEXT(texture, target, levels, internalformat, width, height, depth);
21002    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21003    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21004
21005    void *pointerArgs[] = {
21006    };
21007
21008    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21009                              threadStartTime, threadEndTime,
21010                              &glmsg, pointerArgs);
21011    glContext->traceGLMessage(&glmsg);
21012}
21013
21014void GLTrace_glTextureViewEXT(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers) {
21015    GLMessage glmsg;
21016    GLTraceContext *glContext = getGLTraceContext();
21017
21018    glmsg.set_function(GLMessage::glTextureViewEXT);
21019
21020    // copy argument texture
21021    GLMessage_DataType *arg_texture = glmsg.add_args();
21022    arg_texture->set_isarray(false);
21023    arg_texture->set_type(GLMessage::DataType::INT);
21024    arg_texture->add_intvalue(texture);
21025
21026    // copy argument target
21027    GLMessage_DataType *arg_target = glmsg.add_args();
21028    arg_target->set_isarray(false);
21029    arg_target->set_type(GLMessage::DataType::ENUM);
21030    arg_target->add_intvalue((int)target);
21031
21032    // copy argument origtexture
21033    GLMessage_DataType *arg_origtexture = glmsg.add_args();
21034    arg_origtexture->set_isarray(false);
21035    arg_origtexture->set_type(GLMessage::DataType::INT);
21036    arg_origtexture->add_intvalue(origtexture);
21037
21038    // copy argument internalformat
21039    GLMessage_DataType *arg_internalformat = glmsg.add_args();
21040    arg_internalformat->set_isarray(false);
21041    arg_internalformat->set_type(GLMessage::DataType::ENUM);
21042    arg_internalformat->add_intvalue((int)internalformat);
21043
21044    // copy argument minlevel
21045    GLMessage_DataType *arg_minlevel = glmsg.add_args();
21046    arg_minlevel->set_isarray(false);
21047    arg_minlevel->set_type(GLMessage::DataType::INT);
21048    arg_minlevel->add_intvalue(minlevel);
21049
21050    // copy argument numlevels
21051    GLMessage_DataType *arg_numlevels = glmsg.add_args();
21052    arg_numlevels->set_isarray(false);
21053    arg_numlevels->set_type(GLMessage::DataType::INT);
21054    arg_numlevels->add_intvalue(numlevels);
21055
21056    // copy argument minlayer
21057    GLMessage_DataType *arg_minlayer = glmsg.add_args();
21058    arg_minlayer->set_isarray(false);
21059    arg_minlayer->set_type(GLMessage::DataType::INT);
21060    arg_minlayer->add_intvalue(minlayer);
21061
21062    // copy argument numlayers
21063    GLMessage_DataType *arg_numlayers = glmsg.add_args();
21064    arg_numlayers->set_isarray(false);
21065    arg_numlayers->set_type(GLMessage::DataType::INT);
21066    arg_numlayers->add_intvalue(numlayers);
21067
21068    // call function
21069    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21070    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21071    glContext->hooks->gl.glTextureViewEXT(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers);
21072    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21073    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21074
21075    void *pointerArgs[] = {
21076    };
21077
21078    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21079                              threadStartTime, threadEndTime,
21080                              &glmsg, pointerArgs);
21081    glContext->traceGLMessage(&glmsg);
21082}
21083
21084void GLTrace_glRenderbufferStorageMultisampleIMG(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
21085    GLMessage glmsg;
21086    GLTraceContext *glContext = getGLTraceContext();
21087
21088    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleIMG);
21089
21090    // copy argument target
21091    GLMessage_DataType *arg_target = glmsg.add_args();
21092    arg_target->set_isarray(false);
21093    arg_target->set_type(GLMessage::DataType::ENUM);
21094    arg_target->add_intvalue((int)target);
21095
21096    // copy argument samples
21097    GLMessage_DataType *arg_samples = glmsg.add_args();
21098    arg_samples->set_isarray(false);
21099    arg_samples->set_type(GLMessage::DataType::INT);
21100    arg_samples->add_intvalue(samples);
21101
21102    // copy argument internalformat
21103    GLMessage_DataType *arg_internalformat = glmsg.add_args();
21104    arg_internalformat->set_isarray(false);
21105    arg_internalformat->set_type(GLMessage::DataType::ENUM);
21106    arg_internalformat->add_intvalue((int)internalformat);
21107
21108    // copy argument width
21109    GLMessage_DataType *arg_width = glmsg.add_args();
21110    arg_width->set_isarray(false);
21111    arg_width->set_type(GLMessage::DataType::INT);
21112    arg_width->add_intvalue(width);
21113
21114    // copy argument height
21115    GLMessage_DataType *arg_height = glmsg.add_args();
21116    arg_height->set_isarray(false);
21117    arg_height->set_type(GLMessage::DataType::INT);
21118    arg_height->add_intvalue(height);
21119
21120    // call function
21121    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21122    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21123    glContext->hooks->gl.glRenderbufferStorageMultisampleIMG(target, samples, internalformat, width, height);
21124    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21125    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21126
21127    void *pointerArgs[] = {
21128    };
21129
21130    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21131                              threadStartTime, threadEndTime,
21132                              &glmsg, pointerArgs);
21133    glContext->traceGLMessage(&glmsg);
21134}
21135
21136void GLTrace_glFramebufferTexture2DMultisampleIMG(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples) {
21137    GLMessage glmsg;
21138    GLTraceContext *glContext = getGLTraceContext();
21139
21140    glmsg.set_function(GLMessage::glFramebufferTexture2DMultisampleIMG);
21141
21142    // copy argument target
21143    GLMessage_DataType *arg_target = glmsg.add_args();
21144    arg_target->set_isarray(false);
21145    arg_target->set_type(GLMessage::DataType::ENUM);
21146    arg_target->add_intvalue((int)target);
21147
21148    // copy argument attachment
21149    GLMessage_DataType *arg_attachment = glmsg.add_args();
21150    arg_attachment->set_isarray(false);
21151    arg_attachment->set_type(GLMessage::DataType::ENUM);
21152    arg_attachment->add_intvalue((int)attachment);
21153
21154    // copy argument textarget
21155    GLMessage_DataType *arg_textarget = glmsg.add_args();
21156    arg_textarget->set_isarray(false);
21157    arg_textarget->set_type(GLMessage::DataType::ENUM);
21158    arg_textarget->add_intvalue((int)textarget);
21159
21160    // copy argument texture
21161    GLMessage_DataType *arg_texture = glmsg.add_args();
21162    arg_texture->set_isarray(false);
21163    arg_texture->set_type(GLMessage::DataType::INT);
21164    arg_texture->add_intvalue(texture);
21165
21166    // copy argument level
21167    GLMessage_DataType *arg_level = glmsg.add_args();
21168    arg_level->set_isarray(false);
21169    arg_level->set_type(GLMessage::DataType::INT);
21170    arg_level->add_intvalue(level);
21171
21172    // copy argument samples
21173    GLMessage_DataType *arg_samples = glmsg.add_args();
21174    arg_samples->set_isarray(false);
21175    arg_samples->set_type(GLMessage::DataType::INT);
21176    arg_samples->add_intvalue(samples);
21177
21178    // call function
21179    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21180    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21181    glContext->hooks->gl.glFramebufferTexture2DMultisampleIMG(target, attachment, textarget, texture, level, samples);
21182    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21183    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21184
21185    void *pointerArgs[] = {
21186    };
21187
21188    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21189                              threadStartTime, threadEndTime,
21190                              &glmsg, pointerArgs);
21191    glContext->traceGLMessage(&glmsg);
21192}
21193
21194void GLTrace_glBeginPerfQueryINTEL(GLuint queryHandle) {
21195    GLMessage glmsg;
21196    GLTraceContext *glContext = getGLTraceContext();
21197
21198    glmsg.set_function(GLMessage::glBeginPerfQueryINTEL);
21199
21200    // copy argument queryHandle
21201    GLMessage_DataType *arg_queryHandle = glmsg.add_args();
21202    arg_queryHandle->set_isarray(false);
21203    arg_queryHandle->set_type(GLMessage::DataType::INT);
21204    arg_queryHandle->add_intvalue(queryHandle);
21205
21206    // call function
21207    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21208    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21209    glContext->hooks->gl.glBeginPerfQueryINTEL(queryHandle);
21210    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21211    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21212
21213    void *pointerArgs[] = {
21214    };
21215
21216    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21217                              threadStartTime, threadEndTime,
21218                              &glmsg, pointerArgs);
21219    glContext->traceGLMessage(&glmsg);
21220}
21221
21222void GLTrace_glCreatePerfQueryINTEL(GLuint queryId, GLuint * queryHandle) {
21223    GLMessage glmsg;
21224    GLTraceContext *glContext = getGLTraceContext();
21225
21226    glmsg.set_function(GLMessage::glCreatePerfQueryINTEL);
21227
21228    // copy argument queryId
21229    GLMessage_DataType *arg_queryId = glmsg.add_args();
21230    arg_queryId->set_isarray(false);
21231    arg_queryId->set_type(GLMessage::DataType::INT);
21232    arg_queryId->add_intvalue(queryId);
21233
21234    // copy argument queryHandle
21235    GLMessage_DataType *arg_queryHandle = glmsg.add_args();
21236    arg_queryHandle->set_isarray(false);
21237    arg_queryHandle->set_type(GLMessage::DataType::INT64);
21238    arg_queryHandle->add_int64value((uintptr_t)queryHandle);
21239
21240    // call function
21241    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21242    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21243    glContext->hooks->gl.glCreatePerfQueryINTEL(queryId, queryHandle);
21244    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21245    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21246
21247    void *pointerArgs[] = {
21248        (void *) queryHandle,
21249    };
21250
21251    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21252                              threadStartTime, threadEndTime,
21253                              &glmsg, pointerArgs);
21254    glContext->traceGLMessage(&glmsg);
21255}
21256
21257void GLTrace_glDeletePerfQueryINTEL(GLuint queryHandle) {
21258    GLMessage glmsg;
21259    GLTraceContext *glContext = getGLTraceContext();
21260
21261    glmsg.set_function(GLMessage::glDeletePerfQueryINTEL);
21262
21263    // copy argument queryHandle
21264    GLMessage_DataType *arg_queryHandle = glmsg.add_args();
21265    arg_queryHandle->set_isarray(false);
21266    arg_queryHandle->set_type(GLMessage::DataType::INT);
21267    arg_queryHandle->add_intvalue(queryHandle);
21268
21269    // call function
21270    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21271    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21272    glContext->hooks->gl.glDeletePerfQueryINTEL(queryHandle);
21273    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21274    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21275
21276    void *pointerArgs[] = {
21277    };
21278
21279    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21280                              threadStartTime, threadEndTime,
21281                              &glmsg, pointerArgs);
21282    glContext->traceGLMessage(&glmsg);
21283}
21284
21285void GLTrace_glEndPerfQueryINTEL(GLuint queryHandle) {
21286    GLMessage glmsg;
21287    GLTraceContext *glContext = getGLTraceContext();
21288
21289    glmsg.set_function(GLMessage::glEndPerfQueryINTEL);
21290
21291    // copy argument queryHandle
21292    GLMessage_DataType *arg_queryHandle = glmsg.add_args();
21293    arg_queryHandle->set_isarray(false);
21294    arg_queryHandle->set_type(GLMessage::DataType::INT);
21295    arg_queryHandle->add_intvalue(queryHandle);
21296
21297    // call function
21298    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21299    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21300    glContext->hooks->gl.glEndPerfQueryINTEL(queryHandle);
21301    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21302    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21303
21304    void *pointerArgs[] = {
21305    };
21306
21307    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21308                              threadStartTime, threadEndTime,
21309                              &glmsg, pointerArgs);
21310    glContext->traceGLMessage(&glmsg);
21311}
21312
21313void GLTrace_glGetFirstPerfQueryIdINTEL(GLuint * queryId) {
21314    GLMessage glmsg;
21315    GLTraceContext *glContext = getGLTraceContext();
21316
21317    glmsg.set_function(GLMessage::glGetFirstPerfQueryIdINTEL);
21318
21319    // copy argument queryId
21320    GLMessage_DataType *arg_queryId = glmsg.add_args();
21321    arg_queryId->set_isarray(false);
21322    arg_queryId->set_type(GLMessage::DataType::INT64);
21323    arg_queryId->add_int64value((uintptr_t)queryId);
21324
21325    // call function
21326    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21327    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21328    glContext->hooks->gl.glGetFirstPerfQueryIdINTEL(queryId);
21329    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21330    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21331
21332    void *pointerArgs[] = {
21333        (void *) queryId,
21334    };
21335
21336    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21337                              threadStartTime, threadEndTime,
21338                              &glmsg, pointerArgs);
21339    glContext->traceGLMessage(&glmsg);
21340}
21341
21342void GLTrace_glGetNextPerfQueryIdINTEL(GLuint queryId, GLuint * nextQueryId) {
21343    GLMessage glmsg;
21344    GLTraceContext *glContext = getGLTraceContext();
21345
21346    glmsg.set_function(GLMessage::glGetNextPerfQueryIdINTEL);
21347
21348    // copy argument queryId
21349    GLMessage_DataType *arg_queryId = glmsg.add_args();
21350    arg_queryId->set_isarray(false);
21351    arg_queryId->set_type(GLMessage::DataType::INT);
21352    arg_queryId->add_intvalue(queryId);
21353
21354    // copy argument nextQueryId
21355    GLMessage_DataType *arg_nextQueryId = glmsg.add_args();
21356    arg_nextQueryId->set_isarray(false);
21357    arg_nextQueryId->set_type(GLMessage::DataType::INT64);
21358    arg_nextQueryId->add_int64value((uintptr_t)nextQueryId);
21359
21360    // call function
21361    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21362    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21363    glContext->hooks->gl.glGetNextPerfQueryIdINTEL(queryId, nextQueryId);
21364    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21365    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21366
21367    void *pointerArgs[] = {
21368        (void *) nextQueryId,
21369    };
21370
21371    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21372                              threadStartTime, threadEndTime,
21373                              &glmsg, pointerArgs);
21374    glContext->traceGLMessage(&glmsg);
21375}
21376
21377void GLTrace_glGetPerfCounterInfoINTEL(GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar * counterName, GLuint counterDescLength, GLchar * counterDesc, GLuint * counterOffset, GLuint * counterDataSize, GLuint * counterTypeEnum, GLuint * counterDataTypeEnum, GLuint64 * rawCounterMaxValue) {
21378    GLMessage glmsg;
21379    GLTraceContext *glContext = getGLTraceContext();
21380
21381    glmsg.set_function(GLMessage::glGetPerfCounterInfoINTEL);
21382
21383    // copy argument queryId
21384    GLMessage_DataType *arg_queryId = glmsg.add_args();
21385    arg_queryId->set_isarray(false);
21386    arg_queryId->set_type(GLMessage::DataType::INT);
21387    arg_queryId->add_intvalue(queryId);
21388
21389    // copy argument counterId
21390    GLMessage_DataType *arg_counterId = glmsg.add_args();
21391    arg_counterId->set_isarray(false);
21392    arg_counterId->set_type(GLMessage::DataType::INT);
21393    arg_counterId->add_intvalue(counterId);
21394
21395    // copy argument counterNameLength
21396    GLMessage_DataType *arg_counterNameLength = glmsg.add_args();
21397    arg_counterNameLength->set_isarray(false);
21398    arg_counterNameLength->set_type(GLMessage::DataType::INT);
21399    arg_counterNameLength->add_intvalue(counterNameLength);
21400
21401    // copy argument counterName
21402    GLMessage_DataType *arg_counterName = glmsg.add_args();
21403    arg_counterName->set_isarray(false);
21404    arg_counterName->set_type(GLMessage::DataType::INT64);
21405    arg_counterName->add_int64value((uintptr_t)counterName);
21406
21407    // copy argument counterDescLength
21408    GLMessage_DataType *arg_counterDescLength = glmsg.add_args();
21409    arg_counterDescLength->set_isarray(false);
21410    arg_counterDescLength->set_type(GLMessage::DataType::INT);
21411    arg_counterDescLength->add_intvalue(counterDescLength);
21412
21413    // copy argument counterDesc
21414    GLMessage_DataType *arg_counterDesc = glmsg.add_args();
21415    arg_counterDesc->set_isarray(false);
21416    arg_counterDesc->set_type(GLMessage::DataType::INT64);
21417    arg_counterDesc->add_int64value((uintptr_t)counterDesc);
21418
21419    // copy argument counterOffset
21420    GLMessage_DataType *arg_counterOffset = glmsg.add_args();
21421    arg_counterOffset->set_isarray(false);
21422    arg_counterOffset->set_type(GLMessage::DataType::INT64);
21423    arg_counterOffset->add_int64value((uintptr_t)counterOffset);
21424
21425    // copy argument counterDataSize
21426    GLMessage_DataType *arg_counterDataSize = glmsg.add_args();
21427    arg_counterDataSize->set_isarray(false);
21428    arg_counterDataSize->set_type(GLMessage::DataType::INT64);
21429    arg_counterDataSize->add_int64value((uintptr_t)counterDataSize);
21430
21431    // copy argument counterTypeEnum
21432    GLMessage_DataType *arg_counterTypeEnum = glmsg.add_args();
21433    arg_counterTypeEnum->set_isarray(false);
21434    arg_counterTypeEnum->set_type(GLMessage::DataType::INT64);
21435    arg_counterTypeEnum->add_int64value((uintptr_t)counterTypeEnum);
21436
21437    // copy argument counterDataTypeEnum
21438    GLMessage_DataType *arg_counterDataTypeEnum = glmsg.add_args();
21439    arg_counterDataTypeEnum->set_isarray(false);
21440    arg_counterDataTypeEnum->set_type(GLMessage::DataType::INT64);
21441    arg_counterDataTypeEnum->add_int64value((uintptr_t)counterDataTypeEnum);
21442
21443    // copy argument rawCounterMaxValue
21444    GLMessage_DataType *arg_rawCounterMaxValue = glmsg.add_args();
21445    arg_rawCounterMaxValue->set_isarray(false);
21446    arg_rawCounterMaxValue->set_type(GLMessage::DataType::INT64);
21447    arg_rawCounterMaxValue->add_int64value((uintptr_t)rawCounterMaxValue);
21448
21449    // call function
21450    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21451    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21452    glContext->hooks->gl.glGetPerfCounterInfoINTEL(queryId, counterId, counterNameLength, counterName, counterDescLength, counterDesc, counterOffset, counterDataSize, counterTypeEnum, counterDataTypeEnum, rawCounterMaxValue);
21453    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21454    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21455
21456    void *pointerArgs[] = {
21457        (void *) counterName,
21458        (void *) counterDesc,
21459        (void *) counterOffset,
21460        (void *) counterDataSize,
21461        (void *) counterTypeEnum,
21462        (void *) counterDataTypeEnum,
21463        (void *) rawCounterMaxValue,
21464    };
21465
21466    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21467                              threadStartTime, threadEndTime,
21468                              &glmsg, pointerArgs);
21469    glContext->traceGLMessage(&glmsg);
21470}
21471
21472void GLTrace_glGetPerfQueryDataINTEL(GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid * data, GLuint * bytesWritten) {
21473    GLMessage glmsg;
21474    GLTraceContext *glContext = getGLTraceContext();
21475
21476    glmsg.set_function(GLMessage::glGetPerfQueryDataINTEL);
21477
21478    // copy argument queryHandle
21479    GLMessage_DataType *arg_queryHandle = glmsg.add_args();
21480    arg_queryHandle->set_isarray(false);
21481    arg_queryHandle->set_type(GLMessage::DataType::INT);
21482    arg_queryHandle->add_intvalue(queryHandle);
21483
21484    // copy argument flags
21485    GLMessage_DataType *arg_flags = glmsg.add_args();
21486    arg_flags->set_isarray(false);
21487    arg_flags->set_type(GLMessage::DataType::INT);
21488    arg_flags->add_intvalue(flags);
21489
21490    // copy argument dataSize
21491    GLMessage_DataType *arg_dataSize = glmsg.add_args();
21492    arg_dataSize->set_isarray(false);
21493    arg_dataSize->set_type(GLMessage::DataType::INT);
21494    arg_dataSize->add_intvalue(dataSize);
21495
21496    // copy argument data
21497    GLMessage_DataType *arg_data = glmsg.add_args();
21498    arg_data->set_isarray(false);
21499    arg_data->set_type(GLMessage::DataType::INT64);
21500    arg_data->add_int64value((uintptr_t)data);
21501
21502    // copy argument bytesWritten
21503    GLMessage_DataType *arg_bytesWritten = glmsg.add_args();
21504    arg_bytesWritten->set_isarray(false);
21505    arg_bytesWritten->set_type(GLMessage::DataType::INT64);
21506    arg_bytesWritten->add_int64value((uintptr_t)bytesWritten);
21507
21508    // call function
21509    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21510    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21511    glContext->hooks->gl.glGetPerfQueryDataINTEL(queryHandle, flags, dataSize, data, bytesWritten);
21512    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21513    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21514
21515    void *pointerArgs[] = {
21516        (void *) data,
21517        (void *) bytesWritten,
21518    };
21519
21520    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21521                              threadStartTime, threadEndTime,
21522                              &glmsg, pointerArgs);
21523    glContext->traceGLMessage(&glmsg);
21524}
21525
21526void GLTrace_glGetPerfQueryIdByNameINTEL(GLchar * queryName, GLuint * queryId) {
21527    GLMessage glmsg;
21528    GLTraceContext *glContext = getGLTraceContext();
21529
21530    glmsg.set_function(GLMessage::glGetPerfQueryIdByNameINTEL);
21531
21532    // copy argument queryName
21533    GLMessage_DataType *arg_queryName = glmsg.add_args();
21534    arg_queryName->set_isarray(false);
21535    arg_queryName->set_type(GLMessage::DataType::INT64);
21536    arg_queryName->add_int64value((uintptr_t)queryName);
21537
21538    // copy argument queryId
21539    GLMessage_DataType *arg_queryId = glmsg.add_args();
21540    arg_queryId->set_isarray(false);
21541    arg_queryId->set_type(GLMessage::DataType::INT64);
21542    arg_queryId->add_int64value((uintptr_t)queryId);
21543
21544    // call function
21545    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21546    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21547    glContext->hooks->gl.glGetPerfQueryIdByNameINTEL(queryName, queryId);
21548    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21549    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21550
21551    void *pointerArgs[] = {
21552        (void *) queryName,
21553        (void *) queryId,
21554    };
21555
21556    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21557                              threadStartTime, threadEndTime,
21558                              &glmsg, pointerArgs);
21559    glContext->traceGLMessage(&glmsg);
21560}
21561
21562void GLTrace_glGetPerfQueryInfoINTEL(GLuint queryId, GLuint queryNameLength, GLchar * queryName, GLuint * dataSize, GLuint * noCounters, GLuint * noInstances, GLuint * capsMask) {
21563    GLMessage glmsg;
21564    GLTraceContext *glContext = getGLTraceContext();
21565
21566    glmsg.set_function(GLMessage::glGetPerfQueryInfoINTEL);
21567
21568    // copy argument queryId
21569    GLMessage_DataType *arg_queryId = glmsg.add_args();
21570    arg_queryId->set_isarray(false);
21571    arg_queryId->set_type(GLMessage::DataType::INT);
21572    arg_queryId->add_intvalue(queryId);
21573
21574    // copy argument queryNameLength
21575    GLMessage_DataType *arg_queryNameLength = glmsg.add_args();
21576    arg_queryNameLength->set_isarray(false);
21577    arg_queryNameLength->set_type(GLMessage::DataType::INT);
21578    arg_queryNameLength->add_intvalue(queryNameLength);
21579
21580    // copy argument queryName
21581    GLMessage_DataType *arg_queryName = glmsg.add_args();
21582    arg_queryName->set_isarray(false);
21583    arg_queryName->set_type(GLMessage::DataType::INT64);
21584    arg_queryName->add_int64value((uintptr_t)queryName);
21585
21586    // copy argument dataSize
21587    GLMessage_DataType *arg_dataSize = glmsg.add_args();
21588    arg_dataSize->set_isarray(false);
21589    arg_dataSize->set_type(GLMessage::DataType::INT64);
21590    arg_dataSize->add_int64value((uintptr_t)dataSize);
21591
21592    // copy argument noCounters
21593    GLMessage_DataType *arg_noCounters = glmsg.add_args();
21594    arg_noCounters->set_isarray(false);
21595    arg_noCounters->set_type(GLMessage::DataType::INT64);
21596    arg_noCounters->add_int64value((uintptr_t)noCounters);
21597
21598    // copy argument noInstances
21599    GLMessage_DataType *arg_noInstances = glmsg.add_args();
21600    arg_noInstances->set_isarray(false);
21601    arg_noInstances->set_type(GLMessage::DataType::INT64);
21602    arg_noInstances->add_int64value((uintptr_t)noInstances);
21603
21604    // copy argument capsMask
21605    GLMessage_DataType *arg_capsMask = glmsg.add_args();
21606    arg_capsMask->set_isarray(false);
21607    arg_capsMask->set_type(GLMessage::DataType::INT64);
21608    arg_capsMask->add_int64value((uintptr_t)capsMask);
21609
21610    // call function
21611    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21612    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21613    glContext->hooks->gl.glGetPerfQueryInfoINTEL(queryId, queryNameLength, queryName, dataSize, noCounters, noInstances, capsMask);
21614    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21615    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21616
21617    void *pointerArgs[] = {
21618        (void *) queryName,
21619        (void *) dataSize,
21620        (void *) noCounters,
21621        (void *) noInstances,
21622        (void *) capsMask,
21623    };
21624
21625    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21626                              threadStartTime, threadEndTime,
21627                              &glmsg, pointerArgs);
21628    glContext->traceGLMessage(&glmsg);
21629}
21630
21631void GLTrace_glBlendParameteriNV(GLenum pname, GLint value) {
21632    GLMessage glmsg;
21633    GLTraceContext *glContext = getGLTraceContext();
21634
21635    glmsg.set_function(GLMessage::glBlendParameteriNV);
21636
21637    // copy argument pname
21638    GLMessage_DataType *arg_pname = glmsg.add_args();
21639    arg_pname->set_isarray(false);
21640    arg_pname->set_type(GLMessage::DataType::ENUM);
21641    arg_pname->add_intvalue((int)pname);
21642
21643    // copy argument value
21644    GLMessage_DataType *arg_value = glmsg.add_args();
21645    arg_value->set_isarray(false);
21646    arg_value->set_type(GLMessage::DataType::INT);
21647    arg_value->add_intvalue(value);
21648
21649    // call function
21650    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21651    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21652    glContext->hooks->gl.glBlendParameteriNV(pname, value);
21653    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21654    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21655
21656    void *pointerArgs[] = {
21657    };
21658
21659    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21660                              threadStartTime, threadEndTime,
21661                              &glmsg, pointerArgs);
21662    glContext->traceGLMessage(&glmsg);
21663}
21664
21665void GLTrace_glBlendBarrierNV(void) {
21666    GLMessage glmsg;
21667    GLTraceContext *glContext = getGLTraceContext();
21668
21669    glmsg.set_function(GLMessage::glBlendBarrierNV);
21670
21671    // call function
21672    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21673    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21674    glContext->hooks->gl.glBlendBarrierNV();
21675    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21676    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21677
21678    void *pointerArgs[] = {
21679    };
21680
21681    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21682                              threadStartTime, threadEndTime,
21683                              &glmsg, pointerArgs);
21684    glContext->traceGLMessage(&glmsg);
21685}
21686
21687void GLTrace_glCopyBufferSubDataNV(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) {
21688    GLMessage glmsg;
21689    GLTraceContext *glContext = getGLTraceContext();
21690
21691    glmsg.set_function(GLMessage::glCopyBufferSubDataNV);
21692
21693    // copy argument readTarget
21694    GLMessage_DataType *arg_readTarget = glmsg.add_args();
21695    arg_readTarget->set_isarray(false);
21696    arg_readTarget->set_type(GLMessage::DataType::ENUM);
21697    arg_readTarget->add_intvalue((int)readTarget);
21698
21699    // copy argument writeTarget
21700    GLMessage_DataType *arg_writeTarget = glmsg.add_args();
21701    arg_writeTarget->set_isarray(false);
21702    arg_writeTarget->set_type(GLMessage::DataType::ENUM);
21703    arg_writeTarget->add_intvalue((int)writeTarget);
21704
21705    // copy argument readOffset
21706    GLMessage_DataType *arg_readOffset = glmsg.add_args();
21707    arg_readOffset->set_isarray(false);
21708    arg_readOffset->set_type(GLMessage::DataType::INT);
21709    arg_readOffset->add_intvalue(readOffset);
21710
21711    // copy argument writeOffset
21712    GLMessage_DataType *arg_writeOffset = glmsg.add_args();
21713    arg_writeOffset->set_isarray(false);
21714    arg_writeOffset->set_type(GLMessage::DataType::INT);
21715    arg_writeOffset->add_intvalue(writeOffset);
21716
21717    // copy argument size
21718    GLMessage_DataType *arg_size = glmsg.add_args();
21719    arg_size->set_isarray(false);
21720    arg_size->set_type(GLMessage::DataType::INT);
21721    arg_size->add_intvalue(size);
21722
21723    // call function
21724    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21725    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21726    glContext->hooks->gl.glCopyBufferSubDataNV(readTarget, writeTarget, readOffset, writeOffset, size);
21727    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21728    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21729
21730    void *pointerArgs[] = {
21731    };
21732
21733    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21734                              threadStartTime, threadEndTime,
21735                              &glmsg, pointerArgs);
21736    glContext->traceGLMessage(&glmsg);
21737}
21738
21739void GLTrace_glCoverageMaskNV(GLboolean mask) {
21740    GLMessage glmsg;
21741    GLTraceContext *glContext = getGLTraceContext();
21742
21743    glmsg.set_function(GLMessage::glCoverageMaskNV);
21744
21745    // copy argument mask
21746    GLMessage_DataType *arg_mask = glmsg.add_args();
21747    arg_mask->set_isarray(false);
21748    arg_mask->set_type(GLMessage::DataType::BOOL);
21749    arg_mask->add_boolvalue(mask);
21750
21751    // call function
21752    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21753    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21754    glContext->hooks->gl.glCoverageMaskNV(mask);
21755    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21756    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21757
21758    void *pointerArgs[] = {
21759    };
21760
21761    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21762                              threadStartTime, threadEndTime,
21763                              &glmsg, pointerArgs);
21764    glContext->traceGLMessage(&glmsg);
21765}
21766
21767void GLTrace_glCoverageOperationNV(GLenum operation) {
21768    GLMessage glmsg;
21769    GLTraceContext *glContext = getGLTraceContext();
21770
21771    glmsg.set_function(GLMessage::glCoverageOperationNV);
21772
21773    // copy argument operation
21774    GLMessage_DataType *arg_operation = glmsg.add_args();
21775    arg_operation->set_isarray(false);
21776    arg_operation->set_type(GLMessage::DataType::ENUM);
21777    arg_operation->add_intvalue((int)operation);
21778
21779    // call function
21780    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21781    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21782    glContext->hooks->gl.glCoverageOperationNV(operation);
21783    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21784    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21785
21786    void *pointerArgs[] = {
21787    };
21788
21789    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21790                              threadStartTime, threadEndTime,
21791                              &glmsg, pointerArgs);
21792    glContext->traceGLMessage(&glmsg);
21793}
21794
21795void GLTrace_glDrawBuffersNV(GLsizei n, const GLenum * bufs) {
21796    GLMessage glmsg;
21797    GLTraceContext *glContext = getGLTraceContext();
21798
21799    glmsg.set_function(GLMessage::glDrawBuffersNV);
21800
21801    // copy argument n
21802    GLMessage_DataType *arg_n = glmsg.add_args();
21803    arg_n->set_isarray(false);
21804    arg_n->set_type(GLMessage::DataType::INT);
21805    arg_n->add_intvalue(n);
21806
21807    // copy argument bufs
21808    GLMessage_DataType *arg_bufs = glmsg.add_args();
21809    arg_bufs->set_isarray(false);
21810    arg_bufs->set_type(GLMessage::DataType::INT64);
21811    arg_bufs->add_int64value((uintptr_t)bufs);
21812
21813    // call function
21814    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21815    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21816    glContext->hooks->gl.glDrawBuffersNV(n, bufs);
21817    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21818    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21819
21820    void *pointerArgs[] = {
21821        (void *) bufs,
21822    };
21823
21824    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21825                              threadStartTime, threadEndTime,
21826                              &glmsg, pointerArgs);
21827    glContext->traceGLMessage(&glmsg);
21828}
21829
21830void GLTrace_glDrawArraysInstancedNV(GLenum mode, GLint first, GLsizei count, GLsizei primcount) {
21831    GLMessage glmsg;
21832    GLTraceContext *glContext = getGLTraceContext();
21833
21834    glmsg.set_function(GLMessage::glDrawArraysInstancedNV);
21835
21836    // copy argument mode
21837    GLMessage_DataType *arg_mode = glmsg.add_args();
21838    arg_mode->set_isarray(false);
21839    arg_mode->set_type(GLMessage::DataType::ENUM);
21840    arg_mode->add_intvalue((int)mode);
21841
21842    // copy argument first
21843    GLMessage_DataType *arg_first = glmsg.add_args();
21844    arg_first->set_isarray(false);
21845    arg_first->set_type(GLMessage::DataType::INT);
21846    arg_first->add_intvalue(first);
21847
21848    // copy argument count
21849    GLMessage_DataType *arg_count = glmsg.add_args();
21850    arg_count->set_isarray(false);
21851    arg_count->set_type(GLMessage::DataType::INT);
21852    arg_count->add_intvalue(count);
21853
21854    // copy argument primcount
21855    GLMessage_DataType *arg_primcount = glmsg.add_args();
21856    arg_primcount->set_isarray(false);
21857    arg_primcount->set_type(GLMessage::DataType::INT);
21858    arg_primcount->add_intvalue(primcount);
21859
21860    // call function
21861    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21862    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21863    glContext->hooks->gl.glDrawArraysInstancedNV(mode, first, count, primcount);
21864    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21865    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21866
21867    void *pointerArgs[] = {
21868    };
21869
21870    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21871                              threadStartTime, threadEndTime,
21872                              &glmsg, pointerArgs);
21873    glContext->traceGLMessage(&glmsg);
21874}
21875
21876void GLTrace_glDrawElementsInstancedNV(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei primcount) {
21877    GLMessage glmsg;
21878    GLTraceContext *glContext = getGLTraceContext();
21879
21880    glmsg.set_function(GLMessage::glDrawElementsInstancedNV);
21881
21882    // copy argument mode
21883    GLMessage_DataType *arg_mode = glmsg.add_args();
21884    arg_mode->set_isarray(false);
21885    arg_mode->set_type(GLMessage::DataType::ENUM);
21886    arg_mode->add_intvalue((int)mode);
21887
21888    // copy argument count
21889    GLMessage_DataType *arg_count = glmsg.add_args();
21890    arg_count->set_isarray(false);
21891    arg_count->set_type(GLMessage::DataType::INT);
21892    arg_count->add_intvalue(count);
21893
21894    // copy argument type
21895    GLMessage_DataType *arg_type = glmsg.add_args();
21896    arg_type->set_isarray(false);
21897    arg_type->set_type(GLMessage::DataType::ENUM);
21898    arg_type->add_intvalue((int)type);
21899
21900    // copy argument indices
21901    GLMessage_DataType *arg_indices = glmsg.add_args();
21902    arg_indices->set_isarray(false);
21903    arg_indices->set_type(GLMessage::DataType::INT64);
21904    arg_indices->add_int64value((uintptr_t)indices);
21905
21906    // copy argument primcount
21907    GLMessage_DataType *arg_primcount = glmsg.add_args();
21908    arg_primcount->set_isarray(false);
21909    arg_primcount->set_type(GLMessage::DataType::INT);
21910    arg_primcount->add_intvalue(primcount);
21911
21912    // call function
21913    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21914    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21915    glContext->hooks->gl.glDrawElementsInstancedNV(mode, count, type, indices, primcount);
21916    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21917    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21918
21919    void *pointerArgs[] = {
21920        (void *) indices,
21921    };
21922
21923    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21924                              threadStartTime, threadEndTime,
21925                              &glmsg, pointerArgs);
21926    glContext->traceGLMessage(&glmsg);
21927}
21928
21929void GLTrace_glDeleteFencesNV(GLsizei n, const GLuint * fences) {
21930    GLMessage glmsg;
21931    GLTraceContext *glContext = getGLTraceContext();
21932
21933    glmsg.set_function(GLMessage::glDeleteFencesNV);
21934
21935    // copy argument n
21936    GLMessage_DataType *arg_n = glmsg.add_args();
21937    arg_n->set_isarray(false);
21938    arg_n->set_type(GLMessage::DataType::INT);
21939    arg_n->add_intvalue(n);
21940
21941    // copy argument fences
21942    GLMessage_DataType *arg_fences = glmsg.add_args();
21943    arg_fences->set_isarray(false);
21944    arg_fences->set_type(GLMessage::DataType::INT64);
21945    arg_fences->add_int64value((uintptr_t)fences);
21946
21947    // call function
21948    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21949    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21950    glContext->hooks->gl.glDeleteFencesNV(n, fences);
21951    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21952    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21953
21954    void *pointerArgs[] = {
21955        (void *) fences,
21956    };
21957
21958    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21959                              threadStartTime, threadEndTime,
21960                              &glmsg, pointerArgs);
21961    glContext->traceGLMessage(&glmsg);
21962}
21963
21964void GLTrace_glGenFencesNV(GLsizei n, GLuint * fences) {
21965    GLMessage glmsg;
21966    GLTraceContext *glContext = getGLTraceContext();
21967
21968    glmsg.set_function(GLMessage::glGenFencesNV);
21969
21970    // copy argument n
21971    GLMessage_DataType *arg_n = glmsg.add_args();
21972    arg_n->set_isarray(false);
21973    arg_n->set_type(GLMessage::DataType::INT);
21974    arg_n->add_intvalue(n);
21975
21976    // copy argument fences
21977    GLMessage_DataType *arg_fences = glmsg.add_args();
21978    arg_fences->set_isarray(false);
21979    arg_fences->set_type(GLMessage::DataType::INT64);
21980    arg_fences->add_int64value((uintptr_t)fences);
21981
21982    // call function
21983    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
21984    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21985    glContext->hooks->gl.glGenFencesNV(n, fences);
21986    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
21987    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21988
21989    void *pointerArgs[] = {
21990        (void *) fences,
21991    };
21992
21993    fixupGLMessage(glContext, wallStartTime, wallEndTime,
21994                              threadStartTime, threadEndTime,
21995                              &glmsg, pointerArgs);
21996    glContext->traceGLMessage(&glmsg);
21997}
21998
21999GLboolean GLTrace_glIsFenceNV(GLuint fence) {
22000    GLMessage glmsg;
22001    GLTraceContext *glContext = getGLTraceContext();
22002
22003    glmsg.set_function(GLMessage::glIsFenceNV);
22004
22005    // copy argument fence
22006    GLMessage_DataType *arg_fence = glmsg.add_args();
22007    arg_fence->set_isarray(false);
22008    arg_fence->set_type(GLMessage::DataType::INT);
22009    arg_fence->add_intvalue(fence);
22010
22011    // call function
22012    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22013    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22014    GLboolean retValue = glContext->hooks->gl.glIsFenceNV(fence);
22015    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22016    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22017
22018    // set return value
22019    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
22020    rt->set_isarray(false);
22021    rt->set_type(GLMessage::DataType::BOOL);
22022    rt->add_boolvalue(retValue);
22023
22024    void *pointerArgs[] = {
22025    };
22026
22027    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22028                              threadStartTime, threadEndTime,
22029                              &glmsg, pointerArgs);
22030    glContext->traceGLMessage(&glmsg);
22031
22032    return retValue;
22033}
22034
22035GLboolean GLTrace_glTestFenceNV(GLuint fence) {
22036    GLMessage glmsg;
22037    GLTraceContext *glContext = getGLTraceContext();
22038
22039    glmsg.set_function(GLMessage::glTestFenceNV);
22040
22041    // copy argument fence
22042    GLMessage_DataType *arg_fence = glmsg.add_args();
22043    arg_fence->set_isarray(false);
22044    arg_fence->set_type(GLMessage::DataType::INT);
22045    arg_fence->add_intvalue(fence);
22046
22047    // call function
22048    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22049    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22050    GLboolean retValue = glContext->hooks->gl.glTestFenceNV(fence);
22051    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22052    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22053
22054    // set return value
22055    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
22056    rt->set_isarray(false);
22057    rt->set_type(GLMessage::DataType::BOOL);
22058    rt->add_boolvalue(retValue);
22059
22060    void *pointerArgs[] = {
22061    };
22062
22063    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22064                              threadStartTime, threadEndTime,
22065                              &glmsg, pointerArgs);
22066    glContext->traceGLMessage(&glmsg);
22067
22068    return retValue;
22069}
22070
22071void GLTrace_glGetFenceivNV(GLuint fence, GLenum pname, GLint * params) {
22072    GLMessage glmsg;
22073    GLTraceContext *glContext = getGLTraceContext();
22074
22075    glmsg.set_function(GLMessage::glGetFenceivNV);
22076
22077    // copy argument fence
22078    GLMessage_DataType *arg_fence = glmsg.add_args();
22079    arg_fence->set_isarray(false);
22080    arg_fence->set_type(GLMessage::DataType::INT);
22081    arg_fence->add_intvalue(fence);
22082
22083    // copy argument pname
22084    GLMessage_DataType *arg_pname = glmsg.add_args();
22085    arg_pname->set_isarray(false);
22086    arg_pname->set_type(GLMessage::DataType::ENUM);
22087    arg_pname->add_intvalue((int)pname);
22088
22089    // copy argument params
22090    GLMessage_DataType *arg_params = glmsg.add_args();
22091    arg_params->set_isarray(false);
22092    arg_params->set_type(GLMessage::DataType::INT64);
22093    arg_params->add_int64value((uintptr_t)params);
22094
22095    // call function
22096    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22097    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22098    glContext->hooks->gl.glGetFenceivNV(fence, pname, params);
22099    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22100    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22101
22102    void *pointerArgs[] = {
22103        (void *) params,
22104    };
22105
22106    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22107                              threadStartTime, threadEndTime,
22108                              &glmsg, pointerArgs);
22109    glContext->traceGLMessage(&glmsg);
22110}
22111
22112void GLTrace_glFinishFenceNV(GLuint fence) {
22113    GLMessage glmsg;
22114    GLTraceContext *glContext = getGLTraceContext();
22115
22116    glmsg.set_function(GLMessage::glFinishFenceNV);
22117
22118    // copy argument fence
22119    GLMessage_DataType *arg_fence = glmsg.add_args();
22120    arg_fence->set_isarray(false);
22121    arg_fence->set_type(GLMessage::DataType::INT);
22122    arg_fence->add_intvalue(fence);
22123
22124    // call function
22125    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22126    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22127    glContext->hooks->gl.glFinishFenceNV(fence);
22128    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22129    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22130
22131    void *pointerArgs[] = {
22132    };
22133
22134    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22135                              threadStartTime, threadEndTime,
22136                              &glmsg, pointerArgs);
22137    glContext->traceGLMessage(&glmsg);
22138}
22139
22140void GLTrace_glSetFenceNV(GLuint fence, GLenum condition) {
22141    GLMessage glmsg;
22142    GLTraceContext *glContext = getGLTraceContext();
22143
22144    glmsg.set_function(GLMessage::glSetFenceNV);
22145
22146    // copy argument fence
22147    GLMessage_DataType *arg_fence = glmsg.add_args();
22148    arg_fence->set_isarray(false);
22149    arg_fence->set_type(GLMessage::DataType::INT);
22150    arg_fence->add_intvalue(fence);
22151
22152    // copy argument condition
22153    GLMessage_DataType *arg_condition = glmsg.add_args();
22154    arg_condition->set_isarray(false);
22155    arg_condition->set_type(GLMessage::DataType::ENUM);
22156    arg_condition->add_intvalue((int)condition);
22157
22158    // call function
22159    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22160    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22161    glContext->hooks->gl.glSetFenceNV(fence, condition);
22162    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22163    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22164
22165    void *pointerArgs[] = {
22166    };
22167
22168    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22169                              threadStartTime, threadEndTime,
22170                              &glmsg, pointerArgs);
22171    glContext->traceGLMessage(&glmsg);
22172}
22173
22174void GLTrace_glBlitFramebufferNV(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) {
22175    GLMessage glmsg;
22176    GLTraceContext *glContext = getGLTraceContext();
22177
22178    glmsg.set_function(GLMessage::glBlitFramebufferNV);
22179
22180    // copy argument srcX0
22181    GLMessage_DataType *arg_srcX0 = glmsg.add_args();
22182    arg_srcX0->set_isarray(false);
22183    arg_srcX0->set_type(GLMessage::DataType::INT);
22184    arg_srcX0->add_intvalue(srcX0);
22185
22186    // copy argument srcY0
22187    GLMessage_DataType *arg_srcY0 = glmsg.add_args();
22188    arg_srcY0->set_isarray(false);
22189    arg_srcY0->set_type(GLMessage::DataType::INT);
22190    arg_srcY0->add_intvalue(srcY0);
22191
22192    // copy argument srcX1
22193    GLMessage_DataType *arg_srcX1 = glmsg.add_args();
22194    arg_srcX1->set_isarray(false);
22195    arg_srcX1->set_type(GLMessage::DataType::INT);
22196    arg_srcX1->add_intvalue(srcX1);
22197
22198    // copy argument srcY1
22199    GLMessage_DataType *arg_srcY1 = glmsg.add_args();
22200    arg_srcY1->set_isarray(false);
22201    arg_srcY1->set_type(GLMessage::DataType::INT);
22202    arg_srcY1->add_intvalue(srcY1);
22203
22204    // copy argument dstX0
22205    GLMessage_DataType *arg_dstX0 = glmsg.add_args();
22206    arg_dstX0->set_isarray(false);
22207    arg_dstX0->set_type(GLMessage::DataType::INT);
22208    arg_dstX0->add_intvalue(dstX0);
22209
22210    // copy argument dstY0
22211    GLMessage_DataType *arg_dstY0 = glmsg.add_args();
22212    arg_dstY0->set_isarray(false);
22213    arg_dstY0->set_type(GLMessage::DataType::INT);
22214    arg_dstY0->add_intvalue(dstY0);
22215
22216    // copy argument dstX1
22217    GLMessage_DataType *arg_dstX1 = glmsg.add_args();
22218    arg_dstX1->set_isarray(false);
22219    arg_dstX1->set_type(GLMessage::DataType::INT);
22220    arg_dstX1->add_intvalue(dstX1);
22221
22222    // copy argument dstY1
22223    GLMessage_DataType *arg_dstY1 = glmsg.add_args();
22224    arg_dstY1->set_isarray(false);
22225    arg_dstY1->set_type(GLMessage::DataType::INT);
22226    arg_dstY1->add_intvalue(dstY1);
22227
22228    // copy argument mask
22229    GLMessage_DataType *arg_mask = glmsg.add_args();
22230    arg_mask->set_isarray(false);
22231    arg_mask->set_type(GLMessage::DataType::INT);
22232    arg_mask->add_intvalue(mask);
22233
22234    // copy argument filter
22235    GLMessage_DataType *arg_filter = glmsg.add_args();
22236    arg_filter->set_isarray(false);
22237    arg_filter->set_type(GLMessage::DataType::ENUM);
22238    arg_filter->add_intvalue((int)filter);
22239
22240    // call function
22241    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22242    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22243    glContext->hooks->gl.glBlitFramebufferNV(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
22244    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22245    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22246
22247    void *pointerArgs[] = {
22248    };
22249
22250    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22251                              threadStartTime, threadEndTime,
22252                              &glmsg, pointerArgs);
22253    glContext->traceGLMessage(&glmsg);
22254}
22255
22256void GLTrace_glRenderbufferStorageMultisampleNV(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
22257    GLMessage glmsg;
22258    GLTraceContext *glContext = getGLTraceContext();
22259
22260    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleNV);
22261
22262    // copy argument target
22263    GLMessage_DataType *arg_target = glmsg.add_args();
22264    arg_target->set_isarray(false);
22265    arg_target->set_type(GLMessage::DataType::ENUM);
22266    arg_target->add_intvalue((int)target);
22267
22268    // copy argument samples
22269    GLMessage_DataType *arg_samples = glmsg.add_args();
22270    arg_samples->set_isarray(false);
22271    arg_samples->set_type(GLMessage::DataType::INT);
22272    arg_samples->add_intvalue(samples);
22273
22274    // copy argument internalformat
22275    GLMessage_DataType *arg_internalformat = glmsg.add_args();
22276    arg_internalformat->set_isarray(false);
22277    arg_internalformat->set_type(GLMessage::DataType::ENUM);
22278    arg_internalformat->add_intvalue((int)internalformat);
22279
22280    // copy argument width
22281    GLMessage_DataType *arg_width = glmsg.add_args();
22282    arg_width->set_isarray(false);
22283    arg_width->set_type(GLMessage::DataType::INT);
22284    arg_width->add_intvalue(width);
22285
22286    // copy argument height
22287    GLMessage_DataType *arg_height = glmsg.add_args();
22288    arg_height->set_isarray(false);
22289    arg_height->set_type(GLMessage::DataType::INT);
22290    arg_height->add_intvalue(height);
22291
22292    // call function
22293    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22294    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22295    glContext->hooks->gl.glRenderbufferStorageMultisampleNV(target, samples, internalformat, width, height);
22296    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22297    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22298
22299    void *pointerArgs[] = {
22300    };
22301
22302    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22303                              threadStartTime, threadEndTime,
22304                              &glmsg, pointerArgs);
22305    glContext->traceGLMessage(&glmsg);
22306}
22307
22308void GLTrace_glVertexAttribDivisorNV(GLuint index, GLuint divisor) {
22309    GLMessage glmsg;
22310    GLTraceContext *glContext = getGLTraceContext();
22311
22312    glmsg.set_function(GLMessage::glVertexAttribDivisorNV);
22313
22314    // copy argument index
22315    GLMessage_DataType *arg_index = glmsg.add_args();
22316    arg_index->set_isarray(false);
22317    arg_index->set_type(GLMessage::DataType::INT);
22318    arg_index->add_intvalue(index);
22319
22320    // copy argument divisor
22321    GLMessage_DataType *arg_divisor = glmsg.add_args();
22322    arg_divisor->set_isarray(false);
22323    arg_divisor->set_type(GLMessage::DataType::INT);
22324    arg_divisor->add_intvalue(divisor);
22325
22326    // call function
22327    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22328    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22329    glContext->hooks->gl.glVertexAttribDivisorNV(index, divisor);
22330    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22331    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22332
22333    void *pointerArgs[] = {
22334    };
22335
22336    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22337                              threadStartTime, threadEndTime,
22338                              &glmsg, pointerArgs);
22339    glContext->traceGLMessage(&glmsg);
22340}
22341
22342void GLTrace_glUniformMatrix2x3fvNV(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
22343    GLMessage glmsg;
22344    GLTraceContext *glContext = getGLTraceContext();
22345
22346    glmsg.set_function(GLMessage::glUniformMatrix2x3fvNV);
22347
22348    // copy argument location
22349    GLMessage_DataType *arg_location = glmsg.add_args();
22350    arg_location->set_isarray(false);
22351    arg_location->set_type(GLMessage::DataType::INT);
22352    arg_location->add_intvalue(location);
22353
22354    // copy argument count
22355    GLMessage_DataType *arg_count = glmsg.add_args();
22356    arg_count->set_isarray(false);
22357    arg_count->set_type(GLMessage::DataType::INT);
22358    arg_count->add_intvalue(count);
22359
22360    // copy argument transpose
22361    GLMessage_DataType *arg_transpose = glmsg.add_args();
22362    arg_transpose->set_isarray(false);
22363    arg_transpose->set_type(GLMessage::DataType::BOOL);
22364    arg_transpose->add_boolvalue(transpose);
22365
22366    // copy argument value
22367    GLMessage_DataType *arg_value = glmsg.add_args();
22368    arg_value->set_isarray(false);
22369    arg_value->set_type(GLMessage::DataType::INT64);
22370    arg_value->add_int64value((uintptr_t)value);
22371
22372    // call function
22373    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22374    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22375    glContext->hooks->gl.glUniformMatrix2x3fvNV(location, count, transpose, value);
22376    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22377    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22378
22379    void *pointerArgs[] = {
22380        (void *) value,
22381    };
22382
22383    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22384                              threadStartTime, threadEndTime,
22385                              &glmsg, pointerArgs);
22386    glContext->traceGLMessage(&glmsg);
22387}
22388
22389void GLTrace_glUniformMatrix3x2fvNV(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
22390    GLMessage glmsg;
22391    GLTraceContext *glContext = getGLTraceContext();
22392
22393    glmsg.set_function(GLMessage::glUniformMatrix3x2fvNV);
22394
22395    // copy argument location
22396    GLMessage_DataType *arg_location = glmsg.add_args();
22397    arg_location->set_isarray(false);
22398    arg_location->set_type(GLMessage::DataType::INT);
22399    arg_location->add_intvalue(location);
22400
22401    // copy argument count
22402    GLMessage_DataType *arg_count = glmsg.add_args();
22403    arg_count->set_isarray(false);
22404    arg_count->set_type(GLMessage::DataType::INT);
22405    arg_count->add_intvalue(count);
22406
22407    // copy argument transpose
22408    GLMessage_DataType *arg_transpose = glmsg.add_args();
22409    arg_transpose->set_isarray(false);
22410    arg_transpose->set_type(GLMessage::DataType::BOOL);
22411    arg_transpose->add_boolvalue(transpose);
22412
22413    // copy argument value
22414    GLMessage_DataType *arg_value = glmsg.add_args();
22415    arg_value->set_isarray(false);
22416    arg_value->set_type(GLMessage::DataType::INT64);
22417    arg_value->add_int64value((uintptr_t)value);
22418
22419    // call function
22420    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22421    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22422    glContext->hooks->gl.glUniformMatrix3x2fvNV(location, count, transpose, value);
22423    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22424    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22425
22426    void *pointerArgs[] = {
22427        (void *) value,
22428    };
22429
22430    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22431                              threadStartTime, threadEndTime,
22432                              &glmsg, pointerArgs);
22433    glContext->traceGLMessage(&glmsg);
22434}
22435
22436void GLTrace_glUniformMatrix2x4fvNV(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
22437    GLMessage glmsg;
22438    GLTraceContext *glContext = getGLTraceContext();
22439
22440    glmsg.set_function(GLMessage::glUniformMatrix2x4fvNV);
22441
22442    // copy argument location
22443    GLMessage_DataType *arg_location = glmsg.add_args();
22444    arg_location->set_isarray(false);
22445    arg_location->set_type(GLMessage::DataType::INT);
22446    arg_location->add_intvalue(location);
22447
22448    // copy argument count
22449    GLMessage_DataType *arg_count = glmsg.add_args();
22450    arg_count->set_isarray(false);
22451    arg_count->set_type(GLMessage::DataType::INT);
22452    arg_count->add_intvalue(count);
22453
22454    // copy argument transpose
22455    GLMessage_DataType *arg_transpose = glmsg.add_args();
22456    arg_transpose->set_isarray(false);
22457    arg_transpose->set_type(GLMessage::DataType::BOOL);
22458    arg_transpose->add_boolvalue(transpose);
22459
22460    // copy argument value
22461    GLMessage_DataType *arg_value = glmsg.add_args();
22462    arg_value->set_isarray(false);
22463    arg_value->set_type(GLMessage::DataType::INT64);
22464    arg_value->add_int64value((uintptr_t)value);
22465
22466    // call function
22467    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22468    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22469    glContext->hooks->gl.glUniformMatrix2x4fvNV(location, count, transpose, value);
22470    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22471    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22472
22473    void *pointerArgs[] = {
22474        (void *) value,
22475    };
22476
22477    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22478                              threadStartTime, threadEndTime,
22479                              &glmsg, pointerArgs);
22480    glContext->traceGLMessage(&glmsg);
22481}
22482
22483void GLTrace_glUniformMatrix4x2fvNV(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
22484    GLMessage glmsg;
22485    GLTraceContext *glContext = getGLTraceContext();
22486
22487    glmsg.set_function(GLMessage::glUniformMatrix4x2fvNV);
22488
22489    // copy argument location
22490    GLMessage_DataType *arg_location = glmsg.add_args();
22491    arg_location->set_isarray(false);
22492    arg_location->set_type(GLMessage::DataType::INT);
22493    arg_location->add_intvalue(location);
22494
22495    // copy argument count
22496    GLMessage_DataType *arg_count = glmsg.add_args();
22497    arg_count->set_isarray(false);
22498    arg_count->set_type(GLMessage::DataType::INT);
22499    arg_count->add_intvalue(count);
22500
22501    // copy argument transpose
22502    GLMessage_DataType *arg_transpose = glmsg.add_args();
22503    arg_transpose->set_isarray(false);
22504    arg_transpose->set_type(GLMessage::DataType::BOOL);
22505    arg_transpose->add_boolvalue(transpose);
22506
22507    // copy argument value
22508    GLMessage_DataType *arg_value = glmsg.add_args();
22509    arg_value->set_isarray(false);
22510    arg_value->set_type(GLMessage::DataType::INT64);
22511    arg_value->add_int64value((uintptr_t)value);
22512
22513    // call function
22514    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22515    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22516    glContext->hooks->gl.glUniformMatrix4x2fvNV(location, count, transpose, value);
22517    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22518    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22519
22520    void *pointerArgs[] = {
22521        (void *) value,
22522    };
22523
22524    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22525                              threadStartTime, threadEndTime,
22526                              &glmsg, pointerArgs);
22527    glContext->traceGLMessage(&glmsg);
22528}
22529
22530void GLTrace_glUniformMatrix3x4fvNV(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
22531    GLMessage glmsg;
22532    GLTraceContext *glContext = getGLTraceContext();
22533
22534    glmsg.set_function(GLMessage::glUniformMatrix3x4fvNV);
22535
22536    // copy argument location
22537    GLMessage_DataType *arg_location = glmsg.add_args();
22538    arg_location->set_isarray(false);
22539    arg_location->set_type(GLMessage::DataType::INT);
22540    arg_location->add_intvalue(location);
22541
22542    // copy argument count
22543    GLMessage_DataType *arg_count = glmsg.add_args();
22544    arg_count->set_isarray(false);
22545    arg_count->set_type(GLMessage::DataType::INT);
22546    arg_count->add_intvalue(count);
22547
22548    // copy argument transpose
22549    GLMessage_DataType *arg_transpose = glmsg.add_args();
22550    arg_transpose->set_isarray(false);
22551    arg_transpose->set_type(GLMessage::DataType::BOOL);
22552    arg_transpose->add_boolvalue(transpose);
22553
22554    // copy argument value
22555    GLMessage_DataType *arg_value = glmsg.add_args();
22556    arg_value->set_isarray(false);
22557    arg_value->set_type(GLMessage::DataType::INT64);
22558    arg_value->add_int64value((uintptr_t)value);
22559
22560    // call function
22561    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22562    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22563    glContext->hooks->gl.glUniformMatrix3x4fvNV(location, count, transpose, value);
22564    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22565    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22566
22567    void *pointerArgs[] = {
22568        (void *) value,
22569    };
22570
22571    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22572                              threadStartTime, threadEndTime,
22573                              &glmsg, pointerArgs);
22574    glContext->traceGLMessage(&glmsg);
22575}
22576
22577void GLTrace_glUniformMatrix4x3fvNV(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {
22578    GLMessage glmsg;
22579    GLTraceContext *glContext = getGLTraceContext();
22580
22581    glmsg.set_function(GLMessage::glUniformMatrix4x3fvNV);
22582
22583    // copy argument location
22584    GLMessage_DataType *arg_location = glmsg.add_args();
22585    arg_location->set_isarray(false);
22586    arg_location->set_type(GLMessage::DataType::INT);
22587    arg_location->add_intvalue(location);
22588
22589    // copy argument count
22590    GLMessage_DataType *arg_count = glmsg.add_args();
22591    arg_count->set_isarray(false);
22592    arg_count->set_type(GLMessage::DataType::INT);
22593    arg_count->add_intvalue(count);
22594
22595    // copy argument transpose
22596    GLMessage_DataType *arg_transpose = glmsg.add_args();
22597    arg_transpose->set_isarray(false);
22598    arg_transpose->set_type(GLMessage::DataType::BOOL);
22599    arg_transpose->add_boolvalue(transpose);
22600
22601    // copy argument value
22602    GLMessage_DataType *arg_value = glmsg.add_args();
22603    arg_value->set_isarray(false);
22604    arg_value->set_type(GLMessage::DataType::INT64);
22605    arg_value->add_int64value((uintptr_t)value);
22606
22607    // call function
22608    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22609    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22610    glContext->hooks->gl.glUniformMatrix4x3fvNV(location, count, transpose, value);
22611    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22612    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22613
22614    void *pointerArgs[] = {
22615        (void *) value,
22616    };
22617
22618    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22619                              threadStartTime, threadEndTime,
22620                              &glmsg, pointerArgs);
22621    glContext->traceGLMessage(&glmsg);
22622}
22623
22624void GLTrace_glReadBufferNV(GLenum mode) {
22625    GLMessage glmsg;
22626    GLTraceContext *glContext = getGLTraceContext();
22627
22628    glmsg.set_function(GLMessage::glReadBufferNV);
22629
22630    // copy argument mode
22631    GLMessage_DataType *arg_mode = glmsg.add_args();
22632    arg_mode->set_isarray(false);
22633    arg_mode->set_type(GLMessage::DataType::ENUM);
22634    arg_mode->add_intvalue((int)mode);
22635
22636    // call function
22637    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22638    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22639    glContext->hooks->gl.glReadBufferNV(mode);
22640    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22641    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22642
22643    void *pointerArgs[] = {
22644    };
22645
22646    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22647                              threadStartTime, threadEndTime,
22648                              &glmsg, pointerArgs);
22649    glContext->traceGLMessage(&glmsg);
22650}
22651
22652void GLTrace_glAlphaFuncQCOM(GLenum func, GLclampf ref) {
22653    GLMessage glmsg;
22654    GLTraceContext *glContext = getGLTraceContext();
22655
22656    glmsg.set_function(GLMessage::glAlphaFuncQCOM);
22657
22658    // copy argument func
22659    GLMessage_DataType *arg_func = glmsg.add_args();
22660    arg_func->set_isarray(false);
22661    arg_func->set_type(GLMessage::DataType::ENUM);
22662    arg_func->add_intvalue((int)func);
22663
22664    // copy argument ref
22665    GLMessage_DataType *arg_ref = glmsg.add_args();
22666    arg_ref->set_isarray(false);
22667    arg_ref->set_type(GLMessage::DataType::FLOAT);
22668    arg_ref->add_floatvalue(ref);
22669
22670    // call function
22671    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22672    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22673    glContext->hooks->gl.glAlphaFuncQCOM(func, ref);
22674    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22675    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22676
22677    void *pointerArgs[] = {
22678    };
22679
22680    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22681                              threadStartTime, threadEndTime,
22682                              &glmsg, pointerArgs);
22683    glContext->traceGLMessage(&glmsg);
22684}
22685
22686void GLTrace_glGetDriverControlsQCOM(GLint * num, GLsizei size, GLuint * driverControls) {
22687    GLMessage glmsg;
22688    GLTraceContext *glContext = getGLTraceContext();
22689
22690    glmsg.set_function(GLMessage::glGetDriverControlsQCOM);
22691
22692    // copy argument num
22693    GLMessage_DataType *arg_num = glmsg.add_args();
22694    arg_num->set_isarray(false);
22695    arg_num->set_type(GLMessage::DataType::INT64);
22696    arg_num->add_int64value((uintptr_t)num);
22697
22698    // copy argument size
22699    GLMessage_DataType *arg_size = glmsg.add_args();
22700    arg_size->set_isarray(false);
22701    arg_size->set_type(GLMessage::DataType::INT);
22702    arg_size->add_intvalue(size);
22703
22704    // copy argument driverControls
22705    GLMessage_DataType *arg_driverControls = glmsg.add_args();
22706    arg_driverControls->set_isarray(false);
22707    arg_driverControls->set_type(GLMessage::DataType::INT64);
22708    arg_driverControls->add_int64value((uintptr_t)driverControls);
22709
22710    // call function
22711    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22712    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22713    glContext->hooks->gl.glGetDriverControlsQCOM(num, size, driverControls);
22714    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22715    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22716
22717    void *pointerArgs[] = {
22718        (void *) num,
22719        (void *) driverControls,
22720    };
22721
22722    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22723                              threadStartTime, threadEndTime,
22724                              &glmsg, pointerArgs);
22725    glContext->traceGLMessage(&glmsg);
22726}
22727
22728void GLTrace_glGetDriverControlStringQCOM(GLuint driverControl, GLsizei bufSize, GLsizei * length, GLchar * driverControlString) {
22729    GLMessage glmsg;
22730    GLTraceContext *glContext = getGLTraceContext();
22731
22732    glmsg.set_function(GLMessage::glGetDriverControlStringQCOM);
22733
22734    // copy argument driverControl
22735    GLMessage_DataType *arg_driverControl = glmsg.add_args();
22736    arg_driverControl->set_isarray(false);
22737    arg_driverControl->set_type(GLMessage::DataType::INT);
22738    arg_driverControl->add_intvalue(driverControl);
22739
22740    // copy argument bufSize
22741    GLMessage_DataType *arg_bufSize = glmsg.add_args();
22742    arg_bufSize->set_isarray(false);
22743    arg_bufSize->set_type(GLMessage::DataType::INT);
22744    arg_bufSize->add_intvalue(bufSize);
22745
22746    // copy argument length
22747    GLMessage_DataType *arg_length = glmsg.add_args();
22748    arg_length->set_isarray(false);
22749    arg_length->set_type(GLMessage::DataType::INT64);
22750    arg_length->add_int64value((uintptr_t)length);
22751
22752    // copy argument driverControlString
22753    GLMessage_DataType *arg_driverControlString = glmsg.add_args();
22754    arg_driverControlString->set_isarray(false);
22755    arg_driverControlString->set_type(GLMessage::DataType::INT64);
22756    arg_driverControlString->add_int64value((uintptr_t)driverControlString);
22757
22758    // call function
22759    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22760    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22761    glContext->hooks->gl.glGetDriverControlStringQCOM(driverControl, bufSize, length, driverControlString);
22762    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22763    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22764
22765    void *pointerArgs[] = {
22766        (void *) length,
22767        (void *) driverControlString,
22768    };
22769
22770    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22771                              threadStartTime, threadEndTime,
22772                              &glmsg, pointerArgs);
22773    glContext->traceGLMessage(&glmsg);
22774}
22775
22776void GLTrace_glEnableDriverControlQCOM(GLuint driverControl) {
22777    GLMessage glmsg;
22778    GLTraceContext *glContext = getGLTraceContext();
22779
22780    glmsg.set_function(GLMessage::glEnableDriverControlQCOM);
22781
22782    // copy argument driverControl
22783    GLMessage_DataType *arg_driverControl = glmsg.add_args();
22784    arg_driverControl->set_isarray(false);
22785    arg_driverControl->set_type(GLMessage::DataType::INT);
22786    arg_driverControl->add_intvalue(driverControl);
22787
22788    // call function
22789    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22790    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22791    glContext->hooks->gl.glEnableDriverControlQCOM(driverControl);
22792    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22793    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22794
22795    void *pointerArgs[] = {
22796    };
22797
22798    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22799                              threadStartTime, threadEndTime,
22800                              &glmsg, pointerArgs);
22801    glContext->traceGLMessage(&glmsg);
22802}
22803
22804void GLTrace_glDisableDriverControlQCOM(GLuint driverControl) {
22805    GLMessage glmsg;
22806    GLTraceContext *glContext = getGLTraceContext();
22807
22808    glmsg.set_function(GLMessage::glDisableDriverControlQCOM);
22809
22810    // copy argument driverControl
22811    GLMessage_DataType *arg_driverControl = glmsg.add_args();
22812    arg_driverControl->set_isarray(false);
22813    arg_driverControl->set_type(GLMessage::DataType::INT);
22814    arg_driverControl->add_intvalue(driverControl);
22815
22816    // call function
22817    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22818    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22819    glContext->hooks->gl.glDisableDriverControlQCOM(driverControl);
22820    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22821    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22822
22823    void *pointerArgs[] = {
22824    };
22825
22826    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22827                              threadStartTime, threadEndTime,
22828                              &glmsg, pointerArgs);
22829    glContext->traceGLMessage(&glmsg);
22830}
22831
22832void GLTrace_glExtGetTexturesQCOM(GLuint * textures, GLint maxTextures, GLint * numTextures) {
22833    GLMessage glmsg;
22834    GLTraceContext *glContext = getGLTraceContext();
22835
22836    glmsg.set_function(GLMessage::glExtGetTexturesQCOM);
22837
22838    // copy argument textures
22839    GLMessage_DataType *arg_textures = glmsg.add_args();
22840    arg_textures->set_isarray(false);
22841    arg_textures->set_type(GLMessage::DataType::INT64);
22842    arg_textures->add_int64value((uintptr_t)textures);
22843
22844    // copy argument maxTextures
22845    GLMessage_DataType *arg_maxTextures = glmsg.add_args();
22846    arg_maxTextures->set_isarray(false);
22847    arg_maxTextures->set_type(GLMessage::DataType::INT);
22848    arg_maxTextures->add_intvalue(maxTextures);
22849
22850    // copy argument numTextures
22851    GLMessage_DataType *arg_numTextures = glmsg.add_args();
22852    arg_numTextures->set_isarray(false);
22853    arg_numTextures->set_type(GLMessage::DataType::INT64);
22854    arg_numTextures->add_int64value((uintptr_t)numTextures);
22855
22856    // call function
22857    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22858    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22859    glContext->hooks->gl.glExtGetTexturesQCOM(textures, maxTextures, numTextures);
22860    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22861    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22862
22863    void *pointerArgs[] = {
22864        (void *) textures,
22865        (void *) numTextures,
22866    };
22867
22868    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22869                              threadStartTime, threadEndTime,
22870                              &glmsg, pointerArgs);
22871    glContext->traceGLMessage(&glmsg);
22872}
22873
22874void GLTrace_glExtGetBuffersQCOM(GLuint * buffers, GLint maxBuffers, GLint * numBuffers) {
22875    GLMessage glmsg;
22876    GLTraceContext *glContext = getGLTraceContext();
22877
22878    glmsg.set_function(GLMessage::glExtGetBuffersQCOM);
22879
22880    // copy argument buffers
22881    GLMessage_DataType *arg_buffers = glmsg.add_args();
22882    arg_buffers->set_isarray(false);
22883    arg_buffers->set_type(GLMessage::DataType::INT64);
22884    arg_buffers->add_int64value((uintptr_t)buffers);
22885
22886    // copy argument maxBuffers
22887    GLMessage_DataType *arg_maxBuffers = glmsg.add_args();
22888    arg_maxBuffers->set_isarray(false);
22889    arg_maxBuffers->set_type(GLMessage::DataType::INT);
22890    arg_maxBuffers->add_intvalue(maxBuffers);
22891
22892    // copy argument numBuffers
22893    GLMessage_DataType *arg_numBuffers = glmsg.add_args();
22894    arg_numBuffers->set_isarray(false);
22895    arg_numBuffers->set_type(GLMessage::DataType::INT64);
22896    arg_numBuffers->add_int64value((uintptr_t)numBuffers);
22897
22898    // call function
22899    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22900    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22901    glContext->hooks->gl.glExtGetBuffersQCOM(buffers, maxBuffers, numBuffers);
22902    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22903    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22904
22905    void *pointerArgs[] = {
22906        (void *) buffers,
22907        (void *) numBuffers,
22908    };
22909
22910    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22911                              threadStartTime, threadEndTime,
22912                              &glmsg, pointerArgs);
22913    glContext->traceGLMessage(&glmsg);
22914}
22915
22916void GLTrace_glExtGetRenderbuffersQCOM(GLuint * renderbuffers, GLint maxRenderbuffers, GLint * numRenderbuffers) {
22917    GLMessage glmsg;
22918    GLTraceContext *glContext = getGLTraceContext();
22919
22920    glmsg.set_function(GLMessage::glExtGetRenderbuffersQCOM);
22921
22922    // copy argument renderbuffers
22923    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
22924    arg_renderbuffers->set_isarray(false);
22925    arg_renderbuffers->set_type(GLMessage::DataType::INT64);
22926    arg_renderbuffers->add_int64value((uintptr_t)renderbuffers);
22927
22928    // copy argument maxRenderbuffers
22929    GLMessage_DataType *arg_maxRenderbuffers = glmsg.add_args();
22930    arg_maxRenderbuffers->set_isarray(false);
22931    arg_maxRenderbuffers->set_type(GLMessage::DataType::INT);
22932    arg_maxRenderbuffers->add_intvalue(maxRenderbuffers);
22933
22934    // copy argument numRenderbuffers
22935    GLMessage_DataType *arg_numRenderbuffers = glmsg.add_args();
22936    arg_numRenderbuffers->set_isarray(false);
22937    arg_numRenderbuffers->set_type(GLMessage::DataType::INT64);
22938    arg_numRenderbuffers->add_int64value((uintptr_t)numRenderbuffers);
22939
22940    // call function
22941    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22942    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22943    glContext->hooks->gl.glExtGetRenderbuffersQCOM(renderbuffers, maxRenderbuffers, numRenderbuffers);
22944    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22945    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22946
22947    void *pointerArgs[] = {
22948        (void *) renderbuffers,
22949        (void *) numRenderbuffers,
22950    };
22951
22952    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22953                              threadStartTime, threadEndTime,
22954                              &glmsg, pointerArgs);
22955    glContext->traceGLMessage(&glmsg);
22956}
22957
22958void GLTrace_glExtGetFramebuffersQCOM(GLuint * framebuffers, GLint maxFramebuffers, GLint * numFramebuffers) {
22959    GLMessage glmsg;
22960    GLTraceContext *glContext = getGLTraceContext();
22961
22962    glmsg.set_function(GLMessage::glExtGetFramebuffersQCOM);
22963
22964    // copy argument framebuffers
22965    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
22966    arg_framebuffers->set_isarray(false);
22967    arg_framebuffers->set_type(GLMessage::DataType::INT64);
22968    arg_framebuffers->add_int64value((uintptr_t)framebuffers);
22969
22970    // copy argument maxFramebuffers
22971    GLMessage_DataType *arg_maxFramebuffers = glmsg.add_args();
22972    arg_maxFramebuffers->set_isarray(false);
22973    arg_maxFramebuffers->set_type(GLMessage::DataType::INT);
22974    arg_maxFramebuffers->add_intvalue(maxFramebuffers);
22975
22976    // copy argument numFramebuffers
22977    GLMessage_DataType *arg_numFramebuffers = glmsg.add_args();
22978    arg_numFramebuffers->set_isarray(false);
22979    arg_numFramebuffers->set_type(GLMessage::DataType::INT64);
22980    arg_numFramebuffers->add_int64value((uintptr_t)numFramebuffers);
22981
22982    // call function
22983    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22984    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22985    glContext->hooks->gl.glExtGetFramebuffersQCOM(framebuffers, maxFramebuffers, numFramebuffers);
22986    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22987    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22988
22989    void *pointerArgs[] = {
22990        (void *) framebuffers,
22991        (void *) numFramebuffers,
22992    };
22993
22994    fixupGLMessage(glContext, wallStartTime, wallEndTime,
22995                              threadStartTime, threadEndTime,
22996                              &glmsg, pointerArgs);
22997    glContext->traceGLMessage(&glmsg);
22998}
22999
23000void GLTrace_glExtGetTexLevelParameterivQCOM(GLuint texture, GLenum face, GLint level, GLenum pname, GLint * params) {
23001    GLMessage glmsg;
23002    GLTraceContext *glContext = getGLTraceContext();
23003
23004    glmsg.set_function(GLMessage::glExtGetTexLevelParameterivQCOM);
23005
23006    // copy argument texture
23007    GLMessage_DataType *arg_texture = glmsg.add_args();
23008    arg_texture->set_isarray(false);
23009    arg_texture->set_type(GLMessage::DataType::INT);
23010    arg_texture->add_intvalue(texture);
23011
23012    // copy argument face
23013    GLMessage_DataType *arg_face = glmsg.add_args();
23014    arg_face->set_isarray(false);
23015    arg_face->set_type(GLMessage::DataType::ENUM);
23016    arg_face->add_intvalue((int)face);
23017
23018    // copy argument level
23019    GLMessage_DataType *arg_level = glmsg.add_args();
23020    arg_level->set_isarray(false);
23021    arg_level->set_type(GLMessage::DataType::INT);
23022    arg_level->add_intvalue(level);
23023
23024    // copy argument pname
23025    GLMessage_DataType *arg_pname = glmsg.add_args();
23026    arg_pname->set_isarray(false);
23027    arg_pname->set_type(GLMessage::DataType::ENUM);
23028    arg_pname->add_intvalue((int)pname);
23029
23030    // copy argument params
23031    GLMessage_DataType *arg_params = glmsg.add_args();
23032    arg_params->set_isarray(false);
23033    arg_params->set_type(GLMessage::DataType::INT64);
23034    arg_params->add_int64value((uintptr_t)params);
23035
23036    // call function
23037    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23038    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23039    glContext->hooks->gl.glExtGetTexLevelParameterivQCOM(texture, face, level, pname, params);
23040    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23041    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23042
23043    void *pointerArgs[] = {
23044        (void *) params,
23045    };
23046
23047    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23048                              threadStartTime, threadEndTime,
23049                              &glmsg, pointerArgs);
23050    glContext->traceGLMessage(&glmsg);
23051}
23052
23053void GLTrace_glExtTexObjectStateOverrideiQCOM(GLenum target, GLenum pname, GLint param) {
23054    GLMessage glmsg;
23055    GLTraceContext *glContext = getGLTraceContext();
23056
23057    glmsg.set_function(GLMessage::glExtTexObjectStateOverrideiQCOM);
23058
23059    // copy argument target
23060    GLMessage_DataType *arg_target = glmsg.add_args();
23061    arg_target->set_isarray(false);
23062    arg_target->set_type(GLMessage::DataType::ENUM);
23063    arg_target->add_intvalue((int)target);
23064
23065    // copy argument pname
23066    GLMessage_DataType *arg_pname = glmsg.add_args();
23067    arg_pname->set_isarray(false);
23068    arg_pname->set_type(GLMessage::DataType::ENUM);
23069    arg_pname->add_intvalue((int)pname);
23070
23071    // copy argument param
23072    GLMessage_DataType *arg_param = glmsg.add_args();
23073    arg_param->set_isarray(false);
23074    arg_param->set_type(GLMessage::DataType::INT);
23075    arg_param->add_intvalue(param);
23076
23077    // call function
23078    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23079    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23080    glContext->hooks->gl.glExtTexObjectStateOverrideiQCOM(target, pname, param);
23081    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23082    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23083
23084    void *pointerArgs[] = {
23085    };
23086
23087    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23088                              threadStartTime, threadEndTime,
23089                              &glmsg, pointerArgs);
23090    glContext->traceGLMessage(&glmsg);
23091}
23092
23093void GLTrace_glExtGetTexSubImageQCOM(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void * texels) {
23094    GLMessage glmsg;
23095    GLTraceContext *glContext = getGLTraceContext();
23096
23097    glmsg.set_function(GLMessage::glExtGetTexSubImageQCOM);
23098
23099    // copy argument target
23100    GLMessage_DataType *arg_target = glmsg.add_args();
23101    arg_target->set_isarray(false);
23102    arg_target->set_type(GLMessage::DataType::ENUM);
23103    arg_target->add_intvalue((int)target);
23104
23105    // copy argument level
23106    GLMessage_DataType *arg_level = glmsg.add_args();
23107    arg_level->set_isarray(false);
23108    arg_level->set_type(GLMessage::DataType::INT);
23109    arg_level->add_intvalue(level);
23110
23111    // copy argument xoffset
23112    GLMessage_DataType *arg_xoffset = glmsg.add_args();
23113    arg_xoffset->set_isarray(false);
23114    arg_xoffset->set_type(GLMessage::DataType::INT);
23115    arg_xoffset->add_intvalue(xoffset);
23116
23117    // copy argument yoffset
23118    GLMessage_DataType *arg_yoffset = glmsg.add_args();
23119    arg_yoffset->set_isarray(false);
23120    arg_yoffset->set_type(GLMessage::DataType::INT);
23121    arg_yoffset->add_intvalue(yoffset);
23122
23123    // copy argument zoffset
23124    GLMessage_DataType *arg_zoffset = glmsg.add_args();
23125    arg_zoffset->set_isarray(false);
23126    arg_zoffset->set_type(GLMessage::DataType::INT);
23127    arg_zoffset->add_intvalue(zoffset);
23128
23129    // copy argument width
23130    GLMessage_DataType *arg_width = glmsg.add_args();
23131    arg_width->set_isarray(false);
23132    arg_width->set_type(GLMessage::DataType::INT);
23133    arg_width->add_intvalue(width);
23134
23135    // copy argument height
23136    GLMessage_DataType *arg_height = glmsg.add_args();
23137    arg_height->set_isarray(false);
23138    arg_height->set_type(GLMessage::DataType::INT);
23139    arg_height->add_intvalue(height);
23140
23141    // copy argument depth
23142    GLMessage_DataType *arg_depth = glmsg.add_args();
23143    arg_depth->set_isarray(false);
23144    arg_depth->set_type(GLMessage::DataType::INT);
23145    arg_depth->add_intvalue(depth);
23146
23147    // copy argument format
23148    GLMessage_DataType *arg_format = glmsg.add_args();
23149    arg_format->set_isarray(false);
23150    arg_format->set_type(GLMessage::DataType::ENUM);
23151    arg_format->add_intvalue((int)format);
23152
23153    // copy argument type
23154    GLMessage_DataType *arg_type = glmsg.add_args();
23155    arg_type->set_isarray(false);
23156    arg_type->set_type(GLMessage::DataType::ENUM);
23157    arg_type->add_intvalue((int)type);
23158
23159    // copy argument texels
23160    GLMessage_DataType *arg_texels = glmsg.add_args();
23161    arg_texels->set_isarray(false);
23162    arg_texels->set_type(GLMessage::DataType::INT64);
23163    arg_texels->add_int64value((uintptr_t)texels);
23164
23165    // call function
23166    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23167    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23168    glContext->hooks->gl.glExtGetTexSubImageQCOM(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, texels);
23169    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23170    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23171
23172    void *pointerArgs[] = {
23173        (void *) texels,
23174    };
23175
23176    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23177                              threadStartTime, threadEndTime,
23178                              &glmsg, pointerArgs);
23179    glContext->traceGLMessage(&glmsg);
23180}
23181
23182void GLTrace_glExtGetBufferPointervQCOM(GLenum target, void ** params) {
23183    GLMessage glmsg;
23184    GLTraceContext *glContext = getGLTraceContext();
23185
23186    glmsg.set_function(GLMessage::glExtGetBufferPointervQCOM);
23187
23188    // copy argument target
23189    GLMessage_DataType *arg_target = glmsg.add_args();
23190    arg_target->set_isarray(false);
23191    arg_target->set_type(GLMessage::DataType::ENUM);
23192    arg_target->add_intvalue((int)target);
23193
23194    // copy argument params
23195    GLMessage_DataType *arg_params = glmsg.add_args();
23196    arg_params->set_isarray(false);
23197    arg_params->set_type(GLMessage::DataType::INT64);
23198    arg_params->add_int64value((uintptr_t)params);
23199
23200    // call function
23201    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23202    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23203    glContext->hooks->gl.glExtGetBufferPointervQCOM(target, params);
23204    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23205    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23206
23207    void *pointerArgs[] = {
23208        (void *) params,
23209    };
23210
23211    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23212                              threadStartTime, threadEndTime,
23213                              &glmsg, pointerArgs);
23214    glContext->traceGLMessage(&glmsg);
23215}
23216
23217void GLTrace_glExtGetShadersQCOM(GLuint * shaders, GLint maxShaders, GLint * numShaders) {
23218    GLMessage glmsg;
23219    GLTraceContext *glContext = getGLTraceContext();
23220
23221    glmsg.set_function(GLMessage::glExtGetShadersQCOM);
23222
23223    // copy argument shaders
23224    GLMessage_DataType *arg_shaders = glmsg.add_args();
23225    arg_shaders->set_isarray(false);
23226    arg_shaders->set_type(GLMessage::DataType::INT64);
23227    arg_shaders->add_int64value((uintptr_t)shaders);
23228
23229    // copy argument maxShaders
23230    GLMessage_DataType *arg_maxShaders = glmsg.add_args();
23231    arg_maxShaders->set_isarray(false);
23232    arg_maxShaders->set_type(GLMessage::DataType::INT);
23233    arg_maxShaders->add_intvalue(maxShaders);
23234
23235    // copy argument numShaders
23236    GLMessage_DataType *arg_numShaders = glmsg.add_args();
23237    arg_numShaders->set_isarray(false);
23238    arg_numShaders->set_type(GLMessage::DataType::INT64);
23239    arg_numShaders->add_int64value((uintptr_t)numShaders);
23240
23241    // call function
23242    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23243    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23244    glContext->hooks->gl.glExtGetShadersQCOM(shaders, maxShaders, numShaders);
23245    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23246    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23247
23248    void *pointerArgs[] = {
23249        (void *) shaders,
23250        (void *) numShaders,
23251    };
23252
23253    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23254                              threadStartTime, threadEndTime,
23255                              &glmsg, pointerArgs);
23256    glContext->traceGLMessage(&glmsg);
23257}
23258
23259void GLTrace_glExtGetProgramsQCOM(GLuint * programs, GLint maxPrograms, GLint * numPrograms) {
23260    GLMessage glmsg;
23261    GLTraceContext *glContext = getGLTraceContext();
23262
23263    glmsg.set_function(GLMessage::glExtGetProgramsQCOM);
23264
23265    // copy argument programs
23266    GLMessage_DataType *arg_programs = glmsg.add_args();
23267    arg_programs->set_isarray(false);
23268    arg_programs->set_type(GLMessage::DataType::INT64);
23269    arg_programs->add_int64value((uintptr_t)programs);
23270
23271    // copy argument maxPrograms
23272    GLMessage_DataType *arg_maxPrograms = glmsg.add_args();
23273    arg_maxPrograms->set_isarray(false);
23274    arg_maxPrograms->set_type(GLMessage::DataType::INT);
23275    arg_maxPrograms->add_intvalue(maxPrograms);
23276
23277    // copy argument numPrograms
23278    GLMessage_DataType *arg_numPrograms = glmsg.add_args();
23279    arg_numPrograms->set_isarray(false);
23280    arg_numPrograms->set_type(GLMessage::DataType::INT64);
23281    arg_numPrograms->add_int64value((uintptr_t)numPrograms);
23282
23283    // call function
23284    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23285    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23286    glContext->hooks->gl.glExtGetProgramsQCOM(programs, maxPrograms, numPrograms);
23287    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23288    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23289
23290    void *pointerArgs[] = {
23291        (void *) programs,
23292        (void *) numPrograms,
23293    };
23294
23295    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23296                              threadStartTime, threadEndTime,
23297                              &glmsg, pointerArgs);
23298    glContext->traceGLMessage(&glmsg);
23299}
23300
23301GLboolean GLTrace_glExtIsProgramBinaryQCOM(GLuint program) {
23302    GLMessage glmsg;
23303    GLTraceContext *glContext = getGLTraceContext();
23304
23305    glmsg.set_function(GLMessage::glExtIsProgramBinaryQCOM);
23306
23307    // copy argument program
23308    GLMessage_DataType *arg_program = glmsg.add_args();
23309    arg_program->set_isarray(false);
23310    arg_program->set_type(GLMessage::DataType::INT);
23311    arg_program->add_intvalue(program);
23312
23313    // call function
23314    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23315    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23316    GLboolean retValue = glContext->hooks->gl.glExtIsProgramBinaryQCOM(program);
23317    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23318    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23319
23320    // set return value
23321    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
23322    rt->set_isarray(false);
23323    rt->set_type(GLMessage::DataType::BOOL);
23324    rt->add_boolvalue(retValue);
23325
23326    void *pointerArgs[] = {
23327    };
23328
23329    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23330                              threadStartTime, threadEndTime,
23331                              &glmsg, pointerArgs);
23332    glContext->traceGLMessage(&glmsg);
23333
23334    return retValue;
23335}
23336
23337void GLTrace_glExtGetProgramBinarySourceQCOM(GLuint program, GLenum shadertype, GLchar * source, GLint * length) {
23338    GLMessage glmsg;
23339    GLTraceContext *glContext = getGLTraceContext();
23340
23341    glmsg.set_function(GLMessage::glExtGetProgramBinarySourceQCOM);
23342
23343    // copy argument program
23344    GLMessage_DataType *arg_program = glmsg.add_args();
23345    arg_program->set_isarray(false);
23346    arg_program->set_type(GLMessage::DataType::INT);
23347    arg_program->add_intvalue(program);
23348
23349    // copy argument shadertype
23350    GLMessage_DataType *arg_shadertype = glmsg.add_args();
23351    arg_shadertype->set_isarray(false);
23352    arg_shadertype->set_type(GLMessage::DataType::ENUM);
23353    arg_shadertype->add_intvalue((int)shadertype);
23354
23355    // copy argument source
23356    GLMessage_DataType *arg_source = glmsg.add_args();
23357    arg_source->set_isarray(false);
23358    arg_source->set_type(GLMessage::DataType::INT64);
23359    arg_source->add_int64value((uintptr_t)source);
23360
23361    // copy argument length
23362    GLMessage_DataType *arg_length = glmsg.add_args();
23363    arg_length->set_isarray(false);
23364    arg_length->set_type(GLMessage::DataType::INT64);
23365    arg_length->add_int64value((uintptr_t)length);
23366
23367    // call function
23368    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23369    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23370    glContext->hooks->gl.glExtGetProgramBinarySourceQCOM(program, shadertype, source, length);
23371    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23372    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23373
23374    void *pointerArgs[] = {
23375        (void *) source,
23376        (void *) length,
23377    };
23378
23379    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23380                              threadStartTime, threadEndTime,
23381                              &glmsg, pointerArgs);
23382    glContext->traceGLMessage(&glmsg);
23383}
23384
23385void GLTrace_glStartTilingQCOM(GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask) {
23386    GLMessage glmsg;
23387    GLTraceContext *glContext = getGLTraceContext();
23388
23389    glmsg.set_function(GLMessage::glStartTilingQCOM);
23390
23391    // copy argument x
23392    GLMessage_DataType *arg_x = glmsg.add_args();
23393    arg_x->set_isarray(false);
23394    arg_x->set_type(GLMessage::DataType::INT);
23395    arg_x->add_intvalue(x);
23396
23397    // copy argument y
23398    GLMessage_DataType *arg_y = glmsg.add_args();
23399    arg_y->set_isarray(false);
23400    arg_y->set_type(GLMessage::DataType::INT);
23401    arg_y->add_intvalue(y);
23402
23403    // copy argument width
23404    GLMessage_DataType *arg_width = glmsg.add_args();
23405    arg_width->set_isarray(false);
23406    arg_width->set_type(GLMessage::DataType::INT);
23407    arg_width->add_intvalue(width);
23408
23409    // copy argument height
23410    GLMessage_DataType *arg_height = glmsg.add_args();
23411    arg_height->set_isarray(false);
23412    arg_height->set_type(GLMessage::DataType::INT);
23413    arg_height->add_intvalue(height);
23414
23415    // copy argument preserveMask
23416    GLMessage_DataType *arg_preserveMask = glmsg.add_args();
23417    arg_preserveMask->set_isarray(false);
23418    arg_preserveMask->set_type(GLMessage::DataType::INT);
23419    arg_preserveMask->add_intvalue(preserveMask);
23420
23421    // call function
23422    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23423    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23424    glContext->hooks->gl.glStartTilingQCOM(x, y, width, height, preserveMask);
23425    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23426    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23427
23428    void *pointerArgs[] = {
23429    };
23430
23431    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23432                              threadStartTime, threadEndTime,
23433                              &glmsg, pointerArgs);
23434    glContext->traceGLMessage(&glmsg);
23435}
23436
23437void GLTrace_glEndTilingQCOM(GLbitfield preserveMask) {
23438    GLMessage glmsg;
23439    GLTraceContext *glContext = getGLTraceContext();
23440
23441    glmsg.set_function(GLMessage::glEndTilingQCOM);
23442
23443    // copy argument preserveMask
23444    GLMessage_DataType *arg_preserveMask = glmsg.add_args();
23445    arg_preserveMask->set_isarray(false);
23446    arg_preserveMask->set_type(GLMessage::DataType::INT);
23447    arg_preserveMask->add_intvalue(preserveMask);
23448
23449    // call function
23450    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23451    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23452    glContext->hooks->gl.glEndTilingQCOM(preserveMask);
23453    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23454    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23455
23456    void *pointerArgs[] = {
23457    };
23458
23459    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23460                              threadStartTime, threadEndTime,
23461                              &glmsg, pointerArgs);
23462    glContext->traceGLMessage(&glmsg);
23463}
23464
23465
23466// Definitions for GL1 APIs
23467
23468void GLTrace_glAlphaFunc(GLenum func, GLfloat ref) {
23469    GLMessage glmsg;
23470    GLTraceContext *glContext = getGLTraceContext();
23471
23472    glmsg.set_function(GLMessage::glAlphaFunc);
23473
23474    // copy argument func
23475    GLMessage_DataType *arg_func = glmsg.add_args();
23476    arg_func->set_isarray(false);
23477    arg_func->set_type(GLMessage::DataType::ENUM);
23478    arg_func->add_intvalue((int)func);
23479
23480    // copy argument ref
23481    GLMessage_DataType *arg_ref = glmsg.add_args();
23482    arg_ref->set_isarray(false);
23483    arg_ref->set_type(GLMessage::DataType::FLOAT);
23484    arg_ref->add_floatvalue(ref);
23485
23486    // call function
23487    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23488    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23489    glContext->hooks->gl.glAlphaFunc(func, ref);
23490    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23491    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23492
23493    void *pointerArgs[] = {
23494    };
23495
23496    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23497                              threadStartTime, threadEndTime,
23498                              &glmsg, pointerArgs);
23499    glContext->traceGLMessage(&glmsg);
23500}
23501
23502void GLTrace_glClipPlanef(GLenum p, const GLfloat * eqn) {
23503    GLMessage glmsg;
23504    GLTraceContext *glContext = getGLTraceContext();
23505
23506    glmsg.set_function(GLMessage::glClipPlanef);
23507
23508    // copy argument p
23509    GLMessage_DataType *arg_p = glmsg.add_args();
23510    arg_p->set_isarray(false);
23511    arg_p->set_type(GLMessage::DataType::ENUM);
23512    arg_p->add_intvalue((int)p);
23513
23514    // copy argument eqn
23515    GLMessage_DataType *arg_eqn = glmsg.add_args();
23516    arg_eqn->set_isarray(false);
23517    arg_eqn->set_type(GLMessage::DataType::INT64);
23518    arg_eqn->add_int64value((uintptr_t)eqn);
23519
23520    // call function
23521    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23522    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23523    glContext->hooks->gl.glClipPlanef(p, eqn);
23524    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23525    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23526
23527    void *pointerArgs[] = {
23528        (void *) eqn,
23529    };
23530
23531    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23532                              threadStartTime, threadEndTime,
23533                              &glmsg, pointerArgs);
23534    glContext->traceGLMessage(&glmsg);
23535}
23536
23537void GLTrace_glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) {
23538    GLMessage glmsg;
23539    GLTraceContext *glContext = getGLTraceContext();
23540
23541    glmsg.set_function(GLMessage::glColor4f);
23542
23543    // copy argument red
23544    GLMessage_DataType *arg_red = glmsg.add_args();
23545    arg_red->set_isarray(false);
23546    arg_red->set_type(GLMessage::DataType::FLOAT);
23547    arg_red->add_floatvalue(red);
23548
23549    // copy argument green
23550    GLMessage_DataType *arg_green = glmsg.add_args();
23551    arg_green->set_isarray(false);
23552    arg_green->set_type(GLMessage::DataType::FLOAT);
23553    arg_green->add_floatvalue(green);
23554
23555    // copy argument blue
23556    GLMessage_DataType *arg_blue = glmsg.add_args();
23557    arg_blue->set_isarray(false);
23558    arg_blue->set_type(GLMessage::DataType::FLOAT);
23559    arg_blue->add_floatvalue(blue);
23560
23561    // copy argument alpha
23562    GLMessage_DataType *arg_alpha = glmsg.add_args();
23563    arg_alpha->set_isarray(false);
23564    arg_alpha->set_type(GLMessage::DataType::FLOAT);
23565    arg_alpha->add_floatvalue(alpha);
23566
23567    // call function
23568    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23569    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23570    glContext->hooks->gl.glColor4f(red, green, blue, alpha);
23571    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23572    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23573
23574    void *pointerArgs[] = {
23575    };
23576
23577    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23578                              threadStartTime, threadEndTime,
23579                              &glmsg, pointerArgs);
23580    glContext->traceGLMessage(&glmsg);
23581}
23582
23583void GLTrace_glFogf(GLenum pname, GLfloat param) {
23584    GLMessage glmsg;
23585    GLTraceContext *glContext = getGLTraceContext();
23586
23587    glmsg.set_function(GLMessage::glFogf);
23588
23589    // copy argument pname
23590    GLMessage_DataType *arg_pname = glmsg.add_args();
23591    arg_pname->set_isarray(false);
23592    arg_pname->set_type(GLMessage::DataType::ENUM);
23593    arg_pname->add_intvalue((int)pname);
23594
23595    // copy argument param
23596    GLMessage_DataType *arg_param = glmsg.add_args();
23597    arg_param->set_isarray(false);
23598    arg_param->set_type(GLMessage::DataType::FLOAT);
23599    arg_param->add_floatvalue(param);
23600
23601    // call function
23602    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23603    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23604    glContext->hooks->gl.glFogf(pname, param);
23605    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23606    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23607
23608    void *pointerArgs[] = {
23609    };
23610
23611    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23612                              threadStartTime, threadEndTime,
23613                              &glmsg, pointerArgs);
23614    glContext->traceGLMessage(&glmsg);
23615}
23616
23617void GLTrace_glFogfv(GLenum pname, const GLfloat * params) {
23618    GLMessage glmsg;
23619    GLTraceContext *glContext = getGLTraceContext();
23620
23621    glmsg.set_function(GLMessage::glFogfv);
23622
23623    // copy argument pname
23624    GLMessage_DataType *arg_pname = glmsg.add_args();
23625    arg_pname->set_isarray(false);
23626    arg_pname->set_type(GLMessage::DataType::ENUM);
23627    arg_pname->add_intvalue((int)pname);
23628
23629    // copy argument params
23630    GLMessage_DataType *arg_params = glmsg.add_args();
23631    arg_params->set_isarray(false);
23632    arg_params->set_type(GLMessage::DataType::INT64);
23633    arg_params->add_int64value((uintptr_t)params);
23634
23635    // call function
23636    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23637    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23638    glContext->hooks->gl.glFogfv(pname, params);
23639    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23640    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23641
23642    void *pointerArgs[] = {
23643        (void *) params,
23644    };
23645
23646    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23647                              threadStartTime, threadEndTime,
23648                              &glmsg, pointerArgs);
23649    glContext->traceGLMessage(&glmsg);
23650}
23651
23652void GLTrace_glFrustumf(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f) {
23653    GLMessage glmsg;
23654    GLTraceContext *glContext = getGLTraceContext();
23655
23656    glmsg.set_function(GLMessage::glFrustumf);
23657
23658    // copy argument l
23659    GLMessage_DataType *arg_l = glmsg.add_args();
23660    arg_l->set_isarray(false);
23661    arg_l->set_type(GLMessage::DataType::FLOAT);
23662    arg_l->add_floatvalue(l);
23663
23664    // copy argument r
23665    GLMessage_DataType *arg_r = glmsg.add_args();
23666    arg_r->set_isarray(false);
23667    arg_r->set_type(GLMessage::DataType::FLOAT);
23668    arg_r->add_floatvalue(r);
23669
23670    // copy argument b
23671    GLMessage_DataType *arg_b = glmsg.add_args();
23672    arg_b->set_isarray(false);
23673    arg_b->set_type(GLMessage::DataType::FLOAT);
23674    arg_b->add_floatvalue(b);
23675
23676    // copy argument t
23677    GLMessage_DataType *arg_t = glmsg.add_args();
23678    arg_t->set_isarray(false);
23679    arg_t->set_type(GLMessage::DataType::FLOAT);
23680    arg_t->add_floatvalue(t);
23681
23682    // copy argument n
23683    GLMessage_DataType *arg_n = glmsg.add_args();
23684    arg_n->set_isarray(false);
23685    arg_n->set_type(GLMessage::DataType::FLOAT);
23686    arg_n->add_floatvalue(n);
23687
23688    // copy argument f
23689    GLMessage_DataType *arg_f = glmsg.add_args();
23690    arg_f->set_isarray(false);
23691    arg_f->set_type(GLMessage::DataType::FLOAT);
23692    arg_f->add_floatvalue(f);
23693
23694    // call function
23695    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23696    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23697    glContext->hooks->gl.glFrustumf(l, r, b, t, n, f);
23698    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23699    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23700
23701    void *pointerArgs[] = {
23702    };
23703
23704    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23705                              threadStartTime, threadEndTime,
23706                              &glmsg, pointerArgs);
23707    glContext->traceGLMessage(&glmsg);
23708}
23709
23710void GLTrace_glGetClipPlanef(GLenum plane, GLfloat * equation) {
23711    GLMessage glmsg;
23712    GLTraceContext *glContext = getGLTraceContext();
23713
23714    glmsg.set_function(GLMessage::glGetClipPlanef);
23715
23716    // copy argument plane
23717    GLMessage_DataType *arg_plane = glmsg.add_args();
23718    arg_plane->set_isarray(false);
23719    arg_plane->set_type(GLMessage::DataType::ENUM);
23720    arg_plane->add_intvalue((int)plane);
23721
23722    // copy argument equation
23723    GLMessage_DataType *arg_equation = glmsg.add_args();
23724    arg_equation->set_isarray(false);
23725    arg_equation->set_type(GLMessage::DataType::INT64);
23726    arg_equation->add_int64value((uintptr_t)equation);
23727
23728    // call function
23729    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23730    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23731    glContext->hooks->gl.glGetClipPlanef(plane, equation);
23732    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23733    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23734
23735    void *pointerArgs[] = {
23736        (void *) equation,
23737    };
23738
23739    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23740                              threadStartTime, threadEndTime,
23741                              &glmsg, pointerArgs);
23742    glContext->traceGLMessage(&glmsg);
23743}
23744
23745void GLTrace_glGetLightfv(GLenum light, GLenum pname, GLfloat * params) {
23746    GLMessage glmsg;
23747    GLTraceContext *glContext = getGLTraceContext();
23748
23749    glmsg.set_function(GLMessage::glGetLightfv);
23750
23751    // copy argument light
23752    GLMessage_DataType *arg_light = glmsg.add_args();
23753    arg_light->set_isarray(false);
23754    arg_light->set_type(GLMessage::DataType::ENUM);
23755    arg_light->add_intvalue((int)light);
23756
23757    // copy argument pname
23758    GLMessage_DataType *arg_pname = glmsg.add_args();
23759    arg_pname->set_isarray(false);
23760    arg_pname->set_type(GLMessage::DataType::ENUM);
23761    arg_pname->add_intvalue((int)pname);
23762
23763    // copy argument params
23764    GLMessage_DataType *arg_params = glmsg.add_args();
23765    arg_params->set_isarray(false);
23766    arg_params->set_type(GLMessage::DataType::INT64);
23767    arg_params->add_int64value((uintptr_t)params);
23768
23769    // call function
23770    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23771    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23772    glContext->hooks->gl.glGetLightfv(light, pname, params);
23773    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23774    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23775
23776    void *pointerArgs[] = {
23777        (void *) params,
23778    };
23779
23780    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23781                              threadStartTime, threadEndTime,
23782                              &glmsg, pointerArgs);
23783    glContext->traceGLMessage(&glmsg);
23784}
23785
23786void GLTrace_glGetMaterialfv(GLenum face, GLenum pname, GLfloat * params) {
23787    GLMessage glmsg;
23788    GLTraceContext *glContext = getGLTraceContext();
23789
23790    glmsg.set_function(GLMessage::glGetMaterialfv);
23791
23792    // copy argument face
23793    GLMessage_DataType *arg_face = glmsg.add_args();
23794    arg_face->set_isarray(false);
23795    arg_face->set_type(GLMessage::DataType::ENUM);
23796    arg_face->add_intvalue((int)face);
23797
23798    // copy argument pname
23799    GLMessage_DataType *arg_pname = glmsg.add_args();
23800    arg_pname->set_isarray(false);
23801    arg_pname->set_type(GLMessage::DataType::ENUM);
23802    arg_pname->add_intvalue((int)pname);
23803
23804    // copy argument params
23805    GLMessage_DataType *arg_params = glmsg.add_args();
23806    arg_params->set_isarray(false);
23807    arg_params->set_type(GLMessage::DataType::INT64);
23808    arg_params->add_int64value((uintptr_t)params);
23809
23810    // call function
23811    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23812    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23813    glContext->hooks->gl.glGetMaterialfv(face, pname, params);
23814    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23815    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23816
23817    void *pointerArgs[] = {
23818        (void *) params,
23819    };
23820
23821    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23822                              threadStartTime, threadEndTime,
23823                              &glmsg, pointerArgs);
23824    glContext->traceGLMessage(&glmsg);
23825}
23826
23827void GLTrace_glGetTexEnvfv(GLenum target, GLenum pname, GLfloat * params) {
23828    GLMessage glmsg;
23829    GLTraceContext *glContext = getGLTraceContext();
23830
23831    glmsg.set_function(GLMessage::glGetTexEnvfv);
23832
23833    // copy argument target
23834    GLMessage_DataType *arg_target = glmsg.add_args();
23835    arg_target->set_isarray(false);
23836    arg_target->set_type(GLMessage::DataType::ENUM);
23837    arg_target->add_intvalue((int)target);
23838
23839    // copy argument pname
23840    GLMessage_DataType *arg_pname = glmsg.add_args();
23841    arg_pname->set_isarray(false);
23842    arg_pname->set_type(GLMessage::DataType::ENUM);
23843    arg_pname->add_intvalue((int)pname);
23844
23845    // copy argument params
23846    GLMessage_DataType *arg_params = glmsg.add_args();
23847    arg_params->set_isarray(false);
23848    arg_params->set_type(GLMessage::DataType::INT64);
23849    arg_params->add_int64value((uintptr_t)params);
23850
23851    // call function
23852    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23853    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23854    glContext->hooks->gl.glGetTexEnvfv(target, pname, params);
23855    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23856    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23857
23858    void *pointerArgs[] = {
23859        (void *) params,
23860    };
23861
23862    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23863                              threadStartTime, threadEndTime,
23864                              &glmsg, pointerArgs);
23865    glContext->traceGLMessage(&glmsg);
23866}
23867
23868void GLTrace_glLightModelf(GLenum pname, GLfloat param) {
23869    GLMessage glmsg;
23870    GLTraceContext *glContext = getGLTraceContext();
23871
23872    glmsg.set_function(GLMessage::glLightModelf);
23873
23874    // copy argument pname
23875    GLMessage_DataType *arg_pname = glmsg.add_args();
23876    arg_pname->set_isarray(false);
23877    arg_pname->set_type(GLMessage::DataType::ENUM);
23878    arg_pname->add_intvalue((int)pname);
23879
23880    // copy argument param
23881    GLMessage_DataType *arg_param = glmsg.add_args();
23882    arg_param->set_isarray(false);
23883    arg_param->set_type(GLMessage::DataType::FLOAT);
23884    arg_param->add_floatvalue(param);
23885
23886    // call function
23887    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23888    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23889    glContext->hooks->gl.glLightModelf(pname, param);
23890    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23891    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23892
23893    void *pointerArgs[] = {
23894    };
23895
23896    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23897                              threadStartTime, threadEndTime,
23898                              &glmsg, pointerArgs);
23899    glContext->traceGLMessage(&glmsg);
23900}
23901
23902void GLTrace_glLightModelfv(GLenum pname, const GLfloat * params) {
23903    GLMessage glmsg;
23904    GLTraceContext *glContext = getGLTraceContext();
23905
23906    glmsg.set_function(GLMessage::glLightModelfv);
23907
23908    // copy argument pname
23909    GLMessage_DataType *arg_pname = glmsg.add_args();
23910    arg_pname->set_isarray(false);
23911    arg_pname->set_type(GLMessage::DataType::ENUM);
23912    arg_pname->add_intvalue((int)pname);
23913
23914    // copy argument params
23915    GLMessage_DataType *arg_params = glmsg.add_args();
23916    arg_params->set_isarray(false);
23917    arg_params->set_type(GLMessage::DataType::INT64);
23918    arg_params->add_int64value((uintptr_t)params);
23919
23920    // call function
23921    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23922    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23923    glContext->hooks->gl.glLightModelfv(pname, params);
23924    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23925    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23926
23927    void *pointerArgs[] = {
23928        (void *) params,
23929    };
23930
23931    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23932                              threadStartTime, threadEndTime,
23933                              &glmsg, pointerArgs);
23934    glContext->traceGLMessage(&glmsg);
23935}
23936
23937void GLTrace_glLightf(GLenum light, GLenum pname, GLfloat param) {
23938    GLMessage glmsg;
23939    GLTraceContext *glContext = getGLTraceContext();
23940
23941    glmsg.set_function(GLMessage::glLightf);
23942
23943    // copy argument light
23944    GLMessage_DataType *arg_light = glmsg.add_args();
23945    arg_light->set_isarray(false);
23946    arg_light->set_type(GLMessage::DataType::ENUM);
23947    arg_light->add_intvalue((int)light);
23948
23949    // copy argument pname
23950    GLMessage_DataType *arg_pname = glmsg.add_args();
23951    arg_pname->set_isarray(false);
23952    arg_pname->set_type(GLMessage::DataType::ENUM);
23953    arg_pname->add_intvalue((int)pname);
23954
23955    // copy argument param
23956    GLMessage_DataType *arg_param = glmsg.add_args();
23957    arg_param->set_isarray(false);
23958    arg_param->set_type(GLMessage::DataType::FLOAT);
23959    arg_param->add_floatvalue(param);
23960
23961    // call function
23962    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
23963    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23964    glContext->hooks->gl.glLightf(light, pname, param);
23965    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
23966    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23967
23968    void *pointerArgs[] = {
23969    };
23970
23971    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23972                              threadStartTime, threadEndTime,
23973                              &glmsg, pointerArgs);
23974    glContext->traceGLMessage(&glmsg);
23975}
23976
23977void GLTrace_glLightfv(GLenum light, GLenum pname, const GLfloat * params) {
23978    GLMessage glmsg;
23979    GLTraceContext *glContext = getGLTraceContext();
23980
23981    glmsg.set_function(GLMessage::glLightfv);
23982
23983    // copy argument light
23984    GLMessage_DataType *arg_light = glmsg.add_args();
23985    arg_light->set_isarray(false);
23986    arg_light->set_type(GLMessage::DataType::ENUM);
23987    arg_light->add_intvalue((int)light);
23988
23989    // copy argument pname
23990    GLMessage_DataType *arg_pname = glmsg.add_args();
23991    arg_pname->set_isarray(false);
23992    arg_pname->set_type(GLMessage::DataType::ENUM);
23993    arg_pname->add_intvalue((int)pname);
23994
23995    // copy argument params
23996    GLMessage_DataType *arg_params = glmsg.add_args();
23997    arg_params->set_isarray(false);
23998    arg_params->set_type(GLMessage::DataType::INT64);
23999    arg_params->add_int64value((uintptr_t)params);
24000
24001    // call function
24002    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24003    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24004    glContext->hooks->gl.glLightfv(light, pname, params);
24005    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24006    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24007
24008    void *pointerArgs[] = {
24009        (void *) params,
24010    };
24011
24012    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24013                              threadStartTime, threadEndTime,
24014                              &glmsg, pointerArgs);
24015    glContext->traceGLMessage(&glmsg);
24016}
24017
24018void GLTrace_glLoadMatrixf(const GLfloat * m) {
24019    GLMessage glmsg;
24020    GLTraceContext *glContext = getGLTraceContext();
24021
24022    glmsg.set_function(GLMessage::glLoadMatrixf);
24023
24024    // copy argument m
24025    GLMessage_DataType *arg_m = glmsg.add_args();
24026    arg_m->set_isarray(false);
24027    arg_m->set_type(GLMessage::DataType::INT64);
24028    arg_m->add_int64value((uintptr_t)m);
24029
24030    // call function
24031    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24032    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24033    glContext->hooks->gl.glLoadMatrixf(m);
24034    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24035    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24036
24037    void *pointerArgs[] = {
24038        (void *) m,
24039    };
24040
24041    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24042                              threadStartTime, threadEndTime,
24043                              &glmsg, pointerArgs);
24044    glContext->traceGLMessage(&glmsg);
24045}
24046
24047void GLTrace_glMaterialf(GLenum face, GLenum pname, GLfloat param) {
24048    GLMessage glmsg;
24049    GLTraceContext *glContext = getGLTraceContext();
24050
24051    glmsg.set_function(GLMessage::glMaterialf);
24052
24053    // copy argument face
24054    GLMessage_DataType *arg_face = glmsg.add_args();
24055    arg_face->set_isarray(false);
24056    arg_face->set_type(GLMessage::DataType::ENUM);
24057    arg_face->add_intvalue((int)face);
24058
24059    // copy argument pname
24060    GLMessage_DataType *arg_pname = glmsg.add_args();
24061    arg_pname->set_isarray(false);
24062    arg_pname->set_type(GLMessage::DataType::ENUM);
24063    arg_pname->add_intvalue((int)pname);
24064
24065    // copy argument param
24066    GLMessage_DataType *arg_param = glmsg.add_args();
24067    arg_param->set_isarray(false);
24068    arg_param->set_type(GLMessage::DataType::FLOAT);
24069    arg_param->add_floatvalue(param);
24070
24071    // call function
24072    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24073    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24074    glContext->hooks->gl.glMaterialf(face, pname, param);
24075    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24076    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24077
24078    void *pointerArgs[] = {
24079    };
24080
24081    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24082                              threadStartTime, threadEndTime,
24083                              &glmsg, pointerArgs);
24084    glContext->traceGLMessage(&glmsg);
24085}
24086
24087void GLTrace_glMaterialfv(GLenum face, GLenum pname, const GLfloat * params) {
24088    GLMessage glmsg;
24089    GLTraceContext *glContext = getGLTraceContext();
24090
24091    glmsg.set_function(GLMessage::glMaterialfv);
24092
24093    // copy argument face
24094    GLMessage_DataType *arg_face = glmsg.add_args();
24095    arg_face->set_isarray(false);
24096    arg_face->set_type(GLMessage::DataType::ENUM);
24097    arg_face->add_intvalue((int)face);
24098
24099    // copy argument pname
24100    GLMessage_DataType *arg_pname = glmsg.add_args();
24101    arg_pname->set_isarray(false);
24102    arg_pname->set_type(GLMessage::DataType::ENUM);
24103    arg_pname->add_intvalue((int)pname);
24104
24105    // copy argument params
24106    GLMessage_DataType *arg_params = glmsg.add_args();
24107    arg_params->set_isarray(false);
24108    arg_params->set_type(GLMessage::DataType::INT64);
24109    arg_params->add_int64value((uintptr_t)params);
24110
24111    // call function
24112    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24113    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24114    glContext->hooks->gl.glMaterialfv(face, pname, params);
24115    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24116    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24117
24118    void *pointerArgs[] = {
24119        (void *) params,
24120    };
24121
24122    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24123                              threadStartTime, threadEndTime,
24124                              &glmsg, pointerArgs);
24125    glContext->traceGLMessage(&glmsg);
24126}
24127
24128void GLTrace_glMultMatrixf(const GLfloat * m) {
24129    GLMessage glmsg;
24130    GLTraceContext *glContext = getGLTraceContext();
24131
24132    glmsg.set_function(GLMessage::glMultMatrixf);
24133
24134    // copy argument m
24135    GLMessage_DataType *arg_m = glmsg.add_args();
24136    arg_m->set_isarray(false);
24137    arg_m->set_type(GLMessage::DataType::INT64);
24138    arg_m->add_int64value((uintptr_t)m);
24139
24140    // call function
24141    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24142    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24143    glContext->hooks->gl.glMultMatrixf(m);
24144    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24145    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24146
24147    void *pointerArgs[] = {
24148        (void *) m,
24149    };
24150
24151    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24152                              threadStartTime, threadEndTime,
24153                              &glmsg, pointerArgs);
24154    glContext->traceGLMessage(&glmsg);
24155}
24156
24157void GLTrace_glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) {
24158    GLMessage glmsg;
24159    GLTraceContext *glContext = getGLTraceContext();
24160
24161    glmsg.set_function(GLMessage::glMultiTexCoord4f);
24162
24163    // copy argument target
24164    GLMessage_DataType *arg_target = glmsg.add_args();
24165    arg_target->set_isarray(false);
24166    arg_target->set_type(GLMessage::DataType::ENUM);
24167    arg_target->add_intvalue((int)target);
24168
24169    // copy argument s
24170    GLMessage_DataType *arg_s = glmsg.add_args();
24171    arg_s->set_isarray(false);
24172    arg_s->set_type(GLMessage::DataType::FLOAT);
24173    arg_s->add_floatvalue(s);
24174
24175    // copy argument t
24176    GLMessage_DataType *arg_t = glmsg.add_args();
24177    arg_t->set_isarray(false);
24178    arg_t->set_type(GLMessage::DataType::FLOAT);
24179    arg_t->add_floatvalue(t);
24180
24181    // copy argument r
24182    GLMessage_DataType *arg_r = glmsg.add_args();
24183    arg_r->set_isarray(false);
24184    arg_r->set_type(GLMessage::DataType::FLOAT);
24185    arg_r->add_floatvalue(r);
24186
24187    // copy argument q
24188    GLMessage_DataType *arg_q = glmsg.add_args();
24189    arg_q->set_isarray(false);
24190    arg_q->set_type(GLMessage::DataType::FLOAT);
24191    arg_q->add_floatvalue(q);
24192
24193    // call function
24194    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24195    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24196    glContext->hooks->gl.glMultiTexCoord4f(target, s, t, r, q);
24197    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24198    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24199
24200    void *pointerArgs[] = {
24201    };
24202
24203    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24204                              threadStartTime, threadEndTime,
24205                              &glmsg, pointerArgs);
24206    glContext->traceGLMessage(&glmsg);
24207}
24208
24209void GLTrace_glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) {
24210    GLMessage glmsg;
24211    GLTraceContext *glContext = getGLTraceContext();
24212
24213    glmsg.set_function(GLMessage::glNormal3f);
24214
24215    // copy argument nx
24216    GLMessage_DataType *arg_nx = glmsg.add_args();
24217    arg_nx->set_isarray(false);
24218    arg_nx->set_type(GLMessage::DataType::FLOAT);
24219    arg_nx->add_floatvalue(nx);
24220
24221    // copy argument ny
24222    GLMessage_DataType *arg_ny = glmsg.add_args();
24223    arg_ny->set_isarray(false);
24224    arg_ny->set_type(GLMessage::DataType::FLOAT);
24225    arg_ny->add_floatvalue(ny);
24226
24227    // copy argument nz
24228    GLMessage_DataType *arg_nz = glmsg.add_args();
24229    arg_nz->set_isarray(false);
24230    arg_nz->set_type(GLMessage::DataType::FLOAT);
24231    arg_nz->add_floatvalue(nz);
24232
24233    // call function
24234    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24235    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24236    glContext->hooks->gl.glNormal3f(nx, ny, nz);
24237    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24238    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24239
24240    void *pointerArgs[] = {
24241    };
24242
24243    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24244                              threadStartTime, threadEndTime,
24245                              &glmsg, pointerArgs);
24246    glContext->traceGLMessage(&glmsg);
24247}
24248
24249void GLTrace_glOrthof(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f) {
24250    GLMessage glmsg;
24251    GLTraceContext *glContext = getGLTraceContext();
24252
24253    glmsg.set_function(GLMessage::glOrthof);
24254
24255    // copy argument l
24256    GLMessage_DataType *arg_l = glmsg.add_args();
24257    arg_l->set_isarray(false);
24258    arg_l->set_type(GLMessage::DataType::FLOAT);
24259    arg_l->add_floatvalue(l);
24260
24261    // copy argument r
24262    GLMessage_DataType *arg_r = glmsg.add_args();
24263    arg_r->set_isarray(false);
24264    arg_r->set_type(GLMessage::DataType::FLOAT);
24265    arg_r->add_floatvalue(r);
24266
24267    // copy argument b
24268    GLMessage_DataType *arg_b = glmsg.add_args();
24269    arg_b->set_isarray(false);
24270    arg_b->set_type(GLMessage::DataType::FLOAT);
24271    arg_b->add_floatvalue(b);
24272
24273    // copy argument t
24274    GLMessage_DataType *arg_t = glmsg.add_args();
24275    arg_t->set_isarray(false);
24276    arg_t->set_type(GLMessage::DataType::FLOAT);
24277    arg_t->add_floatvalue(t);
24278
24279    // copy argument n
24280    GLMessage_DataType *arg_n = glmsg.add_args();
24281    arg_n->set_isarray(false);
24282    arg_n->set_type(GLMessage::DataType::FLOAT);
24283    arg_n->add_floatvalue(n);
24284
24285    // copy argument f
24286    GLMessage_DataType *arg_f = glmsg.add_args();
24287    arg_f->set_isarray(false);
24288    arg_f->set_type(GLMessage::DataType::FLOAT);
24289    arg_f->add_floatvalue(f);
24290
24291    // call function
24292    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24293    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24294    glContext->hooks->gl.glOrthof(l, r, b, t, n, f);
24295    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24296    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24297
24298    void *pointerArgs[] = {
24299    };
24300
24301    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24302                              threadStartTime, threadEndTime,
24303                              &glmsg, pointerArgs);
24304    glContext->traceGLMessage(&glmsg);
24305}
24306
24307void GLTrace_glPointParameterf(GLenum pname, GLfloat param) {
24308    GLMessage glmsg;
24309    GLTraceContext *glContext = getGLTraceContext();
24310
24311    glmsg.set_function(GLMessage::glPointParameterf);
24312
24313    // copy argument pname
24314    GLMessage_DataType *arg_pname = glmsg.add_args();
24315    arg_pname->set_isarray(false);
24316    arg_pname->set_type(GLMessage::DataType::ENUM);
24317    arg_pname->add_intvalue((int)pname);
24318
24319    // copy argument param
24320    GLMessage_DataType *arg_param = glmsg.add_args();
24321    arg_param->set_isarray(false);
24322    arg_param->set_type(GLMessage::DataType::FLOAT);
24323    arg_param->add_floatvalue(param);
24324
24325    // call function
24326    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24327    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24328    glContext->hooks->gl.glPointParameterf(pname, param);
24329    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24330    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24331
24332    void *pointerArgs[] = {
24333    };
24334
24335    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24336                              threadStartTime, threadEndTime,
24337                              &glmsg, pointerArgs);
24338    glContext->traceGLMessage(&glmsg);
24339}
24340
24341void GLTrace_glPointParameterfv(GLenum pname, const GLfloat * params) {
24342    GLMessage glmsg;
24343    GLTraceContext *glContext = getGLTraceContext();
24344
24345    glmsg.set_function(GLMessage::glPointParameterfv);
24346
24347    // copy argument pname
24348    GLMessage_DataType *arg_pname = glmsg.add_args();
24349    arg_pname->set_isarray(false);
24350    arg_pname->set_type(GLMessage::DataType::ENUM);
24351    arg_pname->add_intvalue((int)pname);
24352
24353    // copy argument params
24354    GLMessage_DataType *arg_params = glmsg.add_args();
24355    arg_params->set_isarray(false);
24356    arg_params->set_type(GLMessage::DataType::INT64);
24357    arg_params->add_int64value((uintptr_t)params);
24358
24359    // call function
24360    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24361    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24362    glContext->hooks->gl.glPointParameterfv(pname, params);
24363    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24364    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24365
24366    void *pointerArgs[] = {
24367        (void *) params,
24368    };
24369
24370    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24371                              threadStartTime, threadEndTime,
24372                              &glmsg, pointerArgs);
24373    glContext->traceGLMessage(&glmsg);
24374}
24375
24376void GLTrace_glPointSize(GLfloat size) {
24377    GLMessage glmsg;
24378    GLTraceContext *glContext = getGLTraceContext();
24379
24380    glmsg.set_function(GLMessage::glPointSize);
24381
24382    // copy argument size
24383    GLMessage_DataType *arg_size = glmsg.add_args();
24384    arg_size->set_isarray(false);
24385    arg_size->set_type(GLMessage::DataType::FLOAT);
24386    arg_size->add_floatvalue(size);
24387
24388    // call function
24389    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24390    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24391    glContext->hooks->gl.glPointSize(size);
24392    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24393    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24394
24395    void *pointerArgs[] = {
24396    };
24397
24398    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24399                              threadStartTime, threadEndTime,
24400                              &glmsg, pointerArgs);
24401    glContext->traceGLMessage(&glmsg);
24402}
24403
24404void GLTrace_glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) {
24405    GLMessage glmsg;
24406    GLTraceContext *glContext = getGLTraceContext();
24407
24408    glmsg.set_function(GLMessage::glRotatef);
24409
24410    // copy argument angle
24411    GLMessage_DataType *arg_angle = glmsg.add_args();
24412    arg_angle->set_isarray(false);
24413    arg_angle->set_type(GLMessage::DataType::FLOAT);
24414    arg_angle->add_floatvalue(angle);
24415
24416    // copy argument x
24417    GLMessage_DataType *arg_x = glmsg.add_args();
24418    arg_x->set_isarray(false);
24419    arg_x->set_type(GLMessage::DataType::FLOAT);
24420    arg_x->add_floatvalue(x);
24421
24422    // copy argument y
24423    GLMessage_DataType *arg_y = glmsg.add_args();
24424    arg_y->set_isarray(false);
24425    arg_y->set_type(GLMessage::DataType::FLOAT);
24426    arg_y->add_floatvalue(y);
24427
24428    // copy argument z
24429    GLMessage_DataType *arg_z = glmsg.add_args();
24430    arg_z->set_isarray(false);
24431    arg_z->set_type(GLMessage::DataType::FLOAT);
24432    arg_z->add_floatvalue(z);
24433
24434    // call function
24435    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24436    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24437    glContext->hooks->gl.glRotatef(angle, x, y, z);
24438    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24439    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24440
24441    void *pointerArgs[] = {
24442    };
24443
24444    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24445                              threadStartTime, threadEndTime,
24446                              &glmsg, pointerArgs);
24447    glContext->traceGLMessage(&glmsg);
24448}
24449
24450void GLTrace_glScalef(GLfloat x, GLfloat y, GLfloat z) {
24451    GLMessage glmsg;
24452    GLTraceContext *glContext = getGLTraceContext();
24453
24454    glmsg.set_function(GLMessage::glScalef);
24455
24456    // copy argument x
24457    GLMessage_DataType *arg_x = glmsg.add_args();
24458    arg_x->set_isarray(false);
24459    arg_x->set_type(GLMessage::DataType::FLOAT);
24460    arg_x->add_floatvalue(x);
24461
24462    // copy argument y
24463    GLMessage_DataType *arg_y = glmsg.add_args();
24464    arg_y->set_isarray(false);
24465    arg_y->set_type(GLMessage::DataType::FLOAT);
24466    arg_y->add_floatvalue(y);
24467
24468    // copy argument z
24469    GLMessage_DataType *arg_z = glmsg.add_args();
24470    arg_z->set_isarray(false);
24471    arg_z->set_type(GLMessage::DataType::FLOAT);
24472    arg_z->add_floatvalue(z);
24473
24474    // call function
24475    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24476    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24477    glContext->hooks->gl.glScalef(x, y, z);
24478    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24479    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24480
24481    void *pointerArgs[] = {
24482    };
24483
24484    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24485                              threadStartTime, threadEndTime,
24486                              &glmsg, pointerArgs);
24487    glContext->traceGLMessage(&glmsg);
24488}
24489
24490void GLTrace_glTexEnvf(GLenum target, GLenum pname, GLfloat param) {
24491    GLMessage glmsg;
24492    GLTraceContext *glContext = getGLTraceContext();
24493
24494    glmsg.set_function(GLMessage::glTexEnvf);
24495
24496    // copy argument target
24497    GLMessage_DataType *arg_target = glmsg.add_args();
24498    arg_target->set_isarray(false);
24499    arg_target->set_type(GLMessage::DataType::ENUM);
24500    arg_target->add_intvalue((int)target);
24501
24502    // copy argument pname
24503    GLMessage_DataType *arg_pname = glmsg.add_args();
24504    arg_pname->set_isarray(false);
24505    arg_pname->set_type(GLMessage::DataType::ENUM);
24506    arg_pname->add_intvalue((int)pname);
24507
24508    // copy argument param
24509    GLMessage_DataType *arg_param = glmsg.add_args();
24510    arg_param->set_isarray(false);
24511    arg_param->set_type(GLMessage::DataType::FLOAT);
24512    arg_param->add_floatvalue(param);
24513
24514    // call function
24515    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24516    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24517    glContext->hooks->gl.glTexEnvf(target, pname, param);
24518    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24519    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24520
24521    void *pointerArgs[] = {
24522    };
24523
24524    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24525                              threadStartTime, threadEndTime,
24526                              &glmsg, pointerArgs);
24527    glContext->traceGLMessage(&glmsg);
24528}
24529
24530void GLTrace_glTexEnvfv(GLenum target, GLenum pname, const GLfloat * params) {
24531    GLMessage glmsg;
24532    GLTraceContext *glContext = getGLTraceContext();
24533
24534    glmsg.set_function(GLMessage::glTexEnvfv);
24535
24536    // copy argument target
24537    GLMessage_DataType *arg_target = glmsg.add_args();
24538    arg_target->set_isarray(false);
24539    arg_target->set_type(GLMessage::DataType::ENUM);
24540    arg_target->add_intvalue((int)target);
24541
24542    // copy argument pname
24543    GLMessage_DataType *arg_pname = glmsg.add_args();
24544    arg_pname->set_isarray(false);
24545    arg_pname->set_type(GLMessage::DataType::ENUM);
24546    arg_pname->add_intvalue((int)pname);
24547
24548    // copy argument params
24549    GLMessage_DataType *arg_params = glmsg.add_args();
24550    arg_params->set_isarray(false);
24551    arg_params->set_type(GLMessage::DataType::INT64);
24552    arg_params->add_int64value((uintptr_t)params);
24553
24554    // call function
24555    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24556    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24557    glContext->hooks->gl.glTexEnvfv(target, pname, params);
24558    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24559    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24560
24561    void *pointerArgs[] = {
24562        (void *) params,
24563    };
24564
24565    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24566                              threadStartTime, threadEndTime,
24567                              &glmsg, pointerArgs);
24568    glContext->traceGLMessage(&glmsg);
24569}
24570
24571void GLTrace_glTranslatef(GLfloat x, GLfloat y, GLfloat z) {
24572    GLMessage glmsg;
24573    GLTraceContext *glContext = getGLTraceContext();
24574
24575    glmsg.set_function(GLMessage::glTranslatef);
24576
24577    // copy argument x
24578    GLMessage_DataType *arg_x = glmsg.add_args();
24579    arg_x->set_isarray(false);
24580    arg_x->set_type(GLMessage::DataType::FLOAT);
24581    arg_x->add_floatvalue(x);
24582
24583    // copy argument y
24584    GLMessage_DataType *arg_y = glmsg.add_args();
24585    arg_y->set_isarray(false);
24586    arg_y->set_type(GLMessage::DataType::FLOAT);
24587    arg_y->add_floatvalue(y);
24588
24589    // copy argument z
24590    GLMessage_DataType *arg_z = glmsg.add_args();
24591    arg_z->set_isarray(false);
24592    arg_z->set_type(GLMessage::DataType::FLOAT);
24593    arg_z->add_floatvalue(z);
24594
24595    // call function
24596    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24597    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24598    glContext->hooks->gl.glTranslatef(x, y, z);
24599    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24600    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24601
24602    void *pointerArgs[] = {
24603    };
24604
24605    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24606                              threadStartTime, threadEndTime,
24607                              &glmsg, pointerArgs);
24608    glContext->traceGLMessage(&glmsg);
24609}
24610
24611void GLTrace_glAlphaFuncx(GLenum func, GLfixed ref) {
24612    GLMessage glmsg;
24613    GLTraceContext *glContext = getGLTraceContext();
24614
24615    glmsg.set_function(GLMessage::glAlphaFuncx);
24616
24617    // copy argument func
24618    GLMessage_DataType *arg_func = glmsg.add_args();
24619    arg_func->set_isarray(false);
24620    arg_func->set_type(GLMessage::DataType::ENUM);
24621    arg_func->add_intvalue((int)func);
24622
24623    // copy argument ref
24624    GLMessage_DataType *arg_ref = glmsg.add_args();
24625    arg_ref->set_isarray(false);
24626    arg_ref->set_type(GLMessage::DataType::INT);
24627    arg_ref->add_intvalue(ref);
24628
24629    // call function
24630    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24631    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24632    glContext->hooks->gl.glAlphaFuncx(func, ref);
24633    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24634    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24635
24636    void *pointerArgs[] = {
24637    };
24638
24639    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24640                              threadStartTime, threadEndTime,
24641                              &glmsg, pointerArgs);
24642    glContext->traceGLMessage(&glmsg);
24643}
24644
24645void GLTrace_glClearColorx(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {
24646    GLMessage glmsg;
24647    GLTraceContext *glContext = getGLTraceContext();
24648
24649    glmsg.set_function(GLMessage::glClearColorx);
24650
24651    // copy argument red
24652    GLMessage_DataType *arg_red = glmsg.add_args();
24653    arg_red->set_isarray(false);
24654    arg_red->set_type(GLMessage::DataType::INT);
24655    arg_red->add_intvalue(red);
24656
24657    // copy argument green
24658    GLMessage_DataType *arg_green = glmsg.add_args();
24659    arg_green->set_isarray(false);
24660    arg_green->set_type(GLMessage::DataType::INT);
24661    arg_green->add_intvalue(green);
24662
24663    // copy argument blue
24664    GLMessage_DataType *arg_blue = glmsg.add_args();
24665    arg_blue->set_isarray(false);
24666    arg_blue->set_type(GLMessage::DataType::INT);
24667    arg_blue->add_intvalue(blue);
24668
24669    // copy argument alpha
24670    GLMessage_DataType *arg_alpha = glmsg.add_args();
24671    arg_alpha->set_isarray(false);
24672    arg_alpha->set_type(GLMessage::DataType::INT);
24673    arg_alpha->add_intvalue(alpha);
24674
24675    // call function
24676    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24677    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24678    glContext->hooks->gl.glClearColorx(red, green, blue, alpha);
24679    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24680    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24681
24682    void *pointerArgs[] = {
24683    };
24684
24685    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24686                              threadStartTime, threadEndTime,
24687                              &glmsg, pointerArgs);
24688    glContext->traceGLMessage(&glmsg);
24689}
24690
24691void GLTrace_glClearDepthx(GLfixed depth) {
24692    GLMessage glmsg;
24693    GLTraceContext *glContext = getGLTraceContext();
24694
24695    glmsg.set_function(GLMessage::glClearDepthx);
24696
24697    // copy argument depth
24698    GLMessage_DataType *arg_depth = glmsg.add_args();
24699    arg_depth->set_isarray(false);
24700    arg_depth->set_type(GLMessage::DataType::INT);
24701    arg_depth->add_intvalue(depth);
24702
24703    // call function
24704    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24705    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24706    glContext->hooks->gl.glClearDepthx(depth);
24707    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24708    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24709
24710    void *pointerArgs[] = {
24711    };
24712
24713    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24714                              threadStartTime, threadEndTime,
24715                              &glmsg, pointerArgs);
24716    glContext->traceGLMessage(&glmsg);
24717}
24718
24719void GLTrace_glClientActiveTexture(GLenum texture) {
24720    GLMessage glmsg;
24721    GLTraceContext *glContext = getGLTraceContext();
24722
24723    glmsg.set_function(GLMessage::glClientActiveTexture);
24724
24725    // copy argument texture
24726    GLMessage_DataType *arg_texture = glmsg.add_args();
24727    arg_texture->set_isarray(false);
24728    arg_texture->set_type(GLMessage::DataType::ENUM);
24729    arg_texture->add_intvalue((int)texture);
24730
24731    // call function
24732    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24733    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24734    glContext->hooks->gl.glClientActiveTexture(texture);
24735    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24736    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24737
24738    void *pointerArgs[] = {
24739    };
24740
24741    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24742                              threadStartTime, threadEndTime,
24743                              &glmsg, pointerArgs);
24744    glContext->traceGLMessage(&glmsg);
24745}
24746
24747void GLTrace_glClipPlanex(GLenum plane, const GLfixed * equation) {
24748    GLMessage glmsg;
24749    GLTraceContext *glContext = getGLTraceContext();
24750
24751    glmsg.set_function(GLMessage::glClipPlanex);
24752
24753    // copy argument plane
24754    GLMessage_DataType *arg_plane = glmsg.add_args();
24755    arg_plane->set_isarray(false);
24756    arg_plane->set_type(GLMessage::DataType::ENUM);
24757    arg_plane->add_intvalue((int)plane);
24758
24759    // copy argument equation
24760    GLMessage_DataType *arg_equation = glmsg.add_args();
24761    arg_equation->set_isarray(false);
24762    arg_equation->set_type(GLMessage::DataType::INT64);
24763    arg_equation->add_int64value((uintptr_t)equation);
24764
24765    // call function
24766    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24767    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24768    glContext->hooks->gl.glClipPlanex(plane, equation);
24769    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24770    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24771
24772    void *pointerArgs[] = {
24773        (void *) equation,
24774    };
24775
24776    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24777                              threadStartTime, threadEndTime,
24778                              &glmsg, pointerArgs);
24779    glContext->traceGLMessage(&glmsg);
24780}
24781
24782void GLTrace_glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) {
24783    GLMessage glmsg;
24784    GLTraceContext *glContext = getGLTraceContext();
24785
24786    glmsg.set_function(GLMessage::glColor4ub);
24787
24788    // copy argument red
24789    GLMessage_DataType *arg_red = glmsg.add_args();
24790    arg_red->set_isarray(false);
24791    arg_red->set_type(GLMessage::DataType::BYTE);
24792    arg_red->add_intvalue((int)red);
24793
24794    // copy argument green
24795    GLMessage_DataType *arg_green = glmsg.add_args();
24796    arg_green->set_isarray(false);
24797    arg_green->set_type(GLMessage::DataType::BYTE);
24798    arg_green->add_intvalue((int)green);
24799
24800    // copy argument blue
24801    GLMessage_DataType *arg_blue = glmsg.add_args();
24802    arg_blue->set_isarray(false);
24803    arg_blue->set_type(GLMessage::DataType::BYTE);
24804    arg_blue->add_intvalue((int)blue);
24805
24806    // copy argument alpha
24807    GLMessage_DataType *arg_alpha = glmsg.add_args();
24808    arg_alpha->set_isarray(false);
24809    arg_alpha->set_type(GLMessage::DataType::BYTE);
24810    arg_alpha->add_intvalue((int)alpha);
24811
24812    // call function
24813    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24814    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24815    glContext->hooks->gl.glColor4ub(red, green, blue, alpha);
24816    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24817    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24818
24819    void *pointerArgs[] = {
24820    };
24821
24822    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24823                              threadStartTime, threadEndTime,
24824                              &glmsg, pointerArgs);
24825    glContext->traceGLMessage(&glmsg);
24826}
24827
24828void GLTrace_glColor4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {
24829    GLMessage glmsg;
24830    GLTraceContext *glContext = getGLTraceContext();
24831
24832    glmsg.set_function(GLMessage::glColor4x);
24833
24834    // copy argument red
24835    GLMessage_DataType *arg_red = glmsg.add_args();
24836    arg_red->set_isarray(false);
24837    arg_red->set_type(GLMessage::DataType::INT);
24838    arg_red->add_intvalue(red);
24839
24840    // copy argument green
24841    GLMessage_DataType *arg_green = glmsg.add_args();
24842    arg_green->set_isarray(false);
24843    arg_green->set_type(GLMessage::DataType::INT);
24844    arg_green->add_intvalue(green);
24845
24846    // copy argument blue
24847    GLMessage_DataType *arg_blue = glmsg.add_args();
24848    arg_blue->set_isarray(false);
24849    arg_blue->set_type(GLMessage::DataType::INT);
24850    arg_blue->add_intvalue(blue);
24851
24852    // copy argument alpha
24853    GLMessage_DataType *arg_alpha = glmsg.add_args();
24854    arg_alpha->set_isarray(false);
24855    arg_alpha->set_type(GLMessage::DataType::INT);
24856    arg_alpha->add_intvalue(alpha);
24857
24858    // call function
24859    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24860    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24861    glContext->hooks->gl.glColor4x(red, green, blue, alpha);
24862    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24863    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24864
24865    void *pointerArgs[] = {
24866    };
24867
24868    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24869                              threadStartTime, threadEndTime,
24870                              &glmsg, pointerArgs);
24871    glContext->traceGLMessage(&glmsg);
24872}
24873
24874void GLTrace_glColorPointer(GLint size, GLenum type, GLsizei stride, const void * pointer) {
24875    GLMessage glmsg;
24876    GLTraceContext *glContext = getGLTraceContext();
24877
24878    glmsg.set_function(GLMessage::glColorPointer);
24879
24880    // copy argument size
24881    GLMessage_DataType *arg_size = glmsg.add_args();
24882    arg_size->set_isarray(false);
24883    arg_size->set_type(GLMessage::DataType::INT);
24884    arg_size->add_intvalue(size);
24885
24886    // copy argument type
24887    GLMessage_DataType *arg_type = glmsg.add_args();
24888    arg_type->set_isarray(false);
24889    arg_type->set_type(GLMessage::DataType::ENUM);
24890    arg_type->add_intvalue((int)type);
24891
24892    // copy argument stride
24893    GLMessage_DataType *arg_stride = glmsg.add_args();
24894    arg_stride->set_isarray(false);
24895    arg_stride->set_type(GLMessage::DataType::INT);
24896    arg_stride->add_intvalue(stride);
24897
24898    // copy argument pointer
24899    GLMessage_DataType *arg_pointer = glmsg.add_args();
24900    arg_pointer->set_isarray(false);
24901    arg_pointer->set_type(GLMessage::DataType::INT64);
24902    arg_pointer->add_int64value((uintptr_t)pointer);
24903
24904    // call function
24905    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24906    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24907    glContext->hooks->gl.glColorPointer(size, type, stride, pointer);
24908    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24909    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24910
24911    void *pointerArgs[] = {
24912        (void *) pointer,
24913    };
24914
24915    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24916                              threadStartTime, threadEndTime,
24917                              &glmsg, pointerArgs);
24918    glContext->traceGLMessage(&glmsg);
24919}
24920
24921void GLTrace_glDepthRangex(GLfixed n, GLfixed f) {
24922    GLMessage glmsg;
24923    GLTraceContext *glContext = getGLTraceContext();
24924
24925    glmsg.set_function(GLMessage::glDepthRangex);
24926
24927    // copy argument n
24928    GLMessage_DataType *arg_n = glmsg.add_args();
24929    arg_n->set_isarray(false);
24930    arg_n->set_type(GLMessage::DataType::INT);
24931    arg_n->add_intvalue(n);
24932
24933    // copy argument f
24934    GLMessage_DataType *arg_f = glmsg.add_args();
24935    arg_f->set_isarray(false);
24936    arg_f->set_type(GLMessage::DataType::INT);
24937    arg_f->add_intvalue(f);
24938
24939    // call function
24940    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24941    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24942    glContext->hooks->gl.glDepthRangex(n, f);
24943    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24944    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24945
24946    void *pointerArgs[] = {
24947    };
24948
24949    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24950                              threadStartTime, threadEndTime,
24951                              &glmsg, pointerArgs);
24952    glContext->traceGLMessage(&glmsg);
24953}
24954
24955void GLTrace_glDisableClientState(GLenum array) {
24956    GLMessage glmsg;
24957    GLTraceContext *glContext = getGLTraceContext();
24958
24959    glmsg.set_function(GLMessage::glDisableClientState);
24960
24961    // copy argument array
24962    GLMessage_DataType *arg_array = glmsg.add_args();
24963    arg_array->set_isarray(false);
24964    arg_array->set_type(GLMessage::DataType::ENUM);
24965    arg_array->add_intvalue((int)array);
24966
24967    // call function
24968    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24969    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24970    glContext->hooks->gl.glDisableClientState(array);
24971    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
24972    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24973
24974    void *pointerArgs[] = {
24975    };
24976
24977    fixupGLMessage(glContext, wallStartTime, wallEndTime,
24978                              threadStartTime, threadEndTime,
24979                              &glmsg, pointerArgs);
24980    glContext->traceGLMessage(&glmsg);
24981}
24982
24983void GLTrace_glEnableClientState(GLenum array) {
24984    GLMessage glmsg;
24985    GLTraceContext *glContext = getGLTraceContext();
24986
24987    glmsg.set_function(GLMessage::glEnableClientState);
24988
24989    // copy argument array
24990    GLMessage_DataType *arg_array = glmsg.add_args();
24991    arg_array->set_isarray(false);
24992    arg_array->set_type(GLMessage::DataType::ENUM);
24993    arg_array->add_intvalue((int)array);
24994
24995    // call function
24996    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
24997    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24998    glContext->hooks->gl.glEnableClientState(array);
24999    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25000    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25001
25002    void *pointerArgs[] = {
25003    };
25004
25005    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25006                              threadStartTime, threadEndTime,
25007                              &glmsg, pointerArgs);
25008    glContext->traceGLMessage(&glmsg);
25009}
25010
25011void GLTrace_glFogx(GLenum pname, GLfixed param) {
25012    GLMessage glmsg;
25013    GLTraceContext *glContext = getGLTraceContext();
25014
25015    glmsg.set_function(GLMessage::glFogx);
25016
25017    // copy argument pname
25018    GLMessage_DataType *arg_pname = glmsg.add_args();
25019    arg_pname->set_isarray(false);
25020    arg_pname->set_type(GLMessage::DataType::ENUM);
25021    arg_pname->add_intvalue((int)pname);
25022
25023    // copy argument param
25024    GLMessage_DataType *arg_param = glmsg.add_args();
25025    arg_param->set_isarray(false);
25026    arg_param->set_type(GLMessage::DataType::INT);
25027    arg_param->add_intvalue(param);
25028
25029    // call function
25030    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25031    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25032    glContext->hooks->gl.glFogx(pname, param);
25033    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25034    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25035
25036    void *pointerArgs[] = {
25037    };
25038
25039    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25040                              threadStartTime, threadEndTime,
25041                              &glmsg, pointerArgs);
25042    glContext->traceGLMessage(&glmsg);
25043}
25044
25045void GLTrace_glFogxv(GLenum pname, const GLfixed * param) {
25046    GLMessage glmsg;
25047    GLTraceContext *glContext = getGLTraceContext();
25048
25049    glmsg.set_function(GLMessage::glFogxv);
25050
25051    // copy argument pname
25052    GLMessage_DataType *arg_pname = glmsg.add_args();
25053    arg_pname->set_isarray(false);
25054    arg_pname->set_type(GLMessage::DataType::ENUM);
25055    arg_pname->add_intvalue((int)pname);
25056
25057    // copy argument param
25058    GLMessage_DataType *arg_param = glmsg.add_args();
25059    arg_param->set_isarray(false);
25060    arg_param->set_type(GLMessage::DataType::INT64);
25061    arg_param->add_int64value((uintptr_t)param);
25062
25063    // call function
25064    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25065    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25066    glContext->hooks->gl.glFogxv(pname, param);
25067    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25068    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25069
25070    void *pointerArgs[] = {
25071        (void *) param,
25072    };
25073
25074    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25075                              threadStartTime, threadEndTime,
25076                              &glmsg, pointerArgs);
25077    glContext->traceGLMessage(&glmsg);
25078}
25079
25080void GLTrace_glFrustumx(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f) {
25081    GLMessage glmsg;
25082    GLTraceContext *glContext = getGLTraceContext();
25083
25084    glmsg.set_function(GLMessage::glFrustumx);
25085
25086    // copy argument l
25087    GLMessage_DataType *arg_l = glmsg.add_args();
25088    arg_l->set_isarray(false);
25089    arg_l->set_type(GLMessage::DataType::INT);
25090    arg_l->add_intvalue(l);
25091
25092    // copy argument r
25093    GLMessage_DataType *arg_r = glmsg.add_args();
25094    arg_r->set_isarray(false);
25095    arg_r->set_type(GLMessage::DataType::INT);
25096    arg_r->add_intvalue(r);
25097
25098    // copy argument b
25099    GLMessage_DataType *arg_b = glmsg.add_args();
25100    arg_b->set_isarray(false);
25101    arg_b->set_type(GLMessage::DataType::INT);
25102    arg_b->add_intvalue(b);
25103
25104    // copy argument t
25105    GLMessage_DataType *arg_t = glmsg.add_args();
25106    arg_t->set_isarray(false);
25107    arg_t->set_type(GLMessage::DataType::INT);
25108    arg_t->add_intvalue(t);
25109
25110    // copy argument n
25111    GLMessage_DataType *arg_n = glmsg.add_args();
25112    arg_n->set_isarray(false);
25113    arg_n->set_type(GLMessage::DataType::INT);
25114    arg_n->add_intvalue(n);
25115
25116    // copy argument f
25117    GLMessage_DataType *arg_f = glmsg.add_args();
25118    arg_f->set_isarray(false);
25119    arg_f->set_type(GLMessage::DataType::INT);
25120    arg_f->add_intvalue(f);
25121
25122    // call function
25123    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25124    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25125    glContext->hooks->gl.glFrustumx(l, r, b, t, n, f);
25126    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25127    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25128
25129    void *pointerArgs[] = {
25130    };
25131
25132    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25133                              threadStartTime, threadEndTime,
25134                              &glmsg, pointerArgs);
25135    glContext->traceGLMessage(&glmsg);
25136}
25137
25138void GLTrace_glGetClipPlanex(GLenum plane, GLfixed * equation) {
25139    GLMessage glmsg;
25140    GLTraceContext *glContext = getGLTraceContext();
25141
25142    glmsg.set_function(GLMessage::glGetClipPlanex);
25143
25144    // copy argument plane
25145    GLMessage_DataType *arg_plane = glmsg.add_args();
25146    arg_plane->set_isarray(false);
25147    arg_plane->set_type(GLMessage::DataType::ENUM);
25148    arg_plane->add_intvalue((int)plane);
25149
25150    // copy argument equation
25151    GLMessage_DataType *arg_equation = glmsg.add_args();
25152    arg_equation->set_isarray(false);
25153    arg_equation->set_type(GLMessage::DataType::INT64);
25154    arg_equation->add_int64value((uintptr_t)equation);
25155
25156    // call function
25157    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25158    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25159    glContext->hooks->gl.glGetClipPlanex(plane, equation);
25160    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25161    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25162
25163    void *pointerArgs[] = {
25164        (void *) equation,
25165    };
25166
25167    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25168                              threadStartTime, threadEndTime,
25169                              &glmsg, pointerArgs);
25170    glContext->traceGLMessage(&glmsg);
25171}
25172
25173void GLTrace_glGetFixedv(GLenum pname, GLfixed * params) {
25174    GLMessage glmsg;
25175    GLTraceContext *glContext = getGLTraceContext();
25176
25177    glmsg.set_function(GLMessage::glGetFixedv);
25178
25179    // copy argument pname
25180    GLMessage_DataType *arg_pname = glmsg.add_args();
25181    arg_pname->set_isarray(false);
25182    arg_pname->set_type(GLMessage::DataType::ENUM);
25183    arg_pname->add_intvalue((int)pname);
25184
25185    // copy argument params
25186    GLMessage_DataType *arg_params = glmsg.add_args();
25187    arg_params->set_isarray(false);
25188    arg_params->set_type(GLMessage::DataType::INT64);
25189    arg_params->add_int64value((uintptr_t)params);
25190
25191    // call function
25192    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25193    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25194    glContext->hooks->gl.glGetFixedv(pname, params);
25195    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25196    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25197
25198    void *pointerArgs[] = {
25199        (void *) params,
25200    };
25201
25202    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25203                              threadStartTime, threadEndTime,
25204                              &glmsg, pointerArgs);
25205    glContext->traceGLMessage(&glmsg);
25206}
25207
25208void GLTrace_glGetLightxv(GLenum light, GLenum pname, GLfixed * params) {
25209    GLMessage glmsg;
25210    GLTraceContext *glContext = getGLTraceContext();
25211
25212    glmsg.set_function(GLMessage::glGetLightxv);
25213
25214    // copy argument light
25215    GLMessage_DataType *arg_light = glmsg.add_args();
25216    arg_light->set_isarray(false);
25217    arg_light->set_type(GLMessage::DataType::ENUM);
25218    arg_light->add_intvalue((int)light);
25219
25220    // copy argument pname
25221    GLMessage_DataType *arg_pname = glmsg.add_args();
25222    arg_pname->set_isarray(false);
25223    arg_pname->set_type(GLMessage::DataType::ENUM);
25224    arg_pname->add_intvalue((int)pname);
25225
25226    // copy argument params
25227    GLMessage_DataType *arg_params = glmsg.add_args();
25228    arg_params->set_isarray(false);
25229    arg_params->set_type(GLMessage::DataType::INT64);
25230    arg_params->add_int64value((uintptr_t)params);
25231
25232    // call function
25233    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25234    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25235    glContext->hooks->gl.glGetLightxv(light, pname, params);
25236    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25237    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25238
25239    void *pointerArgs[] = {
25240        (void *) params,
25241    };
25242
25243    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25244                              threadStartTime, threadEndTime,
25245                              &glmsg, pointerArgs);
25246    glContext->traceGLMessage(&glmsg);
25247}
25248
25249void GLTrace_glGetMaterialxv(GLenum face, GLenum pname, GLfixed * params) {
25250    GLMessage glmsg;
25251    GLTraceContext *glContext = getGLTraceContext();
25252
25253    glmsg.set_function(GLMessage::glGetMaterialxv);
25254
25255    // copy argument face
25256    GLMessage_DataType *arg_face = glmsg.add_args();
25257    arg_face->set_isarray(false);
25258    arg_face->set_type(GLMessage::DataType::ENUM);
25259    arg_face->add_intvalue((int)face);
25260
25261    // copy argument pname
25262    GLMessage_DataType *arg_pname = glmsg.add_args();
25263    arg_pname->set_isarray(false);
25264    arg_pname->set_type(GLMessage::DataType::ENUM);
25265    arg_pname->add_intvalue((int)pname);
25266
25267    // copy argument params
25268    GLMessage_DataType *arg_params = glmsg.add_args();
25269    arg_params->set_isarray(false);
25270    arg_params->set_type(GLMessage::DataType::INT64);
25271    arg_params->add_int64value((uintptr_t)params);
25272
25273    // call function
25274    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25275    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25276    glContext->hooks->gl.glGetMaterialxv(face, pname, params);
25277    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25278    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25279
25280    void *pointerArgs[] = {
25281        (void *) params,
25282    };
25283
25284    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25285                              threadStartTime, threadEndTime,
25286                              &glmsg, pointerArgs);
25287    glContext->traceGLMessage(&glmsg);
25288}
25289
25290void GLTrace_glGetPointerv(GLenum pname, void ** params) {
25291    GLMessage glmsg;
25292    GLTraceContext *glContext = getGLTraceContext();
25293
25294    glmsg.set_function(GLMessage::glGetPointerv);
25295
25296    // copy argument pname
25297    GLMessage_DataType *arg_pname = glmsg.add_args();
25298    arg_pname->set_isarray(false);
25299    arg_pname->set_type(GLMessage::DataType::ENUM);
25300    arg_pname->add_intvalue((int)pname);
25301
25302    // copy argument params
25303    GLMessage_DataType *arg_params = glmsg.add_args();
25304    arg_params->set_isarray(false);
25305    arg_params->set_type(GLMessage::DataType::INT64);
25306    arg_params->add_int64value((uintptr_t)params);
25307
25308    // call function
25309    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25310    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25311    glContext->hooks->gl.glGetPointerv(pname, params);
25312    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25313    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25314
25315    void *pointerArgs[] = {
25316        (void *) params,
25317    };
25318
25319    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25320                              threadStartTime, threadEndTime,
25321                              &glmsg, pointerArgs);
25322    glContext->traceGLMessage(&glmsg);
25323}
25324
25325void GLTrace_glGetTexEnviv(GLenum target, GLenum pname, GLint * params) {
25326    GLMessage glmsg;
25327    GLTraceContext *glContext = getGLTraceContext();
25328
25329    glmsg.set_function(GLMessage::glGetTexEnviv);
25330
25331    // copy argument target
25332    GLMessage_DataType *arg_target = glmsg.add_args();
25333    arg_target->set_isarray(false);
25334    arg_target->set_type(GLMessage::DataType::ENUM);
25335    arg_target->add_intvalue((int)target);
25336
25337    // copy argument pname
25338    GLMessage_DataType *arg_pname = glmsg.add_args();
25339    arg_pname->set_isarray(false);
25340    arg_pname->set_type(GLMessage::DataType::ENUM);
25341    arg_pname->add_intvalue((int)pname);
25342
25343    // copy argument params
25344    GLMessage_DataType *arg_params = glmsg.add_args();
25345    arg_params->set_isarray(false);
25346    arg_params->set_type(GLMessage::DataType::INT64);
25347    arg_params->add_int64value((uintptr_t)params);
25348
25349    // call function
25350    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25351    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25352    glContext->hooks->gl.glGetTexEnviv(target, pname, params);
25353    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25354    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25355
25356    void *pointerArgs[] = {
25357        (void *) params,
25358    };
25359
25360    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25361                              threadStartTime, threadEndTime,
25362                              &glmsg, pointerArgs);
25363    glContext->traceGLMessage(&glmsg);
25364}
25365
25366void GLTrace_glGetTexEnvxv(GLenum target, GLenum pname, GLfixed * params) {
25367    GLMessage glmsg;
25368    GLTraceContext *glContext = getGLTraceContext();
25369
25370    glmsg.set_function(GLMessage::glGetTexEnvxv);
25371
25372    // copy argument target
25373    GLMessage_DataType *arg_target = glmsg.add_args();
25374    arg_target->set_isarray(false);
25375    arg_target->set_type(GLMessage::DataType::ENUM);
25376    arg_target->add_intvalue((int)target);
25377
25378    // copy argument pname
25379    GLMessage_DataType *arg_pname = glmsg.add_args();
25380    arg_pname->set_isarray(false);
25381    arg_pname->set_type(GLMessage::DataType::ENUM);
25382    arg_pname->add_intvalue((int)pname);
25383
25384    // copy argument params
25385    GLMessage_DataType *arg_params = glmsg.add_args();
25386    arg_params->set_isarray(false);
25387    arg_params->set_type(GLMessage::DataType::INT64);
25388    arg_params->add_int64value((uintptr_t)params);
25389
25390    // call function
25391    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25392    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25393    glContext->hooks->gl.glGetTexEnvxv(target, pname, params);
25394    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25395    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25396
25397    void *pointerArgs[] = {
25398        (void *) params,
25399    };
25400
25401    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25402                              threadStartTime, threadEndTime,
25403                              &glmsg, pointerArgs);
25404    glContext->traceGLMessage(&glmsg);
25405}
25406
25407void GLTrace_glGetTexParameterxv(GLenum target, GLenum pname, GLfixed * params) {
25408    GLMessage glmsg;
25409    GLTraceContext *glContext = getGLTraceContext();
25410
25411    glmsg.set_function(GLMessage::glGetTexParameterxv);
25412
25413    // copy argument target
25414    GLMessage_DataType *arg_target = glmsg.add_args();
25415    arg_target->set_isarray(false);
25416    arg_target->set_type(GLMessage::DataType::ENUM);
25417    arg_target->add_intvalue((int)target);
25418
25419    // copy argument pname
25420    GLMessage_DataType *arg_pname = glmsg.add_args();
25421    arg_pname->set_isarray(false);
25422    arg_pname->set_type(GLMessage::DataType::ENUM);
25423    arg_pname->add_intvalue((int)pname);
25424
25425    // copy argument params
25426    GLMessage_DataType *arg_params = glmsg.add_args();
25427    arg_params->set_isarray(false);
25428    arg_params->set_type(GLMessage::DataType::INT64);
25429    arg_params->add_int64value((uintptr_t)params);
25430
25431    // call function
25432    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25433    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25434    glContext->hooks->gl.glGetTexParameterxv(target, pname, params);
25435    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25436    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25437
25438    void *pointerArgs[] = {
25439        (void *) params,
25440    };
25441
25442    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25443                              threadStartTime, threadEndTime,
25444                              &glmsg, pointerArgs);
25445    glContext->traceGLMessage(&glmsg);
25446}
25447
25448void GLTrace_glLightModelx(GLenum pname, GLfixed param) {
25449    GLMessage glmsg;
25450    GLTraceContext *glContext = getGLTraceContext();
25451
25452    glmsg.set_function(GLMessage::glLightModelx);
25453
25454    // copy argument pname
25455    GLMessage_DataType *arg_pname = glmsg.add_args();
25456    arg_pname->set_isarray(false);
25457    arg_pname->set_type(GLMessage::DataType::ENUM);
25458    arg_pname->add_intvalue((int)pname);
25459
25460    // copy argument param
25461    GLMessage_DataType *arg_param = glmsg.add_args();
25462    arg_param->set_isarray(false);
25463    arg_param->set_type(GLMessage::DataType::INT);
25464    arg_param->add_intvalue(param);
25465
25466    // call function
25467    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25468    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25469    glContext->hooks->gl.glLightModelx(pname, param);
25470    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25471    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25472
25473    void *pointerArgs[] = {
25474    };
25475
25476    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25477                              threadStartTime, threadEndTime,
25478                              &glmsg, pointerArgs);
25479    glContext->traceGLMessage(&glmsg);
25480}
25481
25482void GLTrace_glLightModelxv(GLenum pname, const GLfixed * param) {
25483    GLMessage glmsg;
25484    GLTraceContext *glContext = getGLTraceContext();
25485
25486    glmsg.set_function(GLMessage::glLightModelxv);
25487
25488    // copy argument pname
25489    GLMessage_DataType *arg_pname = glmsg.add_args();
25490    arg_pname->set_isarray(false);
25491    arg_pname->set_type(GLMessage::DataType::ENUM);
25492    arg_pname->add_intvalue((int)pname);
25493
25494    // copy argument param
25495    GLMessage_DataType *arg_param = glmsg.add_args();
25496    arg_param->set_isarray(false);
25497    arg_param->set_type(GLMessage::DataType::INT64);
25498    arg_param->add_int64value((uintptr_t)param);
25499
25500    // call function
25501    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25502    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25503    glContext->hooks->gl.glLightModelxv(pname, param);
25504    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25505    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25506
25507    void *pointerArgs[] = {
25508        (void *) param,
25509    };
25510
25511    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25512                              threadStartTime, threadEndTime,
25513                              &glmsg, pointerArgs);
25514    glContext->traceGLMessage(&glmsg);
25515}
25516
25517void GLTrace_glLightx(GLenum light, GLenum pname, GLfixed param) {
25518    GLMessage glmsg;
25519    GLTraceContext *glContext = getGLTraceContext();
25520
25521    glmsg.set_function(GLMessage::glLightx);
25522
25523    // copy argument light
25524    GLMessage_DataType *arg_light = glmsg.add_args();
25525    arg_light->set_isarray(false);
25526    arg_light->set_type(GLMessage::DataType::ENUM);
25527    arg_light->add_intvalue((int)light);
25528
25529    // copy argument pname
25530    GLMessage_DataType *arg_pname = glmsg.add_args();
25531    arg_pname->set_isarray(false);
25532    arg_pname->set_type(GLMessage::DataType::ENUM);
25533    arg_pname->add_intvalue((int)pname);
25534
25535    // copy argument param
25536    GLMessage_DataType *arg_param = glmsg.add_args();
25537    arg_param->set_isarray(false);
25538    arg_param->set_type(GLMessage::DataType::INT);
25539    arg_param->add_intvalue(param);
25540
25541    // call function
25542    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25543    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25544    glContext->hooks->gl.glLightx(light, pname, param);
25545    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25546    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25547
25548    void *pointerArgs[] = {
25549    };
25550
25551    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25552                              threadStartTime, threadEndTime,
25553                              &glmsg, pointerArgs);
25554    glContext->traceGLMessage(&glmsg);
25555}
25556
25557void GLTrace_glLightxv(GLenum light, GLenum pname, const GLfixed * params) {
25558    GLMessage glmsg;
25559    GLTraceContext *glContext = getGLTraceContext();
25560
25561    glmsg.set_function(GLMessage::glLightxv);
25562
25563    // copy argument light
25564    GLMessage_DataType *arg_light = glmsg.add_args();
25565    arg_light->set_isarray(false);
25566    arg_light->set_type(GLMessage::DataType::ENUM);
25567    arg_light->add_intvalue((int)light);
25568
25569    // copy argument pname
25570    GLMessage_DataType *arg_pname = glmsg.add_args();
25571    arg_pname->set_isarray(false);
25572    arg_pname->set_type(GLMessage::DataType::ENUM);
25573    arg_pname->add_intvalue((int)pname);
25574
25575    // copy argument params
25576    GLMessage_DataType *arg_params = glmsg.add_args();
25577    arg_params->set_isarray(false);
25578    arg_params->set_type(GLMessage::DataType::INT64);
25579    arg_params->add_int64value((uintptr_t)params);
25580
25581    // call function
25582    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25583    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25584    glContext->hooks->gl.glLightxv(light, pname, params);
25585    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25586    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25587
25588    void *pointerArgs[] = {
25589        (void *) params,
25590    };
25591
25592    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25593                              threadStartTime, threadEndTime,
25594                              &glmsg, pointerArgs);
25595    glContext->traceGLMessage(&glmsg);
25596}
25597
25598void GLTrace_glLineWidthx(GLfixed width) {
25599    GLMessage glmsg;
25600    GLTraceContext *glContext = getGLTraceContext();
25601
25602    glmsg.set_function(GLMessage::glLineWidthx);
25603
25604    // copy argument width
25605    GLMessage_DataType *arg_width = glmsg.add_args();
25606    arg_width->set_isarray(false);
25607    arg_width->set_type(GLMessage::DataType::INT);
25608    arg_width->add_intvalue(width);
25609
25610    // call function
25611    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25612    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25613    glContext->hooks->gl.glLineWidthx(width);
25614    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25615    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25616
25617    void *pointerArgs[] = {
25618    };
25619
25620    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25621                              threadStartTime, threadEndTime,
25622                              &glmsg, pointerArgs);
25623    glContext->traceGLMessage(&glmsg);
25624}
25625
25626void GLTrace_glLoadIdentity(void) {
25627    GLMessage glmsg;
25628    GLTraceContext *glContext = getGLTraceContext();
25629
25630    glmsg.set_function(GLMessage::glLoadIdentity);
25631
25632    // call function
25633    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25634    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25635    glContext->hooks->gl.glLoadIdentity();
25636    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25637    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25638
25639    void *pointerArgs[] = {
25640    };
25641
25642    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25643                              threadStartTime, threadEndTime,
25644                              &glmsg, pointerArgs);
25645    glContext->traceGLMessage(&glmsg);
25646}
25647
25648void GLTrace_glLoadMatrixx(const GLfixed * m) {
25649    GLMessage glmsg;
25650    GLTraceContext *glContext = getGLTraceContext();
25651
25652    glmsg.set_function(GLMessage::glLoadMatrixx);
25653
25654    // copy argument m
25655    GLMessage_DataType *arg_m = glmsg.add_args();
25656    arg_m->set_isarray(false);
25657    arg_m->set_type(GLMessage::DataType::INT64);
25658    arg_m->add_int64value((uintptr_t)m);
25659
25660    // call function
25661    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25662    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25663    glContext->hooks->gl.glLoadMatrixx(m);
25664    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25665    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25666
25667    void *pointerArgs[] = {
25668        (void *) m,
25669    };
25670
25671    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25672                              threadStartTime, threadEndTime,
25673                              &glmsg, pointerArgs);
25674    glContext->traceGLMessage(&glmsg);
25675}
25676
25677void GLTrace_glLogicOp(GLenum opcode) {
25678    GLMessage glmsg;
25679    GLTraceContext *glContext = getGLTraceContext();
25680
25681    glmsg.set_function(GLMessage::glLogicOp);
25682
25683    // copy argument opcode
25684    GLMessage_DataType *arg_opcode = glmsg.add_args();
25685    arg_opcode->set_isarray(false);
25686    arg_opcode->set_type(GLMessage::DataType::ENUM);
25687    arg_opcode->add_intvalue((int)opcode);
25688
25689    // call function
25690    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25691    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25692    glContext->hooks->gl.glLogicOp(opcode);
25693    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25694    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25695
25696    void *pointerArgs[] = {
25697    };
25698
25699    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25700                              threadStartTime, threadEndTime,
25701                              &glmsg, pointerArgs);
25702    glContext->traceGLMessage(&glmsg);
25703}
25704
25705void GLTrace_glMaterialx(GLenum face, GLenum pname, GLfixed param) {
25706    GLMessage glmsg;
25707    GLTraceContext *glContext = getGLTraceContext();
25708
25709    glmsg.set_function(GLMessage::glMaterialx);
25710
25711    // copy argument face
25712    GLMessage_DataType *arg_face = glmsg.add_args();
25713    arg_face->set_isarray(false);
25714    arg_face->set_type(GLMessage::DataType::ENUM);
25715    arg_face->add_intvalue((int)face);
25716
25717    // copy argument pname
25718    GLMessage_DataType *arg_pname = glmsg.add_args();
25719    arg_pname->set_isarray(false);
25720    arg_pname->set_type(GLMessage::DataType::ENUM);
25721    arg_pname->add_intvalue((int)pname);
25722
25723    // copy argument param
25724    GLMessage_DataType *arg_param = glmsg.add_args();
25725    arg_param->set_isarray(false);
25726    arg_param->set_type(GLMessage::DataType::INT);
25727    arg_param->add_intvalue(param);
25728
25729    // call function
25730    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25731    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25732    glContext->hooks->gl.glMaterialx(face, pname, param);
25733    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25734    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25735
25736    void *pointerArgs[] = {
25737    };
25738
25739    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25740                              threadStartTime, threadEndTime,
25741                              &glmsg, pointerArgs);
25742    glContext->traceGLMessage(&glmsg);
25743}
25744
25745void GLTrace_glMaterialxv(GLenum face, GLenum pname, const GLfixed * param) {
25746    GLMessage glmsg;
25747    GLTraceContext *glContext = getGLTraceContext();
25748
25749    glmsg.set_function(GLMessage::glMaterialxv);
25750
25751    // copy argument face
25752    GLMessage_DataType *arg_face = glmsg.add_args();
25753    arg_face->set_isarray(false);
25754    arg_face->set_type(GLMessage::DataType::ENUM);
25755    arg_face->add_intvalue((int)face);
25756
25757    // copy argument pname
25758    GLMessage_DataType *arg_pname = glmsg.add_args();
25759    arg_pname->set_isarray(false);
25760    arg_pname->set_type(GLMessage::DataType::ENUM);
25761    arg_pname->add_intvalue((int)pname);
25762
25763    // copy argument param
25764    GLMessage_DataType *arg_param = glmsg.add_args();
25765    arg_param->set_isarray(false);
25766    arg_param->set_type(GLMessage::DataType::INT64);
25767    arg_param->add_int64value((uintptr_t)param);
25768
25769    // call function
25770    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25771    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25772    glContext->hooks->gl.glMaterialxv(face, pname, param);
25773    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25774    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25775
25776    void *pointerArgs[] = {
25777        (void *) param,
25778    };
25779
25780    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25781                              threadStartTime, threadEndTime,
25782                              &glmsg, pointerArgs);
25783    glContext->traceGLMessage(&glmsg);
25784}
25785
25786void GLTrace_glMatrixMode(GLenum mode) {
25787    GLMessage glmsg;
25788    GLTraceContext *glContext = getGLTraceContext();
25789
25790    glmsg.set_function(GLMessage::glMatrixMode);
25791
25792    // copy argument mode
25793    GLMessage_DataType *arg_mode = glmsg.add_args();
25794    arg_mode->set_isarray(false);
25795    arg_mode->set_type(GLMessage::DataType::ENUM);
25796    arg_mode->add_intvalue((int)mode);
25797
25798    // call function
25799    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25800    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25801    glContext->hooks->gl.glMatrixMode(mode);
25802    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25803    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25804
25805    void *pointerArgs[] = {
25806    };
25807
25808    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25809                              threadStartTime, threadEndTime,
25810                              &glmsg, pointerArgs);
25811    glContext->traceGLMessage(&glmsg);
25812}
25813
25814void GLTrace_glMultMatrixx(const GLfixed * m) {
25815    GLMessage glmsg;
25816    GLTraceContext *glContext = getGLTraceContext();
25817
25818    glmsg.set_function(GLMessage::glMultMatrixx);
25819
25820    // copy argument m
25821    GLMessage_DataType *arg_m = glmsg.add_args();
25822    arg_m->set_isarray(false);
25823    arg_m->set_type(GLMessage::DataType::INT64);
25824    arg_m->add_int64value((uintptr_t)m);
25825
25826    // call function
25827    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25828    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25829    glContext->hooks->gl.glMultMatrixx(m);
25830    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25831    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25832
25833    void *pointerArgs[] = {
25834        (void *) m,
25835    };
25836
25837    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25838                              threadStartTime, threadEndTime,
25839                              &glmsg, pointerArgs);
25840    glContext->traceGLMessage(&glmsg);
25841}
25842
25843void GLTrace_glMultiTexCoord4x(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q) {
25844    GLMessage glmsg;
25845    GLTraceContext *glContext = getGLTraceContext();
25846
25847    glmsg.set_function(GLMessage::glMultiTexCoord4x);
25848
25849    // copy argument texture
25850    GLMessage_DataType *arg_texture = glmsg.add_args();
25851    arg_texture->set_isarray(false);
25852    arg_texture->set_type(GLMessage::DataType::ENUM);
25853    arg_texture->add_intvalue((int)texture);
25854
25855    // copy argument s
25856    GLMessage_DataType *arg_s = glmsg.add_args();
25857    arg_s->set_isarray(false);
25858    arg_s->set_type(GLMessage::DataType::INT);
25859    arg_s->add_intvalue(s);
25860
25861    // copy argument t
25862    GLMessage_DataType *arg_t = glmsg.add_args();
25863    arg_t->set_isarray(false);
25864    arg_t->set_type(GLMessage::DataType::INT);
25865    arg_t->add_intvalue(t);
25866
25867    // copy argument r
25868    GLMessage_DataType *arg_r = glmsg.add_args();
25869    arg_r->set_isarray(false);
25870    arg_r->set_type(GLMessage::DataType::INT);
25871    arg_r->add_intvalue(r);
25872
25873    // copy argument q
25874    GLMessage_DataType *arg_q = glmsg.add_args();
25875    arg_q->set_isarray(false);
25876    arg_q->set_type(GLMessage::DataType::INT);
25877    arg_q->add_intvalue(q);
25878
25879    // call function
25880    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25881    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25882    glContext->hooks->gl.glMultiTexCoord4x(texture, s, t, r, q);
25883    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25884    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25885
25886    void *pointerArgs[] = {
25887    };
25888
25889    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25890                              threadStartTime, threadEndTime,
25891                              &glmsg, pointerArgs);
25892    glContext->traceGLMessage(&glmsg);
25893}
25894
25895void GLTrace_glNormal3x(GLfixed nx, GLfixed ny, GLfixed nz) {
25896    GLMessage glmsg;
25897    GLTraceContext *glContext = getGLTraceContext();
25898
25899    glmsg.set_function(GLMessage::glNormal3x);
25900
25901    // copy argument nx
25902    GLMessage_DataType *arg_nx = glmsg.add_args();
25903    arg_nx->set_isarray(false);
25904    arg_nx->set_type(GLMessage::DataType::INT);
25905    arg_nx->add_intvalue(nx);
25906
25907    // copy argument ny
25908    GLMessage_DataType *arg_ny = glmsg.add_args();
25909    arg_ny->set_isarray(false);
25910    arg_ny->set_type(GLMessage::DataType::INT);
25911    arg_ny->add_intvalue(ny);
25912
25913    // copy argument nz
25914    GLMessage_DataType *arg_nz = glmsg.add_args();
25915    arg_nz->set_isarray(false);
25916    arg_nz->set_type(GLMessage::DataType::INT);
25917    arg_nz->add_intvalue(nz);
25918
25919    // call function
25920    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25921    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25922    glContext->hooks->gl.glNormal3x(nx, ny, nz);
25923    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25924    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25925
25926    void *pointerArgs[] = {
25927    };
25928
25929    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25930                              threadStartTime, threadEndTime,
25931                              &glmsg, pointerArgs);
25932    glContext->traceGLMessage(&glmsg);
25933}
25934
25935void GLTrace_glNormalPointer(GLenum type, GLsizei stride, const void * pointer) {
25936    GLMessage glmsg;
25937    GLTraceContext *glContext = getGLTraceContext();
25938
25939    glmsg.set_function(GLMessage::glNormalPointer);
25940
25941    // copy argument type
25942    GLMessage_DataType *arg_type = glmsg.add_args();
25943    arg_type->set_isarray(false);
25944    arg_type->set_type(GLMessage::DataType::ENUM);
25945    arg_type->add_intvalue((int)type);
25946
25947    // copy argument stride
25948    GLMessage_DataType *arg_stride = glmsg.add_args();
25949    arg_stride->set_isarray(false);
25950    arg_stride->set_type(GLMessage::DataType::INT);
25951    arg_stride->add_intvalue(stride);
25952
25953    // copy argument pointer
25954    GLMessage_DataType *arg_pointer = glmsg.add_args();
25955    arg_pointer->set_isarray(false);
25956    arg_pointer->set_type(GLMessage::DataType::INT64);
25957    arg_pointer->add_int64value((uintptr_t)pointer);
25958
25959    // call function
25960    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25961    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25962    glContext->hooks->gl.glNormalPointer(type, stride, pointer);
25963    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
25964    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25965
25966    void *pointerArgs[] = {
25967        (void *) pointer,
25968    };
25969
25970    fixupGLMessage(glContext, wallStartTime, wallEndTime,
25971                              threadStartTime, threadEndTime,
25972                              &glmsg, pointerArgs);
25973    glContext->traceGLMessage(&glmsg);
25974}
25975
25976void GLTrace_glOrthox(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f) {
25977    GLMessage glmsg;
25978    GLTraceContext *glContext = getGLTraceContext();
25979
25980    glmsg.set_function(GLMessage::glOrthox);
25981
25982    // copy argument l
25983    GLMessage_DataType *arg_l = glmsg.add_args();
25984    arg_l->set_isarray(false);
25985    arg_l->set_type(GLMessage::DataType::INT);
25986    arg_l->add_intvalue(l);
25987
25988    // copy argument r
25989    GLMessage_DataType *arg_r = glmsg.add_args();
25990    arg_r->set_isarray(false);
25991    arg_r->set_type(GLMessage::DataType::INT);
25992    arg_r->add_intvalue(r);
25993
25994    // copy argument b
25995    GLMessage_DataType *arg_b = glmsg.add_args();
25996    arg_b->set_isarray(false);
25997    arg_b->set_type(GLMessage::DataType::INT);
25998    arg_b->add_intvalue(b);
25999
26000    // copy argument t
26001    GLMessage_DataType *arg_t = glmsg.add_args();
26002    arg_t->set_isarray(false);
26003    arg_t->set_type(GLMessage::DataType::INT);
26004    arg_t->add_intvalue(t);
26005
26006    // copy argument n
26007    GLMessage_DataType *arg_n = glmsg.add_args();
26008    arg_n->set_isarray(false);
26009    arg_n->set_type(GLMessage::DataType::INT);
26010    arg_n->add_intvalue(n);
26011
26012    // copy argument f
26013    GLMessage_DataType *arg_f = glmsg.add_args();
26014    arg_f->set_isarray(false);
26015    arg_f->set_type(GLMessage::DataType::INT);
26016    arg_f->add_intvalue(f);
26017
26018    // call function
26019    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26020    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26021    glContext->hooks->gl.glOrthox(l, r, b, t, n, f);
26022    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26023    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26024
26025    void *pointerArgs[] = {
26026    };
26027
26028    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26029                              threadStartTime, threadEndTime,
26030                              &glmsg, pointerArgs);
26031    glContext->traceGLMessage(&glmsg);
26032}
26033
26034void GLTrace_glPointParameterx(GLenum pname, GLfixed param) {
26035    GLMessage glmsg;
26036    GLTraceContext *glContext = getGLTraceContext();
26037
26038    glmsg.set_function(GLMessage::glPointParameterx);
26039
26040    // copy argument pname
26041    GLMessage_DataType *arg_pname = glmsg.add_args();
26042    arg_pname->set_isarray(false);
26043    arg_pname->set_type(GLMessage::DataType::ENUM);
26044    arg_pname->add_intvalue((int)pname);
26045
26046    // copy argument param
26047    GLMessage_DataType *arg_param = glmsg.add_args();
26048    arg_param->set_isarray(false);
26049    arg_param->set_type(GLMessage::DataType::INT);
26050    arg_param->add_intvalue(param);
26051
26052    // call function
26053    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26054    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26055    glContext->hooks->gl.glPointParameterx(pname, param);
26056    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26057    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26058
26059    void *pointerArgs[] = {
26060    };
26061
26062    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26063                              threadStartTime, threadEndTime,
26064                              &glmsg, pointerArgs);
26065    glContext->traceGLMessage(&glmsg);
26066}
26067
26068void GLTrace_glPointParameterxv(GLenum pname, const GLfixed * params) {
26069    GLMessage glmsg;
26070    GLTraceContext *glContext = getGLTraceContext();
26071
26072    glmsg.set_function(GLMessage::glPointParameterxv);
26073
26074    // copy argument pname
26075    GLMessage_DataType *arg_pname = glmsg.add_args();
26076    arg_pname->set_isarray(false);
26077    arg_pname->set_type(GLMessage::DataType::ENUM);
26078    arg_pname->add_intvalue((int)pname);
26079
26080    // copy argument params
26081    GLMessage_DataType *arg_params = glmsg.add_args();
26082    arg_params->set_isarray(false);
26083    arg_params->set_type(GLMessage::DataType::INT64);
26084    arg_params->add_int64value((uintptr_t)params);
26085
26086    // call function
26087    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26088    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26089    glContext->hooks->gl.glPointParameterxv(pname, params);
26090    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26091    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26092
26093    void *pointerArgs[] = {
26094        (void *) params,
26095    };
26096
26097    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26098                              threadStartTime, threadEndTime,
26099                              &glmsg, pointerArgs);
26100    glContext->traceGLMessage(&glmsg);
26101}
26102
26103void GLTrace_glPointSizex(GLfixed size) {
26104    GLMessage glmsg;
26105    GLTraceContext *glContext = getGLTraceContext();
26106
26107    glmsg.set_function(GLMessage::glPointSizex);
26108
26109    // copy argument size
26110    GLMessage_DataType *arg_size = glmsg.add_args();
26111    arg_size->set_isarray(false);
26112    arg_size->set_type(GLMessage::DataType::INT);
26113    arg_size->add_intvalue(size);
26114
26115    // call function
26116    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26117    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26118    glContext->hooks->gl.glPointSizex(size);
26119    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26120    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26121
26122    void *pointerArgs[] = {
26123    };
26124
26125    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26126                              threadStartTime, threadEndTime,
26127                              &glmsg, pointerArgs);
26128    glContext->traceGLMessage(&glmsg);
26129}
26130
26131void GLTrace_glPolygonOffsetx(GLfixed factor, GLfixed units) {
26132    GLMessage glmsg;
26133    GLTraceContext *glContext = getGLTraceContext();
26134
26135    glmsg.set_function(GLMessage::glPolygonOffsetx);
26136
26137    // copy argument factor
26138    GLMessage_DataType *arg_factor = glmsg.add_args();
26139    arg_factor->set_isarray(false);
26140    arg_factor->set_type(GLMessage::DataType::INT);
26141    arg_factor->add_intvalue(factor);
26142
26143    // copy argument units
26144    GLMessage_DataType *arg_units = glmsg.add_args();
26145    arg_units->set_isarray(false);
26146    arg_units->set_type(GLMessage::DataType::INT);
26147    arg_units->add_intvalue(units);
26148
26149    // call function
26150    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26151    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26152    glContext->hooks->gl.glPolygonOffsetx(factor, units);
26153    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26154    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26155
26156    void *pointerArgs[] = {
26157    };
26158
26159    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26160                              threadStartTime, threadEndTime,
26161                              &glmsg, pointerArgs);
26162    glContext->traceGLMessage(&glmsg);
26163}
26164
26165void GLTrace_glPopMatrix(void) {
26166    GLMessage glmsg;
26167    GLTraceContext *glContext = getGLTraceContext();
26168
26169    glmsg.set_function(GLMessage::glPopMatrix);
26170
26171    // call function
26172    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26173    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26174    glContext->hooks->gl.glPopMatrix();
26175    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26176    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26177
26178    void *pointerArgs[] = {
26179    };
26180
26181    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26182                              threadStartTime, threadEndTime,
26183                              &glmsg, pointerArgs);
26184    glContext->traceGLMessage(&glmsg);
26185}
26186
26187void GLTrace_glPushMatrix(void) {
26188    GLMessage glmsg;
26189    GLTraceContext *glContext = getGLTraceContext();
26190
26191    glmsg.set_function(GLMessage::glPushMatrix);
26192
26193    // call function
26194    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26195    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26196    glContext->hooks->gl.glPushMatrix();
26197    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26198    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26199
26200    void *pointerArgs[] = {
26201    };
26202
26203    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26204                              threadStartTime, threadEndTime,
26205                              &glmsg, pointerArgs);
26206    glContext->traceGLMessage(&glmsg);
26207}
26208
26209void GLTrace_glRotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z) {
26210    GLMessage glmsg;
26211    GLTraceContext *glContext = getGLTraceContext();
26212
26213    glmsg.set_function(GLMessage::glRotatex);
26214
26215    // copy argument angle
26216    GLMessage_DataType *arg_angle = glmsg.add_args();
26217    arg_angle->set_isarray(false);
26218    arg_angle->set_type(GLMessage::DataType::INT);
26219    arg_angle->add_intvalue(angle);
26220
26221    // copy argument x
26222    GLMessage_DataType *arg_x = glmsg.add_args();
26223    arg_x->set_isarray(false);
26224    arg_x->set_type(GLMessage::DataType::INT);
26225    arg_x->add_intvalue(x);
26226
26227    // copy argument y
26228    GLMessage_DataType *arg_y = glmsg.add_args();
26229    arg_y->set_isarray(false);
26230    arg_y->set_type(GLMessage::DataType::INT);
26231    arg_y->add_intvalue(y);
26232
26233    // copy argument z
26234    GLMessage_DataType *arg_z = glmsg.add_args();
26235    arg_z->set_isarray(false);
26236    arg_z->set_type(GLMessage::DataType::INT);
26237    arg_z->add_intvalue(z);
26238
26239    // call function
26240    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26241    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26242    glContext->hooks->gl.glRotatex(angle, x, y, z);
26243    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26244    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26245
26246    void *pointerArgs[] = {
26247    };
26248
26249    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26250                              threadStartTime, threadEndTime,
26251                              &glmsg, pointerArgs);
26252    glContext->traceGLMessage(&glmsg);
26253}
26254
26255void GLTrace_glSampleCoveragex(GLclampx value, GLboolean invert) {
26256    GLMessage glmsg;
26257    GLTraceContext *glContext = getGLTraceContext();
26258
26259    glmsg.set_function(GLMessage::glSampleCoveragex);
26260
26261    // copy argument value
26262    GLMessage_DataType *arg_value = glmsg.add_args();
26263    arg_value->set_isarray(false);
26264    arg_value->set_type(GLMessage::DataType::INT);
26265    arg_value->add_intvalue(value);
26266
26267    // copy argument invert
26268    GLMessage_DataType *arg_invert = glmsg.add_args();
26269    arg_invert->set_isarray(false);
26270    arg_invert->set_type(GLMessage::DataType::BOOL);
26271    arg_invert->add_boolvalue(invert);
26272
26273    // call function
26274    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26275    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26276    glContext->hooks->gl.glSampleCoveragex(value, invert);
26277    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26278    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26279
26280    void *pointerArgs[] = {
26281    };
26282
26283    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26284                              threadStartTime, threadEndTime,
26285                              &glmsg, pointerArgs);
26286    glContext->traceGLMessage(&glmsg);
26287}
26288
26289void GLTrace_glScalex(GLfixed x, GLfixed y, GLfixed z) {
26290    GLMessage glmsg;
26291    GLTraceContext *glContext = getGLTraceContext();
26292
26293    glmsg.set_function(GLMessage::glScalex);
26294
26295    // copy argument x
26296    GLMessage_DataType *arg_x = glmsg.add_args();
26297    arg_x->set_isarray(false);
26298    arg_x->set_type(GLMessage::DataType::INT);
26299    arg_x->add_intvalue(x);
26300
26301    // copy argument y
26302    GLMessage_DataType *arg_y = glmsg.add_args();
26303    arg_y->set_isarray(false);
26304    arg_y->set_type(GLMessage::DataType::INT);
26305    arg_y->add_intvalue(y);
26306
26307    // copy argument z
26308    GLMessage_DataType *arg_z = glmsg.add_args();
26309    arg_z->set_isarray(false);
26310    arg_z->set_type(GLMessage::DataType::INT);
26311    arg_z->add_intvalue(z);
26312
26313    // call function
26314    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26315    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26316    glContext->hooks->gl.glScalex(x, y, z);
26317    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26318    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26319
26320    void *pointerArgs[] = {
26321    };
26322
26323    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26324                              threadStartTime, threadEndTime,
26325                              &glmsg, pointerArgs);
26326    glContext->traceGLMessage(&glmsg);
26327}
26328
26329void GLTrace_glShadeModel(GLenum mode) {
26330    GLMessage glmsg;
26331    GLTraceContext *glContext = getGLTraceContext();
26332
26333    glmsg.set_function(GLMessage::glShadeModel);
26334
26335    // copy argument mode
26336    GLMessage_DataType *arg_mode = glmsg.add_args();
26337    arg_mode->set_isarray(false);
26338    arg_mode->set_type(GLMessage::DataType::ENUM);
26339    arg_mode->add_intvalue((int)mode);
26340
26341    // call function
26342    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26343    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26344    glContext->hooks->gl.glShadeModel(mode);
26345    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26346    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26347
26348    void *pointerArgs[] = {
26349    };
26350
26351    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26352                              threadStartTime, threadEndTime,
26353                              &glmsg, pointerArgs);
26354    glContext->traceGLMessage(&glmsg);
26355}
26356
26357void GLTrace_glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const void * pointer) {
26358    GLMessage glmsg;
26359    GLTraceContext *glContext = getGLTraceContext();
26360
26361    glmsg.set_function(GLMessage::glTexCoordPointer);
26362
26363    // copy argument size
26364    GLMessage_DataType *arg_size = glmsg.add_args();
26365    arg_size->set_isarray(false);
26366    arg_size->set_type(GLMessage::DataType::INT);
26367    arg_size->add_intvalue(size);
26368
26369    // copy argument type
26370    GLMessage_DataType *arg_type = glmsg.add_args();
26371    arg_type->set_isarray(false);
26372    arg_type->set_type(GLMessage::DataType::ENUM);
26373    arg_type->add_intvalue((int)type);
26374
26375    // copy argument stride
26376    GLMessage_DataType *arg_stride = glmsg.add_args();
26377    arg_stride->set_isarray(false);
26378    arg_stride->set_type(GLMessage::DataType::INT);
26379    arg_stride->add_intvalue(stride);
26380
26381    // copy argument pointer
26382    GLMessage_DataType *arg_pointer = glmsg.add_args();
26383    arg_pointer->set_isarray(false);
26384    arg_pointer->set_type(GLMessage::DataType::INT64);
26385    arg_pointer->add_int64value((uintptr_t)pointer);
26386
26387    // call function
26388    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26389    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26390    glContext->hooks->gl.glTexCoordPointer(size, type, stride, pointer);
26391    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26392    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26393
26394    void *pointerArgs[] = {
26395        (void *) pointer,
26396    };
26397
26398    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26399                              threadStartTime, threadEndTime,
26400                              &glmsg, pointerArgs);
26401    glContext->traceGLMessage(&glmsg);
26402}
26403
26404void GLTrace_glTexEnvi(GLenum target, GLenum pname, GLint param) {
26405    GLMessage glmsg;
26406    GLTraceContext *glContext = getGLTraceContext();
26407
26408    glmsg.set_function(GLMessage::glTexEnvi);
26409
26410    // copy argument target
26411    GLMessage_DataType *arg_target = glmsg.add_args();
26412    arg_target->set_isarray(false);
26413    arg_target->set_type(GLMessage::DataType::ENUM);
26414    arg_target->add_intvalue((int)target);
26415
26416    // copy argument pname
26417    GLMessage_DataType *arg_pname = glmsg.add_args();
26418    arg_pname->set_isarray(false);
26419    arg_pname->set_type(GLMessage::DataType::ENUM);
26420    arg_pname->add_intvalue((int)pname);
26421
26422    // copy argument param
26423    GLMessage_DataType *arg_param = glmsg.add_args();
26424    arg_param->set_isarray(false);
26425    arg_param->set_type(GLMessage::DataType::INT);
26426    arg_param->add_intvalue(param);
26427
26428    // call function
26429    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26430    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26431    glContext->hooks->gl.glTexEnvi(target, pname, param);
26432    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26433    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26434
26435    void *pointerArgs[] = {
26436    };
26437
26438    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26439                              threadStartTime, threadEndTime,
26440                              &glmsg, pointerArgs);
26441    glContext->traceGLMessage(&glmsg);
26442}
26443
26444void GLTrace_glTexEnvx(GLenum target, GLenum pname, GLfixed param) {
26445    GLMessage glmsg;
26446    GLTraceContext *glContext = getGLTraceContext();
26447
26448    glmsg.set_function(GLMessage::glTexEnvx);
26449
26450    // copy argument target
26451    GLMessage_DataType *arg_target = glmsg.add_args();
26452    arg_target->set_isarray(false);
26453    arg_target->set_type(GLMessage::DataType::ENUM);
26454    arg_target->add_intvalue((int)target);
26455
26456    // copy argument pname
26457    GLMessage_DataType *arg_pname = glmsg.add_args();
26458    arg_pname->set_isarray(false);
26459    arg_pname->set_type(GLMessage::DataType::ENUM);
26460    arg_pname->add_intvalue((int)pname);
26461
26462    // copy argument param
26463    GLMessage_DataType *arg_param = glmsg.add_args();
26464    arg_param->set_isarray(false);
26465    arg_param->set_type(GLMessage::DataType::INT);
26466    arg_param->add_intvalue(param);
26467
26468    // call function
26469    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26470    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26471    glContext->hooks->gl.glTexEnvx(target, pname, param);
26472    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26473    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26474
26475    void *pointerArgs[] = {
26476    };
26477
26478    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26479                              threadStartTime, threadEndTime,
26480                              &glmsg, pointerArgs);
26481    glContext->traceGLMessage(&glmsg);
26482}
26483
26484void GLTrace_glTexEnviv(GLenum target, GLenum pname, const GLint * params) {
26485    GLMessage glmsg;
26486    GLTraceContext *glContext = getGLTraceContext();
26487
26488    glmsg.set_function(GLMessage::glTexEnviv);
26489
26490    // copy argument target
26491    GLMessage_DataType *arg_target = glmsg.add_args();
26492    arg_target->set_isarray(false);
26493    arg_target->set_type(GLMessage::DataType::ENUM);
26494    arg_target->add_intvalue((int)target);
26495
26496    // copy argument pname
26497    GLMessage_DataType *arg_pname = glmsg.add_args();
26498    arg_pname->set_isarray(false);
26499    arg_pname->set_type(GLMessage::DataType::ENUM);
26500    arg_pname->add_intvalue((int)pname);
26501
26502    // copy argument params
26503    GLMessage_DataType *arg_params = glmsg.add_args();
26504    arg_params->set_isarray(false);
26505    arg_params->set_type(GLMessage::DataType::INT64);
26506    arg_params->add_int64value((uintptr_t)params);
26507
26508    // call function
26509    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26510    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26511    glContext->hooks->gl.glTexEnviv(target, pname, params);
26512    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26513    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26514
26515    void *pointerArgs[] = {
26516        (void *) params,
26517    };
26518
26519    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26520                              threadStartTime, threadEndTime,
26521                              &glmsg, pointerArgs);
26522    glContext->traceGLMessage(&glmsg);
26523}
26524
26525void GLTrace_glTexEnvxv(GLenum target, GLenum pname, const GLfixed * params) {
26526    GLMessage glmsg;
26527    GLTraceContext *glContext = getGLTraceContext();
26528
26529    glmsg.set_function(GLMessage::glTexEnvxv);
26530
26531    // copy argument target
26532    GLMessage_DataType *arg_target = glmsg.add_args();
26533    arg_target->set_isarray(false);
26534    arg_target->set_type(GLMessage::DataType::ENUM);
26535    arg_target->add_intvalue((int)target);
26536
26537    // copy argument pname
26538    GLMessage_DataType *arg_pname = glmsg.add_args();
26539    arg_pname->set_isarray(false);
26540    arg_pname->set_type(GLMessage::DataType::ENUM);
26541    arg_pname->add_intvalue((int)pname);
26542
26543    // copy argument params
26544    GLMessage_DataType *arg_params = glmsg.add_args();
26545    arg_params->set_isarray(false);
26546    arg_params->set_type(GLMessage::DataType::INT64);
26547    arg_params->add_int64value((uintptr_t)params);
26548
26549    // call function
26550    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26551    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26552    glContext->hooks->gl.glTexEnvxv(target, pname, params);
26553    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26554    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26555
26556    void *pointerArgs[] = {
26557        (void *) params,
26558    };
26559
26560    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26561                              threadStartTime, threadEndTime,
26562                              &glmsg, pointerArgs);
26563    glContext->traceGLMessage(&glmsg);
26564}
26565
26566void GLTrace_glTexParameterx(GLenum target, GLenum pname, GLfixed param) {
26567    GLMessage glmsg;
26568    GLTraceContext *glContext = getGLTraceContext();
26569
26570    glmsg.set_function(GLMessage::glTexParameterx);
26571
26572    // copy argument target
26573    GLMessage_DataType *arg_target = glmsg.add_args();
26574    arg_target->set_isarray(false);
26575    arg_target->set_type(GLMessage::DataType::ENUM);
26576    arg_target->add_intvalue((int)target);
26577
26578    // copy argument pname
26579    GLMessage_DataType *arg_pname = glmsg.add_args();
26580    arg_pname->set_isarray(false);
26581    arg_pname->set_type(GLMessage::DataType::ENUM);
26582    arg_pname->add_intvalue((int)pname);
26583
26584    // copy argument param
26585    GLMessage_DataType *arg_param = glmsg.add_args();
26586    arg_param->set_isarray(false);
26587    arg_param->set_type(GLMessage::DataType::INT);
26588    arg_param->add_intvalue(param);
26589
26590    // call function
26591    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26592    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26593    glContext->hooks->gl.glTexParameterx(target, pname, param);
26594    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26595    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26596
26597    void *pointerArgs[] = {
26598    };
26599
26600    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26601                              threadStartTime, threadEndTime,
26602                              &glmsg, pointerArgs);
26603    glContext->traceGLMessage(&glmsg);
26604}
26605
26606void GLTrace_glTexParameterxv(GLenum target, GLenum pname, const GLfixed * params) {
26607    GLMessage glmsg;
26608    GLTraceContext *glContext = getGLTraceContext();
26609
26610    glmsg.set_function(GLMessage::glTexParameterxv);
26611
26612    // copy argument target
26613    GLMessage_DataType *arg_target = glmsg.add_args();
26614    arg_target->set_isarray(false);
26615    arg_target->set_type(GLMessage::DataType::ENUM);
26616    arg_target->add_intvalue((int)target);
26617
26618    // copy argument pname
26619    GLMessage_DataType *arg_pname = glmsg.add_args();
26620    arg_pname->set_isarray(false);
26621    arg_pname->set_type(GLMessage::DataType::ENUM);
26622    arg_pname->add_intvalue((int)pname);
26623
26624    // copy argument params
26625    GLMessage_DataType *arg_params = glmsg.add_args();
26626    arg_params->set_isarray(false);
26627    arg_params->set_type(GLMessage::DataType::INT64);
26628    arg_params->add_int64value((uintptr_t)params);
26629
26630    // call function
26631    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26632    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26633    glContext->hooks->gl.glTexParameterxv(target, pname, params);
26634    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26635    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26636
26637    void *pointerArgs[] = {
26638        (void *) params,
26639    };
26640
26641    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26642                              threadStartTime, threadEndTime,
26643                              &glmsg, pointerArgs);
26644    glContext->traceGLMessage(&glmsg);
26645}
26646
26647void GLTrace_glTranslatex(GLfixed x, GLfixed y, GLfixed z) {
26648    GLMessage glmsg;
26649    GLTraceContext *glContext = getGLTraceContext();
26650
26651    glmsg.set_function(GLMessage::glTranslatex);
26652
26653    // copy argument x
26654    GLMessage_DataType *arg_x = glmsg.add_args();
26655    arg_x->set_isarray(false);
26656    arg_x->set_type(GLMessage::DataType::INT);
26657    arg_x->add_intvalue(x);
26658
26659    // copy argument y
26660    GLMessage_DataType *arg_y = glmsg.add_args();
26661    arg_y->set_isarray(false);
26662    arg_y->set_type(GLMessage::DataType::INT);
26663    arg_y->add_intvalue(y);
26664
26665    // copy argument z
26666    GLMessage_DataType *arg_z = glmsg.add_args();
26667    arg_z->set_isarray(false);
26668    arg_z->set_type(GLMessage::DataType::INT);
26669    arg_z->add_intvalue(z);
26670
26671    // call function
26672    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26673    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26674    glContext->hooks->gl.glTranslatex(x, y, z);
26675    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26676    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26677
26678    void *pointerArgs[] = {
26679    };
26680
26681    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26682                              threadStartTime, threadEndTime,
26683                              &glmsg, pointerArgs);
26684    glContext->traceGLMessage(&glmsg);
26685}
26686
26687void GLTrace_glVertexPointer(GLint size, GLenum type, GLsizei stride, const void * pointer) {
26688    GLMessage glmsg;
26689    GLTraceContext *glContext = getGLTraceContext();
26690
26691    glmsg.set_function(GLMessage::glVertexPointer);
26692
26693    // copy argument size
26694    GLMessage_DataType *arg_size = glmsg.add_args();
26695    arg_size->set_isarray(false);
26696    arg_size->set_type(GLMessage::DataType::INT);
26697    arg_size->add_intvalue(size);
26698
26699    // copy argument type
26700    GLMessage_DataType *arg_type = glmsg.add_args();
26701    arg_type->set_isarray(false);
26702    arg_type->set_type(GLMessage::DataType::ENUM);
26703    arg_type->add_intvalue((int)type);
26704
26705    // copy argument stride
26706    GLMessage_DataType *arg_stride = glmsg.add_args();
26707    arg_stride->set_isarray(false);
26708    arg_stride->set_type(GLMessage::DataType::INT);
26709    arg_stride->add_intvalue(stride);
26710
26711    // copy argument pointer
26712    GLMessage_DataType *arg_pointer = glmsg.add_args();
26713    arg_pointer->set_isarray(false);
26714    arg_pointer->set_type(GLMessage::DataType::INT64);
26715    arg_pointer->add_int64value((uintptr_t)pointer);
26716
26717    // call function
26718    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26719    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26720    glContext->hooks->gl.glVertexPointer(size, type, stride, pointer);
26721    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26722    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26723
26724    void *pointerArgs[] = {
26725        (void *) pointer,
26726    };
26727
26728    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26729                              threadStartTime, threadEndTime,
26730                              &glmsg, pointerArgs);
26731    glContext->traceGLMessage(&glmsg);
26732}
26733
26734
26735// Definitions for GL1Ext APIs
26736
26737void GLTrace_glBlendEquationSeparateOES(GLenum modeRGB, GLenum modeAlpha) {
26738    GLMessage glmsg;
26739    GLTraceContext *glContext = getGLTraceContext();
26740
26741    glmsg.set_function(GLMessage::glBlendEquationSeparateOES);
26742
26743    // copy argument modeRGB
26744    GLMessage_DataType *arg_modeRGB = glmsg.add_args();
26745    arg_modeRGB->set_isarray(false);
26746    arg_modeRGB->set_type(GLMessage::DataType::ENUM);
26747    arg_modeRGB->add_intvalue((int)modeRGB);
26748
26749    // copy argument modeAlpha
26750    GLMessage_DataType *arg_modeAlpha = glmsg.add_args();
26751    arg_modeAlpha->set_isarray(false);
26752    arg_modeAlpha->set_type(GLMessage::DataType::ENUM);
26753    arg_modeAlpha->add_intvalue((int)modeAlpha);
26754
26755    // call function
26756    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26757    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26758    glContext->hooks->gl.glBlendEquationSeparateOES(modeRGB, modeAlpha);
26759    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26760    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26761
26762    void *pointerArgs[] = {
26763    };
26764
26765    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26766                              threadStartTime, threadEndTime,
26767                              &glmsg, pointerArgs);
26768    glContext->traceGLMessage(&glmsg);
26769}
26770
26771void GLTrace_glBlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) {
26772    GLMessage glmsg;
26773    GLTraceContext *glContext = getGLTraceContext();
26774
26775    glmsg.set_function(GLMessage::glBlendFuncSeparateOES);
26776
26777    // copy argument srcRGB
26778    GLMessage_DataType *arg_srcRGB = glmsg.add_args();
26779    arg_srcRGB->set_isarray(false);
26780    arg_srcRGB->set_type(GLMessage::DataType::ENUM);
26781    arg_srcRGB->add_intvalue((int)srcRGB);
26782
26783    // copy argument dstRGB
26784    GLMessage_DataType *arg_dstRGB = glmsg.add_args();
26785    arg_dstRGB->set_isarray(false);
26786    arg_dstRGB->set_type(GLMessage::DataType::ENUM);
26787    arg_dstRGB->add_intvalue((int)dstRGB);
26788
26789    // copy argument srcAlpha
26790    GLMessage_DataType *arg_srcAlpha = glmsg.add_args();
26791    arg_srcAlpha->set_isarray(false);
26792    arg_srcAlpha->set_type(GLMessage::DataType::ENUM);
26793    arg_srcAlpha->add_intvalue((int)srcAlpha);
26794
26795    // copy argument dstAlpha
26796    GLMessage_DataType *arg_dstAlpha = glmsg.add_args();
26797    arg_dstAlpha->set_isarray(false);
26798    arg_dstAlpha->set_type(GLMessage::DataType::ENUM);
26799    arg_dstAlpha->add_intvalue((int)dstAlpha);
26800
26801    // call function
26802    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26803    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26804    glContext->hooks->gl.glBlendFuncSeparateOES(srcRGB, dstRGB, srcAlpha, dstAlpha);
26805    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26806    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26807
26808    void *pointerArgs[] = {
26809    };
26810
26811    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26812                              threadStartTime, threadEndTime,
26813                              &glmsg, pointerArgs);
26814    glContext->traceGLMessage(&glmsg);
26815}
26816
26817void GLTrace_glBlendEquationOES(GLenum mode) {
26818    GLMessage glmsg;
26819    GLTraceContext *glContext = getGLTraceContext();
26820
26821    glmsg.set_function(GLMessage::glBlendEquationOES);
26822
26823    // copy argument mode
26824    GLMessage_DataType *arg_mode = glmsg.add_args();
26825    arg_mode->set_isarray(false);
26826    arg_mode->set_type(GLMessage::DataType::ENUM);
26827    arg_mode->add_intvalue((int)mode);
26828
26829    // call function
26830    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26831    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26832    glContext->hooks->gl.glBlendEquationOES(mode);
26833    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26834    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26835
26836    void *pointerArgs[] = {
26837    };
26838
26839    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26840                              threadStartTime, threadEndTime,
26841                              &glmsg, pointerArgs);
26842    glContext->traceGLMessage(&glmsg);
26843}
26844
26845void GLTrace_glMultiTexCoord1bOES(GLenum texture, GLbyte s) {
26846    GLMessage glmsg;
26847    GLTraceContext *glContext = getGLTraceContext();
26848
26849    glmsg.set_function(GLMessage::glMultiTexCoord1bOES);
26850
26851    // copy argument texture
26852    GLMessage_DataType *arg_texture = glmsg.add_args();
26853    arg_texture->set_isarray(false);
26854    arg_texture->set_type(GLMessage::DataType::ENUM);
26855    arg_texture->add_intvalue((int)texture);
26856
26857    // copy argument s
26858    GLMessage_DataType *arg_s = glmsg.add_args();
26859    arg_s->set_isarray(false);
26860    arg_s->set_type(GLMessage::DataType::BYTE);
26861    arg_s->add_intvalue((int)s);
26862
26863    // call function
26864    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26865    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26866    glContext->hooks->gl.glMultiTexCoord1bOES(texture, s);
26867    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26868    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26869
26870    void *pointerArgs[] = {
26871    };
26872
26873    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26874                              threadStartTime, threadEndTime,
26875                              &glmsg, pointerArgs);
26876    glContext->traceGLMessage(&glmsg);
26877}
26878
26879void GLTrace_glMultiTexCoord1bvOES(GLenum texture, const GLbyte * coords) {
26880    GLMessage glmsg;
26881    GLTraceContext *glContext = getGLTraceContext();
26882
26883    glmsg.set_function(GLMessage::glMultiTexCoord1bvOES);
26884
26885    // copy argument texture
26886    GLMessage_DataType *arg_texture = glmsg.add_args();
26887    arg_texture->set_isarray(false);
26888    arg_texture->set_type(GLMessage::DataType::ENUM);
26889    arg_texture->add_intvalue((int)texture);
26890
26891    // copy argument coords
26892    GLMessage_DataType *arg_coords = glmsg.add_args();
26893    arg_coords->set_isarray(false);
26894    arg_coords->set_type(GLMessage::DataType::INT64);
26895    arg_coords->add_int64value((uintptr_t)coords);
26896
26897    // call function
26898    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26899    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26900    glContext->hooks->gl.glMultiTexCoord1bvOES(texture, coords);
26901    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26902    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26903
26904    void *pointerArgs[] = {
26905        (void *) coords,
26906    };
26907
26908    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26909                              threadStartTime, threadEndTime,
26910                              &glmsg, pointerArgs);
26911    glContext->traceGLMessage(&glmsg);
26912}
26913
26914void GLTrace_glMultiTexCoord2bOES(GLenum texture, GLbyte s, GLbyte t) {
26915    GLMessage glmsg;
26916    GLTraceContext *glContext = getGLTraceContext();
26917
26918    glmsg.set_function(GLMessage::glMultiTexCoord2bOES);
26919
26920    // copy argument texture
26921    GLMessage_DataType *arg_texture = glmsg.add_args();
26922    arg_texture->set_isarray(false);
26923    arg_texture->set_type(GLMessage::DataType::ENUM);
26924    arg_texture->add_intvalue((int)texture);
26925
26926    // copy argument s
26927    GLMessage_DataType *arg_s = glmsg.add_args();
26928    arg_s->set_isarray(false);
26929    arg_s->set_type(GLMessage::DataType::BYTE);
26930    arg_s->add_intvalue((int)s);
26931
26932    // copy argument t
26933    GLMessage_DataType *arg_t = glmsg.add_args();
26934    arg_t->set_isarray(false);
26935    arg_t->set_type(GLMessage::DataType::BYTE);
26936    arg_t->add_intvalue((int)t);
26937
26938    // call function
26939    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26940    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26941    glContext->hooks->gl.glMultiTexCoord2bOES(texture, s, t);
26942    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26943    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26944
26945    void *pointerArgs[] = {
26946    };
26947
26948    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26949                              threadStartTime, threadEndTime,
26950                              &glmsg, pointerArgs);
26951    glContext->traceGLMessage(&glmsg);
26952}
26953
26954void GLTrace_glMultiTexCoord2bvOES(GLenum texture, const GLbyte * coords) {
26955    GLMessage glmsg;
26956    GLTraceContext *glContext = getGLTraceContext();
26957
26958    glmsg.set_function(GLMessage::glMultiTexCoord2bvOES);
26959
26960    // copy argument texture
26961    GLMessage_DataType *arg_texture = glmsg.add_args();
26962    arg_texture->set_isarray(false);
26963    arg_texture->set_type(GLMessage::DataType::ENUM);
26964    arg_texture->add_intvalue((int)texture);
26965
26966    // copy argument coords
26967    GLMessage_DataType *arg_coords = glmsg.add_args();
26968    arg_coords->set_isarray(false);
26969    arg_coords->set_type(GLMessage::DataType::INT64);
26970    arg_coords->add_int64value((uintptr_t)coords);
26971
26972    // call function
26973    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
26974    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26975    glContext->hooks->gl.glMultiTexCoord2bvOES(texture, coords);
26976    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26977    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26978
26979    void *pointerArgs[] = {
26980        (void *) coords,
26981    };
26982
26983    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26984                              threadStartTime, threadEndTime,
26985                              &glmsg, pointerArgs);
26986    glContext->traceGLMessage(&glmsg);
26987}
26988
26989void GLTrace_glMultiTexCoord3bOES(GLenum texture, GLbyte s, GLbyte t, GLbyte r) {
26990    GLMessage glmsg;
26991    GLTraceContext *glContext = getGLTraceContext();
26992
26993    glmsg.set_function(GLMessage::glMultiTexCoord3bOES);
26994
26995    // copy argument texture
26996    GLMessage_DataType *arg_texture = glmsg.add_args();
26997    arg_texture->set_isarray(false);
26998    arg_texture->set_type(GLMessage::DataType::ENUM);
26999    arg_texture->add_intvalue((int)texture);
27000
27001    // copy argument s
27002    GLMessage_DataType *arg_s = glmsg.add_args();
27003    arg_s->set_isarray(false);
27004    arg_s->set_type(GLMessage::DataType::BYTE);
27005    arg_s->add_intvalue((int)s);
27006
27007    // copy argument t
27008    GLMessage_DataType *arg_t = glmsg.add_args();
27009    arg_t->set_isarray(false);
27010    arg_t->set_type(GLMessage::DataType::BYTE);
27011    arg_t->add_intvalue((int)t);
27012
27013    // copy argument r
27014    GLMessage_DataType *arg_r = glmsg.add_args();
27015    arg_r->set_isarray(false);
27016    arg_r->set_type(GLMessage::DataType::BYTE);
27017    arg_r->add_intvalue((int)r);
27018
27019    // call function
27020    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27021    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27022    glContext->hooks->gl.glMultiTexCoord3bOES(texture, s, t, r);
27023    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27024    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27025
27026    void *pointerArgs[] = {
27027    };
27028
27029    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27030                              threadStartTime, threadEndTime,
27031                              &glmsg, pointerArgs);
27032    glContext->traceGLMessage(&glmsg);
27033}
27034
27035void GLTrace_glMultiTexCoord3bvOES(GLenum texture, const GLbyte * coords) {
27036    GLMessage glmsg;
27037    GLTraceContext *glContext = getGLTraceContext();
27038
27039    glmsg.set_function(GLMessage::glMultiTexCoord3bvOES);
27040
27041    // copy argument texture
27042    GLMessage_DataType *arg_texture = glmsg.add_args();
27043    arg_texture->set_isarray(false);
27044    arg_texture->set_type(GLMessage::DataType::ENUM);
27045    arg_texture->add_intvalue((int)texture);
27046
27047    // copy argument coords
27048    GLMessage_DataType *arg_coords = glmsg.add_args();
27049    arg_coords->set_isarray(false);
27050    arg_coords->set_type(GLMessage::DataType::INT64);
27051    arg_coords->add_int64value((uintptr_t)coords);
27052
27053    // call function
27054    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27055    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27056    glContext->hooks->gl.glMultiTexCoord3bvOES(texture, coords);
27057    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27058    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27059
27060    void *pointerArgs[] = {
27061        (void *) coords,
27062    };
27063
27064    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27065                              threadStartTime, threadEndTime,
27066                              &glmsg, pointerArgs);
27067    glContext->traceGLMessage(&glmsg);
27068}
27069
27070void GLTrace_glMultiTexCoord4bOES(GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q) {
27071    GLMessage glmsg;
27072    GLTraceContext *glContext = getGLTraceContext();
27073
27074    glmsg.set_function(GLMessage::glMultiTexCoord4bOES);
27075
27076    // copy argument texture
27077    GLMessage_DataType *arg_texture = glmsg.add_args();
27078    arg_texture->set_isarray(false);
27079    arg_texture->set_type(GLMessage::DataType::ENUM);
27080    arg_texture->add_intvalue((int)texture);
27081
27082    // copy argument s
27083    GLMessage_DataType *arg_s = glmsg.add_args();
27084    arg_s->set_isarray(false);
27085    arg_s->set_type(GLMessage::DataType::BYTE);
27086    arg_s->add_intvalue((int)s);
27087
27088    // copy argument t
27089    GLMessage_DataType *arg_t = glmsg.add_args();
27090    arg_t->set_isarray(false);
27091    arg_t->set_type(GLMessage::DataType::BYTE);
27092    arg_t->add_intvalue((int)t);
27093
27094    // copy argument r
27095    GLMessage_DataType *arg_r = glmsg.add_args();
27096    arg_r->set_isarray(false);
27097    arg_r->set_type(GLMessage::DataType::BYTE);
27098    arg_r->add_intvalue((int)r);
27099
27100    // copy argument q
27101    GLMessage_DataType *arg_q = glmsg.add_args();
27102    arg_q->set_isarray(false);
27103    arg_q->set_type(GLMessage::DataType::BYTE);
27104    arg_q->add_intvalue((int)q);
27105
27106    // call function
27107    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27108    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27109    glContext->hooks->gl.glMultiTexCoord4bOES(texture, s, t, r, q);
27110    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27111    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27112
27113    void *pointerArgs[] = {
27114    };
27115
27116    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27117                              threadStartTime, threadEndTime,
27118                              &glmsg, pointerArgs);
27119    glContext->traceGLMessage(&glmsg);
27120}
27121
27122void GLTrace_glMultiTexCoord4bvOES(GLenum texture, const GLbyte * coords) {
27123    GLMessage glmsg;
27124    GLTraceContext *glContext = getGLTraceContext();
27125
27126    glmsg.set_function(GLMessage::glMultiTexCoord4bvOES);
27127
27128    // copy argument texture
27129    GLMessage_DataType *arg_texture = glmsg.add_args();
27130    arg_texture->set_isarray(false);
27131    arg_texture->set_type(GLMessage::DataType::ENUM);
27132    arg_texture->add_intvalue((int)texture);
27133
27134    // copy argument coords
27135    GLMessage_DataType *arg_coords = glmsg.add_args();
27136    arg_coords->set_isarray(false);
27137    arg_coords->set_type(GLMessage::DataType::INT64);
27138    arg_coords->add_int64value((uintptr_t)coords);
27139
27140    // call function
27141    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27142    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27143    glContext->hooks->gl.glMultiTexCoord4bvOES(texture, coords);
27144    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27145    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27146
27147    void *pointerArgs[] = {
27148        (void *) coords,
27149    };
27150
27151    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27152                              threadStartTime, threadEndTime,
27153                              &glmsg, pointerArgs);
27154    glContext->traceGLMessage(&glmsg);
27155}
27156
27157void GLTrace_glTexCoord1bOES(GLbyte s) {
27158    GLMessage glmsg;
27159    GLTraceContext *glContext = getGLTraceContext();
27160
27161    glmsg.set_function(GLMessage::glTexCoord1bOES);
27162
27163    // copy argument s
27164    GLMessage_DataType *arg_s = glmsg.add_args();
27165    arg_s->set_isarray(false);
27166    arg_s->set_type(GLMessage::DataType::BYTE);
27167    arg_s->add_intvalue((int)s);
27168
27169    // call function
27170    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27171    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27172    glContext->hooks->gl.glTexCoord1bOES(s);
27173    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27174    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27175
27176    void *pointerArgs[] = {
27177    };
27178
27179    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27180                              threadStartTime, threadEndTime,
27181                              &glmsg, pointerArgs);
27182    glContext->traceGLMessage(&glmsg);
27183}
27184
27185void GLTrace_glTexCoord1bvOES(const GLbyte * coords) {
27186    GLMessage glmsg;
27187    GLTraceContext *glContext = getGLTraceContext();
27188
27189    glmsg.set_function(GLMessage::glTexCoord1bvOES);
27190
27191    // copy argument coords
27192    GLMessage_DataType *arg_coords = glmsg.add_args();
27193    arg_coords->set_isarray(false);
27194    arg_coords->set_type(GLMessage::DataType::INT64);
27195    arg_coords->add_int64value((uintptr_t)coords);
27196
27197    // call function
27198    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27199    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27200    glContext->hooks->gl.glTexCoord1bvOES(coords);
27201    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27202    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27203
27204    void *pointerArgs[] = {
27205        (void *) coords,
27206    };
27207
27208    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27209                              threadStartTime, threadEndTime,
27210                              &glmsg, pointerArgs);
27211    glContext->traceGLMessage(&glmsg);
27212}
27213
27214void GLTrace_glTexCoord2bOES(GLbyte s, GLbyte t) {
27215    GLMessage glmsg;
27216    GLTraceContext *glContext = getGLTraceContext();
27217
27218    glmsg.set_function(GLMessage::glTexCoord2bOES);
27219
27220    // copy argument s
27221    GLMessage_DataType *arg_s = glmsg.add_args();
27222    arg_s->set_isarray(false);
27223    arg_s->set_type(GLMessage::DataType::BYTE);
27224    arg_s->add_intvalue((int)s);
27225
27226    // copy argument t
27227    GLMessage_DataType *arg_t = glmsg.add_args();
27228    arg_t->set_isarray(false);
27229    arg_t->set_type(GLMessage::DataType::BYTE);
27230    arg_t->add_intvalue((int)t);
27231
27232    // call function
27233    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27234    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27235    glContext->hooks->gl.glTexCoord2bOES(s, t);
27236    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27237    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27238
27239    void *pointerArgs[] = {
27240    };
27241
27242    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27243                              threadStartTime, threadEndTime,
27244                              &glmsg, pointerArgs);
27245    glContext->traceGLMessage(&glmsg);
27246}
27247
27248void GLTrace_glTexCoord2bvOES(const GLbyte * coords) {
27249    GLMessage glmsg;
27250    GLTraceContext *glContext = getGLTraceContext();
27251
27252    glmsg.set_function(GLMessage::glTexCoord2bvOES);
27253
27254    // copy argument coords
27255    GLMessage_DataType *arg_coords = glmsg.add_args();
27256    arg_coords->set_isarray(false);
27257    arg_coords->set_type(GLMessage::DataType::INT64);
27258    arg_coords->add_int64value((uintptr_t)coords);
27259
27260    // call function
27261    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27262    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27263    glContext->hooks->gl.glTexCoord2bvOES(coords);
27264    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27265    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27266
27267    void *pointerArgs[] = {
27268        (void *) coords,
27269    };
27270
27271    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27272                              threadStartTime, threadEndTime,
27273                              &glmsg, pointerArgs);
27274    glContext->traceGLMessage(&glmsg);
27275}
27276
27277void GLTrace_glTexCoord3bOES(GLbyte s, GLbyte t, GLbyte r) {
27278    GLMessage glmsg;
27279    GLTraceContext *glContext = getGLTraceContext();
27280
27281    glmsg.set_function(GLMessage::glTexCoord3bOES);
27282
27283    // copy argument s
27284    GLMessage_DataType *arg_s = glmsg.add_args();
27285    arg_s->set_isarray(false);
27286    arg_s->set_type(GLMessage::DataType::BYTE);
27287    arg_s->add_intvalue((int)s);
27288
27289    // copy argument t
27290    GLMessage_DataType *arg_t = glmsg.add_args();
27291    arg_t->set_isarray(false);
27292    arg_t->set_type(GLMessage::DataType::BYTE);
27293    arg_t->add_intvalue((int)t);
27294
27295    // copy argument r
27296    GLMessage_DataType *arg_r = glmsg.add_args();
27297    arg_r->set_isarray(false);
27298    arg_r->set_type(GLMessage::DataType::BYTE);
27299    arg_r->add_intvalue((int)r);
27300
27301    // call function
27302    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27303    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27304    glContext->hooks->gl.glTexCoord3bOES(s, t, r);
27305    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27306    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27307
27308    void *pointerArgs[] = {
27309    };
27310
27311    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27312                              threadStartTime, threadEndTime,
27313                              &glmsg, pointerArgs);
27314    glContext->traceGLMessage(&glmsg);
27315}
27316
27317void GLTrace_glTexCoord3bvOES(const GLbyte * coords) {
27318    GLMessage glmsg;
27319    GLTraceContext *glContext = getGLTraceContext();
27320
27321    glmsg.set_function(GLMessage::glTexCoord3bvOES);
27322
27323    // copy argument coords
27324    GLMessage_DataType *arg_coords = glmsg.add_args();
27325    arg_coords->set_isarray(false);
27326    arg_coords->set_type(GLMessage::DataType::INT64);
27327    arg_coords->add_int64value((uintptr_t)coords);
27328
27329    // call function
27330    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27331    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27332    glContext->hooks->gl.glTexCoord3bvOES(coords);
27333    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27334    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27335
27336    void *pointerArgs[] = {
27337        (void *) coords,
27338    };
27339
27340    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27341                              threadStartTime, threadEndTime,
27342                              &glmsg, pointerArgs);
27343    glContext->traceGLMessage(&glmsg);
27344}
27345
27346void GLTrace_glTexCoord4bOES(GLbyte s, GLbyte t, GLbyte r, GLbyte q) {
27347    GLMessage glmsg;
27348    GLTraceContext *glContext = getGLTraceContext();
27349
27350    glmsg.set_function(GLMessage::glTexCoord4bOES);
27351
27352    // copy argument s
27353    GLMessage_DataType *arg_s = glmsg.add_args();
27354    arg_s->set_isarray(false);
27355    arg_s->set_type(GLMessage::DataType::BYTE);
27356    arg_s->add_intvalue((int)s);
27357
27358    // copy argument t
27359    GLMessage_DataType *arg_t = glmsg.add_args();
27360    arg_t->set_isarray(false);
27361    arg_t->set_type(GLMessage::DataType::BYTE);
27362    arg_t->add_intvalue((int)t);
27363
27364    // copy argument r
27365    GLMessage_DataType *arg_r = glmsg.add_args();
27366    arg_r->set_isarray(false);
27367    arg_r->set_type(GLMessage::DataType::BYTE);
27368    arg_r->add_intvalue((int)r);
27369
27370    // copy argument q
27371    GLMessage_DataType *arg_q = glmsg.add_args();
27372    arg_q->set_isarray(false);
27373    arg_q->set_type(GLMessage::DataType::BYTE);
27374    arg_q->add_intvalue((int)q);
27375
27376    // call function
27377    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27378    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27379    glContext->hooks->gl.glTexCoord4bOES(s, t, r, q);
27380    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27381    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27382
27383    void *pointerArgs[] = {
27384    };
27385
27386    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27387                              threadStartTime, threadEndTime,
27388                              &glmsg, pointerArgs);
27389    glContext->traceGLMessage(&glmsg);
27390}
27391
27392void GLTrace_glTexCoord4bvOES(const GLbyte * coords) {
27393    GLMessage glmsg;
27394    GLTraceContext *glContext = getGLTraceContext();
27395
27396    glmsg.set_function(GLMessage::glTexCoord4bvOES);
27397
27398    // copy argument coords
27399    GLMessage_DataType *arg_coords = glmsg.add_args();
27400    arg_coords->set_isarray(false);
27401    arg_coords->set_type(GLMessage::DataType::INT64);
27402    arg_coords->add_int64value((uintptr_t)coords);
27403
27404    // call function
27405    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27406    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27407    glContext->hooks->gl.glTexCoord4bvOES(coords);
27408    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27409    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27410
27411    void *pointerArgs[] = {
27412        (void *) coords,
27413    };
27414
27415    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27416                              threadStartTime, threadEndTime,
27417                              &glmsg, pointerArgs);
27418    glContext->traceGLMessage(&glmsg);
27419}
27420
27421void GLTrace_glVertex2bOES(GLbyte x) {
27422    GLMessage glmsg;
27423    GLTraceContext *glContext = getGLTraceContext();
27424
27425    glmsg.set_function(GLMessage::glVertex2bOES);
27426
27427    // copy argument x
27428    GLMessage_DataType *arg_x = glmsg.add_args();
27429    arg_x->set_isarray(false);
27430    arg_x->set_type(GLMessage::DataType::BYTE);
27431    arg_x->add_intvalue((int)x);
27432
27433    // call function
27434    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27435    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27436    glContext->hooks->gl.glVertex2bOES(x);
27437    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27438    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27439
27440    void *pointerArgs[] = {
27441    };
27442
27443    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27444                              threadStartTime, threadEndTime,
27445                              &glmsg, pointerArgs);
27446    glContext->traceGLMessage(&glmsg);
27447}
27448
27449void GLTrace_glVertex2bvOES(const GLbyte * coords) {
27450    GLMessage glmsg;
27451    GLTraceContext *glContext = getGLTraceContext();
27452
27453    glmsg.set_function(GLMessage::glVertex2bvOES);
27454
27455    // copy argument coords
27456    GLMessage_DataType *arg_coords = glmsg.add_args();
27457    arg_coords->set_isarray(false);
27458    arg_coords->set_type(GLMessage::DataType::INT64);
27459    arg_coords->add_int64value((uintptr_t)coords);
27460
27461    // call function
27462    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27463    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27464    glContext->hooks->gl.glVertex2bvOES(coords);
27465    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27466    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27467
27468    void *pointerArgs[] = {
27469        (void *) coords,
27470    };
27471
27472    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27473                              threadStartTime, threadEndTime,
27474                              &glmsg, pointerArgs);
27475    glContext->traceGLMessage(&glmsg);
27476}
27477
27478void GLTrace_glVertex3bOES(GLbyte x, GLbyte y) {
27479    GLMessage glmsg;
27480    GLTraceContext *glContext = getGLTraceContext();
27481
27482    glmsg.set_function(GLMessage::glVertex3bOES);
27483
27484    // copy argument x
27485    GLMessage_DataType *arg_x = glmsg.add_args();
27486    arg_x->set_isarray(false);
27487    arg_x->set_type(GLMessage::DataType::BYTE);
27488    arg_x->add_intvalue((int)x);
27489
27490    // copy argument y
27491    GLMessage_DataType *arg_y = glmsg.add_args();
27492    arg_y->set_isarray(false);
27493    arg_y->set_type(GLMessage::DataType::BYTE);
27494    arg_y->add_intvalue((int)y);
27495
27496    // call function
27497    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27498    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27499    glContext->hooks->gl.glVertex3bOES(x, y);
27500    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27501    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27502
27503    void *pointerArgs[] = {
27504    };
27505
27506    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27507                              threadStartTime, threadEndTime,
27508                              &glmsg, pointerArgs);
27509    glContext->traceGLMessage(&glmsg);
27510}
27511
27512void GLTrace_glVertex3bvOES(const GLbyte * coords) {
27513    GLMessage glmsg;
27514    GLTraceContext *glContext = getGLTraceContext();
27515
27516    glmsg.set_function(GLMessage::glVertex3bvOES);
27517
27518    // copy argument coords
27519    GLMessage_DataType *arg_coords = glmsg.add_args();
27520    arg_coords->set_isarray(false);
27521    arg_coords->set_type(GLMessage::DataType::INT64);
27522    arg_coords->add_int64value((uintptr_t)coords);
27523
27524    // call function
27525    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27526    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27527    glContext->hooks->gl.glVertex3bvOES(coords);
27528    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27529    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27530
27531    void *pointerArgs[] = {
27532        (void *) coords,
27533    };
27534
27535    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27536                              threadStartTime, threadEndTime,
27537                              &glmsg, pointerArgs);
27538    glContext->traceGLMessage(&glmsg);
27539}
27540
27541void GLTrace_glVertex4bOES(GLbyte x, GLbyte y, GLbyte z) {
27542    GLMessage glmsg;
27543    GLTraceContext *glContext = getGLTraceContext();
27544
27545    glmsg.set_function(GLMessage::glVertex4bOES);
27546
27547    // copy argument x
27548    GLMessage_DataType *arg_x = glmsg.add_args();
27549    arg_x->set_isarray(false);
27550    arg_x->set_type(GLMessage::DataType::BYTE);
27551    arg_x->add_intvalue((int)x);
27552
27553    // copy argument y
27554    GLMessage_DataType *arg_y = glmsg.add_args();
27555    arg_y->set_isarray(false);
27556    arg_y->set_type(GLMessage::DataType::BYTE);
27557    arg_y->add_intvalue((int)y);
27558
27559    // copy argument z
27560    GLMessage_DataType *arg_z = glmsg.add_args();
27561    arg_z->set_isarray(false);
27562    arg_z->set_type(GLMessage::DataType::BYTE);
27563    arg_z->add_intvalue((int)z);
27564
27565    // call function
27566    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27567    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27568    glContext->hooks->gl.glVertex4bOES(x, y, z);
27569    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27570    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27571
27572    void *pointerArgs[] = {
27573    };
27574
27575    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27576                              threadStartTime, threadEndTime,
27577                              &glmsg, pointerArgs);
27578    glContext->traceGLMessage(&glmsg);
27579}
27580
27581void GLTrace_glVertex4bvOES(const GLbyte * coords) {
27582    GLMessage glmsg;
27583    GLTraceContext *glContext = getGLTraceContext();
27584
27585    glmsg.set_function(GLMessage::glVertex4bvOES);
27586
27587    // copy argument coords
27588    GLMessage_DataType *arg_coords = glmsg.add_args();
27589    arg_coords->set_isarray(false);
27590    arg_coords->set_type(GLMessage::DataType::INT64);
27591    arg_coords->add_int64value((uintptr_t)coords);
27592
27593    // call function
27594    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27595    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27596    glContext->hooks->gl.glVertex4bvOES(coords);
27597    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27598    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27599
27600    void *pointerArgs[] = {
27601        (void *) coords,
27602    };
27603
27604    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27605                              threadStartTime, threadEndTime,
27606                              &glmsg, pointerArgs);
27607    glContext->traceGLMessage(&glmsg);
27608}
27609
27610void GLTrace_glDrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height) {
27611    GLMessage glmsg;
27612    GLTraceContext *glContext = getGLTraceContext();
27613
27614    glmsg.set_function(GLMessage::glDrawTexsOES);
27615
27616    // copy argument x
27617    GLMessage_DataType *arg_x = glmsg.add_args();
27618    arg_x->set_isarray(false);
27619    arg_x->set_type(GLMessage::DataType::INT);
27620    arg_x->add_intvalue(x);
27621
27622    // copy argument y
27623    GLMessage_DataType *arg_y = glmsg.add_args();
27624    arg_y->set_isarray(false);
27625    arg_y->set_type(GLMessage::DataType::INT);
27626    arg_y->add_intvalue(y);
27627
27628    // copy argument z
27629    GLMessage_DataType *arg_z = glmsg.add_args();
27630    arg_z->set_isarray(false);
27631    arg_z->set_type(GLMessage::DataType::INT);
27632    arg_z->add_intvalue(z);
27633
27634    // copy argument width
27635    GLMessage_DataType *arg_width = glmsg.add_args();
27636    arg_width->set_isarray(false);
27637    arg_width->set_type(GLMessage::DataType::INT);
27638    arg_width->add_intvalue(width);
27639
27640    // copy argument height
27641    GLMessage_DataType *arg_height = glmsg.add_args();
27642    arg_height->set_isarray(false);
27643    arg_height->set_type(GLMessage::DataType::INT);
27644    arg_height->add_intvalue(height);
27645
27646    // call function
27647    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27648    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27649    glContext->hooks->gl.glDrawTexsOES(x, y, z, width, height);
27650    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27651    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27652
27653    void *pointerArgs[] = {
27654    };
27655
27656    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27657                              threadStartTime, threadEndTime,
27658                              &glmsg, pointerArgs);
27659    glContext->traceGLMessage(&glmsg);
27660}
27661
27662void GLTrace_glDrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height) {
27663    GLMessage glmsg;
27664    GLTraceContext *glContext = getGLTraceContext();
27665
27666    glmsg.set_function(GLMessage::glDrawTexiOES);
27667
27668    // copy argument x
27669    GLMessage_DataType *arg_x = glmsg.add_args();
27670    arg_x->set_isarray(false);
27671    arg_x->set_type(GLMessage::DataType::INT);
27672    arg_x->add_intvalue(x);
27673
27674    // copy argument y
27675    GLMessage_DataType *arg_y = glmsg.add_args();
27676    arg_y->set_isarray(false);
27677    arg_y->set_type(GLMessage::DataType::INT);
27678    arg_y->add_intvalue(y);
27679
27680    // copy argument z
27681    GLMessage_DataType *arg_z = glmsg.add_args();
27682    arg_z->set_isarray(false);
27683    arg_z->set_type(GLMessage::DataType::INT);
27684    arg_z->add_intvalue(z);
27685
27686    // copy argument width
27687    GLMessage_DataType *arg_width = glmsg.add_args();
27688    arg_width->set_isarray(false);
27689    arg_width->set_type(GLMessage::DataType::INT);
27690    arg_width->add_intvalue(width);
27691
27692    // copy argument height
27693    GLMessage_DataType *arg_height = glmsg.add_args();
27694    arg_height->set_isarray(false);
27695    arg_height->set_type(GLMessage::DataType::INT);
27696    arg_height->add_intvalue(height);
27697
27698    // call function
27699    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27700    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27701    glContext->hooks->gl.glDrawTexiOES(x, y, z, width, height);
27702    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27703    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27704
27705    void *pointerArgs[] = {
27706    };
27707
27708    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27709                              threadStartTime, threadEndTime,
27710                              &glmsg, pointerArgs);
27711    glContext->traceGLMessage(&glmsg);
27712}
27713
27714void GLTrace_glDrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height) {
27715    GLMessage glmsg;
27716    GLTraceContext *glContext = getGLTraceContext();
27717
27718    glmsg.set_function(GLMessage::glDrawTexxOES);
27719
27720    // copy argument x
27721    GLMessage_DataType *arg_x = glmsg.add_args();
27722    arg_x->set_isarray(false);
27723    arg_x->set_type(GLMessage::DataType::INT);
27724    arg_x->add_intvalue(x);
27725
27726    // copy argument y
27727    GLMessage_DataType *arg_y = glmsg.add_args();
27728    arg_y->set_isarray(false);
27729    arg_y->set_type(GLMessage::DataType::INT);
27730    arg_y->add_intvalue(y);
27731
27732    // copy argument z
27733    GLMessage_DataType *arg_z = glmsg.add_args();
27734    arg_z->set_isarray(false);
27735    arg_z->set_type(GLMessage::DataType::INT);
27736    arg_z->add_intvalue(z);
27737
27738    // copy argument width
27739    GLMessage_DataType *arg_width = glmsg.add_args();
27740    arg_width->set_isarray(false);
27741    arg_width->set_type(GLMessage::DataType::INT);
27742    arg_width->add_intvalue(width);
27743
27744    // copy argument height
27745    GLMessage_DataType *arg_height = glmsg.add_args();
27746    arg_height->set_isarray(false);
27747    arg_height->set_type(GLMessage::DataType::INT);
27748    arg_height->add_intvalue(height);
27749
27750    // call function
27751    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27752    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27753    glContext->hooks->gl.glDrawTexxOES(x, y, z, width, height);
27754    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27755    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27756
27757    void *pointerArgs[] = {
27758    };
27759
27760    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27761                              threadStartTime, threadEndTime,
27762                              &glmsg, pointerArgs);
27763    glContext->traceGLMessage(&glmsg);
27764}
27765
27766void GLTrace_glDrawTexsvOES(const GLshort * coords) {
27767    GLMessage glmsg;
27768    GLTraceContext *glContext = getGLTraceContext();
27769
27770    glmsg.set_function(GLMessage::glDrawTexsvOES);
27771
27772    // copy argument coords
27773    GLMessage_DataType *arg_coords = glmsg.add_args();
27774    arg_coords->set_isarray(false);
27775    arg_coords->set_type(GLMessage::DataType::INT64);
27776    arg_coords->add_int64value((uintptr_t)coords);
27777
27778    // call function
27779    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27780    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27781    glContext->hooks->gl.glDrawTexsvOES(coords);
27782    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27783    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27784
27785    void *pointerArgs[] = {
27786        (void *) coords,
27787    };
27788
27789    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27790                              threadStartTime, threadEndTime,
27791                              &glmsg, pointerArgs);
27792    glContext->traceGLMessage(&glmsg);
27793}
27794
27795void GLTrace_glDrawTexivOES(const GLint * coords) {
27796    GLMessage glmsg;
27797    GLTraceContext *glContext = getGLTraceContext();
27798
27799    glmsg.set_function(GLMessage::glDrawTexivOES);
27800
27801    // copy argument coords
27802    GLMessage_DataType *arg_coords = glmsg.add_args();
27803    arg_coords->set_isarray(false);
27804    arg_coords->set_type(GLMessage::DataType::INT64);
27805    arg_coords->add_int64value((uintptr_t)coords);
27806
27807    // call function
27808    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27809    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27810    glContext->hooks->gl.glDrawTexivOES(coords);
27811    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27812    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27813
27814    void *pointerArgs[] = {
27815        (void *) coords,
27816    };
27817
27818    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27819                              threadStartTime, threadEndTime,
27820                              &glmsg, pointerArgs);
27821    glContext->traceGLMessage(&glmsg);
27822}
27823
27824void GLTrace_glDrawTexxvOES(const GLfixed * coords) {
27825    GLMessage glmsg;
27826    GLTraceContext *glContext = getGLTraceContext();
27827
27828    glmsg.set_function(GLMessage::glDrawTexxvOES);
27829
27830    // copy argument coords
27831    GLMessage_DataType *arg_coords = glmsg.add_args();
27832    arg_coords->set_isarray(false);
27833    arg_coords->set_type(GLMessage::DataType::INT64);
27834    arg_coords->add_int64value((uintptr_t)coords);
27835
27836    // call function
27837    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27838    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27839    glContext->hooks->gl.glDrawTexxvOES(coords);
27840    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27841    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27842
27843    void *pointerArgs[] = {
27844        (void *) coords,
27845    };
27846
27847    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27848                              threadStartTime, threadEndTime,
27849                              &glmsg, pointerArgs);
27850    glContext->traceGLMessage(&glmsg);
27851}
27852
27853void GLTrace_glDrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height) {
27854    GLMessage glmsg;
27855    GLTraceContext *glContext = getGLTraceContext();
27856
27857    glmsg.set_function(GLMessage::glDrawTexfOES);
27858
27859    // copy argument x
27860    GLMessage_DataType *arg_x = glmsg.add_args();
27861    arg_x->set_isarray(false);
27862    arg_x->set_type(GLMessage::DataType::FLOAT);
27863    arg_x->add_floatvalue(x);
27864
27865    // copy argument y
27866    GLMessage_DataType *arg_y = glmsg.add_args();
27867    arg_y->set_isarray(false);
27868    arg_y->set_type(GLMessage::DataType::FLOAT);
27869    arg_y->add_floatvalue(y);
27870
27871    // copy argument z
27872    GLMessage_DataType *arg_z = glmsg.add_args();
27873    arg_z->set_isarray(false);
27874    arg_z->set_type(GLMessage::DataType::FLOAT);
27875    arg_z->add_floatvalue(z);
27876
27877    // copy argument width
27878    GLMessage_DataType *arg_width = glmsg.add_args();
27879    arg_width->set_isarray(false);
27880    arg_width->set_type(GLMessage::DataType::FLOAT);
27881    arg_width->add_floatvalue(width);
27882
27883    // copy argument height
27884    GLMessage_DataType *arg_height = glmsg.add_args();
27885    arg_height->set_isarray(false);
27886    arg_height->set_type(GLMessage::DataType::FLOAT);
27887    arg_height->add_floatvalue(height);
27888
27889    // call function
27890    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27891    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27892    glContext->hooks->gl.glDrawTexfOES(x, y, z, width, height);
27893    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27894    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27895
27896    void *pointerArgs[] = {
27897    };
27898
27899    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27900                              threadStartTime, threadEndTime,
27901                              &glmsg, pointerArgs);
27902    glContext->traceGLMessage(&glmsg);
27903}
27904
27905void GLTrace_glDrawTexfvOES(const GLfloat * coords) {
27906    GLMessage glmsg;
27907    GLTraceContext *glContext = getGLTraceContext();
27908
27909    glmsg.set_function(GLMessage::glDrawTexfvOES);
27910
27911    // copy argument coords
27912    GLMessage_DataType *arg_coords = glmsg.add_args();
27913    arg_coords->set_isarray(false);
27914    arg_coords->set_type(GLMessage::DataType::INT64);
27915    arg_coords->add_int64value((uintptr_t)coords);
27916
27917    // call function
27918    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27919    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27920    glContext->hooks->gl.glDrawTexfvOES(coords);
27921    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27922    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27923
27924    void *pointerArgs[] = {
27925        (void *) coords,
27926    };
27927
27928    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27929                              threadStartTime, threadEndTime,
27930                              &glmsg, pointerArgs);
27931    glContext->traceGLMessage(&glmsg);
27932}
27933
27934void GLTrace_glAlphaFuncxOES(GLenum func, GLfixed ref) {
27935    GLMessage glmsg;
27936    GLTraceContext *glContext = getGLTraceContext();
27937
27938    glmsg.set_function(GLMessage::glAlphaFuncxOES);
27939
27940    // copy argument func
27941    GLMessage_DataType *arg_func = glmsg.add_args();
27942    arg_func->set_isarray(false);
27943    arg_func->set_type(GLMessage::DataType::ENUM);
27944    arg_func->add_intvalue((int)func);
27945
27946    // copy argument ref
27947    GLMessage_DataType *arg_ref = glmsg.add_args();
27948    arg_ref->set_isarray(false);
27949    arg_ref->set_type(GLMessage::DataType::INT);
27950    arg_ref->add_intvalue(ref);
27951
27952    // call function
27953    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
27954    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27955    glContext->hooks->gl.glAlphaFuncxOES(func, ref);
27956    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
27957    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27958
27959    void *pointerArgs[] = {
27960    };
27961
27962    fixupGLMessage(glContext, wallStartTime, wallEndTime,
27963                              threadStartTime, threadEndTime,
27964                              &glmsg, pointerArgs);
27965    glContext->traceGLMessage(&glmsg);
27966}
27967
27968void GLTrace_glClearColorxOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {
27969    GLMessage glmsg;
27970    GLTraceContext *glContext = getGLTraceContext();
27971
27972    glmsg.set_function(GLMessage::glClearColorxOES);
27973
27974    // copy argument red
27975    GLMessage_DataType *arg_red = glmsg.add_args();
27976    arg_red->set_isarray(false);
27977    arg_red->set_type(GLMessage::DataType::INT);
27978    arg_red->add_intvalue(red);
27979
27980    // copy argument green
27981    GLMessage_DataType *arg_green = glmsg.add_args();
27982    arg_green->set_isarray(false);
27983    arg_green->set_type(GLMessage::DataType::INT);
27984    arg_green->add_intvalue(green);
27985
27986    // copy argument blue
27987    GLMessage_DataType *arg_blue = glmsg.add_args();
27988    arg_blue->set_isarray(false);
27989    arg_blue->set_type(GLMessage::DataType::INT);
27990    arg_blue->add_intvalue(blue);
27991
27992    // copy argument alpha
27993    GLMessage_DataType *arg_alpha = glmsg.add_args();
27994    arg_alpha->set_isarray(false);
27995    arg_alpha->set_type(GLMessage::DataType::INT);
27996    arg_alpha->add_intvalue(alpha);
27997
27998    // call function
27999    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28000    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28001    glContext->hooks->gl.glClearColorxOES(red, green, blue, alpha);
28002    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28003    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28004
28005    void *pointerArgs[] = {
28006    };
28007
28008    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28009                              threadStartTime, threadEndTime,
28010                              &glmsg, pointerArgs);
28011    glContext->traceGLMessage(&glmsg);
28012}
28013
28014void GLTrace_glClearDepthxOES(GLfixed depth) {
28015    GLMessage glmsg;
28016    GLTraceContext *glContext = getGLTraceContext();
28017
28018    glmsg.set_function(GLMessage::glClearDepthxOES);
28019
28020    // copy argument depth
28021    GLMessage_DataType *arg_depth = glmsg.add_args();
28022    arg_depth->set_isarray(false);
28023    arg_depth->set_type(GLMessage::DataType::INT);
28024    arg_depth->add_intvalue(depth);
28025
28026    // call function
28027    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28028    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28029    glContext->hooks->gl.glClearDepthxOES(depth);
28030    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28031    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28032
28033    void *pointerArgs[] = {
28034    };
28035
28036    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28037                              threadStartTime, threadEndTime,
28038                              &glmsg, pointerArgs);
28039    glContext->traceGLMessage(&glmsg);
28040}
28041
28042void GLTrace_glClipPlanexOES(GLenum plane, const GLfixed * equation) {
28043    GLMessage glmsg;
28044    GLTraceContext *glContext = getGLTraceContext();
28045
28046    glmsg.set_function(GLMessage::glClipPlanexOES);
28047
28048    // copy argument plane
28049    GLMessage_DataType *arg_plane = glmsg.add_args();
28050    arg_plane->set_isarray(false);
28051    arg_plane->set_type(GLMessage::DataType::ENUM);
28052    arg_plane->add_intvalue((int)plane);
28053
28054    // copy argument equation
28055    GLMessage_DataType *arg_equation = glmsg.add_args();
28056    arg_equation->set_isarray(false);
28057    arg_equation->set_type(GLMessage::DataType::INT64);
28058    arg_equation->add_int64value((uintptr_t)equation);
28059
28060    // call function
28061    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28062    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28063    glContext->hooks->gl.glClipPlanexOES(plane, equation);
28064    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28065    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28066
28067    void *pointerArgs[] = {
28068        (void *) equation,
28069    };
28070
28071    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28072                              threadStartTime, threadEndTime,
28073                              &glmsg, pointerArgs);
28074    glContext->traceGLMessage(&glmsg);
28075}
28076
28077void GLTrace_glColor4xOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {
28078    GLMessage glmsg;
28079    GLTraceContext *glContext = getGLTraceContext();
28080
28081    glmsg.set_function(GLMessage::glColor4xOES);
28082
28083    // copy argument red
28084    GLMessage_DataType *arg_red = glmsg.add_args();
28085    arg_red->set_isarray(false);
28086    arg_red->set_type(GLMessage::DataType::INT);
28087    arg_red->add_intvalue(red);
28088
28089    // copy argument green
28090    GLMessage_DataType *arg_green = glmsg.add_args();
28091    arg_green->set_isarray(false);
28092    arg_green->set_type(GLMessage::DataType::INT);
28093    arg_green->add_intvalue(green);
28094
28095    // copy argument blue
28096    GLMessage_DataType *arg_blue = glmsg.add_args();
28097    arg_blue->set_isarray(false);
28098    arg_blue->set_type(GLMessage::DataType::INT);
28099    arg_blue->add_intvalue(blue);
28100
28101    // copy argument alpha
28102    GLMessage_DataType *arg_alpha = glmsg.add_args();
28103    arg_alpha->set_isarray(false);
28104    arg_alpha->set_type(GLMessage::DataType::INT);
28105    arg_alpha->add_intvalue(alpha);
28106
28107    // call function
28108    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28109    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28110    glContext->hooks->gl.glColor4xOES(red, green, blue, alpha);
28111    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28112    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28113
28114    void *pointerArgs[] = {
28115    };
28116
28117    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28118                              threadStartTime, threadEndTime,
28119                              &glmsg, pointerArgs);
28120    glContext->traceGLMessage(&glmsg);
28121}
28122
28123void GLTrace_glDepthRangexOES(GLfixed n, GLfixed f) {
28124    GLMessage glmsg;
28125    GLTraceContext *glContext = getGLTraceContext();
28126
28127    glmsg.set_function(GLMessage::glDepthRangexOES);
28128
28129    // copy argument n
28130    GLMessage_DataType *arg_n = glmsg.add_args();
28131    arg_n->set_isarray(false);
28132    arg_n->set_type(GLMessage::DataType::INT);
28133    arg_n->add_intvalue(n);
28134
28135    // copy argument f
28136    GLMessage_DataType *arg_f = glmsg.add_args();
28137    arg_f->set_isarray(false);
28138    arg_f->set_type(GLMessage::DataType::INT);
28139    arg_f->add_intvalue(f);
28140
28141    // call function
28142    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28143    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28144    glContext->hooks->gl.glDepthRangexOES(n, f);
28145    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28146    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28147
28148    void *pointerArgs[] = {
28149    };
28150
28151    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28152                              threadStartTime, threadEndTime,
28153                              &glmsg, pointerArgs);
28154    glContext->traceGLMessage(&glmsg);
28155}
28156
28157void GLTrace_glFogxOES(GLenum pname, GLfixed param) {
28158    GLMessage glmsg;
28159    GLTraceContext *glContext = getGLTraceContext();
28160
28161    glmsg.set_function(GLMessage::glFogxOES);
28162
28163    // copy argument pname
28164    GLMessage_DataType *arg_pname = glmsg.add_args();
28165    arg_pname->set_isarray(false);
28166    arg_pname->set_type(GLMessage::DataType::ENUM);
28167    arg_pname->add_intvalue((int)pname);
28168
28169    // copy argument param
28170    GLMessage_DataType *arg_param = glmsg.add_args();
28171    arg_param->set_isarray(false);
28172    arg_param->set_type(GLMessage::DataType::INT);
28173    arg_param->add_intvalue(param);
28174
28175    // call function
28176    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28177    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28178    glContext->hooks->gl.glFogxOES(pname, param);
28179    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28180    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28181
28182    void *pointerArgs[] = {
28183    };
28184
28185    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28186                              threadStartTime, threadEndTime,
28187                              &glmsg, pointerArgs);
28188    glContext->traceGLMessage(&glmsg);
28189}
28190
28191void GLTrace_glFogxvOES(GLenum pname, const GLfixed * param) {
28192    GLMessage glmsg;
28193    GLTraceContext *glContext = getGLTraceContext();
28194
28195    glmsg.set_function(GLMessage::glFogxvOES);
28196
28197    // copy argument pname
28198    GLMessage_DataType *arg_pname = glmsg.add_args();
28199    arg_pname->set_isarray(false);
28200    arg_pname->set_type(GLMessage::DataType::ENUM);
28201    arg_pname->add_intvalue((int)pname);
28202
28203    // copy argument param
28204    GLMessage_DataType *arg_param = glmsg.add_args();
28205    arg_param->set_isarray(false);
28206    arg_param->set_type(GLMessage::DataType::INT64);
28207    arg_param->add_int64value((uintptr_t)param);
28208
28209    // call function
28210    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28211    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28212    glContext->hooks->gl.glFogxvOES(pname, param);
28213    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28214    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28215
28216    void *pointerArgs[] = {
28217        (void *) param,
28218    };
28219
28220    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28221                              threadStartTime, threadEndTime,
28222                              &glmsg, pointerArgs);
28223    glContext->traceGLMessage(&glmsg);
28224}
28225
28226void GLTrace_glFrustumxOES(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f) {
28227    GLMessage glmsg;
28228    GLTraceContext *glContext = getGLTraceContext();
28229
28230    glmsg.set_function(GLMessage::glFrustumxOES);
28231
28232    // copy argument l
28233    GLMessage_DataType *arg_l = glmsg.add_args();
28234    arg_l->set_isarray(false);
28235    arg_l->set_type(GLMessage::DataType::INT);
28236    arg_l->add_intvalue(l);
28237
28238    // copy argument r
28239    GLMessage_DataType *arg_r = glmsg.add_args();
28240    arg_r->set_isarray(false);
28241    arg_r->set_type(GLMessage::DataType::INT);
28242    arg_r->add_intvalue(r);
28243
28244    // copy argument b
28245    GLMessage_DataType *arg_b = glmsg.add_args();
28246    arg_b->set_isarray(false);
28247    arg_b->set_type(GLMessage::DataType::INT);
28248    arg_b->add_intvalue(b);
28249
28250    // copy argument t
28251    GLMessage_DataType *arg_t = glmsg.add_args();
28252    arg_t->set_isarray(false);
28253    arg_t->set_type(GLMessage::DataType::INT);
28254    arg_t->add_intvalue(t);
28255
28256    // copy argument n
28257    GLMessage_DataType *arg_n = glmsg.add_args();
28258    arg_n->set_isarray(false);
28259    arg_n->set_type(GLMessage::DataType::INT);
28260    arg_n->add_intvalue(n);
28261
28262    // copy argument f
28263    GLMessage_DataType *arg_f = glmsg.add_args();
28264    arg_f->set_isarray(false);
28265    arg_f->set_type(GLMessage::DataType::INT);
28266    arg_f->add_intvalue(f);
28267
28268    // call function
28269    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28270    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28271    glContext->hooks->gl.glFrustumxOES(l, r, b, t, n, f);
28272    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28273    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28274
28275    void *pointerArgs[] = {
28276    };
28277
28278    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28279                              threadStartTime, threadEndTime,
28280                              &glmsg, pointerArgs);
28281    glContext->traceGLMessage(&glmsg);
28282}
28283
28284void GLTrace_glGetClipPlanexOES(GLenum plane, GLfixed * equation) {
28285    GLMessage glmsg;
28286    GLTraceContext *glContext = getGLTraceContext();
28287
28288    glmsg.set_function(GLMessage::glGetClipPlanexOES);
28289
28290    // copy argument plane
28291    GLMessage_DataType *arg_plane = glmsg.add_args();
28292    arg_plane->set_isarray(false);
28293    arg_plane->set_type(GLMessage::DataType::ENUM);
28294    arg_plane->add_intvalue((int)plane);
28295
28296    // copy argument equation
28297    GLMessage_DataType *arg_equation = glmsg.add_args();
28298    arg_equation->set_isarray(false);
28299    arg_equation->set_type(GLMessage::DataType::INT64);
28300    arg_equation->add_int64value((uintptr_t)equation);
28301
28302    // call function
28303    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28304    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28305    glContext->hooks->gl.glGetClipPlanexOES(plane, equation);
28306    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28307    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28308
28309    void *pointerArgs[] = {
28310        (void *) equation,
28311    };
28312
28313    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28314                              threadStartTime, threadEndTime,
28315                              &glmsg, pointerArgs);
28316    glContext->traceGLMessage(&glmsg);
28317}
28318
28319void GLTrace_glGetFixedvOES(GLenum pname, GLfixed * params) {
28320    GLMessage glmsg;
28321    GLTraceContext *glContext = getGLTraceContext();
28322
28323    glmsg.set_function(GLMessage::glGetFixedvOES);
28324
28325    // copy argument pname
28326    GLMessage_DataType *arg_pname = glmsg.add_args();
28327    arg_pname->set_isarray(false);
28328    arg_pname->set_type(GLMessage::DataType::ENUM);
28329    arg_pname->add_intvalue((int)pname);
28330
28331    // copy argument params
28332    GLMessage_DataType *arg_params = glmsg.add_args();
28333    arg_params->set_isarray(false);
28334    arg_params->set_type(GLMessage::DataType::INT64);
28335    arg_params->add_int64value((uintptr_t)params);
28336
28337    // call function
28338    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28339    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28340    glContext->hooks->gl.glGetFixedvOES(pname, params);
28341    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28342    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28343
28344    void *pointerArgs[] = {
28345        (void *) params,
28346    };
28347
28348    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28349                              threadStartTime, threadEndTime,
28350                              &glmsg, pointerArgs);
28351    glContext->traceGLMessage(&glmsg);
28352}
28353
28354void GLTrace_glGetTexEnvxvOES(GLenum target, GLenum pname, GLfixed * params) {
28355    GLMessage glmsg;
28356    GLTraceContext *glContext = getGLTraceContext();
28357
28358    glmsg.set_function(GLMessage::glGetTexEnvxvOES);
28359
28360    // copy argument target
28361    GLMessage_DataType *arg_target = glmsg.add_args();
28362    arg_target->set_isarray(false);
28363    arg_target->set_type(GLMessage::DataType::ENUM);
28364    arg_target->add_intvalue((int)target);
28365
28366    // copy argument pname
28367    GLMessage_DataType *arg_pname = glmsg.add_args();
28368    arg_pname->set_isarray(false);
28369    arg_pname->set_type(GLMessage::DataType::ENUM);
28370    arg_pname->add_intvalue((int)pname);
28371
28372    // copy argument params
28373    GLMessage_DataType *arg_params = glmsg.add_args();
28374    arg_params->set_isarray(false);
28375    arg_params->set_type(GLMessage::DataType::INT64);
28376    arg_params->add_int64value((uintptr_t)params);
28377
28378    // call function
28379    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28380    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28381    glContext->hooks->gl.glGetTexEnvxvOES(target, pname, params);
28382    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28383    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28384
28385    void *pointerArgs[] = {
28386        (void *) params,
28387    };
28388
28389    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28390                              threadStartTime, threadEndTime,
28391                              &glmsg, pointerArgs);
28392    glContext->traceGLMessage(&glmsg);
28393}
28394
28395void GLTrace_glGetTexParameterxvOES(GLenum target, GLenum pname, GLfixed * params) {
28396    GLMessage glmsg;
28397    GLTraceContext *glContext = getGLTraceContext();
28398
28399    glmsg.set_function(GLMessage::glGetTexParameterxvOES);
28400
28401    // copy argument target
28402    GLMessage_DataType *arg_target = glmsg.add_args();
28403    arg_target->set_isarray(false);
28404    arg_target->set_type(GLMessage::DataType::ENUM);
28405    arg_target->add_intvalue((int)target);
28406
28407    // copy argument pname
28408    GLMessage_DataType *arg_pname = glmsg.add_args();
28409    arg_pname->set_isarray(false);
28410    arg_pname->set_type(GLMessage::DataType::ENUM);
28411    arg_pname->add_intvalue((int)pname);
28412
28413    // copy argument params
28414    GLMessage_DataType *arg_params = glmsg.add_args();
28415    arg_params->set_isarray(false);
28416    arg_params->set_type(GLMessage::DataType::INT64);
28417    arg_params->add_int64value((uintptr_t)params);
28418
28419    // call function
28420    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28421    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28422    glContext->hooks->gl.glGetTexParameterxvOES(target, pname, params);
28423    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28424    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28425
28426    void *pointerArgs[] = {
28427        (void *) params,
28428    };
28429
28430    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28431                              threadStartTime, threadEndTime,
28432                              &glmsg, pointerArgs);
28433    glContext->traceGLMessage(&glmsg);
28434}
28435
28436void GLTrace_glLightModelxOES(GLenum pname, GLfixed param) {
28437    GLMessage glmsg;
28438    GLTraceContext *glContext = getGLTraceContext();
28439
28440    glmsg.set_function(GLMessage::glLightModelxOES);
28441
28442    // copy argument pname
28443    GLMessage_DataType *arg_pname = glmsg.add_args();
28444    arg_pname->set_isarray(false);
28445    arg_pname->set_type(GLMessage::DataType::ENUM);
28446    arg_pname->add_intvalue((int)pname);
28447
28448    // copy argument param
28449    GLMessage_DataType *arg_param = glmsg.add_args();
28450    arg_param->set_isarray(false);
28451    arg_param->set_type(GLMessage::DataType::INT);
28452    arg_param->add_intvalue(param);
28453
28454    // call function
28455    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28456    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28457    glContext->hooks->gl.glLightModelxOES(pname, param);
28458    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28459    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28460
28461    void *pointerArgs[] = {
28462    };
28463
28464    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28465                              threadStartTime, threadEndTime,
28466                              &glmsg, pointerArgs);
28467    glContext->traceGLMessage(&glmsg);
28468}
28469
28470void GLTrace_glLightModelxvOES(GLenum pname, const GLfixed * param) {
28471    GLMessage glmsg;
28472    GLTraceContext *glContext = getGLTraceContext();
28473
28474    glmsg.set_function(GLMessage::glLightModelxvOES);
28475
28476    // copy argument pname
28477    GLMessage_DataType *arg_pname = glmsg.add_args();
28478    arg_pname->set_isarray(false);
28479    arg_pname->set_type(GLMessage::DataType::ENUM);
28480    arg_pname->add_intvalue((int)pname);
28481
28482    // copy argument param
28483    GLMessage_DataType *arg_param = glmsg.add_args();
28484    arg_param->set_isarray(false);
28485    arg_param->set_type(GLMessage::DataType::INT64);
28486    arg_param->add_int64value((uintptr_t)param);
28487
28488    // call function
28489    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28490    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28491    glContext->hooks->gl.glLightModelxvOES(pname, param);
28492    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28493    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28494
28495    void *pointerArgs[] = {
28496        (void *) param,
28497    };
28498
28499    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28500                              threadStartTime, threadEndTime,
28501                              &glmsg, pointerArgs);
28502    glContext->traceGLMessage(&glmsg);
28503}
28504
28505void GLTrace_glLightxOES(GLenum light, GLenum pname, GLfixed param) {
28506    GLMessage glmsg;
28507    GLTraceContext *glContext = getGLTraceContext();
28508
28509    glmsg.set_function(GLMessage::glLightxOES);
28510
28511    // copy argument light
28512    GLMessage_DataType *arg_light = glmsg.add_args();
28513    arg_light->set_isarray(false);
28514    arg_light->set_type(GLMessage::DataType::ENUM);
28515    arg_light->add_intvalue((int)light);
28516
28517    // copy argument pname
28518    GLMessage_DataType *arg_pname = glmsg.add_args();
28519    arg_pname->set_isarray(false);
28520    arg_pname->set_type(GLMessage::DataType::ENUM);
28521    arg_pname->add_intvalue((int)pname);
28522
28523    // copy argument param
28524    GLMessage_DataType *arg_param = glmsg.add_args();
28525    arg_param->set_isarray(false);
28526    arg_param->set_type(GLMessage::DataType::INT);
28527    arg_param->add_intvalue(param);
28528
28529    // call function
28530    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28531    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28532    glContext->hooks->gl.glLightxOES(light, pname, param);
28533    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28534    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28535
28536    void *pointerArgs[] = {
28537    };
28538
28539    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28540                              threadStartTime, threadEndTime,
28541                              &glmsg, pointerArgs);
28542    glContext->traceGLMessage(&glmsg);
28543}
28544
28545void GLTrace_glLightxvOES(GLenum light, GLenum pname, const GLfixed * params) {
28546    GLMessage glmsg;
28547    GLTraceContext *glContext = getGLTraceContext();
28548
28549    glmsg.set_function(GLMessage::glLightxvOES);
28550
28551    // copy argument light
28552    GLMessage_DataType *arg_light = glmsg.add_args();
28553    arg_light->set_isarray(false);
28554    arg_light->set_type(GLMessage::DataType::ENUM);
28555    arg_light->add_intvalue((int)light);
28556
28557    // copy argument pname
28558    GLMessage_DataType *arg_pname = glmsg.add_args();
28559    arg_pname->set_isarray(false);
28560    arg_pname->set_type(GLMessage::DataType::ENUM);
28561    arg_pname->add_intvalue((int)pname);
28562
28563    // copy argument params
28564    GLMessage_DataType *arg_params = glmsg.add_args();
28565    arg_params->set_isarray(false);
28566    arg_params->set_type(GLMessage::DataType::INT64);
28567    arg_params->add_int64value((uintptr_t)params);
28568
28569    // call function
28570    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28571    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28572    glContext->hooks->gl.glLightxvOES(light, pname, params);
28573    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28574    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28575
28576    void *pointerArgs[] = {
28577        (void *) params,
28578    };
28579
28580    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28581                              threadStartTime, threadEndTime,
28582                              &glmsg, pointerArgs);
28583    glContext->traceGLMessage(&glmsg);
28584}
28585
28586void GLTrace_glLineWidthxOES(GLfixed width) {
28587    GLMessage glmsg;
28588    GLTraceContext *glContext = getGLTraceContext();
28589
28590    glmsg.set_function(GLMessage::glLineWidthxOES);
28591
28592    // copy argument width
28593    GLMessage_DataType *arg_width = glmsg.add_args();
28594    arg_width->set_isarray(false);
28595    arg_width->set_type(GLMessage::DataType::INT);
28596    arg_width->add_intvalue(width);
28597
28598    // call function
28599    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28600    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28601    glContext->hooks->gl.glLineWidthxOES(width);
28602    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28603    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28604
28605    void *pointerArgs[] = {
28606    };
28607
28608    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28609                              threadStartTime, threadEndTime,
28610                              &glmsg, pointerArgs);
28611    glContext->traceGLMessage(&glmsg);
28612}
28613
28614void GLTrace_glLoadMatrixxOES(const GLfixed * m) {
28615    GLMessage glmsg;
28616    GLTraceContext *glContext = getGLTraceContext();
28617
28618    glmsg.set_function(GLMessage::glLoadMatrixxOES);
28619
28620    // copy argument m
28621    GLMessage_DataType *arg_m = glmsg.add_args();
28622    arg_m->set_isarray(false);
28623    arg_m->set_type(GLMessage::DataType::INT64);
28624    arg_m->add_int64value((uintptr_t)m);
28625
28626    // call function
28627    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28628    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28629    glContext->hooks->gl.glLoadMatrixxOES(m);
28630    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28631    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28632
28633    void *pointerArgs[] = {
28634        (void *) m,
28635    };
28636
28637    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28638                              threadStartTime, threadEndTime,
28639                              &glmsg, pointerArgs);
28640    glContext->traceGLMessage(&glmsg);
28641}
28642
28643void GLTrace_glMaterialxOES(GLenum face, GLenum pname, GLfixed param) {
28644    GLMessage glmsg;
28645    GLTraceContext *glContext = getGLTraceContext();
28646
28647    glmsg.set_function(GLMessage::glMaterialxOES);
28648
28649    // copy argument face
28650    GLMessage_DataType *arg_face = glmsg.add_args();
28651    arg_face->set_isarray(false);
28652    arg_face->set_type(GLMessage::DataType::ENUM);
28653    arg_face->add_intvalue((int)face);
28654
28655    // copy argument pname
28656    GLMessage_DataType *arg_pname = glmsg.add_args();
28657    arg_pname->set_isarray(false);
28658    arg_pname->set_type(GLMessage::DataType::ENUM);
28659    arg_pname->add_intvalue((int)pname);
28660
28661    // copy argument param
28662    GLMessage_DataType *arg_param = glmsg.add_args();
28663    arg_param->set_isarray(false);
28664    arg_param->set_type(GLMessage::DataType::INT);
28665    arg_param->add_intvalue(param);
28666
28667    // call function
28668    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28669    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28670    glContext->hooks->gl.glMaterialxOES(face, pname, param);
28671    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28672    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28673
28674    void *pointerArgs[] = {
28675    };
28676
28677    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28678                              threadStartTime, threadEndTime,
28679                              &glmsg, pointerArgs);
28680    glContext->traceGLMessage(&glmsg);
28681}
28682
28683void GLTrace_glMaterialxvOES(GLenum face, GLenum pname, const GLfixed * param) {
28684    GLMessage glmsg;
28685    GLTraceContext *glContext = getGLTraceContext();
28686
28687    glmsg.set_function(GLMessage::glMaterialxvOES);
28688
28689    // copy argument face
28690    GLMessage_DataType *arg_face = glmsg.add_args();
28691    arg_face->set_isarray(false);
28692    arg_face->set_type(GLMessage::DataType::ENUM);
28693    arg_face->add_intvalue((int)face);
28694
28695    // copy argument pname
28696    GLMessage_DataType *arg_pname = glmsg.add_args();
28697    arg_pname->set_isarray(false);
28698    arg_pname->set_type(GLMessage::DataType::ENUM);
28699    arg_pname->add_intvalue((int)pname);
28700
28701    // copy argument param
28702    GLMessage_DataType *arg_param = glmsg.add_args();
28703    arg_param->set_isarray(false);
28704    arg_param->set_type(GLMessage::DataType::INT64);
28705    arg_param->add_int64value((uintptr_t)param);
28706
28707    // call function
28708    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28709    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28710    glContext->hooks->gl.glMaterialxvOES(face, pname, param);
28711    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28712    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28713
28714    void *pointerArgs[] = {
28715        (void *) param,
28716    };
28717
28718    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28719                              threadStartTime, threadEndTime,
28720                              &glmsg, pointerArgs);
28721    glContext->traceGLMessage(&glmsg);
28722}
28723
28724void GLTrace_glMultMatrixxOES(const GLfixed * m) {
28725    GLMessage glmsg;
28726    GLTraceContext *glContext = getGLTraceContext();
28727
28728    glmsg.set_function(GLMessage::glMultMatrixxOES);
28729
28730    // copy argument m
28731    GLMessage_DataType *arg_m = glmsg.add_args();
28732    arg_m->set_isarray(false);
28733    arg_m->set_type(GLMessage::DataType::INT64);
28734    arg_m->add_int64value((uintptr_t)m);
28735
28736    // call function
28737    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28738    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28739    glContext->hooks->gl.glMultMatrixxOES(m);
28740    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28741    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28742
28743    void *pointerArgs[] = {
28744        (void *) m,
28745    };
28746
28747    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28748                              threadStartTime, threadEndTime,
28749                              &glmsg, pointerArgs);
28750    glContext->traceGLMessage(&glmsg);
28751}
28752
28753void GLTrace_glMultiTexCoord4xOES(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q) {
28754    GLMessage glmsg;
28755    GLTraceContext *glContext = getGLTraceContext();
28756
28757    glmsg.set_function(GLMessage::glMultiTexCoord4xOES);
28758
28759    // copy argument texture
28760    GLMessage_DataType *arg_texture = glmsg.add_args();
28761    arg_texture->set_isarray(false);
28762    arg_texture->set_type(GLMessage::DataType::ENUM);
28763    arg_texture->add_intvalue((int)texture);
28764
28765    // copy argument s
28766    GLMessage_DataType *arg_s = glmsg.add_args();
28767    arg_s->set_isarray(false);
28768    arg_s->set_type(GLMessage::DataType::INT);
28769    arg_s->add_intvalue(s);
28770
28771    // copy argument t
28772    GLMessage_DataType *arg_t = glmsg.add_args();
28773    arg_t->set_isarray(false);
28774    arg_t->set_type(GLMessage::DataType::INT);
28775    arg_t->add_intvalue(t);
28776
28777    // copy argument r
28778    GLMessage_DataType *arg_r = glmsg.add_args();
28779    arg_r->set_isarray(false);
28780    arg_r->set_type(GLMessage::DataType::INT);
28781    arg_r->add_intvalue(r);
28782
28783    // copy argument q
28784    GLMessage_DataType *arg_q = glmsg.add_args();
28785    arg_q->set_isarray(false);
28786    arg_q->set_type(GLMessage::DataType::INT);
28787    arg_q->add_intvalue(q);
28788
28789    // call function
28790    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28791    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28792    glContext->hooks->gl.glMultiTexCoord4xOES(texture, s, t, r, q);
28793    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28794    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28795
28796    void *pointerArgs[] = {
28797    };
28798
28799    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28800                              threadStartTime, threadEndTime,
28801                              &glmsg, pointerArgs);
28802    glContext->traceGLMessage(&glmsg);
28803}
28804
28805void GLTrace_glNormal3xOES(GLfixed nx, GLfixed ny, GLfixed nz) {
28806    GLMessage glmsg;
28807    GLTraceContext *glContext = getGLTraceContext();
28808
28809    glmsg.set_function(GLMessage::glNormal3xOES);
28810
28811    // copy argument nx
28812    GLMessage_DataType *arg_nx = glmsg.add_args();
28813    arg_nx->set_isarray(false);
28814    arg_nx->set_type(GLMessage::DataType::INT);
28815    arg_nx->add_intvalue(nx);
28816
28817    // copy argument ny
28818    GLMessage_DataType *arg_ny = glmsg.add_args();
28819    arg_ny->set_isarray(false);
28820    arg_ny->set_type(GLMessage::DataType::INT);
28821    arg_ny->add_intvalue(ny);
28822
28823    // copy argument nz
28824    GLMessage_DataType *arg_nz = glmsg.add_args();
28825    arg_nz->set_isarray(false);
28826    arg_nz->set_type(GLMessage::DataType::INT);
28827    arg_nz->add_intvalue(nz);
28828
28829    // call function
28830    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28831    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28832    glContext->hooks->gl.glNormal3xOES(nx, ny, nz);
28833    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28834    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28835
28836    void *pointerArgs[] = {
28837    };
28838
28839    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28840                              threadStartTime, threadEndTime,
28841                              &glmsg, pointerArgs);
28842    glContext->traceGLMessage(&glmsg);
28843}
28844
28845void GLTrace_glOrthoxOES(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f) {
28846    GLMessage glmsg;
28847    GLTraceContext *glContext = getGLTraceContext();
28848
28849    glmsg.set_function(GLMessage::glOrthoxOES);
28850
28851    // copy argument l
28852    GLMessage_DataType *arg_l = glmsg.add_args();
28853    arg_l->set_isarray(false);
28854    arg_l->set_type(GLMessage::DataType::INT);
28855    arg_l->add_intvalue(l);
28856
28857    // copy argument r
28858    GLMessage_DataType *arg_r = glmsg.add_args();
28859    arg_r->set_isarray(false);
28860    arg_r->set_type(GLMessage::DataType::INT);
28861    arg_r->add_intvalue(r);
28862
28863    // copy argument b
28864    GLMessage_DataType *arg_b = glmsg.add_args();
28865    arg_b->set_isarray(false);
28866    arg_b->set_type(GLMessage::DataType::INT);
28867    arg_b->add_intvalue(b);
28868
28869    // copy argument t
28870    GLMessage_DataType *arg_t = glmsg.add_args();
28871    arg_t->set_isarray(false);
28872    arg_t->set_type(GLMessage::DataType::INT);
28873    arg_t->add_intvalue(t);
28874
28875    // copy argument n
28876    GLMessage_DataType *arg_n = glmsg.add_args();
28877    arg_n->set_isarray(false);
28878    arg_n->set_type(GLMessage::DataType::INT);
28879    arg_n->add_intvalue(n);
28880
28881    // copy argument f
28882    GLMessage_DataType *arg_f = glmsg.add_args();
28883    arg_f->set_isarray(false);
28884    arg_f->set_type(GLMessage::DataType::INT);
28885    arg_f->add_intvalue(f);
28886
28887    // call function
28888    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28889    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28890    glContext->hooks->gl.glOrthoxOES(l, r, b, t, n, f);
28891    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28892    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28893
28894    void *pointerArgs[] = {
28895    };
28896
28897    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28898                              threadStartTime, threadEndTime,
28899                              &glmsg, pointerArgs);
28900    glContext->traceGLMessage(&glmsg);
28901}
28902
28903void GLTrace_glPointParameterxvOES(GLenum pname, const GLfixed * params) {
28904    GLMessage glmsg;
28905    GLTraceContext *glContext = getGLTraceContext();
28906
28907    glmsg.set_function(GLMessage::glPointParameterxvOES);
28908
28909    // copy argument pname
28910    GLMessage_DataType *arg_pname = glmsg.add_args();
28911    arg_pname->set_isarray(false);
28912    arg_pname->set_type(GLMessage::DataType::ENUM);
28913    arg_pname->add_intvalue((int)pname);
28914
28915    // copy argument params
28916    GLMessage_DataType *arg_params = glmsg.add_args();
28917    arg_params->set_isarray(false);
28918    arg_params->set_type(GLMessage::DataType::INT64);
28919    arg_params->add_int64value((uintptr_t)params);
28920
28921    // call function
28922    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28923    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28924    glContext->hooks->gl.glPointParameterxvOES(pname, params);
28925    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28926    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28927
28928    void *pointerArgs[] = {
28929        (void *) params,
28930    };
28931
28932    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28933                              threadStartTime, threadEndTime,
28934                              &glmsg, pointerArgs);
28935    glContext->traceGLMessage(&glmsg);
28936}
28937
28938void GLTrace_glPointSizexOES(GLfixed size) {
28939    GLMessage glmsg;
28940    GLTraceContext *glContext = getGLTraceContext();
28941
28942    glmsg.set_function(GLMessage::glPointSizexOES);
28943
28944    // copy argument size
28945    GLMessage_DataType *arg_size = glmsg.add_args();
28946    arg_size->set_isarray(false);
28947    arg_size->set_type(GLMessage::DataType::INT);
28948    arg_size->add_intvalue(size);
28949
28950    // call function
28951    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28952    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28953    glContext->hooks->gl.glPointSizexOES(size);
28954    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28955    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28956
28957    void *pointerArgs[] = {
28958    };
28959
28960    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28961                              threadStartTime, threadEndTime,
28962                              &glmsg, pointerArgs);
28963    glContext->traceGLMessage(&glmsg);
28964}
28965
28966void GLTrace_glPolygonOffsetxOES(GLfixed factor, GLfixed units) {
28967    GLMessage glmsg;
28968    GLTraceContext *glContext = getGLTraceContext();
28969
28970    glmsg.set_function(GLMessage::glPolygonOffsetxOES);
28971
28972    // copy argument factor
28973    GLMessage_DataType *arg_factor = glmsg.add_args();
28974    arg_factor->set_isarray(false);
28975    arg_factor->set_type(GLMessage::DataType::INT);
28976    arg_factor->add_intvalue(factor);
28977
28978    // copy argument units
28979    GLMessage_DataType *arg_units = glmsg.add_args();
28980    arg_units->set_isarray(false);
28981    arg_units->set_type(GLMessage::DataType::INT);
28982    arg_units->add_intvalue(units);
28983
28984    // call function
28985    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
28986    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28987    glContext->hooks->gl.glPolygonOffsetxOES(factor, units);
28988    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
28989    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28990
28991    void *pointerArgs[] = {
28992    };
28993
28994    fixupGLMessage(glContext, wallStartTime, wallEndTime,
28995                              threadStartTime, threadEndTime,
28996                              &glmsg, pointerArgs);
28997    glContext->traceGLMessage(&glmsg);
28998}
28999
29000void GLTrace_glRotatexOES(GLfixed angle, GLfixed x, GLfixed y, GLfixed z) {
29001    GLMessage glmsg;
29002    GLTraceContext *glContext = getGLTraceContext();
29003
29004    glmsg.set_function(GLMessage::glRotatexOES);
29005
29006    // copy argument angle
29007    GLMessage_DataType *arg_angle = glmsg.add_args();
29008    arg_angle->set_isarray(false);
29009    arg_angle->set_type(GLMessage::DataType::INT);
29010    arg_angle->add_intvalue(angle);
29011
29012    // copy argument x
29013    GLMessage_DataType *arg_x = glmsg.add_args();
29014    arg_x->set_isarray(false);
29015    arg_x->set_type(GLMessage::DataType::INT);
29016    arg_x->add_intvalue(x);
29017
29018    // copy argument y
29019    GLMessage_DataType *arg_y = glmsg.add_args();
29020    arg_y->set_isarray(false);
29021    arg_y->set_type(GLMessage::DataType::INT);
29022    arg_y->add_intvalue(y);
29023
29024    // copy argument z
29025    GLMessage_DataType *arg_z = glmsg.add_args();
29026    arg_z->set_isarray(false);
29027    arg_z->set_type(GLMessage::DataType::INT);
29028    arg_z->add_intvalue(z);
29029
29030    // call function
29031    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29032    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29033    glContext->hooks->gl.glRotatexOES(angle, x, y, z);
29034    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29035    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29036
29037    void *pointerArgs[] = {
29038    };
29039
29040    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29041                              threadStartTime, threadEndTime,
29042                              &glmsg, pointerArgs);
29043    glContext->traceGLMessage(&glmsg);
29044}
29045
29046void GLTrace_glSampleCoverageOES(GLfixed value, GLboolean invert) {
29047    GLMessage glmsg;
29048    GLTraceContext *glContext = getGLTraceContext();
29049
29050    glmsg.set_function(GLMessage::glSampleCoverageOES);
29051
29052    // copy argument value
29053    GLMessage_DataType *arg_value = glmsg.add_args();
29054    arg_value->set_isarray(false);
29055    arg_value->set_type(GLMessage::DataType::INT);
29056    arg_value->add_intvalue(value);
29057
29058    // copy argument invert
29059    GLMessage_DataType *arg_invert = glmsg.add_args();
29060    arg_invert->set_isarray(false);
29061    arg_invert->set_type(GLMessage::DataType::BOOL);
29062    arg_invert->add_boolvalue(invert);
29063
29064    // call function
29065    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29066    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29067    glContext->hooks->gl.glSampleCoverageOES(value, invert);
29068    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29069    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29070
29071    void *pointerArgs[] = {
29072    };
29073
29074    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29075                              threadStartTime, threadEndTime,
29076                              &glmsg, pointerArgs);
29077    glContext->traceGLMessage(&glmsg);
29078}
29079
29080void GLTrace_glScalexOES(GLfixed x, GLfixed y, GLfixed z) {
29081    GLMessage glmsg;
29082    GLTraceContext *glContext = getGLTraceContext();
29083
29084    glmsg.set_function(GLMessage::glScalexOES);
29085
29086    // copy argument x
29087    GLMessage_DataType *arg_x = glmsg.add_args();
29088    arg_x->set_isarray(false);
29089    arg_x->set_type(GLMessage::DataType::INT);
29090    arg_x->add_intvalue(x);
29091
29092    // copy argument y
29093    GLMessage_DataType *arg_y = glmsg.add_args();
29094    arg_y->set_isarray(false);
29095    arg_y->set_type(GLMessage::DataType::INT);
29096    arg_y->add_intvalue(y);
29097
29098    // copy argument z
29099    GLMessage_DataType *arg_z = glmsg.add_args();
29100    arg_z->set_isarray(false);
29101    arg_z->set_type(GLMessage::DataType::INT);
29102    arg_z->add_intvalue(z);
29103
29104    // call function
29105    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29106    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29107    glContext->hooks->gl.glScalexOES(x, y, z);
29108    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29109    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29110
29111    void *pointerArgs[] = {
29112    };
29113
29114    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29115                              threadStartTime, threadEndTime,
29116                              &glmsg, pointerArgs);
29117    glContext->traceGLMessage(&glmsg);
29118}
29119
29120void GLTrace_glTexEnvxOES(GLenum target, GLenum pname, GLfixed param) {
29121    GLMessage glmsg;
29122    GLTraceContext *glContext = getGLTraceContext();
29123
29124    glmsg.set_function(GLMessage::glTexEnvxOES);
29125
29126    // copy argument target
29127    GLMessage_DataType *arg_target = glmsg.add_args();
29128    arg_target->set_isarray(false);
29129    arg_target->set_type(GLMessage::DataType::ENUM);
29130    arg_target->add_intvalue((int)target);
29131
29132    // copy argument pname
29133    GLMessage_DataType *arg_pname = glmsg.add_args();
29134    arg_pname->set_isarray(false);
29135    arg_pname->set_type(GLMessage::DataType::ENUM);
29136    arg_pname->add_intvalue((int)pname);
29137
29138    // copy argument param
29139    GLMessage_DataType *arg_param = glmsg.add_args();
29140    arg_param->set_isarray(false);
29141    arg_param->set_type(GLMessage::DataType::INT);
29142    arg_param->add_intvalue(param);
29143
29144    // call function
29145    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29146    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29147    glContext->hooks->gl.glTexEnvxOES(target, pname, param);
29148    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29149    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29150
29151    void *pointerArgs[] = {
29152    };
29153
29154    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29155                              threadStartTime, threadEndTime,
29156                              &glmsg, pointerArgs);
29157    glContext->traceGLMessage(&glmsg);
29158}
29159
29160void GLTrace_glTexEnvxvOES(GLenum target, GLenum pname, const GLfixed * params) {
29161    GLMessage glmsg;
29162    GLTraceContext *glContext = getGLTraceContext();
29163
29164    glmsg.set_function(GLMessage::glTexEnvxvOES);
29165
29166    // copy argument target
29167    GLMessage_DataType *arg_target = glmsg.add_args();
29168    arg_target->set_isarray(false);
29169    arg_target->set_type(GLMessage::DataType::ENUM);
29170    arg_target->add_intvalue((int)target);
29171
29172    // copy argument pname
29173    GLMessage_DataType *arg_pname = glmsg.add_args();
29174    arg_pname->set_isarray(false);
29175    arg_pname->set_type(GLMessage::DataType::ENUM);
29176    arg_pname->add_intvalue((int)pname);
29177
29178    // copy argument params
29179    GLMessage_DataType *arg_params = glmsg.add_args();
29180    arg_params->set_isarray(false);
29181    arg_params->set_type(GLMessage::DataType::INT64);
29182    arg_params->add_int64value((uintptr_t)params);
29183
29184    // call function
29185    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29186    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29187    glContext->hooks->gl.glTexEnvxvOES(target, pname, params);
29188    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29189    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29190
29191    void *pointerArgs[] = {
29192        (void *) params,
29193    };
29194
29195    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29196                              threadStartTime, threadEndTime,
29197                              &glmsg, pointerArgs);
29198    glContext->traceGLMessage(&glmsg);
29199}
29200
29201void GLTrace_glTexParameterxOES(GLenum target, GLenum pname, GLfixed param) {
29202    GLMessage glmsg;
29203    GLTraceContext *glContext = getGLTraceContext();
29204
29205    glmsg.set_function(GLMessage::glTexParameterxOES);
29206
29207    // copy argument target
29208    GLMessage_DataType *arg_target = glmsg.add_args();
29209    arg_target->set_isarray(false);
29210    arg_target->set_type(GLMessage::DataType::ENUM);
29211    arg_target->add_intvalue((int)target);
29212
29213    // copy argument pname
29214    GLMessage_DataType *arg_pname = glmsg.add_args();
29215    arg_pname->set_isarray(false);
29216    arg_pname->set_type(GLMessage::DataType::ENUM);
29217    arg_pname->add_intvalue((int)pname);
29218
29219    // copy argument param
29220    GLMessage_DataType *arg_param = glmsg.add_args();
29221    arg_param->set_isarray(false);
29222    arg_param->set_type(GLMessage::DataType::INT);
29223    arg_param->add_intvalue(param);
29224
29225    // call function
29226    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29227    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29228    glContext->hooks->gl.glTexParameterxOES(target, pname, param);
29229    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29230    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29231
29232    void *pointerArgs[] = {
29233    };
29234
29235    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29236                              threadStartTime, threadEndTime,
29237                              &glmsg, pointerArgs);
29238    glContext->traceGLMessage(&glmsg);
29239}
29240
29241void GLTrace_glTexParameterxvOES(GLenum target, GLenum pname, const GLfixed * params) {
29242    GLMessage glmsg;
29243    GLTraceContext *glContext = getGLTraceContext();
29244
29245    glmsg.set_function(GLMessage::glTexParameterxvOES);
29246
29247    // copy argument target
29248    GLMessage_DataType *arg_target = glmsg.add_args();
29249    arg_target->set_isarray(false);
29250    arg_target->set_type(GLMessage::DataType::ENUM);
29251    arg_target->add_intvalue((int)target);
29252
29253    // copy argument pname
29254    GLMessage_DataType *arg_pname = glmsg.add_args();
29255    arg_pname->set_isarray(false);
29256    arg_pname->set_type(GLMessage::DataType::ENUM);
29257    arg_pname->add_intvalue((int)pname);
29258
29259    // copy argument params
29260    GLMessage_DataType *arg_params = glmsg.add_args();
29261    arg_params->set_isarray(false);
29262    arg_params->set_type(GLMessage::DataType::INT64);
29263    arg_params->add_int64value((uintptr_t)params);
29264
29265    // call function
29266    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29267    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29268    glContext->hooks->gl.glTexParameterxvOES(target, pname, params);
29269    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29270    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29271
29272    void *pointerArgs[] = {
29273        (void *) params,
29274    };
29275
29276    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29277                              threadStartTime, threadEndTime,
29278                              &glmsg, pointerArgs);
29279    glContext->traceGLMessage(&glmsg);
29280}
29281
29282void GLTrace_glTranslatexOES(GLfixed x, GLfixed y, GLfixed z) {
29283    GLMessage glmsg;
29284    GLTraceContext *glContext = getGLTraceContext();
29285
29286    glmsg.set_function(GLMessage::glTranslatexOES);
29287
29288    // copy argument x
29289    GLMessage_DataType *arg_x = glmsg.add_args();
29290    arg_x->set_isarray(false);
29291    arg_x->set_type(GLMessage::DataType::INT);
29292    arg_x->add_intvalue(x);
29293
29294    // copy argument y
29295    GLMessage_DataType *arg_y = glmsg.add_args();
29296    arg_y->set_isarray(false);
29297    arg_y->set_type(GLMessage::DataType::INT);
29298    arg_y->add_intvalue(y);
29299
29300    // copy argument z
29301    GLMessage_DataType *arg_z = glmsg.add_args();
29302    arg_z->set_isarray(false);
29303    arg_z->set_type(GLMessage::DataType::INT);
29304    arg_z->add_intvalue(z);
29305
29306    // call function
29307    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29308    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29309    glContext->hooks->gl.glTranslatexOES(x, y, z);
29310    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29311    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29312
29313    void *pointerArgs[] = {
29314    };
29315
29316    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29317                              threadStartTime, threadEndTime,
29318                              &glmsg, pointerArgs);
29319    glContext->traceGLMessage(&glmsg);
29320}
29321
29322void GLTrace_glGetLightxvOES(GLenum light, GLenum pname, GLfixed * params) {
29323    GLMessage glmsg;
29324    GLTraceContext *glContext = getGLTraceContext();
29325
29326    glmsg.set_function(GLMessage::glGetLightxvOES);
29327
29328    // copy argument light
29329    GLMessage_DataType *arg_light = glmsg.add_args();
29330    arg_light->set_isarray(false);
29331    arg_light->set_type(GLMessage::DataType::ENUM);
29332    arg_light->add_intvalue((int)light);
29333
29334    // copy argument pname
29335    GLMessage_DataType *arg_pname = glmsg.add_args();
29336    arg_pname->set_isarray(false);
29337    arg_pname->set_type(GLMessage::DataType::ENUM);
29338    arg_pname->add_intvalue((int)pname);
29339
29340    // copy argument params
29341    GLMessage_DataType *arg_params = glmsg.add_args();
29342    arg_params->set_isarray(false);
29343    arg_params->set_type(GLMessage::DataType::INT64);
29344    arg_params->add_int64value((uintptr_t)params);
29345
29346    // call function
29347    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29348    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29349    glContext->hooks->gl.glGetLightxvOES(light, pname, params);
29350    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29351    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29352
29353    void *pointerArgs[] = {
29354        (void *) params,
29355    };
29356
29357    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29358                              threadStartTime, threadEndTime,
29359                              &glmsg, pointerArgs);
29360    glContext->traceGLMessage(&glmsg);
29361}
29362
29363void GLTrace_glGetMaterialxvOES(GLenum face, GLenum pname, GLfixed * params) {
29364    GLMessage glmsg;
29365    GLTraceContext *glContext = getGLTraceContext();
29366
29367    glmsg.set_function(GLMessage::glGetMaterialxvOES);
29368
29369    // copy argument face
29370    GLMessage_DataType *arg_face = glmsg.add_args();
29371    arg_face->set_isarray(false);
29372    arg_face->set_type(GLMessage::DataType::ENUM);
29373    arg_face->add_intvalue((int)face);
29374
29375    // copy argument pname
29376    GLMessage_DataType *arg_pname = glmsg.add_args();
29377    arg_pname->set_isarray(false);
29378    arg_pname->set_type(GLMessage::DataType::ENUM);
29379    arg_pname->add_intvalue((int)pname);
29380
29381    // copy argument params
29382    GLMessage_DataType *arg_params = glmsg.add_args();
29383    arg_params->set_isarray(false);
29384    arg_params->set_type(GLMessage::DataType::INT64);
29385    arg_params->add_int64value((uintptr_t)params);
29386
29387    // call function
29388    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29389    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29390    glContext->hooks->gl.glGetMaterialxvOES(face, pname, params);
29391    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29392    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29393
29394    void *pointerArgs[] = {
29395        (void *) params,
29396    };
29397
29398    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29399                              threadStartTime, threadEndTime,
29400                              &glmsg, pointerArgs);
29401    glContext->traceGLMessage(&glmsg);
29402}
29403
29404void GLTrace_glPointParameterxOES(GLenum pname, GLfixed param) {
29405    GLMessage glmsg;
29406    GLTraceContext *glContext = getGLTraceContext();
29407
29408    glmsg.set_function(GLMessage::glPointParameterxOES);
29409
29410    // copy argument pname
29411    GLMessage_DataType *arg_pname = glmsg.add_args();
29412    arg_pname->set_isarray(false);
29413    arg_pname->set_type(GLMessage::DataType::ENUM);
29414    arg_pname->add_intvalue((int)pname);
29415
29416    // copy argument param
29417    GLMessage_DataType *arg_param = glmsg.add_args();
29418    arg_param->set_isarray(false);
29419    arg_param->set_type(GLMessage::DataType::INT);
29420    arg_param->add_intvalue(param);
29421
29422    // call function
29423    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29424    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29425    glContext->hooks->gl.glPointParameterxOES(pname, param);
29426    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29427    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29428
29429    void *pointerArgs[] = {
29430    };
29431
29432    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29433                              threadStartTime, threadEndTime,
29434                              &glmsg, pointerArgs);
29435    glContext->traceGLMessage(&glmsg);
29436}
29437
29438void GLTrace_glSampleCoveragexOES(GLclampx value, GLboolean invert) {
29439    GLMessage glmsg;
29440    GLTraceContext *glContext = getGLTraceContext();
29441
29442    glmsg.set_function(GLMessage::glSampleCoveragexOES);
29443
29444    // copy argument value
29445    GLMessage_DataType *arg_value = glmsg.add_args();
29446    arg_value->set_isarray(false);
29447    arg_value->set_type(GLMessage::DataType::INT);
29448    arg_value->add_intvalue(value);
29449
29450    // copy argument invert
29451    GLMessage_DataType *arg_invert = glmsg.add_args();
29452    arg_invert->set_isarray(false);
29453    arg_invert->set_type(GLMessage::DataType::BOOL);
29454    arg_invert->add_boolvalue(invert);
29455
29456    // call function
29457    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29458    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29459    glContext->hooks->gl.glSampleCoveragexOES(value, invert);
29460    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29461    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29462
29463    void *pointerArgs[] = {
29464    };
29465
29466    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29467                              threadStartTime, threadEndTime,
29468                              &glmsg, pointerArgs);
29469    glContext->traceGLMessage(&glmsg);
29470}
29471
29472void GLTrace_glGetTexGenxvOES(GLenum coord, GLenum pname, GLfixed * params) {
29473    GLMessage glmsg;
29474    GLTraceContext *glContext = getGLTraceContext();
29475
29476    glmsg.set_function(GLMessage::glGetTexGenxvOES);
29477
29478    // copy argument coord
29479    GLMessage_DataType *arg_coord = glmsg.add_args();
29480    arg_coord->set_isarray(false);
29481    arg_coord->set_type(GLMessage::DataType::ENUM);
29482    arg_coord->add_intvalue((int)coord);
29483
29484    // copy argument pname
29485    GLMessage_DataType *arg_pname = glmsg.add_args();
29486    arg_pname->set_isarray(false);
29487    arg_pname->set_type(GLMessage::DataType::ENUM);
29488    arg_pname->add_intvalue((int)pname);
29489
29490    // copy argument params
29491    GLMessage_DataType *arg_params = glmsg.add_args();
29492    arg_params->set_isarray(false);
29493    arg_params->set_type(GLMessage::DataType::INT64);
29494    arg_params->add_int64value((uintptr_t)params);
29495
29496    // call function
29497    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29498    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29499    glContext->hooks->gl.glGetTexGenxvOES(coord, pname, params);
29500    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29501    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29502
29503    void *pointerArgs[] = {
29504        (void *) params,
29505    };
29506
29507    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29508                              threadStartTime, threadEndTime,
29509                              &glmsg, pointerArgs);
29510    glContext->traceGLMessage(&glmsg);
29511}
29512
29513void GLTrace_glTexGenxOES(GLenum coord, GLenum pname, GLfixed param) {
29514    GLMessage glmsg;
29515    GLTraceContext *glContext = getGLTraceContext();
29516
29517    glmsg.set_function(GLMessage::glTexGenxOES);
29518
29519    // copy argument coord
29520    GLMessage_DataType *arg_coord = glmsg.add_args();
29521    arg_coord->set_isarray(false);
29522    arg_coord->set_type(GLMessage::DataType::ENUM);
29523    arg_coord->add_intvalue((int)coord);
29524
29525    // copy argument pname
29526    GLMessage_DataType *arg_pname = glmsg.add_args();
29527    arg_pname->set_isarray(false);
29528    arg_pname->set_type(GLMessage::DataType::ENUM);
29529    arg_pname->add_intvalue((int)pname);
29530
29531    // copy argument param
29532    GLMessage_DataType *arg_param = glmsg.add_args();
29533    arg_param->set_isarray(false);
29534    arg_param->set_type(GLMessage::DataType::INT);
29535    arg_param->add_intvalue(param);
29536
29537    // call function
29538    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29539    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29540    glContext->hooks->gl.glTexGenxOES(coord, pname, param);
29541    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29542    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29543
29544    void *pointerArgs[] = {
29545    };
29546
29547    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29548                              threadStartTime, threadEndTime,
29549                              &glmsg, pointerArgs);
29550    glContext->traceGLMessage(&glmsg);
29551}
29552
29553void GLTrace_glTexGenxvOES(GLenum coord, GLenum pname, const GLfixed * params) {
29554    GLMessage glmsg;
29555    GLTraceContext *glContext = getGLTraceContext();
29556
29557    glmsg.set_function(GLMessage::glTexGenxvOES);
29558
29559    // copy argument coord
29560    GLMessage_DataType *arg_coord = glmsg.add_args();
29561    arg_coord->set_isarray(false);
29562    arg_coord->set_type(GLMessage::DataType::ENUM);
29563    arg_coord->add_intvalue((int)coord);
29564
29565    // copy argument pname
29566    GLMessage_DataType *arg_pname = glmsg.add_args();
29567    arg_pname->set_isarray(false);
29568    arg_pname->set_type(GLMessage::DataType::ENUM);
29569    arg_pname->add_intvalue((int)pname);
29570
29571    // copy argument params
29572    GLMessage_DataType *arg_params = glmsg.add_args();
29573    arg_params->set_isarray(false);
29574    arg_params->set_type(GLMessage::DataType::INT64);
29575    arg_params->add_int64value((uintptr_t)params);
29576
29577    // call function
29578    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29579    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29580    glContext->hooks->gl.glTexGenxvOES(coord, pname, params);
29581    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29582    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29583
29584    void *pointerArgs[] = {
29585        (void *) params,
29586    };
29587
29588    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29589                              threadStartTime, threadEndTime,
29590                              &glmsg, pointerArgs);
29591    glContext->traceGLMessage(&glmsg);
29592}
29593
29594GLboolean GLTrace_glIsRenderbufferOES(GLuint renderbuffer) {
29595    GLMessage glmsg;
29596    GLTraceContext *glContext = getGLTraceContext();
29597
29598    glmsg.set_function(GLMessage::glIsRenderbufferOES);
29599
29600    // copy argument renderbuffer
29601    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
29602    arg_renderbuffer->set_isarray(false);
29603    arg_renderbuffer->set_type(GLMessage::DataType::INT);
29604    arg_renderbuffer->add_intvalue(renderbuffer);
29605
29606    // call function
29607    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29608    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29609    GLboolean retValue = glContext->hooks->gl.glIsRenderbufferOES(renderbuffer);
29610    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29611    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29612
29613    // set return value
29614    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
29615    rt->set_isarray(false);
29616    rt->set_type(GLMessage::DataType::BOOL);
29617    rt->add_boolvalue(retValue);
29618
29619    void *pointerArgs[] = {
29620    };
29621
29622    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29623                              threadStartTime, threadEndTime,
29624                              &glmsg, pointerArgs);
29625    glContext->traceGLMessage(&glmsg);
29626
29627    return retValue;
29628}
29629
29630void GLTrace_glBindRenderbufferOES(GLenum target, GLuint renderbuffer) {
29631    GLMessage glmsg;
29632    GLTraceContext *glContext = getGLTraceContext();
29633
29634    glmsg.set_function(GLMessage::glBindRenderbufferOES);
29635
29636    // copy argument target
29637    GLMessage_DataType *arg_target = glmsg.add_args();
29638    arg_target->set_isarray(false);
29639    arg_target->set_type(GLMessage::DataType::ENUM);
29640    arg_target->add_intvalue((int)target);
29641
29642    // copy argument renderbuffer
29643    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
29644    arg_renderbuffer->set_isarray(false);
29645    arg_renderbuffer->set_type(GLMessage::DataType::INT);
29646    arg_renderbuffer->add_intvalue(renderbuffer);
29647
29648    // call function
29649    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29650    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29651    glContext->hooks->gl.glBindRenderbufferOES(target, renderbuffer);
29652    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29653    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29654
29655    void *pointerArgs[] = {
29656    };
29657
29658    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29659                              threadStartTime, threadEndTime,
29660                              &glmsg, pointerArgs);
29661    glContext->traceGLMessage(&glmsg);
29662}
29663
29664void GLTrace_glDeleteRenderbuffersOES(GLsizei n, const GLuint * renderbuffers) {
29665    GLMessage glmsg;
29666    GLTraceContext *glContext = getGLTraceContext();
29667
29668    glmsg.set_function(GLMessage::glDeleteRenderbuffersOES);
29669
29670    // copy argument n
29671    GLMessage_DataType *arg_n = glmsg.add_args();
29672    arg_n->set_isarray(false);
29673    arg_n->set_type(GLMessage::DataType::INT);
29674    arg_n->add_intvalue(n);
29675
29676    // copy argument renderbuffers
29677    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
29678    arg_renderbuffers->set_isarray(false);
29679    arg_renderbuffers->set_type(GLMessage::DataType::INT64);
29680    arg_renderbuffers->add_int64value((uintptr_t)renderbuffers);
29681
29682    // call function
29683    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29684    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29685    glContext->hooks->gl.glDeleteRenderbuffersOES(n, renderbuffers);
29686    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29687    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29688
29689    void *pointerArgs[] = {
29690        (void *) renderbuffers,
29691    };
29692
29693    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29694                              threadStartTime, threadEndTime,
29695                              &glmsg, pointerArgs);
29696    glContext->traceGLMessage(&glmsg);
29697}
29698
29699void GLTrace_glGenRenderbuffersOES(GLsizei n, GLuint * renderbuffers) {
29700    GLMessage glmsg;
29701    GLTraceContext *glContext = getGLTraceContext();
29702
29703    glmsg.set_function(GLMessage::glGenRenderbuffersOES);
29704
29705    // copy argument n
29706    GLMessage_DataType *arg_n = glmsg.add_args();
29707    arg_n->set_isarray(false);
29708    arg_n->set_type(GLMessage::DataType::INT);
29709    arg_n->add_intvalue(n);
29710
29711    // copy argument renderbuffers
29712    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
29713    arg_renderbuffers->set_isarray(false);
29714    arg_renderbuffers->set_type(GLMessage::DataType::INT64);
29715    arg_renderbuffers->add_int64value((uintptr_t)renderbuffers);
29716
29717    // call function
29718    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29719    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29720    glContext->hooks->gl.glGenRenderbuffersOES(n, renderbuffers);
29721    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29722    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29723
29724    void *pointerArgs[] = {
29725        (void *) renderbuffers,
29726    };
29727
29728    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29729                              threadStartTime, threadEndTime,
29730                              &glmsg, pointerArgs);
29731    glContext->traceGLMessage(&glmsg);
29732}
29733
29734void GLTrace_glRenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) {
29735    GLMessage glmsg;
29736    GLTraceContext *glContext = getGLTraceContext();
29737
29738    glmsg.set_function(GLMessage::glRenderbufferStorageOES);
29739
29740    // copy argument target
29741    GLMessage_DataType *arg_target = glmsg.add_args();
29742    arg_target->set_isarray(false);
29743    arg_target->set_type(GLMessage::DataType::ENUM);
29744    arg_target->add_intvalue((int)target);
29745
29746    // copy argument internalformat
29747    GLMessage_DataType *arg_internalformat = glmsg.add_args();
29748    arg_internalformat->set_isarray(false);
29749    arg_internalformat->set_type(GLMessage::DataType::ENUM);
29750    arg_internalformat->add_intvalue((int)internalformat);
29751
29752    // copy argument width
29753    GLMessage_DataType *arg_width = glmsg.add_args();
29754    arg_width->set_isarray(false);
29755    arg_width->set_type(GLMessage::DataType::INT);
29756    arg_width->add_intvalue(width);
29757
29758    // copy argument height
29759    GLMessage_DataType *arg_height = glmsg.add_args();
29760    arg_height->set_isarray(false);
29761    arg_height->set_type(GLMessage::DataType::INT);
29762    arg_height->add_intvalue(height);
29763
29764    // call function
29765    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29766    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29767    glContext->hooks->gl.glRenderbufferStorageOES(target, internalformat, width, height);
29768    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29769    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29770
29771    void *pointerArgs[] = {
29772    };
29773
29774    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29775                              threadStartTime, threadEndTime,
29776                              &glmsg, pointerArgs);
29777    glContext->traceGLMessage(&glmsg);
29778}
29779
29780void GLTrace_glGetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint * params) {
29781    GLMessage glmsg;
29782    GLTraceContext *glContext = getGLTraceContext();
29783
29784    glmsg.set_function(GLMessage::glGetRenderbufferParameterivOES);
29785
29786    // copy argument target
29787    GLMessage_DataType *arg_target = glmsg.add_args();
29788    arg_target->set_isarray(false);
29789    arg_target->set_type(GLMessage::DataType::ENUM);
29790    arg_target->add_intvalue((int)target);
29791
29792    // copy argument pname
29793    GLMessage_DataType *arg_pname = glmsg.add_args();
29794    arg_pname->set_isarray(false);
29795    arg_pname->set_type(GLMessage::DataType::ENUM);
29796    arg_pname->add_intvalue((int)pname);
29797
29798    // copy argument params
29799    GLMessage_DataType *arg_params = glmsg.add_args();
29800    arg_params->set_isarray(false);
29801    arg_params->set_type(GLMessage::DataType::INT64);
29802    arg_params->add_int64value((uintptr_t)params);
29803
29804    // call function
29805    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29806    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29807    glContext->hooks->gl.glGetRenderbufferParameterivOES(target, pname, params);
29808    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29809    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29810
29811    void *pointerArgs[] = {
29812        (void *) params,
29813    };
29814
29815    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29816                              threadStartTime, threadEndTime,
29817                              &glmsg, pointerArgs);
29818    glContext->traceGLMessage(&glmsg);
29819}
29820
29821GLboolean GLTrace_glIsFramebufferOES(GLuint framebuffer) {
29822    GLMessage glmsg;
29823    GLTraceContext *glContext = getGLTraceContext();
29824
29825    glmsg.set_function(GLMessage::glIsFramebufferOES);
29826
29827    // copy argument framebuffer
29828    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
29829    arg_framebuffer->set_isarray(false);
29830    arg_framebuffer->set_type(GLMessage::DataType::INT);
29831    arg_framebuffer->add_intvalue(framebuffer);
29832
29833    // call function
29834    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29835    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29836    GLboolean retValue = glContext->hooks->gl.glIsFramebufferOES(framebuffer);
29837    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29838    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29839
29840    // set return value
29841    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
29842    rt->set_isarray(false);
29843    rt->set_type(GLMessage::DataType::BOOL);
29844    rt->add_boolvalue(retValue);
29845
29846    void *pointerArgs[] = {
29847    };
29848
29849    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29850                              threadStartTime, threadEndTime,
29851                              &glmsg, pointerArgs);
29852    glContext->traceGLMessage(&glmsg);
29853
29854    return retValue;
29855}
29856
29857void GLTrace_glBindFramebufferOES(GLenum target, GLuint framebuffer) {
29858    GLMessage glmsg;
29859    GLTraceContext *glContext = getGLTraceContext();
29860
29861    glmsg.set_function(GLMessage::glBindFramebufferOES);
29862
29863    // copy argument target
29864    GLMessage_DataType *arg_target = glmsg.add_args();
29865    arg_target->set_isarray(false);
29866    arg_target->set_type(GLMessage::DataType::ENUM);
29867    arg_target->add_intvalue((int)target);
29868
29869    // copy argument framebuffer
29870    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
29871    arg_framebuffer->set_isarray(false);
29872    arg_framebuffer->set_type(GLMessage::DataType::INT);
29873    arg_framebuffer->add_intvalue(framebuffer);
29874
29875    // call function
29876    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29877    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29878    glContext->hooks->gl.glBindFramebufferOES(target, framebuffer);
29879    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29880    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29881
29882    void *pointerArgs[] = {
29883    };
29884
29885    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29886                              threadStartTime, threadEndTime,
29887                              &glmsg, pointerArgs);
29888    glContext->traceGLMessage(&glmsg);
29889}
29890
29891void GLTrace_glDeleteFramebuffersOES(GLsizei n, const GLuint * framebuffers) {
29892    GLMessage glmsg;
29893    GLTraceContext *glContext = getGLTraceContext();
29894
29895    glmsg.set_function(GLMessage::glDeleteFramebuffersOES);
29896
29897    // copy argument n
29898    GLMessage_DataType *arg_n = glmsg.add_args();
29899    arg_n->set_isarray(false);
29900    arg_n->set_type(GLMessage::DataType::INT);
29901    arg_n->add_intvalue(n);
29902
29903    // copy argument framebuffers
29904    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
29905    arg_framebuffers->set_isarray(false);
29906    arg_framebuffers->set_type(GLMessage::DataType::INT64);
29907    arg_framebuffers->add_int64value((uintptr_t)framebuffers);
29908
29909    // call function
29910    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29911    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29912    glContext->hooks->gl.glDeleteFramebuffersOES(n, framebuffers);
29913    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29914    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29915
29916    void *pointerArgs[] = {
29917        (void *) framebuffers,
29918    };
29919
29920    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29921                              threadStartTime, threadEndTime,
29922                              &glmsg, pointerArgs);
29923    glContext->traceGLMessage(&glmsg);
29924}
29925
29926void GLTrace_glGenFramebuffersOES(GLsizei n, GLuint * framebuffers) {
29927    GLMessage glmsg;
29928    GLTraceContext *glContext = getGLTraceContext();
29929
29930    glmsg.set_function(GLMessage::glGenFramebuffersOES);
29931
29932    // copy argument n
29933    GLMessage_DataType *arg_n = glmsg.add_args();
29934    arg_n->set_isarray(false);
29935    arg_n->set_type(GLMessage::DataType::INT);
29936    arg_n->add_intvalue(n);
29937
29938    // copy argument framebuffers
29939    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
29940    arg_framebuffers->set_isarray(false);
29941    arg_framebuffers->set_type(GLMessage::DataType::INT64);
29942    arg_framebuffers->add_int64value((uintptr_t)framebuffers);
29943
29944    // call function
29945    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29946    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29947    glContext->hooks->gl.glGenFramebuffersOES(n, framebuffers);
29948    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29949    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29950
29951    void *pointerArgs[] = {
29952        (void *) framebuffers,
29953    };
29954
29955    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29956                              threadStartTime, threadEndTime,
29957                              &glmsg, pointerArgs);
29958    glContext->traceGLMessage(&glmsg);
29959}
29960
29961GLenum GLTrace_glCheckFramebufferStatusOES(GLenum target) {
29962    GLMessage glmsg;
29963    GLTraceContext *glContext = getGLTraceContext();
29964
29965    glmsg.set_function(GLMessage::glCheckFramebufferStatusOES);
29966
29967    // copy argument target
29968    GLMessage_DataType *arg_target = glmsg.add_args();
29969    arg_target->set_isarray(false);
29970    arg_target->set_type(GLMessage::DataType::ENUM);
29971    arg_target->add_intvalue((int)target);
29972
29973    // call function
29974    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
29975    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29976    GLenum retValue = glContext->hooks->gl.glCheckFramebufferStatusOES(target);
29977    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
29978    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29979
29980    // set return value
29981    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
29982    rt->set_isarray(false);
29983    rt->set_type(GLMessage::DataType::ENUM);
29984    rt->add_intvalue((int)retValue);
29985
29986    void *pointerArgs[] = {
29987    };
29988
29989    fixupGLMessage(glContext, wallStartTime, wallEndTime,
29990                              threadStartTime, threadEndTime,
29991                              &glmsg, pointerArgs);
29992    glContext->traceGLMessage(&glmsg);
29993
29994    return retValue;
29995}
29996
29997void GLTrace_glFramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) {
29998    GLMessage glmsg;
29999    GLTraceContext *glContext = getGLTraceContext();
30000
30001    glmsg.set_function(GLMessage::glFramebufferRenderbufferOES);
30002
30003    // copy argument target
30004    GLMessage_DataType *arg_target = glmsg.add_args();
30005    arg_target->set_isarray(false);
30006    arg_target->set_type(GLMessage::DataType::ENUM);
30007    arg_target->add_intvalue((int)target);
30008
30009    // copy argument attachment
30010    GLMessage_DataType *arg_attachment = glmsg.add_args();
30011    arg_attachment->set_isarray(false);
30012    arg_attachment->set_type(GLMessage::DataType::ENUM);
30013    arg_attachment->add_intvalue((int)attachment);
30014
30015    // copy argument renderbuffertarget
30016    GLMessage_DataType *arg_renderbuffertarget = glmsg.add_args();
30017    arg_renderbuffertarget->set_isarray(false);
30018    arg_renderbuffertarget->set_type(GLMessage::DataType::ENUM);
30019    arg_renderbuffertarget->add_intvalue((int)renderbuffertarget);
30020
30021    // copy argument renderbuffer
30022    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
30023    arg_renderbuffer->set_isarray(false);
30024    arg_renderbuffer->set_type(GLMessage::DataType::INT);
30025    arg_renderbuffer->add_intvalue(renderbuffer);
30026
30027    // call function
30028    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30029    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30030    glContext->hooks->gl.glFramebufferRenderbufferOES(target, attachment, renderbuffertarget, renderbuffer);
30031    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30032    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30033
30034    void *pointerArgs[] = {
30035    };
30036
30037    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30038                              threadStartTime, threadEndTime,
30039                              &glmsg, pointerArgs);
30040    glContext->traceGLMessage(&glmsg);
30041}
30042
30043void GLTrace_glFramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) {
30044    GLMessage glmsg;
30045    GLTraceContext *glContext = getGLTraceContext();
30046
30047    glmsg.set_function(GLMessage::glFramebufferTexture2DOES);
30048
30049    // copy argument target
30050    GLMessage_DataType *arg_target = glmsg.add_args();
30051    arg_target->set_isarray(false);
30052    arg_target->set_type(GLMessage::DataType::ENUM);
30053    arg_target->add_intvalue((int)target);
30054
30055    // copy argument attachment
30056    GLMessage_DataType *arg_attachment = glmsg.add_args();
30057    arg_attachment->set_isarray(false);
30058    arg_attachment->set_type(GLMessage::DataType::ENUM);
30059    arg_attachment->add_intvalue((int)attachment);
30060
30061    // copy argument textarget
30062    GLMessage_DataType *arg_textarget = glmsg.add_args();
30063    arg_textarget->set_isarray(false);
30064    arg_textarget->set_type(GLMessage::DataType::ENUM);
30065    arg_textarget->add_intvalue((int)textarget);
30066
30067    // copy argument texture
30068    GLMessage_DataType *arg_texture = glmsg.add_args();
30069    arg_texture->set_isarray(false);
30070    arg_texture->set_type(GLMessage::DataType::INT);
30071    arg_texture->add_intvalue(texture);
30072
30073    // copy argument level
30074    GLMessage_DataType *arg_level = glmsg.add_args();
30075    arg_level->set_isarray(false);
30076    arg_level->set_type(GLMessage::DataType::INT);
30077    arg_level->add_intvalue(level);
30078
30079    // call function
30080    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30081    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30082    glContext->hooks->gl.glFramebufferTexture2DOES(target, attachment, textarget, texture, level);
30083    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30084    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30085
30086    void *pointerArgs[] = {
30087    };
30088
30089    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30090                              threadStartTime, threadEndTime,
30091                              &glmsg, pointerArgs);
30092    glContext->traceGLMessage(&glmsg);
30093}
30094
30095void GLTrace_glGetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint * params) {
30096    GLMessage glmsg;
30097    GLTraceContext *glContext = getGLTraceContext();
30098
30099    glmsg.set_function(GLMessage::glGetFramebufferAttachmentParameterivOES);
30100
30101    // copy argument target
30102    GLMessage_DataType *arg_target = glmsg.add_args();
30103    arg_target->set_isarray(false);
30104    arg_target->set_type(GLMessage::DataType::ENUM);
30105    arg_target->add_intvalue((int)target);
30106
30107    // copy argument attachment
30108    GLMessage_DataType *arg_attachment = glmsg.add_args();
30109    arg_attachment->set_isarray(false);
30110    arg_attachment->set_type(GLMessage::DataType::ENUM);
30111    arg_attachment->add_intvalue((int)attachment);
30112
30113    // copy argument pname
30114    GLMessage_DataType *arg_pname = glmsg.add_args();
30115    arg_pname->set_isarray(false);
30116    arg_pname->set_type(GLMessage::DataType::ENUM);
30117    arg_pname->add_intvalue((int)pname);
30118
30119    // copy argument params
30120    GLMessage_DataType *arg_params = glmsg.add_args();
30121    arg_params->set_isarray(false);
30122    arg_params->set_type(GLMessage::DataType::INT64);
30123    arg_params->add_int64value((uintptr_t)params);
30124
30125    // call function
30126    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30127    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30128    glContext->hooks->gl.glGetFramebufferAttachmentParameterivOES(target, attachment, pname, params);
30129    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30130    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30131
30132    void *pointerArgs[] = {
30133        (void *) params,
30134    };
30135
30136    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30137                              threadStartTime, threadEndTime,
30138                              &glmsg, pointerArgs);
30139    glContext->traceGLMessage(&glmsg);
30140}
30141
30142void GLTrace_glGenerateMipmapOES(GLenum target) {
30143    GLMessage glmsg;
30144    GLTraceContext *glContext = getGLTraceContext();
30145
30146    glmsg.set_function(GLMessage::glGenerateMipmapOES);
30147
30148    // copy argument target
30149    GLMessage_DataType *arg_target = glmsg.add_args();
30150    arg_target->set_isarray(false);
30151    arg_target->set_type(GLMessage::DataType::ENUM);
30152    arg_target->add_intvalue((int)target);
30153
30154    // call function
30155    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30156    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30157    glContext->hooks->gl.glGenerateMipmapOES(target);
30158    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30159    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30160
30161    void *pointerArgs[] = {
30162    };
30163
30164    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30165                              threadStartTime, threadEndTime,
30166                              &glmsg, pointerArgs);
30167    glContext->traceGLMessage(&glmsg);
30168}
30169
30170void GLTrace_glCurrentPaletteMatrixOES(GLuint matrixpaletteindex) {
30171    GLMessage glmsg;
30172    GLTraceContext *glContext = getGLTraceContext();
30173
30174    glmsg.set_function(GLMessage::glCurrentPaletteMatrixOES);
30175
30176    // copy argument matrixpaletteindex
30177    GLMessage_DataType *arg_matrixpaletteindex = glmsg.add_args();
30178    arg_matrixpaletteindex->set_isarray(false);
30179    arg_matrixpaletteindex->set_type(GLMessage::DataType::INT);
30180    arg_matrixpaletteindex->add_intvalue(matrixpaletteindex);
30181
30182    // call function
30183    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30184    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30185    glContext->hooks->gl.glCurrentPaletteMatrixOES(matrixpaletteindex);
30186    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30187    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30188
30189    void *pointerArgs[] = {
30190    };
30191
30192    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30193                              threadStartTime, threadEndTime,
30194                              &glmsg, pointerArgs);
30195    glContext->traceGLMessage(&glmsg);
30196}
30197
30198void GLTrace_glLoadPaletteFromModelViewMatrixOES(void) {
30199    GLMessage glmsg;
30200    GLTraceContext *glContext = getGLTraceContext();
30201
30202    glmsg.set_function(GLMessage::glLoadPaletteFromModelViewMatrixOES);
30203
30204    // call function
30205    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30206    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30207    glContext->hooks->gl.glLoadPaletteFromModelViewMatrixOES();
30208    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30209    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30210
30211    void *pointerArgs[] = {
30212    };
30213
30214    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30215                              threadStartTime, threadEndTime,
30216                              &glmsg, pointerArgs);
30217    glContext->traceGLMessage(&glmsg);
30218}
30219
30220void GLTrace_glMatrixIndexPointerOES(GLint size, GLenum type, GLsizei stride, const void * pointer) {
30221    GLMessage glmsg;
30222    GLTraceContext *glContext = getGLTraceContext();
30223
30224    glmsg.set_function(GLMessage::glMatrixIndexPointerOES);
30225
30226    // copy argument size
30227    GLMessage_DataType *arg_size = glmsg.add_args();
30228    arg_size->set_isarray(false);
30229    arg_size->set_type(GLMessage::DataType::INT);
30230    arg_size->add_intvalue(size);
30231
30232    // copy argument type
30233    GLMessage_DataType *arg_type = glmsg.add_args();
30234    arg_type->set_isarray(false);
30235    arg_type->set_type(GLMessage::DataType::ENUM);
30236    arg_type->add_intvalue((int)type);
30237
30238    // copy argument stride
30239    GLMessage_DataType *arg_stride = glmsg.add_args();
30240    arg_stride->set_isarray(false);
30241    arg_stride->set_type(GLMessage::DataType::INT);
30242    arg_stride->add_intvalue(stride);
30243
30244    // copy argument pointer
30245    GLMessage_DataType *arg_pointer = glmsg.add_args();
30246    arg_pointer->set_isarray(false);
30247    arg_pointer->set_type(GLMessage::DataType::INT64);
30248    arg_pointer->add_int64value((uintptr_t)pointer);
30249
30250    // call function
30251    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30252    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30253    glContext->hooks->gl.glMatrixIndexPointerOES(size, type, stride, pointer);
30254    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30255    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30256
30257    void *pointerArgs[] = {
30258        (void *) pointer,
30259    };
30260
30261    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30262                              threadStartTime, threadEndTime,
30263                              &glmsg, pointerArgs);
30264    glContext->traceGLMessage(&glmsg);
30265}
30266
30267void GLTrace_glWeightPointerOES(GLint size, GLenum type, GLsizei stride, const void * pointer) {
30268    GLMessage glmsg;
30269    GLTraceContext *glContext = getGLTraceContext();
30270
30271    glmsg.set_function(GLMessage::glWeightPointerOES);
30272
30273    // copy argument size
30274    GLMessage_DataType *arg_size = glmsg.add_args();
30275    arg_size->set_isarray(false);
30276    arg_size->set_type(GLMessage::DataType::INT);
30277    arg_size->add_intvalue(size);
30278
30279    // copy argument type
30280    GLMessage_DataType *arg_type = glmsg.add_args();
30281    arg_type->set_isarray(false);
30282    arg_type->set_type(GLMessage::DataType::ENUM);
30283    arg_type->add_intvalue((int)type);
30284
30285    // copy argument stride
30286    GLMessage_DataType *arg_stride = glmsg.add_args();
30287    arg_stride->set_isarray(false);
30288    arg_stride->set_type(GLMessage::DataType::INT);
30289    arg_stride->add_intvalue(stride);
30290
30291    // copy argument pointer
30292    GLMessage_DataType *arg_pointer = glmsg.add_args();
30293    arg_pointer->set_isarray(false);
30294    arg_pointer->set_type(GLMessage::DataType::INT64);
30295    arg_pointer->add_int64value((uintptr_t)pointer);
30296
30297    // call function
30298    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30299    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30300    glContext->hooks->gl.glWeightPointerOES(size, type, stride, pointer);
30301    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30302    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30303
30304    void *pointerArgs[] = {
30305        (void *) pointer,
30306    };
30307
30308    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30309                              threadStartTime, threadEndTime,
30310                              &glmsg, pointerArgs);
30311    glContext->traceGLMessage(&glmsg);
30312}
30313
30314void GLTrace_glPointSizePointerOES(GLenum type, GLsizei stride, const void * pointer) {
30315    GLMessage glmsg;
30316    GLTraceContext *glContext = getGLTraceContext();
30317
30318    glmsg.set_function(GLMessage::glPointSizePointerOES);
30319
30320    // copy argument type
30321    GLMessage_DataType *arg_type = glmsg.add_args();
30322    arg_type->set_isarray(false);
30323    arg_type->set_type(GLMessage::DataType::ENUM);
30324    arg_type->add_intvalue((int)type);
30325
30326    // copy argument stride
30327    GLMessage_DataType *arg_stride = glmsg.add_args();
30328    arg_stride->set_isarray(false);
30329    arg_stride->set_type(GLMessage::DataType::INT);
30330    arg_stride->add_intvalue(stride);
30331
30332    // copy argument pointer
30333    GLMessage_DataType *arg_pointer = glmsg.add_args();
30334    arg_pointer->set_isarray(false);
30335    arg_pointer->set_type(GLMessage::DataType::INT64);
30336    arg_pointer->add_int64value((uintptr_t)pointer);
30337
30338    // call function
30339    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30340    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30341    glContext->hooks->gl.glPointSizePointerOES(type, stride, pointer);
30342    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30343    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30344
30345    void *pointerArgs[] = {
30346        (void *) pointer,
30347    };
30348
30349    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30350                              threadStartTime, threadEndTime,
30351                              &glmsg, pointerArgs);
30352    glContext->traceGLMessage(&glmsg);
30353}
30354
30355GLbitfield GLTrace_glQueryMatrixxOES(GLfixed * mantissa, GLint * exponent) {
30356    GLMessage glmsg;
30357    GLTraceContext *glContext = getGLTraceContext();
30358
30359    glmsg.set_function(GLMessage::glQueryMatrixxOES);
30360
30361    // copy argument mantissa
30362    GLMessage_DataType *arg_mantissa = glmsg.add_args();
30363    arg_mantissa->set_isarray(false);
30364    arg_mantissa->set_type(GLMessage::DataType::INT64);
30365    arg_mantissa->add_int64value((uintptr_t)mantissa);
30366
30367    // copy argument exponent
30368    GLMessage_DataType *arg_exponent = glmsg.add_args();
30369    arg_exponent->set_isarray(false);
30370    arg_exponent->set_type(GLMessage::DataType::INT64);
30371    arg_exponent->add_int64value((uintptr_t)exponent);
30372
30373    // call function
30374    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30375    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30376    GLbitfield retValue = glContext->hooks->gl.glQueryMatrixxOES(mantissa, exponent);
30377    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30378    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30379
30380    // set return value
30381    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
30382    rt->set_isarray(false);
30383    rt->set_type(GLMessage::DataType::INT);
30384    rt->add_intvalue(retValue);
30385
30386    void *pointerArgs[] = {
30387        (void *) mantissa,
30388        (void *) exponent,
30389    };
30390
30391    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30392                              threadStartTime, threadEndTime,
30393                              &glmsg, pointerArgs);
30394    glContext->traceGLMessage(&glmsg);
30395
30396    return retValue;
30397}
30398
30399void GLTrace_glClearDepthfOES(GLclampf depth) {
30400    GLMessage glmsg;
30401    GLTraceContext *glContext = getGLTraceContext();
30402
30403    glmsg.set_function(GLMessage::glClearDepthfOES);
30404
30405    // copy argument depth
30406    GLMessage_DataType *arg_depth = glmsg.add_args();
30407    arg_depth->set_isarray(false);
30408    arg_depth->set_type(GLMessage::DataType::FLOAT);
30409    arg_depth->add_floatvalue(depth);
30410
30411    // call function
30412    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30413    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30414    glContext->hooks->gl.glClearDepthfOES(depth);
30415    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30416    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30417
30418    void *pointerArgs[] = {
30419    };
30420
30421    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30422                              threadStartTime, threadEndTime,
30423                              &glmsg, pointerArgs);
30424    glContext->traceGLMessage(&glmsg);
30425}
30426
30427void GLTrace_glClipPlanefOES(GLenum plane, const GLfloat * equation) {
30428    GLMessage glmsg;
30429    GLTraceContext *glContext = getGLTraceContext();
30430
30431    glmsg.set_function(GLMessage::glClipPlanefOES);
30432
30433    // copy argument plane
30434    GLMessage_DataType *arg_plane = glmsg.add_args();
30435    arg_plane->set_isarray(false);
30436    arg_plane->set_type(GLMessage::DataType::ENUM);
30437    arg_plane->add_intvalue((int)plane);
30438
30439    // copy argument equation
30440    GLMessage_DataType *arg_equation = glmsg.add_args();
30441    arg_equation->set_isarray(false);
30442    arg_equation->set_type(GLMessage::DataType::INT64);
30443    arg_equation->add_int64value((uintptr_t)equation);
30444
30445    // call function
30446    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30447    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30448    glContext->hooks->gl.glClipPlanefOES(plane, equation);
30449    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30450    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30451
30452    void *pointerArgs[] = {
30453        (void *) equation,
30454    };
30455
30456    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30457                              threadStartTime, threadEndTime,
30458                              &glmsg, pointerArgs);
30459    glContext->traceGLMessage(&glmsg);
30460}
30461
30462void GLTrace_glDepthRangefOES(GLclampf n, GLclampf f) {
30463    GLMessage glmsg;
30464    GLTraceContext *glContext = getGLTraceContext();
30465
30466    glmsg.set_function(GLMessage::glDepthRangefOES);
30467
30468    // copy argument n
30469    GLMessage_DataType *arg_n = glmsg.add_args();
30470    arg_n->set_isarray(false);
30471    arg_n->set_type(GLMessage::DataType::FLOAT);
30472    arg_n->add_floatvalue(n);
30473
30474    // copy argument f
30475    GLMessage_DataType *arg_f = glmsg.add_args();
30476    arg_f->set_isarray(false);
30477    arg_f->set_type(GLMessage::DataType::FLOAT);
30478    arg_f->add_floatvalue(f);
30479
30480    // call function
30481    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30482    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30483    glContext->hooks->gl.glDepthRangefOES(n, f);
30484    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30485    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30486
30487    void *pointerArgs[] = {
30488    };
30489
30490    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30491                              threadStartTime, threadEndTime,
30492                              &glmsg, pointerArgs);
30493    glContext->traceGLMessage(&glmsg);
30494}
30495
30496void GLTrace_glFrustumfOES(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f) {
30497    GLMessage glmsg;
30498    GLTraceContext *glContext = getGLTraceContext();
30499
30500    glmsg.set_function(GLMessage::glFrustumfOES);
30501
30502    // copy argument l
30503    GLMessage_DataType *arg_l = glmsg.add_args();
30504    arg_l->set_isarray(false);
30505    arg_l->set_type(GLMessage::DataType::FLOAT);
30506    arg_l->add_floatvalue(l);
30507
30508    // copy argument r
30509    GLMessage_DataType *arg_r = glmsg.add_args();
30510    arg_r->set_isarray(false);
30511    arg_r->set_type(GLMessage::DataType::FLOAT);
30512    arg_r->add_floatvalue(r);
30513
30514    // copy argument b
30515    GLMessage_DataType *arg_b = glmsg.add_args();
30516    arg_b->set_isarray(false);
30517    arg_b->set_type(GLMessage::DataType::FLOAT);
30518    arg_b->add_floatvalue(b);
30519
30520    // copy argument t
30521    GLMessage_DataType *arg_t = glmsg.add_args();
30522    arg_t->set_isarray(false);
30523    arg_t->set_type(GLMessage::DataType::FLOAT);
30524    arg_t->add_floatvalue(t);
30525
30526    // copy argument n
30527    GLMessage_DataType *arg_n = glmsg.add_args();
30528    arg_n->set_isarray(false);
30529    arg_n->set_type(GLMessage::DataType::FLOAT);
30530    arg_n->add_floatvalue(n);
30531
30532    // copy argument f
30533    GLMessage_DataType *arg_f = glmsg.add_args();
30534    arg_f->set_isarray(false);
30535    arg_f->set_type(GLMessage::DataType::FLOAT);
30536    arg_f->add_floatvalue(f);
30537
30538    // call function
30539    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30540    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30541    glContext->hooks->gl.glFrustumfOES(l, r, b, t, n, f);
30542    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30543    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30544
30545    void *pointerArgs[] = {
30546    };
30547
30548    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30549                              threadStartTime, threadEndTime,
30550                              &glmsg, pointerArgs);
30551    glContext->traceGLMessage(&glmsg);
30552}
30553
30554void GLTrace_glGetClipPlanefOES(GLenum plane, GLfloat * equation) {
30555    GLMessage glmsg;
30556    GLTraceContext *glContext = getGLTraceContext();
30557
30558    glmsg.set_function(GLMessage::glGetClipPlanefOES);
30559
30560    // copy argument plane
30561    GLMessage_DataType *arg_plane = glmsg.add_args();
30562    arg_plane->set_isarray(false);
30563    arg_plane->set_type(GLMessage::DataType::ENUM);
30564    arg_plane->add_intvalue((int)plane);
30565
30566    // copy argument equation
30567    GLMessage_DataType *arg_equation = glmsg.add_args();
30568    arg_equation->set_isarray(false);
30569    arg_equation->set_type(GLMessage::DataType::INT64);
30570    arg_equation->add_int64value((uintptr_t)equation);
30571
30572    // call function
30573    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30574    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30575    glContext->hooks->gl.glGetClipPlanefOES(plane, equation);
30576    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30577    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30578
30579    void *pointerArgs[] = {
30580        (void *) equation,
30581    };
30582
30583    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30584                              threadStartTime, threadEndTime,
30585                              &glmsg, pointerArgs);
30586    glContext->traceGLMessage(&glmsg);
30587}
30588
30589void GLTrace_glOrthofOES(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f) {
30590    GLMessage glmsg;
30591    GLTraceContext *glContext = getGLTraceContext();
30592
30593    glmsg.set_function(GLMessage::glOrthofOES);
30594
30595    // copy argument l
30596    GLMessage_DataType *arg_l = glmsg.add_args();
30597    arg_l->set_isarray(false);
30598    arg_l->set_type(GLMessage::DataType::FLOAT);
30599    arg_l->add_floatvalue(l);
30600
30601    // copy argument r
30602    GLMessage_DataType *arg_r = glmsg.add_args();
30603    arg_r->set_isarray(false);
30604    arg_r->set_type(GLMessage::DataType::FLOAT);
30605    arg_r->add_floatvalue(r);
30606
30607    // copy argument b
30608    GLMessage_DataType *arg_b = glmsg.add_args();
30609    arg_b->set_isarray(false);
30610    arg_b->set_type(GLMessage::DataType::FLOAT);
30611    arg_b->add_floatvalue(b);
30612
30613    // copy argument t
30614    GLMessage_DataType *arg_t = glmsg.add_args();
30615    arg_t->set_isarray(false);
30616    arg_t->set_type(GLMessage::DataType::FLOAT);
30617    arg_t->add_floatvalue(t);
30618
30619    // copy argument n
30620    GLMessage_DataType *arg_n = glmsg.add_args();
30621    arg_n->set_isarray(false);
30622    arg_n->set_type(GLMessage::DataType::FLOAT);
30623    arg_n->add_floatvalue(n);
30624
30625    // copy argument f
30626    GLMessage_DataType *arg_f = glmsg.add_args();
30627    arg_f->set_isarray(false);
30628    arg_f->set_type(GLMessage::DataType::FLOAT);
30629    arg_f->add_floatvalue(f);
30630
30631    // call function
30632    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30633    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30634    glContext->hooks->gl.glOrthofOES(l, r, b, t, n, f);
30635    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30636    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30637
30638    void *pointerArgs[] = {
30639    };
30640
30641    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30642                              threadStartTime, threadEndTime,
30643                              &glmsg, pointerArgs);
30644    glContext->traceGLMessage(&glmsg);
30645}
30646
30647void GLTrace_glTexGenfOES(GLenum coord, GLenum pname, GLfloat param) {
30648    GLMessage glmsg;
30649    GLTraceContext *glContext = getGLTraceContext();
30650
30651    glmsg.set_function(GLMessage::glTexGenfOES);
30652
30653    // copy argument coord
30654    GLMessage_DataType *arg_coord = glmsg.add_args();
30655    arg_coord->set_isarray(false);
30656    arg_coord->set_type(GLMessage::DataType::ENUM);
30657    arg_coord->add_intvalue((int)coord);
30658
30659    // copy argument pname
30660    GLMessage_DataType *arg_pname = glmsg.add_args();
30661    arg_pname->set_isarray(false);
30662    arg_pname->set_type(GLMessage::DataType::ENUM);
30663    arg_pname->add_intvalue((int)pname);
30664
30665    // copy argument param
30666    GLMessage_DataType *arg_param = glmsg.add_args();
30667    arg_param->set_isarray(false);
30668    arg_param->set_type(GLMessage::DataType::FLOAT);
30669    arg_param->add_floatvalue(param);
30670
30671    // call function
30672    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30673    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30674    glContext->hooks->gl.glTexGenfOES(coord, pname, param);
30675    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30676    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30677
30678    void *pointerArgs[] = {
30679    };
30680
30681    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30682                              threadStartTime, threadEndTime,
30683                              &glmsg, pointerArgs);
30684    glContext->traceGLMessage(&glmsg);
30685}
30686
30687void GLTrace_glTexGenfvOES(GLenum coord, GLenum pname, const GLfloat * params) {
30688    GLMessage glmsg;
30689    GLTraceContext *glContext = getGLTraceContext();
30690
30691    glmsg.set_function(GLMessage::glTexGenfvOES);
30692
30693    // copy argument coord
30694    GLMessage_DataType *arg_coord = glmsg.add_args();
30695    arg_coord->set_isarray(false);
30696    arg_coord->set_type(GLMessage::DataType::ENUM);
30697    arg_coord->add_intvalue((int)coord);
30698
30699    // copy argument pname
30700    GLMessage_DataType *arg_pname = glmsg.add_args();
30701    arg_pname->set_isarray(false);
30702    arg_pname->set_type(GLMessage::DataType::ENUM);
30703    arg_pname->add_intvalue((int)pname);
30704
30705    // copy argument params
30706    GLMessage_DataType *arg_params = glmsg.add_args();
30707    arg_params->set_isarray(false);
30708    arg_params->set_type(GLMessage::DataType::INT64);
30709    arg_params->add_int64value((uintptr_t)params);
30710
30711    // call function
30712    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30713    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30714    glContext->hooks->gl.glTexGenfvOES(coord, pname, params);
30715    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30716    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30717
30718    void *pointerArgs[] = {
30719        (void *) params,
30720    };
30721
30722    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30723                              threadStartTime, threadEndTime,
30724                              &glmsg, pointerArgs);
30725    glContext->traceGLMessage(&glmsg);
30726}
30727
30728void GLTrace_glTexGeniOES(GLenum coord, GLenum pname, GLint param) {
30729    GLMessage glmsg;
30730    GLTraceContext *glContext = getGLTraceContext();
30731
30732    glmsg.set_function(GLMessage::glTexGeniOES);
30733
30734    // copy argument coord
30735    GLMessage_DataType *arg_coord = glmsg.add_args();
30736    arg_coord->set_isarray(false);
30737    arg_coord->set_type(GLMessage::DataType::ENUM);
30738    arg_coord->add_intvalue((int)coord);
30739
30740    // copy argument pname
30741    GLMessage_DataType *arg_pname = glmsg.add_args();
30742    arg_pname->set_isarray(false);
30743    arg_pname->set_type(GLMessage::DataType::ENUM);
30744    arg_pname->add_intvalue((int)pname);
30745
30746    // copy argument param
30747    GLMessage_DataType *arg_param = glmsg.add_args();
30748    arg_param->set_isarray(false);
30749    arg_param->set_type(GLMessage::DataType::INT);
30750    arg_param->add_intvalue(param);
30751
30752    // call function
30753    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30754    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30755    glContext->hooks->gl.glTexGeniOES(coord, pname, param);
30756    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30757    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30758
30759    void *pointerArgs[] = {
30760    };
30761
30762    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30763                              threadStartTime, threadEndTime,
30764                              &glmsg, pointerArgs);
30765    glContext->traceGLMessage(&glmsg);
30766}
30767
30768void GLTrace_glTexGenivOES(GLenum coord, GLenum pname, const GLint * params) {
30769    GLMessage glmsg;
30770    GLTraceContext *glContext = getGLTraceContext();
30771
30772    glmsg.set_function(GLMessage::glTexGenivOES);
30773
30774    // copy argument coord
30775    GLMessage_DataType *arg_coord = glmsg.add_args();
30776    arg_coord->set_isarray(false);
30777    arg_coord->set_type(GLMessage::DataType::ENUM);
30778    arg_coord->add_intvalue((int)coord);
30779
30780    // copy argument pname
30781    GLMessage_DataType *arg_pname = glmsg.add_args();
30782    arg_pname->set_isarray(false);
30783    arg_pname->set_type(GLMessage::DataType::ENUM);
30784    arg_pname->add_intvalue((int)pname);
30785
30786    // copy argument params
30787    GLMessage_DataType *arg_params = glmsg.add_args();
30788    arg_params->set_isarray(false);
30789    arg_params->set_type(GLMessage::DataType::INT64);
30790    arg_params->add_int64value((uintptr_t)params);
30791
30792    // call function
30793    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30794    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30795    glContext->hooks->gl.glTexGenivOES(coord, pname, params);
30796    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30797    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30798
30799    void *pointerArgs[] = {
30800        (void *) params,
30801    };
30802
30803    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30804                              threadStartTime, threadEndTime,
30805                              &glmsg, pointerArgs);
30806    glContext->traceGLMessage(&glmsg);
30807}
30808
30809void GLTrace_glGetTexGenfvOES(GLenum coord, GLenum pname, GLfloat * params) {
30810    GLMessage glmsg;
30811    GLTraceContext *glContext = getGLTraceContext();
30812
30813    glmsg.set_function(GLMessage::glGetTexGenfvOES);
30814
30815    // copy argument coord
30816    GLMessage_DataType *arg_coord = glmsg.add_args();
30817    arg_coord->set_isarray(false);
30818    arg_coord->set_type(GLMessage::DataType::ENUM);
30819    arg_coord->add_intvalue((int)coord);
30820
30821    // copy argument pname
30822    GLMessage_DataType *arg_pname = glmsg.add_args();
30823    arg_pname->set_isarray(false);
30824    arg_pname->set_type(GLMessage::DataType::ENUM);
30825    arg_pname->add_intvalue((int)pname);
30826
30827    // copy argument params
30828    GLMessage_DataType *arg_params = glmsg.add_args();
30829    arg_params->set_isarray(false);
30830    arg_params->set_type(GLMessage::DataType::INT64);
30831    arg_params->add_int64value((uintptr_t)params);
30832
30833    // call function
30834    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30835    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30836    glContext->hooks->gl.glGetTexGenfvOES(coord, pname, params);
30837    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30838    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30839
30840    void *pointerArgs[] = {
30841        (void *) params,
30842    };
30843
30844    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30845                              threadStartTime, threadEndTime,
30846                              &glmsg, pointerArgs);
30847    glContext->traceGLMessage(&glmsg);
30848}
30849
30850void GLTrace_glGetTexGenivOES(GLenum coord, GLenum pname, GLint * params) {
30851    GLMessage glmsg;
30852    GLTraceContext *glContext = getGLTraceContext();
30853
30854    glmsg.set_function(GLMessage::glGetTexGenivOES);
30855
30856    // copy argument coord
30857    GLMessage_DataType *arg_coord = glmsg.add_args();
30858    arg_coord->set_isarray(false);
30859    arg_coord->set_type(GLMessage::DataType::ENUM);
30860    arg_coord->add_intvalue((int)coord);
30861
30862    // copy argument pname
30863    GLMessage_DataType *arg_pname = glmsg.add_args();
30864    arg_pname->set_isarray(false);
30865    arg_pname->set_type(GLMessage::DataType::ENUM);
30866    arg_pname->add_intvalue((int)pname);
30867
30868    // copy argument params
30869    GLMessage_DataType *arg_params = glmsg.add_args();
30870    arg_params->set_isarray(false);
30871    arg_params->set_type(GLMessage::DataType::INT64);
30872    arg_params->add_int64value((uintptr_t)params);
30873
30874    // call function
30875    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30876    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30877    glContext->hooks->gl.glGetTexGenivOES(coord, pname, params);
30878    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30879    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30880
30881    void *pointerArgs[] = {
30882        (void *) params,
30883    };
30884
30885    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30886                              threadStartTime, threadEndTime,
30887                              &glmsg, pointerArgs);
30888    glContext->traceGLMessage(&glmsg);
30889}
30890
30891void GLTrace_glClipPlanefIMG(GLenum p, const GLfloat * eqn) {
30892    GLMessage glmsg;
30893    GLTraceContext *glContext = getGLTraceContext();
30894
30895    glmsg.set_function(GLMessage::glClipPlanefIMG);
30896
30897    // copy argument p
30898    GLMessage_DataType *arg_p = glmsg.add_args();
30899    arg_p->set_isarray(false);
30900    arg_p->set_type(GLMessage::DataType::ENUM);
30901    arg_p->add_intvalue((int)p);
30902
30903    // copy argument eqn
30904    GLMessage_DataType *arg_eqn = glmsg.add_args();
30905    arg_eqn->set_isarray(false);
30906    arg_eqn->set_type(GLMessage::DataType::INT64);
30907    arg_eqn->add_int64value((uintptr_t)eqn);
30908
30909    // call function
30910    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30911    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30912    glContext->hooks->gl.glClipPlanefIMG(p, eqn);
30913    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30914    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30915
30916    void *pointerArgs[] = {
30917        (void *) eqn,
30918    };
30919
30920    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30921                              threadStartTime, threadEndTime,
30922                              &glmsg, pointerArgs);
30923    glContext->traceGLMessage(&glmsg);
30924}
30925
30926void GLTrace_glClipPlanexIMG(GLenum p, const GLfixed * eqn) {
30927    GLMessage glmsg;
30928    GLTraceContext *glContext = getGLTraceContext();
30929
30930    glmsg.set_function(GLMessage::glClipPlanexIMG);
30931
30932    // copy argument p
30933    GLMessage_DataType *arg_p = glmsg.add_args();
30934    arg_p->set_isarray(false);
30935    arg_p->set_type(GLMessage::DataType::ENUM);
30936    arg_p->add_intvalue((int)p);
30937
30938    // copy argument eqn
30939    GLMessage_DataType *arg_eqn = glmsg.add_args();
30940    arg_eqn->set_isarray(false);
30941    arg_eqn->set_type(GLMessage::DataType::INT64);
30942    arg_eqn->add_int64value((uintptr_t)eqn);
30943
30944    // call function
30945    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30946    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30947    glContext->hooks->gl.glClipPlanexIMG(p, eqn);
30948    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30949    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30950
30951    void *pointerArgs[] = {
30952        (void *) eqn,
30953    };
30954
30955    fixupGLMessage(glContext, wallStartTime, wallEndTime,
30956                              threadStartTime, threadEndTime,
30957                              &glmsg, pointerArgs);
30958    glContext->traceGLMessage(&glmsg);
30959}
30960
30961
30962}; // namespace gltrace
30963}; // namespace android
30964